diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index b989dd1faaef45..48b3f1d6125975 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -25,11 +25,43 @@ on: type: number default: 30 description: How many times to repeat each benchmark + post-comment: + type: boolean + description: Post a comment linking to the run, with the aggregated result once known. + token: + type: string + description: A GitHub token to post comments cross repository (not recommended) permissions: contents: read jobs: + post-comment: + if: inputs.post-comment + outputs: + body: ${{ steps.comment.outputs.COMMENT_BODY }} + url: ${{ steps.comment.outputs.COMMENT_URL }} + runs-on: ubuntu-slim + permissions: + pull-requests: write + steps: + - name: Mark token input as sensitive + if: inputs.token != '' + run: echo "::add-mask::${{ inputs.token }}" + - name: Add link to the current run + id: comment + run: | + FILTER_IF_SET= + [ -z "$FILTER" ] || FILTER_IF_SET=" / $FILTER" + COMMENT_BODY="Benchmark GHA (${CATEGORIES}${FILTER_IF_SET}): ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" + echo "COMMENT_BODY=$COMMENT_BODY" >> "$GITHUB_OUTPUT" + echo "COMMENT_URL=$(gh pr comment -R "${REPO:-$GITHUB_REPOSITORY}" "$PR_ID" --body "$COMMENT_BODY")" >> "$GITHUB_OUTPUT" + env: + CATEGORIES: ${{ inputs.category }} + FILTER: ${{ inputs.filter }} + GH_TOKEN: ${{ inputs.token || github.token }} + REPO: ${{ inputs.repo }} + PR_ID: ${{ inputs.pr_id }} build: strategy: fail-fast: true @@ -155,9 +187,13 @@ jobs: path: ${{ matrix.system }}.csv aggregate-results: - needs: build + needs: [build, post-comment] + if: ${{ always() && needs.build.result == 'success' && needs.post-comment.result == (inputs.post-comment && 'success' || 'skipped') }} name: Aggregate benchmark results runs-on: ubuntu-slim + permissions: + contents: read + pull-requests: write steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: @@ -200,4 +236,30 @@ jobs: echo "> [!WARNING] " echo "> Do not take GHA benchmark results as face value, always confirm them" echo "> using a dedicated machine, e.g. Jenkins CI." - ' | tee /dev/stderr >> "$GITHUB_STEP_SUMMARY" + ' | tee /dev/stderr ${{ inputs.post-comment && 'body.txt' || '' }} >> "$GITHUB_STEP_SUMMARY" + - name: Mark token input as sensitive + if: inputs.token != '' + run: echo "::add-mask::${{ inputs.token }}" + - name: Edit comment + if: inputs.post-comment + run: | + { + echo "$COMMENT_BODY" + echo + echo '
Results' + echo + cat body.txt + echo + echo '
' + } | jq -Rrcs '{ body: . }' | gh api \ + --method PATCH \ + -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2026-03-10" \ + "/repos/${REPO:-$GITHUB_REPOSITORY}/issues/comments/${COMMENT_URL##*-}" \ + --input - + env: + GH_TOKEN: ${{ inputs.token || github.token }} + REPO: ${{ inputs.repo }} + COMMENT_BODY: ${{ needs.post-comment.outputs.body }} + COMMENT_URL: ${{ needs.post-comment.outputs.url }} + PR_ID: ${{ inputs.pr_id }} diff --git a/.github/workflows/build-shared.yml b/.github/workflows/build-shared.yml index 61441571427eff..1cd660daaddea3 100644 --- a/.github/workflows/build-shared.yml +++ b/.github/workflows/build-shared.yml @@ -38,8 +38,9 @@ jobs: steps: - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: - name: tarballs path: tarballs + pattern: '*.tar.gz' + merge-multiple: true - name: Extract tarball shell: bash diff --git a/.github/workflows/build-tarball.yml b/.github/workflows/build-tarball.yml index bd72e7dd404794..67ef806c53c1fc 100644 --- a/.github/workflows/build-tarball.yml +++ b/.github/workflows/build-tarball.yml @@ -91,9 +91,8 @@ jobs: - name: Upload tarball artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: - name: tarballs path: '*.tar.gz' - compression-level: 0 + archive: false test-tarball-linux: needs: build-tarball runs-on: ubuntu-24.04-arm @@ -125,7 +124,6 @@ jobs: - name: Download tarball uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: - name: tarballs path: tarballs - name: Extract tarball run: | diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index 4e0fdab245e1f9..a7641a3c04d73d 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -132,26 +132,6 @@ jobs: NODE=$(command -v node) make lint-md env: NODE_RELEASED_VERSIONS: ${{ steps.get-released-versions.outputs.NODE_RELEASED_VERSIONS }} - lint-nix: - if: github.event.pull_request.draft == false - runs-on: ubuntu-slim - steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - with: - persist-credentials: false - sparse-checkout: '*.nix' - sparse-checkout-cone-mode: false - - uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6 - - name: Lint Nix files - run: | - nix-shell -I nixpkgs=./tools/nix/pkgs.nix -p 'nixfmt-tree' --run ' - treefmt --quiet --ci - ' && EXIT_CODE="$?" || EXIT_CODE="$?" - if [ "$EXIT_CODE" != "0" ] - then - git --no-pager diff || true - exit "$EXIT_CODE" - fi lint-py: if: github.event.pull_request.draft == false diff --git a/.github/workflows/nix-changes-comment.yml b/.github/workflows/nix-changes-comment.yml new file mode 100644 index 00000000000000..db96ff4a09caea --- /dev/null +++ b/.github/workflows/nix-changes-comment.yml @@ -0,0 +1,98 @@ +# This action requires the following secrets to be set on the repository: +# GH_USER_TOKEN: GitHub user token, to be used by ncu and to push changes +name: Comment on PR on Nix changes + +on: + workflow_run: + workflows: [Nix files edited] + types: [completed] + +permissions: {} + +jobs: + aggregate-results: + if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'pull_request' }} + name: Aggregate results + runs-on: ubuntu-slim + permissions: + pull-requests: write + steps: + - name: Download artefacts + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + run-id: ${{ github.event.workflow_run.id }} + # Using privileged token to be able to download file from a different workflow + github-token: ${{ secrets.GH_USER_TOKEN }} + + - name: Fetch PR data + id: pr-data + run: | + mv requisites-*/* . + ls + if grep -nvHE '^/nix/store/[0-9a-df-np-sv-z]{32}-[A-Za-z0-9?=._+-]+$' requisites-*.list; then + echo 'Unexpected line format in requisites list; refusing to process.' >&2 + exit 1 + fi + echo "NUMBER=$(grep -E '^[0-9]+$' pr_number.txt || true)" >> "$GITHUB_OUTPUT" + + - name: Aggregate results + if: ${{ steps.pr-data.outputs.NUMBER }} + run: | + set -x + > requisites-before.list + > requisites-after.list + TABLE=$( + echo '| Platform | Number of requisites | Proportion of new derivations |' + echo '| :-: | -: | -: |' + TOTAL_BEFORE=0 + TOTAL_AFTER=0 + TOTAL_CHANGED=0 + QUOTE='`' + for PLATFORM in x86_64-linux aarch64-linux x86_64-darwin aarch64-darwin; do + BEFORE=$(wc -l < "requisites-${PLATFORM}-before.list") + TOTAL_BEFORE=$(($TOTAL_BEFORE + $BEFORE)) + AFTER=$(wc -l < "requisites-${PLATFORM}-after.list") + TOTAL_AFTER=$(($TOTAL_AFTER + $AFTER)) + DIFF="_no changes_" + [ "$BEFORE" = "$AFTER" ] || DIFF="**$([ "$AFTER" < "$BEFORE" ] || echo '+')$(($AFTER - $BEFORE))**" + CHANGED=$(git diff --no-index "requisites-${PLATFORM}-before.list" "requisites-${PLATFORM}-after.list" | grep -c '^+[^+]') + TOTAL_CHANGED=$(($TOTAL_CHANGED + $CHANGED)) + PERCENT=100 + [ "$CHANGED" = "$AFTER" ] || { + PERMILLE=$((1000 * $CHANGED / $AFTER)) + PERCENT="$((PERMILLE / 10)).$((PERMILLE % 10))" + } + echo "| ${QUOTE}${PLATFORM}${QUOTE} | $BEFORE -> $AFTER => $DIFF | $CHANGED / $AFTER = $PERCENT% |" + awk '{ print $0 " ('"$PLATFORM"')" }' "requisites-${PLATFORM}-before.list" >> requisites-before.list + awk '{ print $0 " ('"$PLATFORM"')" }' "requisites-${PLATFORM}-after.list" >> requisites-after.list + done + + DIFF="_no changes_" + [ "$TOTAL_BEFORE" = "$TOTAL_AFTER" ] || DIFF="**$([ "$TOTAL_AFTER" < "$TOTAL_BEFORE" ] || echo '+')$(($TOTAL_AFTER - $TOTAL_BEFORE))**" + PERCENT=100 + [ "$TOTAL_CHANGED" = "$TOTAL_AFTER" ] || { + PERMILLE=$((1000 * $TOTAL_CHANGED / $TOTAL_AFTER)) + PERCENT="$((PERMILLE / 10)).$((PERMILLE % 10))" + } + echo "| **Total** | $TOTAL_BEFORE -> $TOTAL_AFTER => $DIFF | $TOTAL_CHANGED / $TOTAL_AFTER = $PERCENT% |" + ) + sort -k1.45 requisites-before.list > requisites-before.sort + sort -k1.45 requisites-after.list > requisites-after.sort + if git diff -U0 --no-color --no-index requisites-before.sort requisites-after.sort > requisites.diff; then + echo 'No changes detected.' + else + { + echo "$TABLE" + echo + echo '
Changelog' + echo + echo '```diff' + tail -n +5 requisites.diff + echo '```' + echo + echo '
' + } | gh pr comment -R "$GITHUB_REPOSITORY" "$PR_NUMBER" -F - + fi + env: + GH_TOKEN: ${{ github.token }} + PR_NUMBER: ${{ steps.pr-data.outputs.NUMBER }} diff --git a/.github/workflows/nix-changes.yml b/.github/workflows/nix-changes.yml new file mode 100644 index 00000000000000..ddf19260359027 --- /dev/null +++ b/.github/workflows/nix-changes.yml @@ -0,0 +1,140 @@ +# This action uses the following secrets: +# CACHIX_AUTH_TOKEN: Write access to nodejs.cachix.org – without it, the cache is read-only. +name: Nix files edited + +on: + push: + branches: + - main + - canary + - v[0-9]+.x-staging + - v[0-9]+.x + paths: + - '**.nix' + - .github/workflows/nix-changes.yml + pull_request: + paths: + - '**.nix' + - .github/workflows/nix-changes.yml + types: [opened, synchronize, reopened, ready_for_review] + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + diff: + if: github.event.pull_request.draft == false + strategy: + fail-fast: false + matrix: + include: + - runner: ubuntu-24.04 + system: x86_64-linux + - runner: ubuntu-24.04-arm + system: aarch64-linux + - runner: macos-15-intel + system: x86_64-darwin + - runner: macos-latest + system: aarch64-darwin + name: '${{ matrix.system }}: dependencies diff' + runs-on: ${{ matrix.runner }} + steps: + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + fetch-depth: 2 + persist-credentials: false + sparse-checkout: '*.nix' + sparse-checkout-cone-mode: false + + - uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6 + with: + extra_nix_config: sandbox = true + + - uses: cachix/cachix-action@5f2d7c5294214f71b873db4b969586b980625e71 # v17 + with: + authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} + name: nodejs + + - name: Compute requisites after change + shell: bash # See https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference, we want the pipefail option. + run: | + nix-store --query --references "$( + nix-instantiate -I "nixpkgs=./tools/nix/pkgs.nix" shell.nix \ + --arg devTools " + (import ./tools/nix/devTools.nix {}) + ++ builtins.attrValues ( + { inherit (import {}) nixfmt-tree sccache; } + // import ./tools/nix/openssl-matrix.nix {} + )")" \ + | xargs nix-store --realise \ + | xargs nix-store --query --requisites \ + | sort -k1.45 \ + > requisites-${{ matrix.system }}-after.list + + - name: Compute requisites before change + shell: bash # See https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference, we want the pipefail option. + run: | + git reset HEAD^ --hard + nix-store --query --references "$( + nix-instantiate -I "nixpkgs=./tools/nix/pkgs.nix" shell.nix \ + --arg devTools " + (import ./tools/nix/devTools.nix {}) + ++ builtins.attrValues ( + { inherit (import {}) nixfmt-tree sccache; } + // import ./tools/nix/openssl-matrix.nix {} + )")" \ + | xargs nix-store --realise \ + | xargs nix-store --query --requisites \ + | sort -k1.45 \ + > requisites-${{ matrix.system }}-before.list + + - name: Output diff + run: | + { + if diff_output="$(git diff -U0 --no-color --no-index requisites-${{ matrix.system }}-before.list requisites-${{ matrix.system }}-after.list)"; then + echo 'No changes detected.' + else + echo '```diff' + echo "$diff_output" | tail -n +5 + echo '```' + fi + } >> "$GITHUB_STEP_SUMMARY" + + - name: Store PR number + if: ${{ github.event.pull_request && matrix.system == 'x86_64-linux' }} + run: echo "${{ github.event.pull_request.number }}" > pr_number.txt + + - name: Upload requisites lists + if: ${{ github.event.pull_request }} + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: requisites-${{ matrix.system }} + path: | + pr_number.* + requisites-${{ matrix.system }}-before.list + requisites-${{ matrix.system }}-after.list + + lint-nix: + if: github.event.pull_request.draft == false + runs-on: ubuntu-slim + steps: + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + persist-credentials: false + sparse-checkout: '*.nix' + sparse-checkout-cone-mode: false + - uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6 + - name: Lint Nix files + run: | + nix-shell -I nixpkgs=./tools/nix/pkgs.nix -p 'nixfmt-tree' --run ' + treefmt --quiet --ci + ' && EXIT_CODE="$?" || EXIT_CODE="$?" + if [ "$EXIT_CODE" != "0" ] + then + git --no-pager diff || true + exit "$EXIT_CODE" + fi diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index d4be0ceaa3718c..0047f5f7718a2c 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -9,13 +9,13 @@ on: env: CLOSE_MESSAGE: > This {0} has been automatically closed after 30 days of inactivity - following its stale status (no activity for a total of 240 days). + following its stale status (no activity for a total of 120 days). If this is still relevant, feel free to reopen it or leave a comment with additional details so we can continue the discussion. WARN_MESSAGE: > - This {0} has been marked as stale due to 210 days of inactivity. + This {0} has been marked as stale due to 90 days of inactivity. It will be automatically closed in 30 days if no further activity occurs. If this is still relevant, please leave a comment or update it to keep it open. @@ -36,7 +36,7 @@ jobs: - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - days-before-stale: 210 + days-before-stale: 90 days-before-close: 30 stale-issue-label: stale exempt-issue-labels: never-stale, confirmed-bug diff --git a/.github/workflows/test-shared.yml b/.github/workflows/test-shared.yml index cd9804d0d87d04..3638aa51371f54 100644 --- a/.github/workflows/test-shared.yml +++ b/.github/workflows/test-shared.yml @@ -130,9 +130,8 @@ jobs: - name: Upload tarball artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: - name: tarballs path: '*.tar.gz' - compression-level: 0 + archive: false build: needs: build-tarball @@ -172,7 +171,6 @@ jobs: steps: - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: - name: tarballs path: tarballs - name: Extract tarball diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f14a393b9c24a..3d9ac9437f4189 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,7 +41,8 @@ release. -26.5.0
+26.6.0
+26.5.0
26.4.0
26.3.1
26.3.0
diff --git a/README.md b/README.md index dc175eadf5bb6a..45a01ca66fef4a 100644 --- a/README.md +++ b/README.md @@ -319,8 +319,6 @@ For information about the governance of the Node.js project, see **Dario Piotrowicz** <> (he/him) * [deokjinkim](https://github.com/deokjinkim) - **Deokjin Kim** <> (he/him) -* [edsadr](https://github.com/edsadr) - - **Adrian Estrada** <> (he/him) * [ErickWendel](https://github.com/ErickWendel) - **Erick Wendel** <> (he/him) * [Ethan-Arrowood](https://github.com/Ethan-Arrowood) - @@ -513,6 +511,8 @@ For information about the governance of the Node.js project, see **Xu Meng** <> (he/him) * [dnlup](https://github.com/dnlup) - **dnlup** <> +* [edsadr](https://github.com/edsadr) - + **Adrian Estrada** <> (he/him) * [eljefedelrodeodeljefe](https://github.com/eljefedelrodeodeljefe) - **Robert Jefe Lindstaedt** <> * [estliberitas](https://github.com/estliberitas) - diff --git a/SECURITY.md b/SECURITY.md index 4caa3cc18971af..b4239f5fda4ead 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -221,6 +221,16 @@ then untrusted input must not lead to arbitrary JavaScript code execution. * The developers and infrastructure that run it. * The operating system that Node.js is running under and its configuration, along with anything under the control of the operating system. +* The deployment network environment for the privacy of traffic and routing + decisions, including internal networks through which Node.js traffic passes + and configured HTTP(S) proxy servers. Built-in proxy support is intended to + route traffic through proxies authorized for the deployment, often because a + firewall requires one to access external networks. It is not intended to hide + traffic from network operators or authorities governing the deployment. + Untrusted or unauthorized proxies, as well as deployment policy or legal + compliance controls around proxy use, are the responsibility of the deployment + operator and are outside this threat model. This does not change that data + parsed from network protocol peers is untrusted as described above. * The code it is asked to run, including JavaScript, WASM and native code, even if said code is dynamically loaded, e.g., all dependencies installed from the npm registry or libraries loaded via `node:ffi`. @@ -301,6 +311,19 @@ the community they pose. client consuming unsolicited or misordered responses within the same HTTP/1.1 connection reuse lifecycle are generally not considered Node.js vulnerabilities. +#### Unauthorized or untrusted HTTP proxy deployments + +* Built-in HTTP proxy support is intended for routing outbound requests through + a proxy authorized by the deployment, for example because a firewall requires + one to reach external networks. It is not an anonymity, traffic-hiding, or + policy-evasion feature. +* Reports that depend on using an unauthorized proxy, expecting Node.js to + provide privacy from a configured proxy or internal network, or expecting + Node.js to enforce deployment-specific network policy or legal requirements + are not considered Node.js vulnerabilities. Deployment operators are + responsible for hardening such environments and controlling which proxy + settings are allowed. + #### Malicious Third-Party Modules (CWE-1357) * Code is trusted by Node.js. Therefore any scenario that requires a malicious diff --git a/benchmark/path/matchesGlob-posix.js b/benchmark/path/matchesGlob-posix.js new file mode 100644 index 00000000000000..2cc30ca8ace1fb --- /dev/null +++ b/benchmark/path/matchesGlob-posix.js @@ -0,0 +1,28 @@ +'use strict'; +const common = require('../common.js'); +const { posix } = require('path'); +const assert = require('assert'); + +const bench = common.createBenchmark(main, { + path: [ + 'src/index.ts', + 'src/index.test.ts', + 'src/foo/bar/biz/baz/index.test.ts', + ], + pattern: [ + 'src/**/baz/*.test.ts', + 'src/**/baz/*.ts', + 'test/**/*.ts', + ], + n: [1e5], +}); + +function main({ path, pattern, n }) { + bench.start(); + let a; + for (let i = 0; i < n; i++) { + a = posix.matchesGlob(path, pattern); + } + bench.end(n); + assert(a + 'a'); +} diff --git a/benchmark/path/matchesGlob-win32.js b/benchmark/path/matchesGlob-win32.js new file mode 100644 index 00000000000000..3ef3c6b4434445 --- /dev/null +++ b/benchmark/path/matchesGlob-win32.js @@ -0,0 +1,29 @@ +'use strict'; +const common = require('../common.js'); +const { win32 } = require('path'); +const assert = require('assert'); + +const bench = common.createBenchmark(main, { + path: [ + 'src/index.ts', + 'src\\index.ts', + 'src/foo/bar/biz/baz/index.test.ts', + 'src\\foo\\bar\\biz\\baz\\index.test.ts', + ], + pattern: [ + 'src/**/baz/*.test.ts', + 'src/**/baz/*.ts', + 'test/**/*.ts', + ], + n: [1e5], +}); + +function main({ path, pattern, n }) { + bench.start(); + let a; + for (let i = 0; i < n; i++) { + a = win32.matchesGlob(path, pattern); + } + bench.end(n); + assert(a + 'a'); +} diff --git a/benchmark/webstreams/readable-async-iterator.js b/benchmark/webstreams/readable-async-iterator.js index 8cdc4785db3dac..73ff3e1ef2b165 100644 --- a/benchmark/webstreams/readable-async-iterator.js +++ b/benchmark/webstreams/readable-async-iterator.js @@ -6,23 +6,40 @@ const { const bench = common.createBenchmark(main, { n: [1e5], + type: ['normal', 'bytes'], }); -async function main({ n }) { - const rs = new ReadableStream({ - pull: function(controller) { - controller.enqueue(1); - }, - }); +async function main({ n, type }) { + const rs = type === 'bytes' ? + new ReadableStream({ + type: 'bytes', + pull: function(controller) { + controller.enqueue(new Uint8Array(1)); + }, + }) : + new ReadableStream({ + pull: function(controller) { + controller.enqueue(1); + }, + }); let x = 0; bench.start(); - for await (const chunk of rs) { - x += chunk; - if (x > n) { - break; + if (type === 'bytes') { + for await (const chunk of rs) { + x += chunk.byteLength; + if (x > n) { + break; + } + } + } else { + for await (const chunk of rs) { + x += chunk; + if (x > n) { + break; + } } } // Use x to ensure V8 does not optimize away the loop as a noop. diff --git a/common.gypi b/common.gypi index bae09d8a5d6300..2afa1713d567ce 100644 --- a/common.gypi +++ b/common.gypi @@ -41,7 +41,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.24', + 'v8_embedder_string': '-node.26', ##### V8 defaults for Node.js ##### diff --git a/deps/cares/CMakeLists.txt b/deps/cares/CMakeLists.txt index a2a9c19329e09b..a9ae8fb952b72a 100644 --- a/deps/cares/CMakeLists.txt +++ b/deps/cares/CMakeLists.txt @@ -12,7 +12,7 @@ INCLUDE (CheckCSourceCompiles) INCLUDE (CheckStructHasMember) INCLUDE (CheckLibraryExists) -PROJECT (c-ares LANGUAGES C VERSION "1.34.6" ) +PROJECT (c-ares LANGUAGES C VERSION "1.34.8" ) # Set this version before release SET (CARES_VERSION "${PROJECT_VERSION}") @@ -30,7 +30,7 @@ INCLUDE (GNUInstallDirs) # include this *AFTER* PROJECT(), otherwise paths are w # For example, a version of 4:0:2 would generate output such as: # libname.so -> libname.so.2 # libname.so.2 -> libname.so.2.2.0 -SET (CARES_LIB_VERSIONINFO "21:5:19") +SET (CARES_LIB_VERSIONINFO "21:7:19") OPTION (CARES_STATIC "Build as a static library" OFF) @@ -43,6 +43,7 @@ OPTION (CARES_BUILD_TOOLS "Build tools" OPTION (CARES_SYMBOL_HIDING "Hide private symbols in shared libraries" OFF) OPTION (CARES_THREADS "Build with thread-safety support" ON) OPTION (CARES_COVERAGE "Build for code coverage" OFF) +OPTION (CARES_WERROR "Treat compiler warnings on the c-ares library as errors" OFF) SET (CARES_RANDOM_FILE "/dev/urandom" CACHE STRING "Suitable File / Device Path for entropy, such as /dev/urandom") # Tests require static to be enabled on Windows to be able to access otherwise hidden symbols @@ -54,6 +55,30 @@ ENDIF () INCLUDE (EnableWarnings) +# Optionally treat warnings as errors for the c-ares library itself. This is +# applied per-target (see cares_set_werror() usage) rather than globally so it +# does not affect the test/fuzz harnesses (which carry their own warnings) or +# CMake's own compiler feature checks. Enabled in CI only on toolchains known +# to be free of spurious warnings at our high warning levels. +FUNCTION (cares_set_werror target) + IF (NOT CARES_WERROR) + RETURN () + ENDIF () + IF (MSVC) + TARGET_COMPILE_OPTIONS (${target} PRIVATE /WX) + ELSE () + TARGET_COMPILE_OPTIONS (${target} PRIVATE -Werror) + # Modern libc headers (e.g. glibc ) use the C11 _Generic + # keyword for const-correctness of strchr()/memchr()/etc. Clang flags + # that as a C11 extension under our C90 + -Wpedantic build even though it + # originates in a system header at our call sites. It is not something + # we can fix in our own code, so warn but do not fail on it. + IF (CMAKE_C_COMPILER_ID MATCHES "Clang") + TARGET_COMPILE_OPTIONS (${target} PRIVATE -Wno-error=c11-extensions) + ENDIF () + ENDIF () +ENDFUNCTION () + IF (MSVC) # allow linking against the static runtime library in msvc OPTION (CARES_MSVC_STATIC_RUNTIME "Link against the static runtime library" OFF) diff --git a/deps/cares/README.md b/deps/cares/README.md index 6566c9fe6aa18e..7e818df8fa5b12 100644 --- a/deps/cares/README.md +++ b/deps/cares/README.md @@ -1,7 +1,7 @@ # [![c-ares logo](https://c-ares.org/art/c-ares-logo.svg)](https://c-ares.org/) -[![Build Status](https://api.cirrus-ci.com/github/c-ares/c-ares.svg?branch=main)](https://cirrus-ci.com/github/c-ares/c-ares) -[![Windows Build Status](https://ci.appveyor.com/api/projects/status/aevgc5914tm72pvs/branch/main?svg=true)](https://ci.appveyor.com/project/c-ares/c-ares/branch/main) +[![Build Status](https://github.com/c-ares/c-ares/actions/workflows/ubuntu-latest.yml/badge.svg?branch=main)](https://github.com/c-ares/c-ares/actions/workflows/ubuntu-latest.yml) +[![Windows Build Status](https://github.com/c-ares/c-ares/actions/workflows/windows.yml/badge.svg?branch=main)](https://github.com/c-ares/c-ares/actions/workflows/windows.yml) [![Coverage Status](https://coveralls.io/repos/github/c-ares/c-ares/badge.svg?branch=main)](https://coveralls.io/github/c-ares/c-ares?branch=main) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/291/badge)](https://bestpractices.coreinfrastructure.org/projects/291) [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/c-ares.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:c-ares) diff --git a/deps/cares/RELEASE-NOTES.md b/deps/cares/RELEASE-NOTES.md index ded75001b54fa4..93cc10fc74bd8e 100644 --- a/deps/cares/RELEASE-NOTES.md +++ b/deps/cares/RELEASE-NOTES.md @@ -1,3 +1,113 @@ +## c-ares version 1.34.8 - July 7 2026 + +This is a bugfix release. + +Bugfixes: +* Revert "Mark parameters in callbacks as const" which shipped in 1.34.7. + Changing the parameter types of the `ares_callback`, `ares_host_callback`, + and `ares_nameinfo_callback` function pointer typedefs was an unintended + API break: existing applications with the historical non-const callback + signatures no longer compiled, particularly in C++ where function pointer + types must match exactly. The read-only nature of the callback parameters + is now documented instead. + [PR #1244](https://github.com/c-ares/c-ares/pull/1244) + +Thanks go to these friendly people for their efforts and contributions for this +release: + +* Brad House (@bradh352) + + +## c-ares version 1.34.7 - July 6 2026 + +This is a security release. + +Security: +* CVE-2026-33630. Use-after-free / double-free in c-ares' query-completion + handling, remotely triggerable via ares_getaddrinfo() over TCP. Please see + https://github.com/c-ares/c-ares/security/advisories/GHSA-6wfj-rwm7-3542 +* CPU-exhaustion denial of service via unbounded DNS name compression pointer + chains. Please see + https://github.com/c-ares/c-ares/security/advisories/GHSA-pjmc-gx33-gc76 +* Memory-amplification denial of service via unvalidated DNS header record + counts. Please see + https://github.com/c-ares/c-ares/security/advisories/GHSA-jv8r-gqr9-68wj + +Changes: +* `ares_getaddrinfo()`: handle a NULL node per POSIX and implement + `ARES_AI_PASSIVE`. [PR #1186](https://github.com/c-ares/c-ares/pull/1186) +* Mark parameters in callbacks as const. + [PR #1060](https://github.com/c-ares/c-ares/pull/1060) +* Correct `ARES_CLASS_HESOID` misspelling to `ARES_CLASS_HESIOD`. + [PR #1092](https://github.com/c-ares/c-ares/pull/1092) + +Bugfixes: +* Fix sticky server recovery when all servers have failures. [PR #1192](https://github.com/c-ares/c-ares/pull/1192) +* Fix UDP socket exhaustion regression: retire connections per-connection, not via server failure count. [PR #1197](https://github.com/c-ares/c-ares/pull/1197) +* Guard DNS record binary length overflow. [PR #1168](https://github.com/c-ares/c-ares/pull/1168) +* Prevent integer overflow in allocation size calculations. [PR #1147](https://github.com/c-ares/c-ares/pull/1147) +* Prevent overflow in ares_array allocation size calculations. [PR #1117](https://github.com/c-ares/c-ares/pull/1117) +* Prevent integer overflow in buffer size calculation. [PR #1116](https://github.com/c-ares/c-ares/pull/1116) +* Add overflow checks to ares_buf_ensure_space(). [PR #1094](https://github.com/c-ares/c-ares/pull/1094) +* Skip name compression offsets beyond the 14-bit pointer limit. [PR #1159](https://github.com/c-ares/c-ares/pull/1159) +* ares_dns_parse: reject name compression in RDATA where not permitted (RFC 3597). [PR #1190](https://github.com/c-ares/c-ares/pull/1190) +* ares_dns_parse: reject responses with more than one OPT record (RFC 6891). [PR #1189](https://github.com/c-ares/c-ares/pull/1189) +* Discard oversized UDP datagrams instead of truncating the length frame. [PR #1161](https://github.com/c-ares/c-ares/pull/1161) +* Route numeric config parsing through range-checked ares_str_parse_uint. [PR #1158](https://github.com/c-ares/c-ares/pull/1158) +* Replace atoi-based port parsing with validated helper. [PR #1097](https://github.com/c-ares/c-ares/pull/1097) +* Defer TCP connection error handling until DNS responses are parsed. [PR #1138](https://github.com/c-ares/c-ares/pull/1138) +* Prevent undefined-behavior left shift in ares_calc_query_timeout(). [PR #1151](https://github.com/c-ares/c-ares/pull/1151) +* Use unsigned type for ares_round_up_pow2_u64 to avoid undefined behavior. [PR #1107](https://github.com/c-ares/c-ares/pull/1107) +* Fix undefined behavior in ares_buf_replace() pointer arithmetic. [PR #1099](https://github.com/c-ares/c-ares/pull/1099) +* ares_array: reset offset when array becomes empty. [PR #1165](https://github.com/c-ares/c-ares/pull/1165) +* ares_iface_ips: add ARES_IFACE_IP_NONE zero enum value. [PR #1187](https://github.com/c-ares/c-ares/pull/1187) +* ares_sysconfig_files: recognize AIX netsvc.conf bind4/local4 tokens. [PR #1188](https://github.com/c-ares/c-ares/pull/1188) +* Use safe string construction in Windows sysconfig join path. [PR #1143](https://github.com/c-ares/c-ares/pull/1143) +* Fix zero-length RAW_RR losing type metadata during parsing. [PR #1129](https://github.com/c-ares/c-ares/pull/1129) +* Fix RAW_RR type tostr/fromstr roundtrip mismatch. [PR #1123](https://github.com/c-ares/c-ares/pull/1123) +* Fix NULL dereference for ifa netmask. [PR #1120](https://github.com/c-ares/c-ares/pull/1120) +* adig: fix negated option prefix parsing. [PR #1135](https://github.com/c-ares/c-ares/pull/1135) +* Use UnregisterWaitEx to prevent use-after-free on Win32. [PR #1111](https://github.com/c-ares/c-ares/pull/1111) +* Add NULL check after ares_malloc_zero in Windows UTF8 conversion. [PR #1121](https://github.com/c-ares/c-ares/pull/1121) +* Fix NULL dereference after ares_malloc_zero in Win32 IOCP event add. [PR #1132](https://github.com/c-ares/c-ares/pull/1132) +* Fix microsecond overflow in ares_queue_wait_empty timeout. [PR #1122](https://github.com/c-ares/c-ares/pull/1122) +* Fix NULL dereference in ares_buf_replace() on NULL buf. [PR #1124](https://github.com/c-ares/c-ares/pull/1124) +* Initialize *read_bytes in ares_socket_recvfrom(). [PR #1125](https://github.com/c-ares/c-ares/pull/1125) +* Fix memory leak of binbuf in ares_buf_parse_dns_binstr_int. [PR #1126](https://github.com/c-ares/c-ares/pull/1126) +* Fix memory leak of qcache entry on key allocation failure. [PR #1127](https://github.com/c-ares/c-ares/pull/1127) +* Fix memory leak of buf in ares_dns_multistring_combined() on OOM. [PR #1110](https://github.com/c-ares/c-ares/pull/1110) +* Fix memory leaks on error paths in two functions. [PR #1109](https://github.com/c-ares/c-ares/pull/1109) +* Fix memory leak of buckets in ares_htable_dict_keys() error path. [PR #1108](https://github.com/c-ares/c-ares/pull/1108) +* Fix memory leak of bucket->key in ares_htable_dict_insert error path. [PR #1105](https://github.com/c-ares/c-ares/pull/1105) +* Fix additional memory leaks. [PR #1091](https://github.com/c-ares/c-ares/pull/1091) [PR #1078](https://github.com/c-ares/c-ares/pull/1078) +* Prevent corrupt addrinfo nodes on sockaddr allocation failure. [PR #1112](https://github.com/c-ares/c-ares/pull/1112) +* Fix two logic bugs in DNS cookie handling. [PR #1103](https://github.com/c-ares/c-ares/pull/1103) +* Fix linked list INSERT_BEFORE corruption and array insertdata_first ordering. [PR #1101](https://github.com/c-ares/c-ares/pull/1101) +* Fix HASH_IDX macro missing parentheses. [PR #1128](https://github.com/c-ares/c-ares/pull/1128) +* Fix malloc(0) in ares_htable_all_buckets on empty table. [PR #1131](https://github.com/c-ares/c-ares/pull/1131) +* Fix wrong sizeof in QNX confstr() call truncating domain names. [PR #1130](https://github.com/c-ares/c-ares/pull/1130) +* Clear probe pending flag after timeout. [PR #1059](https://github.com/c-ares/c-ares/pull/1059) +* Fix incorrect check for empty wide string. [PR #1064](https://github.com/c-ares/c-ares/pull/1064) +* Handle strdup failure. [PR #1077](https://github.com/c-ares/c-ares/pull/1077) +* doc: reference ares_free_string(), not ares_free(). [PR #1084](https://github.com/c-ares/c-ares/pull/1084) + +Thanks go to these friendly people for their efforts and contributions for this +release: + +* (@Alb3e3) +* Brad House (@bradh352) +* (@dankmeme01) +* David Hotham (@dimbleby) +* Tom Flynn (@Flynnzaa) +* (@jmestwa-coder) +* (@kodareef5) +* Kaixuan Li (@MarkLee131) +* (@lifenjoiner) +* (@metsw24-max) +* Song Li (@SongTonyLi) +* (@uwezkhan) + + ## c-ares version 1.34.6 - December 8 2025 This is a security release. diff --git a/deps/cares/aminclude_static.am b/deps/cares/aminclude_static.am index 07239563e6a6d2..9a00ba789172eb 100644 --- a/deps/cares/aminclude_static.am +++ b/deps/cares/aminclude_static.am @@ -1,6 +1,6 @@ # aminclude_static.am generated automatically by Autoconf -# from AX_AM_MACROS_STATIC on Mon Dec 8 16:21:41 UTC 2025 +# from AX_AM_MACROS_STATIC on Tue Jul 7 16:14:13 UTC 2026 # Code coverage diff --git a/deps/cares/configure b/deps/cares/configure index f91e2c956862e7..c2318a1c3bf07a 100755 --- a/deps/cares/configure +++ b/deps/cares/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for c-ares 1.34.6. +# Generated by GNU Autoconf 2.71 for c-ares 1.34.8. # # Report bugs to . # @@ -621,8 +621,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='c-ares' PACKAGE_TARNAME='c-ares' -PACKAGE_VERSION='1.34.6' -PACKAGE_STRING='c-ares 1.34.6' +PACKAGE_VERSION='1.34.8' +PACKAGE_STRING='c-ares 1.34.8' PACKAGE_BUGREPORT='c-ares mailing list: http://lists.haxx.se/listinfo/c-ares' PACKAGE_URL='' @@ -1430,7 +1430,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures c-ares 1.34.6 to adapt to many kinds of systems. +\`configure' configures c-ares 1.34.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1501,7 +1501,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of c-ares 1.34.6:";; + short | recursive ) echo "Configuration of c-ares 1.34.8:";; esac cat <<\_ACEOF @@ -1647,7 +1647,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -c-ares configure 1.34.6 +c-ares configure 1.34.8 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2271,7 +2271,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by c-ares $as_me 1.34.6, which was +It was created by c-ares $as_me 1.34.8, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3245,7 +3245,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -CARES_VERSION_INFO="21:5:19" +CARES_VERSION_INFO="21:7:19" @@ -6818,7 +6818,7 @@ fi # Define the identity of the package. PACKAGE='c-ares' - VERSION='1.34.6' + VERSION='1.34.8' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -28238,7 +28238,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by c-ares $as_me 1.34.6, which was +This file was extended by c-ares $as_me 1.34.8, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -28306,7 +28306,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -c-ares config.status 1.34.6 +c-ares config.status 1.34.8 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/deps/cares/configure.ac b/deps/cares/configure.ac index 744a99be56ab2f..637dfb153b1f72 100644 --- a/deps/cares/configure.ac +++ b/deps/cares/configure.ac @@ -2,10 +2,10 @@ dnl Copyright (C) The c-ares project and its contributors dnl SPDX-License-Identifier: MIT AC_PREREQ([2.69]) -AC_INIT([c-ares], [1.34.6], +AC_INIT([c-ares], [1.34.8], [c-ares mailing list: http://lists.haxx.se/listinfo/c-ares]) -CARES_VERSION_INFO="21:5:19" +CARES_VERSION_INFO="21:7:19" dnl This flag accepts an argument of the form current[:revision[:age]]. So, dnl passing -version-info 3:12:1 sets current to 3, revision to 12, and age to dnl 1. diff --git a/deps/cares/docs/ares_dns_record.3 b/deps/cares/docs/ares_dns_record.3 index 47ca95b057a246..723f9ab4b98c6a 100644 --- a/deps/cares/docs/ares_dns_record.3 +++ b/deps/cares/docs/ares_dns_record.3 @@ -140,7 +140,7 @@ DNS Classes for requests and responses: .B ARES_CLASS_CHAOS - CHAOS .br -.B ARES_CLASS_HESOID +.B ARES_CLASS_HESIOD - Hesoid [Dyer 87] .br .B ARES_CLASS_NONE diff --git a/deps/cares/docs/ares_getaddrinfo.3 b/deps/cares/docs/ares_getaddrinfo.3 index 5544ce20224eba..661381e0926e8c 100644 --- a/deps/cares/docs/ares_getaddrinfo.3 +++ b/deps/cares/docs/ares_getaddrinfo.3 @@ -27,6 +27,19 @@ The and .I service parameters give the hostname and service as NULL-terminated C strings. +Either +.I name +or +.I service +may be NULL, but not both. If +.I name +is NULL, the returned addresses are synthesized from +.IR service : +the wildcard address (0.0.0.0 or ::) is returned when +.B ARES_AI_PASSIVE +is set in +.IR ai_flags , +otherwise the loopback address (127.0.0.1 or ::1) is returned. The .I hints parameter is an @@ -63,6 +76,16 @@ If this option is set .I service field will be treated as a numeric value. .TP 19 +.B ARES_AI_PASSIVE +If this option is set and +.I name +is NULL, the returned addresses will use the wildcard address (0.0.0.0 or ::), +suitable for +.BR bind (2)ing +a socket that will accept connections. If not set and +.I name +is NULL, the loopback address (127.0.0.1 or ::1) is returned instead. +.TP 19 .B ARES_AI_CANONNAME The ares_addrinfo structure will return a canonical names list. .TP 19 diff --git a/deps/cares/docs/ares_gethostbyaddr.3 b/deps/cares/docs/ares_gethostbyaddr.3 index cc4092285c0168..f5b5f0864fcff1 100644 --- a/deps/cares/docs/ares_gethostbyaddr.3 +++ b/deps/cares/docs/ares_gethostbyaddr.3 @@ -80,7 +80,16 @@ points to a containing the name of the host returned by the query. The callback need not and should not attempt to free the memory pointed to by .IR hostent ; -the ares library will free it when the callback returns. If the query +the ares library will free it when the callback returns. The callback +.B must not +modify the +.B struct hostent +or retain a reference to it after returning; it is owned by c-ares and is only +valid for the duration of the callback. The parameter is intentionally not +declared +.B const +solely to preserve API/ABI compatibility with existing applications. +If the query did not complete successfully, .I hostent will be diff --git a/deps/cares/docs/ares_gethostbyname.3 b/deps/cares/docs/ares_gethostbyname.3 index 06d075ca6c5136..40d340343114f1 100644 --- a/deps/cares/docs/ares_gethostbyname.3 +++ b/deps/cares/docs/ares_gethostbyname.3 @@ -88,7 +88,16 @@ points to a containing the name of the host returned by the query. The callback need not and should not attempt to free the memory pointed to by .IR hostent ; -the ares library will free it when the callback returns. If the query +the ares library will free it when the callback returns. The callback +.B must not +modify the +.B struct hostent +or retain a reference to it after returning; it is owned by c-ares and is only +valid for the duration of the callback. The parameter is intentionally not +declared +.B const +solely to preserve API/ABI compatibility with existing applications. +If the query did not complete successfully, .I hostent will be diff --git a/deps/cares/docs/ares_getnameinfo.3 b/deps/cares/docs/ares_getnameinfo.3 index 66b04f9efc11a7..800b57b31f3f4c 100644 --- a/deps/cares/docs/ares_getnameinfo.3 +++ b/deps/cares/docs/ares_getnameinfo.3 @@ -24,7 +24,7 @@ function is defined for protocol-independent address translation. The function is a combination of \fIares_gethostbyaddr(3)\fP and \fIgetservbyport(3)\fP. The function will translate the address either by executing a host query on the name service channel identified by -.IR channel +.IR channel or it will attempt to resolve it locally if possible. The parameters .I sa @@ -68,8 +68,8 @@ A hostname lookup is being requested. A service name lookup is being requested. .PP When the query -is complete or has -failed, the ares library will invoke \fIcallback\fP. Completion or failure of +is complete or has +failed, the ares library will invoke \fIcallback\fP. Completion or failure of the query may happen immediately, or may happen during a later call to \fIares_process(3)\fP, \fIares_destroy(3)\fP or \fIares_cancel(3)\fP. .PP @@ -129,19 +129,31 @@ given request. .PP On successful completion of the query, the callback argument .I node -contains a string representing the hostname (assuming +contains a string representing the hostname (assuming .B ARES_NI_LOOKUPHOST -was specified). Additionally, +was specified). Additionally, .I service contains a string representing the service name (assuming .B ARES_NI_LOOKUPSERVICE was specified). If the query did not complete successfully, or one of the values -was not requested, +was not requested, .I node or .I service -will be +will be .BR NULL . +.PP +The +.I node +and +.I service +strings are owned by the c-ares library and are only valid for the duration of +the callback. The callback +.B must not +modify or free them, and must not retain references to them after returning; +treat them as read-only. The parameters are intentionally not declared +.B const +solely to preserve API/ABI compatibility with existing applications. .SH SEE ALSO .BR ares_process (3), diff --git a/deps/cares/docs/ares_query.3 b/deps/cares/docs/ares_query.3 index 3aa428b00bb813..401d700a44ccd9 100644 --- a/deps/cares/docs/ares_query.3 +++ b/deps/cares/docs/ares_query.3 @@ -146,6 +146,16 @@ or .I abuf will be non-NULL, otherwise they will be NULL. +The +.I abuf +buffer is owned by the c-ares library and is only valid for the duration of +the callback. The callback +.B must not +modify or free it, and must not retain a reference to it after returning; treat +it as read-only. The parameter is intentionally not declared +.B const +solely to preserve API/ABI compatibility with existing applications. + .SH AVAILABILITY \fBares_query_dnsrec(3)\fP was introduced in c-ares 1.28.0. diff --git a/deps/cares/docs/ares_search.3 b/deps/cares/docs/ares_search.3 index 66791b47e908fb..12d1dede09e874 100644 --- a/deps/cares/docs/ares_search.3 +++ b/deps/cares/docs/ares_search.3 @@ -152,6 +152,15 @@ will usually be NULL and will usually be 0, but in some cases an unsuccessful query result may be placed in .IR abuf . +The +.I abuf +buffer is owned by the c-ares library and is only valid for the duration of +the callback. The callback +.B must not +modify or free it, and must not retain a reference to it after returning; treat +it as read-only. The parameter is intentionally not declared +.B const +solely to preserve API/ABI compatibility with existing applications. The \fIares_search_dnsrec(3)\fP function behaves identically to \fIares_search(3)\fP, but takes an initialized and filled DNS record object to diff --git a/deps/cares/docs/ares_send.3 b/deps/cares/docs/ares_send.3 index df3e3bbe4136b0..cf669a001db295 100644 --- a/deps/cares/docs/ares_send.3 +++ b/deps/cares/docs/ares_send.3 @@ -131,6 +131,16 @@ and .IR alen for \fIares_send(3)\fP will be non-NULL. +The +.I abuf +buffer is owned by the c-ares library and is only valid for the duration of +the callback. The callback +.B must not +modify or free it, and must not retain a reference to it after returning; treat +it as read-only. The parameter is intentionally not declared +.B const +solely to preserve API/ABI compatibility with existing applications. + Unless the flag .B ARES_FLAG_NOCHECKRESP was set at channel initialization time, \fIares_send_dnsrec(3)\fP and diff --git a/deps/cares/include/ares.h b/deps/cares/include/ares.h index 7fe3ec78f4e651..1e38463a044a22 100644 --- a/deps/cares/include/ares.h +++ b/deps/cares/include/ares.h @@ -434,6 +434,14 @@ struct ares_addr { /* DNS record parser, writer, and helpers */ #include "ares_dns_record.h" +/* IMPORTANT: the pointer parameters below (abuf, hostent, node, service) are + * intentionally NOT const. Marking them const changes the function-pointer + * type and breaks API/ABI compatibility for existing C and (especially) C++ + * applications that declare their callbacks with the historical non-const + * signature. This was tried in PR #1060 and reverted for that reason. These + * buffers are owned by c-ares and MUST be treated as read-only by the callback + * (do not modify or free them); that contract is documented in the man pages, + * not enforced via const, to preserve compatibility. Do not re-add const. */ typedef void (*ares_callback)(void *arg, int status, int timeouts, unsigned char *abuf, int alen); diff --git a/deps/cares/include/ares_dns_record.h b/deps/cares/include/ares_dns_record.h index cec9f47f63d8f5..1e47a78e143c4a 100644 --- a/deps/cares/include/ares_dns_record.h +++ b/deps/cares/include/ares_dns_record.h @@ -76,7 +76,8 @@ typedef enum { typedef enum { ARES_CLASS_IN = 1, /*!< Internet */ ARES_CLASS_CHAOS = 3, /*!< CHAOS */ - ARES_CLASS_HESOID = 4, /*!< Hesoid [Dyer 87] */ + ARES_CLASS_HESIOD = 4, /*!< Hesiod [Dyer 87] */ + ARES_CLASS_HESOID = 4, /*!< typo from older c-ares version for Hesiod */ ARES_CLASS_NONE = 254, /*!< RFC 2136 */ ARES_CLASS_ANY = 255 /*!< Any class (requests only) */ } ares_dns_class_t; @@ -1092,7 +1093,7 @@ CARES_EXTERN ares_status_t ares_dns_parse(const unsigned char *buf, * * \param[in] dnsrec Pointer to initialized and filled DNS record object. * \param[out] buf Pointer passed by reference to be filled in with with - * DNS message. Must be ares_free()'d by caller. + * DNS message. Must be ares_free_string()'d by caller. * \param[out] buf_len Length of returned buffer containing DNS message. * \return ARES_SUCCESS on success */ diff --git a/deps/cares/include/ares_version.h b/deps/cares/include/ares_version.h index 006029c12dfe91..f836d5f9186d1c 100644 --- a/deps/cares/include/ares_version.h +++ b/deps/cares/include/ares_version.h @@ -32,8 +32,8 @@ #define ARES_VERSION_MAJOR 1 #define ARES_VERSION_MINOR 34 -#define ARES_VERSION_PATCH 6 -#define ARES_VERSION_STR "1.34.6" +#define ARES_VERSION_PATCH 8 +#define ARES_VERSION_STR "1.34.8" /* NOTE: We cannot make the version string a C preprocessor stringify operation * due to assumptions made by integrators that aren't properly using diff --git a/deps/cares/src/lib/CMakeLists.txt b/deps/cares/src/lib/CMakeLists.txt index bdb2690fb673f9..a4c1e73f1bd5ad 100644 --- a/deps/cares/src/lib/CMakeLists.txt +++ b/deps/cares/src/lib/CMakeLists.txt @@ -66,6 +66,8 @@ IF (CARES_SHARED) TARGET_COMPILE_DEFINITIONS (${PROJECT_NAME} PRIVATE HAVE_CONFIG_H=1 CARES_BUILDING_LIBRARY) + cares_set_werror (${PROJECT_NAME}) + TARGET_LINK_LIBRARIES (${PROJECT_NAME} PUBLIC ${CARES_DEPENDENT_LIBS} PRIVATE ${CMAKE_THREAD_LIBS_INIT} @@ -136,6 +138,8 @@ IF (CARES_STATIC) TARGET_COMPILE_DEFINITIONS (${LIBNAME} PRIVATE HAVE_CONFIG_H=1 CARES_BUILDING_LIBRARY) + cares_set_werror (${LIBNAME}) + # Only matters on Windows IF (WIN32 OR CYGWIN) TARGET_COMPILE_DEFINITIONS (${LIBNAME} PUBLIC CARES_STATICLIB) diff --git a/deps/cares/src/lib/Makefile.in b/deps/cares/src/lib/Makefile.in index e92732eaf72c8d..a9630300c0848b 100644 --- a/deps/cares/src/lib/Makefile.in +++ b/deps/cares/src/lib/Makefile.in @@ -15,7 +15,7 @@ @SET_MAKE@ # aminclude_static.am generated automatically by Autoconf -# from AX_AM_MACROS_STATIC on Mon Dec 8 16:21:41 UTC 2025 +# from AX_AM_MACROS_STATIC on Tue Jul 7 16:14:13 UTC 2026 # Copyright (C) The c-ares project and its contributors # SPDX-License-Identifier: MIT diff --git a/deps/cares/src/lib/ares_addrinfo_localhost.c b/deps/cares/src/lib/ares_addrinfo_localhost.c index 2abb0c48a6f601..b65cf48a2f6a75 100644 --- a/deps/cares/src/lib/ares_addrinfo_localhost.c +++ b/deps/cares/src/lib/ares_addrinfo_localhost.c @@ -67,13 +67,8 @@ ares_status_t ares_append_ai_node(int aftype, unsigned short port, struct ares_addrinfo_node **nodes) { struct ares_addrinfo_node *node; - - node = ares_append_addrinfo_node(nodes); - if (!node) { - return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ - } - - memset(node, 0, sizeof(*node)); + struct sockaddr *sa; + socklen_t salen; if (aftype == AF_INET) { struct sockaddr_in *sin = ares_malloc(sizeof(*sin)); @@ -86,14 +81,9 @@ ares_status_t ares_append_ai_node(int aftype, unsigned short port, sin->sin_family = AF_INET; sin->sin_port = htons(port); - node->ai_addr = (struct sockaddr *)sin; - node->ai_family = AF_INET; - node->ai_addrlen = sizeof(*sin); - node->ai_addr = (struct sockaddr *)sin; - node->ai_ttl = (int)ttl; - } - - if (aftype == AF_INET6) { + sa = (struct sockaddr *)sin; + salen = sizeof(*sin); + } else if (aftype == AF_INET6) { struct sockaddr_in6 *sin6 = ares_malloc(sizeof(*sin6)); if (!sin6) { return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ @@ -104,13 +94,23 @@ ares_status_t ares_append_ai_node(int aftype, unsigned short port, sin6->sin6_family = AF_INET6; sin6->sin6_port = htons(port); - node->ai_addr = (struct sockaddr *)sin6; - node->ai_family = AF_INET6; - node->ai_addrlen = sizeof(*sin6); - node->ai_addr = (struct sockaddr *)sin6; - node->ai_ttl = (int)ttl; + sa = (struct sockaddr *)sin6; + salen = sizeof(*sin6); + } else { + return ARES_EFORMERR; + } + + node = ares_append_addrinfo_node(nodes); + if (!node) { + ares_free(sa); /* LCOV_EXCL_LINE: OutOfMemory */ + return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ } + node->ai_addr = sa; + node->ai_family = aftype; + node->ai_addrlen = salen; + node->ai_ttl = (int)ttl; + return ARES_SUCCESS; } diff --git a/deps/cares/src/lib/ares_close_sockets.c b/deps/cares/src/lib/ares_close_sockets.c index 347f43e6fcd88d..7bb72c31ec1b2a 100644 --- a/deps/cares/src/lib/ares_close_sockets.c +++ b/deps/cares/src/lib/ares_close_sockets.c @@ -112,11 +112,11 @@ void ares_check_cleanup_conns(const ares_channel_t *channel) do_cleanup = ARES_TRUE; } - /* If the associated server has failures, close it out. Resetting the - * connection (and specifically the source port number) can help resolve - * situations where packets are being dropped. + /* If the connection has been retired for new queries, close it out once + * idle. Resetting the connection (and specifically the source port + * number) can help resolve situations where packets are being dropped. */ - if (conn->server->consec_failures > 0) { + if (conn->flags & ARES_CONN_FLAG_NONEW) { do_cleanup = ARES_TRUE; } diff --git a/deps/cares/src/lib/ares_conn.h b/deps/cares/src/lib/ares_conn.h index 16ecefdd19fa67..c332de14b135d4 100644 --- a/deps/cares/src/lib/ares_conn.h +++ b/deps/cares/src/lib/ares_conn.h @@ -43,7 +43,13 @@ typedef enum { ARES_CONN_FLAG_TFO = 1 << 1, /*! TCP Fast Open has not yet sent its first packet. Gets unset on first * write to a connection */ - ARES_CONN_FLAG_TFO_INITIAL = 1 << 2 + ARES_CONN_FLAG_TFO_INITIAL = 1 << 2, + /*! Connection has been retired: it must not be handed any NEW queries (e.g. + * it experienced a query timeout, suggesting packets are being dropped on + * it). Its in-flight queries continue to drain and it is cleaned up once + * idle. This is a per-connection signal so that a transient failure does + * not evict otherwise-healthy connections to the same server. */ + ARES_CONN_FLAG_NONEW = 1 << 3 } ares_conn_flags_t; typedef enum { diff --git a/deps/cares/src/lib/ares_cookie.c b/deps/cares/src/lib/ares_cookie.c index 509e12050e0c00..25960db6022fcc 100644 --- a/deps/cares/src/lib/ares_cookie.c +++ b/deps/cares/src/lib/ares_cookie.c @@ -217,7 +217,7 @@ static const unsigned char * static ares_bool_t timeval_is_set(const ares_timeval_t *tv) { - if (tv->sec != 0 && tv->usec != 0) { + if (tv->sec != 0 || tv->usec != 0) { return ARES_TRUE; } return ARES_FALSE; @@ -324,7 +324,7 @@ ares_status_t ares_cookie_apply(ares_dns_record_t *dnsrec, ares_conn_t *conn, if (cookie->state == ARES_COOKIE_UNSUPPORTED) { /* If timer hasn't expired, just delete any possible cookie and return */ if (!timeval_expired(&cookie->unsupported_ts, now, - COOKIE_REGRESSION_TIMEOUT_MS)) { + COOKIE_UNSUPPORTED_TIMEOUT_MS)) { ares_dns_rr_del_opt_byid(rr, ARES_RR_OPT_OPTIONS, ARES_OPT_PARAM_COOKIE); return ARES_SUCCESS; } diff --git a/deps/cares/src/lib/ares_getaddrinfo.c b/deps/cares/src/lib/ares_getaddrinfo.c index 6009de36a3d02d..6d9e21af4bb9a1 100644 --- a/deps/cares/src/lib/ares_getaddrinfo.c +++ b/deps/cares/src/lib/ares_getaddrinfo.c @@ -242,6 +242,11 @@ static ares_bool_t fake_addrinfo(const char *name, unsigned short port, ares_status_t status = ARES_SUCCESS; ares_bool_t result = ARES_FALSE; int family = hints->ai_family; + + if (name == NULL) { + return ARES_FALSE; /* LCOV_EXCL_LINE: DefensiveCoding */ + } + if (family == AF_INET || family == AF_INET6 || family == AF_UNSPEC) { /* It only looks like an IP address if it's all numbers and dots. */ size_t numdots = 0; @@ -268,6 +273,7 @@ static ares_bool_t fake_addrinfo(const char *name, unsigned short port, if (result) { status = ares_append_ai_node(AF_INET, port, 0, &addr4, &ai->nodes); if (status != ARES_SUCCESS) { + ares_freeaddrinfo(ai); callback(arg, (int)status, 0, NULL); /* LCOV_EXCL_LINE: OutOfMemory */ return ARES_TRUE; /* LCOV_EXCL_LINE: OutOfMemory */ } @@ -282,6 +288,7 @@ static ares_bool_t fake_addrinfo(const char *name, unsigned short port, if (result) { status = ares_append_ai_node(AF_INET6, port, 0, &addr6, &ai->nodes); if (status != ARES_SUCCESS) { + ares_freeaddrinfo(ai); callback(arg, (int)status, 0, NULL); /* LCOV_EXCL_LINE: OutOfMemory */ return ARES_TRUE; /* LCOV_EXCL_LINE: OutOfMemory */ } @@ -575,21 +582,55 @@ static void host_callback(void *arg, ares_status_t status, size_t timeouts, /* at this point we keep on waiting for the next query to finish */ } -static ares_bool_t numeric_service_to_port(const char *service, - unsigned short *port) +/* Per POSIX getaddrinfo(), when no node/hostname is provided the returned + * addresses are synthesized from the service: the wildcard address when + * ARES_AI_PASSIVE is set (suitable for bind()ing a listening socket), + * otherwise the loopback address (suitable for connect()ing to a peer on the + * local host). */ +static ares_status_t + ares_append_nulladdr(unsigned short port, + const struct ares_addrinfo_hints *hints, + struct ares_addrinfo *ai) { - char *end; - unsigned long val; + int family = hints->ai_family; + ares_bool_t passive = ARES_FALSE; + ares_status_t status; + struct ares_addrinfo_node *node; - errno = 0; - val = strtoul(service, &end, 10); + if (hints->ai_flags & ARES_AI_PASSIVE) { + passive = ARES_TRUE; + } - if (errno == 0 && *end == '\0' && val <= 65535) { - *port = (unsigned short)val; - return ARES_TRUE; + if (family == AF_INET6 || family == AF_UNSPEC) { + struct ares_in6_addr addr6; + memset(&addr6, 0, sizeof(addr6)); /* wildcard "::" */ + if (!passive) { + ares_inet_pton(AF_INET6, "::1", &addr6); + } + status = ares_append_ai_node(AF_INET6, port, 0, &addr6, &ai->nodes); + if (status != ARES_SUCCESS) { + return status; /* LCOV_EXCL_LINE: OutOfMemory */ + } } - return ARES_FALSE; + if (family == AF_INET || family == AF_UNSPEC) { + struct in_addr addr4; + memset(&addr4, 0, sizeof(addr4)); /* wildcard "0.0.0.0" */ + if (!passive) { + ares_inet_pton(AF_INET, "127.0.0.1", &addr4); + } + status = ares_append_ai_node(AF_INET, port, 0, &addr4, &ai->nodes); + if (status != ARES_SUCCESS) { + return status; /* LCOV_EXCL_LINE: OutOfMemory */ + } + } + + for (node = ai->nodes; node != NULL; node = node->ai_next) { + node->ai_socktype = hints->ai_socktype; + node->ai_protocol = hints->ai_protocol; + } + + return ARES_SUCCESS; } static void ares_getaddrinfo_int(ares_channel_t *channel, const char *name, @@ -616,6 +657,13 @@ static void ares_getaddrinfo_int(ares_channel_t *channel, const char *name, return; } + /* POSIX getaddrinfo() requires that at least one of node (name) or service + * be provided. */ + if (name == NULL && service == NULL) { + callback(arg, ARES_ENOTFOUND, 0, NULL); + return; + } + if (ares_is_onion_domain(name)) { callback(arg, ARES_ENOTFOUND, 0, NULL); return; @@ -623,14 +671,14 @@ static void ares_getaddrinfo_int(ares_channel_t *channel, const char *name, if (service) { if (hints->ai_flags & ARES_AI_NUMERICSERV) { - if (!numeric_service_to_port(service, &port)) { + if (!ares_parse_port(service, &port, ARES_TRUE)) { callback(arg, ARES_ESERVICE, 0, NULL); return; } } else { port = lookup_service(service, 0); if (!port) { - if (!numeric_service_to_port(service, &port)) { + if (!ares_parse_port(service, &port, ARES_TRUE)) { callback(arg, ARES_ESERVICE, 0, NULL); return; } @@ -644,6 +692,19 @@ static void ares_getaddrinfo_int(ares_channel_t *channel, const char *name, return; } + /* No node/hostname was provided (service-only lookup): synthesize wildcard + * or loopback addresses from the resolved port instead of issuing a query. */ + if (name == NULL) { + status = ares_append_nulladdr(port, hints, ai); + if (status != ARES_SUCCESS) { + ares_freeaddrinfo(ai); /* LCOV_EXCL_LINE: OutOfMemory */ + callback(arg, (int)status, 0, NULL); /* LCOV_EXCL_LINE: OutOfMemory */ + return; /* LCOV_EXCL_LINE: OutOfMemory */ + } + callback(arg, ARES_SUCCESS, 0, ai); + return; + } + if (fake_addrinfo(name, port, hints, ai, callback, arg)) { return; } diff --git a/deps/cares/src/lib/ares_gethostbyname.c b/deps/cares/src/lib/ares_gethostbyname.c index d451b4685110ec..640df74cfc36c3 100644 --- a/deps/cares/src/lib/ares_gethostbyname.c +++ b/deps/cares/src/lib/ares_gethostbyname.c @@ -102,6 +102,10 @@ void ares_gethostbyname(ares_channel_t *channel, const char *name, int family, struct ares_addrinfo_hints hints; struct host_query *ghbn_arg; + if (channel == NULL) { + return; + } + if (!callback) { return; } diff --git a/deps/cares/src/lib/ares_hosts_file.c b/deps/cares/src/lib/ares_hosts_file.c index c0fb80766a7e9b..0c8aebaf6bad9d 100644 --- a/deps/cares/src/lib/ares_hosts_file.c +++ b/deps/cares/src/lib/ares_hosts_file.c @@ -674,6 +674,9 @@ static ares_status_t ares_hosts_path(const ares_channel_t *channel, &dwLength); ExpandEnvironmentStringsA(tmp, PATH_HOSTS, MAX_PATH); RegCloseKey(hkeyHosts); + if (strlen(PATH_HOSTS)+strlen(WIN_PATH_HOSTS) >= MAX_PATH) { + return ARES_ENOTFOUND; + } strcat(PATH_HOSTS, WIN_PATH_HOSTS); #elif defined(WATT32) const char *PATH_HOSTS = _w32_GetHostsFile(); diff --git a/deps/cares/src/lib/ares_init.c b/deps/cares/src/lib/ares_init.c index dc094c4df6eb69..dc3c1e4f537e16 100644 --- a/deps/cares/src/lib/ares_init.c +++ b/deps/cares/src/lib/ares_init.c @@ -102,6 +102,20 @@ static int server_sort_cb(const void *data1, const void *data2) if (s1->consec_failures > s2->consec_failures) { return 1; } + + /* Among servers with the same failure count, prefer the one that failed + * least recently so that a server that went down long ago (and may have + * since recovered) is tried before one that just failed. This also keeps + * retries rotating across servers once the failure counts saturate at + * SERVER_CONSEC_FAILURES_CAP. Healthy servers all have a zeroed retry + * time and fall through to configuration order. */ + if (s1->next_retry_time.sec != s2->next_retry_time.sec) { + return s1->next_retry_time.sec < s2->next_retry_time.sec ? -1 : 1; + } + if (s1->next_retry_time.usec != s2->next_retry_time.usec) { + return s1->next_retry_time.usec < s2->next_retry_time.usec ? -1 : 1; + } + if (s1->idx < s2->idx) { return -1; } diff --git a/deps/cares/src/lib/ares_library_init.c b/deps/cares/src/lib/ares_library_init.c index 2b91692baec6d5..10c88de0095793 100644 --- a/deps/cares/src/lib/ares_library_init.c +++ b/deps/cares/src/lib/ares_library_init.c @@ -105,6 +105,27 @@ void *ares_realloc_zero(void *ptr, size_t orig_size, size_t new_size) return p; } +void *ares_malloc_zero_array(size_t num, size_t size) +{ + size_t total; + if (ares_size_t_mul_overflow(num, size, &total)) { + return NULL; + } + return ares_malloc_zero(total); +} + +void *ares_realloc_zero_array(void *ptr, size_t orig_num, size_t new_num, + size_t size) +{ + size_t orig_total; + size_t new_total; + if (ares_size_t_mul_overflow(orig_num, size, &orig_total) || + ares_size_t_mul_overflow(new_num, size, &new_total)) { + return NULL; + } + return ares_realloc_zero(ptr, orig_total, new_total); +} + int ares_library_init(int flags) { if (ares_initialized) { diff --git a/deps/cares/src/lib/ares_private.h b/deps/cares/src/lib/ares_private.h index d6bd426d39c180..04d4576ed203f1 100644 --- a/deps/cares/src/lib/ares_private.h +++ b/deps/cares/src/lib/ares_private.h @@ -131,6 +131,13 @@ W32_FUNC const char *_w32_GetHostsFile(void); #define DEFAULT_SERVER_RETRY_CHANCE 10 #define DEFAULT_SERVER_RETRY_DELAY 5000 +/* Upper bound on the consecutive failure count tracked per server. Only the + * relative order of the counts is used for server selection, so magnitude + * beyond "clearly down" carries no additional signal. Capping it bounds how + * long a server that failed for an extended period sorts behind other failed + * servers once it comes back online. */ +#define SERVER_CONSEC_FAILURES_CAP 16 + typedef void (*ares_query_enqueue_cb)(void *data); struct ares_query; @@ -418,6 +425,9 @@ ares_status_t ares_parse_sortlist(struct apattern **sortlist, size_t *nsort, ares_status_t ares_lookup_hostaliases(const ares_channel_t *channel, const char *name, char **alias); +ares_bool_t ares_parse_port(const char *str, unsigned short *port, + ares_bool_t allow_zero); + ares_status_t ares_cat_domain(const char *name, const char *domain, char **s); ares_status_t ares_sortaddrinfo(ares_channel_t *channel, struct ares_addrinfo_node *ai_node); @@ -539,10 +549,15 @@ void ares_gethostbyaddr_nolock(ares_channel_t *channel, const void *addr, * ares_free()'d by the caller. * \param[in] is_hostname if ARES_TRUE, will validate the character set for * a valid hostname or will return error. + * \param[in] allow_compression if ARES_FALSE, a compression pointer + * encountered while parsing the name will be rejected + * with ARES_EBADNAME. Used for RR types (e.g. SRV) + * whose RDATA names must not use name compression. * \return ARES_SUCCESS on success */ ares_status_t ares_dns_name_parse(ares_buf_t *buf, char **name, - ares_bool_t is_hostname); + ares_bool_t is_hostname, + ares_bool_t allow_compression); /*! Write the DNS name to the buffer in the DNS domain-name syntax as a * series of labels. The maximum domain name length is 255 characters with diff --git a/deps/cares/src/lib/ares_process.c b/deps/cares/src/lib/ares_process.c index 9352968419ef8e..b2316c4b333cab 100644 --- a/deps/cares/src/lib/ares_process.c +++ b/deps/cares/src/lib/ares_process.c @@ -45,7 +45,6 @@ #include -static void timeadd(ares_timeval_t *now, size_t millisecs); static ares_status_t process_write(ares_channel_t *channel, ares_socket_t write_fd); static ares_status_t process_read(ares_channel_t *channel, @@ -66,6 +65,11 @@ static void end_query(ares_channel_t *channel, ares_server_t *server, ares_query_t *query, ares_status_t status, ares_dns_record_t *dnsrec, ares_array_t **requeue); +static ares_status_t ares_send_query_int(ares_server_t *requested_server, + ares_query_t *query, + const ares_timeval_t *now, + ares_array_t **requeue); +static void ares_detach_query(ares_query_t *query); static void ares_query_remove_from_conn(ares_query_t *query) { @@ -124,13 +128,22 @@ static void server_increment_failures(ares_server_t *server, return; /* LCOV_EXCL_LINE: DefensiveCoding */ } - server->consec_failures++; - ares_slist_node_reinsert(node); + /* Cap the failure count. Only the relative order matters for server + * selection, and an uncapped count would require an unbounded number of + * failures on other servers before a server that failed during an + * extended outage could be selected again. */ + if (server->consec_failures < SERVER_CONSEC_FAILURES_CAP) { + server->consec_failures++; + } + /* Must update the retry time before reinserting since the sort uses it to + * order servers with the same failure count */ ares_tvnow(&next_retry_time); - timeadd(&next_retry_time, channel->server_retry_delay); + ares_timeval_add(&next_retry_time, channel->server_retry_delay); server->next_retry_time = next_retry_time; + ares_slist_node_reinsert(node); + invoke_server_state_cb(server, ARES_FALSE, used_tcp == ARES_TRUE ? ARES_SERV_STATE_TCP : ARES_SERV_STATE_UDP); @@ -148,12 +161,13 @@ static void server_set_good(ares_server_t *server, ares_bool_t used_tcp) if (server->consec_failures > 0) { server->consec_failures = 0; + /* Must update the retry time before reinserting since the sort uses it + * to order servers with the same failure count */ + server->next_retry_time.sec = 0; + server->next_retry_time.usec = 0; ares_slist_node_reinsert(node); } - server->next_retry_time.sec = 0; - server->next_retry_time.usec = 0; - invoke_server_state_cb(server, ARES_TRUE, used_tcp == ARES_TRUE ? ARES_SERV_STATE_TCP : ARES_SERV_STATE_UDP); @@ -178,18 +192,6 @@ ares_bool_t ares_timedout(const ares_timeval_t *now, : ARES_FALSE; } -/* add the specific number of milliseconds to the time in the first argument */ -static void timeadd(ares_timeval_t *now, size_t millisecs) -{ - now->sec += (ares_int64_t)millisecs / 1000; - now->usec += (unsigned int)((millisecs % 1000) * 1000); - - if (now->usec >= 1000000) { - now->sec += now->usec / 1000000; - now->usec %= 1000000; - } -} - static ares_status_t ares_process_fds_nolock(ares_channel_t *channel, const ares_fd_events_t *events, size_t nevents, unsigned int flags) @@ -445,12 +447,19 @@ void ares_process_pending_write(ares_channel_t *channel) ares_channel_unlock(channel); } -static ares_status_t read_conn_packets(ares_conn_t *conn) +static ares_status_t read_conn_packets(ares_conn_t *conn, + ares_bool_t *conn_error) { ares_bool_t read_again; ares_conn_err_t err; const ares_channel_t *channel = conn->server->channel; + if (conn_error == NULL) { + return ARES_EFORMERR; + } + + *conn_error = ARES_FALSE; + do { size_t count; size_t len = 65535; @@ -498,6 +507,18 @@ static ares_status_t read_conn_packets(ares_conn_t *conn) /* If UDP, overwrite length */ if (!(conn->flags & ARES_CONN_FLAG_TCP)) { + /* The read buffer is grown in powers of two, so a single recvfrom() can + * return more than the 2-byte length prefix is able to represent. A + * datagram that large can't be a valid DNS message, and writing the + * truncated (unsigned short)count would desync the framing of everything + * buffered after it, so discard it. Standard UDP can't actually deliver + * a payload this large (max is 65507 IPv4 / 65527 IPv6); the only vector + * is IPv6 jumbograms (RFC 2675), which DNS never uses. This is purely + * defense-in-depth. */ + if (count > 65535) { + ares_buf_set_length(conn->in_buf, start_len); + break; + } len = ares_buf_len(conn->in_buf); ares_buf_set_length(conn->in_buf, start_len); ares_buf_append_be16(conn->in_buf, (unsigned short)count); @@ -508,8 +529,15 @@ static ares_status_t read_conn_packets(ares_conn_t *conn) } while (read_again); if (err != ARES_CONN_ERR_SUCCESS && err != ARES_CONN_ERR_WOULDBLOCK) { - handle_conn_error(conn, ARES_TRUE, ARES_ECONNREFUSED); - return ARES_ECONNREFUSED; + /* If there is no packet data buffered, preserve the historical + * immediate connection-failure behavior so retries happen promptly. + * Only defer if there is buffered data to parse first. */ + if (ares_buf_len(conn->in_buf) == 0) { + handle_conn_error(conn, ARES_TRUE, ARES_ECONNREFUSED); + return ARES_ECONNREFUSED; + } + + *conn_error = ARES_TRUE; } return ARES_SUCCESS; @@ -573,6 +601,79 @@ static ares_status_t ares_append_endqueue(ares_array_t **requeue, dnsrec); } +/* Drain the deferred requeue/endqueue list iteratively. All flush sites + * (read_answers(), process_timeouts(), and ares_send_query()) funnel through + * here so that: + * 1. Retries are re-dispatched by appending to this same list and looping, + * rather than recursing ares_requeue_query() -> ares_send_query() until + * the stack is exhausted (issue #1043). + * 2. A query is fully detached from all lookup lists before its callback is + * invoked, so a reentrant ares_cancel() from within that callback cannot + * find and free the same query, which would otherwise double-free it + * (CVE-2026-33630 / GHSA-6wfj-rwm7-3542). + * + * On return the list has been fully processed, an empty-queue notification has + * been sent if appropriate, and *requeue has been destroyed and set to NULL. */ +static ares_status_t ares_flush_requeue(ares_channel_t *channel, + const ares_timeval_t *now, + ares_array_t **requeue) +{ + ares_status_t status = ARES_SUCCESS; + + if (requeue == NULL) { + return status; + } + + while (*requeue != NULL && ares_array_len(*requeue) > 0) { + ares_query_t *query; + ares_requeue_t entry; + ares_status_t internal_status; + + internal_status = ares_array_claim_at(&entry, sizeof(entry), *requeue, 0); + if (internal_status != ARES_SUCCESS) { + break; /* LCOV_EXCL_LINE: DefensiveCoding */ + } + + query = ares_htable_szvp_get_direct(channel->queries_by_qid, entry.qid); + + if (entry.type == REQUEUE_REQUEUE) { + /* Query disappeared (e.g. a prior callback in this drain cancelled it) */ + if (query == NULL) { + continue; + } + /* Re-dispatch via the internal entrypoint so any further requeues are + * appended back onto this same list and drained by the loop above, + * rather than recursing. */ + internal_status = ares_send_query_int(entry.server, query, now, requeue); + /* We only care about ARES_ENOMEM */ + if (internal_status == ARES_ENOMEM) { + status = ARES_ENOMEM; + } + } else { /* REQUEUE_ENDQUERY */ + if (query != NULL) { + /* Detach the query from all lookup lists BEFORE invoking the callback. + * Otherwise a reentrant ares_cancel() from within the callback would + * find this query still linked in all_queries/queries_by_qid, free it, + * and the ares_free_query() below would then double-free it. */ + ares_detach_query(query); + query->callback(query->arg, entry.status, query->timeouts, + entry.dnsrec); + ares_free_query(query); + } + ares_dns_record_destroy(entry.dnsrec); + } + } + + /* Don't forget to send notification if queue emptied */ + if (*requeue != NULL) { + ares_queue_notify_empty(channel); + } + ares_array_destroy(*requeue); + *requeue = NULL; + + return status; +} + static ares_status_t read_answers(ares_conn_t *conn, const ares_timeval_t *now) { ares_status_t status; @@ -625,43 +726,11 @@ static ares_status_t read_answers(ares_conn_t *conn, const ares_timeval_t *now) } cleanup: - - /* Flush requeue */ - while (ares_array_len(requeue) > 0) { - ares_query_t *query; - ares_requeue_t entry; - ares_status_t internal_status; - - internal_status = ares_array_claim_at(&entry, sizeof(entry), requeue, 0); - if (internal_status != ARES_SUCCESS) { - break; - } - - query = ares_htable_szvp_get_direct(channel->queries_by_qid, entry.qid); - - if (entry.type == REQUEUE_REQUEUE) { - /* query disappeared */ - if (query == NULL) { - continue; - } - internal_status = ares_send_query(entry.server, query, now); - /* We only care about ARES_ENOMEM */ - if (internal_status == ARES_ENOMEM) { - status = ARES_ENOMEM; - } - } else { /* REQUEUE_ENDQUERY */ - if (query != NULL) { - query->callback(query->arg, entry.status, query->timeouts, entry.dnsrec); - ares_free_query(query); - } - ares_dns_record_destroy(entry.dnsrec); - } - } - /* Don't forget to send notification if queue emptied */ - if (requeue != NULL) { - ares_queue_notify_empty(channel); + /* Flush requeue - re-dispatch retries and invoke deferred callbacks + * iteratively and safely */ + if (ares_flush_requeue(channel, now, &requeue) == ARES_ENOMEM) { + status = ARES_ENOMEM; } - ares_array_destroy(requeue); return status; } @@ -671,24 +740,32 @@ static ares_status_t process_read(ares_channel_t *channel, const ares_timeval_t *now) { ares_conn_t *conn = ares_conn_from_fd(channel, read_fd); + ares_bool_t conn_error; ares_status_t status; if (conn == NULL) { return ARES_SUCCESS; } - /* TODO: There might be a potential issue here where there was a read that - * read some data, then looped and read again and got a disconnect. - * Right now, that would cause a resend instead of processing the data - * we have. This is fairly unlikely to occur due to only looping if - * a full buffer of 65535 bytes was read. */ - status = read_conn_packets(conn); + status = read_conn_packets(conn, &conn_error); if (status != ARES_SUCCESS) { return status; } - return read_answers(conn, now); + status = read_answers(conn, now); + if (status != ARES_SUCCESS) { + return status; + } + + if (conn_error) { + conn = ares_conn_from_fd(channel, read_fd); + if (conn != NULL) { + handle_conn_error(conn, ARES_TRUE, ARES_ECONNREFUSED); + } + } + + return ARES_SUCCESS; } /* If any queries have timed out, note the timeout and move them on. */ @@ -696,7 +773,8 @@ static ares_status_t process_timeouts(ares_channel_t *channel, const ares_timeval_t *now) { ares_slist_node_t *node; - ares_status_t status = ARES_SUCCESS; + ares_status_t status = ARES_SUCCESS; + ares_array_t *requeue = NULL; /* Just keep popping off the first as this list will re-sort as things come * and go. We don't want to try to rely on 'next' as some operation might @@ -714,14 +792,26 @@ static ares_status_t process_timeouts(ares_channel_t *channel, query->timeouts++; conn = query->conn; + /* Retire this connection for NEW queries. A timeout suggests packets are + * being dropped on it, so route new queries to a fresh source port while + * the in-flight queries here drain (it is cleaned up once idle). This is + * per-connection so a transient failure doesn't stop reuse of healthy + * connections to the same server. */ + conn->flags |= ARES_CONN_FLAG_NONEW; server_increment_failures(conn->server, query->using_tcp); - status = ares_requeue_query(query, now, ARES_ETIMEOUT, ARES_TRUE, NULL, - NULL); + status = + ares_requeue_query(query, now, ARES_ETIMEOUT, ARES_TRUE, NULL, &requeue); if (status == ARES_ENOMEM) { goto done; } } done: + /* Flush requeue - re-dispatch retries and invoke deferred callbacks + * iteratively and safely */ + if (ares_flush_requeue(channel, now, &requeue) == ARES_ENOMEM) { + status = ARES_ENOMEM; + } + if (status == ARES_ENOMEM) { return ARES_ENOMEM; } @@ -871,7 +961,7 @@ static ares_status_t process_answer(ares_channel_t *channel, if (issue_might_be_edns(query->query, rdnsrec)) { status = rewrite_without_edns(query); if (status != ARES_SUCCESS) { - end_query(channel, server, query, status, NULL, NULL); + end_query(channel, server, query, status, NULL, requeue); goto cleanup; } @@ -975,6 +1065,11 @@ ares_status_t ares_requeue_query(ares_query_t *query, const ares_timeval_t *now, { ares_channel_t *channel = query->channel; size_t max_tries = ares_slist_len(channel->servers) * channel->tries; + ares_server_t *server = NULL; + + if (query->conn != NULL) { + server = query->conn->server; + } ares_query_remove_from_conn(query); @@ -999,7 +1094,7 @@ ares_status_t ares_requeue_query(ares_query_t *query, const ares_timeval_t *now, query->error_status = ARES_ETIMEOUT; } - end_query(channel, NULL, query, query->error_status, dnsrec, requeue); + end_query(channel, server, query, query->error_status, dnsrec, requeue); return ARES_ETIMEOUT; } @@ -1102,22 +1197,23 @@ static void ares_probe_failed_server(ares_channel_t *channel, } /* Select the first server with failures to retry that has passed the retry - * timeout and doesn't already have a pending probe */ + * timeout and doesn't already have a pending probe. Skip the server the + * triggering query was just sent to since that query is already exercising + * it. */ ares_tvnow(&now); for (node = ares_slist_node_first(channel->servers); node != NULL; node = ares_slist_node_next(node)) { ares_server_t *node_val = ares_slist_node_val(node); - if (node_val != NULL && node_val->consec_failures > 0 && - !node_val->probe_pending && + if (node_val != NULL && node_val != server && + node_val->consec_failures > 0 && !node_val->probe_pending && ares_timedout(&now, &node_val->next_retry_time)) { probe_server = node_val; break; } } - /* Either nothing to probe or the query was enqueud to the same server - * we were going to probe. Do nothing. */ - if (probe_server == NULL || server == probe_server) { + /* Nothing to probe */ + if (probe_server == NULL) { return; } @@ -1148,7 +1244,12 @@ static size_t ares_calc_query_timeout(const ares_query_t *query, * retry from the last retry */ rounds = (query->try_count / num_servers); if (rounds > 0) { - timeplus <<= rounds; + if (rounds >= sizeof(timeplus) * CHAR_BIT || + timeplus > (SIZE_MAX >> rounds)) { + timeplus = SIZE_MAX; + } else { + timeplus <<= rounds; + } } if (channel->maxtimeout && timeplus > channel->maxtimeout) { @@ -1205,9 +1306,13 @@ static ares_conn_t *ares_fetch_connection(const ares_channel_t *channel, return NULL; } - /* If the associated server has failures, don't use it. It should be cleaned - * up later. */ - if (conn->server->consec_failures > 0) { + /* Don't hand new queries to a connection that has been retired (e.g. it saw + * a timeout). It keeps servicing its in-flight queries and is cleaned up + * once idle. Note this is a per-connection check: a server-wide failure + * counter must not be used here or a single transient failure would evict + * every (including healthy) connection to the server and spawn a new socket + * per query. */ + if (conn->flags & ARES_CONN_FLAG_NONEW) { return NULL; } @@ -1262,8 +1367,44 @@ static ares_status_t ares_conn_query_write(ares_conn_t *conn, return ares_conn_flush(conn); } +/* Public entrypoint. Establishes a requeue list and drives + * ares_send_query_int() plus any retries/deferred callbacks it produces + * iteratively, so a chain of retryable failures can never recurse until the + * stack is exhausted (#1043). */ ares_status_t ares_send_query(ares_server_t *requested_server, ares_query_t *query, const ares_timeval_t *now) +{ + ares_channel_t *channel = query->channel; + ares_array_t *requeue = NULL; + unsigned short qid = query->qid; + ares_status_t status; + + status = ares_send_query_int(requested_server, query, now, &requeue); + + /* Drain any retries/deferred callbacks this send produced. + * ares_flush_requeue() always fully processes and destroys the list (even on + * ENOMEM), and sends the empty-queue notification if needed. */ + if (ares_flush_requeue(channel, now, &requeue) == ARES_ENOMEM) { + status = ARES_ENOMEM; + } + + /* A retry may have been deferred (returning ARES_SUCCESS from the append) + * and then terminally failed while draining, in which case the query has + * been freed. Do not dereference 'query' here. If it is no longer tracked + * it ended, so don't report success to the caller (which would, e.g., cause + * ares_send_nolock() to write to a now-freed *qid). */ + if (status == ARES_SUCCESS && + ares_htable_szvp_get_direct(channel->queries_by_qid, qid) == NULL) { + status = ARES_ETIMEOUT; + } + + return status; +} + +static ares_status_t ares_send_query_int(ares_server_t *requested_server, + ares_query_t *query, + const ares_timeval_t *now, + ares_array_t **requeue) { ares_channel_t *channel = query->channel; ares_server_t *server; @@ -1286,14 +1427,16 @@ ares_status_t ares_send_query(ares_server_t *requested_server, } if (server == NULL) { - end_query(channel, server, query, ARES_ENOSERVER /* ? */, NULL, NULL); + end_query(channel, server, query, ARES_ENOSERVER /* ? */, NULL, requeue); return ARES_ENOSERVER; } - /* If a query is directed to a specific query, or the server chosen has - * failures, or the query is being retried, don't probe for downed servers */ - if (requested_server != NULL || server->consec_failures > 0 || - query->try_count != 0) { + /* If a query is directed to a specific server, or the query is being + * retried, don't probe for downed servers. Note that the chosen server + * having failures itself does NOT disable probing: when every server has + * failures (e.g. during an extended outage), probes are the only way a + * recovered server that sorts behind the current best can be noticed. */ + if (requested_server != NULL || query->try_count != 0) { probe_downed_server = ARES_FALSE; } @@ -1310,11 +1453,11 @@ ares_status_t ares_send_query(ares_server_t *requested_server, case ARES_ECONNREFUSED: case ARES_EBADFAMILY: server_increment_failures(server, query->using_tcp); - return ares_requeue_query(query, now, status, ARES_TRUE, NULL, NULL); + return ares_requeue_query(query, now, status, ARES_TRUE, NULL, requeue); /* Anything else is not retryable, likely ENOMEM */ default: - end_query(channel, server, query, status, NULL, NULL); + end_query(channel, server, query, status, NULL, requeue); return status; } } @@ -1328,7 +1471,7 @@ ares_status_t ares_send_query(ares_server_t *requested_server, case ARES_ENOMEM: /* Not retryable */ - end_query(channel, server, query, status, NULL, NULL); + end_query(channel, server, query, status, NULL, requeue); return status; /* These conditions are retryable as they are server-specific @@ -1336,7 +1479,7 @@ ares_status_t ares_send_query(ares_server_t *requested_server, case ARES_ECONNREFUSED: case ARES_EBADFAMILY: handle_conn_error(conn, ARES_TRUE, status); - status = ares_requeue_query(query, now, status, ARES_TRUE, NULL, NULL); + status = ares_requeue_query(query, now, status, ARES_TRUE, NULL, requeue); if (status == ARES_ETIMEOUT) { status = ARES_ECONNREFUSED; } @@ -1344,7 +1487,7 @@ ares_status_t ares_send_query(ares_server_t *requested_server, default: server_increment_failures(server, query->using_tcp); - status = ares_requeue_query(query, now, status, ARES_TRUE, NULL, NULL); + status = ares_requeue_query(query, now, status, ARES_TRUE, NULL, requeue); return status; } @@ -1355,12 +1498,12 @@ ares_status_t ares_send_query(ares_server_t *requested_server, ares_slist_node_destroy(query->node_queries_by_timeout); query->ts = *now; query->timeout = *now; - timeadd(&query->timeout, timeplus); + ares_timeval_add(&query->timeout, timeplus); query->node_queries_by_timeout = ares_slist_insert(channel->queries_by_timeout, query); if (!query->node_queries_by_timeout) { /* LCOV_EXCL_START: OutOfMemory */ - end_query(channel, server, query, ARES_ENOMEM, NULL, NULL); + end_query(channel, server, query, ARES_ENOMEM, NULL, requeue); return ARES_ENOMEM; /* LCOV_EXCL_STOP */ } @@ -1373,7 +1516,7 @@ ares_status_t ares_send_query(ares_server_t *requested_server, if (query->node_queries_to_conn == NULL) { /* LCOV_EXCL_START: OutOfMemory */ - end_query(channel, server, query, ARES_ENOMEM, NULL, NULL); + end_query(channel, server, query, ARES_ENOMEM, NULL, requeue); return ARES_ENOMEM; /* LCOV_EXCL_STOP */ } diff --git a/deps/cares/src/lib/ares_qcache.c b/deps/cares/src/lib/ares_qcache.c index 4050ff54bf1667..ad3bc83505af07 100644 --- a/deps/cares/src/lib/ares_qcache.c +++ b/deps/cares/src/lib/ares_qcache.c @@ -371,9 +371,11 @@ static ares_status_t ares_qcache_insert_int(ares_qcache_t *qcache, /* LCOV_EXCL_START: OutOfMemory */ fail: - if (entry != NULL && entry->key != NULL) { - ares_htable_strvp_remove(qcache->cache, entry->key); - ares_free(entry->key); + if (entry != NULL) { + if (entry->key != NULL) { + ares_htable_strvp_remove(qcache->cache, entry->key); + ares_free(entry->key); + } ares_free(entry); } return ARES_ENOMEM; diff --git a/deps/cares/src/lib/ares_socket.c b/deps/cares/src/lib/ares_socket.c index 516852a84abfb8..4ad3034021a0f7 100644 --- a/deps/cares/src/lib/ares_socket.c +++ b/deps/cares/src/lib/ares_socket.c @@ -188,6 +188,8 @@ ares_conn_err_t ares_socket_recvfrom(ares_channel_t *channel, ares_socket_t s, { ares_ssize_t rv; + *read_bytes = 0; + rv = channel->sock_funcs.arecvfrom(s, data, data_len, flags, from, from_len, channel->sock_func_cb_data); diff --git a/deps/cares/src/lib/ares_sysconfig.c b/deps/cares/src/lib/ares_sysconfig.c index 286db60328f45b..9e389c17672a1f 100644 --- a/deps/cares/src/lib/ares_sysconfig.c +++ b/deps/cares/src/lib/ares_sysconfig.c @@ -218,13 +218,16 @@ static ares_status_t ares_init_sysconfig_android(const ares_channel_t *channel, status = ares_sconfig_append_fromstr(channel, &sysconfig->sconfig, dns_servers[i], ARES_TRUE); if (status != ARES_SUCCESS) { - return status; + break; } } for (i = 0; i < num_servers; i++) { ares_free(dns_servers[i]); } ares_free(dns_servers); + if (status != ARES_SUCCESS) { + return status; + } } domains = ares_get_android_search_domains_list(); @@ -273,7 +276,7 @@ static ares_status_t * 3. if confstr(_CS_DOMAIN, ...) this is the domain name. Use this as * preference over anything else found. */ - ares_buf_t *buf = ares_buf_create(); + ares_buf_t *buf = NULL; unsigned char *data = NULL; size_t data_size = 0; ares_bool_t process_resolvconf = ARES_TRUE; @@ -330,7 +333,7 @@ static ares_status_t char domain[256]; size_t domain_len; - domain_len = confstr(_CS_DOMAIN, domain, sizeof(domain_len)); + domain_len = confstr(_CS_DOMAIN, domain, sizeof(domain)); if (domain_len != 0) { ares_strsplit_free(sysconfig->domains, sysconfig->ndomains); sysconfig->domains = ares_strsplit(domain, ", ", &sysconfig->ndomains); diff --git a/deps/cares/src/lib/ares_sysconfig_files.c b/deps/cares/src/lib/ares_sysconfig_files.c index a6c2a8e62bb34f..2caa3b200075b8 100644 --- a/deps/cares/src/lib/ares_sysconfig_files.c +++ b/deps/cares/src/lib/ares_sysconfig_files.c @@ -27,6 +27,8 @@ #include "ares_private.h" +#include + #ifdef HAVE_SYS_PARAM_H # include #endif @@ -170,8 +172,8 @@ static ares_status_t parse_sort(ares_buf_t *buf, struct apattern *pat) if (ares_str_isnum(maskstr)) { /* Numeric mask */ - int mask = atoi(maskstr); - if (mask < 0 || mask > 128) { + unsigned int mask; + if (!ares_str_parse_uint(maskstr, 128, &mask)) { return ARES_EBADSTR; } if (pat->addr.family == AF_INET && mask > 32) { @@ -340,12 +342,17 @@ static ares_status_t config_lookup(ares_sysconfig_t *sysconfig, ares_buf_t *buf, const char *value = lookups[i]; char ch; + /* AIX /etc/netsvc.conf uses address-family-suffixed tokens such as + * "bind4"/"bind6" and "local4"/"local6" in addition to the bare forms. */ if (ares_strcaseeq(value, "dns") || ares_strcaseeq(value, "bind") || + ares_strcaseeq(value, "bind4") || ares_strcaseeq(value, "bind6") || ares_strcaseeq(value, "resolv") || ares_strcaseeq(value, "resolve")) { ch = 'b'; } else if (ares_strcaseeq(value, "files") || ares_strcaseeq(value, "file") || - ares_strcaseeq(value, "local")) { + ares_strcaseeq(value, "local") || + ares_strcaseeq(value, "local4") || + ares_strcaseeq(value, "local6")) { ch = 'f'; } else { continue; @@ -401,20 +408,25 @@ static ares_status_t process_option(ares_sysconfig_t *sysconfig, key = kv[0]; if (num == 2) { - val = kv[1]; - valint = (unsigned int)strtoul(val, NULL, 10); + val = kv[1]; + if (!ares_str_parse_uint(val, UINT_MAX, &valint)) { + status = ARES_EBADSTR; + goto done; + } } if (ares_streq(key, "ndots")) { sysconfig->ndots = valint; } else if (ares_streq(key, "retrans") || ares_streq(key, "timeout")) { if (valint == 0) { - return ARES_EFORMERR; + status = ARES_EFORMERR; + goto done; } sysconfig->timeout_ms = valint * 1000; } else if (ares_streq(key, "retry") || ares_streq(key, "attempts")) { if (valint == 0) { - return ARES_EFORMERR; + status = ARES_EFORMERR; + goto done; } sysconfig->tries = valint; } else if (ares_streq(key, "rotate")) { diff --git a/deps/cares/src/lib/ares_sysconfig_win.c b/deps/cares/src/lib/ares_sysconfig_win.c index 94a3817de348bb..e0daf1103e2cec 100644 --- a/deps/cares/src/lib/ares_sysconfig_win.c +++ b/deps/cares/src/lib/ares_sysconfig_win.c @@ -114,56 +114,69 @@ static ares_bool_t get_REG_SZ(HKEY hKey, const WCHAR *leafKeyName, char **outptr /* Convert to UTF8 */ len = WideCharToMultiByte(CP_UTF8, 0, val, -1, NULL, 0, NULL, NULL); if (len == 0) { + ares_free(val); return ARES_FALSE; } *outptr = ares_malloc_zero((size_t)len + 1); + if (*outptr == NULL) { + ares_free(val); + return ARES_FALSE; + } if (WideCharToMultiByte(CP_UTF8, 0, val, -1, *outptr, len, NULL, NULL) == 0) { ares_free(*outptr); *outptr = NULL; + ares_free(val); return ARES_FALSE; } + ares_free(val); return ARES_TRUE; } -static void commanjoin(char **dst, const char * const src, const size_t len) +static ares_status_t sysconfig_commajoin(ares_buf_t *buf, const char *src, + ares_bool_t asciionly) { - char *newbuf; - size_t newsize; + ares_status_t status; - /* 1 for terminating 0 and 2 for , and terminating 0 */ - newsize = len + (*dst ? (ares_strlen(*dst) + 2) : 1); - newbuf = ares_realloc(*dst, newsize); - if (!newbuf) { - return; + if (buf == NULL) { + return ARES_ENOMEM; } - if (*dst == NULL) { - *newbuf = '\0'; + + if (src == NULL || *src == '\0') { + return ARES_SUCCESS; } - *dst = newbuf; - if (ares_strlen(*dst) != 0) { - strcat(*dst, ","); + + if (asciionly && !ares_str_isprint(src, ares_strlen(src))) { + return ARES_SUCCESS; } - strncat(*dst, src, len); -} -/* - * commajoin() - * - * RTF code. - */ -static void commajoin(char **dst, const char *src) -{ - commanjoin(dst, src, ares_strlen(src)); + if (ares_buf_len(buf) > 0) { + status = ares_buf_append_byte(buf, ','); + if (status != ARES_SUCCESS) { + return status; + } + } + + return ares_buf_append_str(buf, src); } -static void commajoin_asciionly(char **dst, const char *src) +/* Read a REG_SZ value and comma-append it (ASCII-only) to *buf. + * On allocation failure, destroys *buf and sets it to NULL. */ +static void reg_commajoin(ares_buf_t **buf, HKEY key, const WCHAR *leaf) { - if (!ares_str_isprint(src, ares_strlen(src))) { + char *p = NULL; + + if (*buf == NULL || !get_REG_SZ(key, leaf, &p)) { return; } - commanjoin(dst, src, ares_strlen(src)); + + if (sysconfig_commajoin(*buf, p, ARES_TRUE) != ARES_SUCCESS) { + ares_buf_destroy(*buf); + *buf = NULL; + } + + ares_free(p); } /* A structure to hold the string form of IPv4 and IPv6 addresses so we can @@ -494,8 +507,10 @@ static ares_bool_t get_DNS_Windows(char **outptr) /* Join them all into a single string, removing duplicates. */ { - size_t i; - for (i = 0; i < addressesIndex; ++i) { + size_t i; + ares_buf_t *buf = ares_buf_create(); + + for (i = 0; buf != NULL && i < addressesIndex; ++i) { size_t j; /* Look for this address text appearing previously in the results. */ for (j = 0; j < i; ++j) { @@ -505,10 +520,22 @@ static ares_bool_t get_DNS_Windows(char **outptr) } /* Iff we didn't emit this address already, emit it now. */ if (j == i) { - /* Add that to outptr (if we can). */ - commajoin(outptr, addresses[i].text); + /* Add that to buf (if we can). */ + if (sysconfig_commajoin(buf, addresses[i].text, ARES_FALSE) != + ARES_SUCCESS) { + ares_buf_destroy(buf); + buf = NULL; + break; + } } } + + if (buf != NULL && ares_buf_len(buf) == 0) { + ares_buf_destroy(buf); + buf = NULL; + } + + *outptr = ares_buf_finish_str(buf, NULL); } done: @@ -540,51 +567,46 @@ static ares_bool_t get_DNS_Windows(char **outptr) */ static ares_bool_t get_SuffixList_Windows(char **outptr) { - HKEY hKey; - HKEY hKeyEnum; - char keyName[256]; - DWORD keyNameBuffSize; - DWORD keyIdx = 0; - char *p = NULL; + HKEY hKey; + HKEY hKeyEnum; + char keyName[256]; + DWORD keyNameBuffSize; + DWORD keyIdx = 0; + ares_buf_t *buf = ares_buf_create(); *outptr = NULL; + if (buf == NULL) { + return ARES_FALSE; + } + /* 1. Global DNS Suffix Search List */ if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hKey) == ERROR_SUCCESS) { - get_REG_SZ(hKey, SEARCHLIST_KEY, outptr); - if (get_REG_SZ(hKey, DOMAIN_KEY, &p)) { - commajoin_asciionly(outptr, p); - ares_free(p); - p = NULL; - } + reg_commajoin(&buf, hKey, SEARCHLIST_KEY); + reg_commajoin(&buf, hKey, DOMAIN_KEY); RegCloseKey(hKey); } - if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NT_DNSCLIENT, 0, KEY_READ, &hKey) == - ERROR_SUCCESS) { - if (get_REG_SZ(hKey, SEARCHLIST_KEY, &p)) { - commajoin_asciionly(outptr, p); - ares_free(p); - p = NULL; - } + if (buf != NULL && + RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NT_DNSCLIENT, 0, KEY_READ, &hKey) == + ERROR_SUCCESS) { + reg_commajoin(&buf, hKey, SEARCHLIST_KEY); RegCloseKey(hKey); } /* 2. Connection Specific Search List composed of: * a. Primary DNS Suffix */ - if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_DNSCLIENT, 0, KEY_READ, &hKey) == - ERROR_SUCCESS) { - if (get_REG_SZ(hKey, PRIMARYDNSSUFFIX_KEY, &p)) { - commajoin_asciionly(outptr, p); - ares_free(p); - p = NULL; - } + if (buf != NULL && + RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_DNSCLIENT, 0, KEY_READ, &hKey) == + ERROR_SUCCESS) { + reg_commajoin(&buf, hKey, PRIMARYDNSSUFFIX_KEY); RegCloseKey(hKey); } /* b. Interface SearchList, Domain, DhcpDomain */ - if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY "\\" INTERFACES_KEY, 0, + if (buf != NULL && + RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY "\\" INTERFACES_KEY, 0, KEY_READ, &hKey) == ERROR_SUCCESS) { for (;;) { keyNameBuffSize = sizeof(keyName); @@ -596,27 +618,26 @@ static ares_bool_t get_SuffixList_Windows(char **outptr) ERROR_SUCCESS) { continue; } - /* p can be comma separated (SearchList) */ - if (get_REG_SZ(hKeyEnum, SEARCHLIST_KEY, &p)) { - commajoin_asciionly(outptr, p); - ares_free(p); - p = NULL; - } - if (get_REG_SZ(hKeyEnum, DOMAIN_KEY, &p)) { - commajoin_asciionly(outptr, p); - ares_free(p); - p = NULL; - } - if (get_REG_SZ(hKeyEnum, DHCPDOMAIN_KEY, &p)) { - commajoin_asciionly(outptr, p); - ares_free(p); - p = NULL; - } + /* SearchList can be comma separated */ + reg_commajoin(&buf, hKeyEnum, SEARCHLIST_KEY); + reg_commajoin(&buf, hKeyEnum, DOMAIN_KEY); + reg_commajoin(&buf, hKeyEnum, DHCPDOMAIN_KEY); RegCloseKey(hKeyEnum); + + if (buf == NULL) { + break; + } } RegCloseKey(hKey); } + if (ares_buf_len(buf) == 0) { + ares_buf_destroy(buf); + buf = NULL; + } + + *outptr = ares_buf_finish_str(buf, NULL); + return *outptr != NULL ? ARES_TRUE : ARES_FALSE; } diff --git a/deps/cares/src/lib/ares_timeout.c b/deps/cares/src/lib/ares_timeout.c index 0d2fdcff21f657..dbd5cf443d68f2 100644 --- a/deps/cares/src/lib/ares_timeout.c +++ b/deps/cares/src/lib/ares_timeout.c @@ -32,6 +32,17 @@ #endif +void ares_timeval_add(ares_timeval_t *now, size_t millisecs) +{ + now->sec += (ares_int64_t)millisecs / 1000; + now->usec += (unsigned int)((millisecs % 1000) * 1000); + + if (now->usec >= 1000000) { + now->sec += now->usec / 1000000; + now->usec %= 1000000; + } +} + void ares_timeval_remaining(ares_timeval_t *remaining, const ares_timeval_t *now, const ares_timeval_t *tout) diff --git a/deps/cares/src/lib/ares_update_servers.c b/deps/cares/src/lib/ares_update_servers.c index 70a9381499f8c2..f8d441accf23e1 100644 --- a/deps/cares/src/lib/ares_update_servers.c +++ b/deps/cares/src/lib/ares_update_servers.c @@ -27,6 +27,8 @@ */ #include "ares_private.h" +#include + #ifdef HAVE_ARPA_INET_H # include #endif @@ -234,7 +236,10 @@ static ares_status_t parse_nameserver_uri(ares_buf_t *buf, sconfig->tcp_port = sconfig->udp_port; port = ares_uri_get_query_key(uri, "tcpport"); if (port != NULL) { - sconfig->tcp_port = (unsigned short)atoi(port); + if (!ares_parse_port(port, &sconfig->tcp_port, ARES_TRUE)) { + status = ARES_EBADSTR; + goto done; + } } done: @@ -352,7 +357,9 @@ static ares_status_t parse_nameserver(ares_buf_t *buf, ares_sconfig_t *sconfig) return status; } - sconfig->udp_port = (unsigned short)atoi(portstr); + if (!ares_parse_port(portstr, &sconfig->udp_port, ARES_TRUE)) { + return ARES_EBADSTR; + } sconfig->tcp_port = sconfig->udp_port; } @@ -398,7 +405,13 @@ static ares_status_t ares_sconfig_linklocal(const ares_channel_t *channel, if (ares_str_isnum(ll_iface)) { char ifname[IF_NAMESIZE] = ""; - ll_scope = (unsigned int)atoi(ll_iface); + + /* The interface identifier is all digits but may not fit in an + * unsigned int; parse with the range-checked helper rather than atoi(), + * whose behavior on overflow is undefined. */ + if (!ares_str_parse_uint(ll_iface, UINT_MAX, &ll_scope)) { + return ARES_ENOTFOUND; + } if (channel->sock_funcs.aif_indextoname == NULL || channel->sock_funcs.aif_indextoname(ll_scope, ifname, sizeof(ifname), channel->sock_func_cb_data) == @@ -967,7 +980,8 @@ ares_status_t ares_in_addr_to_sconfig_llist(const struct in_addr *servers, sizeof(sconfig->addr.addr.addr4)); if (ares_llist_insert_last(s, sconfig) == NULL) { - goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ + ares_free(sconfig); /* LCOV_EXCL_LINE: OutOfMemory */ + goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ } } diff --git a/deps/cares/src/lib/dsa/ares_array.c b/deps/cares/src/lib/dsa/ares_array.c index c421d5c5f670bd..e6bce6e41db91e 100644 --- a/deps/cares/src/lib/dsa/ares_array.c +++ b/deps/cares/src/lib/dsa/ares_array.c @@ -171,14 +171,19 @@ void *ares_array_finish(ares_array_t *arr, size_t *num_members) ares_status_t ares_array_set_size(ares_array_t *arr, size_t size) { - void *temp; + void *temp; + size_t rounded_size; if (arr == NULL || size == 0 || size < arr->cnt) { return ARES_EFORMERR; } /* Always operate on powers of 2 */ - size = ares_round_up_pow2(size); + rounded_size = ares_round_up_pow2(size); + if (rounded_size < size) { + return ARES_ENOMEM; /* rounding wrapped around */ + } + size = rounded_size; if (size < ARES__ARRAY_MIN) { size = ARES__ARRAY_MIN; @@ -189,8 +194,8 @@ ares_status_t ares_array_set_size(ares_array_t *arr, size_t size) return ARES_SUCCESS; } - temp = ares_realloc_zero(arr->arr, arr->alloc_cnt * arr->member_size, - size * arr->member_size); + temp = + ares_realloc_zero_array(arr->arr, arr->alloc_cnt, size, arr->member_size); if (temp == NULL) { return ARES_ENOMEM; } @@ -295,7 +300,7 @@ ares_status_t ares_array_insertdata_first(ares_array_t *arr, ares_status_t status; void *ptr = NULL; - status = ares_array_insert_last(&ptr, arr); + status = ares_array_insert_first(&ptr, arr); if (status != ARES_SUCCESS) { return status; } @@ -362,6 +367,16 @@ ares_status_t ares_array_claim_at(void *dest, size_t dest_size, } arr->cnt--; + + /* When empty, reset offset so a later insert doesn't compact from an + * out-of-range index (offset can reach alloc_cnt after front claims). + * This also protects ares_array_finish(), which has the same + * move(0, offset) and would otherwise fail on an offset == alloc_cnt + * array. */ + if (arr->cnt == 0) { + arr->offset = 0; + } + return ARES_SUCCESS; } diff --git a/deps/cares/src/lib/dsa/ares_htable.c b/deps/cares/src/lib/dsa/ares_htable.c index f76b67cae9a668..d6ac7a065a6b02 100644 --- a/deps/cares/src/lib/dsa/ares_htable.c +++ b/deps/cares/src/lib/dsa/ares_htable.c @@ -150,6 +150,10 @@ const void **ares_htable_all_buckets(const ares_htable_t *htable, size_t *num) *num = 0; + if (htable->num_keys == 0) { + return NULL; + } + out = ares_malloc_zero(sizeof(*out) * htable->num_keys); if (out == NULL) { return NULL; /* LCOV_EXCL_LINE */ @@ -172,7 +176,7 @@ const void **ares_htable_all_buckets(const ares_htable_t *htable, size_t *num) * We are doing "hash & (size - 1)" since we are guaranteeing a power of * 2 for size. This is equivalent to "hash % size", but should be more * efficient */ -#define HASH_IDX(h, key) h->hash(key, h->seed) & (h->size - 1) +#define HASH_IDX(h, key) ((h)->hash((key), (h)->seed) & ((h)->size - 1)) static ares_llist_node_t *ares_htable_find(const ares_htable_t *htable, unsigned int idx, const void *key) diff --git a/deps/cares/src/lib/dsa/ares_htable_dict.c b/deps/cares/src/lib/dsa/ares_htable_dict.c index 93d7a20137c8db..cda7a49c79d05d 100644 --- a/deps/cares/src/lib/dsa/ares_htable_dict.c +++ b/deps/cares/src/lib/dsa/ares_htable_dict.c @@ -132,6 +132,7 @@ ares_bool_t ares_htable_dict_insert(ares_htable_dict_t *htable, const char *key, fail: if (bucket) { + ares_free(bucket->key); ares_free(bucket->val); ares_free(bucket); } @@ -223,6 +224,7 @@ char **ares_htable_dict_keys(const ares_htable_dict_t *htable, size_t *num) fail: *num = 0; + ares_free(buckets); ares_free_array(out, cnt, ares_free); return NULL; } diff --git a/deps/cares/src/lib/dsa/ares_llist.c b/deps/cares/src/lib/dsa/ares_llist.c index 6bd7de269a43fb..ce1a31149401f1 100644 --- a/deps/cares/src/lib/dsa/ares_llist.c +++ b/deps/cares/src/lib/dsa/ares_llist.c @@ -103,7 +103,10 @@ static void ares_llist_attach_at(ares_llist_t *list, case ARES__LLIST_INSERT_BEFORE: node->next = at; node->prev = at->prev; - at->prev = node; + if (at->prev) { + at->prev->next = node; + } + at->prev = node; break; } if (list->tail == NULL) { diff --git a/deps/cares/src/lib/event/ares_event_configchg.c b/deps/cares/src/lib/event/ares_event_configchg.c index add729574e46c3..d73c4862058c97 100644 --- a/deps/cares/src/lib/event/ares_event_configchg.c +++ b/deps/cares/src/lib/event/ares_event_configchg.c @@ -207,12 +207,14 @@ void ares_event_configchg_destroy(ares_event_configchg_t *configchg) # ifdef HAVE_REGISTERWAITFORSINGLEOBJECT if (configchg->regip4_wait != NULL) { - UnregisterWait(configchg->regip4_wait); + /* Use INVALID_HANDLE_VALUE to wait for any running callback to complete + * before returning, preventing use-after-free of configchg */ + UnregisterWaitEx(configchg->regip4_wait, INVALID_HANDLE_VALUE); configchg->regip4_wait = NULL; } if (configchg->regip6_wait != NULL) { - UnregisterWait(configchg->regip6_wait); + UnregisterWaitEx(configchg->regip6_wait, INVALID_HANDLE_VALUE); configchg->regip6_wait = NULL; } diff --git a/deps/cares/src/lib/event/ares_event_wake_pipe.c b/deps/cares/src/lib/event/ares_event_wake_pipe.c index cd1534bbbd586c..2ea72c29415230 100644 --- a/deps/cares/src/lib/event/ares_event_wake_pipe.c +++ b/deps/cares/src/lib/event/ares_event_wake_pipe.c @@ -117,7 +117,13 @@ static void ares_pipeevent_signal(const ares_event_t *e) } p = e->data; - (void)write(p->filedes[1], "1", 1); + /* Best-effort wakeup. A failed or short write is harmless: it can only + * happen when the pipe buffer is already full, which means a wakeup is + * already pending. The result is consumed to satisfy warn_unused_result + * (a plain (void) cast does not silence it under _FORTIFY_SOURCE). */ + if (write(p->filedes[1], "1", 1) < 0) { + return; + } } static void ares_pipeevent_cb(ares_event_thread_t *e, ares_socket_t fd, diff --git a/deps/cares/src/lib/event/ares_event_win32.c b/deps/cares/src/lib/event/ares_event_win32.c index d7d1d65735082d..d558b6930a66f2 100644 --- a/deps/cares/src/lib/event/ares_event_win32.c +++ b/deps/cares/src/lib/event/ares_event_win32.c @@ -707,6 +707,9 @@ static ares_bool_t ares_evsys_win32_event_add(ares_event_t *event) ares_bool_t rc = ARES_FALSE; ed = ares_malloc_zero(sizeof(*ed)); + if (ed == NULL) { + return ARES_FALSE; /* LCOV_EXCL_LINE: OutOfMemory */ + } ed->event = event; ed->socket = event->fd; ed->base_socket = ARES_SOCKET_BAD; diff --git a/deps/cares/src/lib/include/ares_mem.h b/deps/cares/src/lib/include/ares_mem.h index 371cd4266dc720..d980923e5817a2 100644 --- a/deps/cares/src/lib/include/ares_mem.h +++ b/deps/cares/src/lib/include/ares_mem.h @@ -34,5 +34,8 @@ CARES_EXTERN void ares_free(void *ptr); CARES_EXTERN void *ares_malloc_zero(size_t size); CARES_EXTERN void *ares_realloc_zero(void *ptr, size_t orig_size, size_t new_size); +CARES_EXTERN void *ares_malloc_zero_array(size_t num, size_t size); +CARES_EXTERN void *ares_realloc_zero_array(void *ptr, size_t orig_num, + size_t new_num, size_t size); #endif diff --git a/deps/cares/src/lib/include/ares_str.h b/deps/cares/src/lib/include/ares_str.h index 4ee339510bf026..c7fdf4fc4c8059 100644 --- a/deps/cares/src/lib/include/ares_str.h +++ b/deps/cares/src/lib/include/ares_str.h @@ -60,6 +60,23 @@ CARES_EXTERN size_t ares_strcpy(char *dest, const char *src, size_t dest_size); CARES_EXTERN ares_bool_t ares_str_isnum(const char *str); CARES_EXTERN ares_bool_t ares_str_isalnum(const char *str); +/*! Parse a base-10 unsigned integer from a NULL-terminated string. Unlike + * atoi(), this rejects overflow, leading or trailing garbage (a sign, + * whitespace, or non-digit characters), and any value that does not fit + * within the caller-provided maximum. + * + * \param[in] str String to parse. May be NULL or empty, in which case + * ARES_FALSE is returned. + * \param[in] max Largest value considered valid. Values above UINT_MAX + * are capped to UINT_MAX since out is an unsigned int. + * \param[out] out On success, receives the parsed value. Untouched on + * failure. + * \return ARES_TRUE if a valid in-range integer was parsed, ARES_FALSE + * otherwise. + */ +CARES_EXTERN ares_bool_t ares_str_parse_uint(const char *str, unsigned long max, + unsigned int *out); + CARES_EXTERN void ares_str_ltrim(char *str); CARES_EXTERN void ares_str_rtrim(char *str); CARES_EXTERN void ares_str_trim(char *str); diff --git a/deps/cares/src/lib/legacy/ares_expand_name.c b/deps/cares/src/lib/legacy/ares_expand_name.c index 72668f4cb60a07..ee1d70076be815 100644 --- a/deps/cares/src/lib/legacy/ares_expand_name.c +++ b/deps/cares/src/lib/legacy/ares_expand_name.c @@ -69,7 +69,7 @@ ares_status_t ares_expand_name_validated(const unsigned char *encoded, } start_len = ares_buf_len(buf); - status = ares_dns_name_parse(buf, s, is_hostname); + status = ares_dns_name_parse(buf, s, is_hostname, ARES_TRUE); if (status != ARES_SUCCESS) { goto done; } diff --git a/deps/cares/src/lib/legacy/ares_parse_ns_reply.c b/deps/cares/src/lib/legacy/ares_parse_ns_reply.c index fc9ab9219d399c..7013ce28b90131 100644 --- a/deps/cares/src/lib/legacy/ares_parse_ns_reply.c +++ b/deps/cares/src/lib/legacy/ares_parse_ns_reply.c @@ -97,12 +97,12 @@ int ares_parse_ns_reply(const unsigned char *abuf, int alen_int, } /* Preallocate the maximum number + 1 */ - hostent->h_aliases = ares_malloc((ancount + 1) * sizeof(*hostent->h_aliases)); + hostent->h_aliases = + ares_malloc_zero_array(ancount + 1, sizeof(*hostent->h_aliases)); if (hostent->h_aliases == NULL) { status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ goto done; /* LCOV_EXCL_LINE: OutOfMemory */ } - memset(hostent->h_aliases, 0, (ancount + 1) * sizeof(*hostent->h_aliases)); for (i = 0; i < ancount; i++) { const ares_dns_rr_t *rr = diff --git a/deps/cares/src/lib/legacy/ares_parse_ptr_reply.c b/deps/cares/src/lib/legacy/ares_parse_ptr_reply.c index 0e52f9db09bbc7..a275f3802ffc08 100644 --- a/deps/cares/src/lib/legacy/ares_parse_ptr_reply.c +++ b/deps/cares/src/lib/legacy/ares_parse_ptr_reply.c @@ -88,12 +88,12 @@ ares_status_t ares_parse_ptr_reply_dnsrec(const ares_dns_record_t *dnsrec, hostent->h_length = (HOSTENT_LENGTH_TYPE)addrlen; /* Preallocate the maximum number + 1 */ - hostent->h_aliases = ares_malloc((ancount + 1) * sizeof(*hostent->h_aliases)); + hostent->h_aliases = + ares_malloc_zero_array(ancount + 1, sizeof(*hostent->h_aliases)); if (hostent->h_aliases == NULL) { status = ARES_ENOMEM; goto done; } - memset(hostent->h_aliases, 0, (ancount + 1) * sizeof(*hostent->h_aliases)); /* Cycle through answers */ diff --git a/deps/cares/src/lib/record/ares_dns_mapping.c b/deps/cares/src/lib/record/ares_dns_mapping.c index 5a3ec28abf130b..38dedd438c6dd5 100644 --- a/deps/cares/src/lib/record/ares_dns_mapping.c +++ b/deps/cares/src/lib/record/ares_dns_mapping.c @@ -147,7 +147,7 @@ ares_bool_t ares_dns_class_isvalid(ares_dns_class_t qclass, switch (qclass) { case ARES_CLASS_IN: case ARES_CLASS_CHAOS: - case ARES_CLASS_HESOID: + case ARES_CLASS_HESIOD: case ARES_CLASS_NONE: return ARES_TRUE; case ARES_CLASS_ANY: @@ -228,7 +228,7 @@ const char *ares_dns_rec_type_tostr(ares_dns_rec_type_t type) case ARES_REC_TYPE_CAA: return "CAA"; case ARES_REC_TYPE_RAW_RR: - return "RAWRR"; + return "RAW_RR"; } return "UNKNOWN"; } @@ -240,7 +240,7 @@ const char *ares_dns_class_tostr(ares_dns_class_t qclass) return "IN"; case ARES_CLASS_CHAOS: return "CH"; - case ARES_CLASS_HESOID: + case ARES_CLASS_HESIOD: return "HS"; case ARES_CLASS_ANY: return "ANY"; @@ -670,7 +670,7 @@ ares_bool_t ares_dns_class_fromstr(ares_dns_class_t *qclass, const char *str) } list[] = { { "IN", ARES_CLASS_IN }, { "CH", ARES_CLASS_CHAOS }, - { "HS", ARES_CLASS_HESOID }, + { "HS", ARES_CLASS_HESIOD }, { "NONE", ARES_CLASS_NONE }, { "ANY", ARES_CLASS_ANY }, { NULL, 0 } diff --git a/deps/cares/src/lib/record/ares_dns_multistring.c b/deps/cares/src/lib/record/ares_dns_multistring.c index 44fcaccd65bb6a..a2a7adc4e4527f 100644 --- a/deps/cares/src/lib/record/ares_dns_multistring.c +++ b/deps/cares/src/lib/record/ares_dns_multistring.c @@ -227,7 +227,9 @@ const unsigned char *ares_dns_multistring_combined(ares_dns_multistring_t *strs, strs->cache_str = (unsigned char *)ares_buf_finish_str(buf, &strs->cache_str_len); - if (strs->cache_str != NULL) { + if (strs->cache_str == NULL) { + ares_buf_destroy(buf); + } else { strs->cache_invalidated = ARES_FALSE; } *len = strs->cache_str_len; diff --git a/deps/cares/src/lib/record/ares_dns_name.c b/deps/cares/src/lib/record/ares_dns_name.c index a9b92e03ca9353..ffcaf5e110d547 100644 --- a/deps/cares/src/lib/record/ares_dns_name.c +++ b/deps/cares/src/lib/record/ares_dns_name.c @@ -25,6 +25,18 @@ */ #include "ares_private.h" +/* RFC 1035 3.1 limits a name to 255 octets. We track presentation length + * (label octets plus one separator before each label after the first), which is + * up to ~2 octets looser than the strict wire limit and so never rejects a + * compliant name. Shared by the read and write paths. */ +#define ARES_MAX_NAME_PRESENTATION_LEN 255 + +/* A name of <= 255 octets holds at most 128 labels, so it can never legitimately + * require more than that many compression-pointer jumps. Bounding the number of + * indirections stops a name built purely from pointers (which never adds label + * bytes, so the length cap never fires) from being walked without limit. */ +#define ARES_MAX_INDIRS 128 + typedef struct { char *name; size_t name_len; @@ -48,10 +60,18 @@ static ares_status_t ares_nameoffset_create(ares_llist_t **list, ares_nameoffset_t *off = NULL; if (list == NULL || name == NULL || ares_strlen(name) == 0 || - ares_strlen(name) > 255) { + ares_strlen(name) > ARES_MAX_NAME_PRESENTATION_LEN) { return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */ } + /* Don't record a name as a compression target if it can't be referenced by + * a pointer. DNS name compression offsets are only 14 bits (RFC 1035 + * 4.1.4), so a name positioned beyond 0x3FFF would have its offset + * truncated when written, producing a pointer to the wrong location. */ + if (idx > 0x3FFF) { + return ARES_SUCCESS; + } + if (*list == NULL) { *list = ares_llist_create(ares_nameoffset_free); } @@ -65,7 +85,12 @@ static ares_status_t ares_nameoffset_create(ares_llist_t **list, return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ } - off->name = ares_strdup(name); + off->name = ares_strdup(name); + if (off->name == NULL) { + status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */ + goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ + } + off->name_len = ares_strlen(off->name); off->idx = idx; @@ -335,7 +360,8 @@ static ares_status_t ares_split_dns_name(ares_array_t *labels, } /* Can't exceed maximum (unescaped) length */ - if (ares_array_len(labels) && total_len + ares_array_len(labels) - 1 > 255) { + if (ares_array_len(labels) && + total_len + ares_array_len(labels) - 1 > ARES_MAX_NAME_PRESENTATION_LEN) { status = ARES_EBADNAME; goto done; } @@ -419,6 +445,9 @@ ares_status_t ares_dns_name_write(ares_buf_t *buf, ares_llist_t **list, /* Output name compression offset jump */ if (off != NULL) { + /* off->idx is guaranteed to fit in 14 bits: ares_nameoffset_create() + * refuses to record offsets beyond 0x3FFF, so the mask below never + * actually truncates. */ unsigned short u16 = (unsigned short)0xC000 | (unsigned short)(off->idx & 0x3FFF); status = ares_buf_append_be16(buf, u16); @@ -531,13 +560,16 @@ static ares_status_t ares_fetch_dnsname_into_buf(ares_buf_t *buf, } ares_status_t ares_dns_name_parse(ares_buf_t *buf, char **name, - ares_bool_t is_hostname) + ares_bool_t is_hostname, + ares_bool_t allow_compression) { size_t save_offset = 0; unsigned char c; ares_status_t status; ares_buf_t *namebuf = NULL; size_t label_start = ares_buf_get_position(buf); + size_t name_len = 0; + size_t indir = 0; if (buf == NULL) { return ARES_EFORMERR; @@ -588,6 +620,13 @@ ares_status_t ares_dns_name_parse(ares_buf_t *buf, char **name, */ size_t offset = (size_t)((c & 0x3F) << 8); + /* Some RR types (e.g. SRV) do not permit name compression within their + * RDATA. Reject a compression pointer when it is not allowed. */ + if (!allow_compression) { + status = ARES_EBADNAME; + goto fail; + } + /* Fetch second byte of the redirect length */ status = ares_buf_fetch_bytes(buf, &c, 1); if (status != ARES_SUCCESS) { @@ -609,6 +648,16 @@ ares_status_t ares_dns_name_parse(ares_buf_t *buf, char **name, goto fail; } + /* Bound the number of indirections. A name made purely of pointers never + * adds label bytes, so the length cap below can't stop it; the + * strictly-decreasing rule alone still allows thousands of jumps per name. + * No legitimate <= 255 octet name needs more than 128 labels/jumps. */ + indir++; + if (indir > ARES_MAX_INDIRS) { + status = ARES_EBADNAME; + goto fail; + } + /* First time we make a jump, save the current position */ if (save_offset == 0) { save_offset = ares_buf_get_position(buf); @@ -632,6 +681,20 @@ ares_status_t ares_dns_name_parse(ares_buf_t *buf, char **name, /* New label */ + /* RFC 1035 3.1 limits a name to 255 octets. Enforce it during + * decompression so labels reached through a chain of pointers can't expand a + * single name without bound. Track the presentation length (label data plus + * the separator that precedes each label after the first), matching + * ares_split_dns_name() on the write side. */ + if (name_len) { + name_len++; + } + name_len += c; + if (name_len > ARES_MAX_NAME_PRESENTATION_LEN) { + status = ARES_EBADNAME; + goto fail; + } + /* Labels are separated by periods */ if (ares_buf_len(namebuf) != 0 && name != NULL) { status = ares_buf_append_byte(namebuf, '.'); diff --git a/deps/cares/src/lib/record/ares_dns_parse.c b/deps/cares/src/lib/record/ares_dns_parse.c index 0c545d7aa18ada..9dc28e92d84247 100644 --- a/deps/cares/src/lib/record/ares_dns_parse.c +++ b/deps/cares/src/lib/record/ares_dns_parse.c @@ -46,8 +46,14 @@ static ares_status_t ares_dns_parse_and_set_dns_name(ares_buf_t *buf, { ares_status_t status; char *name = NULL; + /* Only RR types defined in RFC1035 may use name compression within their + * RDATA (RFC3597). Reject compression pointers for any other type (e.g. + * SRV per RFC2782) to match the write-side policy and avoid following + * pointers that a non-understanding nameserver could not have rewritten. */ + ares_bool_t allow_compression = + ares_dns_rec_allow_name_comp(ares_dns_rr_get_type(rr)); - status = ares_dns_name_parse(buf, &name, is_hostname); + status = ares_dns_name_parse(buf, &name, is_hostname, allow_compression); if (status != ARES_SUCCESS) { return status; } @@ -514,6 +520,7 @@ static ares_status_t ares_dns_parse_rr_opt(ares_buf_t *buf, ares_dns_rr_t *rr, status = ares_dns_rr_set_opt_own(rr, ARES_RR_OPT_OPTIONS, opt, val, len); if (status != ARES_SUCCESS) { + ares_free(val); return status; } } @@ -607,6 +614,7 @@ static ares_status_t ares_dns_parse_rr_svcb(ares_buf_t *buf, ares_dns_rr_t *rr, status = ares_dns_rr_set_opt_own(rr, ARES_RR_SVCB_PARAMS, opt, val, len); if (status != ARES_SUCCESS) { + ares_free(val); return status; } } @@ -658,6 +666,7 @@ static ares_status_t ares_dns_parse_rr_https(ares_buf_t *buf, ares_dns_rr_t *rr, status = ares_dns_rr_set_opt_own(rr, ARES_RR_HTTPS_PARAMS, opt, val, len); if (status != ARES_SUCCESS) { + ares_free(val); return status; } } @@ -765,6 +774,12 @@ static ares_status_t ares_dns_parse_rr_raw_rr(ares_buf_t *buf, ares_status_t status; unsigned char *bytes = NULL; + /* Can't fail */ + status = ares_dns_rr_set_u16(rr, ARES_RR_RAW_RR_TYPE, raw_type); + if (status != ARES_SUCCESS) { + return status; + } + if (rdlength == 0) { return ARES_SUCCESS; } @@ -774,13 +789,6 @@ static ares_status_t ares_dns_parse_rr_raw_rr(ares_buf_t *buf, return status; } - /* Can't fail */ - status = ares_dns_rr_set_u16(rr, ARES_RR_RAW_RR_TYPE, raw_type); - if (status != ARES_SUCCESS) { - ares_free(bytes); - return status; - } - status = ares_dns_rr_set_bin_own(rr, ARES_RR_RAW_RR_DATA, bytes, rdlength); if (status != ARES_SUCCESS) { ares_free(bytes); @@ -920,30 +928,6 @@ static ares_status_t ares_dns_parse_header(ares_buf_t *buf, unsigned int flags, (*dnsrec)->raw_rcode = rcode; - if (*ancount > 0) { - status = - ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_ANSWER, *ancount); - if (status != ARES_SUCCESS) { - goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ - } - } - - if (*nscount > 0) { - status = - ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_AUTHORITY, *nscount); - if (status != ARES_SUCCESS) { - goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ - } - } - - if (*arcount > 0) { - status = - ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_ADDITIONAL, *arcount); - if (status != ARES_SUCCESS) { - goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ - } - } - return ARES_SUCCESS; fail: @@ -1032,7 +1016,7 @@ static ares_status_t ares_dns_parse_qd(ares_buf_t *buf, */ /* Name */ - status = ares_dns_name_parse(buf, &name, ARES_FALSE); + status = ares_dns_name_parse(buf, &name, ARES_FALSE, ARES_TRUE); if (status != ARES_SUCCESS) { goto done; } @@ -1103,7 +1087,7 @@ static ares_status_t ares_dns_parse_rr(ares_buf_t *buf, unsigned int flags, */ /* Name */ - status = ares_dns_name_parse(buf, &name, ARES_FALSE); + status = ares_dns_name_parse(buf, &name, ARES_FALSE, ARES_TRUE); if (status != ARES_SUCCESS) { goto done; } @@ -1208,6 +1192,8 @@ static ares_status_t ares_dns_parse_buf(ares_buf_t *buf, unsigned int flags, ares_dns_record_t **dnsrec) { ares_status_t status; + size_t total_rr_count; + const size_t min_rr_wire_len = 11; unsigned short qdcount; unsigned short ancount; unsigned short nscount; @@ -1268,6 +1254,35 @@ static ares_status_t ares_dns_parse_buf(ares_buf_t *buf, unsigned int flags, } } + total_rr_count = (size_t)ancount + (size_t)nscount + (size_t)arcount; + if (total_rr_count > ares_buf_len(buf) / min_rr_wire_len) { + status = ARES_EBADRESP; + goto fail; + } + + if (ancount > 0) { + status = ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_ANSWER, ancount); + if (status != ARES_SUCCESS) { + goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ + } + } + + if (nscount > 0) { + status = + ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_AUTHORITY, nscount); + if (status != ARES_SUCCESS) { + goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ + } + } + + if (arcount > 0) { + status = + ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_ADDITIONAL, arcount); + if (status != ARES_SUCCESS) { + goto fail; /* LCOV_EXCL_LINE: OutOfMemory */ + } + } + /* Parse Answers */ for (i = 0; i < ancount; i++) { status = ares_dns_parse_rr(buf, flags, ARES_SECTION_ANSWER, *dnsrec); @@ -1292,6 +1307,22 @@ static ares_status_t ares_dns_parse_buf(ares_buf_t *buf, unsigned int flags, } } + /* RFC 6891 6.1.1: a message MUST NOT contain more than one OPT RR. Reject + * any response carrying multiple OPT records in the additional section. */ + { + size_t rr_cnt = ares_dns_record_rr_cnt(*dnsrec, ARES_SECTION_ADDITIONAL); + size_t opt_cnt = 0; + size_t j; + for (j = 0; j < rr_cnt; j++) { + const ares_dns_rr_t *rr = + ares_dns_record_rr_get_const(*dnsrec, ARES_SECTION_ADDITIONAL, j); + if (ares_dns_rr_get_type(rr) == ARES_REC_TYPE_OPT && ++opt_cnt > 1) { + status = ARES_EBADRESP; + goto fail; + } + } + } + /* Finalize rcode now that if we have OPT it is processed */ if (!ares_dns_rcode_isvalid((*dnsrec)->raw_rcode)) { (*dnsrec)->rcode = ARES_RCODE_SERVFAIL; diff --git a/deps/cares/src/lib/record/ares_dns_record.c b/deps/cares/src/lib/record/ares_dns_record.c index ec0dfbd13c49f3..2c0dadd084ca66 100644 --- a/deps/cares/src/lib/record/ares_dns_record.c +++ b/deps/cares/src/lib/record/ares_dns_record.c @@ -929,7 +929,7 @@ ares_status_t ares_dns_rr_add_abin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, ares_dns_datatype_t datatype = ares_dns_rr_key_datatype(key); ares_bool_t is_nullterm = (datatype == ARES_DATATYPE_ABINP) ? ARES_TRUE : ARES_FALSE; - size_t alloclen = is_nullterm ? len + 1 : len; + size_t alloclen; unsigned char *temp; ares_dns_multistring_t **strs; @@ -937,6 +937,15 @@ ares_status_t ares_dns_rr_add_abin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, return ARES_EFORMERR; } + if (val == NULL && len != 0) { + return ARES_EFORMERR; + } + + if (is_nullterm && len == SIZE_MAX) { + return ARES_ENOMEM; + } + alloclen = is_nullterm ? len + 1 : len; + strs = ares_dns_rr_data_ptr(dns_rr, key, NULL); if (strs == NULL) { return ARES_EFORMERR; @@ -954,7 +963,9 @@ ares_status_t ares_dns_rr_add_abin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, return ARES_ENOMEM; } - memcpy(temp, val, len); + if (len != 0) { + memcpy(temp, val, len); + } /* NULL-term ABINP */ if (is_nullterm) { @@ -1237,14 +1248,32 @@ ares_status_t ares_dns_rr_set_bin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, (datatype == ARES_DATATYPE_BINP || datatype == ARES_DATATYPE_ABINP) ? ARES_TRUE : ARES_FALSE; - size_t alloclen = is_nullterm ? len + 1 : len; - unsigned char *temp = ares_malloc(alloclen); + size_t alloclen; + unsigned char *temp; + + if (datatype != ARES_DATATYPE_BIN && datatype != ARES_DATATYPE_BINP && + datatype != ARES_DATATYPE_ABINP) { + return ARES_EFORMERR; + } + + if (val == NULL && len != 0) { + return ARES_EFORMERR; + } + + if (is_nullterm && len == SIZE_MAX) { + return ARES_ENOMEM; + } + alloclen = is_nullterm ? len + 1 : len; + + temp = ares_malloc(alloclen); if (temp == NULL) { return ARES_ENOMEM; } - memcpy(temp, val, len); + if (len != 0) { + memcpy(temp, val, len); + } /* NULL-term BINP */ if (is_nullterm) { @@ -1400,12 +1429,23 @@ ares_status_t ares_dns_rr_set_opt(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, ares_status_t status; if (val != NULL) { - temp = ares_malloc(val_len + 1); + size_t alloclen; + + if (val_len == SIZE_MAX) { + return ARES_ENOMEM; + } + alloclen = val_len + 1; + + temp = ares_malloc(alloclen); if (temp == NULL) { return ARES_ENOMEM; } - memcpy(temp, val, val_len); + if (val_len != 0) { + memcpy(temp, val, val_len); + } temp[val_len] = 0; + } else if (val_len != 0) { + return ARES_EFORMERR; } status = ares_dns_rr_set_opt_own(dns_rr, key, opt, temp, val_len); diff --git a/deps/cares/src/lib/str/ares_buf.c b/deps/cares/src/lib/str/ares_buf.c index 63acc6cf7714d3..25f0372e4dbdcc 100644 --- a/deps/cares/src/lib/str/ares_buf.c +++ b/deps/cares/src/lib/str/ares_buf.c @@ -139,6 +139,7 @@ static ares_status_t ares_buf_ensure_space(ares_buf_t *buf, size_t needed_size) { size_t remaining_size; size_t alloc_size; + size_t total_required; unsigned char *ptr; if (buf == NULL) { @@ -151,9 +152,20 @@ static ares_status_t ares_buf_ensure_space(ares_buf_t *buf, size_t needed_size) /* When calling ares_buf_finish_str() we end up adding a null terminator, * so we want to ensure the size is always sufficient for this as we don't - * want an ARES_ENOMEM at that point */ + * want an ARES_ENOMEM at that point. + */ + if (buf->data_len >= SIZE_MAX - 1) { + return ARES_ENOMEM; + } + needed_size++; + if (needed_size > SIZE_MAX - buf->data_len) { + return ARES_ENOMEM; + } + + total_required = buf->data_len + needed_size; + /* No need to do an expensive move operation, we have enough to just append */ remaining_size = buf->alloc_buf_len - buf->data_len; if (remaining_size >= needed_size) { @@ -177,9 +189,11 @@ static ares_status_t ares_buf_ensure_space(ares_buf_t *buf, size_t needed_size) /* Increase allocation by powers of 2 */ do { - alloc_size <<= 1; - remaining_size = alloc_size - buf->data_len; - } while (remaining_size < needed_size); + if (alloc_size > SIZE_MAX >> 1) { + return ARES_ENOMEM; + } + alloc_size <<= 1; + } while (alloc_size < total_required); ptr = ares_realloc(buf->alloc_buf, alloc_size); if (ptr == NULL) { @@ -1111,7 +1125,7 @@ ares_status_t ares_buf_replace(ares_buf_t *buf, const unsigned char *srch, size_t processed_len = 0; ares_status_t status; - if (buf->alloc_buf == NULL || srch == NULL || srch_size == 0 || + if (buf == NULL || buf->alloc_buf == NULL || srch == NULL || srch_size == 0 || (rplc == NULL && rplc_size != 0)) { return ARES_EFORMERR; } @@ -1131,7 +1145,7 @@ ares_status_t ares_buf_replace(ares_buf_t *buf, const unsigned char *srch, /* Store the offset this was found because our actual pointer might be * switched out from under us by the call to ensure_space() if the * replacement pattern is larger than the search pattern */ - found_offset = (size_t)(ptr - (size_t)(buf->alloc_buf + buf->offset)); + found_offset = (size_t)(ptr - buf->alloc_buf) - buf->offset; if (rplc_size > srch_size) { status = ares_buf_ensure_space(buf, rplc_size - srch_size); if (status != ARES_SUCCESS) { @@ -1262,17 +1276,15 @@ static ares_status_t } done: - if (status != ARES_SUCCESS) { - ares_buf_destroy(binbuf); + if (status == ARES_SUCCESS && bin != NULL) { + size_t mylen = 0; + /* NOTE: we use ares_buf_finish_str() here as we guarantee NULL + * Termination even though we are technically returning binary data. + */ + *bin = (unsigned char *)ares_buf_finish_str(binbuf, &mylen); + *bin_len = mylen; } else { - if (bin != NULL) { - size_t mylen = 0; - /* NOTE: we use ares_buf_finish_str() here as we guarantee NULL - * Termination even though we are technically returning binary data. - */ - *bin = (unsigned char *)ares_buf_finish_str(binbuf, &mylen); - *bin_len = mylen; - } + ares_buf_destroy(binbuf); } return status; diff --git a/deps/cares/src/lib/str/ares_str.c b/deps/cares/src/lib/str/ares_str.c index 0eda1ab9f15783..0819dc57849049 100644 --- a/deps/cares/src/lib/str/ares_str.c +++ b/deps/cares/src/lib/str/ares_str.c @@ -28,6 +28,9 @@ #include "ares_private.h" #include "ares_str.h" +#include +#include + #ifdef HAVE_STDINT_H # include #endif @@ -125,6 +128,57 @@ ares_bool_t ares_str_isnum(const char *str) return ARES_TRUE; } +ares_bool_t ares_str_parse_uint(const char *str, unsigned long max, + unsigned int *out) +{ + char *end = NULL; + unsigned long val; + + /* Require a leading digit so strtoul()'s tolerance of a sign or leading + * whitespace (e.g. "-1" wrapping to UINT_MAX) can't slip through here. This + * also rejects NULL and empty strings. */ + if (str == NULL || out == NULL || !ares_isdigit(*str)) { + return ARES_FALSE; + } + + /* out is unsigned int, so a max above UINT_MAX would let strtoul's result + * truncate silently on assignment. Cap it. */ + if (max > UINT_MAX) { + max = UINT_MAX; + } + + errno = 0; + val = strtoul(str, &end, 10); + if (errno == ERANGE || *end != '\0' || val > max) { + return ARES_FALSE; + } + + *out = (unsigned int)val; + return ARES_TRUE; +} + +ares_bool_t ares_parse_port(const char *str, unsigned short *port, + ares_bool_t allow_zero) +{ + unsigned int val; + + if (port == NULL) { + return ARES_FALSE; + } + + if (!ares_str_parse_uint(str, 65535UL, &val)) { + return ARES_FALSE; + } + + if (!allow_zero && val == 0) { + return ARES_FALSE; + } + + *port = (unsigned short)val; + + return ARES_TRUE; +} + ares_bool_t ares_str_isalnum(const char *str) { size_t i; diff --git a/deps/cares/src/lib/util/ares_iface_ips.c b/deps/cares/src/lib/util/ares_iface_ips.c index c5f507f87e1476..66d1fba84d4bce 100644 --- a/deps/cares/src/lib/util/ares_iface_ips.c +++ b/deps/cares/src/lib/util/ares_iface_ips.c @@ -25,6 +25,8 @@ */ #include "ares_private.h" +#include + #ifdef USE_WINSOCK # include # include @@ -256,12 +258,12 @@ ares_iface_ip_flags_t ares_iface_ips_get_flags(const ares_iface_ips_t *ips, const ares_iface_ip_t *ip; if (ips == NULL) { - return 0; + return ARES_IFACE_IP_NONE; } ip = ares_array_at_const(ips->ips, idx); if (ip == NULL) { - return 0; + return ARES_IFACE_IP_NONE; } return ip->flags; @@ -329,6 +331,8 @@ static char *wcharp_to_charp(const wchar_t *in) static ares_bool_t name_match(const char *name, const char *adapter_name, unsigned int ll_scope) { + unsigned int scope; + if (name == NULL || *name == 0) { return ARES_TRUE; } @@ -337,7 +341,7 @@ static ares_bool_t name_match(const char *name, const char *adapter_name, return ARES_TRUE; } - if (ares_str_isnum(name) && (unsigned int)atoi(name) == ll_scope) { + if (ares_str_parse_uint(name, UINT_MAX, &scope) && scope == ll_scope) { return ARES_TRUE; } @@ -376,7 +380,7 @@ static ares_status_t ares_iface_ips_enumerate(ares_iface_ips_t *ips, for (address = addresses; address != NULL; address = address->Next) { IP_ADAPTER_UNICAST_ADDRESS *ipaddr = NULL; - ares_iface_ip_flags_t addrflag = 0; + ares_iface_ip_flags_t addrflag = ARES_IFACE_IP_NONE; char ifname[64] = ""; # if defined(HAVE_CONVERTINTERFACEINDEXTOLUID) && \ @@ -477,7 +481,7 @@ static ares_status_t ares_iface_ips_enumerate(ares_iface_ips_t *ips, } for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) { - ares_iface_ip_flags_t addrflag = 0; + ares_iface_ip_flags_t addrflag = ARES_IFACE_IP_NONE; struct ares_addr addr; unsigned char netmask = 0; unsigned int ll_scope = 0; @@ -500,20 +504,28 @@ static ares_status_t ares_iface_ips_enumerate(ares_iface_ips_t *ips, addr.family = AF_INET; memcpy(&addr.addr.addr4, &sockaddr_in->sin_addr, sizeof(addr.addr.addr4)); /* netmask */ - sockaddr_in = (struct sockaddr_in *)((void *)ifa->ifa_netmask); - netmask = count_addr_bits((const void *)&sockaddr_in->sin_addr, 4); + if (ifa->ifa_netmask != NULL) { + sockaddr_in = (struct sockaddr_in *)((void *)ifa->ifa_netmask); + netmask = count_addr_bits((const void *)&sockaddr_in->sin_addr, 4); + } else { + netmask = 32; + } } else if (ifa->ifa_addr->sa_family == AF_INET6) { const struct sockaddr_in6 *sockaddr_in6 = (const struct sockaddr_in6 *)((void *)ifa->ifa_addr); addr.family = AF_INET6; memcpy(&addr.addr.addr6, &sockaddr_in6->sin6_addr, sizeof(addr.addr.addr6)); - /* netmask */ - sockaddr_in6 = (struct sockaddr_in6 *)((void *)ifa->ifa_netmask); - netmask = count_addr_bits((const void *)&sockaddr_in6->sin6_addr, 16); # ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID ll_scope = sockaddr_in6->sin6_scope_id; # endif + /* netmask */ + if (ifa->ifa_netmask != NULL) { + sockaddr_in6 = (struct sockaddr_in6 *)((void *)ifa->ifa_netmask); + netmask = count_addr_bits((const void *)&sockaddr_in6->sin6_addr, 16); + } else { + netmask = 128; + } } else { /* unknown */ continue; diff --git a/deps/cares/src/lib/util/ares_iface_ips.h b/deps/cares/src/lib/util/ares_iface_ips.h index f22e09046a065b..ec2353448fb0f5 100644 --- a/deps/cares/src/lib/util/ares_iface_ips.h +++ b/deps/cares/src/lib/util/ares_iface_ips.h @@ -28,6 +28,7 @@ /*! Flags for interface ip addresses. */ typedef enum { + ARES_IFACE_IP_NONE = 0, /*!< No flags set / unspecified */ ARES_IFACE_IP_V4 = 1 << 0, /*!< IPv4 address. During enumeration if * this flag is set ARES_IFACE_IP_V6 * is not, will only enumerate v4 diff --git a/deps/cares/src/lib/util/ares_math.c b/deps/cares/src/lib/util/ares_math.c index 1106bf6bf151f8..3513146c3ddc4a 100644 --- a/deps/cares/src/lib/util/ares_math.c +++ b/deps/cares/src/lib/util/ares_math.c @@ -42,7 +42,7 @@ static unsigned int ares_round_up_pow2_u32(unsigned int n) return n; } -static ares_int64_t ares_round_up_pow2_u64(ares_int64_t n) +static ares_uint64_t ares_round_up_pow2_u64(ares_uint64_t n) { /* NOTE: if already a power of 2, will return itself, not the next */ n--; @@ -73,7 +73,7 @@ ares_bool_t ares_is_64bit(void) size_t ares_round_up_pow2(size_t n) { if (ares_is_64bit()) { - return (size_t)ares_round_up_pow2_u64((ares_int64_t)n); + return (size_t)ares_round_up_pow2_u64((ares_uint64_t)n); } return (size_t)ares_round_up_pow2_u32((unsigned int)n); @@ -156,3 +156,12 @@ unsigned char ares_count_bits_u8(unsigned char x) static const unsigned char lookup[256] = { B6(0), B6(1), B6(1), B6(2) }; return lookup[x]; } + +ares_bool_t ares_size_t_mul_overflow(size_t a, size_t b, size_t *res) +{ + if (a > 0 && b > SIZE_MAX / a) { + return ARES_TRUE; + } + *res = a * b; + return ARES_FALSE; +} diff --git a/deps/cares/src/lib/util/ares_math.h b/deps/cares/src/lib/util/ares_math.h index 3b60b00bdbb6ce..76e1e488370984 100644 --- a/deps/cares/src/lib/util/ares_math.h +++ b/deps/cares/src/lib/util/ares_math.h @@ -50,4 +50,9 @@ size_t ares_count_digits(size_t n); size_t ares_count_hexdigits(size_t n); unsigned char ares_count_bits_u8(unsigned char x); +/*! Multiply two size_t values, checking for overflow. On success writes the + * product to *res and returns ARES_FALSE. On overflow returns ARES_TRUE and + * leaves *res untouched. */ +ares_bool_t ares_size_t_mul_overflow(size_t a, size_t b, size_t *res); + #endif diff --git a/deps/cares/src/lib/util/ares_threads.c b/deps/cares/src/lib/util/ares_threads.c index ab0b51afb70577..b27b7ebd70005f 100644 --- a/deps/cares/src/lib/util/ares_threads.c +++ b/deps/cares/src/lib/util/ares_threads.c @@ -563,8 +563,7 @@ ares_status_t ares_queue_wait_empty(ares_channel_t *channel, int timeout_ms) if (timeout_ms >= 0) { ares_tvnow(&tout); - tout.sec += (ares_int64_t)(timeout_ms / 1000); - tout.usec += (unsigned int)(timeout_ms % 1000) * 1000; + ares_timeval_add(&tout, (size_t)timeout_ms); } ares_thread_mutex_lock(channel->lock); diff --git a/deps/cares/src/lib/util/ares_time.h b/deps/cares/src/lib/util/ares_time.h index c6eaf97366379e..ecb721de188719 100644 --- a/deps/cares/src/lib/util/ares_time.h +++ b/deps/cares/src/lib/util/ares_time.h @@ -39,6 +39,7 @@ ares_bool_t ares_timedout(const ares_timeval_t *now, const ares_timeval_t *check); void ares_tvnow(ares_timeval_t *now); +void ares_timeval_add(ares_timeval_t *now, size_t millisecs); void ares_timeval_remaining(ares_timeval_t *remaining, const ares_timeval_t *now, const ares_timeval_t *tout); diff --git a/deps/cares/src/lib/util/ares_uri.c b/deps/cares/src/lib/util/ares_uri.c index 04bad0074a79e2..97f3f3f542a7cf 100644 --- a/deps/cares/src/lib/util/ares_uri.c +++ b/deps/cares/src/lib/util/ares_uri.c @@ -1174,6 +1174,7 @@ static ares_status_t ares_uri_parse_hostport(ares_uri_t *uri, ares_buf_t *buf) unsigned char b; char host[256]; char port[6]; + unsigned short parsed_port; size_t len; ares_status_t status; @@ -1242,11 +1243,11 @@ static ares_status_t ares_uri_parse_hostport(ares_uri_t *uri, ares_buf_t *buf) } port[len] = 0; - if (!ares_str_isnum(port)) { + if (!ares_parse_port(port, &parsed_port, ARES_TRUE)) { return ARES_EBADSTR; } - status = ares_uri_set_port(uri, (unsigned short)atoi(port)); + status = ares_uri_set_port(uri, parsed_port); if (status != ARES_SUCCESS) { return status; } diff --git a/deps/cares/src/tools/adig.c b/deps/cares/src/tools/adig.c index fce210a8053578..29f359a39287c1 100644 --- a/deps/cares/src/tools/adig.c +++ b/deps/cares/src/tools/adig.c @@ -1162,12 +1162,12 @@ static ares_bool_t read_cmdline(int argc, const char * const *argv, /* skip prefix */ if (dig_options[opt].prefix != 0) { nameptr++; - } - - /* Negated option if it has a 'no' prefix */ - if (ares_streq_max(nameptr, "no", 2)) { - is_true = ARES_FALSE; - nameptr += 2; + /* Negated option if it has a 'no' prefix */ + if (dig_options[opt].prefix == '+' && + ares_streq_max(nameptr, "no", 2)) { + is_true = ARES_FALSE; + nameptr += 2; + } } if (dig_options[opt].separator != 0) { diff --git a/deps/cares/src/tools/ahost.c b/deps/cares/src/tools/ahost.c index 7d1d4a86dc7a2d..67b5677cad6e25 100644 --- a/deps/cares/src/tools/ahost.c +++ b/deps/cares/src/tools/ahost.c @@ -44,6 +44,13 @@ #include "ares_str.h" +#define RV_OK 0 /* Success */ +#define RV_SYSERR 1 /* Internal system failure */ +#define RV_MISUSE 2 /* Misuse (command line) */ +#define RV_FAIL 3 /* Resolution failure */ +static int final_rv = RV_OK; + + static void callback(void *arg, int status, int timeouts, struct hostent *host); static void ai_callback(void *arg, int status, int timeouts, struct ares_addrinfo *result); diff --git a/deps/crates/crates.gyp b/deps/crates/crates.gyp index 5c1dc9d782cbfe..ede5bf788bc760 100644 --- a/deps/crates/crates.gyp +++ b/deps/crates/crates.gyp @@ -2,6 +2,7 @@ 'variables': { 'cargo%': 'cargo', 'cargo_vendor_dir': './vendor', + 'temporal_capi_dir': 'temporal_capi', 'cargo_rust_target%': '', }, 'conditions': [ @@ -120,7 +121,7 @@ ], 'direct_dependent_settings': { 'include_dirs': [ - '<(cargo_vendor_dir)/temporal_capi/bindings/cpp', + '<(cargo_vendor_dir)/<(temporal_capi_dir)/bindings/cpp', ], }, }, diff --git a/deps/googletest/include/gtest/internal/gtest-port.h b/deps/googletest/include/gtest/internal/gtest-port.h index b607e0adee74f4..650a04558c03ba 100644 --- a/deps/googletest/include/gtest/internal/gtest-port.h +++ b/deps/googletest/include/gtest/internal/gtest-port.h @@ -2411,9 +2411,7 @@ using StringView = ::std::string_view; #define GTEST_INTERNAL_HAS_STRING_VIEW 0 #endif -#if (defined(__cpp_lib_three_way_comparison) || \ - (GTEST_INTERNAL_HAS_INCLUDE() && \ - GTEST_INTERNAL_CPLUSPLUS_LANG >= 201907L)) +#if defined(__cpp_lib_three_way_comparison) #define GTEST_INTERNAL_HAS_COMPARE_LIB 1 #else #define GTEST_INTERNAL_HAS_COMPARE_LIB 0 diff --git a/deps/googletest/src/gtest.cc b/deps/googletest/src/gtest.cc index ac90786a091b51..b38f551e036f76 100644 --- a/deps/googletest/src/gtest.cc +++ b/deps/googletest/src/gtest.cc @@ -6732,6 +6732,12 @@ static const char kColorEncodedHelpMessage[] = "recreate_environments_when_repeating@D\n" " Sets up and tears down the global test environment on each repeat\n" " of the test.\n" + " @G--" GTEST_FLAG_PREFIX_ + "fail_fast@D\n" + " Stop running tests after the first failure.\n" + " @G--" GTEST_FLAG_PREFIX_ + "fail_if_no_test_linked@D\n" + " Fail if no test is linked into the test program.\n" "\n" "Test Output:\n" " @G--" GTEST_FLAG_PREFIX_ @@ -6744,6 +6750,9 @@ static const char kColorEncodedHelpMessage[] = "print_time=0@D\n" " Don't print the elapsed time of each test.\n" " @G--" GTEST_FLAG_PREFIX_ + "print_utf8=0@D\n" + " Don't print UTF-8 characters as text.\n" + " @G--" GTEST_FLAG_PREFIX_ "output=@Y(@Gjson@Y|@Gxml@Y)[@G:@YDIRECTORY_PATH@G" GTEST_PATH_SEP_ "@Y|@G:@YFILE_PATH]@D\n" " Generate a JSON or XML report in the given directory or with the " @@ -6760,6 +6769,9 @@ static const char kColorEncodedHelpMessage[] = " @G--" GTEST_FLAG_PREFIX_ "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n" " Set the default death test style.\n" + " @G--" GTEST_FLAG_PREFIX_ + "death_test_use_fork@D\n" + " Use fork() instead of clone() to spawn death test child processes.\n" #endif // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS " @G--" GTEST_FLAG_PREFIX_ "break_on_failure@D\n" @@ -6772,6 +6784,9 @@ static const char kColorEncodedHelpMessage[] = "catch_exceptions=0@D\n" " Do not report exceptions as test failures. Instead, allow them\n" " to crash the program or throw a pop-up (on Windows).\n" + " @G--" GTEST_FLAG_PREFIX_ + "stack_trace_depth=@Y[NUMBER]@D\n" + " Maximum number of stack frames to print when an assertion fails.\n" "\n" "Except for @G--" GTEST_FLAG_PREFIX_ "list_tests@D, you can alternatively set " diff --git a/deps/icu-small/source/data/in/icudt78l.dat.bz2 b/deps/icu-small/source/data/in/icudt78l.dat.bz2 index 100dcc6f6776a9..7ee362b0bb175b 100644 Binary files a/deps/icu-small/source/data/in/icudt78l.dat.bz2 and b/deps/icu-small/source/data/in/icudt78l.dat.bz2 differ diff --git a/deps/libffi/ChangeLog b/deps/libffi/ChangeLog index f2d63988dcf70a..0dde93e6adad9e 100644 --- a/deps/libffi/ChangeLog +++ b/deps/libffi/ChangeLog @@ -1,3 +1,953 @@ +commit 5c1c43091ed611fdea774374355eb938c73a9157 +Author: Anthony Green +Date: Fri Jul 10 09:50:53 2026 -0400 + + Prepare for 3.7.1 + + Bump version to 3.7.1 and libtool -version-info to 12:1:4 (revision + bump; no ABI change). See the README for the change list. + + Co-Authored-By: Claude Fable 5 + +commit aaeaafb04a8335bea93b2873ca9a2d01107737eb +Author: Anthony Green +Date: Fri Jul 10 09:24:36 2026 -0400 + + testsuite: Make closure_thiscall_fastcall_pop portable across compilers + + The i386 esp-balance shim faulted on Android i686 (clang, -O2): it read + the closure code pointer through an esp-relative memory operand after + manually moving esp, and it did not 16-byte align the stack for the + call, so the -O2-built closure body faulted on aligned SSE. + + Read every operand into a register while esp is still at its incoming + value, 16-byte align the stack at the call per the i386 psABI, avoid ebx + so it works under -fPIC, and return the delta via memory. Verified with + gcc and clang at -O0 and -O2: passes with the fix, still catches the + under-pop without it. + + Co-Authored-By: Claude Fable 5 + +commit ebe306becb167937ead4332290868e041d0c08a7 +Author: Anthony Green +Date: Fri Jul 10 08:54:39 2026 -0400 + + x86: Fix i386 THISCALL/FASTCALL closure stack-pop accounting + + For THISCALL and FASTCALL, ffi_closure_inner force-bumps narg_reg to 2 + when an argument is a 64-bit integer or a struct, so that following + integer arguments are placed on the stack (the Issue #434 rule). The + closure return path then computed the callee stack pop as + cif->bytes - narg_reg * 4, which discounts register slots that were + never used once narg_reg has been forced, under-popping the stack. + + For example FASTCALL void(uint64_t) has cif->bytes == 8 with the uint64 + placed on the stack, but the formula yields a pop of 0 instead of 8; a + callee-clean call site that does not re-sync ESP from a frame pointer is + then left with the argument bytes in place of its return address. + + Encode the pop as the number of bytes actually consumed from the + incoming stack (argp - stack, dir == 1 for these ABIs), which equals the + old formula in the non-forced cases and is correct in the forced ones. + + Adds closure_thiscall_fastcall_pop.c (i386/GNU), which invokes the + generated closure through a minimal callee-clean call site and checks + ESP is balanced; without this fix the imbalance is 8 (FASTCALL uint64) + or 4 (THISCALL this+uint64). + + Co-Authored-By: Claude Fable 5 + +commit a2ef91c79f4f193dd1e828f615c818fb6bcaff0d +Author: Anthony Green +Date: Fri Jul 10 08:20:39 2026 -0400 + + aarch64: Fix argument slab under-budget for large by-value structs + + On AArch64, composites larger than 16 bytes (that are not HFAs) are + passed by invisible reference. ffi_call copies each payload into the + argument slab from the top (next_struct_area, growing down) and, once + X0-X7 are exhausted, spills the by-ref pointer into the same slab from + the bottom (the NSAA, growing up). The generic prep_cif accounting in + cif->bytes only charges the payload copy, not the extra 8-byte pointer + slot, so with enough large structs the two regions collide: a later + payload copy overwrites an already-spilled pointer, and the callee then + receives a corrupt pointer for a by-value argument. + + Reserve an additional 8 bytes in ffi_prep_cif_machdep for each large + by-reference struct argument so the copy and spill regions can never + overlap. + + Adds many_large_structs.c, which passes sixteen 32-byte structs by + value; it crashes without this fix and passes with it. + + Co-Authored-By: Claude Fable 5 + +commit 25283b0d812b6729299a21a1c02433bc291174e9 +Merge: e87b59f5 665c5c00 +Author: Anthony Green +Date: Fri Jul 10 08:22:39 2026 -0400 + + Merge pull request #997 from libffi/windows-arm64-ci + + Add Windows ARM64 (MSVC) CI; fix latent msvcc.sh and testsuite bugs it exposed + +commit 665c5c00f2f492e199a1c9e01bda57a82f4440ef +Author: Anthony Green +Date: Fri Jul 10 07:46:24 2026 -0400 + + testsuite: Pass MSVC warning suppressions in go.exp + + Same latent issue as closure.exp: the Go closure tests ran with no + MSVC warning options, so ffitest.h's benign C4005 PRI-macro + redefinition warnings count as excess errors. Latent until the + msvcc.sh -E fix let the FFI_GO_CLOSURES feature probe succeed under + MSVC; the execution tests themselves pass on both x86 MSVC jobs. + Mirror the call.exp/closure.exp warning-suppression block. + + Co-Authored-By: Claude Fable 5 + +commit 2e897db821a43068e3851a414bd47b2b5592d403 +Author: Anthony Green +Date: Fri Jul 10 07:25:53 2026 -0400 + + testsuite: Skip closure_loc_fn0 memcmp check under trampoline tables + + Now that closure_loc_fn0.c actually executes, it fails on Apple + aarch64: with FFI_EXEC_TRAMPOLINE_TABLE, codeloc points at a + trampoline table entry rather than a copy of the closure, so the + memcmp sanity check is invalid there -- the same reason it is already + skipped for static trampolines. fficonfig.h (included by ffitest.h) + provides the macro. + + Co-Authored-By: Claude Fable 5 + +commit 15b9abc239a1a2f6964a4cfc92f8fb78b3475d37 +Author: Anthony Green +Date: Fri Jul 10 07:19:28 2026 -0400 + + ci: Add Windows ARM64 Visual C++ to the MSVC build matrix + + Build and test on GitHub's windows-11-arm runners. Cygwin and the + amd64_arm64 cross tools (cl, armasm64) are x64-hosted and run under + the runner's x64 emulation; the ARM64 binaries they produce execute + natively, so the full testsuite runs (784 passes, 0 failures). This + is the first CI coverage for the win64_armasm.S closure trampolines. + + The matrix entries grow runner/mflag/pkg/rcedit_arch parameters; the + existing x86 job names and release artifact names are unchanged. + Release tags now also publish ARM64 MSVC binaries + (libffi--arm64-msvc-binaries). + + Replaces the temporary winarm64.yml iteration workflow. + + Co-Authored-By: Claude Fable 5 + +commit e4435739c82106cf13336bf26da99a03281848a0 +Author: Anthony Green +Date: Fri Jul 10 06:58:17 2026 -0400 + + testsuite: Actually run closure_loc_fn0; fix msvcc.sh -S + + closure_loc_fn0.c is the only test in the suite without a dg-do + directive, so DejaGnu has been defaulting to its compile-only action + on every platform -- the ffi_closure_alloc/ffi_prep_closure_loc path + it exists to exercise was never executed. Add the missing + /* { dg-do run } */. + + The compile-only default also exposed msvcc.sh's broken -S handling: + it mapped -S to -FAs alone, which emits a listing but still runs the + link step, failing with unresolved externals since compile-only + invocations pass no libraries. Map -S to a true compile-to-assembly: + -c -FAs with the listing written to the -o target. + + Co-Authored-By: Claude Fable 5 + +commit bf2fa49b6dbe68dac021c02ee3deddb343ec3541 +Author: Anthony Green +Date: Fri Jul 10 06:36:26 2026 -0400 + + testsuite: Pass MSVC warning suppressions to closures C tests + + closure.exp defines additional_options with the same -wd warning + suppressions call.exp uses, but only passed them to the C++ tests; + the C tests ran with "". Under MSVC the benign C4005/C4305/C4477 + warnings then count as excess errors and fail every C test's compile + check. This was latent until the previous commit made the + FFI_CLOSURES feature probe work under msvcc.sh, allowing the closures + suite to run on MSVC at all. + + Co-Authored-By: Claude Fable 5 + +commit c2ace700754b6e63f07efdec39fc8c09ed960d63 +Author: Anthony Green +Date: Fri Jul 10 06:11:00 2026 -0400 + + msvcc.sh: Handle -E (preprocess) so DejaGnu feature tests work + + The testsuite's libffi_feature_test probes compile a snippet with + "-E -o " and treat any compiler output as failure. msvcc.sh + had no -E handling: cl's preprocessed text went to stdout, where the + awk diagnostics filter passed through every line containing the + string "warning" -- including ffi.h's own #pragma warning lines -- + and cl printed the source file name to stderr. The probes therefore + always failed under msvcc.sh, silently marking the entire closures + suite (99 tests) and the bhaible callback tests (80) UNSUPPORTED on + every MSVC CI job. + + Recognize -E, write the preprocessed output to the -o target, and + swallow cl's stderr banner so feature probes see clean output. + + Co-Authored-By: Claude Fable 5 + +commit e994c8a22d6bc480cd13c9daa2abaedf42627f88 +Author: Anthony Green +Date: Fri Jul 10 05:49:48 2026 -0400 + + ci: Add Windows ARM64 Visual C++ job (iteration branch) + + Build and test libffi on GitHub's windows-11-arm runners using + msvcc.sh -marm64 (cl + armasm64 via the amd64_arm64 cross tools, + running under x64 emulation; the resulting ARM64 binaries execute + natively). msvcc.sh already understands -marm64. + + This is a temporary standalone workflow scoped to the + windows-arm64-ci branch so the job can be iterated on without + triggering the full CI matrix; it will be folded into build.yml + once green. + + Co-Authored-By: Claude Fable 5 + +commit e87b59f53f3879cb254a4c331fd0d2c221d6ea73 +Author: Anthony Green +Date: Fri Jul 10 05:40:57 2026 -0400 + + aarch64: Fix clang-cl link failure for HFA helper functions + + clang-cl defines both __clang__ and _MSC_VER. Since the build system + detects clang before MSVC, it sets MSVC=0 and builds sysv.S rather + than win64_armasm.S. But ffi.c gated its C implementations of + extend_hfa_type and compress_hfa_type on !defined(_MSC_VER), so under + clang-cl neither implementation was built and linking failed. + + Gate on defined(_MSC_VER) && !defined(__clang__) instead: clang-cl + supports GCC-style extended inline asm, so the C implementations work + there. Also replace ssize_t (POSIX-only, absent on Windows) with + ptrdiff_t in extend_hfa_type now that it compiles for MSVC targets. + + Fixes #996 + + Co-Authored-By: Claude Fable 5 + +commit cacaf519159668bce9fcbab64082bc85c277e89d +Author: Anthony Green +Date: Thu Jul 9 21:34:47 2026 -0400 + + x86-64: build generic ffi_call_plan fallback on Windows x86-64 + + The ffi_call_plan_* API has two providers: the accelerated x86-64 SysV + implementation in src/x86/ffi64.c, and the portable fallback in + src/prep_cif.c that just wraps ffi_call. ffi64.c is not compiled for + X86_WIN64 (that target builds ffiw64.c/win64.S instead), but clang-cl + and MSYS/mingw both define __x86_64__, so prep_cif.c's guard suppressed + the fallback too -- leaving ffi_call_plan_alloc/invoke/free undefined at + link time on those toolchains. MSVC cl escaped this only because it does + not define __x86_64__. + + Suppress the generic fallback only when ffi64.c actually provides the + functions, i.e. add && !defined(X86_WIN64) to the guard. X86_WIN64 is a + command-line define visible to the generic sources (cf. src/closures.c). + + Fixes #995. + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit c2c2e538c7c5403bd4edc3e77220bbe25a3ad47f +Merge: 132fb82f 7c3144c8 +Author: Anthony Green +Date: Thu Jul 9 09:10:49 2026 -0400 + + Merge pull request #994 from libffi/fix-993-aarch64-darwin-int128 + + aarch64: Don't split an int128 between x7 and the stack on Darwin + +commit 7c3144c80d8077b745588ee64bffd8504c44f5c9 +Author: Anthony Green +Date: Wed Jul 8 21:23:31 2026 -0400 + + aarch64: Don't split an int128 between x7 and the stack on Darwin + + The Apple arm64 ABI does not round NGRN up to an even number for + 128-bit integer arguments, but like AAPCS64 it still requires the + value to fit entirely in registers: if only x7 remains, the whole + value goes on the stack. allocate_int128_to_reg_or_stack only + checked ngrn < 8, so with ngrn == 7 it wrote the low half to x7 + and the high half past the end of the register array, while the + callee reads the argument from the stack. + + This fixes the libffi.call/i128-1.c failure at iteration 7 (seven + int args followed by an __int128) on aarch64-darwin, for both the + call and closure paths. + + Fixes #993 + + Co-Authored-By: Claude Fable 5 + +commit 132fb82ff4b43c9b8eaeeb533f38c95ae925131c +Author: Anthony Green +Date: Wed Jul 8 07:40:34 2026 -0400 + + Update libtool version to 12:0:4 for 3.7.0 + + 3.7.0 adds three new public interfaces (ffi_call_plan_alloc, + ffi_call_plan_invoke, ffi_call_plan_free) additively, with no + existing interface removed or changed. Per the libtool rules: + increment current, reset revision, increment age (11:1:3 -> 12:0:4). + This keeps the change ABI backward-compatible; the soname stays + libffi.so.8 (current - age = 8). + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit 0ad8fd46c0a32cbbf18260c72cc60679da66c89f +Author: Anthony Green +Date: Wed Jul 8 06:43:03 2026 -0400 + + Prepare for 3.7.0 + +commit c9275302baf0d109ec474972d4679a6afe8fe64d +Author: Anthony Green +Date: Wed Jul 8 06:29:29 2026 -0400 + + Bump version to 3.7.0 + + Set AC_INIT to 3.7.0 and update the manual's edition/version/date + stamps to match. + + Co-Authored-By: Claude Fable 5 + +commit 4f7ef24565eb60e8a093bfeba0bb77d5c576c311 +Author: Anthony Green +Date: Wed Jul 8 06:28:30 2026 -0400 + + Update copyright year + + Bump the LICENSE year range to 2026. + + Co-Authored-By: Claude Fable 5 + +commit 5ab7b328c3adde14105b1f36ae30adc9cdefae0a +Author: Anthony Green +Date: Wed Jul 8 06:24:26 2026 -0400 + + Add Anthony Green copyright line for 2026 authorship + + Attribute this year's work in the wasm and PA backends and the darwin + PowerPC closure code: + - wasm/ffi.c: widen narrow/unboxed returns to ffi_arg; NULL rvalue. + - pa/ffi.c: bump year (5-8 byte struct slot-sizing fix + avalue copy). + - powerpc/ffi_darwin.c: PPC_LD_* jump-table indexes for the aix/darwin + closure build fix. + + Co-Authored-By: Claude Fable 5 + +commit 5e334c6aa70b937b5c0d30ba10a373e34d7526b6 +Author: Anthony Green +Date: Wed Jul 8 06:17:58 2026 -0400 + + x86-64: add copyright line for the 2026 unix64.S plan trampolines + + The fast-path plan trampoline (ffi_plan_fast_call) and the pure-GP64 + direct thunks (ffi_plan_gp0..6) were added to unix64.S this year, so + add an Anthony Green copyright line alongside the original authors'. + + Co-Authored-By: Claude Fable 5 + +commit 70106b98d0a333a13b509b4bdc554018785be50c +Author: Anthony Green +Date: Wed Jul 8 06:15:53 2026 -0400 + + Update copyright year to 2026 + + Add 2026 to the copyright line on the source files, headers and the + manual touched during this year's development. Following existing + practice, only the maintainer's own copyright line is bumped (the + Anthony Green line, plus the Red Hat line in types.c); the years on + third-party-held backends are left as their original authors set them. + + Co-Authored-By: Claude Fable 5 + +commit 621874d6726007a6470b9c0c90b5a27c3c3ed932 +Author: Anthony Green +Date: Wed Jul 8 05:43:18 2026 -0400 + + configure: derive FFI_VERSION_STRING/NUMBER from AC_INIT + + The 3.6.0 release bumped AC_INIT but left FFI_VERSION_STRING and + FFI_VERSION_NUMBER at 3.5.2/30502, so the released headers report the + wrong version. Compute both from AC_PACKAGE_VERSION instead of + duplicating the version by hand: the string is the package version + verbatim, and the number encodes X.Y.Z as X*10000 + Y*100 + Z with any + non-numeric suffix (e.g. -rc0) ignored. + + Co-Authored-By: Claude Fable 5 + +commit b8c60b06597cc77cbe66bd208083acc20251fae0 +Author: Anthony Green +Date: Tue Jul 7 12:57:06 2026 -0400 + + README: note the ffi_call fixes in the 3.7.0 history + + Co-Authored-By: Claude Fable 5 + +commit ed5da041796cd6e38d2f30b948eadf63cf96139a +Author: Anthony Green +Date: Tue Jul 7 12:30:56 2026 -0400 + + wasm: don't widen unboxed small-struct returns + + The previous commit widened narrow integral returns to ffi_arg, but + unbox_small_structs had already collapsed single-member struct returns + into those same scalar type ids, and a struct return is stored at its + natural size -- the caller's buffer is exactly the struct. This broke + cls_1_1byte and the bhaible small-struct return tests. + + Remember whether the original return type was a struct and widen only + genuine scalar returns. + + Co-Authored-By: Claude Fable 5 + +commit 59a9e68e59205da9c4db854dd1f1bce4e8b58dad +Author: Anthony Green +Date: Tue Jul 7 12:02:20 2026 -0400 + + wasm: widen narrow integral returns to ffi_arg + + The return store wrote only the natural width for integer returns + narrower than a register (one byte for U8/S8, two for U16/S16, four on + wasm64 for 32-bit types), leaving the rest of the caller's ffi_arg + buffer as stack garbage. The documented API widens such returns to a + full ffi_arg, and every native port stores the full register width. + This is what plan_mixed.c caught: two identical calls disagreed in the + garbage bytes of their ffi_arg results. + + Mask or sign-extend the JS result explicitly and store a full ffi_arg + (32 bits on wasm32, 64 on wasm64). + + Co-Authored-By: Claude Fable 5 + +commit 6954bd1715b8a5895adfad7c2196d4eb41094dc7 +Author: Anthony Green +Date: Tue Jul 7 11:30:55 2026 -0400 + + testsuite: use ffi_arg for the integral return in plan.c + + The struct-argument block stored an ffi_type_slong return into a plain + long. Integral returns narrower than a register are widened to + ffi_arg, so on LLP64 targets libffi writes 8 bytes into the 4-byte + variable and clobbers its neighbor; this is what broke plan.c on MSVC + Win64 while mingw survived by stack-layout luck. + + Co-Authored-By: Claude Fable 5 + +commit 822d2e555fd97271c7c0ba8b6325cf4b541e3e9c +Author: Anthony Green +Date: Tue Jul 7 11:30:55 2026 -0400 + + Allow a NULL rvalue in ffi_call; handle it in the wasm port + + Most ports already quietly supported calling with rvalue == NULL by + substituting scratch space for in-memory returns, and the new plan + tests rely on it, but the manual never promised it and the wasm port + passed NULL straight to the callee as the return-by-argument pointer, + writing the result through address zero. + + Document NULL rvalue as supported for any return type, and in the wasm + port allocate stack scratch for return-by-argument callees and skip the + store-back for scalar returns when rvalue is NULL. + + Co-Authored-By: Claude Fable 5 + +commit 110156e1cceab76b4440ced9d95b5abaa84f30f7 +Author: Anthony Green +Date: Tue Jul 7 11:30:55 2026 -0400 + + ffi_call: never modify the caller's avalue array + + Eight ports made large struct arguments pass-by-value by alloca'ing a + copy inside ffi_call and writing the copy's address back into the + caller's avalue[]. Those pointers dangle as soon as ffi_call returns, + so any caller that legally reuses its avalue array for a second call + reads dead stack. The new ffi_call_plan equivalence tests do exactly + that and exposed it as plan_struct.c failures on hppa, MSVC Win64 and + macOS x86_64 under Rosetta; other targets passed only because the dead + copy usually survives between back-to-back calls. + + Clone the pointer array once, on the first argument that needs a copy, + and redirect the clone instead. Document that ffi_call leaves the + caller's vector untouched. + + Co-Authored-By: Claude Fable 5 + +commit e3dae4657710a9ddd4eb4bdbefbcc73722aad9fe +Author: Anthony Green +Date: Tue Jul 7 09:18:31 2026 -0400 + + testsuite: add ffi_call_plan equivalence tests; fix EXTRA_DIST gaps + + Add plan.c, plan_mixed.c, plan_spill.c, plan_struct.c and plan_var.c. + Each builds a reusable call plan (ffi_call_plan_alloc/invoke/free) and + checks it against ffi_call across the x86-64 argument-placement matrix: + the pure-GP64 direct thunks, the mixed GP+SSE fast path, stack-spilled + arguments, struct returns (in-memory including a NULL rvalue, and the + register pair), a struct-by-value argument that falls back to ffi_call, + and variadic calls. On targets without the accelerated backend the + generic plan simply wraps ffi_call, so the tests still pass there. + + While adding these to EXTRA_DIST, register four existing tests that were + never listed (i128-1.c, large_struct_by_value.c, many_small_structs.c + and complex_i128.c). They ran via the .exp globs but were missing from + distribution tarballs. + + Co-Authored-By: Claude Fable 5 + +commit a40ab3a7e85f8c9b193b8a442297bb20de2b4293 +Author: Anthony Green +Date: Tue Jul 7 08:19:33 2026 -0400 + + README: update 3.7.0 history entry + + Co-Authored-By: Claude Fable 5 + +commit 50baa0458db6b2d617e0d661292bbf12354b22ce +Author: Anthony Green +Date: Tue Jul 7 08:10:29 2026 -0400 + + x86_64: size closure argument buffer to match copy loop + + ffi_closure_unix64_inner allocated a fixed 16 bytes when gathering a + register-passed argument's eightbytes, but the copy loop writes n * 8 + bytes and examine_argument can classify up to MAX_CLASSES (4) + eightbytes for vector-classified types. Allocate n * 8 bytes so the + buffer always matches the loop bound. + + Co-Authored-By: Claude Fable 5 + +commit ff30d37615f82ef7bf1130b34528e01e1479b63d +Author: Anthony Green +Date: Tue Jul 7 08:10:29 2026 -0400 + + tramp.c: bound sscanf path field when parsing /proc/self/maps + + The %s conversion into file[PATH_MAX] was unbounded while the input + line buffer is PATH_MAX+100 bytes, so a mapping with a very long + pathname could overflow the destination. Give the conversion an + explicit PATH_MAX field width and size the buffer PATH_MAX+1 to + accommodate the terminating NUL. + + Co-Authored-By: Claude Fable 5 + +commit ed1844e6b50d0498d2b88d1b3ef31cc39b6cf117 +Author: Anthony Green +Date: Tue Jul 7 08:10:29 2026 -0400 + + .gitignore: ignore local build and scan artifact directories + + Co-Authored-By: Claude Fable 5 + +commit 854df63dbbda802985facbfab7a0e7c4169aefd1 +Merge: 2a595a18 731ec08f +Author: Anthony Green +Date: Tue Jul 7 08:06:25 2026 -0400 + + Merge pull request #991 from rorth/freebsd-libffi-note-gnu-stack + + Include .note.GNU-stack on FreeBSD/x86 + +commit 731ec08f3c3bbec883d823a71f1b0f86731cf312 +Author: Rainer Orth +Date: Tue Jul 7 11:14:09 2026 +0200 + + Fix typo. + +commit 19cc1424e924767c7ca43f9e4d4c27fbae27d1d9 +Author: Rainer Orth +Date: Tue Jul 7 10:27:55 2026 +0200 + + Include .note.GNU-stack on FreeBSD/x86 + + When building libffi on FreeBSD/x86 with --disable-shared as is done inside + the GCC tree, all tests FAIL when using GNU ld: + + gld-2.46: warning: win64.o: missing .note.GNU-stack section implies executable stack + gld-2.46: NOTE: This behaviour is deprecated and will be removed in a future version of the linker + + The emission of .note.GNU-stack in src/x86/*.S is currently guarded by + __ELF__ && __linux__, but FreeBSD/x86 uses that NOTE section, too. This + doesn't happen with libffi.so which lacks that NOTE. + + Therefore this patch extends the emission accordingly. + + Tested on amd64-pc-freebsd15.1 with and without --disable-shared. + +commit 2a595a183be146974bdf55716969e7a3e860f112 +Merge: c93f9428 f7b36640 +Author: Anthony Green +Date: Thu Jul 2 20:03:30 2026 -0400 + + Merge pull request #989 from rvandermeulen/dlmalloc-msvc-lock-cast + + dlmalloc: cast Win32 spin-lock word to LONG volatile* in CAS_LOCK/CLEAR_LOCK + +commit f7b36640544a59813ee372ed1a763affe7a67562 +Author: Ryan VanderMeulen +Date: Thu Jul 2 19:32:00 2026 -0400 + + dlmalloc: cast Win32 spin-lock word to LONG volatile* in CAS_LOCK/CLEAR_LOCK + + MLOCK_T is int, but on the Win32 MSC path CAS_LOCK/CLEAR_LOCK map to + _InterlockedExchange(LONG volatile *, LONG), so the int* lock word is + passed to a LONG volatile * parameter. clang 22 promotes + -Wincompatible-pointer-types to an error by default, which breaks the + clang-cl build (32- and 64-bit) with: + + error: incompatible pointer types passing 'int *' to parameter of type + 'volatile long *' [-Wincompatible-pointer-types] + + Cast to (LONG volatile *), matching what the ffi_spin_peek macro just + below already does in its _MSC_VER branch. LONG and int are both 32-bit + on Windows, so this is a type-correctness fix with no behavioral change. + +commit c93f9428d17cde4eb35517b58feeae6fb43aba5b +Author: Anthony Green +Date: Mon Jun 22 17:33:33 2026 -0400 + + testsuite: link threads tests against libpthread on NetBSD + + The libffi.threads/tsan.c test calls pthread_create but the harness + only appended -lpthread for OpenBSD, FreeBSD, and some Linux targets. + On NetBSD this caused an undefined reference to pthread_create. + + Fixes #988 + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit 9ca53a19833dabaf80b73763638ab988bdbc42cc +Author: Anthony Green +Date: Sun Jun 21 18:42:37 2026 -0400 + + powerpc: fix aix/darwin closure build errors + + unbuildable: the PPC_LD_* jump-table indexes (defined in ffi_powerpc.h, + which this file cannot include) were missing, and the closure helper + functions still declared an ffi_type* return type inconsistent with the + PPC_LD_* constants they now return. + + Define the PPC_LD_* constants locally and change the closure helper + return types to int. + + Fixes #987 + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit 807a93115f927229f6e7cf5675384e8dc2bf76d5 +Author: Anthony Green +Date: Sun Jun 21 18:31:12 2026 -0400 + + doc: mark the 3.7.0 release date as TBD + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit c876d4663183c40edbe5218603a26290900e7794 +Author: Anthony Green +Date: Sun Jun 21 18:28:12 2026 -0400 + + doc: add 3.7.0 history entry + + Record the next release (3.7.0, a minor bump for the new reusable call-plan API + on master) and the two PA-RISC fixes merged in #986. + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit c3e054afebb2d9121ff4d12a56a803eecc31cc41 +Merge: 3cc6beb7 1f04d458 +Author: Anthony Green +Date: Sun Jun 21 18:13:59 2026 -0400 + + Merge pull request #986 from libffi/ci-enable-parisc-regression + + Add PA32/ARCompact struct-by-value regression tests; enable hppa CI + +commit 1f04d458126bd79c58196073477515c88de8163d +Author: Anthony Green +Date: Sun Jun 21 17:37:26 2026 -0400 + + pa: fix stack sizing for 5-8 byte structs passed by value (FFI_PA32) + + ffi_size_stack_pa32 reserved a single stack slot for every struct argument, + but ffi_prep_args_pa32 passes a 5-8 byte struct inline in two even-aligned + slots (like a 64-bit value). With enough such arguments the marshaller's slot + count outgrew cif->bytes and it wrote past the allocated frame -- below sp and + over ffi_call_pa32's saved return pointer -- corrupting the call. + + Make the sizing mirror the marshalling exactly: 1-4 byte structs take one slot, + 5-8 byte structs take "2 + (z & 1)" slots (z stays offset from the marshaller's + slot by the odd FIRST_ARG_SLOT, so the parity matches), and larger structs are + passed by pointer in one slot. Split the PA_HPUX long double case out since it + is passed by pointer. + + Fixes the failure exercised by testsuite/libffi.call/many_small_structs.c. + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit cf45dfc368ea7373fdd946603845782dbcc1549a +Author: Anthony Green +Date: Sun Jun 21 16:57:56 2026 -0400 + + testsuite: make many_small_structs actually trigger the PA32 overflow + + With only 16 structs the PA-RISC slot under-count overflows ~32 bytes below + sp, landing in the 64-byte register save area where it clobbers nothing live, + so the call still returned correctly and the test passed under qemu. + + Raise the count to 40 so the marshaller's writes sweep past the save area and + over ffi_call_pa32's saved return pointer (sp-20), corrupting the return path. + On a correct backend the arguments still marshal within the allocated frame and + the call returns the expected sums; the test now fails only on an unfixed + FFI_PA32. + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit d55de2637abd9518d550d18a3e1d89a37bd32f47 +Author: Anthony Green +Date: Sun Jun 21 16:39:30 2026 -0400 + + pa: fix build broken by the int128 generic types + + FFI_TYPE_UINT128/FFI_TYPE_SINT128 were added after FFI_TYPE_COMPLEX, moving + FFI_TYPE_LAST to FFI_TYPE_SINT128. The PA-RISC tripwire still pinned + FFI_PA_TYPE_LAST to FFI_TYPE_COMPLEX, so "#error You likely have broken jump + tables" fired and PA-RISC stopped building once int128 support landed. + + ffi_prep_cif_machdep maps every return type it does not handle explicitly -- + including FFI_TYPE_COMPLEX and the 128-bit integer types -- to FFI_TYPE_INT via + its default case, so cif->flags never exceeds FFI_TYPE_COMPLEX and the linux.S / + hpux32.S return-value jump tables remain sufficient. Bump FFI_PA_TYPE_LAST to + FFI_TYPE_SINT128 to clear the tripwire, with a comment recording why no table + entries were needed. + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit d7177f2db574c962b4366b1948b7f7e1aaf896c2 +Author: Anthony Green +Date: Sun Jun 21 16:26:53 2026 -0400 + + ci: run the testsuite on PA-RISC 32-bit (hppa) under qemu-user + + Add an hppa-linux-gnu entry to the build-cross-qemu matrix so the testsuite is + cross-compiled with the Debian gcc-hppa-linux-gnu toolchain and run under + qemu-user (binfmt). hppa-linux uses FFI_PA32, so this exercises the + ffi_prep_args_pa32 / ffi_size_stack_pa32 marshalling path and will surface the + many_small_structs.c regression until the backend is fixed. + + Also drop the stale g++-5-hppa-linux-gnu pin from install.sh; the toolchain and + qemu-user-static now come from the CROSS_QEMU block. + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit a384cba94f3935ac54a38f7c6489b6fbe0488c8c +Author: Anthony Green +Date: Sun Jun 21 16:26:21 2026 -0400 + + testsuite: add struct-by-value regression tests for PA32 and ARCompact + + Two ffi_call tests covering argument-marshalling defects found by a security + review of the backends: + + * many_small_structs.c -- passes sixteen 8-byte structs by value. On + PA-RISC 32-bit (FFI_PA32), ffi_size_stack_pa32 reserves one stack slot per + struct while ffi_prep_args_pa32 consumes two slots for a 5-8 byte struct + passed inline, so enough such args write past the asm-allocated frame. + + * large_struct_by_value.c -- passes one 64-byte struct by value. On + ARCompact (FFI_ARCOMPACT), ffi_call_int sizes the stack arg area at two + words per argument, but a by-value struct is marshalled one word at a time + and words beyond the eight argument registers are written to that + under-sized area without bound. + + Both are written as ordinary correctness tests (valid CIFs, asserts on the + expected sums); they pass on unaffected targets and fail on PA32/ARCompact + until the backends are fixed. + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit 3cc6beb7d404e12d3458461d76557b79795816ff +Author: Anthony Green +Date: Sun Jun 21 09:47:10 2026 -0400 + + x86-64: replace the transparent plan cache with an explicit ffi_call_plan API + + The transparent plan cache sped up ffi_call and closures by caching a + precomputed argument-placement plan per signature, but it charged every + call a cache lookup and content fingerprint, and it slightly regressed + signatures with no fast path (struct-by-value) that paid the key + computation only to find there was nothing to do. + + Replace it with an opt-in API. ffi_call_plan_alloc builds a plan from a + prepared cif, ffi_call_plan_invoke applies it with no per-call lookup, + and ffi_call_plan_free releases it. The plan is opaque and caller-owned, + immutable once built (so it may be shared across threads), and falls back + to ffi_call for signatures with no fast path. ffi_call and the closure + path return to their original behaviour, so callers that don't adopt the + API pay nothing. + + The x86-64 backend provides an accelerated plan; every other target gets + a portable fallback in prep_cif.c that wraps ffi_call, so the symbols are + defined on all platforms. The per-thread cache, content fingerprint, + thread-exit cleanup and closure demarshal layout are removed. + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit 0c8f175eb650bb204b679996696b3e7706505d8f +Author: Anthony Green +Date: Sun Jun 21 08:18:14 2026 -0400 + + x86-64: trim the plan-cache fingerprint to the arg_types contents + + abi, nargs and rtype are stored in the slot and compared exactly on every + hit, so folding them into the fingerprint is redundant work on the hot + path. Hashing only the arg_types element pointers keeps the same collision + behaviour and the same protection against a reused arg_types address, while + shortening the per-call hash and speeding up the all-pointer thunk path. + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit 7b8c3283351298c55d09f580414ab937f358156c +Merge: d4995b5b f1e21329 +Author: Anthony Green +Date: Sat Jun 20 19:48:22 2026 -0400 + + Merge pull request #985 from libffi/plan-cache-fingerprint + + x86-64: content-based plan-cache key and thread-exit cleanup + +commit f1e2132940880128e26b885ee956e76fe3cad2d8 +Author: Anthony Green +Date: Sat Jun 20 19:46:50 2026 -0400 + + x86-64: content-based plan-cache key and thread-exit cleanup + + Follow-up to the plan cache (PR #984), addressing two issues. + + Content key: the cache keyed slots on the abi/nargs/rtype plus the arg_types + *array pointer*. If a cif's arg_types array was freed and the address later + reused for a different signature with the same abi/nargs/rtype, the keys + collided and a stale plan could be returned. Key on a 64-bit fingerprint that + folds in the element ffi_type pointers, so distinct argument types always get + distinct keys. Lookup is now O(nargs) cheap pointer reads -- still far less + than re-classifying the call. + + Thread-exit cleanup: the per-thread cache leaked its malloc'd plans when a + thread exited. Register a pthread key whose destructor frees the thread's + plans. pthread is referenced via weak symbols, so a program that never links + pthread simply skips the registration (the cache is already bounded per thread). + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit d4995b5bff6e5ecefb46eda218c40717f895baaf +Merge: 918ca8ed de3826a8 +Author: Anthony Green +Date: Sat Jun 20 18:43:14 2026 -0400 + + Merge pull request #984 from libffi/fast-libffi-plan + + x86-64: transparent plan cache for ffi_call and closures + +commit de3826a8063fde113ee8d1e455d459038d5814cc +Author: Anthony Green +Date: Sat Jun 20 18:14:08 2026 -0400 + + x86-64: limit the plan cache to the SysV ABI + + The Win64/EFI64 plan path failed an MSVC execution test (libffi.call/float3) + that can't be reproduced or validated without a Windows toolchain. Revert + ffiw64.c to the proven upstream implementation and build plans only for + FFI_UNIX64, leaving Win64/EFI64/GNUW64 on the existing path. The SysV fast + path -- the bulk of the speedup -- is unaffected. + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit fdbf8deaf297b308731385f91868ea8b5e7dbd21 +Author: Anthony Green +Date: Sat Jun 20 17:59:54 2026 -0400 + + x86-64: fix Windows build of the plan cache + + Native Windows targets build only ffiw64.c + win64.S for the x86 backend; + ffi64.c (which instantiates the plan-cache storage and ffi_build_plan_arch) + is not compiled, so ffiw64.c's ffi_plan_get left ffi_plan_miss / ffi_plan_cache + unresolved at link time. Instantiate the cache in ffiw64.c when X86_WIN64 is + defined (i.e. when ffi64.c is absent); on Unix x86-64 ffi64.c still does it and + X86_WIN64 is undefined, so there is no duplicate definition. + + Also use a portable thread-local qualifier (FFI_TLS: __declspec(thread) on + MSVC, __thread elsewhere). + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit 872365e143c521b4a84f712aa60f4e638a8b8053 +Author: Anthony Green +Date: Sat Jun 20 17:25:17 2026 -0400 + + x86-64: reword plan-cache comments to be self-contained + + Drop the in-development "Mechanism A" label and the stale references to the + earlier opt-in arena/slab storage, so the comments describe the cache as it + now stands. No functional change. + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit c4c9750c37868f26d1ce914592ca826e4ffc0b35 +Author: Anthony Green +Date: Sat Jun 20 13:10:18 2026 -0400 + + x86-64: transparent plan cache for ffi_call and closures + + Precompute each signature's argument placement once and cache it, keyed on + (abi, nargs, rtype, arg_types) in a per-thread direct-mapped cache, so ffi_call + and closures skip the per-call ABI classification. No API or ABI change -- + every caller benefits transparently on a relink. + + - Cache: src/plan-cache.h (inline O(1) probe) + src/plan-cache-impl.h + (per-thread storage, evict-and-free, FFI_PLAN_NONE for non-plan-able sigs). + - SysV (ffi64.c, unix64.S): pure-GP64 direct thunks (avalue -> arg regs), a + lean trampoline for register-only calls, and a plan executor reusing + ffi_call_unix64; closures use a precomputed demarshal layout. CFI on the + thunks/trampoline so exceptions unwind through them. + - Win64/EFI64 (ffiw64.c): plan executor + demarshal. + - W^X preserved: no runtime codegen; thunks shipped in .text. + + Scalar/pointer/int128/float/double args are accelerated; struct/complex/x87 + args fall back to the existing path. Pointer-heavy calls ~5x faster. + + Co-Authored-By: Claude Opus 4.8 (1M context) + +commit 918ca8edddbf542d9034d8e58931edfea036ecca +Author: Anthony Green +Date: Sat Jun 20 12:34:46 2026 -0400 + + ci: actually zip the MSVC binaries before the release upload + + The MSVC 'Create binary distribution' step builds a *directory* + (libffi--x86-bit-msvc-binaries/), but 'Upload to GitHub Release' + pointed softprops/action-gh-release at a .zip file that was never created. With + no matching file the action just warns and succeeds, so on the v3.6.0 tag the + step reported success while attaching nothing. + + Add a pwsh Compress-Archive step to produce the .zip (contents at top level, like + the upload-artifact layout), and set fail_on_unmatched_files: true so a missing + file fails the step loudly instead of silently passing. + + Co-Authored-By: Claude Opus 4.8 (1M context) + commit f6303b8b0dd6353c6a5bb4de2e855a13b86f22cf Author: Anthony Green Date: Sat Jun 20 09:54:12 2026 -0400 diff --git a/deps/libffi/LICENSE b/deps/libffi/LICENSE index 12b4970e0ddcb4..90a8b230284e5c 100644 --- a/deps/libffi/LICENSE +++ b/deps/libffi/LICENSE @@ -1,4 +1,4 @@ -libffi - Copyright (c) 1996-2025 Anthony Green, Red Hat, Inc and others. +libffi - Copyright (c) 1996-2026 Anthony Green, Red Hat, Inc and others. See source files for details. Permission is hereby granted, free of charge, to any person obtaining diff --git a/deps/libffi/README.md b/deps/libffi/README.md index 7693f1daf6f850..19f78f632b0cd4 100644 --- a/deps/libffi/README.md +++ b/deps/libffi/README.md @@ -1,5 +1,5 @@ -libffi-3.6.0 was released on June 20, 2026. +libffi-3.7.1 was released on July 10, 2026. What is libffi? @@ -201,6 +201,30 @@ History See the git log for details at http://github.com/libffi/libffi. + 3.7.1 July-10-2026 + Fix aarch64 ffi_call memory corruption when passing many large + structs by value. + Fix i386 thiscall/fastcall closure stack cleanup for 64-bit + integer and struct arguments. + Fix aarch64 int128 argument split between x7 and the stack on + Darwin (#993). + Fix aarch64 clang-cl link failure for HFA helper functions (#996). + Build a generic ffi_call_plan fallback on Windows x86-64. + Add Windows ARM64 (MSVC) build and continuous integration support. + + 3.7.0 July-7-2026 + Add reusable call plans (ffi_call_plan_alloc/ffi_call_plan_invoke/ffi_call_plan_free). + Fix PA-RISC build broken by the conditional __int128 support added in 3.6.0. + Fix PA-RISC stack overflow passing many small structs by value. + Fix powerpc aix/darwin closure build errors (#987). + Include .note.GNU-stack on FreeBSD/x86 (#991). + Fix MSVC Win32 spin-lock atomics in bundled dlmalloc (#989). + Harden static trampoline and x86_64 closure internals. + Fix ffi_call clobbering the caller's argument pointer array + when passing large structs by value. + Allow a NULL rvalue in ffi_call to discard the return value. + Fix wasm widening of integral returns narrower than ffi_arg. + 3.6.0 Jun-20-2026 Add LoongArch32 support. Add RISC-V static trampoline support. diff --git a/deps/libffi/configure b/deps/libffi/configure index 15b227e6888f82..e050ddc8675da1 100755 --- a/deps/libffi/configure +++ b/deps/libffi/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for libffi 3.6.0. +# Generated by GNU Autoconf 2.71 for libffi 3.7.1. # # Report bugs to . # @@ -621,8 +621,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='libffi' PACKAGE_TARNAME='libffi' -PACKAGE_VERSION='3.6.0' -PACKAGE_STRING='libffi 3.6.0' +PACKAGE_VERSION='3.7.1' +PACKAGE_STRING='libffi 3.7.1' PACKAGE_BUGREPORT='http://github.com/libffi/libffi/issues' PACKAGE_URL='' @@ -1417,7 +1417,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libffi 3.6.0 to adapt to many kinds of systems. +\`configure' configures libffi 3.7.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1489,7 +1489,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libffi 3.6.0:";; + short | recursive ) echo "Configuration of libffi 3.7.1:";; esac cat <<\_ACEOF @@ -1628,7 +1628,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libffi configure 3.6.0 +libffi configure 3.7.1 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2259,7 +2259,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libffi $as_me 3.6.0, which was +It was created by libffi $as_me 3.7.1, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3233,8 +3233,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers fficonfig.h" -FFI_VERSION_STRING="3.5.2" -FFI_VERSION_NUMBER=30502 +FFI_VERSION_STRING="3.7.1" +ffi_version_major=`echo "3.7.1" | cut -d. -f1` +ffi_version_minor=`echo "3.7.1" | cut -d. -f2 | sed 's/[^0-9].*//'` +ffi_version_micro=`echo "3.7.1" | cut -d. -f3 | sed 's/[^0-9].*//'` +FFI_VERSION_NUMBER=`expr ${ffi_version_major:-0} \* 10000 + ${ffi_version_minor:-0} \* 100 + ${ffi_version_micro:-0}` @@ -3983,7 +3986,7 @@ fi # Define the identity of the package. PACKAGE='libffi' - VERSION='3.6.0' + VERSION='3.7.1' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -20658,7 +20661,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libffi $as_me 3.6.0, which was +This file was extended by libffi $as_me 3.7.1, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -20726,7 +20729,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -libffi config.status 3.6.0 +libffi config.status 3.7.1 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/deps/libffi/configure.ac b/deps/libffi/configure.ac index 2c8ba77970b3b0..3370acc3a39690 100644 --- a/deps/libffi/configure.ac +++ b/deps/libffi/configure.ac @@ -2,11 +2,17 @@ dnl Process this with autoconf to create configure AC_PREREQ([2.68]) -AC_INIT([libffi],[3.6.0],[http://github.com/libffi/libffi/issues]) +AC_INIT([libffi],[3.7.1],[http://github.com/libffi/libffi/issues]) AC_CONFIG_HEADERS([fficonfig.h]) -FFI_VERSION_STRING="3.5.2" -FFI_VERSION_NUMBER=30502 +dnl Derive the version macros from AC_INIT so they cannot drift when the +dnl release version is bumped. FFI_VERSION_NUMBER encodes X.Y.Z as +dnl X*10000 + Y*100 + Z, ignoring any non-numeric suffix (e.g. -rc0). +FFI_VERSION_STRING="AC_PACKAGE_VERSION" +ffi_version_major=`echo "AC_PACKAGE_VERSION" | cut -d. -f1` +ffi_version_minor=`echo "AC_PACKAGE_VERSION" | cut -d. -f2 | sed 's/[[^0-9]].*//'` +ffi_version_micro=`echo "AC_PACKAGE_VERSION" | cut -d. -f3 | sed 's/[[^0-9]].*//'` +FFI_VERSION_NUMBER=`expr ${ffi_version_major:-0} \* 10000 + ${ffi_version_minor:-0} \* 100 + ${ffi_version_micro:-0}` AC_SUBST(FFI_VERSION_STRING) AC_SUBST(FFI_VERSION_NUMBER) diff --git a/deps/libffi/doc/libffi.info b/deps/libffi/doc/libffi.info index b5b81d5bcf815f..b43246f8ed4e3a 100644 --- a/deps/libffi/doc/libffi.info +++ b/deps/libffi/doc/libffi.info @@ -3,7 +3,7 @@ This is libffi.info, produced by makeinfo version 7.1 from libffi.texi. This manual is for libffi, a portable foreign function interface library. - Copyright © 2008-2025 Anthony Green and Red Hat, Inc. + Copyright © 2008-2026 Anthony Green and Red Hat, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -38,7 +38,7 @@ libffi This manual is for libffi, a portable foreign function interface library. - Copyright © 2008-2025 Anthony Green and Red Hat, Inc. + Copyright © 2008-2026 Anthony Green and Red Hat, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -112,6 +112,7 @@ File: libffi.info, Node: Using libffi, Next: Memory Usage, Prev: Introduction * Simple Example:: A simple example. * Types:: libffi type descriptions. * Multiple ABIs:: Different passing styles on one platform. +* Reusable Call Plans:: Building a call plan once and reusing it. * The Closure API:: Writing a generic function. * Closure Example:: A closure example. * Thread Safety:: Thread safety. @@ -200,6 +201,11 @@ function: responsibility to ensure this. If CIF declares that the function returns ‘void’ (using ‘ffi_type_void’), then RVALUE is ignored. + RVALUE may also be ‘NULL’, in which case the call is performed and + the return value is discarded. This works for any return type, + including structures returned in memory; ‘libffi’ supplies internal + scratch space for the callee when needed. + In most situations, ‘libffi’ will handle promotion according to the ABI. However, for historical reasons, there is a special case with return values that must be handled by your code. In particular, @@ -213,7 +219,9 @@ function: AVALUES is a vector of ‘void *’ pointers that point to the memory locations holding the argument values for a call. If CIF declares that the function has no arguments (i.e., NARGS was 0), then - AVALUES is ignored. + AVALUES is ignored. ‘ffi_call’ does not modify the vector or the + argument values it points to, so both may be reused for subsequent + calls. Note that while the return value must be register-sized, arguments should exactly match their declared type. For example, if an @@ -739,7 +747,7 @@ compilers that support them: type descriptors in the previous example.  -File: libffi.info, Node: Multiple ABIs, Next: The Closure API, Prev: Types, Up: Using libffi +File: libffi.info, Node: Multiple ABIs, Next: Reusable Call Plans, Prev: Types, Up: Using libffi 2.4 Multiple ABIs ================= @@ -751,9 +759,46 @@ instance, the x86 platform has both ‘stdcall’ and ‘fastcall’ functions. necessarily platform-specific.  -File: libffi.info, Node: The Closure API, Next: Closure Example, Prev: Multiple ABIs, Up: Using libffi +File: libffi.info, Node: Reusable Call Plans, Next: The Closure API, Prev: Multiple ABIs, Up: Using libffi + +2.5 Reusable Call Plans +======================= + +When the same signature is called many times - as language bindings +typically do - you can build a “call plan” once and reuse it, so that +each call avoids the work ‘ffi_call’ would otherwise repeat on every +invocation. A plan is an opaque, caller-owned object built from a +prepared ‘ffi_cif’. + + -- Function: ffi_call_plan * ffi_call_plan_alloc (ffi_cif *CIF) + Builds and returns a reusable plan for the signature described by + CIF, which must already have been prepared with ‘ffi_prep_cif’. + The plan does not copy CIF; CIF must remain valid for as long as + the plan is used. + + Returns ‘NULL’ only when memory cannot be allocated. A signature + for which no accelerated path exists is still valid: the returned + plan simply falls back to ‘ffi_call’ when it is invoked. + + -- Function: void ffi_call_plan_invoke (ffi_call_plan *PLAN, void *FN, + void *RVALUE, void **AVALUES) + Calls FN using PLAN. The FN, RVALUE, and AVALUES arguments have + exactly the same meaning as for ‘ffi_call’ (*note The Basics::), + including the rule that integral return values narrower than a + register are widened to ‘ffi_arg’. + + A plan is immutable once built, so a single plan may be invoked + concurrently from multiple threads without additional locking. + + -- Function: void ffi_call_plan_free (ffi_call_plan *PLAN) + Releases a plan returned by ‘ffi_call_plan_alloc’. Passing ‘NULL’ + is harmless. The ‘ffi_cif’ the plan was built from is not + affected. + + +File: libffi.info, Node: The Closure API, Next: Closure Example, Prev: Reusable Call Plans, Up: Using libffi -2.5 The Closure API +2.6 The Closure API =================== ‘libffi’ also provides a way to write a generic function - a function @@ -857,7 +902,7 @@ executable addresses.  File: libffi.info, Node: Closure Example, Next: Thread Safety, Prev: The Closure API, Up: Using libffi -2.6 Closure Example +2.7 Closure Example =================== A trivial example that creates a new ‘puts’ by binding ‘fputs’ with @@ -916,7 +961,7 @@ A trivial example that creates a new ‘puts’ by binding ‘fputs’ with  File: libffi.info, Node: Thread Safety, Prev: Closure Example, Up: Using libffi -2.7 Thread Safety +2.8 Thread Safety ================= ‘libffi’ is not completely thread-safe. However, many parts are, and if @@ -1004,17 +1049,21 @@ Index * cif: The Basics. (line 14) * closure API: The Closure API. (line 13) * closures: The Closure API. (line 13) -* const char *: The Basics. (line 106) +* const char *: The Basics. (line 113) * FFI: Introduction. (line 31) * ffi_call: The Basics. (line 72) +* ffi_call_plan *: Reusable Call Plans. (line 12) +* ffi_call_plan_alloc: Reusable Call Plans. (line 12) +* ffi_call_plan_free: Reusable Call Plans. (line 32) +* ffi_call_plan_invoke: Reusable Call Plans. (line 22) * ffi_closure_alloc: The Closure API. (line 19) * ffi_closure_free: The Closure API. (line 26) * FFI_CLOSURES: The Closure API. (line 13) -* ffi_get_closure_size: The Basics. (line 118) -* ffi_get_default_abi: The Basics. (line 115) +* ffi_get_closure_size: The Basics. (line 125) +* ffi_get_default_abi: The Basics. (line 122) * ffi_get_struct_offsets: Size and Alignment. (line 39) -* ffi_get_version: The Basics. (line 106) -* ffi_get_version_number: The Basics. (line 110) +* ffi_get_version: The Basics. (line 113) +* ffi_get_version_number: The Basics. (line 117) * ffi_prep_cif: The Basics. (line 16) * ffi_prep_cif_var: The Basics. (line 39) * ffi_prep_closure_loc: The Closure API. (line 41) @@ -1051,12 +1100,14 @@ Index * ffi_type_ushort: Primitive Types. (line 53) * ffi_type_void: Primitive Types. (line 10) * Foreign Function Interface: Introduction. (line 31) -* size_t: The Basics. (line 118) -* unsigned int: The Basics. (line 115) -* unsigned long: The Basics. (line 110) +* size_t: The Basics. (line 125) +* unsigned int: The Basics. (line 122) +* unsigned long: The Basics. (line 117) * void: The Basics. (line 72) -* void <1>: The Closure API. (line 19) -* void <2>: The Closure API. (line 26) +* void <1>: Reusable Call Plans. (line 22) +* void <2>: Reusable Call Plans. (line 32) +* void <3>: The Closure API. (line 19) +* void <4>: The Closure API. (line 26)  @@ -1064,23 +1115,24 @@ Tag Table: Node: Top1387 Node: Introduction2909 Node: Using libffi4569 -Node: The Basics5098 -Node: Simple Example10868 -Node: Types11925 -Node: Primitive Types12436 -Node: Structures14753 -Node: Size and Alignment15864 -Node: Arrays Unions Enums18135 -Node: Type Example21112 -Node: Complex22418 -Node: Complex Type Example23932 -Node: Multiple ABIs26984 -Node: The Closure API27367 -Node: Closure Example31703 -Node: Thread Safety33347 -Node: Memory Usage34180 -Node: Missing Features35455 -Node: Index35832 +Node: The Basics5172 +Node: Simple Example11346 +Node: Types12403 +Node: Primitive Types12914 +Node: Structures15231 +Node: Size and Alignment16342 +Node: Arrays Unions Enums18613 +Node: Type Example21590 +Node: Complex22896 +Node: Complex Type Example24410 +Node: Multiple ABIs27462 +Node: Reusable Call Plans27849 +Node: The Closure API29566 +Node: Closure Example33908 +Node: Thread Safety35552 +Node: Memory Usage36385 +Node: Missing Features37660 +Node: Index38037  End Tag Table diff --git a/deps/libffi/doc/libffi.pdf b/deps/libffi/doc/libffi.pdf index 3aa5406e61e086..250d34faf71159 100644 Binary files a/deps/libffi/doc/libffi.pdf and b/deps/libffi/doc/libffi.pdf differ diff --git a/deps/libffi/doc/libffi.texi b/deps/libffi/doc/libffi.texi index 73b128f863e7be..251214f890d3f5 100644 --- a/deps/libffi/doc/libffi.texi +++ b/deps/libffi/doc/libffi.texi @@ -18,7 +18,7 @@ This manual is for libffi, a portable foreign function interface library. -Copyright @copyright{} 2008--2025 Anthony Green and Red Hat, Inc. +Copyright @copyright{} 2008--2026 Anthony Green and Red Hat, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -118,6 +118,7 @@ values passed between the two languages. * Simple Example:: A simple example. * Types:: libffi type descriptions. * Multiple ABIs:: Different passing styles on one platform. +* Reusable Call Plans:: Building a call plan once and reusing it. * The Closure API:: Writing a generic function. * Closure Example:: A closure example. * Thread Safety:: Thread safety. @@ -213,6 +214,11 @@ to ensure this. If @var{cif} declares that the function returns @code{void} (using @code{ffi_type_void}), then @var{rvalue} is ignored. +@var{rvalue} may also be @code{NULL}, in which case the call is +performed and the return value is discarded. This works for any +return type, including structures returned in memory; @code{libffi} +supplies internal scratch space for the callee when needed. + In most situations, @code{libffi} will handle promotion according to the ABI. However, for historical reasons, there is a special case with return values that must be handled by your code. In particular, @@ -226,7 +232,9 @@ full @code{ffi_arg} into the return value. @var{avalues} is a vector of @code{void *} pointers that point to the memory locations holding the argument values for a call. If @var{cif} declares that the function has no arguments (i.e., @var{nargs} was 0), -then @var{avalues} is ignored. +then @var{avalues} is ignored. @code{ffi_call} does not modify the +vector or the argument values it points to, so both may be reused for +subsequent calls. Note that while the return value must be register-sized, arguments should exactly match their declared type. For example, if an argument @@ -806,6 +814,45 @@ necessarily platform-specific. @c FIXME: document the platforms +@node Reusable Call Plans +@section Reusable Call Plans + +When the same signature is called many times -- as language bindings +typically do -- you can build a @dfn{call plan} once and reuse it, so +that each call avoids the work @code{ffi_call} would otherwise repeat +on every invocation. A plan is an opaque, caller-owned object built +from a prepared @code{ffi_cif}. + +@findex ffi_call_plan_alloc +@defun {ffi_call_plan *} ffi_call_plan_alloc (ffi_cif *@var{cif}) +Builds and returns a reusable plan for the signature described by +@var{cif}, which must already have been prepared with +@code{ffi_prep_cif}. The plan does not copy @var{cif}; @var{cif} must +remain valid for as long as the plan is used. + +Returns @code{NULL} only when memory cannot be allocated. A signature +for which no accelerated path exists is still valid: the returned plan +simply falls back to @code{ffi_call} when it is invoked. +@end defun + +@findex ffi_call_plan_invoke +@defun void ffi_call_plan_invoke (ffi_call_plan *@var{plan}, void *@var{fn}, void *@var{rvalue}, void **@var{avalues}) +Calls @var{fn} using @var{plan}. The @var{fn}, @var{rvalue}, and +@var{avalues} arguments have exactly the same meaning as for +@code{ffi_call} (@pxref{The Basics}), including the rule that integral +return values narrower than a register are widened to @code{ffi_arg}. + +A plan is immutable once built, so a single plan may be invoked +concurrently from multiple threads without additional locking. +@end defun + +@findex ffi_call_plan_free +@defun void ffi_call_plan_free (ffi_call_plan *@var{plan}) +Releases a plan returned by @code{ffi_call_plan_alloc}. Passing +@code{NULL} is harmless. The @code{ffi_cif} the plan was built from is +not affected. +@end defun + @node The Closure API @section The Closure API diff --git a/deps/libffi/doc/stamp-vti b/deps/libffi/doc/stamp-vti index 6658c1da7e7825..e755454e9c8215 100644 --- a/deps/libffi/doc/stamp-vti +++ b/deps/libffi/doc/stamp-vti @@ -1,4 +1,4 @@ -@set UPDATED 20 June 2026 -@set UPDATED-MONTH June 2026 -@set EDITION 3.6.0 -@set VERSION 3.6.0 +@set UPDATED 10 July 2026 +@set UPDATED-MONTH July 2026 +@set EDITION 3.7.1 +@set VERSION 3.7.1 diff --git a/deps/libffi/doc/version.texi b/deps/libffi/doc/version.texi index 6658c1da7e7825..e755454e9c8215 100644 --- a/deps/libffi/doc/version.texi +++ b/deps/libffi/doc/version.texi @@ -1,4 +1,4 @@ -@set UPDATED 20 June 2026 -@set UPDATED-MONTH June 2026 -@set EDITION 3.6.0 -@set VERSION 3.6.0 +@set UPDATED 10 July 2026 +@set UPDATED-MONTH July 2026 +@set EDITION 3.7.1 +@set VERSION 3.7.1 diff --git a/deps/libffi/generate-headers.py b/deps/libffi/generate-headers.py index 312b0099ef2f0c..e2d2942deffb84 100644 --- a/deps/libffi/generate-headers.py +++ b/deps/libffi/generate-headers.py @@ -7,8 +7,8 @@ from pathlib import Path -LIBFFI_VERSION = '3.6.0' -LIBFFI_VERSION_NUMBER = '30600' +LIBFFI_VERSION = '3.7.1' +LIBFFI_VERSION_NUMBER = '30701' def normalize_arch(target_arch): aliases = { diff --git a/deps/libffi/include/ffi.h.in b/deps/libffi/include/ffi.h.in index 4ac9c2598c1517..35f09cf43315ca 100644 --- a/deps/libffi/include/ffi.h.in +++ b/deps/libffi/include/ffi.h.in @@ -1,6 +1,6 @@ /* -----------------------------------------------------------------*-C-*- libffi @VERSION@ - - Copyright (c) 2011, 2014, 2019, 2021, 2022, 2024, 2025 Anthony Green + - Copyright (c) 2011, 2014, 2019, 2021, 2022, 2024, 2025, 2026 Anthony Green - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. Permission is hereby granted, free of charge, to any person @@ -524,6 +524,32 @@ void ffi_call(ffi_cif *cif, void *rvalue, void **avalue); +/* Reusable call plans. + + A plan captures a signature's argument placement once so that repeated + calls skip the per-call work that ffi_call would otherwise redo. Build one + with ffi_call_plan_alloc, invoke it as many times as you like, and release + it with ffi_call_plan_free. + + The plan is opaque and caller-owned. The cif must outlive the plan. + ffi_call_plan_alloc returns NULL only on allocation failure; a signature + with no fast path is still valid and ffi_call_plan_invoke falls back to + ffi_call for it. A plan is immutable once built, so it may be shared and + invoked concurrently from multiple threads. */ +typedef struct ffi_call_plan ffi_call_plan; + +FFI_API +ffi_call_plan *ffi_call_plan_alloc (ffi_cif *cif); + +FFI_API +void ffi_call_plan_invoke (ffi_call_plan *plan, + void (*fn)(void), + void *rvalue, + void **avalue); + +FFI_API +void ffi_call_plan_free (ffi_call_plan *plan); + FFI_API ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, size_t *offsets); diff --git a/deps/libffi/libffi.gyp b/deps/libffi/libffi.gyp index 2d43dcdb733c97..f3122a4e2a0041 100644 --- a/deps/libffi/libffi.gyp +++ b/deps/libffi/libffi.gyp @@ -204,13 +204,6 @@ }, ], 'conditions': [ - ['OS == "win" and clang == 1', { - 'msvs_settings': { - 'VCCLCompilerTool': { - 'AdditionalOptions': ['-Wno-incompatible-pointer-types'], - }, - }, - }], ['OS == "win" and (target_arch == "x64" or target_arch == "x86_64")', { 'actions': [ { diff --git a/deps/libffi/libffi.map.in b/deps/libffi/libffi.map.in index 838acfea503602..f4e366eb60bceb 100644 --- a/deps/libffi/libffi.map.in +++ b/deps/libffi/libffi.map.in @@ -58,6 +58,17 @@ LIBFFI_BASE_8.1 { ffi_get_closure_size; } LIBFFI_BASE_8.0; +/* ---------------------------------------------------------------------- + Reusable call plans (ffi_call_plan_*). Additive: new symbols only, the + existing struct layout and entry points are untouched. + -------------------------------------------------------------------- */ +LIBFFI_CALL_PLAN_8.4 { + global: + ffi_call_plan_alloc; + ffi_call_plan_invoke; + ffi_call_plan_free; +} LIBFFI_BASE_8.1; + #ifdef FFI_TARGET_HAS_COMPLEX_TYPE LIBFFI_COMPLEX_8.0 { global: diff --git a/deps/libffi/libtool-version b/deps/libffi/libtool-version index 656cc6056f7401..c5545eab8bf6c2 100644 --- a/deps/libffi/libtool-version +++ b/deps/libffi/libtool-version @@ -26,4 +26,4 @@ # release, then set age to 0. # # CURRENT:REVISION:AGE -11:1:3 +12:1:4 diff --git a/deps/libffi/msvcc.sh b/deps/libffi/msvcc.sh index 301e2fbd6840fe..a69f57fd98882e 100755 --- a/deps/libffi/msvcc.sh +++ b/deps/libffi/msvcc.sh @@ -94,6 +94,13 @@ do cl="clang-cl" shift 1 ;; + -E) + # DejaGnu-style preprocessing (-E -o ): handled specially + # below, since cl writes preprocessed output to stdout and prints + # the source file name to stderr. + preprocess="true" + shift 1 + ;; -O0) args="$args -Od" shift 1 @@ -236,19 +243,25 @@ do shift 1 ;; -S) - args="$args -FAs" + # Compile to assembly without linking, like gcc -S: emit the + # listing and stop after the compile step. + args="$args -c -FAs" + compile_to_asm="true" shift 1 ;; -o) outdir="$(dirname $2)" base="$(basename $2|sed 's/\.[^.]*//g')" - if [ -n "$single" ]; then + ppout="$2" + if [ -n "$compile_to_asm" ]; then + output="-Fo$outdir/$base.obj -Fa$2" + elif [ -n "$single" ]; then output="-Fo$2" else output="-Fe$2" fi armasm_output="-o $2" - if [ -n "$assembly" ]; then + if [ -n "$assembly" ] || [ -n "$compile_to_asm" ]; then args="$args $output" else args="$args $output -Fd$outdir/$base -Fp$outdir/$base -Fa$outdir/$base" @@ -294,7 +307,19 @@ if [ -n "$debug_crt" ]; then md="${md}d" fi -if [ -n "$assembly" ]; then +if [ -n "$preprocess" ]; then + # Write the preprocessed output to the -o target (or stdout), and + # swallow stderr: cl prints the source file name there, which the + # testsuite's feature probes would mistake for a diagnostic. + args="$(echo $args | sed 's%[-/]F[edpoa][^ ]*%%g')" + + if test -n "$verbose"; then + echo "$cl -EP $args > ${ppout:-/dev/stdout}" + fi + + eval "\"$cl\" -EP $args" > "${ppout:-/dev/stdout}" 2>/dev/null + result=$? +elif [ -n "$assembly" ]; then if [ -z "$outdir" ]; then outdir="." fi diff --git a/deps/libffi/src/aarch64/ffi.c b/deps/libffi/src/aarch64/ffi.c index 715e478c0edd14..2e6a2ad2624c07 100644 --- a/deps/libffi/src/aarch64/ffi.c +++ b/deps/libffi/src/aarch64/ffi.c @@ -378,13 +378,13 @@ extend_integer_type (void *source, int type) } } -#if defined(_MSC_VER) +#if defined(_MSC_VER) && !defined(__clang__) void extend_hfa_type (void *dest, void *src, int h); #else static void extend_hfa_type (void *dest, void *src, int h) { - ssize_t f = h - AARCH64_RET_S4; + ptrdiff_t f = h - AARCH64_RET_S4; void *x0; #define BTI_J "hint #36" @@ -449,7 +449,7 @@ extend_hfa_type (void *dest, void *src, int h) } #endif -#if defined(_MSC_VER) +#if defined(_MSC_VER) && !defined(__clang__) void* compress_hfa_type (void *dest, void *src, int h); #else static void * @@ -550,7 +550,9 @@ allocate_int128_to_reg_or_stack (struct call_context *context, ngrn += ngrn & 1; #endif - if (ngrn < N_X_ARG_REG) + /* The value must fit entirely in registers, i.e. the low half may + not be allocated to x7 with the high half spilled to the stack. */ + if (ngrn + 2 <= N_X_ARG_REG) { ret = &context->x[ngrn]; ngrn += 2; @@ -642,6 +644,23 @@ ffi_prep_cif_machdep (ffi_cif *cif) break; } + /* Composites larger than 16 bytes (that are not HFAs) are passed by + invisible reference: ffi_call copies the payload into the argument + slab (next_struct_area, growing down) and, once the X registers are + exhausted, also spills the by-ref pointer into the same slab (the + NSAA, growing up). The generic prep_cif accounting in cif->bytes + only charges the payload copy, not that 8-byte pointer slot, so the + two regions can collide and a later struct copy can overwrite an + already-spilled pointer with the copied payload bytes. Reserve an + extra 8 bytes per such argument so the slab is always large enough + for both. */ + for (i = 0, n = cif->nargs; i < n; i++) + { + ffi_type *ty = cif->arg_types[i]; + if (ty->size > 16 && !is_vfp_type (ty)) + bytes += 8; + } + /* Round the stack up to a multiple of the stack alignment requirement. */ cif->bytes = (unsigned) FFI_ALIGN(bytes, 16); cif->flags = flags; diff --git a/deps/libffi/src/alpha/ffi.c b/deps/libffi/src/alpha/ffi.c index cb683ec14317f8..5830ee3f2109e4 100644 --- a/deps/libffi/src/alpha/ffi.c +++ b/deps/libffi/src/alpha/ffi.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 2012 Anthony Green + ffi.c - Copyright (c) 2012, 2026 Anthony Green Copyright (c) 1998, 2001, 2007, 2008 Red Hat, Inc. Alpha Foreign Function Interface diff --git a/deps/libffi/src/alpha/ffitarget.h b/deps/libffi/src/alpha/ffitarget.h index f80f13e85fe67e..da63dc08813a26 100644 --- a/deps/libffi/src/alpha/ffitarget.h +++ b/deps/libffi/src/alpha/ffitarget.h @@ -1,5 +1,5 @@ /* -----------------------------------------------------------------*-C-*- - ffitarget.h - Copyright (c) 2012 Anthony Green + ffitarget.h - Copyright (c) 2012, 2026 Anthony Green Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for Alpha. diff --git a/deps/libffi/src/closures.c b/deps/libffi/src/closures.c index 124e1f386a7138..c1fbcf87ce29b6 100644 --- a/deps/libffi/src/closures.c +++ b/deps/libffi/src/closures.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - closures.c - Copyright (c) 2019, 2022 Anthony Green + closures.c - Copyright (c) 2019, 2022, 2026 Anthony Green Copyright (c) 2007, 2009, 2010 Red Hat, Inc. Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc Copyright (c) 2011 Plausible Labs Cooperative, Inc. diff --git a/deps/libffi/src/dlmalloc.c b/deps/libffi/src/dlmalloc.c index 5b400d65de3db4..93e81967039359 100644 --- a/deps/libffi/src/dlmalloc.c +++ b/deps/libffi/src/dlmalloc.c @@ -1916,8 +1916,8 @@ static FORCEINLINE void x86_clear_lock(int* sl) { #define CLEAR_LOCK(sl) x86_clear_lock(sl) #else /* Win32 MSC */ -#define CAS_LOCK(sl) interlockedexchange(sl, (LONG)1) -#define CLEAR_LOCK(sl) interlockedexchange (sl, (LONG)0) +#define CAS_LOCK(sl) interlockedexchange((LONG volatile *)(sl), (LONG)1) +#define CLEAR_LOCK(sl) interlockedexchange ((LONG volatile *)(sl), (LONG)0) #endif /* ... gcc spins locks ... */ diff --git a/deps/libffi/src/frv/ffi.c b/deps/libffi/src/frv/ffi.c index 99dd41d32d4c8f..4eb8e1ddfb87c8 100644 --- a/deps/libffi/src/frv/ffi.c +++ b/deps/libffi/src/frv/ffi.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (C) 2004 Anthony Green + ffi.c - Copyright (C) 2004, 2026 Anthony Green Copyright (C) 2007 Free Software Foundation, Inc. Copyright (C) 2008 Red Hat, Inc. diff --git a/deps/libffi/src/ia64/ffi.c b/deps/libffi/src/ia64/ffi.c index c00ef08543289a..00e1ae15707c5f 100644 --- a/deps/libffi/src/ia64/ffi.c +++ b/deps/libffi/src/ia64/ffi.c @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------- ffi.c - Copyright (c) 1998, 2007, 2008, 2012 Red Hat, Inc. Copyright (c) 2000 Hewlett Packard Company - Copyright (c) 2011 Anthony Green + Copyright (c) 2011, 2026 Anthony Green IA64 Foreign Function Interface diff --git a/deps/libffi/src/m32r/ffi.c b/deps/libffi/src/m32r/ffi.c index 6fab50b115ed24..21d499abe00302 100644 --- a/deps/libffi/src/m32r/ffi.c +++ b/deps/libffi/src/m32r/ffi.c @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2004 Renesas Technology Copyright (c) 2008 Red Hat, Inc. - Copyright (c) 2022 Anthony Green + Copyright (c) 2022, 2026 Anthony Green M32R Foreign Function Interface @@ -180,10 +180,10 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { extended_cif ecif; ffi_type **arg_types = cif->arg_types; + void **avalue_copy = NULL; int i, nargs = cif->nargs; ecif.cif = cif; - ecif.avalue = avalue; /* If the return value is a struct and we don't have a return value address then we need to make one. */ @@ -196,7 +196,8 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) ecif.rvalue = rvalue; /* If we have any large structure arguments, make a copy so we are passing - by value. */ + by value. The pointer array is cloned first: the caller owns avalue[] + and may reuse it for another call, so it must not be modified. */ for (i = 0; i < nargs; i++) { ffi_type *at = arg_types[i]; @@ -204,10 +205,17 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) if (at->type == FFI_TYPE_STRUCT && size > 4) { char *argcopy = alloca (size); + if (avalue_copy == NULL) + { + avalue_copy = alloca (nargs * sizeof (void *)); + memcpy (avalue_copy, avalue, nargs * sizeof (void *)); + avalue = avalue_copy; + } memcpy (argcopy, avalue[i], size); avalue[i] = argcopy; } } + ecif.avalue = avalue; switch (cif->abi) { diff --git a/deps/libffi/src/moxie/ffi.c b/deps/libffi/src/moxie/ffi.c index ace7b23f855763..582c06f5dcebab 100644 --- a/deps/libffi/src/moxie/ffi.c +++ b/deps/libffi/src/moxie/ffi.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (C) 2012, 2013, 2018, 2021, 2022 Anthony Green + ffi.c - Copyright (C) 2012, 2013, 2018, 2021, 2022, 2026 Anthony Green Moxie Foreign Function Interface @@ -129,10 +129,10 @@ void ffi_call(ffi_cif *cif, { extended_cif ecif; ffi_type **arg_types = cif->arg_types; + void **avalue_copy = NULL; int i, nargs = cif->nargs; ecif.cif = cif; - ecif.avalue = avalue; /* If the return value is a struct and we don't have a return */ /* value address then we need to make one */ @@ -146,7 +146,8 @@ void ffi_call(ffi_cif *cif, ecif.rvalue = rvalue; /* If we have any large structure arguments, make a copy so we are passing - by value. */ + by value. The pointer array is cloned first: the caller owns avalue[] + and may reuse it for another call, so it must not be modified. */ for (i = 0; i < nargs; i++) { ffi_type *at = arg_types[i]; @@ -154,10 +155,17 @@ void ffi_call(ffi_cif *cif, if (at->type == FFI_TYPE_STRUCT) /* && size > 4) All struct args?? */ { char *argcopy = alloca (size); + if (avalue_copy == NULL) + { + avalue_copy = alloca (nargs * sizeof (void *)); + memcpy (avalue_copy, avalue, nargs * sizeof (void *)); + avalue = avalue_copy; + } memcpy (argcopy, avalue[i], size); avalue[i] = argcopy; } } + ecif.avalue = avalue; switch (cif->abi) { diff --git a/deps/libffi/src/or1k/ffi.c b/deps/libffi/src/or1k/ffi.c index 0393ea4af42af6..9303880a5e82b8 100644 --- a/deps/libffi/src/or1k/ffi.c +++ b/deps/libffi/src/or1k/ffi.c @@ -121,6 +121,7 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) int i; int size; ffi_type **arg; + void **avalue_copy = NULL; /* Calculate size to allocate on stack */ @@ -135,13 +136,21 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) size += 8; /* If we have any large structure arguments, make a copy so we are passing - by value. */ + by value. The pointer array is cloned first: the caller owns + avalue[] and may reuse it for another call, so it must not be + modified. */ { ffi_type *at = cif->arg_types[i]; int size = at->size; if (at->type == FFI_TYPE_STRUCT) /* && size > 4) All struct args? */ { char *argcopy = alloca (size); + if (avalue_copy == NULL) + { + avalue_copy = alloca (cif->nargs * sizeof (void *)); + memcpy (avalue_copy, avalue, cif->nargs * sizeof (void *)); + avalue = avalue_copy; + } memcpy (argcopy, avalue[i], size); avalue[i] = argcopy; } diff --git a/deps/libffi/src/pa/ffi.c b/deps/libffi/src/pa/ffi.c index 5460ca2fdbe147..e5de1dc72eb38e 100644 --- a/deps/libffi/src/pa/ffi.c +++ b/deps/libffi/src/pa/ffi.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - (c) 2011 Anthony Green + ffi.c - (c) 2011, 2026 Anthony Green (c) 2008 Red Hat, Inc. (c) 2006 Free Software Foundation, Inc. (c) 2003-2004 Randolph Chung @@ -280,9 +280,24 @@ static void ffi_size_stack_pa32(ffi_cif *cif) #ifdef PA_HPUX case FFI_TYPE_LONGDOUBLE: + z += 1; /* passed by pointer, like a large struct */ + break; #endif + case FFI_TYPE_STRUCT: - z += 1; /* pass by ptr, callee will copy */ + /* This must mirror the slot accounting in ffi_prep_args_pa32: + structs of 1-4 bytes occupy one slot, structs of 5-8 bytes are + passed inline in two even-aligned slots (exactly like a 64-bit + value), and larger structs are passed by pointer in one slot. + z stays offset from the marshaller's slot by FIRST_ARG_SLOT (odd), + so (z & 1) tracks the same alignment the marshaller applies. */ + { + size_t len = (*ptr)->size; + if (len <= 4 || len > 8) + z += 1; + else + z += 2 + (z & 1); + } break; default: /* <= 32-bit values */ @@ -363,12 +378,13 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) extended_cif ecif; size_t i, nargs = cif->nargs; ffi_type **arg_types = cif->arg_types; + void **avalue_copy = NULL; ecif.cif = cif; - ecif.avalue = avalue; /* If we have any large structure arguments, make a copy so we are passing - by value. */ + by value. The pointer array is cloned first: the caller owns avalue[] + and may reuse it for another call, so it must not be modified. */ for (i = 0; i < nargs; i++) { ffi_type *at = arg_types[i]; @@ -376,10 +392,17 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) if (at->type == FFI_TYPE_STRUCT && size > 8) { char *argcopy = alloca (size); + if (avalue_copy == NULL) + { + avalue_copy = alloca (nargs * sizeof (void *)); + memcpy (avalue_copy, avalue, nargs * sizeof (void *)); + avalue = avalue_copy; + } memcpy (argcopy, avalue[i], size); avalue[i] = argcopy; } } + ecif.avalue = avalue; /* If the return value is a struct and we don't have a return value address then we need to make one. */ diff --git a/deps/libffi/src/pa/ffitarget.h b/deps/libffi/src/pa/ffitarget.h index dae854a695bb30..f6f09975cfac36 100644 --- a/deps/libffi/src/pa/ffitarget.h +++ b/deps/libffi/src/pa/ffitarget.h @@ -1,5 +1,5 @@ /* -----------------------------------------------------------------*-C-*- - ffitarget.h - Copyright (c) 2012 Anthony Green + ffitarget.h - Copyright (c) 2012, 2026 Anthony Green Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for hppa. @@ -82,11 +82,19 @@ typedef enum ffi_abi { #define FFI_TYPE_SMALL_STRUCT7 -7 #define FFI_TYPE_SMALL_STRUCT8 -8 -/* linux.S and hpux32.S expect FFI_TYPE_COMPLEX is the last generic type. */ -#define FFI_PA_TYPE_LAST FFI_TYPE_COMPLEX - -/* If new generic types are added, the jump tables in linux.S and hpux32.S - likely need updating. */ +/* The return-value jump tables in linux.S and hpux32.S are indexed by + cif->flags, which ffi_prep_cif_machdep derives from the return type. Any + return type it does not handle explicitly -- including FFI_TYPE_COMPLEX and + the 128-bit integer types FFI_TYPE_UINT128/FFI_TYPE_SINT128 -- falls through + to the default case and is mapped to FFI_TYPE_INT, so cif->flags never + exceeds FFI_TYPE_COMPLEX and the existing tables remain sufficient. Bump + FFI_PA_TYPE_LAST to the current FFI_TYPE_LAST once you have confirmed any + newly added generic type is likewise handled (or the tables extended). */ +#define FFI_PA_TYPE_LAST FFI_TYPE_SINT128 + +/* Tripwire: when a new generic type is added FFI_TYPE_LAST changes and this + fires, forcing a review of ffi_prep_cif_machdep and the linux.S / hpux32.S + jump tables before FFI_PA_TYPE_LAST above is bumped. */ #if FFI_TYPE_LAST != FFI_PA_TYPE_LAST # error "You likely have broken jump tables" #endif diff --git a/deps/libffi/src/powerpc/ffi.c b/deps/libffi/src/powerpc/ffi.c index 1afa582ebead82..69725242344c32 100644 --- a/deps/libffi/src/powerpc/ffi.c +++ b/deps/libffi/src/powerpc/ffi.c @@ -1,6 +1,6 @@ /* ----------------------------------------------------------------------- ffi.c - Copyright (C) 2013 IBM - Copyright (C) 2011 Anthony Green + Copyright (C) 2011, 2026 Anthony Green Copyright (C) 2011 Kyle Moffett Copyright (C) 2008 Red Hat, Inc Copyright (C) 2007, 2008 Free Software Foundation, Inc diff --git a/deps/libffi/src/powerpc/ffi_darwin.c b/deps/libffi/src/powerpc/ffi_darwin.c index d62737f47150c2..01e2a43701d7a1 100644 --- a/deps/libffi/src/powerpc/ffi_darwin.c +++ b/deps/libffi/src/powerpc/ffi_darwin.c @@ -4,6 +4,7 @@ Copyright (C) 1998 Geoffrey Keating Copyright (C) 2001 John Hornkvist Copyright (C) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 2026 Anthony Green FFI support for Darwin and AIX. diff --git a/deps/libffi/src/powerpc/ffi_linux64.c b/deps/libffi/src/powerpc/ffi_linux64.c index 4a4fe86beff1f2..b1f1468ed5f856 100644 --- a/deps/libffi/src/powerpc/ffi_linux64.c +++ b/deps/libffi/src/powerpc/ffi_linux64.c @@ -1,6 +1,6 @@ /* ----------------------------------------------------------------------- ffi_linux64.c - Copyright (C) 2013 IBM - Copyright (C) 2011 Anthony Green + Copyright (C) 2011, 2026 Anthony Green Copyright (C) 2011 Kyle Moffett Copyright (C) 2008 Red Hat, Inc Copyright (C) 2007, 2008 Free Software Foundation, Inc diff --git a/deps/libffi/src/powerpc/ffi_powerpc.h b/deps/libffi/src/powerpc/ffi_powerpc.h index c366315baefefe..bad33efe3b8cc1 100644 --- a/deps/libffi/src/powerpc/ffi_powerpc.h +++ b/deps/libffi/src/powerpc/ffi_powerpc.h @@ -1,6 +1,6 @@ /* ----------------------------------------------------------------------- ffi_powerpc.h - Copyright (C) 2013 IBM - Copyright (C) 2011 Anthony Green + Copyright (C) 2011, 2026 Anthony Green Copyright (C) 2011 Kyle Moffett Copyright (C) 2008 Red Hat, Inc Copyright (C) 2007, 2008 Free Software Foundation, Inc diff --git a/deps/libffi/src/powerpc/ffi_sysv.c b/deps/libffi/src/powerpc/ffi_sysv.c index 975c58c2c0e049..a33039e3dbdb1a 100644 --- a/deps/libffi/src/powerpc/ffi_sysv.c +++ b/deps/libffi/src/powerpc/ffi_sysv.c @@ -1,6 +1,6 @@ /* ----------------------------------------------------------------------- ffi_sysv.c - Copyright (C) 2013 IBM - Copyright (C) 2011 Anthony Green + Copyright (C) 2011, 2026 Anthony Green Copyright (C) 2011 Kyle Moffett Copyright (C) 2008 Red Hat, Inc Copyright (C) 2007, 2008 Free Software Foundation, Inc diff --git a/deps/libffi/src/powerpc/ffitarget.h b/deps/libffi/src/powerpc/ffitarget.h index cf67a9bba6ee33..7ffe36b682e4a7 100644 --- a/deps/libffi/src/powerpc/ffitarget.h +++ b/deps/libffi/src/powerpc/ffitarget.h @@ -1,5 +1,5 @@ /* -----------------------------------------------------------------*-C-*- - ffitarget.h - Copyright (c) 2012 Anthony Green + ffitarget.h - Copyright (c) 2012, 2026 Anthony Green Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc Copyright (c) 1996-2003 Red Hat, Inc. diff --git a/deps/libffi/src/prep_cif.c b/deps/libffi/src/prep_cif.c index 47c9259470c5ee..1836270d1a9cb7 100644 --- a/deps/libffi/src/prep_cif.c +++ b/deps/libffi/src/prep_cif.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - prep_cif.c - Copyright (c) 2011, 2012, 2021, 2025 Anthony Green + prep_cif.c - Copyright (c) 2011, 2012, 2021, 2025, 2026 Anthony Green Copyright (c) 1996, 1998, 2007 Red Hat, Inc. Copyright (c) 2022 Oracle and/or its affiliates. @@ -278,3 +278,42 @@ ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, size_t *offsets) return initialize_aggregate(struct_type, offsets); } + +/* Generic ffi_call_plan: a portable fallback compiled on every target that does + not provide its own accelerated implementation. The x86-64 SysV backend + (ffi64.c) defines these with a fast path under __x86_64__ && !__ILP32__, but + that file is not built for Windows x86-64 (X86_WIN64), which uses ffiw64.c + instead -- and clang-cl and MSYS/mingw both define __x86_64__ there. So + exclude the fallback only when ffi64.c actually provides it; everywhere else + this plan just records the cif and invoke calls ffi_call, so the API is + always present and links on all targets. The cif must outlive the plan. */ +#if !(defined(__x86_64__) && !defined(__ILP32__) && !defined(X86_WIN64)) + +struct ffi_call_plan +{ + ffi_cif *cif; +}; + +ffi_call_plan * +ffi_call_plan_alloc (ffi_cif *cif) +{ + ffi_call_plan *plan = malloc (sizeof (struct ffi_call_plan)); + if (plan != NULL) + plan->cif = cif; + return plan; +} + +void +ffi_call_plan_invoke (ffi_call_plan *plan, void (*fn) (void), + void *rvalue, void **avalue) +{ + ffi_call (plan->cif, fn, rvalue, avalue); +} + +void +ffi_call_plan_free (ffi_call_plan *plan) +{ + free (plan); +} + +#endif /* generic ffi_call_plan fallback */ diff --git a/deps/libffi/src/s390/ffitarget.h b/deps/libffi/src/s390/ffitarget.h index 6a9c3234289cb5..4fc8ef02cfe83b 100644 --- a/deps/libffi/src/s390/ffitarget.h +++ b/deps/libffi/src/s390/ffitarget.h @@ -1,5 +1,5 @@ /* -----------------------------------------------------------------*-C-*- - ffitarget.h - Copyright (c) 2012 Anthony Green + ffitarget.h - Copyright (c) 2012, 2026 Anthony Green Copyright (c) 1996-2003 Red Hat, Inc. Target configuration macros for S390. diff --git a/deps/libffi/src/sh64/ffi.c b/deps/libffi/src/sh64/ffi.c index 4545b0fa72141b..2df6e23a3fda29 100644 --- a/deps/libffi/src/sh64/ffi.c +++ b/deps/libffi/src/sh64/ffi.c @@ -1,6 +1,6 @@ /* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2003, 2004, 2006, 2007, 2012 Kaz Kojima - Copyright (c) 2008 Anthony Green + Copyright (c) 2008, 2026 Anthony Green SuperH SHmedia Foreign Function Interface diff --git a/deps/libffi/src/sparc/ffi.c b/deps/libffi/src/sparc/ffi.c index 98142b206ecd44..bcda1ff2219703 100644 --- a/deps/libffi/src/sparc/ffi.c +++ b/deps/libffi/src/sparc/ffi.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 2011, 2013 Anthony Green + ffi.c - Copyright (c) 2011, 2013, 2026 Anthony Green Copyright (c) 1996, 2003-2004, 2007-2008 Red Hat, Inc. SPARC Foreign Function Interface @@ -288,6 +288,7 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, size_t bytes = cif->bytes; size_t i, nargs = cif->nargs; ffi_type **arg_types = cif->arg_types; + void **avalue_copy = NULL; FFI_ASSERT (cif->abi == FFI_V8); @@ -298,7 +299,8 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, bytes += FFI_ALIGN (cif->rtype->size, 8); /* If we have any structure arguments, make a copy so we are passing - by value. */ + by value. The pointer array is cloned first: the caller owns avalue[] + and may reuse it for another call, so it must not be modified. */ for (i = 0; i < nargs; i++) { ffi_type *at = arg_types[i]; @@ -306,6 +308,12 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, if (at->type == FFI_TYPE_STRUCT) { char *argcopy = alloca (size); + if (avalue_copy == NULL) + { + avalue_copy = alloca (nargs * sizeof (void *)); + memcpy (avalue_copy, avalue, nargs * sizeof (void *)); + avalue = avalue_copy; + } memcpy (argcopy, avalue[i], size); avalue[i] = argcopy; } diff --git a/deps/libffi/src/sparc/ffi64.c b/deps/libffi/src/sparc/ffi64.c index 09a5e59dfdd0c7..5eec1499e1708d 100644 --- a/deps/libffi/src/sparc/ffi64.c +++ b/deps/libffi/src/sparc/ffi64.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 2011, 2013 Anthony Green + ffi.c - Copyright (c) 2011, 2013, 2026 Anthony Green Copyright (c) 1996, 2003-2004, 2007-2008 Red Hat, Inc. SPARC Foreign Function Interface @@ -429,6 +429,7 @@ ffi_call_int(ffi_cif *cif, void (*fn)(void), void *rvalue, size_t bytes = cif->bytes; size_t i, nargs = cif->nargs; ffi_type **arg_types = cif->arg_types; + void **avalue_copy = NULL; FFI_ASSERT (cif->abi == FFI_V9); @@ -436,7 +437,8 @@ ffi_call_int(ffi_cif *cif, void (*fn)(void), void *rvalue, bytes += FFI_ALIGN (cif->rtype->size, 16); /* If we have any large structure arguments, make a copy so we are passing - by value. */ + by value. The pointer array is cloned first: the caller owns avalue[] + and may reuse it for another call, so it must not be modified. */ for (i = 0; i < nargs; i++) { ffi_type *at = arg_types[i]; @@ -444,10 +446,16 @@ ffi_call_int(ffi_cif *cif, void (*fn)(void), void *rvalue, if (at->type == FFI_TYPE_STRUCT && size > 4) { char *argcopy = alloca (size); + if (avalue_copy == NULL) + { + avalue_copy = alloca (nargs * sizeof (void *)); + memcpy (avalue_copy, avalue, nargs * sizeof (void *)); + avalue = avalue_copy; + } memcpy (argcopy, avalue[i], size); avalue[i] = argcopy; } - } + } ffi_call_v9(cif, fn, rvalue, avalue, -bytes, closure); } diff --git a/deps/libffi/src/tramp.c b/deps/libffi/src/tramp.c index 76a9dfe75c2c3b..525f8154715671 100644 --- a/deps/libffi/src/tramp.c +++ b/deps/libffi/src/tramp.c @@ -1,6 +1,6 @@ /* ----------------------------------------------------------------------- tramp.c - Copyright (c) 2020 Madhavan T. Venkataraman - Copyright (c) 2022 Anthony Green + Copyright (c) 2022, 2026 Anthony Green API and support functions for managing statically defined closure trampolines. @@ -201,11 +201,18 @@ static int tramp_table_alloc (void); #if defined (__linux__) || defined (__CYGWIN__) +/* Stringify a macro value for use in a scanf field-width specifier. */ +#define FFI_TRAMP_STR_(x) #x +#define FFI_TRAMP_STR(x) FFI_TRAMP_STR_(x) + static int ffi_tramp_get_libffi (void) { FILE *fp; - char file[PATH_MAX], line[PATH_MAX+100], perm[10], dev[10]; + /* `file' is sized PATH_MAX+1 so a scanf field width of PATH_MAX + (which permits PATH_MAX characters plus the terminating NUL) cannot + overflow. */ + char file[PATH_MAX+1], line[PATH_MAX+100], perm[10], dev[10]; unsigned long start, end, offset, inode; uintptr_t addr = (uintptr_t) tramp_globals.text; int nfields, found; @@ -215,7 +222,7 @@ ffi_tramp_get_libffi (void) open_flags |= O_CLOEXEC; #endif - snprintf (file, PATH_MAX, "/proc/%d/maps", getpid()); + snprintf (file, sizeof (file), "/proc/%d/maps", getpid()); fp = fopen (file, "r"); if (fp == NULL) return 0; @@ -225,7 +232,10 @@ ffi_tramp_get_libffi (void) if (fgets (line, sizeof (line), fp) == 0) break; - nfields = sscanf (line, "%lx-%lx %9s %lx %9s %ld %s", + /* Bound the path field width so a long mapping name cannot overflow + the fixed-size `file' buffer. */ + nfields = sscanf (line, + "%lx-%lx %9s %lx %9s %ld %" FFI_TRAMP_STR(PATH_MAX) "s", &start, &end, perm, &offset, dev, &inode, file); if (nfields != 7) continue; diff --git a/deps/libffi/src/types.c b/deps/libffi/src/types.c index c6e8ebe2a881be..4ac45a4ac0d790 100644 --- a/deps/libffi/src/types.c +++ b/deps/libffi/src/types.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - types.c - Copyright (c) 1996, 1998, 2024, 2025 Red Hat, Inc. + types.c - Copyright (c) 1996, 1998, 2024, 2025, 2026 Red Hat, Inc. Predefined ffi_types needed by libffi. diff --git a/deps/libffi/src/wasm/ffi.c b/deps/libffi/src/wasm/ffi.c index 486ffa7856aa82..b631b1b2bef9cf 100644 --- a/deps/libffi/src/wasm/ffi.c +++ b/deps/libffi/src/wasm/ffi.c @@ -1,5 +1,6 @@ /* ----------------------------------------------------------------------- ffi.c - Copyright (c) 2018-2023 Hood Chatham, Brion Vibber, Kleis Auke Wolthuizen, and others. + Copyright (c) 2026 Anthony Green wasm32/emscripten Foreign Function Interface @@ -70,6 +71,13 @@ EM_JS_DEPS(libffi, "$getWasmTableEntry,$setWasmTableEntry,$getEmptyTableSlot,$co #define DEREF_PTR(addr, offset) DEREF_U32(addr, offset) #define DEREF_PTR_NUMBER(addr, offset) DEREF_PTR(addr, offset) +// Store an integral return value widened to ffi_arg (32 bits on wasm32), as +// the libffi API promises for integral returns narrower than a register. +// The typed-array store wraps modulo 2^32, so a sign-extended negative +// Number is stored correctly by both variants. +#define STORE_ARG_WIDENED_UNSIGNED(rvalue, x) (DEREF_U32(rvalue, 0) = (x)) +#define STORE_ARG_WIDENED_SIGNED(rvalue, x) (DEREF_U32(rvalue, 0) = (x)) + CHECK_FIELD_OFFSET(ffi_cif, abi, 4*0); CHECK_FIELD_OFFSET(ffi_cif, nargs, 4*1); CHECK_FIELD_OFFSET(ffi_cif, arg_types, 4*2); @@ -109,6 +117,16 @@ CHECK_FIELD_OFFSET(ffi_type, elements, 8); #define DEREF_PTR(addr, offset) DEREF_U64(addr, offset) #define DEREF_PTR_NUMBER(addr, offset) DEC_PTR(DEREF_PTR(addr, offset)) +// Store an integral return value widened to ffi_arg (64 bits on wasm64), as +// the libffi API promises for integral returns narrower than a register. +// BigInt masking treats the value as infinite-precision two's complement, so +// the unsigned variant zero-extends a possibly-negative i32 Number, while +// the BigUint64Array store wraps the signed variant modulo 2^64, which is +// sign extension. +#define STORE_ARG_WIDENED_UNSIGNED(rvalue, x) \ + (DEREF_U64(rvalue, 0) = BigInt(x) & BigInt(4294967295)) +#define STORE_ARG_WIDENED_SIGNED(rvalue, x) (DEREF_U64(rvalue, 0) = BigInt(x)) + CHECK_FIELD_OFFSET(ffi_cif, abi, 0); CHECK_FIELD_OFFSET(ffi_cif, nargs, 4); CHECK_FIELD_OFFSET(ffi_cif, arg_types, 8); @@ -247,6 +265,10 @@ ffi_call_js, (ffi_cif *cif, ffi_fp fn, void *rvalue, void **avalue), var rtype_unboxed = unbox_small_structs(CIF__RTYPE(cif)); var rtype_ptr = rtype_unboxed[0]; var rtype_id = rtype_unboxed[1]; + // A small struct return is unboxed to a scalar type id above, but it is + // still a struct to the caller: its buffer is exactly the struct's size, + // so it must not get the integral widening to ffi_arg. + var rtype_widen = FFI_TYPE__TYPEID(DEC_PTR(CIF__RTYPE(cif))) !== FFI_TYPE_STRUCT; var orig_stack_ptr = stackSave(); var cur_stack_ptr = orig_stack_ptr; @@ -267,6 +289,15 @@ ffi_call_js, (ffi_cif *cif, ffi_fp fn, void *rvalue, void **avalue), // just use this. We also mark a flag that we don't need to convert the return // value of the dynamic call back to C. if (rtype_id === FFI_TYPE_LONGDOUBLE || rtype_id === FFI_TYPE_STRUCT) { + if (rvalue === 0) { + // NULL rvalue: the caller discards the result, but the callee still + // needs somewhere to write it. Allocate scratch space on the stack; + // it is released by the stackRestore after the call. + var rsize = DEC_PTR(FFI_TYPE__SIZE(rtype_ptr)); + var ralign = FFI_TYPE__ALIGN(rtype_ptr); + STACK_ALLOC(cur_stack_ptr, rsize, ralign); + rvalue = cur_stack_ptr; + } args.push(ENC_PTR(rvalue)); ret_by_arg = true; } @@ -430,15 +461,31 @@ ffi_call_js, (ffi_cif *cif, ffi_fp fn, void *rvalue, void **avalue), return; } + // A NULL rvalue means the caller discards the return value. + if (rvalue === 0) { + return; + } + // Otherwise the result was automatically converted from C into Javascript and // we need to manually convert it back to C. + // Integral returns narrower than a register are widened to ffi_arg, as + // documented and as every native port does -- but only genuine scalar + // returns: an unboxed small-struct return keeps its natural width. switch (rtype_id) { case FFI_TYPE_VOID: break; case FFI_TYPE_INT: - case FFI_TYPE_UINT32: case FFI_TYPE_SINT32: - DEREF_U32(rvalue, 0) = result; + if (rtype_widen) + STORE_ARG_WIDENED_SIGNED(rvalue, result | 0); + else + DEREF_U32(rvalue, 0) = result; + break; + case FFI_TYPE_UINT32: + if (rtype_widen) + STORE_ARG_WIDENED_UNSIGNED(rvalue, result | 0); + else + DEREF_U32(rvalue, 0) = result; break; case FFI_TYPE_FLOAT: DEREF_F32(rvalue, 0) = result; @@ -447,12 +494,28 @@ ffi_call_js, (ffi_cif *cif, ffi_fp fn, void *rvalue, void **avalue), DEREF_F64(rvalue, 0) = result; break; case FFI_TYPE_UINT8: + if (rtype_widen) + STORE_ARG_WIDENED_UNSIGNED(rvalue, result & 0xff); + else + DEREF_U8(rvalue, 0) = result; + break; case FFI_TYPE_SINT8: - DEREF_U8(rvalue, 0) = result; + if (rtype_widen) + STORE_ARG_WIDENED_SIGNED(rvalue, (result << 24) >> 24); + else + DEREF_U8(rvalue, 0) = result; break; case FFI_TYPE_UINT16: + if (rtype_widen) + STORE_ARG_WIDENED_UNSIGNED(rvalue, result & 0xffff); + else + DEREF_U16(rvalue, 0) = result; + break; case FFI_TYPE_SINT16: - DEREF_U16(rvalue, 0) = result; + if (rtype_widen) + STORE_ARG_WIDENED_SIGNED(rvalue, (result << 16) >> 16); + else + DEREF_U16(rvalue, 0) = result; break; case FFI_TYPE_UINT64: case FFI_TYPE_SINT64: diff --git a/deps/libffi/src/x86/ffi.c b/deps/libffi/src/x86/ffi.c index 40d153fb399e21..27f17b0c884957 100644 --- a/deps/libffi/src/x86/ffi.c +++ b/deps/libffi/src/x86/ffi.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi.c - Copyright (c) 2017, 2022 Anthony Green + ffi.c - Copyright (c) 2017, 2022, 2026 Anthony Green Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008 Red Hat, Inc. Copyright (c) 2002 Ranjit Mathew Copyright (c) 2002 Bo Thorsen @@ -554,8 +554,14 @@ ffi_closure_inner (struct closure_frame *frame, char *stack) return flags | (cif->bytes << X86_RET_POP_SHIFT); case FFI_THISCALL: case FFI_FASTCALL: - return flags | ((cif->bytes - (narg_reg * FFI_SIZEOF_ARG)) - << X86_RET_POP_SHIFT); + /* The callee must pop exactly the bytes that were passed on the + stack. Deriving that from cif->bytes minus narg_reg * 4 is wrong + once narg_reg has been force-bumped to 2 (above) for a 64-bit or + struct argument that is itself placed on the stack: the subtraction + then discounts register slots that were never used, under-popping + the stack. argp has advanced past exactly the stack-resident + arguments (dir == 1 for these ABIs), so use that directly. */ + return flags | (((unsigned) (argp - stack)) << X86_RET_POP_SHIFT); default: return flags; } diff --git a/deps/libffi/src/x86/ffi64.c b/deps/libffi/src/x86/ffi64.c index db0aa563a87947..c24db38c4364b7 100644 --- a/deps/libffi/src/x86/ffi64.c +++ b/deps/libffi/src/x86/ffi64.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffi64.c - Copyright (c) 2011, 2018, 2022 Anthony Green + ffi64.c - Copyright (c) 2011, 2018, 2022, 2026 Anthony Green Copyright (c) 2013 The Written Word, Inc. Copyright (c) 2008, 2010 Red Hat, Inc. Copyright (c) 2002, 2007 Bo Thorsen @@ -33,6 +33,8 @@ #include #include #include +#include +#include #include #include "internal64.h" @@ -734,6 +736,340 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, } #ifndef __ILP32__ +/* ===================================================================== + Precompiled argument-placement plan, used by the ffi_call_plan API. + + ffi_prep_cif_machdep classifies the signature once, but ffi_call_int then + re-derives the same per-argument placement on every call (~650 instructions + for a 3-argument call). A "plan" captures that placement as a flat move + list, built once, so the register_args + stack buffer can be filled with no + re-classification before handing off to the unchanged ffi_call_unix64. For + the common case (only 64-bit GP arguments) a direct thunk loads the values + straight into the argument registers, skipping the buffer entirely. + + A plan is built by ffi_call_plan_alloc and applied by ffi_call_plan_invoke; + the caller owns it and reuses it across calls. + + Scalar, pointer, int128, float and double arguments are handled; any struct, + complex, or x87 long double argument has no plan, so the caller's invoke + falls back to ffi_call. */ + +enum ffi_move_op +{ + FFI_MOVE_SE8, FFI_MOVE_SE16, FFI_MOVE_SE32, /* sign-extend N bytes -> gpr */ + FFI_MOVE_GP64, /* copy a full 8-byte word -> gpr */ + FFI_MOVE_GP, /* zero gpr, copy len(<8) bytes */ + FFI_MOVE_SSE64, FFI_MOVE_SSE32, /* copy 8/4 bytes -> sse slot */ + FFI_MOVE_STACK /* copy len bytes -> stack */ +}; + +typedef struct +{ + unsigned src_idx; /* avalue[] index */ + unsigned src_off; /* byte offset within avalue[src_idx] (chunk * 8) */ + unsigned dst_off; /* byte offset within the register_args+stack buf */ + unsigned len; /* bytes for FFI_MOVE_GP / FFI_MOVE_STACK */ + unsigned char op; +} ffi_move; + +typedef struct +{ + unsigned nmoves; + unsigned ssecount; /* -> reg_args->rax */ + unsigned bytes; /* stack-arg area size (== cif->bytes) */ + unsigned flags; /* == cif->flags */ + unsigned ret_in_mem; /* nonzero -> reg_args->gpr[0] = rvalue */ + unsigned fast; /* nonzero -> lean trampoline eligible */ + unsigned retcode; /* UNIX64_RET_* (low byte of flags) for the store */ + int thunk_n; /* >=0 -> ffi_gp_thunks[thunk_n], else -1 */ + ffi_move moves[]; +} ffi_plan; + +/* Return of the lean trampoline / direct thunks: callee's rax in .i, xmm0 in .d. */ +struct ffi_ret2 { UINT64 i; double d; }; +extern struct ffi_ret2 ffi_plan_fast_call (struct register_args *img, + void (*fn) (void)) FFI_HIDDEN; + +/* Count-based direct thunks: load avalue[0..N-1] into arg registers, call. */ +extern struct ffi_ret2 ffi_plan_gp0 (void **, void (*)(void)) FFI_HIDDEN; +extern struct ffi_ret2 ffi_plan_gp1 (void **, void (*)(void)) FFI_HIDDEN; +extern struct ffi_ret2 ffi_plan_gp2 (void **, void (*)(void)) FFI_HIDDEN; +extern struct ffi_ret2 ffi_plan_gp3 (void **, void (*)(void)) FFI_HIDDEN; +extern struct ffi_ret2 ffi_plan_gp4 (void **, void (*)(void)) FFI_HIDDEN; +extern struct ffi_ret2 ffi_plan_gp5 (void **, void (*)(void)) FFI_HIDDEN; +extern struct ffi_ret2 ffi_plan_gp6 (void **, void (*)(void)) FFI_HIDDEN; +static struct ffi_ret2 (*const ffi_gp_thunks[7]) (void **, void (*)(void)) = + { ffi_plan_gp0, ffi_plan_gp1, ffi_plan_gp2, ffi_plan_gp3, + ffi_plan_gp4, ffi_plan_gp5, ffi_plan_gp6 }; + +/* Store the callee return value, replicating the unix64.S store_table widths. */ +static inline void +store_ret (void *rvalue, unsigned retcode, struct ffi_ret2 r) +{ + switch (retcode) + { + case UNIX64_RET_VOID: break; + case UNIX64_RET_UINT8: *(UINT64 *) rvalue = (UINT8) r.i; break; + case UNIX64_RET_UINT16: *(UINT64 *) rvalue = (UINT16) r.i; break; + case UNIX64_RET_UINT32: *(UINT64 *) rvalue = (UINT32) r.i; break; + case UNIX64_RET_SINT8: *(UINT64 *) rvalue = (UINT64)(SINT64)(SINT8) r.i; break; + case UNIX64_RET_SINT16: *(UINT64 *) rvalue = (UINT64)(SINT64)(SINT16) r.i; break; + case UNIX64_RET_SINT32: *(UINT64 *) rvalue = (UINT64)(SINT64)(SINT32) r.i; break; + case UNIX64_RET_INT64: *(UINT64 *) rvalue = r.i; break; + case UNIX64_RET_XMM32: memcpy (rvalue, &r.d, 4); break; + case UNIX64_RET_XMM64: memcpy (rvalue, &r.d, 8); break; + } +} + +/* Build the move-list for CIF, or NULL if not plan-able (caller falls back). */ +static ffi_plan * +build_plan (ffi_cif *cif) +{ + unsigned i, avn = cif->nargs; + enum x86_64_reg_class classes[MAX_CLASSES]; + unsigned nm, gprcount, ssecount; + size_t argp_off; + ffi_plan *plan; + int all_gp64 = 1; /* every arg is exactly one 64-bit GP move? */ + + if (cif->abi != FFI_UNIX64) + return NULL; + + /* Reject arg types this cut doesn't encode; returns are handled by flags. */ + for (i = 0; i < avn; i++) + { + int t = cif->arg_types[i]->type; + if (t == FFI_TYPE_STRUCT || t == FFI_TYPE_COMPLEX) + return NULL; +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + if (t == FFI_TYPE_LONGDOUBLE) + return NULL; +#endif + } + + /* One self-contained allocation: header + moves, released with plain free(). */ + plan = malloc (sizeof (ffi_plan) + sizeof (ffi_move) * (2 * avn + 1)); + if (plan == NULL) + return NULL; + + nm = gprcount = ssecount = 0; + argp_off = 0; + plan->ret_in_mem = (cif->flags & UNIX64_FLAG_RET_IN_MEM) ? 1 : 0; + if (plan->ret_in_mem) + gprcount++; /* sret pointer occupies gpr[0] */ + + for (i = 0; i < avn; i++) + { + ffi_type *at = cif->arg_types[i]; + size_t size = at->size, n, rem; + int ngpr, nsse; + unsigned j; + + n = examine_argument (at, classes, 0, &ngpr, &nsse); + if (n == 0 + || gprcount + ngpr > MAX_GPR_REGS + || ssecount + nsse > MAX_SSE_REGS) + { + long align = at->alignment; + ffi_move *m = &plan->moves[nm++]; + all_gp64 = 0; + if (align < 8) + align = 8; + argp_off = FFI_ALIGN (argp_off, align); + m->op = FFI_MOVE_STACK; + m->src_idx = i; + m->src_off = 0; + m->dst_off = (unsigned) (sizeof (struct register_args) + argp_off); + m->len = (unsigned) size; + argp_off += size; + continue; + } + + for (j = 0, rem = size; j < n; j++, rem -= 8) + { + ffi_move m; + m.src_idx = i; + m.src_off = j * 8; + switch (classes[j]) + { + case X86_64_NO_CLASS: + case X86_64_SSEUP_CLASS: + continue; /* nothing placed for this 8-byte */ + case X86_64_INTEGER_CLASS: + case X86_64_INTEGERSI_CLASS: + m.dst_off = gprcount * 8; /* offsetof(register_args,gpr) == 0 */ + switch (at->type) + { + case FFI_TYPE_SINT8: m.op = FFI_MOVE_SE8; all_gp64 = 0; break; + case FFI_TYPE_SINT16: m.op = FFI_MOVE_SE16; all_gp64 = 0; break; + case FFI_TYPE_SINT32: m.op = FFI_MOVE_SE32; all_gp64 = 0; break; + default: + if (rem >= 8) + m.op = FFI_MOVE_GP64; + else + { m.op = FFI_MOVE_GP; m.len = (unsigned) rem; all_gp64 = 0; } + break; + } + gprcount++; + break; + case X86_64_SSE_CLASS: + case X86_64_SSEDF_CLASS: + m.dst_off = (unsigned) (offsetof (struct register_args, sse) + + ssecount * sizeof (union big_int_union)); + m.op = FFI_MOVE_SSE64; + ssecount++; + all_gp64 = 0; + break; + case X86_64_SSESF_CLASS: + m.dst_off = (unsigned) (offsetof (struct register_args, sse) + + ssecount * sizeof (union big_int_union)); + m.op = FFI_MOVE_SSE32; + ssecount++; + all_gp64 = 0; + break; + default: + free (plan); /* X87 etc. in registers: bail */ + return NULL; + } + plan->moves[nm++] = m; + } + } + + plan->nmoves = nm; + plan->ssecount = ssecount; + plan->bytes = cif->bytes; + plan->flags = cif->flags; + plan->retcode = cif->flags & 0xff; /* UNIX64_RET_* */ + /* Lean-trampoline eligible: no spilled stack args and a simple return + (VOID..XMM64, codes 0..9; RET_IN_MEM has low byte VOID). Struct-in-regs + (>=12) and x87 (10,11) returns stay on ffi_call_unix64. */ + plan->fast = (cif->bytes == 0 && plan->retcode <= UNIX64_RET_XMM64) ? 1 : 0; + /* Pure-GP64 direct thunk: every arg is one 64-bit GP value (so a plain load + per arg is exact), <=6 of them, no sret, simple return -> load avalue + straight into the arg registers, no register image. */ + plan->thunk_n = + (all_gp64 && !plan->ret_in_mem && nm == avn && avn <= MAX_GPR_REGS + && plan->fast) + ? (int) avn : -1; + return plan; +} + +/* Execute PLAN: rebuild register_args + stack buffer, then ffi_call_unix64. */ +FFI_ASAN_NO_SANITIZE +static inline __attribute__ ((always_inline)) void +plan_exec (ffi_cif *cif, ffi_plan *plan, void (*fn) (void), + void *rvalue, void **avalue) +{ + unsigned flags = plan->flags; + struct register_args local __attribute__ ((aligned (16))); + char *stack = NULL; + struct register_args *reg_args; + unsigned k; + + if (rvalue == NULL) + { + if (flags & UNIX64_FLAG_RET_IN_MEM) + rvalue = alloca (cif->rtype->size); + else + flags = UNIX64_RET_VOID; + } + + if (plan->thunk_n >= 0) + { + /* Pure-GP64: load avalue straight into arg regs, no image at all. */ + struct ffi_ret2 r = ffi_gp_thunks[plan->thunk_n] (avalue, fn); + if (rvalue != NULL) + store_ret (rvalue, plan->retcode, r); + return; + } + + if (plan->fast) + reg_args = &local; /* no stack args: fixed local image */ + else + { + stack = alloca (sizeof (struct register_args) + plan->bytes + 4 * 8); + reg_args = (struct register_args *) stack; + } + reg_args->r10 = 0; /* closure (none for ffi_call) */ + if (plan->ret_in_mem) + reg_args->gpr[0] = (UINT64) (uintptr_t) rvalue; + + for (k = 0; k < plan->nmoves; k++) + { + ffi_move *m = &plan->moves[k]; + char *src = (char *) avalue[m->src_idx] + m->src_off; + char *dst = (char *) reg_args + m->dst_off; + switch (m->op) + { + /* x86-64: unaligned scalar loads from avalue[] are fine. */ + case FFI_MOVE_SE8: *(UINT64 *) dst = (UINT64) (SINT64) *(SINT8 *) src; break; + case FFI_MOVE_SE16: *(UINT64 *) dst = (UINT64) (SINT64) *(SINT16 *) src; break; + case FFI_MOVE_SE32: *(UINT64 *) dst = (UINT64) (SINT64) *(SINT32 *) src; break; + case FFI_MOVE_GP64: *(UINT64 *) dst = *(UINT64 *) src; break; + case FFI_MOVE_GP: *(UINT64 *) dst = 0; memcpy (dst, src, m->len); break; + case FFI_MOVE_SSE64: *(UINT64 *) dst = *(UINT64 *) src; break; + case FFI_MOVE_SSE32: *(UINT32 *) dst = *(UINT32 *) src; break; + case FFI_MOVE_STACK: memcpy (dst, src, m->len); break; + } + } + reg_args->rax = plan->ssecount; + + if (plan->fast) + { + /* No stack args; lean trampoline + return store replicating the + unix64.S store_table widths. ret_in_mem already wrote gpr[0]. */ + struct ffi_ret2 r = ffi_plan_fast_call (reg_args, fn); + if (rvalue != NULL) + store_ret (rvalue, plan->retcode, r); + return; + } + + ffi_call_unix64 (stack, plan->bytes + sizeof (struct register_args), + flags, rvalue, fn); +} + +/* Reusable call plan: an opaque, caller-owned handle wrapping a prebuilt plan. + ffi_call_plan_invoke applies it directly, skipping the per-call argument + classification ffi_call does every time. Signatures with no fast path + (FAST is NULL) fall back to ffi_call. The plan is immutable after alloc, so + it carries no per-thread state and can be invoked from any thread. */ +struct ffi_call_plan +{ + ffi_cif *cif; + ffi_plan *fast; /* prebuilt plan, or NULL -> fall back to ffi_call */ +}; + +ffi_call_plan * +ffi_call_plan_alloc (ffi_cif *cif) +{ + ffi_call_plan *plan = malloc (sizeof (struct ffi_call_plan)); + if (plan == NULL) + return NULL; + plan->cif = cif; + plan->fast = build_plan (cif); /* NULL if this signature has no fast path */ + return plan; +} + +void +ffi_call_plan_invoke (ffi_call_plan *plan, void (*fn) (void), + void *rvalue, void **avalue) +{ + if (plan->fast != NULL) + plan_exec (plan->cif, plan->fast, fn, rvalue, avalue); + else + ffi_call (plan->cif, fn, rvalue, avalue); +} + +void +ffi_call_plan_free (ffi_call_plan *plan) +{ + if (plan != NULL) + { + free (plan->fast); + free (plan); + } +} + extern void ffi_call_efi64(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue); #endif @@ -742,11 +1078,13 @@ void ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) { ffi_type **arg_types = cif->arg_types; + void **avalue_copy = NULL; int i, nargs = cif->nargs; const int max_reg_struct_size = cif->abi == FFI_GNUW64 ? 8 : 16; /* If we have any large structure arguments, make a copy so we are passing - by value. */ + by value. The pointer array is cloned first: the caller owns avalue[] + and may reuse it for another call, so it must not be modified. */ for (i = 0; i < nargs; i++) { ffi_type *at = arg_types[i]; @@ -754,6 +1092,12 @@ ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) if (at->type == FFI_TYPE_STRUCT && size > max_reg_struct_size) { char *argcopy = alloca (size); + if (avalue_copy == NULL) + { + avalue_copy = alloca (nargs * sizeof (void *)); + memcpy (avalue_copy, avalue, nargs * sizeof (void *)); + avalue = avalue_copy; + } memcpy (argcopy, avalue[i], size); avalue[i] = argcopy; } @@ -884,6 +1228,7 @@ ffi_closure_unix64_inner(ffi_cif *cif, avn = cif->nargs; flags = cif->flags; + avalue = alloca(avn * sizeof(void *)); gprcount = ssecount = 0; @@ -940,7 +1285,7 @@ ffi_closure_unix64_inner(ffi_cif *cif, /* Otherwise, allocate space to make them consecutive. */ else { - char *a = alloca (16); + char *a = alloca (n * 8); unsigned int j; avalue[i] = a; diff --git a/deps/libffi/src/x86/ffitarget.h b/deps/libffi/src/x86/ffitarget.h index 995469b0f59b2c..d702235f90fed5 100644 --- a/deps/libffi/src/x86/ffitarget.h +++ b/deps/libffi/src/x86/ffitarget.h @@ -1,5 +1,5 @@ /* -----------------------------------------------------------------*-C-*- - ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green + ffitarget.h - Copyright (c) 2012, 2014, 2018, 2026 Anthony Green Copyright (c) 1996-2003, 2010 Red Hat, Inc. Copyright (C) 2008 Free Software Foundation, Inc. diff --git a/deps/libffi/src/x86/ffiw64.c b/deps/libffi/src/x86/ffiw64.c index 37d9a7e9c036d9..f8db4e0d96236b 100644 --- a/deps/libffi/src/x86/ffiw64.c +++ b/deps/libffi/src/x86/ffiw64.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - ffiw64.c - Copyright (c) 2018 Anthony Green + ffiw64.c - Copyright (c) 2018, 2026 Anthony Green Copyright (c) 2014 Red Hat, Inc. x86 win64 Foreign Function Interface @@ -126,12 +126,15 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, size_t rsize; struct win64_call_frame *frame; ffi_type **arg_types = cif->arg_types; + void **avalue_copy = NULL; int nargs = cif->nargs; FFI_ASSERT(cif->abi == FFI_GNUW64 || cif->abi == FFI_WIN64); /* If we have any int128 or irregularly sized structure arguments, - make a copy so we are passing by value. */ + make a copy so we are passing by value. The pointer array is cloned + first: the caller owns avalue[] and may reuse it for another call, + so it must not be modified. */ for (i = 0; i < nargs; i++) { ffi_type *at = arg_types[i]; @@ -159,6 +162,12 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, if (needcopy) { char *argcopy = alloca (size); + if (avalue_copy == NULL) + { + avalue_copy = alloca (nargs * sizeof (void *)); + memcpy (avalue_copy, avalue, nargs * sizeof (void *)); + avalue = avalue_copy; + } memcpy (argcopy, avalue[i], size); avalue[i] = argcopy; } diff --git a/deps/libffi/src/x86/sysv.S b/deps/libffi/src/x86/sysv.S index b5969df1560143..dac841421d9b2b 100644 --- a/deps/libffi/src/x86/sysv.S +++ b/deps/libffi/src/x86/sysv.S @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - sysv.S - Copyright (c) 2017 Anthony Green + sysv.S - Copyright (c) 2017, 2026 Anthony Green - Copyright (c) 2013 The Written Word, Inc. - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc. @@ -1269,6 +1269,6 @@ L(EFDE9): #endif /* ifdef __i386__ */ -#if defined __ELF__ && defined __linux__ +#if defined __ELF__ && (defined __linux__ || defined __FreeBSD__) .section .note.GNU-stack,"",@progbits #endif diff --git a/deps/libffi/src/x86/sysv_intel.S b/deps/libffi/src/x86/sysv_intel.S index efdde14ac20290..c7de159916ac9c 100644 --- a/deps/libffi/src/x86/sysv_intel.S +++ b/deps/libffi/src/x86/sysv_intel.S @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------- - sysv.S - Copyright (c) 2017, 2022 Anthony Green + sysv.S - Copyright (c) 2017, 2022, 2026 Anthony Green - Copyright (c) 2013 The Written Word, Inc. - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc. @@ -992,7 +992,7 @@ L(EFDE9): #endif /* ifndef _MSC_VER */ #endif /* ifndef __x86_64__ */ -#if defined __ELF__ && defined __linux__ +#if defined __ELF__ && (defined __linux__ || defined __FreeBSD__) .section .note.GNU-stack,"",@progbits #endif #endif diff --git a/deps/libffi/src/x86/unix64.S b/deps/libffi/src/x86/unix64.S index da30ab7577a7c3..61983ef3bcf5ec 100644 --- a/deps/libffi/src/x86/unix64.S +++ b/deps/libffi/src/x86/unix64.S @@ -2,6 +2,7 @@ unix64.S - Copyright (c) 2013 The Written Word, Inc. - Copyright (c) 2008 Red Hat, Inc - Copyright (c) 2002 Bo Thorsen + - Copyright (c) 2026 Anthony Green x86-64 Foreign Function Interface @@ -242,6 +243,154 @@ L(load_sse): L(UW4): ENDF(C(ffi_call_unix64)) +/* Lean trampoline for the plan fast path: no stack args, simple return. + struct { UINT64 rax; double xmm0; } + ffi_plan_fast_call (struct register_args *img /rdi/, void (*fn)(void) /rsi/); + + Loads the argument registers from IMG, calls FN, and lets the callee's + rax/xmm0 flow straight out as this function's {UINT64,double} return -- so + the C caller recovers both with no return-dispatch table. Skips the frame + relocation that ffi_call_unix64 needs only for stack args and struct/x87 + returns. Caller guarantees img has no spilled stack arguments. */ + .balign 8 + .globl C(ffi_plan_fast_call) + FFI_HIDDEN(C(ffi_plan_fast_call)) +C(ffi_plan_fast_call): + .cfi_startproc + _CET_ENDBR + movq %rsi, %r11 /* fn */ + movq %rdi, %rax /* img */ + movl 0xb0(%rax), %r10d /* ssecount */ + testl %r10d, %r10d + jz 1f + movdqa 0x30(%rax), %xmm0 + movdqa 0x40(%rax), %xmm1 + movdqa 0x50(%rax), %xmm2 + movdqa 0x60(%rax), %xmm3 + movdqa 0x70(%rax), %xmm4 + movdqa 0x80(%rax), %xmm5 + movdqa 0x90(%rax), %xmm6 + movdqa 0xa0(%rax), %xmm7 +1: + movq 0x00(%rax), %rdi + movq 0x08(%rax), %rsi + movq 0x10(%rax), %rdx + movq 0x18(%rax), %rcx + movq 0x20(%rax), %r8 + movq 0x28(%rax), %r9 + movl %r10d, %eax /* %al = ssecount */ + subq $8, %rsp /* realign to 16 across the call */ + .cfi_adjust_cfa_offset 8 + call *%r11 + addq $8, %rsp + .cfi_adjust_cfa_offset -8 + ret /* rax + xmm0 carry the callee's return */ + .cfi_endproc + ENDF(C(ffi_plan_fast_call)) + +/* Count-based direct thunks for the pure-GP64 fast path: load avalue[0..N-1] + straight into the argument registers (no register_args image) and call. + struct { UINT64 rax; double xmm0; } + ffi_plan_gpN (void **avalue /rdi/, void (*fn)(void) /rsi/); + Eligible only when every arg is a single 64-bit GP value (no sign-extension, + no SSE, no stack spill, no sret) -- so a plain 8-byte load per arg is exact. + rax/xmm0 flow out as the {UINT64,double} return; C stores per return code. */ + +#define FFI_GP_HEAD \ + .cfi_startproc; \ + _CET_ENDBR; \ + movq %rsi, %r11; \ + movq %rdi, %rax +#define FFI_GP_LD(OFS, REG) \ + movq OFS(%rax), %r10; \ + movq (%r10), REG +#define FFI_GP_TAIL \ + xorl %eax, %eax; \ + subq $8, %rsp; \ + .cfi_adjust_cfa_offset 8; \ + call *%r11; \ + addq $8, %rsp; \ + .cfi_adjust_cfa_offset -8; \ + ret; \ + .cfi_endproc + + .balign 8 + .globl C(ffi_plan_gp0) + FFI_HIDDEN(C(ffi_plan_gp0)) +C(ffi_plan_gp0): + FFI_GP_HEAD + FFI_GP_TAIL + ENDF(C(ffi_plan_gp0)) + + .balign 8 + .globl C(ffi_plan_gp1) + FFI_HIDDEN(C(ffi_plan_gp1)) +C(ffi_plan_gp1): + FFI_GP_HEAD + FFI_GP_LD(0x00, %rdi) + FFI_GP_TAIL + ENDF(C(ffi_plan_gp1)) + + .balign 8 + .globl C(ffi_plan_gp2) + FFI_HIDDEN(C(ffi_plan_gp2)) +C(ffi_plan_gp2): + FFI_GP_HEAD + FFI_GP_LD(0x08, %rsi) + FFI_GP_LD(0x00, %rdi) + FFI_GP_TAIL + ENDF(C(ffi_plan_gp2)) + + .balign 8 + .globl C(ffi_plan_gp3) + FFI_HIDDEN(C(ffi_plan_gp3)) +C(ffi_plan_gp3): + FFI_GP_HEAD + FFI_GP_LD(0x08, %rsi) + FFI_GP_LD(0x10, %rdx) + FFI_GP_LD(0x00, %rdi) + FFI_GP_TAIL + ENDF(C(ffi_plan_gp3)) + + .balign 8 + .globl C(ffi_plan_gp4) + FFI_HIDDEN(C(ffi_plan_gp4)) +C(ffi_plan_gp4): + FFI_GP_HEAD + FFI_GP_LD(0x08, %rsi) + FFI_GP_LD(0x10, %rdx) + FFI_GP_LD(0x18, %rcx) + FFI_GP_LD(0x00, %rdi) + FFI_GP_TAIL + ENDF(C(ffi_plan_gp4)) + + .balign 8 + .globl C(ffi_plan_gp5) + FFI_HIDDEN(C(ffi_plan_gp5)) +C(ffi_plan_gp5): + FFI_GP_HEAD + FFI_GP_LD(0x08, %rsi) + FFI_GP_LD(0x10, %rdx) + FFI_GP_LD(0x18, %rcx) + FFI_GP_LD(0x20, %r8) + FFI_GP_LD(0x00, %rdi) + FFI_GP_TAIL + ENDF(C(ffi_plan_gp5)) + + .balign 8 + .globl C(ffi_plan_gp6) + FFI_HIDDEN(C(ffi_plan_gp6)) +C(ffi_plan_gp6): + FFI_GP_HEAD + FFI_GP_LD(0x08, %rsi) + FFI_GP_LD(0x10, %rdx) + FFI_GP_LD(0x18, %rcx) + FFI_GP_LD(0x20, %r8) + FFI_GP_LD(0x28, %r9) + FFI_GP_LD(0x00, %rdi) + FFI_GP_TAIL + ENDF(C(ffi_plan_gp6)) + /* 6 general registers, 8 vector registers, 32 bytes of rvalue, 8 bytes of alignment. */ #define ffi_closure_OFS_G 0 @@ -724,6 +873,6 @@ L(EFDE5): #endif #endif /* __x86_64__ */ -#if defined __ELF__ && defined __linux__ +#if defined __ELF__ && (defined __linux__ || defined __FreeBSD__) .section .note.GNU-stack,"",@progbits #endif diff --git a/deps/libffi/src/x86/win64.S b/deps/libffi/src/x86/win64.S index e994fa9e1eea62..185f0a3048fba7 100644 --- a/deps/libffi/src/x86/win64.S +++ b/deps/libffi/src/x86/win64.S @@ -255,6 +255,6 @@ C(ffi_closure_win64_alt): #endif #endif /* __x86_64__ */ -#if defined __ELF__ && defined __linux__ +#if defined __ELF__ && (defined __linux__ || defined __FreeBSD__) .section .note.GNU-stack,"",@progbits #endif diff --git a/deps/libffi/src/x86/win64_intel.S b/deps/libffi/src/x86/win64_intel.S index b278a7440040d4..e9eff00da3ce6d 100644 --- a/deps/libffi/src/x86/win64_intel.S +++ b/deps/libffi/src/x86/win64_intel.S @@ -237,7 +237,7 @@ ffi_closure_win64_2 LABEL near cfi_endproc C(ffi_closure_win64) endp -#if defined __ELF__ && defined __linux__ +#if defined __ELF__ && (defined __linux__ || defined __FreeBSD__) .section .note.GNU-stack,"",@progbits #endif _text ends diff --git a/deps/libffi/testsuite/Makefile.am b/deps/libffi/testsuite/Makefile.am index 2e422b9a44e8e0..c14a880959d835 100644 --- a/deps/libffi/testsuite/Makefile.am +++ b/deps/libffi/testsuite/Makefile.am @@ -15,9 +15,13 @@ EXTRA_DIST = config/default.exp emscripten/build.sh emscripten/conftest.py \ libffi.call/align_stdcall.c libffi.call/bpo_38748.c libffi.call/call.exp \ libffi.call/err_bad_typedef.c libffi.call/ffitest.h libffi.call/float.c \ libffi.call/float1.c libffi.call/float2.c libffi.call/float3.c \ - libffi.call/float4.c libffi.call/float_va.c libffi.call/many.c \ + libffi.call/float4.c libffi.call/float_va.c libffi.call/i128-1.c \ + libffi.call/large_struct_by_value.c libffi.call/many.c \ libffi.call/many2.c libffi.call/many_double.c libffi.call/many_mixed.c \ + libffi.call/many_small_structs.c \ libffi.call/negint.c libffi.call/offsets.c libffi.call/overread.c \ + libffi.call/plan.c libffi.call/plan_mixed.c libffi.call/plan_spill.c \ + libffi.call/plan_struct.c libffi.call/plan_var.c \ libffi.call/pr1172638.c libffi.call/promotion.c libffi.call/pyobjc_tc.c libffi.call/return_dbl.c \ libffi.call/return_dbl1.c libffi.call/return_dbl2.c libffi.call/return_fl.c \ libffi.call/return_fl1.c libffi.call/return_fl2.c libffi.call/return_fl3.c \ @@ -77,7 +81,7 @@ EXTRA_DIST = config/default.exp emscripten/build.sh emscripten/conftest.py \ libffi.complex/cls_complex_va_double.c libffi.complex/cls_complex_va_float.c libffi.complex/cls_complex_va_longdouble.c \ libffi.complex/complex.exp libffi.complex/complex.inc libffi.complex/complex_defs_double.inc \ libffi.complex/complex_defs_float.inc libffi.complex/complex_defs_longdouble.inc libffi.complex/complex_double.c \ - libffi.complex/complex_float.c libffi.complex/complex_int.c libffi.complex/complex_longdouble.c \ + libffi.complex/complex_float.c libffi.complex/complex_i128.c libffi.complex/complex_int.c libffi.complex/complex_longdouble.c \ libffi.complex/ffitest.h libffi.complex/many_complex.inc libffi.complex/many_complex_double.c \ libffi.complex/many_complex_float.c libffi.complex/many_complex_longdouble.c libffi.complex/return_complex.inc \ libffi.complex/return_complex1.inc libffi.complex/return_complex1_double.c libffi.complex/return_complex1_float.c \ diff --git a/deps/libffi/testsuite/Makefile.in b/deps/libffi/testsuite/Makefile.in index 04f864ca251555..1b29b90d363346 100644 --- a/deps/libffi/testsuite/Makefile.in +++ b/deps/libffi/testsuite/Makefile.in @@ -303,9 +303,13 @@ EXTRA_DIST = config/default.exp emscripten/build.sh emscripten/conftest.py \ libffi.call/align_stdcall.c libffi.call/bpo_38748.c libffi.call/call.exp \ libffi.call/err_bad_typedef.c libffi.call/ffitest.h libffi.call/float.c \ libffi.call/float1.c libffi.call/float2.c libffi.call/float3.c \ - libffi.call/float4.c libffi.call/float_va.c libffi.call/many.c \ + libffi.call/float4.c libffi.call/float_va.c libffi.call/i128-1.c \ + libffi.call/large_struct_by_value.c libffi.call/many.c \ libffi.call/many2.c libffi.call/many_double.c libffi.call/many_mixed.c \ + libffi.call/many_small_structs.c \ libffi.call/negint.c libffi.call/offsets.c libffi.call/overread.c \ + libffi.call/plan.c libffi.call/plan_mixed.c libffi.call/plan_spill.c \ + libffi.call/plan_struct.c libffi.call/plan_var.c \ libffi.call/pr1172638.c libffi.call/promotion.c libffi.call/pyobjc_tc.c libffi.call/return_dbl.c \ libffi.call/return_dbl1.c libffi.call/return_dbl2.c libffi.call/return_fl.c \ libffi.call/return_fl1.c libffi.call/return_fl2.c libffi.call/return_fl3.c \ @@ -365,7 +369,7 @@ EXTRA_DIST = config/default.exp emscripten/build.sh emscripten/conftest.py \ libffi.complex/cls_complex_va_double.c libffi.complex/cls_complex_va_float.c libffi.complex/cls_complex_va_longdouble.c \ libffi.complex/complex.exp libffi.complex/complex.inc libffi.complex/complex_defs_double.inc \ libffi.complex/complex_defs_float.inc libffi.complex/complex_defs_longdouble.inc libffi.complex/complex_double.c \ - libffi.complex/complex_float.c libffi.complex/complex_int.c libffi.complex/complex_longdouble.c \ + libffi.complex/complex_float.c libffi.complex/complex_i128.c libffi.complex/complex_int.c libffi.complex/complex_longdouble.c \ libffi.complex/ffitest.h libffi.complex/many_complex.inc libffi.complex/many_complex_double.c \ libffi.complex/many_complex_float.c libffi.complex/many_complex_longdouble.c libffi.complex/return_complex.inc \ libffi.complex/return_complex1.inc libffi.complex/return_complex1_double.c libffi.complex/return_complex1_float.c \ diff --git a/deps/libffi/testsuite/lib/libffi.exp b/deps/libffi/testsuite/lib/libffi.exp index 0a98a07daf6702..55afb8f094a026 100644 --- a/deps/libffi/testsuite/lib/libffi.exp +++ b/deps/libffi/testsuite/lib/libffi.exp @@ -411,6 +411,10 @@ proc libffi_target_compile { source dest type options } { lappend options "libs= -lpthread" } + if { [string match "*-*-netbsd*" $target_triplet] } { + lappend options "libs= -lpthread" + } + lappend options "libs= -lffi" if { [string match "aarch64*-*-linux*" $target_triplet] } { diff --git a/deps/libffi/testsuite/libffi.call/i128-1.c b/deps/libffi/testsuite/libffi.call/i128-1.c new file mode 100644 index 00000000000000..1395f5e9426026 --- /dev/null +++ b/deps/libffi/testsuite/libffi.call/i128-1.c @@ -0,0 +1,103 @@ +/* Area: ffi_call + Purpose: Check int128 call and return. + Limitations: none. + PR: none. */ + +/* { dg-do run } */ +#include "ffitest.h" + +#if defined(FFI_TARGET_HAS_INT128) && defined(__SIZEOF_INT128__) + +typedef __int128_t i128; + +static const i128 val = ((i128)0x01020304050607ull << 64) | 0x08090a0b0c0d0e0full; +static const int dummy = 0xdeadbeef; + +#define D(X) int X __attribute__((unused)) + +static i128 f0(i128 x) +{ + return x; +} + +static i128 f1(D(a), i128 x) +{ + return x; +} + +static i128 f2(D(a), D(b), i128 x) +{ + return x; +} + +static i128 f3(D(a), D(b), D(c), i128 x) +{ + return x; +} + +static i128 f4(D(a), D(b), D(c), D(d), i128 x) +{ + return x; +} + +static i128 f5(D(a), D(b), D(c), D(d), D(e), i128 x) +{ + return x; +} + +static i128 f6(D(a), D(b), D(c), D(d), D(e), D(f), i128 x) +{ + return x; +} + +static i128 f7(D(a), D(b), D(c), D(d), D(e), D(f), D(g), i128 x) +{ + return x; +} + +static i128 f8(D(a), D(b), D(c), D(d), D(e), D(f), D(g), D(h), i128 x) +{ + return x; +} + +#define N 9 + +static void * const funcs[N] = { + f0, f1, f2, f3, f4, f5, f6, f7, f8 +}; + +int main (void) +{ + int i; + + for (i = 0; i < N; i++) + { + ffi_cif cif; + ffi_status s; + ffi_type *args[N]; + void *values[N]; + i128 ret; + int j; + + for (j = 0; j < i; j++) + { + args[j] = &ffi_type_sint; + values[j] = (void *)&dummy; + } + args[i] = &ffi_type_sint128; + values[i] = (void *)&val; + + s = ffi_prep_cif(&cif, FFI_DEFAULT_ABI, i + 1, + &ffi_type_sint128, args); + CHECK(s == FFI_OK); + + ffi_call(&cif, FFI_FN(funcs[i]), &ret, values); + CHECK(ret == val); + } + + return 0; +} + +#else +int main (void) { return 0; } +#endif diff --git a/deps/libffi/testsuite/libffi.call/large_struct_by_value.c b/deps/libffi/testsuite/libffi.call/large_struct_by_value.c new file mode 100644 index 00000000000000..016870dfe1096c --- /dev/null +++ b/deps/libffi/testsuite/libffi.call/large_struct_by_value.c @@ -0,0 +1,63 @@ +/* Area: ffi_call + Purpose: Pass a large struct by value (more words than arg registers). + Limitations: none. + PR: none. + Originator: secscan regression (ARCompact used_stack overflow). + + Regression test: on ARCompact (ARC 32-bit), ffi_call_int sized the stack + argument area at two words per argument, but a by-value struct is marshalled + one word ("atom") at a time, and words beyond the argument registers were + written to that under-sized area without bound. Passing a 64-byte struct by + value (sixteen 32-bit words, eight more than the eight argument registers) + must marshal correctly and return the expected sum. */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct { int v[8]; } big_struct; + +static int ABI_ATTR +sum_big (big_struct s) +{ + int i, sum = 0; + for (i = 0; i < 8; i++) + sum += s.v[i]; + return sum; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[1]; + void *values[1]; + ffi_type bs_type; + ffi_type *bs_elements[9]; + big_struct in; + ffi_arg result = 0; + int i, expected = 0; + + bs_type.size = 0; + bs_type.alignment = 0; + bs_type.type = FFI_TYPE_STRUCT; + for (i = 0; i < 8; i++) + bs_elements[i] = &ffi_type_sint; + bs_elements[8] = NULL; + bs_type.elements = bs_elements; + + for (i = 0; i < 8; i++) + { + in.v[i] = 0x1111 * (i + 1); + expected += in.v[i]; + } + + args[0] = &bs_type; + values[0] = ∈ + + CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, &ffi_type_sint, args) == FFI_OK); + + ffi_call(&cif, FFI_FN(sum_big), &result, values); + + CHECK((int) result == expected); + + exit(0); +} diff --git a/deps/libffi/testsuite/libffi.call/many_small_structs.c b/deps/libffi/testsuite/libffi.call/many_small_structs.c new file mode 100644 index 00000000000000..242c38cfc135bf --- /dev/null +++ b/deps/libffi/testsuite/libffi.call/many_small_structs.c @@ -0,0 +1,92 @@ +/* Area: ffi_call + Purpose: Pass many small (8-byte) structs by value. + Limitations: none. + PR: none. + Originator: secscan regression (PA-RISC 32-bit slot under-count). + + Regression test: on PA-RISC 32-bit (FFI_PA32), ffi_size_stack_pa32 reserves + one stack slot per struct (pa/ffi.c: "z += 1"), but ffi_prep_args_pa32 + consumes two slots for a 5-8 byte struct passed inline. ffi_call_pa32 sets + the argument base to sp + cif->bytes and ffi_prep_args_pa32 writes each + argument at (base - slot*4), so once the marshaller's slot count exceeds + cif->bytes/4 the writes spill below sp -- first into the 64-byte register + save area, then over ffi_call_pa32's own saved return pointer. + + A few small structs only overflow into harmless scratch (the call still + returns correctly), so this uses enough 8-byte structs that the overflow + reaches the saved return pointer and corrupts the return path. On a correct + backend all arguments marshal within the allocated frame and the call simply + returns the expected sums; the test passes everywhere except an unfixed + FFI_PA32. */ + +/* { dg-do run } */ +#include "ffitest.h" + +typedef struct { int a; int b; } small_struct; + +#define NARGS 40 + +static small_struct ABI_ATTR +many_small (small_struct s0, small_struct s1, small_struct s2, small_struct s3, + small_struct s4, small_struct s5, small_struct s6, small_struct s7, + small_struct s8, small_struct s9, small_struct s10, small_struct s11, + small_struct s12, small_struct s13, small_struct s14, small_struct s15, + small_struct s16, small_struct s17, small_struct s18, small_struct s19, + small_struct s20, small_struct s21, small_struct s22, small_struct s23, + small_struct s24, small_struct s25, small_struct s26, small_struct s27, + small_struct s28, small_struct s29, small_struct s30, small_struct s31, + small_struct s32, small_struct s33, small_struct s34, small_struct s35, + small_struct s36, small_struct s37, small_struct s38, small_struct s39) +{ + small_struct r; + r.a = s0.a + s1.a + s2.a + s3.a + s4.a + s5.a + s6.a + s7.a + + s8.a + s9.a + s10.a + s11.a + s12.a + s13.a + s14.a + s15.a + + s16.a + s17.a + s18.a + s19.a + s20.a + s21.a + s22.a + s23.a + + s24.a + s25.a + s26.a + s27.a + s28.a + s29.a + s30.a + s31.a + + s32.a + s33.a + s34.a + s35.a + s36.a + s37.a + s38.a + s39.a; + r.b = s0.b + s1.b + s2.b + s3.b + s4.b + s5.b + s6.b + s7.b + + s8.b + s9.b + s10.b + s11.b + s12.b + s13.b + s14.b + s15.b + + s16.b + s17.b + s18.b + s19.b + s20.b + s21.b + s22.b + s23.b + + s24.b + s25.b + s26.b + s27.b + s28.b + s29.b + s30.b + s31.b + + s32.b + s33.b + s34.b + s35.b + s36.b + s37.b + s38.b + s39.b; + return r; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[NARGS]; + void *values[NARGS]; + ffi_type ss_type; + ffi_type *ss_elements[3]; + small_struct in[NARGS]; + small_struct result = { 0, 0 }; + int i, expected_a = 0, expected_b = 0; + + ss_type.size = 0; + ss_type.alignment = 0; + ss_type.type = FFI_TYPE_STRUCT; + ss_type.elements = ss_elements; + ss_elements[0] = &ffi_type_sint; + ss_elements[1] = &ffi_type_sint; + ss_elements[2] = NULL; + + for (i = 0; i < NARGS; i++) + { + in[i].a = i + 1; + in[i].b = -(i + 1); + expected_a += in[i].a; + expected_b += in[i].b; + args[i] = &ss_type; + values[i] = &in[i]; + } + + CHECK(ffi_prep_cif(&cif, ABI_NUM, NARGS, &ss_type, args) == FFI_OK); + + ffi_call(&cif, FFI_FN(many_small), &result, values); + + CHECK(result.a == expected_a); + CHECK(result.b == expected_b); + + exit(0); +} diff --git a/deps/libffi/testsuite/libffi.call/plan.c b/deps/libffi/testsuite/libffi.call/plan.c new file mode 100644 index 00000000000000..afed0977e6b1cb --- /dev/null +++ b/deps/libffi/testsuite/libffi.call/plan.c @@ -0,0 +1,127 @@ +/* Area: ffi_call_plan + Purpose: Check that a reusable call plan reproduces ffi_call for the + pure-GP64 fast path, pointer arguments and repeated reuse, + and that a signature with no fast path still yields a usable + plan that falls back to ffi_call. + Limitations: none. + PR: none. + Originator: ffi_call_plan tests */ + +/* { dg-do run } */ +#include "ffitest.h" + +static uint64_t gp6(uint64_t a, uint64_t b, uint64_t c, + uint64_t d, uint64_t e, uint64_t f) +{ + return a + b * 2 + c * 3 + d * 4 + e * 5 + f * 6; +} + +static void *ptr_ident(void *p) +{ + return p; +} + +struct small_pair { long x; long y; }; + +static long ssum(struct small_pair s) +{ + return s.x - s.y; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[6]; + void *values[6]; + ffi_call_plan *plan; + uint64_t a[6], r_call, r_plan; + int i, k; + + /* Pure GP64: every argument is one 64-bit integer, so build_plan + selects the ffi_plan_gpN direct thunk. Reuse the plan across many + invocations with changing values. */ + for (i = 0; i < 6; i++) + args[i] = &ffi_type_uint64; + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 6, &ffi_type_uint64, args) + == FFI_OK); + plan = ffi_call_plan_alloc(&cif); + CHECK(plan != NULL); + + for (k = 0; k < 100; k++) + { + for (i = 0; i < 6; i++) + { + a[i] = (uint64_t) (k * 7 + i + 1); + values[i] = &a[i]; + } + ffi_call(&cif, FFI_FN(gp6), &r_call, values); + ffi_call_plan_invoke(plan, FFI_FN(gp6), &r_plan, values); + CHECK(r_call == r_plan); + CHECK(r_plan == gp6(a[0], a[1], a[2], a[3], a[4], a[5])); + } + ffi_call_plan_free(plan); + + /* Pointer argument and pointer return. */ + { + ffi_cif cifp; + ffi_type *pargs[1]; + void *pvalues[1]; + void *in, *rc, *rp; + ffi_call_plan *planp; + + pargs[0] = &ffi_type_pointer; + CHECK(ffi_prep_cif(&cifp, FFI_DEFAULT_ABI, 1, &ffi_type_pointer, pargs) + == FFI_OK); + planp = ffi_call_plan_alloc(&cifp); + CHECK(planp != NULL); + + in = &cifp; + pvalues[0] = ∈ + ffi_call(&cifp, FFI_FN(ptr_ident), &rc, pvalues); + ffi_call_plan_invoke(planp, FFI_FN(ptr_ident), &rp, pvalues); + CHECK(rc == in); + CHECK(rp == in); + ffi_call_plan_free(planp); + } + + /* No fast path: a struct-by-value argument. build_plan returns NULL for + the fast plan, but ffi_call_plan_alloc must still hand back a valid plan + whose invoke falls back to ffi_call and produces the same result. */ + { + ffi_cif cifs; + ffi_type *sargs[1]; + ffi_type stype; + ffi_type *selements[3]; + void *svalues[1]; + struct small_pair s; + ffi_arg rc, rp; + ffi_call_plan *plans; + + selements[0] = &ffi_type_slong; + selements[1] = &ffi_type_slong; + selements[2] = NULL; + stype.size = stype.alignment = 0; + stype.type = FFI_TYPE_STRUCT; + stype.elements = selements; + + sargs[0] = &stype; + CHECK(ffi_prep_cif(&cifs, FFI_DEFAULT_ABI, 1, &ffi_type_slong, sargs) + == FFI_OK); + plans = ffi_call_plan_alloc(&cifs); + CHECK(plans != NULL); + + s.x = 123; + s.y = 45; + svalues[0] = &s; + ffi_call(&cifs, FFI_FN(ssum), &rc, svalues); + ffi_call_plan_invoke(plans, FFI_FN(ssum), &rp, svalues); + CHECK(rc == rp); + CHECK((long) rp == ssum(s)); + ffi_call_plan_free(plans); + } + + /* Freeing NULL is documented to be harmless. */ + ffi_call_plan_free(NULL); + + exit(0); +} diff --git a/deps/libffi/testsuite/libffi.call/plan_mixed.c b/deps/libffi/testsuite/libffi.call/plan_mixed.c new file mode 100644 index 00000000000000..54b1f6290c4422 --- /dev/null +++ b/deps/libffi/testsuite/libffi.call/plan_mixed.c @@ -0,0 +1,153 @@ +/* Area: ffi_call_plan + Purpose: Check that a reusable call plan reproduces ffi_call for + signatures that mix general-purpose and SSE registers, for + float and double returns, for signed narrow arguments, and + for integer returns narrower than a register (which the plan + must widen to ffi_arg exactly as ffi_call does). + Limitations: none. + PR: none. + Originator: ffi_call_plan tests */ + +/* { dg-do run } */ +#include "ffitest.h" + +static double mixed(int a, double b, long c, float d, + long long e, double f) +{ + return (double) a + b + (double) c + (double) d + (double) e + f; +} + +static float faddf(float a, float b) +{ + return a + b; +} + +static signed char ret_sc(signed char x) +{ + return (signed char) (x + 1); +} + +static unsigned char ret_uc(unsigned char x) +{ + return (unsigned char) (x + 1); +} + +int main (void) +{ + /* Mixed GP + SSE arguments, double return: exercises the fast local-image + path with both integer and SSE moves and the ssecount (al) setup. */ + { + ffi_cif cif; + ffi_type *args[6]; + void *values[6]; + ffi_call_plan *plan; + int a = 3; + double b = 1.5, f = -2.25, rc, rp; + long c = 7; + float d = 0.5f; + long long e = -11; + + args[0] = &ffi_type_sint; + args[1] = &ffi_type_double; + args[2] = &ffi_type_slong; + args[3] = &ffi_type_float; + args[4] = &ffi_type_sint64; + args[5] = &ffi_type_double; + values[0] = &a; values[1] = &b; values[2] = &c; + values[3] = &d; values[4] = &e; values[5] = &f; + + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 6, &ffi_type_double, args) + == FFI_OK); + plan = ffi_call_plan_alloc(&cif); + CHECK(plan != NULL); + + ffi_call(&cif, FFI_FN(mixed), &rc, values); + ffi_call_plan_invoke(plan, FFI_FN(mixed), &rp, values); + CHECK_DOUBLE_EQ(rc, rp); + CHECK_DOUBLE_EQ(rp, mixed(a, b, c, d, e, f)); + ffi_call_plan_free(plan); + } + + /* Float arguments and float return. */ + { + ffi_cif cif; + ffi_type *args[2]; + void *values[2]; + ffi_call_plan *plan; + float a = 1.25f, b = 2.5f, rc, rp; + + args[0] = &ffi_type_float; + args[1] = &ffi_type_float; + values[0] = &a; + values[1] = &b; + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_float, args) + == FFI_OK); + plan = ffi_call_plan_alloc(&cif); + CHECK(plan != NULL); + + ffi_call(&cif, FFI_FN(faddf), &rc, values); + ffi_call_plan_invoke(plan, FFI_FN(faddf), &rp, values); + CHECK_FLOAT_EQ(rc, rp); + CHECK_FLOAT_EQ(rp, faddf(a, b)); + ffi_call_plan_free(plan); + } + + /* Signed narrow argument and signed narrow return: the plan sign-extends + the argument and widens the return to ffi_arg just as ffi_call does. */ + { + ffi_cif cif; + ffi_type *args[1]; + void *values[1]; + ffi_call_plan *plan; + signed char in; + ffi_arg rc, rp; + int v; + + args[0] = &ffi_type_schar; + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_schar, args) + == FFI_OK); + plan = ffi_call_plan_alloc(&cif); + CHECK(plan != NULL); + + for (v = -128; v < 128; v++) + { + in = (signed char) v; + values[0] = ∈ + ffi_call(&cif, FFI_FN(ret_sc), &rc, values); + ffi_call_plan_invoke(plan, FFI_FN(ret_sc), &rp, values); + CHECK(rc == rp); + CHECK((signed char) rp == ret_sc(in)); + } + ffi_call_plan_free(plan); + } + + /* Unsigned narrow argument and unsigned narrow return. */ + { + ffi_cif cif; + ffi_type *args[1]; + void *values[1]; + ffi_call_plan *plan; + unsigned char in; + ffi_arg rc, rp; + int v; + + args[0] = &ffi_type_uchar; + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_uchar, args) + == FFI_OK); + plan = ffi_call_plan_alloc(&cif); + CHECK(plan != NULL); + + for (v = 0; v < 256; v++) + { + in = (unsigned char) v; + values[0] = ∈ + ffi_call(&cif, FFI_FN(ret_uc), &rc, values); + ffi_call_plan_invoke(plan, FFI_FN(ret_uc), &rp, values); + CHECK(rc == rp); + CHECK((unsigned char) rp == ret_uc(in)); + } + ffi_call_plan_free(plan); + } + + exit(0); +} diff --git a/deps/libffi/testsuite/libffi.call/plan_spill.c b/deps/libffi/testsuite/libffi.call/plan_spill.c new file mode 100644 index 00000000000000..c073c99142e423 --- /dev/null +++ b/deps/libffi/testsuite/libffi.call/plan_spill.c @@ -0,0 +1,142 @@ +/* Area: ffi_call_plan + Purpose: Check that a reusable call plan reproduces ffi_call when + arguments spill past the argument registers onto the stack. + This drives the non-fast plan path (a move list handed to + ffi_call_unix64) for GP spill, SSE spill, and a mix of both. + Limitations: none. + PR: none. + Originator: ffi_call_plan tests */ + +/* { dg-do run } */ +#include "ffitest.h" + +/* 10 integers: 6 in registers, 4 spilled to the stack. */ +static long long gp10(long long a1, long long a2, long long a3, long long a4, + long long a5, long long a6, long long a7, long long a8, + long long a9, long long a10) +{ + return a1 + a2 * 2 + a3 * 3 + a4 * 4 + a5 * 5 + + a6 * 6 + a7 * 7 + a8 * 8 + a9 * 9 + a10 * 10; +} + +/* 12 doubles: 8 in SSE registers, 4 spilled to the stack. */ +static double sse12(double a1, double a2, double a3, double a4, + double a5, double a6, double a7, double a8, + double a9, double a10, double a11, double a12) +{ + return a1 + a2 * 2 + a3 * 3 + a4 * 4 + a5 * 5 + a6 * 6 + + a7 * 7 + a8 * 8 + a9 * 9 + a10 * 10 + a11 * 11 + a12 * 12; +} + +/* 8 ints + 8 doubles: both classes spill. */ +static double mix16(long i1, long i2, long i3, long i4, + long i5, long i6, long i7, long i8, + double d1, double d2, double d3, double d4, + double d5, double d6, double d7, double d8) +{ + double s = 0.0; + s += (double) (i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8); + s += d1 + d2 + d3 + d4 + d5 + d6 + d7 + d8; + return s; +} + +int main (void) +{ + /* GP spill. */ + { + ffi_cif cif; + ffi_type *args[10]; + void *values[10]; + long long a[10]; + long long rc, rp; + ffi_call_plan *plan; + int i; + + for (i = 0; i < 10; i++) + { + args[i] = &ffi_type_sint64; + a[i] = (long long) (i + 1) * 100 - 3; + values[i] = &a[i]; + } + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 10, &ffi_type_sint64, args) + == FFI_OK); + plan = ffi_call_plan_alloc(&cif); + CHECK(plan != NULL); + + ffi_call(&cif, FFI_FN(gp10), &rc, values); + ffi_call_plan_invoke(plan, FFI_FN(gp10), &rp, values); + CHECK(rc == rp); + CHECK(rp == gp10(a[0], a[1], a[2], a[3], a[4], + a[5], a[6], a[7], a[8], a[9])); + ffi_call_plan_free(plan); + } + + /* SSE spill. */ + { + ffi_cif cif; + ffi_type *args[12]; + void *values[12]; + double a[12]; + double rc, rp; + ffi_call_plan *plan; + int i; + + for (i = 0; i < 12; i++) + { + args[i] = &ffi_type_double; + a[i] = (double) i + 0.25; + values[i] = &a[i]; + } + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 12, &ffi_type_double, args) + == FFI_OK); + plan = ffi_call_plan_alloc(&cif); + CHECK(plan != NULL); + + ffi_call(&cif, FFI_FN(sse12), &rc, values); + ffi_call_plan_invoke(plan, FFI_FN(sse12), &rp, values); + CHECK_DOUBLE_EQ(rc, rp); + CHECK_DOUBLE_EQ(rp, sse12(a[0], a[1], a[2], a[3], a[4], a[5], + a[6], a[7], a[8], a[9], a[10], a[11])); + ffi_call_plan_free(plan); + } + + /* Both classes spill. */ + { + ffi_cif cif; + ffi_type *args[16]; + void *values[16]; + long iv[8]; + double dv[8]; + double rc, rp; + ffi_call_plan *plan; + int i; + + for (i = 0; i < 8; i++) + { + args[i] = &ffi_type_slong; + iv[i] = (long) (i + 1); + values[i] = &iv[i]; + } + for (i = 0; i < 8; i++) + { + args[8 + i] = &ffi_type_double; + dv[i] = (double) (i + 1) * 0.5; + values[8 + i] = &dv[i]; + } + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 16, &ffi_type_double, args) + == FFI_OK); + plan = ffi_call_plan_alloc(&cif); + CHECK(plan != NULL); + + ffi_call(&cif, FFI_FN(mix16), &rc, values); + ffi_call_plan_invoke(plan, FFI_FN(mix16), &rp, values); + CHECK_DOUBLE_EQ(rc, rp); + CHECK_DOUBLE_EQ(rp, mix16(iv[0], iv[1], iv[2], iv[3], + iv[4], iv[5], iv[6], iv[7], + dv[0], dv[1], dv[2], dv[3], + dv[4], dv[5], dv[6], dv[7])); + ffi_call_plan_free(plan); + } + + exit(0); +} diff --git a/deps/libffi/testsuite/libffi.call/plan_struct.c b/deps/libffi/testsuite/libffi.call/plan_struct.c new file mode 100644 index 00000000000000..816296d77a8afa --- /dev/null +++ b/deps/libffi/testsuite/libffi.call/plan_struct.c @@ -0,0 +1,163 @@ +/* Area: ffi_call_plan + Purpose: Check that a reusable call plan reproduces ffi_call for struct + returns. A struct return does not disable planning (only a + struct *argument* does), so this drives both the in-memory + return path (RET_IN_MEM, including a NULL rvalue) and the + register-pair struct return path, plus a large struct argument + that forces the ffi_call by-value copy fallback. + Limitations: none. + PR: none. + Originator: ffi_call_plan tests */ + +/* { dg-do run } */ +#include "ffitest.h" + +static int call_count = 0; + +/* 24 bytes: returned in memory (a hidden pointer in the first argument). */ +struct big3 { double a, b, c; }; + +static struct big3 make_big3(double a, double b, double c) +{ + struct big3 r; + call_count++; + r.a = a + 1.0; + r.b = b + 2.0; + r.c = c + 3.0; + return r; +} + +/* A struct larger than 16 bytes passed by value forces ffi_call to make a + copy; build_plan has no fast path for a struct argument, so this exercises + the plan's fallback to ffi_call. */ +static double sum_big3(struct big3 s) +{ + return s.a + s.b + s.c; +} + +/* 16 bytes: returned in a register pair (RAX:RDX on x86-64). */ +struct pair2 { long x, y; }; + +static struct pair2 make_pair2(long x, long y) +{ + struct pair2 r; + r.x = x * 2; + r.y = y * 3; + return r; +} + +int main (void) +{ + ffi_type *big3_elements[4]; + ffi_type big3_t; + ffi_type *pair2_elements[3]; + ffi_type pair2_t; + + big3_elements[0] = &ffi_type_double; + big3_elements[1] = &ffi_type_double; + big3_elements[2] = &ffi_type_double; + big3_elements[3] = NULL; + big3_t.size = big3_t.alignment = 0; + big3_t.type = FFI_TYPE_STRUCT; + big3_t.elements = big3_elements; + + pair2_elements[0] = &ffi_type_slong; + pair2_elements[1] = &ffi_type_slong; + pair2_elements[2] = NULL; + pair2_t.size = pair2_t.alignment = 0; + pair2_t.type = FFI_TYPE_STRUCT; + pair2_t.elements = pair2_elements; + + /* In-memory struct return with scalar arguments. */ + { + ffi_cif cif; + ffi_type *args[3]; + void *values[3]; + ffi_call_plan *plan; + double a = 10.0, b = 20.0, c = 30.0; + struct big3 rc, rp; + int before; + + args[0] = &ffi_type_double; + args[1] = &ffi_type_double; + args[2] = &ffi_type_double; + values[0] = &a; + values[1] = &b; + values[2] = &c; + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, &big3_t, args) == FFI_OK); + plan = ffi_call_plan_alloc(&cif); + CHECK(plan != NULL); + + ffi_call(&cif, FFI_FN(make_big3), &rc, values); + ffi_call_plan_invoke(plan, FFI_FN(make_big3), &rp, values); + CHECK_DOUBLE_EQ(rc.a, rp.a); + CHECK_DOUBLE_EQ(rc.b, rp.b); + CHECK_DOUBLE_EQ(rc.c, rp.c); + CHECK_DOUBLE_EQ(rp.a, a + 1.0); + CHECK_DOUBLE_EQ(rp.b, b + 2.0); + CHECK_DOUBLE_EQ(rp.c, c + 3.0); + + /* A NULL rvalue for an in-memory struct return must not crash: libffi + supplies scratch space and discards the result, but the callee still + runs. Confirm the call actually happened. */ + before = call_count; + ffi_call_plan_invoke(plan, FFI_FN(make_big3), NULL, values); + CHECK(call_count == before + 1); + + ffi_call_plan_free(plan); + } + + /* Large struct argument: no fast path, falls back to ffi_call. */ + { + ffi_cif cif; + ffi_type *args[1]; + void *values[1]; + ffi_call_plan *plan; + struct big3 s; + double rc, rp; + + s.a = 1.5; + s.b = 2.5; + s.c = 3.5; + args[0] = &big3_t; + values[0] = &s; + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, &ffi_type_double, args) + == FFI_OK); + plan = ffi_call_plan_alloc(&cif); + CHECK(plan != NULL); + + ffi_call(&cif, FFI_FN(sum_big3), &rc, values); + ffi_call_plan_invoke(plan, FFI_FN(sum_big3), &rp, values); + CHECK_DOUBLE_EQ(rc, rp); + CHECK_DOUBLE_EQ(rp, sum_big3(s)); + ffi_call_plan_free(plan); + } + + /* Register-pair struct return. */ + { + ffi_cif cif; + ffi_type *args[2]; + void *values[2]; + ffi_call_plan *plan; + long x = 7, y = 11; + struct pair2 rc, rp; + + args[0] = &ffi_type_slong; + args[1] = &ffi_type_slong; + values[0] = &x; + values[1] = &y; + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &pair2_t, args) == FFI_OK); + plan = ffi_call_plan_alloc(&cif); + CHECK(plan != NULL); + + ffi_call(&cif, FFI_FN(make_pair2), &rc, values); + ffi_call_plan_invoke(plan, FFI_FN(make_pair2), &rp, values); + CHECK(rc.x == rp.x); + CHECK(rc.y == rp.y); + CHECK(rp.x == x * 2); + CHECK(rp.y == y * 3); + ffi_call_plan_free(plan); + } + + exit(0); +} diff --git a/deps/libffi/testsuite/libffi.call/plan_var.c b/deps/libffi/testsuite/libffi.call/plan_var.c new file mode 100644 index 00000000000000..e630156b23f077 --- /dev/null +++ b/deps/libffi/testsuite/libffi.call/plan_var.c @@ -0,0 +1,73 @@ +/* Area: ffi_call_plan + Purpose: Check that a reusable call plan reproduces ffi_call for a + variadic signature prepared with ffi_prep_cif_var. The + variadic double arguments travel in SSE registers, so the + fast path must set the vector-register count (al) correctly. + Limitations: none. + PR: none. + Originator: ffi_call_plan tests */ + +/* { dg-do run } */ +#include +#include "ffitest.h" + +static double vsum(int n, ...) +{ + va_list ap; + double s = 0.0; + int i; + + va_start(ap, n); + for (i = 0; i < n; i++) + s += va_arg(ap, double); + va_end(ap); + return s; +} + +static void +run (int nvar) +{ + ffi_cif cif; + ffi_type *args[1 + 8]; + void *values[1 + 8]; + double d[8]; + int n = nvar; + double rc, rp, expect; + ffi_call_plan *plan; + int i; + + CHECK(nvar <= 8); + + args[0] = &ffi_type_sint; + values[0] = &n; + expect = 0.0; + for (i = 0; i < nvar; i++) + { + d[i] = (double) (i + 1) * 1.5; + args[1 + i] = &ffi_type_double; + values[1 + i] = &d[i]; + expect += d[i]; + } + + CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 1 + nvar, + &ffi_type_double, args) == FFI_OK); + plan = ffi_call_plan_alloc(&cif); + CHECK(plan != NULL); + + ffi_call(&cif, FFI_FN(vsum), &rc, values); + ffi_call_plan_invoke(plan, FFI_FN(vsum), &rp, values); + CHECK_DOUBLE_EQ(rc, rp); + CHECK_DOUBLE_EQ(rp, expect); + + ffi_call_plan_free(plan); +} + +int main (void) +{ + run (0); + run (1); + run (3); + run (5); + run (8); + exit(0); +} diff --git a/deps/libffi/testsuite/libffi.closures/closure.exp b/deps/libffi/testsuite/libffi.closures/closure.exp index ed4145ca843b4a..9d53294909ee73 100644 --- a/deps/libffi/testsuite/libffi.closures/closure.exp +++ b/deps/libffi/testsuite/libffi.closures/closure.exp @@ -36,7 +36,7 @@ if { [string match $compiler_vendor "microsoft"] } { set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.c]] if { [libffi_feature_test "#if FFI_CLOSURES"] } { - run-many-tests $tlist "" + run-many-tests $tlist $additional_options } else { foreach test $tlist { unsupported "$test" diff --git a/deps/libffi/testsuite/libffi.closures/closure_loc_fn0.c b/deps/libffi/testsuite/libffi.closures/closure_loc_fn0.c index f344a6074e1429..179485d9b57b87 100644 --- a/deps/libffi/testsuite/libffi.closures/closure_loc_fn0.c +++ b/deps/libffi/testsuite/libffi.closures/closure_loc_fn0.c @@ -6,6 +6,7 @@ PR: none. Originator: 20030828 */ +/* { dg-do run } */ #include "ffitest.h" @@ -80,8 +81,10 @@ int main (void) CHECK(ffi_prep_closure_loc(pcl, &cif, closure_loc_test_fn0, (void *) 3 /* userdata */, codeloc) == FFI_OK); -#if !defined(FFI_EXEC_STATIC_TRAMP) && !defined(__EMSCRIPTEN__) - /* With static trampolines, the codeloc does not point to closure */ +#if !defined(FFI_EXEC_STATIC_TRAMP) && !defined(__EMSCRIPTEN__) \ + && !(defined(FFI_EXEC_TRAMPOLINE_TABLE) && FFI_EXEC_TRAMPOLINE_TABLE) + /* With static trampolines or a trampoline table (Apple aarch64), the + codeloc does not point to the closure */ CHECK(memcmp(pcl, FFI_CL(codeloc), sizeof(*pcl)) == 0); #endif diff --git a/deps/libffi/testsuite/libffi.complex/complex_i128.c b/deps/libffi/testsuite/libffi.complex/complex_i128.c new file mode 100644 index 00000000000000..a599d556e12083 --- /dev/null +++ b/deps/libffi/testsuite/libffi.complex/complex_i128.c @@ -0,0 +1,118 @@ +/* Area: ffi_call + Purpose: Check complex int128 call and return. + Limitations: none. + PR: none. */ + +/* { dg-do run } */ +#include "ffitest.h" + +/* clang defines __SIZEOF_INT128__ but does not support _Complex __int128, + so exclude it here and fall through to the trivial main() below. */ +#if defined(FFI_TARGET_HAS_INT128) && \ + defined(FFI_TARGET_HAS_COMPLEX_TYPE) && \ + defined(__SIZEOF_INT128__) && \ + !defined(__clang__) + +typedef __int128_t i128; +typedef _Complex __int128 ci128; + +static const ci128 val = + (((i128)0x01020304050607ull << 64) | 0x08090a0b0c0d0e0full) + + (((i128)0x10203040506070ull << 64) | 0x8090a0b0c0d0e0f0ull) * 1i; +static const int dummy = 0xdeadbeef; + +#define D(X) int X __attribute__((unused)) + +static ci128 f0(ci128 x) +{ + return x; +} + +static ci128 f1(D(a), ci128 x) +{ + return x; +} + +static ci128 f2(D(a), D(b), ci128 x) +{ + return x; +} + +static ci128 f3(D(a), D(b), D(c), ci128 x) +{ + return x; +} + +static ci128 f4(D(a), D(b), D(c), D(d), ci128 x) +{ + return x; +} + +static ci128 f5(D(a), D(b), D(c), D(d), D(e), ci128 x) +{ + return x; +} + +static ci128 f6(D(a), D(b), D(c), D(d), D(e), D(f), ci128 x) +{ + return x; +} + +static ci128 f7(D(a), D(b), D(c), D(d), D(e), D(f), D(g), ci128 x) +{ + return x; +} + +static ci128 f8(D(a), D(b), D(c), D(d), D(e), D(f), D(g), D(h), ci128 x) +{ + return x; +} + +#define N 9 + +static void * const funcs[N] = { + f0, f1, f2, f3, f4, f5, f6, f7, f8 +}; + +static ffi_type ffi_type_ci128 = { + sizeof(ci128), + _Alignof(ci128), + FFI_TYPE_COMPLEX, + (ffi_type *[2]){ &ffi_type_sint128, NULL }, +}; + +int main (void) +{ + int i; + + for (i = 0; i < N; i++) + { + ffi_cif cif; + ffi_status s; + ffi_type *args[N]; + void *values[N]; + ci128 ret; + int j; + + for (j = 0; j < i; j++) + { + args[j] = &ffi_type_sint; + values[j] = (void *)&dummy; + } + args[i] = &ffi_type_ci128; + values[i] = (void *)&val; + + s = ffi_prep_cif(&cif, FFI_DEFAULT_ABI, i + 1, + &ffi_type_ci128, args); + CHECK(s == FFI_OK); + + ffi_call(&cif, FFI_FN(funcs[i]), &ret, values); + CHECK(ret == val); + } + + return 0; +} + +#else +int main (void) { return 0; } +#endif diff --git a/deps/libffi/testsuite/libffi.go/go.exp b/deps/libffi/testsuite/libffi.go/go.exp index 100c5e75b40915..f477e99ade6911 100644 --- a/deps/libffi/testsuite/libffi.go/go.exp +++ b/deps/libffi/testsuite/libffi.go/go.exp @@ -19,10 +19,23 @@ libffi-init global srcdir subdir +if { [string match $compiler_vendor "microsoft"] } { + # -wd4005 macro redefinition + # -wd4244 implicit conversion to type of smaller size + # -wd4305 truncation to smaller type + # -wd4477 printf %lu of uintptr_t + # -wd4312 implicit conversion to type of greater size + # -wd4311 pointer truncation to unsigned long + # -EHsc C++ Exception Handling (no SEH exceptions) + set additional_options "-wd4005 -wd4244 -wd4305 -wd4477 -wd4312 -wd4311 -EHsc"; +} else { + set additional_options ""; +} + set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/*.{c,cc}]] if { [libffi_feature_test "#ifdef FFI_GO_CLOSURES"] } { - run-many-tests $tlist "" + run-many-tests $tlist $additional_options } else { foreach test $tlist { unsupported "$test" diff --git a/deps/ngtcp2/ngtcp2.gyp b/deps/ngtcp2/ngtcp2.gyp index dd0a64d5852b1b..7ae62792485125 100644 --- a/deps/ngtcp2/ngtcp2.gyp +++ b/deps/ngtcp2/ngtcp2.gyp @@ -49,7 +49,7 @@ 'ngtcp2/lib/ngtcp2_unreachable.c', 'ngtcp2/lib/ngtcp2_vec.c', 'ngtcp2/lib/ngtcp2_version.c', - 'ngtcp2/lib/ngtcp2_window_filter.c', + 'ngtcp2/lib/ngtcp2_wf.c', 'ngtcp2/crypto/shared.c' ], 'ngtcp2_sources_ossl': [ diff --git a/deps/ngtcp2/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_ossl.h b/deps/ngtcp2/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_ossl.h index 417ec017c60c13..06e8d42bda0100 100644 --- a/deps/ngtcp2/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_ossl.h +++ b/deps/ngtcp2/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_ossl.h @@ -145,6 +145,18 @@ NGTCP2_EXTERN SSL *ngtcp2_crypto_ossl_ctx_get_ssl(ngtcp2_crypto_ossl_ctx *ctx); */ NGTCP2_EXTERN int ngtcp2_crypto_ossl_init(void); +/** + * @function + * + * `ngtcp2_crypto_ossl_free` frees the resources allocated by + * `ngtcp2_crypto_ossl_init`. It is safe to call this function even + * if `ngtcp2_crypto_ossl_init` fails or is not called at all. This + * function might be useful to make some leak detection tools happy. + * + * .. version-added:: 1.24.0 + */ +NGTCP2_EXTERN void ngtcp2_crypto_ossl_free(void); + /** * @function * diff --git a/deps/ngtcp2/ngtcp2/crypto/ossl/ossl.c b/deps/ngtcp2/ngtcp2/crypto/ossl/ossl.c index 6159567aceb6af..3fedb8df8e8dc5 100644 --- a/deps/ngtcp2/ngtcp2/crypto/ossl/ossl.c +++ b/deps/ngtcp2/ngtcp2/crypto/ossl/ossl.c @@ -79,6 +79,60 @@ int ngtcp2_crypto_ossl_init(void) { return 0; } +void ngtcp2_crypto_ossl_free(void) { + if (crypto_hkdf) { + EVP_KDF_free(crypto_hkdf); + crypto_hkdf = NULL; + } + + if (crypto_sha384) { + EVP_MD_free(crypto_sha384); + crypto_sha384 = NULL; + } + + if (crypto_sha256) { + EVP_MD_free(crypto_sha256); + crypto_sha256 = NULL; + } + +#ifndef NGTCP2_NO_CHACHA_POLY1305 + if (crypto_chacha20) { + EVP_CIPHER_free(crypto_chacha20); + crypto_chacha20 = NULL; + } + + if (crypto_chacha20_poly1305) { + EVP_CIPHER_free(crypto_chacha20_poly1305); + crypto_chacha20_poly1305 = NULL; + } +#endif /* !defined(NGTCP2_NO_CHACHA_POLY1305) */ + + if (crypto_aes_256_ecb) { + EVP_CIPHER_free(crypto_aes_256_ecb); + crypto_aes_256_ecb = NULL; + } + + if (crypto_aes_128_ecb) { + EVP_CIPHER_free(crypto_aes_128_ecb); + crypto_aes_128_ecb = NULL; + } + + if (crypto_aes_128_ccm) { + EVP_CIPHER_free(crypto_aes_128_ccm); + crypto_aes_128_ccm = NULL; + } + + if (crypto_aes_256_gcm) { + EVP_CIPHER_free(crypto_aes_256_gcm); + crypto_aes_256_gcm = NULL; + } + + if (crypto_aes_128_gcm) { + EVP_CIPHER_free(crypto_aes_128_gcm); + crypto_aes_128_gcm = NULL; + } +} + static const EVP_CIPHER *crypto_aead_aes_128_gcm(void) { if (crypto_aes_128_gcm) { return crypto_aes_128_gcm; diff --git a/deps/ngtcp2/ngtcp2/examples/http3_server_proto_codec.cc b/deps/ngtcp2/ngtcp2/examples/http3_server_proto_codec.cc index 1a39177e32a6d1..ac0b6132ef0b1d 100644 --- a/deps/ngtcp2/ngtcp2/examples/http3_server_proto_codec.cc +++ b/deps/ngtcp2/ngtcp2/examples/http3_server_proto_codec.cc @@ -603,9 +603,9 @@ std::expected ProtoCodec::start_response(Stream *stream) { nghttp3_pri pri; if (auto rv = - nghttp3_conn_get_stream_priority(httpconn_, &pri, stream->stream_id); + nghttp3_conn_get_stream_priority2(httpconn_, &pri, stream->stream_id); rv != 0) { - std::println(stderr, "nghttp3_conn_get_stream_priority: {}", + std::println(stderr, "nghttp3_conn_get_stream_priority2: {}", nghttp3_strerror(rv)); return std::unexpected{Error::HTTP3}; } diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.cc b/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.cc index d7f9f8f58c8abc..31dc95e158bec3 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.cc @@ -36,23 +36,16 @@ #include "client_base.h" #include "template.h" -namespace { -auto _ = [] { - if (ngtcp2_crypto_ossl_init() != 0) { - assert(0); - abort(); - } - - return 0; -}(); -} // namespace - extern Config config; +TLSClientContext::TLSClientContext() { ngtcp2_crypto_ossl_init(); } + TLSClientContext::~TLSClientContext() { if (ssl_ctx_) { SSL_CTX_free(ssl_ctx_); } + + ngtcp2_crypto_ossl_free(); } SSL_CTX *TLSClientContext::get_native_handle() const { return ssl_ctx_; } diff --git a/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.h b/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.h index fad71595f2579c..4036a6fef9aa13 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_client_context_ossl.h @@ -37,7 +37,7 @@ using namespace ngtcp2; class TLSClientContext { public: - TLSClientContext() = default; + TLSClientContext(); ~TLSClientContext(); std::expected init(const char *private_key_file, diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.cc b/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.cc index 054db5caaf00b1..bd4fe2971c15a6 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.cc +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.cc @@ -37,23 +37,16 @@ #include "server_base.h" #include "template.h" -namespace { -auto _ = [] { - if (ngtcp2_crypto_ossl_init() != 0) { - assert(0); - abort(); - } - - return 0; -}(); -} // namespace - extern Config config; +TLSServerContext::TLSServerContext() { ngtcp2_crypto_ossl_init(); } + TLSServerContext::~TLSServerContext() { if (ssl_ctx_) { SSL_CTX_free(ssl_ctx_); } + + ngtcp2_crypto_ossl_free(); } SSL_CTX *TLSServerContext::get_native_handle() const { return ssl_ctx_; } diff --git a/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.h b/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.h index 619f1310fec093..cc1aa38301d6ec 100644 --- a/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.h +++ b/deps/ngtcp2/ngtcp2/examples/tls_server_context_ossl.h @@ -37,7 +37,7 @@ using namespace ngtcp2; class TLSServerContext { public: - TLSServerContext() = default; + TLSServerContext(); ~TLSServerContext(); std::expected init(const char *private_key_file, diff --git a/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/ngtcp2.h b/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/ngtcp2.h index 278b30ca07bf18..01f93e8c41ad3b 100644 --- a/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/ngtcp2.h +++ b/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/ngtcp2.h @@ -3485,6 +3485,24 @@ typedef int (*ngtcp2_stream_stop_sending)(ngtcp2_conn *conn, int64_t stream_id, void *user_data, void *stream_user_data); +/** + * @functypedef + * + * :type:`ngtcp2_recv_stop_sending` is invoked when a STOP_SENDING frame + * is received from a remote endpoint for a stream identified by + * |stream_id|. |app_error_code| is the application error code carried + * by the STOP_SENDING frame. This callback is called at most + * once per stream. + * + * The callback function must return 0 if it succeeds. Returning + * :macro:`NGTCP2_ERR_CALLBACK_FAILURE` makes the library call return + * immediately. + */ +typedef int (*ngtcp2_recv_stop_sending)(ngtcp2_conn *conn, int64_t stream_id, + uint64_t app_error_code, + void *user_data, + void *stream_user_data); + /** * @functypedef * @@ -3626,7 +3644,8 @@ typedef int (*ngtcp2_get_path_challenge_data2)(ngtcp2_conn *conn, #define NGTCP2_CALLBACKS_V1 1 #define NGTCP2_CALLBACKS_V2 2 #define NGTCP2_CALLBACKS_V3 3 -#define NGTCP2_CALLBACKS_VERSION NGTCP2_CALLBACKS_V3 +#define NGTCP2_CALLBACKS_V4 4 +#define NGTCP2_CALLBACKS_VERSION NGTCP2_CALLBACKS_V4 /** * @struct @@ -3964,6 +3983,16 @@ typedef struct ngtcp2_callbacks { * .. version-added:: 1.22.0 */ ngtcp2_get_path_challenge_data2 get_path_challenge_data2; + /* The following fields have been added since + NGTCP2_CALLBACKS_V3. */ + /** + * :member:`recv_stop_sending` is a callback function which is invoked + * when a STOP_SENDING frame is received from a remote endpoint. This + * callback function is optional. + * + * .. version-added:: 1.24.0 + */ + ngtcp2_recv_stop_sending recv_stop_sending; } ngtcp2_callbacks; /** diff --git a/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/version.h b/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/version.h index 7a47cdaba0bdb9..a71100abbaf586 100644 --- a/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/version.h +++ b/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/version.h @@ -36,7 +36,7 @@ * * Version number of the ngtcp2 library release. */ -#define NGTCP2_VERSION "1.23.0" +#define NGTCP2_VERSION "1.24.0" /** * @macro @@ -46,6 +46,6 @@ * number, 8 bits for minor and 8 bits for patch. Version 1.2.3 * becomes 0x010203. */ -#define NGTCP2_VERSION_NUM 0x011700 +#define NGTCP2_VERSION_NUM 0x011800 #endif /* !defined(NGTCP2_VERSION_H) */ diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_bbr.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_bbr.c index cdeb29bb506523..b4cf2b02bbf422 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_bbr.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_bbr.c @@ -289,9 +289,8 @@ static void bbr_handle_recovery(ngtcp2_cc_bbr *bbr, ngtcp2_conn_stat *cstat, static void bbr_on_init(ngtcp2_cc_bbr *bbr, ngtcp2_conn_stat *cstat, ngtcp2_tstamp initial_ts) { - ngtcp2_window_filter_init(&bbr->max_bw_filter, NGTCP2_BBR_MAX_BW_FILTERLEN); - ngtcp2_window_filter_init(&bbr->extra_acked_filter, - NGTCP2_BBR_EXTRA_ACKED_FILTERLEN); + ngtcp2_wf_init(&bbr->max_bw_filter, NGTCP2_BBR_MAX_BW_FILTERLEN); + ngtcp2_wf_init(&bbr->extra_acked_filter, NGTCP2_BBR_EXTRA_ACKED_FILTERLEN); bbr->min_rtt = cstat->first_rtt_sample_ts == UINT64_MAX ? UINT64_MAX : cstat->smoothed_rtt; @@ -590,10 +589,10 @@ static void bbr_update_max_bw(ngtcp2_cc_bbr *bbr, const ngtcp2_conn_stat *cstat, if (cstat->delivery_rate_sec && (cstat->delivery_rate_sec >= bbr->max_bw || !bbr->rst->rs.is_app_limited)) { - ngtcp2_window_filter_update(&bbr->max_bw_filter, cstat->delivery_rate_sec, - bbr->cycle_count); + ngtcp2_wf_update(&bbr->max_bw_filter, cstat->delivery_rate_sec, + bbr->cycle_count); - bbr->max_bw = ngtcp2_window_filter_get_best(&bbr->max_bw_filter); + bbr->max_bw = ngtcp2_wf_get_best(&bbr->max_bw_filter); } } @@ -667,15 +666,14 @@ static void bbr_update_ack_aggregation(ngtcp2_cc_bbr *bbr, } if (bbr->full_bw_reached) { - bbr->extra_acked_filter.window_length = NGTCP2_BBR_EXTRA_ACKED_FILTERLEN; + bbr->extra_acked_filter.win = NGTCP2_BBR_EXTRA_ACKED_FILTERLEN; } else { - bbr->extra_acked_filter.window_length = 1; + bbr->extra_acked_filter.win = 1; } - ngtcp2_window_filter_update(&bbr->extra_acked_filter, extra, - bbr->round_count); + ngtcp2_wf_update(&bbr->extra_acked_filter, extra, bbr->round_count); - bbr->extra_acked = ngtcp2_window_filter_get_best(&bbr->extra_acked_filter); + bbr->extra_acked = ngtcp2_wf_get_best(&bbr->extra_acked_filter); } static void bbr_enter_drain(ngtcp2_cc_bbr *bbr) { diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_bbr.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_bbr.h index 81384e6d9f5cda..5a8b470b893f12 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_bbr.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_bbr.h @@ -32,7 +32,7 @@ #include #include "ngtcp2_cc.h" -#include "ngtcp2_window_filter.h" +#include "ngtcp2_wf.h" typedef struct ngtcp2_rst ngtcp2_rst; typedef struct ngtcp2_pcg32 ngtcp2_pcg32; @@ -67,9 +67,9 @@ typedef struct ngtcp2_cc_bbr { /* max_bw_filter for tracking the maximum recent delivery rate samples for estimating max_bw. */ - ngtcp2_window_filter max_bw_filter; + ngtcp2_wf max_bw_filter; - ngtcp2_window_filter extra_acked_filter; + ngtcp2_wf extra_acked_filter; ngtcp2_duration min_rtt; ngtcp2_tstamp min_rtt_stamp; diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_callbacks.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_callbacks.c index 1d65d93d566944..cbd1d677275166 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_callbacks.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_callbacks.c @@ -63,6 +63,9 @@ size_t ngtcp2_callbackslen_version(int callbacks_version) { switch (callbacks_version) { case NGTCP2_CALLBACKS_VERSION: return sizeof(callbacks); + case NGTCP2_CALLBACKS_V3: + return offsetof(ngtcp2_callbacks, get_path_challenge_data2) + + sizeof(callbacks.get_path_challenge_data2); case NGTCP2_CALLBACKS_V2: return offsetof(ngtcp2_callbacks, begin_path_validation) + sizeof(callbacks.begin_path_validation); diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.c index 28bbde1233e1e4..4a295d2aab6ac2 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.c @@ -230,6 +230,24 @@ static int conn_call_stream_reset(ngtcp2_conn *conn, int64_t stream_id, return 0; } +static int conn_call_recv_stop_sending(ngtcp2_conn *conn, int64_t stream_id, + uint64_t app_error_code, + void *stream_user_data) { + int rv; + + if (!conn->callbacks.recv_stop_sending) { + return 0; + } + + rv = conn->callbacks.recv_stop_sending(conn, stream_id, app_error_code, + conn->user_data, stream_user_data); + if (rv != 0) { + return NGTCP2_ERR_CALLBACK_FAILURE; + } + + return 0; +} + static int conn_call_extend_max_local_streams_bidi(ngtcp2_conn *conn, uint64_t max_streams) { int rv; @@ -2621,6 +2639,8 @@ conn_write_handshake_pkt(ngtcp2_conn *conn, ngtcp2_pkt_info *pi, uint8_t *dest, ngtcp2_unreachable(); } } + + conn->frame_counts.crypto += (size_t)datacnt; } else { left = ngtcp2_pkt_crypto_max_datalen(crypto_offset, left, left); if (left == (size_t)-1) { @@ -2644,6 +2664,8 @@ conn_write_handshake_pkt(ngtcp2_conn *conn, ngtcp2_pkt_info *pi, uint8_t *dest, if (rv != 0) { ngtcp2_unreachable(); } + + ++conn->frame_counts.crypto; } *pfrc = nfrc; @@ -3859,6 +3881,8 @@ static ngtcp2_ssize conn_write_pkt(ngtcp2_conn *conn, ngtcp2_pkt_info *pi, rtb_entry_flags |= NGTCP2_RTB_ENTRY_FLAG_ACK_ELICITING | NGTCP2_RTB_ENTRY_FLAG_PTO_ELICITING | NGTCP2_RTB_ENTRY_FLAG_RETRANSMITTABLE; + + ++conn->frame_counts.crypto; } } @@ -4073,6 +4097,8 @@ static ngtcp2_ssize conn_write_pkt(ngtcp2_conn *conn, ngtcp2_pkt_info *pi, NGTCP2_RTB_ENTRY_FLAG_PTO_ELICITING | NGTCP2_RTB_ENTRY_FLAG_RETRANSMITTABLE; + ++conn->frame_counts.stream; + if (ngtcp2_strm_streamfrq_empty(strm)) { ngtcp2_conn_tx_strmq_pop(conn); continue; @@ -4236,6 +4262,8 @@ static ngtcp2_ssize conn_write_pkt(ngtcp2_conn *conn, ngtcp2_pkt_info *pi, NGTCP2_RTB_ENTRY_FLAG_PTO_ELICITING | NGTCP2_RTB_ENTRY_FLAG_RETRANSMITTABLE; + ++conn->frame_counts.stream; + vmsg->stream.strm->tx.offset += ndatalen; conn->tx.offset += ndatalen; vmsg->stream.strm->flags |= NGTCP2_STRM_FLAG_ANY_SENT; @@ -7932,6 +7960,12 @@ static int conn_recv_stop_sending(ngtcp2_conn *conn, ngtcp2_strm_set_app_error_code(strm, fr->app_error_code); + rv = conn_call_recv_stop_sending(conn, fr->stream_id, fr->app_error_code, + strm->stream_user_data); + if (rv != 0) { + return rv; + } + /* No RESET_STREAM is required if we have sent FIN and all data have been acknowledged. */ if (!ngtcp2_strm_is_all_tx_data_fin_acked(strm) && @@ -12035,6 +12069,12 @@ ngtcp2_ssize ngtcp2_conn_write_stream_versioned( stream_id, v, datacnt, ts); } +static int conn_no_app_data_written(const ngtcp2_conn *conn) { + const ngtcp2_frame_counts *counts = &conn->frame_counts; + + return counts->crypto == 0 && counts->stream == 0; +} + static ngtcp2_ssize conn_write_vmsg_wrapper(ngtcp2_conn *conn, ngtcp2_path *path, int pkt_info_version, ngtcp2_pkt_info *pi, @@ -12053,14 +12093,9 @@ conn_write_vmsg_wrapper(ngtcp2_conn *conn, ngtcp2_path *path, if (cstat->bytes_in_flight >= cstat->cwnd) { conn->rst.is_cwnd_limited = 1; - } else if ((cstat->cwnd >= cstat->ssthresh || - cstat->bytes_in_flight * 2 < cstat->cwnd) && - nwrite == 0 && conn_pacing_pkt_tx_allowed(conn, ts) && - (conn->flags & NGTCP2_CONN_FLAG_HANDSHAKE_COMPLETED) && - /* Because NGTCP2_CONN_FLAG_AGGREGATE_PKTS is set after a - packet is produced, if it is set, we are sure that we - are not app-limited. */ - !(conn->flags & NGTCP2_CONN_FLAG_AGGREGATE_PKTS)) { + } else if (conn_pacing_pkt_tx_allowed(conn, ts) && !vmsg && + conn_no_app_data_written(conn) && + (!path || ngtcp2_path_eq(&conn->dcid.current.ps.path, path))) { conn->rst.app_limited = ngtcp2_max(conn->rst.delivered + cstat->bytes_in_flight, 1); } @@ -12238,8 +12273,12 @@ ngtcp2_ssize ngtcp2_conn_write_vmsg(ngtcp2_conn *conn, ngtcp2_path *path, origlen = destlen = conn_shape_udp_payload(conn, &conn->dcid.current, destlen); - if (!ppe_pending && pi) { - pi->ecn = NGTCP2_ECN_NOT_ECT; + if (!ppe_pending) { + if (pi) { + pi->ecn = NGTCP2_ECN_NOT_ECT; + } + + conn->frame_counts = (ngtcp2_frame_counts){0}; } switch (conn->state) { diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.h index 548c296e8ae1d0..18af11727e0646 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_conn.h @@ -308,6 +308,11 @@ typedef struct ngtcp2_early_transport_params { uint64_t max_datagram_frame_size; } ngtcp2_early_transport_params; +typedef struct ngtcp2_frame_counts { + size_t crypto; + size_t stream; +} ngtcp2_frame_counts; + ngtcp2_static_ringbuf_def(path_challenge, 4, sizeof(ngtcp2_path_challenge_entry)) @@ -644,6 +649,7 @@ struct ngtcp2_conn { confirmed. For server, it is confirmed when completed. */ ngtcp2_tstamp handshake_confirmed_ts; ngtcp2_pcg32 pcg; + ngtcp2_frame_counts frame_counts; void *user_data; uint32_t client_chosen_version; uint32_t negotiated_version; diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_rst.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_rst.h index 86346f49295add..4ae71aa6daa6d3 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_rst.h +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_rst.h @@ -31,8 +31,6 @@ #include -#include "ngtcp2_window_filter.h" - typedef struct ngtcp2_rtb_entry ngtcp2_rtb_entry; typedef struct ngtcp2_conn_stat ngtcp2_conn_stat; diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_wf.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_wf.c new file mode 100644 index 00000000000000..1adfc9ffd9ac1d --- /dev/null +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_wf.c @@ -0,0 +1,81 @@ +/* + * ngtcp2 + * + * Copyright (c) 2026 ngtcp2 contributors + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "ngtcp2_wf.h" + +void ngtcp2_wf_init(ngtcp2_wf *wf, uint64_t win) { + *wf = (ngtcp2_wf){ + .win = win, + }; +} + +void ngtcp2_wf_update(ngtcp2_wf *wf, uint64_t value, uint64_t ts) { + ngtcp2_wf_sample s = { + .value = value, + .ts = ts, + }; + + if (wf->samples[0].value <= value || ts - wf->samples[2].ts > wf->win) { + wf->samples[0] = wf->samples[1] = wf->samples[2] = s; + + return; + } + + if (wf->samples[1].value <= value) { + wf->samples[1] = wf->samples[2] = s; + } else if (wf->samples[2].value <= value) { + wf->samples[2] = s; + } + + if (ts - wf->samples[1].ts > wf->win) { + wf->samples[0] = wf->samples[2]; + wf->samples[1] = wf->samples[2] = s; + + return; + } + + if (ts - wf->samples[0].ts > wf->win) { + wf->samples[0] = wf->samples[1]; + wf->samples[1] = wf->samples[2]; + wf->samples[2] = s; + + return; + } + + if (wf->samples[0].value == wf->samples[1].value && + ts - wf->samples[0].ts > wf->win / 4) { + wf->samples[1] = wf->samples[2] = s; + + return; + } + + if (wf->samples[1].value == wf->samples[2].value && + ts - wf->samples[0].ts > wf->win / 2) { + wf->samples[2] = s; + } +} + +uint64_t ngtcp2_wf_get_best(const ngtcp2_wf *wf) { + return wf->samples[0].value; +} diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_wf.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_wf.h new file mode 100644 index 00000000000000..72bdf28c865473 --- /dev/null +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_wf.h @@ -0,0 +1,55 @@ +/* + * ngtcp2 + * + * Copyright (c) 2026 ngtcp2 contributors + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#ifndef NGTCP2_WF_H +#define NGTCP2_WF_H + +#ifdef HAVE_CONFIG_H +# include +#endif /* defined(HAVE_CONFIG_H) */ + +#include + +/* + * ngtcp2_wf implements Kathleen Nichols's windowed min/max tracking + * algorithm. + */ + +typedef struct ngtcp2_wf_sample { + uint64_t value; + uint64_t ts; +} ngtcp2_wf_sample; + +typedef struct ngtcp2_wf { + uint64_t win; + ngtcp2_wf_sample samples[3]; +} ngtcp2_wf; + +void ngtcp2_wf_init(ngtcp2_wf *wf, uint64_t win); + +void ngtcp2_wf_update(ngtcp2_wf *wf, uint64_t value, uint64_t ts); + +uint64_t ngtcp2_wf_get_best(const ngtcp2_wf *wf); + +#endif /* !defined(NGTCP2_WF_H) */ diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_window_filter.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_window_filter.c deleted file mode 100644 index 707cd570799e46..00000000000000 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_window_filter.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * ngtcp2 - * - * Copyright (c) 2021 ngtcp2 contributors - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * Translated to C from the original C++ code - * https://quiche.googlesource.com/quiche/+/5be974e29f7e71a196e726d6e2272676d33ab77d/quic/core/congestion_control/windowed_filter.h - * with the following license: - * - * // Copyright (c) 2016 The Chromium Authors. All rights reserved. - * // Use of this source code is governed by a BSD-style license that can be - * // found in the LICENSE file. - */ -#include "ngtcp2_window_filter.h" - -#include - -void ngtcp2_window_filter_init(ngtcp2_window_filter *wf, - uint64_t window_length) { - wf->window_length = window_length; - memset(wf->estimates, 0xFF, sizeof(wf->estimates)); -} - -void ngtcp2_window_filter_update(ngtcp2_window_filter *wf, uint64_t new_sample, - uint64_t new_time) { - /* Reset all estimates if they have not yet been initialized, if new - sample is a new best, or if the newest recorded estimate is too - old. */ - if (wf->estimates[0].sample == UINT64_MAX || - new_sample > wf->estimates[0].sample || - new_time - wf->estimates[2].time > wf->window_length) { - ngtcp2_window_filter_reset(wf, new_sample, new_time); - return; - } - - if (new_sample > wf->estimates[1].sample) { - wf->estimates[1].sample = new_sample; - wf->estimates[1].time = new_time; - wf->estimates[2] = wf->estimates[1]; - } else if (new_sample > wf->estimates[2].sample) { - wf->estimates[2].sample = new_sample; - wf->estimates[2].time = new_time; - } - - /* Expire and update estimates as necessary. */ - if (new_time - wf->estimates[0].time > wf->window_length) { - /* The best estimate hasn't been updated for an entire window, so - promote second and third best estimates. */ - wf->estimates[0] = wf->estimates[1]; - wf->estimates[1] = wf->estimates[2]; - wf->estimates[2].sample = new_sample; - wf->estimates[2].time = new_time; - - /* Need to iterate one more time. Check if the new best estimate - is outside the window as well, since it may also have been - recorded a long time ago. Don't need to iterate once more - since we cover that case at the beginning of the method. */ - if (new_time - wf->estimates[0].time > wf->window_length) { - wf->estimates[0] = wf->estimates[1]; - wf->estimates[1] = wf->estimates[2]; - } - return; - } - - if (wf->estimates[1].sample == wf->estimates[0].sample && - new_time - wf->estimates[1].time > wf->window_length >> 2) { - /* A quarter of the window has passed without a better sample, so - the second-best estimate is taken from the second quarter of - the window. */ - wf->estimates[2].sample = new_sample; - wf->estimates[2].time = new_time; - wf->estimates[1] = wf->estimates[2]; - return; - } - - if (wf->estimates[2].sample == wf->estimates[1].sample && - new_time - wf->estimates[2].time > wf->window_length >> 1) { - /* We've passed a half of the window without a better estimate, so - take a third-best estimate from the second half of the - window. */ - wf->estimates[2].sample = new_sample; - wf->estimates[2].time = new_time; - } -} - -void ngtcp2_window_filter_reset(ngtcp2_window_filter *wf, uint64_t new_sample, - uint64_t new_time) { - wf->estimates[0].sample = new_sample; - wf->estimates[0].time = new_time; - wf->estimates[1] = wf->estimates[2] = wf->estimates[0]; -} - -uint64_t ngtcp2_window_filter_get_best(ngtcp2_window_filter *wf) { - return wf->estimates[0].sample; -} diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_window_filter.h b/deps/ngtcp2/ngtcp2/lib/ngtcp2_window_filter.h deleted file mode 100644 index c90a9fdb9078da..00000000000000 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_window_filter.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * ngtcp2 - * - * Copyright (c) 2021 ngtcp2 contributors - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * Translated to C from the original C++ code - * https://quiche.googlesource.com/quiche/+/5be974e29f7e71a196e726d6e2272676d33ab77d/quic/core/congestion_control/windowed_filter.h - * with the following license: - * - * // Copyright (c) 2016 The Chromium Authors. All rights reserved. - * // Use of this source code is governed by a BSD-style license that can be - * // found in the LICENSE file. - */ -#ifndef NGTCP2_WINDOW_FILTER_H -#define NGTCP2_WINDOW_FILTER_H - -#ifdef HAVE_CONFIG_H -# include -#endif /* defined(HAVE_CONFIG_H) */ - -#include - -typedef struct ngtcp2_window_filter_sample { - uint64_t sample; - uint64_t time; -} ngtcp2_window_filter_sample; - -typedef struct ngtcp2_window_filter { - uint64_t window_length; - ngtcp2_window_filter_sample estimates[3]; -} ngtcp2_window_filter; - -void ngtcp2_window_filter_init(ngtcp2_window_filter *wf, - uint64_t window_length); - -void ngtcp2_window_filter_update(ngtcp2_window_filter *wf, uint64_t new_sample, - uint64_t new_time); - -void ngtcp2_window_filter_reset(ngtcp2_window_filter *wf, uint64_t new_sample, - uint64_t new_time); - -uint64_t ngtcp2_window_filter_get_best(ngtcp2_window_filter *wf); - -#endif /* !defined(NGTCP2_WINDOW_FILTER_H) */ diff --git a/deps/npm/docs/content/commands/npm-approve-scripts.md b/deps/npm/docs/content/commands/npm-approve-scripts.md index a89a250a769dc1..c4d3c15a8149f2 100644 --- a/deps/npm/docs/content/commands/npm-approve-scripts.md +++ b/deps/npm/docs/content/commands/npm-approve-scripts.md @@ -59,6 +59,14 @@ the command cannot infer. Existing `false` entries always win; `approve-scripts` will not silently re-allow a package you previously denied. +If a registry dependency has no `resolved` URL in your `package-lock.json` +(for example, an older lockfile or one written with +`omit-lockfile-registry-resolved`), npm cannot verify a trusted version for +it and cannot pin it: a `pkg@1.2.3` entry never matches, so the package +keeps appearing under `--allow-scripts-pending`. `approve-scripts` approves +these by name (`pkg: true`) and warns when it does. To restore pinning, +refresh the lockfile with `npm install`. + ### Examples ```bash diff --git a/deps/npm/docs/content/commands/npm-ci.md b/deps/npm/docs/content/commands/npm-ci.md index bc460070459604..741caf5eae7026 100644 --- a/deps/npm/docs/content/commands/npm-ci.md +++ b/deps/npm/docs/content/commands/npm-ci.md @@ -74,8 +74,16 @@ Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted. +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted. + +We recommend that package authors use `--install-strategy=linked` during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +`import` of a package that was never added to `package.json` can fail +instead of resolving by accident and shipping broken. See [Catching +undeclared ("phantom") +dependencies](/using-npm/developers#catching-undeclared-phantom-dependencies). @@ -298,6 +306,10 @@ silently skipped; this setting only affects unreviewed entries. `--ignore-scripts` and `--dangerously-allow-all-scripts` both override this setting. +Optional dependencies that cannot be installed on the current platform or +engine (a non-matching `os`, `cpu`, or `libc`) are not flagged, because +their install scripts never run. + #### `dangerously-allow-all-scripts` diff --git a/deps/npm/docs/content/commands/npm-dedupe.md b/deps/npm/docs/content/commands/npm-dedupe.md index 8186ee2c1f31c7..a48bf1bd622e5c 100644 --- a/deps/npm/docs/content/commands/npm-dedupe.md +++ b/deps/npm/docs/content/commands/npm-dedupe.md @@ -74,8 +74,16 @@ Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted. +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted. + +We recommend that package authors use `--install-strategy=linked` during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +`import` of a package that was never added to `package.json` can fail +instead of resolving by accident and shipping broken. See [Catching +undeclared ("phantom") +dependencies](/using-npm/developers#catching-undeclared-phantom-dependencies). diff --git a/deps/npm/docs/content/commands/npm-exec.md b/deps/npm/docs/content/commands/npm-exec.md index 13a0939209a5ea..ff08d07786a8d3 100644 --- a/deps/npm/docs/content/commands/npm-exec.md +++ b/deps/npm/docs/content/commands/npm-exec.md @@ -194,6 +194,10 @@ silently skipped; this setting only affects unreviewed entries. `--ignore-scripts` and `--dangerously-allow-all-scripts` both override this setting. +Optional dependencies that cannot be installed on the current platform or +engine (a non-matching `os`, `cpu`, or `libc`) are not flagged, because +their install scripts never run. + #### `dangerously-allow-all-scripts` diff --git a/deps/npm/docs/content/commands/npm-find-dupes.md b/deps/npm/docs/content/commands/npm-find-dupes.md index 52bb59b9f81b57..2d72186fe5a22e 100644 --- a/deps/npm/docs/content/commands/npm-find-dupes.md +++ b/deps/npm/docs/content/commands/npm-find-dupes.md @@ -25,8 +25,16 @@ Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted. +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted. + +We recommend that package authors use `--install-strategy=linked` during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +`import` of a package that was never added to `package.json` can fail +instead of resolving by accident and shipping broken. See [Catching +undeclared ("phantom") +dependencies](/using-npm/developers#catching-undeclared-phantom-dependencies). diff --git a/deps/npm/docs/content/commands/npm-install-ci-test.md b/deps/npm/docs/content/commands/npm-install-ci-test.md index 4528f63dfe28e8..2194a4df84a80c 100644 --- a/deps/npm/docs/content/commands/npm-install-ci-test.md +++ b/deps/npm/docs/content/commands/npm-install-ci-test.md @@ -27,8 +27,16 @@ Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted. +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted. + +We recommend that package authors use `--install-strategy=linked` during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +`import` of a package that was never added to `package.json` can fail +instead of resolving by accident and shipping broken. See [Catching +undeclared ("phantom") +dependencies](/using-npm/developers#catching-undeclared-phantom-dependencies). @@ -251,6 +259,10 @@ silently skipped; this setting only affects unreviewed entries. `--ignore-scripts` and `--dangerously-allow-all-scripts` both override this setting. +Optional dependencies that cannot be installed on the current platform or +engine (a non-matching `os`, `cpu`, or `libc`) are not flagged, because +their install scripts never run. + #### `dangerously-allow-all-scripts` diff --git a/deps/npm/docs/content/commands/npm-install-scripts.md b/deps/npm/docs/content/commands/npm-install-scripts.md new file mode 100644 index 00000000000000..4182392c9a3d1e --- /dev/null +++ b/deps/npm/docs/content/commands/npm-install-scripts.md @@ -0,0 +1,166 @@ +--- +title: npm-install-scripts +section: 1 +description: Manage install-script approvals for dependencies +--- + +### Synopsis + +```bash +npm install-scripts approve [ ...] +npm install-scripts approve --all +npm install-scripts deny [ ...] +npm install-scripts deny --all +npm install-scripts ls +npm install-scripts prune +``` + +Note: This command is unaware of workspaces. + +### Description + +Manages the `allowScripts` field in your project's `package.json`, which +records which of your dependencies are permitted to run install scripts +(`preinstall`, `install`, `postinstall`, and `prepare` for non-registry +sources). This is the recommended way to maintain that field. + +Dependency install scripts are blocked by default. Install commands +silently skip lifecycle scripts for any dependency that does not have a +matching entry in `allowScripts`, and end with a list of the packages +whose scripts were skipped so you can review them here. + +This command only works inside a project that has a `package.json`. Running +it with `--global` (`-g`) fails with an `EGLOBAL` error, since global +installs (`npm install -g`) and one-off executions (`npm exec` / `npx`) have +no project `package.json` to write to. To allow install scripts in those +contexts, use the `--allow-scripts` flag at install time (for example +`npm install -g --allow-scripts=canvas,sharp`) or persist the setting with +`npm config set allow-scripts=canvas,sharp --location=user`. + +There are four subcommands: + +```bash +npm install-scripts approve [ ...] +npm install-scripts approve --all +npm install-scripts deny [ ...] +npm install-scripts deny --all +npm install-scripts ls +npm install-scripts prune +``` + +`approve` allows install scripts for the named packages. `` matches +every installed version of that package. By default it writes pinned entries +(`pkg@1.2.3`), which keep their approval narrowed to the specific version you +reviewed. Pass `--no-allow-scripts-pin` to write name-only entries that allow +any future version. `--all` approves every package with unreviewed install +scripts in one go. + +`deny` records an explicit denial for the named packages (a name-only `false` +entry), which survives `npm install-scripts approve --all` and excludes the +package from any future blanket approval. `--all` denies every package with +unreviewed install scripts. + +`ls` is read-only: it lists every package whose install scripts are not yet +covered by `allowScripts`, without modifying `package.json`. + +`prune` removes `allowScripts` entries that no longer match an installed +package with an install script, either because the package is no longer +installed (a transitive dependency changed, or a pinned `pkg@1.2.3` was +upgraded) or because it no longer has an install script. Both approvals +(`true`) and denials (`false`) are removed. It edits only the `allowScripts` +field in `package.json`, never `.npmrc` or `--allow-scripts`. Pass `--dry-run` +to preview without writing. Unparseable keys are left alone. + +`approve` honours the asymmetric pin rule: if you re-approve a package whose +installed version has changed, the existing pin is rewritten to track the new +installed version. Multi-version statements (`pkg@1 || 2`) are left alone, +since they likely capture intent that the command cannot infer. Existing +`false` entries always win; `approve` will not silently re-allow a package you +previously denied. + +The standalone commands [`npm approve-scripts`](/commands/npm-approve-scripts) +and [`npm deny-scripts`](/commands/npm-deny-scripts) are aliases for +`npm install-scripts approve` and `npm install-scripts deny`. + +### Examples + +```bash +# Approve all currently-installed install scripts after reviewing them +npm install-scripts approve --all + +# Approve specific packages, pinned to their installed version +npm install-scripts approve canvas sharp + +# Deny a package so it stays blocked +npm install-scripts deny telemetry-pkg + +# Preview which packages still need review +npm install-scripts ls + +# Preview stale allowScripts entries, then remove them +npm install-scripts prune --dry-run +npm install-scripts prune +``` + +### Configuration + +#### `all` + +* Default: false +* Type: Boolean + +Show or act on all packages, not just the ones your project directly depends +on. For `npm outdated` and `npm ls` this lists every outdated or installed +package. For `npm approve-scripts` and `npm deny-scripts` it selects every +package with pending install scripts. + + + +#### `allow-scripts-pin` + +* Default: true +* Type: Boolean + +Write pinned (`pkg@version`) entries when approving install scripts. Set to +`false` to write name-only entries that allow any version. Has no effect on +`npm deny-scripts`, which always writes name-only entries regardless of this +setting. + + + +#### `dry-run` + +* Default: false +* Type: Boolean + +Indicates that you don't want npm to make any changes and that it should +only report what it would have done. This can be passed into any of the +commands that modify your local installation, eg, `install`, `update`, +`dedupe`, `uninstall`, as well as `pack` and `publish`. + +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. + + + +#### `json` + +* Default: false +* Type: Boolean + +Whether or not to output JSON data, rather than the normal output. + +* In `npm pkg set` it enables parsing set values with JSON.parse() before + saving them to your `package.json`. + +Not supported by all npm commands. + + + +### See Also + +* [npm approve-scripts](/commands/npm-approve-scripts) +* [npm deny-scripts](/commands/npm-deny-scripts) +* [npm install](/commands/npm-install) +* [npm rebuild](/commands/npm-rebuild) +* [package.json](/configuring-npm/package-json) diff --git a/deps/npm/docs/content/commands/npm-install-test.md b/deps/npm/docs/content/commands/npm-install-test.md index 44de058c56aa05..e13f79a51e6f18 100644 --- a/deps/npm/docs/content/commands/npm-install-test.md +++ b/deps/npm/docs/content/commands/npm-install-test.md @@ -68,8 +68,16 @@ Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted. +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted. + +We recommend that package authors use `--install-strategy=linked` during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +`import` of a package that was never added to `package.json` can fail +instead of resolving by accident and shipping broken. See [Catching +undeclared ("phantom") +dependencies](/using-npm/developers#catching-undeclared-phantom-dependencies). @@ -328,6 +336,10 @@ silently skipped; this setting only affects unreviewed entries. `--ignore-scripts` and `--dangerously-allow-all-scripts` both override this setting. +Optional dependencies that cannot be installed on the current platform or +engine (a non-matching `os`, `cpu`, or `libc`) are not flagged, because +their install scripts never run. + #### `dangerously-allow-all-scripts` @@ -375,6 +387,10 @@ sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one. +As with `min-release-age`, when this cutoff blocks a fix that `npm audit +fix` would install, npm keeps the vulnerable version, warns, and exits with +a non-zero code. + Packages whose names match `min-release-age-exclude` are exempt from this filter. @@ -397,6 +413,12 @@ your `.npmrc` is preserved when npm internally spawns a sub-process with apply, `before` wins within a single source and across sources the standard precedence rules apply. +When this window stops `npm audit fix` from installing a patched version +(because the fix was published too recently), npm keeps the package at its +vulnerable version, warns that the fix was blocked, and exits with a +non-zero code. To install the fix, add the package to +`min-release-age-exclude`, or relax `min-release-age` or `before`. + Packages whose names match `min-release-age-exclude` are exempt from this filter. diff --git a/deps/npm/docs/content/commands/npm-install.md b/deps/npm/docs/content/commands/npm-install.md index 5bd36c1fa45320..98d69d5e842451 100644 --- a/deps/npm/docs/content/commands/npm-install.md +++ b/deps/npm/docs/content/commands/npm-install.md @@ -410,8 +410,16 @@ Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted. +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted. + +We recommend that package authors use `--install-strategy=linked` during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +`import` of a package that was never added to `package.json` can fail +instead of resolving by accident and shipping broken. See [Catching +undeclared ("phantom") +dependencies](/using-npm/developers#catching-undeclared-phantom-dependencies). @@ -670,6 +678,10 @@ silently skipped; this setting only affects unreviewed entries. `--ignore-scripts` and `--dangerously-allow-all-scripts` both override this setting. +Optional dependencies that cannot be installed on the current platform or +engine (a non-matching `os`, `cpu`, or `libc`) are not flagged, because +their install scripts never run. + #### `dangerously-allow-all-scripts` @@ -717,6 +729,10 @@ sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one. +As with `min-release-age`, when this cutoff blocks a fix that `npm audit +fix` would install, npm keeps the vulnerable version, warns, and exits with +a non-zero code. + Packages whose names match `min-release-age-exclude` are exempt from this filter. @@ -739,6 +755,12 @@ your `.npmrc` is preserved when npm internally spawns a sub-process with apply, `before` wins within a single source and across sources the standard precedence rules apply. +When this window stops `npm audit fix` from installing a patched version +(because the fix was published too recently), npm keeps the package at its +vulnerable version, warns that the fix was blocked, and exits with a +non-zero code. To install the fix, add the package to +`min-release-age-exclude`, or relax `min-release-age` or `before`. + Packages whose names match `min-release-age-exclude` are exempt from this filter. diff --git a/deps/npm/docs/content/commands/npm-link.md b/deps/npm/docs/content/commands/npm-link.md index 37efda66408fbd..fa9626c4edd804 100644 --- a/deps/npm/docs/content/commands/npm-link.md +++ b/deps/npm/docs/content/commands/npm-link.md @@ -138,8 +138,16 @@ Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted. +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted. + +We recommend that package authors use `--install-strategy=linked` during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +`import` of a package that was never added to `package.json` can fail +instead of resolving by accident and shipping broken. See [Catching +undeclared ("phantom") +dependencies](/using-npm/developers#catching-undeclared-phantom-dependencies). diff --git a/deps/npm/docs/content/commands/npm-ls.md b/deps/npm/docs/content/commands/npm-ls.md index ae8e64ada95551..fba77fd01cffaf 100644 --- a/deps/npm/docs/content/commands/npm-ls.md +++ b/deps/npm/docs/content/commands/npm-ls.md @@ -23,7 +23,7 @@ Note that nested packages will *also* show the paths to the specified packages. For example, running `npm ls promzard` in npm's source tree will show: ```bash -npm@11.17.0 /path/to/npm +npm@11.18.0 /path/to/npm └─┬ init-package-json@0.0.4 └── promzard@0.1.5 ``` diff --git a/deps/npm/docs/content/commands/npm-outdated.md b/deps/npm/docs/content/commands/npm-outdated.md index 1f368132c465a5..40f7e835a68a51 100644 --- a/deps/npm/docs/content/commands/npm-outdated.md +++ b/deps/npm/docs/content/commands/npm-outdated.md @@ -172,6 +172,10 @@ sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one. +As with `min-release-age`, when this cutoff blocks a fix that `npm audit +fix` would install, npm keeps the vulnerable version, warns, and exits with +a non-zero code. + Packages whose names match `min-release-age-exclude` are exempt from this filter. @@ -194,6 +198,12 @@ your `.npmrc` is preserved when npm internally spawns a sub-process with apply, `before` wins within a single source and across sources the standard precedence rules apply. +When this window stops `npm audit fix` from installing a patched version +(because the fix was published too recently), npm keeps the package at its +vulnerable version, warns that the fix was blocked, and exits with a +non-zero code. To install the fix, add the package to +`min-release-age-exclude`, or relax `min-release-age` or `before`. + Packages whose names match `min-release-age-exclude` are exempt from this filter. diff --git a/deps/npm/docs/content/commands/npm-query.md b/deps/npm/docs/content/commands/npm-query.md index 83ea73188f7f10..4349e47ad23e06 100644 --- a/deps/npm/docs/content/commands/npm-query.md +++ b/deps/npm/docs/content/commands/npm-query.md @@ -284,6 +284,10 @@ sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one. +As with `min-release-age`, when this cutoff blocks a fix that `npm audit +fix` would install, npm keeps the vulnerable version, warns, and exits with +a non-zero code. + Packages whose names match `min-release-age-exclude` are exempt from this filter. @@ -306,6 +310,12 @@ your `.npmrc` is preserved when npm internally spawns a sub-process with apply, `before` wins within a single source and across sources the standard precedence rules apply. +When this window stops `npm audit fix` from installing a patched version +(because the fix was published too recently), npm keeps the package at its +vulnerable version, warns that the fix was blocked, and exits with a +non-zero code. To install the fix, add the package to +`min-release-age-exclude`, or relax `min-release-age` or `before`. + Packages whose names match `min-release-age-exclude` are exempt from this filter. diff --git a/deps/npm/docs/content/commands/npm-rebuild.md b/deps/npm/docs/content/commands/npm-rebuild.md index 18b1d37c779956..c70307a2a7fe2d 100644 --- a/deps/npm/docs/content/commands/npm-rebuild.md +++ b/deps/npm/docs/content/commands/npm-rebuild.md @@ -136,6 +136,10 @@ silently skipped; this setting only affects unreviewed entries. `--ignore-scripts` and `--dangerously-allow-all-scripts` both override this setting. +Optional dependencies that cannot be installed on the current platform or +engine (a non-matching `os`, `cpu`, or `libc`) are not flagged, because +their install scripts never run. + #### `dangerously-allow-all-scripts` diff --git a/deps/npm/docs/content/commands/npm-update.md b/deps/npm/docs/content/commands/npm-update.md index ee61e27dcda0e6..317f85f7d0dbd6 100644 --- a/deps/npm/docs/content/commands/npm-update.md +++ b/deps/npm/docs/content/commands/npm-update.md @@ -177,8 +177,16 @@ Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted. +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted. + +We recommend that package authors use `--install-strategy=linked` during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +`import` of a package that was never added to `package.json` can fail +instead of resolving by accident and shipping broken. See [Catching +undeclared ("phantom") +dependencies](/using-npm/developers#catching-undeclared-phantom-dependencies). @@ -338,6 +346,10 @@ silently skipped; this setting only affects unreviewed entries. `--ignore-scripts` and `--dangerously-allow-all-scripts` both override this setting. +Optional dependencies that cannot be installed on the current platform or +engine (a non-matching `os`, `cpu`, or `libc`) are not flagged, because +their install scripts never run. + #### `dangerously-allow-all-scripts` @@ -385,6 +397,10 @@ sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one. +As with `min-release-age`, when this cutoff blocks a fix that `npm audit +fix` would install, npm keeps the vulnerable version, warns, and exits with +a non-zero code. + Packages whose names match `min-release-age-exclude` are exempt from this filter. @@ -407,6 +423,12 @@ your `.npmrc` is preserved when npm internally spawns a sub-process with apply, `before` wins within a single source and across sources the standard precedence rules apply. +When this window stops `npm audit fix` from installing a patched version +(because the fix was published too recently), npm keeps the package at its +vulnerable version, warns that the fix was blocked, and exits with a +non-zero code. To install the fix, add the package to +`min-release-age-exclude`, or relax `min-release-age` or `before`. + Packages whose names match `min-release-age-exclude` are exempt from this filter. diff --git a/deps/npm/docs/content/commands/npm.md b/deps/npm/docs/content/commands/npm.md index d924d23c0ece0e..088553c6ffc486 100644 --- a/deps/npm/docs/content/commands/npm.md +++ b/deps/npm/docs/content/commands/npm.md @@ -14,7 +14,7 @@ Note: This command is unaware of workspaces. ### Version -11.17.0 +11.18.0 ### Description diff --git a/deps/npm/docs/content/using-npm/config.md b/deps/npm/docs/content/using-npm/config.md index 6bbb68fdf56528..5d951493e8a1c1 100644 --- a/deps/npm/docs/content/using-npm/config.md +++ b/deps/npm/docs/content/using-npm/config.md @@ -349,6 +349,10 @@ sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one. +As with `min-release-age`, when this cutoff blocks a fix that `npm audit +fix` would install, npm keeps the vulnerable version, warns, and exits with +a non-zero code. + Packages whose names match `min-release-age-exclude` are exempt from this filter. @@ -1029,8 +1033,16 @@ Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted. +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted. + +We recommend that package authors use `--install-strategy=linked` during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +`import` of a package that was never added to `package.json` can fail +instead of resolving by accident and shipping broken. See [Catching +undeclared ("phantom") +dependencies](/using-npm/developers#catching-undeclared-phantom-dependencies). @@ -1224,6 +1236,12 @@ your `.npmrc` is preserved when npm internally spawns a sub-process with apply, `before` wins within a single source and across sources the standard precedence rules apply. +When this window stops `npm audit fix` from installing a patched version +(because the fix was published too recently), npm keeps the package at its +vulnerable version, warns that the fix was blocked, and exits with a +non-zero code. To install the fix, add the package to +`min-release-age-exclude`, or relax `min-release-age` or `before`. + Packages whose names match `min-release-age-exclude` are exempt from this filter. @@ -1620,7 +1638,14 @@ registry (https://registry.npmjs.org) to the configured registry. If set to "never", then use the registry value. If set to "always", then replace the registry host with the configured host every time. -You may also specify a bare hostname (e.g., "registry.npmjs.org"). +You may also specify a bare hostname (e.g., "registry.npmjs.org") to only +replace URLs coming from that host. + +You may also specify a full URL including a path (e.g., +"https://old-registry.example.com/npm/path"). In that case, resolved URLs +whose host and path begin with that prefix will have the entire prefix +replaced with the configured registry URL (host and path), without +duplicating path segments. @@ -1877,6 +1902,10 @@ silently skipped; this setting only affects unreviewed entries. `--ignore-scripts` and `--dangerously-allow-all-scripts` both override this setting. +Optional dependencies that cannot be installed on the current platform or +engine (a non-matching `os`, `cpu`, or `libc`) are not flagged, because +their install scripts never run. + #### `strict-peer-deps` diff --git a/deps/npm/docs/content/using-npm/developers.md b/deps/npm/docs/content/using-npm/developers.md index de0cb848c59ff4..b1fff0e3894f30 100644 --- a/deps/npm/docs/content/using-npm/developers.md +++ b/deps/npm/docs/content/using-npm/developers.md @@ -171,6 +171,24 @@ to install it locally into the node_modules folder in that other place. Then go into the node-repl, and try using require("my-thing") to bring in your module's main module. +#### Catching undeclared ("phantom") dependencies + +Under the default hoisted `node_modules` layout, your package can `import` a dependency it never declared and still resolve it. +A transitive dependency hoisted alongside it, or your workspace root's `node_modules`, happens to satisfy the `import`. +That undeclared ("phantom") dependency passes your own build silently, then fails for anyone who installs your package on its own. + +We recommend developing your package under [`install-strategy=linked`](/using-npm/config#install-strategy). +The isolated layout only exposes a package's *declared* dependencies, so an `import` of an undeclared package fails for you during development instead of resolving by accident, shipping broken, and failing for your users: + +```bash +npm install --install-strategy=linked +npm test +``` + +> **Note:** This doesn't catch every case. +> A dependency that's still satisfied at your build by a `devDependency` or by your workspace root's `node_modules` can resolve fine for you and still be missing for whoever installs your package. +> So treat it as one check, not a guarantee, alongside auditing the dependencies your published package actually uses. + ### Create a User Account Create a user with the adduser command. diff --git a/deps/npm/docs/output/commands/npm-access.html b/deps/npm/docs/output/commands/npm-access.html index fd3ccdbdf886aa..13475a5d16f425 100644 --- a/deps/npm/docs/output/commands/npm-access.html +++ b/deps/npm/docs/output/commands/npm-access.html @@ -186,9 +186,9 @@
-

+

npm-access - @11.17.0 + @11.18.0

Set access level on published packages
diff --git a/deps/npm/docs/output/commands/npm-adduser.html b/deps/npm/docs/output/commands/npm-adduser.html index 56679269f19860..e43659736fec33 100644 --- a/deps/npm/docs/output/commands/npm-adduser.html +++ b/deps/npm/docs/output/commands/npm-adduser.html @@ -186,9 +186,9 @@
-

+

npm-adduser - @11.17.0 + @11.18.0

Add a registry user account
diff --git a/deps/npm/docs/output/commands/npm-approve-scripts.html b/deps/npm/docs/output/commands/npm-approve-scripts.html index 8d13f05fb30d4b..c3bc0172b5a4db 100644 --- a/deps/npm/docs/output/commands/npm-approve-scripts.html +++ b/deps/npm/docs/output/commands/npm-approve-scripts.html @@ -186,9 +186,9 @@
-

+

npm-approve-scripts - @11.17.0 + @11.18.0

Approve install scripts for specific dependencies
@@ -238,6 +238,13 @@

Description

the command cannot infer. Existing false entries always win; approve-scripts will not silently re-allow a package you previously denied.

+

If a registry dependency has no resolved URL in your package-lock.json +(for example, an older lockfile or one written with +omit-lockfile-registry-resolved), npm cannot verify a trusted version for +it and cannot pin it: a pkg@1.2.3 entry never matches, so the package +keeps appearing under --allow-scripts-pending. approve-scripts approves +these by name (pkg: true) and warns when it does. To restore pinning, +refresh the lockfile with npm install.

Examples

# Approve all currently-installed install scripts after reviewing them
 npm approve-scripts --all
diff --git a/deps/npm/docs/output/commands/npm-audit.html b/deps/npm/docs/output/commands/npm-audit.html
index e250ae85e00907..61042b6fbb07c0 100644
--- a/deps/npm/docs/output/commands/npm-audit.html
+++ b/deps/npm/docs/output/commands/npm-audit.html
@@ -186,9 +186,9 @@
 
 
-

+

npm-audit - @11.17.0 + @11.18.0

Run a security audit
diff --git a/deps/npm/docs/output/commands/npm-bugs.html b/deps/npm/docs/output/commands/npm-bugs.html index 9d7cabb2eb07a9..660f011d1a0d9f 100644 --- a/deps/npm/docs/output/commands/npm-bugs.html +++ b/deps/npm/docs/output/commands/npm-bugs.html @@ -186,9 +186,9 @@
-

+

npm-bugs - @11.17.0 + @11.18.0

Report bugs for a package in a web browser
diff --git a/deps/npm/docs/output/commands/npm-cache.html b/deps/npm/docs/output/commands/npm-cache.html index 49b091085717d2..553a38d06f42ab 100644 --- a/deps/npm/docs/output/commands/npm-cache.html +++ b/deps/npm/docs/output/commands/npm-cache.html @@ -186,9 +186,9 @@
-

+

npm-cache - @11.17.0 + @11.18.0

Manipulates packages cache
diff --git a/deps/npm/docs/output/commands/npm-ci.html b/deps/npm/docs/output/commands/npm-ci.html index f01388a8be4ff3..3e61cba31beaa8 100644 --- a/deps/npm/docs/output/commands/npm-ci.html +++ b/deps/npm/docs/output/commands/npm-ci.html @@ -186,9 +186,9 @@
-

+

npm-ci - @11.17.0 + @11.18.0

Clean install a project
@@ -251,8 +251,15 @@

install-strategy

(default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted.

+deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted.

+

We recommend that package authors use --install-strategy=linked during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +import of a package that was never added to package.json can fail +instead of resolving by accident and shipping broken. See Catching +undeclared ("phantom") +dependencies.

legacy-bundling

  • Default: false
  • @@ -419,6 +426,9 @@

    strict-allow-scripts

    silently skipped; this setting only affects unreviewed entries. --ignore-scripts and --dangerously-allow-all-scripts both override this setting.

    +

    Optional dependencies that cannot be installed on the current platform or +engine (a non-matching os, cpu, or libc) are not flagged, because +their install scripts never run.

    dangerously-allow-all-scripts

    • Default: false
    • diff --git a/deps/npm/docs/output/commands/npm-completion.html b/deps/npm/docs/output/commands/npm-completion.html index e0769eb5665c5a..d24da48ebb03ff 100644 --- a/deps/npm/docs/output/commands/npm-completion.html +++ b/deps/npm/docs/output/commands/npm-completion.html @@ -186,9 +186,9 @@
      -

      +

      npm-completion - @11.17.0 + @11.18.0

      Tab Completion for npm
      diff --git a/deps/npm/docs/output/commands/npm-config.html b/deps/npm/docs/output/commands/npm-config.html index 83b7a3b0eeab8c..a3c0dab2dee799 100644 --- a/deps/npm/docs/output/commands/npm-config.html +++ b/deps/npm/docs/output/commands/npm-config.html @@ -186,9 +186,9 @@
      -

      +

      npm-config - @11.17.0 + @11.18.0

      Manage the npm configuration files
      diff --git a/deps/npm/docs/output/commands/npm-dedupe.html b/deps/npm/docs/output/commands/npm-dedupe.html index 26065b3862e16c..fa8d4b7084379d 100644 --- a/deps/npm/docs/output/commands/npm-dedupe.html +++ b/deps/npm/docs/output/commands/npm-dedupe.html @@ -186,9 +186,9 @@
      -

      +

      npm-dedupe - @11.17.0 + @11.18.0

      Reduce duplication in the package tree
      @@ -245,8 +245,15 @@

      install-strategy

      (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted.

      +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted.

      +

      We recommend that package authors use --install-strategy=linked during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +import of a package that was never added to package.json can fail +instead of resolving by accident and shipping broken. See Catching +undeclared ("phantom") +dependencies.

      legacy-bundling

      • Default: false
      • diff --git a/deps/npm/docs/output/commands/npm-deny-scripts.html b/deps/npm/docs/output/commands/npm-deny-scripts.html index 957193be87c446..4f7653c40173a6 100644 --- a/deps/npm/docs/output/commands/npm-deny-scripts.html +++ b/deps/npm/docs/output/commands/npm-deny-scripts.html @@ -186,9 +186,9 @@
        -

        +

        npm-deny-scripts - @11.17.0 + @11.18.0

        Deny install scripts for specific dependencies
        diff --git a/deps/npm/docs/output/commands/npm-deprecate.html b/deps/npm/docs/output/commands/npm-deprecate.html index b58d5388a985b9..30c4c912238480 100644 --- a/deps/npm/docs/output/commands/npm-deprecate.html +++ b/deps/npm/docs/output/commands/npm-deprecate.html @@ -186,9 +186,9 @@
        -

        +

        npm-deprecate - @11.17.0 + @11.18.0

        Deprecate a version of a package
        diff --git a/deps/npm/docs/output/commands/npm-diff.html b/deps/npm/docs/output/commands/npm-diff.html index a092efb1faf40c..6cf770360c1076 100644 --- a/deps/npm/docs/output/commands/npm-diff.html +++ b/deps/npm/docs/output/commands/npm-diff.html @@ -186,9 +186,9 @@
        -

        +

        npm-diff - @11.17.0 + @11.18.0

        The registry diff command
        diff --git a/deps/npm/docs/output/commands/npm-dist-tag.html b/deps/npm/docs/output/commands/npm-dist-tag.html index 2fc358fef37ca3..59985e4a43f316 100644 --- a/deps/npm/docs/output/commands/npm-dist-tag.html +++ b/deps/npm/docs/output/commands/npm-dist-tag.html @@ -186,9 +186,9 @@
        -

        +

        npm-dist-tag - @11.17.0 + @11.18.0

        Modify package distribution tags
        diff --git a/deps/npm/docs/output/commands/npm-docs.html b/deps/npm/docs/output/commands/npm-docs.html index 2eaade58d4d9ae..884f20d70d2f93 100644 --- a/deps/npm/docs/output/commands/npm-docs.html +++ b/deps/npm/docs/output/commands/npm-docs.html @@ -186,9 +186,9 @@
        -

        +

        npm-docs - @11.17.0 + @11.18.0

        Open documentation for a package in a web browser
        diff --git a/deps/npm/docs/output/commands/npm-doctor.html b/deps/npm/docs/output/commands/npm-doctor.html index e7a3771d5d654e..13bb25228dd28b 100644 --- a/deps/npm/docs/output/commands/npm-doctor.html +++ b/deps/npm/docs/output/commands/npm-doctor.html @@ -186,9 +186,9 @@
        -

        +

        npm-doctor - @11.17.0 + @11.18.0

        Check the health of your npm environment
        diff --git a/deps/npm/docs/output/commands/npm-edit.html b/deps/npm/docs/output/commands/npm-edit.html index 6f1ee44d54b0fe..6d1215ebfe1038 100644 --- a/deps/npm/docs/output/commands/npm-edit.html +++ b/deps/npm/docs/output/commands/npm-edit.html @@ -186,9 +186,9 @@
        -

        +

        npm-edit - @11.17.0 + @11.18.0

        Edit an installed package
        diff --git a/deps/npm/docs/output/commands/npm-exec.html b/deps/npm/docs/output/commands/npm-exec.html index d64cf7d587da27..3f57293a17fc56 100644 --- a/deps/npm/docs/output/commands/npm-exec.html +++ b/deps/npm/docs/output/commands/npm-exec.html @@ -186,9 +186,9 @@
        -

        +

        npm-exec - @11.17.0 + @11.18.0

        Run a command from a local or remote npm package
        @@ -336,6 +336,9 @@

        strict-allow-scripts

        silently skipped; this setting only affects unreviewed entries. --ignore-scripts and --dangerously-allow-all-scripts both override this setting.

        +

        Optional dependencies that cannot be installed on the current platform or +engine (a non-matching os, cpu, or libc) are not flagged, because +their install scripts never run.

        dangerously-allow-all-scripts

        • Default: false
        • diff --git a/deps/npm/docs/output/commands/npm-explain.html b/deps/npm/docs/output/commands/npm-explain.html index 4c61e4dc5fbf14..5d5f6cea5ce113 100644 --- a/deps/npm/docs/output/commands/npm-explain.html +++ b/deps/npm/docs/output/commands/npm-explain.html @@ -186,9 +186,9 @@
          -

          +

          npm-explain - @11.17.0 + @11.18.0

          Explain installed packages
          diff --git a/deps/npm/docs/output/commands/npm-explore.html b/deps/npm/docs/output/commands/npm-explore.html index 68f61b31ed7d1b..d1ecb4e81886a8 100644 --- a/deps/npm/docs/output/commands/npm-explore.html +++ b/deps/npm/docs/output/commands/npm-explore.html @@ -186,9 +186,9 @@
          -

          +

          npm-explore - @11.17.0 + @11.18.0

          Browse an installed package
          diff --git a/deps/npm/docs/output/commands/npm-find-dupes.html b/deps/npm/docs/output/commands/npm-find-dupes.html index c6dea14d12f997..28a9066398760c 100644 --- a/deps/npm/docs/output/commands/npm-find-dupes.html +++ b/deps/npm/docs/output/commands/npm-find-dupes.html @@ -186,9 +186,9 @@
          -

          +

          npm-find-dupes - @11.17.0 + @11.18.0

          Find duplication in the package tree
          @@ -213,8 +213,15 @@

          install-strategy

          (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted.

          +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted.

          +

          We recommend that package authors use --install-strategy=linked during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +import of a package that was never added to package.json can fail +instead of resolving by accident and shipping broken. See Catching +undeclared ("phantom") +dependencies.

          legacy-bundling

          • Default: false
          • diff --git a/deps/npm/docs/output/commands/npm-fund.html b/deps/npm/docs/output/commands/npm-fund.html index 0b7602251f020f..26761cc90196c8 100644 --- a/deps/npm/docs/output/commands/npm-fund.html +++ b/deps/npm/docs/output/commands/npm-fund.html @@ -186,9 +186,9 @@
            -

            +

            npm-fund - @11.17.0 + @11.18.0

            Retrieve funding information
            diff --git a/deps/npm/docs/output/commands/npm-get.html b/deps/npm/docs/output/commands/npm-get.html index e81310c39b33c0..e8fe5dfc0373ea 100644 --- a/deps/npm/docs/output/commands/npm-get.html +++ b/deps/npm/docs/output/commands/npm-get.html @@ -186,9 +186,9 @@
            -

            +

            npm-get - @11.17.0 + @11.18.0

            Get a value from the npm configuration
            diff --git a/deps/npm/docs/output/commands/npm-help-search.html b/deps/npm/docs/output/commands/npm-help-search.html index b44eddadf701b0..24f4ddafaea589 100644 --- a/deps/npm/docs/output/commands/npm-help-search.html +++ b/deps/npm/docs/output/commands/npm-help-search.html @@ -186,9 +186,9 @@
            -

            +

            npm-help-search - @11.17.0 + @11.18.0

            Search npm help documentation
            diff --git a/deps/npm/docs/output/commands/npm-help.html b/deps/npm/docs/output/commands/npm-help.html index d22edb7c826b09..4fb2ef4be76c30 100644 --- a/deps/npm/docs/output/commands/npm-help.html +++ b/deps/npm/docs/output/commands/npm-help.html @@ -186,9 +186,9 @@
            -

            +

            npm-help - @11.17.0 + @11.18.0

            Get help on npm
            diff --git a/deps/npm/docs/output/commands/npm-init.html b/deps/npm/docs/output/commands/npm-init.html index 836969ed135304..deeaf25a2348a0 100644 --- a/deps/npm/docs/output/commands/npm-init.html +++ b/deps/npm/docs/output/commands/npm-init.html @@ -186,9 +186,9 @@
            -

            +

            npm-init - @11.17.0 + @11.18.0

            Create a package.json file
            diff --git a/deps/npm/docs/output/commands/npm-install-ci-test.html b/deps/npm/docs/output/commands/npm-install-ci-test.html index 6f633c2c18a02d..2227da94885950 100644 --- a/deps/npm/docs/output/commands/npm-install-ci-test.html +++ b/deps/npm/docs/output/commands/npm-install-ci-test.html @@ -186,9 +186,9 @@
            -

            +

            npm-install-ci-test - @11.17.0 + @11.18.0

            Install a project with a clean slate and run tests
            @@ -215,8 +215,15 @@

            install-strategy

            (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted.

            +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted.

            +

            We recommend that package authors use --install-strategy=linked during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +import of a package that was never added to package.json can fail +instead of resolving by accident and shipping broken. See Catching +undeclared ("phantom") +dependencies.

            legacy-bundling

            • Default: false
            • @@ -383,6 +390,9 @@

              strict-allow-scripts

              silently skipped; this setting only affects unreviewed entries. --ignore-scripts and --dangerously-allow-all-scripts both override this setting.

              +

              Optional dependencies that cannot be installed on the current platform or +engine (a non-matching os, cpu, or libc) are not flagged, because +their install scripts never run.

              dangerously-allow-all-scripts

              • Default: false
              • diff --git a/deps/npm/docs/output/commands/npm-install-scripts.html b/deps/npm/docs/output/commands/npm-install-scripts.html new file mode 100644 index 00000000000000..1b036581f6a36e --- /dev/null +++ b/deps/npm/docs/output/commands/npm-install-scripts.html @@ -0,0 +1,341 @@ + + +npm-install-scripts + + + + + +
                +
                +

                + npm-install-scripts + @11.18.0 +

                +Manage install-script approvals for dependencies +
                + +
                +

                Table of contents

                + +
                + +

                Synopsis

                +
                npm install-scripts approve <pkg> [<pkg> ...]
                +npm install-scripts approve --all
                +npm install-scripts deny <pkg> [<pkg> ...]
                +npm install-scripts deny --all
                +npm install-scripts ls
                +npm install-scripts prune
                +
                +

                Note: This command is unaware of workspaces.

                +

                Description

                +

                Manages the allowScripts field in your project's package.json, which +records which of your dependencies are permitted to run install scripts +(preinstall, install, postinstall, and prepare for non-registry +sources). This is the recommended way to maintain that field.

                +

                Dependency install scripts are blocked by default. Install commands +silently skip lifecycle scripts for any dependency that does not have a +matching entry in allowScripts, and end with a list of the packages +whose scripts were skipped so you can review them here.

                +

                This command only works inside a project that has a package.json. Running +it with --global (-g) fails with an EGLOBAL error, since global +installs (npm install -g) and one-off executions (npm exec / npx) have +no project package.json to write to. To allow install scripts in those +contexts, use the --allow-scripts flag at install time (for example +npm install -g --allow-scripts=canvas,sharp) or persist the setting with +npm config set allow-scripts=canvas,sharp --location=user.

                +

                There are four subcommands:

                +
                npm install-scripts approve <pkg> [<pkg> ...]
                +npm install-scripts approve --all
                +npm install-scripts deny <pkg> [<pkg> ...]
                +npm install-scripts deny --all
                +npm install-scripts ls
                +npm install-scripts prune
                +
                +

                approve allows install scripts for the named packages. <pkg> matches +every installed version of that package. By default it writes pinned entries +(pkg@1.2.3), which keep their approval narrowed to the specific version you +reviewed. Pass --no-allow-scripts-pin to write name-only entries that allow +any future version. --all approves every package with unreviewed install +scripts in one go.

                +

                deny records an explicit denial for the named packages (a name-only false +entry), which survives npm install-scripts approve --all and excludes the +package from any future blanket approval. --all denies every package with +unreviewed install scripts.

                +

                ls is read-only: it lists every package whose install scripts are not yet +covered by allowScripts, without modifying package.json.

                +

                prune removes allowScripts entries that no longer match an installed +package with an install script, either because the package is no longer +installed (a transitive dependency changed, or a pinned pkg@1.2.3 was +upgraded) or because it no longer has an install script. Both approvals +(true) and denials (false) are removed. It edits only the allowScripts +field in package.json, never .npmrc or --allow-scripts. Pass --dry-run +to preview without writing. Unparseable keys are left alone.

                +

                approve honours the asymmetric pin rule: if you re-approve a package whose +installed version has changed, the existing pin is rewritten to track the new +installed version. Multi-version statements (pkg@1 || 2) are left alone, +since they likely capture intent that the command cannot infer. Existing +false entries always win; approve will not silently re-allow a package you +previously denied.

                +

                The standalone commands npm approve-scripts +and npm deny-scripts are aliases for +npm install-scripts approve and npm install-scripts deny.

                +

                Examples

                +
                # Approve all currently-installed install scripts after reviewing them
                +npm install-scripts approve --all
                +
                +# Approve specific packages, pinned to their installed version
                +npm install-scripts approve canvas sharp
                +
                +# Deny a package so it stays blocked
                +npm install-scripts deny telemetry-pkg
                +
                +# Preview which packages still need review
                +npm install-scripts ls
                +
                +# Preview stale allowScripts entries, then remove them
                +npm install-scripts prune --dry-run
                +npm install-scripts prune
                +
                +

                Configuration

                +

                all

                +
                  +
                • Default: false
                • +
                • Type: Boolean
                • +
                +

                Show or act on all packages, not just the ones your project directly depends +on. For npm outdated and npm ls this lists every outdated or installed +package. For npm approve-scripts and npm deny-scripts it selects every +package with pending install scripts.

                +

                allow-scripts-pin

                +
                  +
                • Default: true
                • +
                • Type: Boolean
                • +
                +

                Write pinned (pkg@version) entries when approving install scripts. Set to +false to write name-only entries that allow any version. Has no effect on +npm deny-scripts, which always writes name-only entries regardless of this +setting.

                +

                dry-run

                +
                  +
                • Default: false
                • +
                • Type: Boolean
                • +
                +

                Indicates that you don't want npm to make any changes and that it should +only report what it would have done. This can be passed into any of the +commands that modify your local installation, eg, install, update, +dedupe, uninstall, as well as pack and publish.

                +

                Note: This is NOT honored by other network related commands, eg dist-tags, +owner, etc.

                +

                json

                +
                  +
                • Default: false
                • +
                • Type: Boolean
                • +
                +

                Whether or not to output JSON data, rather than the normal output.

                +
                  +
                • In npm pkg set it enables parsing set values with JSON.parse() before +saving them to your package.json.
                • +
                +

                Not supported by all npm commands.

                +

                See Also

                +
                + + +
                + + + + \ No newline at end of file diff --git a/deps/npm/docs/output/commands/npm-install-test.html b/deps/npm/docs/output/commands/npm-install-test.html index bd12094e8ca1c6..94231076345ad4 100644 --- a/deps/npm/docs/output/commands/npm-install-test.html +++ b/deps/npm/docs/output/commands/npm-install-test.html @@ -186,9 +186,9 @@
                -

                +

                npm-install-test - @11.17.0 + @11.18.0

                Install package(s) and run tests
                @@ -246,8 +246,15 @@

                install-strategy

                (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted.

                +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted.

                +

                We recommend that package authors use --install-strategy=linked during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +import of a package that was never added to package.json can fail +instead of resolving by accident and shipping broken. See Catching +undeclared ("phantom") +dependencies.

                legacy-bundling

                • Default: false
                • @@ -439,6 +446,9 @@

                  strict-allow-scripts

                  silently skipped; this setting only affects unreviewed entries. --ignore-scripts and --dangerously-allow-all-scripts both override this setting.

                  +

                  Optional dependencies that cannot be installed on the current platform or +engine (a non-matching os, cpu, or libc) are not flagged, because +their install scripts never run.

                  dangerously-allow-all-scripts

                  • Default: false
                  • @@ -475,6 +485,8 @@

                    before

                    sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one.

                    +

                    As with min-release-age, when this cutoff blocks a fix that npm audit fix would install, npm keeps the vulnerable version, warns, and exits with +a non-zero code.

                    Packages whose names match min-release-age-exclude are exempt from this filter.

                    min-release-age

                    @@ -492,6 +504,11 @@

                    min-release-age

                    --before while preparing a git: or github: dependency); when both apply, before wins within a single source and across sources the standard precedence rules apply.

                    +

                    When this window stops npm audit fix from installing a patched version +(because the fix was published too recently), npm keeps the package at its +vulnerable version, warns that the fix was blocked, and exits with a +non-zero code. To install the fix, add the package to +min-release-age-exclude, or relax min-release-age or before.

                    Packages whose names match min-release-age-exclude are exempt from this filter.

                    This value is not exported to the environment for child processes.

                    diff --git a/deps/npm/docs/output/commands/npm-install.html b/deps/npm/docs/output/commands/npm-install.html index 767a65f28bbd2c..fd6fe12eb8cd6d 100644 --- a/deps/npm/docs/output/commands/npm-install.html +++ b/deps/npm/docs/output/commands/npm-install.html @@ -186,9 +186,9 @@
                    -

                    +

                    npm-install - @11.17.0 + @11.18.0

                    Install a package
                    @@ -521,8 +521,15 @@

                    install-strategy

                    (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted.

                    +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted.

                    +

                    We recommend that package authors use --install-strategy=linked during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +import of a package that was never added to package.json can fail +instead of resolving by accident and shipping broken. See Catching +undeclared ("phantom") +dependencies.

                    legacy-bundling

                    • Default: false
                    • @@ -714,6 +721,9 @@

                      strict-allow-scripts

                      silently skipped; this setting only affects unreviewed entries. --ignore-scripts and --dangerously-allow-all-scripts both override this setting.

                      +

                      Optional dependencies that cannot be installed on the current platform or +engine (a non-matching os, cpu, or libc) are not flagged, because +their install scripts never run.

                      dangerously-allow-all-scripts

                      • Default: false
                      • @@ -750,6 +760,8 @@

                        before

                        sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one.

                        +

                        As with min-release-age, when this cutoff blocks a fix that npm audit fix would install, npm keeps the vulnerable version, warns, and exits with +a non-zero code.

                        Packages whose names match min-release-age-exclude are exempt from this filter.

                        min-release-age

                        @@ -767,6 +779,11 @@

                        min-release-age

                        --before while preparing a git: or github: dependency); when both apply, before wins within a single source and across sources the standard precedence rules apply.

                        +

                        When this window stops npm audit fix from installing a patched version +(because the fix was published too recently), npm keeps the package at its +vulnerable version, warns that the fix was blocked, and exits with a +non-zero code. To install the fix, add the package to +min-release-age-exclude, or relax min-release-age or before.

                        Packages whose names match min-release-age-exclude are exempt from this filter.

                        This value is not exported to the environment for child processes.

                        diff --git a/deps/npm/docs/output/commands/npm-link.html b/deps/npm/docs/output/commands/npm-link.html index 42fd82304ecf17..e4c9f092f37c09 100644 --- a/deps/npm/docs/output/commands/npm-link.html +++ b/deps/npm/docs/output/commands/npm-link.html @@ -186,9 +186,9 @@
                        -

                        +

                        npm-link - @11.17.0 + @11.18.0

                        Symlink a package folder
                        @@ -288,8 +288,15 @@

                        install-strategy

                        (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted.

                        +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted.

                        +

                        We recommend that package authors use --install-strategy=linked during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +import of a package that was never added to package.json can fail +instead of resolving by accident and shipping broken. See Catching +undeclared ("phantom") +dependencies.

                        legacy-bundling

                        • Default: false
                        • diff --git a/deps/npm/docs/output/commands/npm-ll.html b/deps/npm/docs/output/commands/npm-ll.html index e288cc8a65d634..a7e3061ddf98bf 100644 --- a/deps/npm/docs/output/commands/npm-ll.html +++ b/deps/npm/docs/output/commands/npm-ll.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-ll - @11.17.0 + @11.18.0

                          List installed packages
                          diff --git a/deps/npm/docs/output/commands/npm-login.html b/deps/npm/docs/output/commands/npm-login.html index 7ead867b8d396c..b08ac7b3357030 100644 --- a/deps/npm/docs/output/commands/npm-login.html +++ b/deps/npm/docs/output/commands/npm-login.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-login - @11.17.0 + @11.18.0

                          Login to a registry user account
                          diff --git a/deps/npm/docs/output/commands/npm-logout.html b/deps/npm/docs/output/commands/npm-logout.html index 19ecf24f01efad..dfc1b256538f45 100644 --- a/deps/npm/docs/output/commands/npm-logout.html +++ b/deps/npm/docs/output/commands/npm-logout.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-logout - @11.17.0 + @11.18.0

                          Log out of the registry
                          diff --git a/deps/npm/docs/output/commands/npm-ls.html b/deps/npm/docs/output/commands/npm-ls.html index 181541d978ea07..a3de66d0323c8e 100644 --- a/deps/npm/docs/output/commands/npm-ls.html +++ b/deps/npm/docs/output/commands/npm-ls.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-ls - @11.17.0 + @11.18.0

                          List installed packages
                          @@ -209,7 +209,7 @@

                          Description

                          Positional arguments are name@version-range identifiers, which will limit the results to only the paths to the packages named. Note that nested packages will also show the paths to the specified packages. For example, running npm ls promzard in npm's source tree will show:

                          -
                          npm@11.17.0 /path/to/npm
                          +
                          npm@11.18.0 /path/to/npm
                           └─┬ init-package-json@0.0.4
                             └── promzard@0.1.5
                           
                          diff --git a/deps/npm/docs/output/commands/npm-org.html b/deps/npm/docs/output/commands/npm-org.html index 361f44be6f3040..7c0526d750c62f 100644 --- a/deps/npm/docs/output/commands/npm-org.html +++ b/deps/npm/docs/output/commands/npm-org.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-org - @11.17.0 + @11.18.0

                          Manage orgs
                          diff --git a/deps/npm/docs/output/commands/npm-outdated.html b/deps/npm/docs/output/commands/npm-outdated.html index 9703cf4bacf71f..5bf8ee630c262c 100644 --- a/deps/npm/docs/output/commands/npm-outdated.html +++ b/deps/npm/docs/output/commands/npm-outdated.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-outdated - @11.17.0 + @11.18.0

                          Check for outdated packages
                          @@ -334,6 +334,8 @@

                          before

                          sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one.

                          +

                          As with min-release-age, when this cutoff blocks a fix that npm audit fix would install, npm keeps the vulnerable version, warns, and exits with +a non-zero code.

                          Packages whose names match min-release-age-exclude are exempt from this filter.

                          min-release-age

                          @@ -351,6 +353,11 @@

                          min-release-age

                          --before while preparing a git: or github: dependency); when both apply, before wins within a single source and across sources the standard precedence rules apply.

                          +

                          When this window stops npm audit fix from installing a patched version +(because the fix was published too recently), npm keeps the package at its +vulnerable version, warns that the fix was blocked, and exits with a +non-zero code. To install the fix, add the package to +min-release-age-exclude, or relax min-release-age or before.

                          Packages whose names match min-release-age-exclude are exempt from this filter.

                          This value is not exported to the environment for child processes.

                          diff --git a/deps/npm/docs/output/commands/npm-owner.html b/deps/npm/docs/output/commands/npm-owner.html index 649e7408130966..c4947a01ae92a3 100644 --- a/deps/npm/docs/output/commands/npm-owner.html +++ b/deps/npm/docs/output/commands/npm-owner.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-owner - @11.17.0 + @11.18.0

                          Manage package owners
                          diff --git a/deps/npm/docs/output/commands/npm-pack.html b/deps/npm/docs/output/commands/npm-pack.html index ab45154d21a3e2..a875a527f81f37 100644 --- a/deps/npm/docs/output/commands/npm-pack.html +++ b/deps/npm/docs/output/commands/npm-pack.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-pack - @11.17.0 + @11.18.0

                          Create a tarball from a package
                          diff --git a/deps/npm/docs/output/commands/npm-ping.html b/deps/npm/docs/output/commands/npm-ping.html index 2f2ad0f779fa0a..74a7e2adc927e4 100644 --- a/deps/npm/docs/output/commands/npm-ping.html +++ b/deps/npm/docs/output/commands/npm-ping.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-ping - @11.17.0 + @11.18.0

                          Ping npm registry
                          diff --git a/deps/npm/docs/output/commands/npm-pkg.html b/deps/npm/docs/output/commands/npm-pkg.html index 7462527a590499..9aec2f5f560235 100644 --- a/deps/npm/docs/output/commands/npm-pkg.html +++ b/deps/npm/docs/output/commands/npm-pkg.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-pkg - @11.17.0 + @11.18.0

                          Manages your package.json
                          diff --git a/deps/npm/docs/output/commands/npm-prefix.html b/deps/npm/docs/output/commands/npm-prefix.html index 3fe3a77f2baf7c..887a4f26432c3c 100644 --- a/deps/npm/docs/output/commands/npm-prefix.html +++ b/deps/npm/docs/output/commands/npm-prefix.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-prefix - @11.17.0 + @11.18.0

                          Display prefix
                          diff --git a/deps/npm/docs/output/commands/npm-profile.html b/deps/npm/docs/output/commands/npm-profile.html index 9a03fa2579618f..c45be8a6052c7f 100644 --- a/deps/npm/docs/output/commands/npm-profile.html +++ b/deps/npm/docs/output/commands/npm-profile.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-profile - @11.17.0 + @11.18.0

                          Change settings on your registry profile
                          diff --git a/deps/npm/docs/output/commands/npm-prune.html b/deps/npm/docs/output/commands/npm-prune.html index 539533b3e9a824..bfb3914265bd60 100644 --- a/deps/npm/docs/output/commands/npm-prune.html +++ b/deps/npm/docs/output/commands/npm-prune.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-prune - @11.17.0 + @11.18.0

                          Remove extraneous packages
                          diff --git a/deps/npm/docs/output/commands/npm-publish.html b/deps/npm/docs/output/commands/npm-publish.html index 4200a9105d2376..f2a7ba05905630 100644 --- a/deps/npm/docs/output/commands/npm-publish.html +++ b/deps/npm/docs/output/commands/npm-publish.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-publish - @11.17.0 + @11.18.0

                          Publish a package
                          diff --git a/deps/npm/docs/output/commands/npm-query.html b/deps/npm/docs/output/commands/npm-query.html index 862a6a6ad62f9d..7d9bf80b88d216 100644 --- a/deps/npm/docs/output/commands/npm-query.html +++ b/deps/npm/docs/output/commands/npm-query.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-query - @11.17.0 + @11.18.0

                          Dependency selector query
                          @@ -432,6 +432,8 @@

                          before

                          sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one.

                          +

                          As with min-release-age, when this cutoff blocks a fix that npm audit fix would install, npm keeps the vulnerable version, warns, and exits with +a non-zero code.

                          Packages whose names match min-release-age-exclude are exempt from this filter.

                          min-release-age

                          @@ -449,6 +451,11 @@

                          min-release-age

                          --before while preparing a git: or github: dependency); when both apply, before wins within a single source and across sources the standard precedence rules apply.

                          +

                          When this window stops npm audit fix from installing a patched version +(because the fix was published too recently), npm keeps the package at its +vulnerable version, warns that the fix was blocked, and exits with a +non-zero code. To install the fix, add the package to +min-release-age-exclude, or relax min-release-age or before.

                          Packages whose names match min-release-age-exclude are exempt from this filter.

                          This value is not exported to the environment for child processes.

                          diff --git a/deps/npm/docs/output/commands/npm-rebuild.html b/deps/npm/docs/output/commands/npm-rebuild.html index 822091ab35b0ed..5245b156b685ce 100644 --- a/deps/npm/docs/output/commands/npm-rebuild.html +++ b/deps/npm/docs/output/commands/npm-rebuild.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-rebuild - @11.17.0 + @11.18.0

                          Rebuild a package
                          @@ -298,6 +298,9 @@

                          strict-allow-scripts

                          silently skipped; this setting only affects unreviewed entries. --ignore-scripts and --dangerously-allow-all-scripts both override this setting.

                          +

                          Optional dependencies that cannot be installed on the current platform or +engine (a non-matching os, cpu, or libc) are not flagged, because +their install scripts never run.

                          dangerously-allow-all-scripts

                          • Default: false
                          • diff --git a/deps/npm/docs/output/commands/npm-repo.html b/deps/npm/docs/output/commands/npm-repo.html index c18499bd35e937..c210a4efd30802 100644 --- a/deps/npm/docs/output/commands/npm-repo.html +++ b/deps/npm/docs/output/commands/npm-repo.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-repo - @11.17.0 + @11.18.0

                            Open package repository page in the browser
                            diff --git a/deps/npm/docs/output/commands/npm-restart.html b/deps/npm/docs/output/commands/npm-restart.html index e9be582f21a6b0..cc0ee51c458eee 100644 --- a/deps/npm/docs/output/commands/npm-restart.html +++ b/deps/npm/docs/output/commands/npm-restart.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-restart - @11.17.0 + @11.18.0

                            Restart a package
                            diff --git a/deps/npm/docs/output/commands/npm-root.html b/deps/npm/docs/output/commands/npm-root.html index 2aaae514e72d49..6f0af8585373f7 100644 --- a/deps/npm/docs/output/commands/npm-root.html +++ b/deps/npm/docs/output/commands/npm-root.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-root - @11.17.0 + @11.18.0

                            Display npm root
                            diff --git a/deps/npm/docs/output/commands/npm-run.html b/deps/npm/docs/output/commands/npm-run.html index 4036f6e0153b30..c7119fea964e7f 100644 --- a/deps/npm/docs/output/commands/npm-run.html +++ b/deps/npm/docs/output/commands/npm-run.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-run - @11.17.0 + @11.18.0

                            Run arbitrary package scripts
                            diff --git a/deps/npm/docs/output/commands/npm-sbom.html b/deps/npm/docs/output/commands/npm-sbom.html index be951feb19036c..70eb4780c5c9e5 100644 --- a/deps/npm/docs/output/commands/npm-sbom.html +++ b/deps/npm/docs/output/commands/npm-sbom.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-sbom - @11.17.0 + @11.18.0

                            Generate a Software Bill of Materials (SBOM)
                            diff --git a/deps/npm/docs/output/commands/npm-search.html b/deps/npm/docs/output/commands/npm-search.html index 8b397932b4bd7c..b417f9ba815c2b 100644 --- a/deps/npm/docs/output/commands/npm-search.html +++ b/deps/npm/docs/output/commands/npm-search.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-search - @11.17.0 + @11.18.0

                            Search for packages
                            diff --git a/deps/npm/docs/output/commands/npm-set.html b/deps/npm/docs/output/commands/npm-set.html index 4be22387a40786..dfd53bcf72f287 100644 --- a/deps/npm/docs/output/commands/npm-set.html +++ b/deps/npm/docs/output/commands/npm-set.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-set - @11.17.0 + @11.18.0

                            Set a value in the npm configuration
                            diff --git a/deps/npm/docs/output/commands/npm-shrinkwrap.html b/deps/npm/docs/output/commands/npm-shrinkwrap.html index 83e1f76e657287..8989040dd9f6c5 100644 --- a/deps/npm/docs/output/commands/npm-shrinkwrap.html +++ b/deps/npm/docs/output/commands/npm-shrinkwrap.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-shrinkwrap - @11.17.0 + @11.18.0

                            Lock down dependency versions for publication
                            diff --git a/deps/npm/docs/output/commands/npm-stage.html b/deps/npm/docs/output/commands/npm-stage.html index 7a72369ac86e7a..de76caf167e94b 100644 --- a/deps/npm/docs/output/commands/npm-stage.html +++ b/deps/npm/docs/output/commands/npm-stage.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-stage - @11.17.0 + @11.18.0

                            Stage packages for publishing
                            diff --git a/deps/npm/docs/output/commands/npm-star.html b/deps/npm/docs/output/commands/npm-star.html index a58d3d91913c47..0642cfefb4bc83 100644 --- a/deps/npm/docs/output/commands/npm-star.html +++ b/deps/npm/docs/output/commands/npm-star.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-star - @11.17.0 + @11.18.0

                            Mark your favorite packages
                            diff --git a/deps/npm/docs/output/commands/npm-stars.html b/deps/npm/docs/output/commands/npm-stars.html index b13d859bffac06..3f586b4fb0a84a 100644 --- a/deps/npm/docs/output/commands/npm-stars.html +++ b/deps/npm/docs/output/commands/npm-stars.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-stars - @11.17.0 + @11.18.0

                            View packages marked as favorites
                            diff --git a/deps/npm/docs/output/commands/npm-start.html b/deps/npm/docs/output/commands/npm-start.html index 0c88d59c649266..35a7c7798f85d4 100644 --- a/deps/npm/docs/output/commands/npm-start.html +++ b/deps/npm/docs/output/commands/npm-start.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-start - @11.17.0 + @11.18.0

                            Start a package
                            diff --git a/deps/npm/docs/output/commands/npm-stop.html b/deps/npm/docs/output/commands/npm-stop.html index 12b8779cc221e9..37c8d91d4ba01b 100644 --- a/deps/npm/docs/output/commands/npm-stop.html +++ b/deps/npm/docs/output/commands/npm-stop.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-stop - @11.17.0 + @11.18.0

                            Stop a package
                            diff --git a/deps/npm/docs/output/commands/npm-team.html b/deps/npm/docs/output/commands/npm-team.html index 9e311e6d52ad51..66263e4f1f5327 100644 --- a/deps/npm/docs/output/commands/npm-team.html +++ b/deps/npm/docs/output/commands/npm-team.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-team - @11.17.0 + @11.18.0

                            Manage organization teams and team memberships
                            diff --git a/deps/npm/docs/output/commands/npm-test.html b/deps/npm/docs/output/commands/npm-test.html index dddced02bd1fd4..b9e84c47671532 100644 --- a/deps/npm/docs/output/commands/npm-test.html +++ b/deps/npm/docs/output/commands/npm-test.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-test - @11.17.0 + @11.18.0

                            Test a package
                            diff --git a/deps/npm/docs/output/commands/npm-token.html b/deps/npm/docs/output/commands/npm-token.html index 45962d19ed7b8f..c3c59a86cabe85 100644 --- a/deps/npm/docs/output/commands/npm-token.html +++ b/deps/npm/docs/output/commands/npm-token.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-token - @11.17.0 + @11.18.0

                            Manage your authentication tokens
                            diff --git a/deps/npm/docs/output/commands/npm-trust.html b/deps/npm/docs/output/commands/npm-trust.html index 761283abca7cc1..00d389d044c840 100644 --- a/deps/npm/docs/output/commands/npm-trust.html +++ b/deps/npm/docs/output/commands/npm-trust.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-trust - @11.17.0 + @11.18.0

                            Manage trusted publishing relationships between packages and CI/CD providers
                            diff --git a/deps/npm/docs/output/commands/npm-undeprecate.html b/deps/npm/docs/output/commands/npm-undeprecate.html index ccabc141b24e8f..06ca5b07fbb355 100644 --- a/deps/npm/docs/output/commands/npm-undeprecate.html +++ b/deps/npm/docs/output/commands/npm-undeprecate.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-undeprecate - @11.17.0 + @11.18.0

                            Undeprecate a version of a package
                            diff --git a/deps/npm/docs/output/commands/npm-uninstall.html b/deps/npm/docs/output/commands/npm-uninstall.html index e15dd8bfa7dcd8..f82cbbc1dcec2b 100644 --- a/deps/npm/docs/output/commands/npm-uninstall.html +++ b/deps/npm/docs/output/commands/npm-uninstall.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-uninstall - @11.17.0 + @11.18.0

                            Remove a package
                            diff --git a/deps/npm/docs/output/commands/npm-unpublish.html b/deps/npm/docs/output/commands/npm-unpublish.html index df9f218803c022..f6557a7a40abef 100644 --- a/deps/npm/docs/output/commands/npm-unpublish.html +++ b/deps/npm/docs/output/commands/npm-unpublish.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-unpublish - @11.17.0 + @11.18.0

                            Remove a package from the registry
                            diff --git a/deps/npm/docs/output/commands/npm-unstar.html b/deps/npm/docs/output/commands/npm-unstar.html index fbe3311b6f7155..d91decf5f96356 100644 --- a/deps/npm/docs/output/commands/npm-unstar.html +++ b/deps/npm/docs/output/commands/npm-unstar.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-unstar - @11.17.0 + @11.18.0

                            Remove an item from your favorite packages
                            diff --git a/deps/npm/docs/output/commands/npm-update.html b/deps/npm/docs/output/commands/npm-update.html index dc8794bcb36ed1..9b395086246d71 100644 --- a/deps/npm/docs/output/commands/npm-update.html +++ b/deps/npm/docs/output/commands/npm-update.html @@ -186,9 +186,9 @@
                            -

                            +

                            npm-update - @11.17.0 + @11.18.0

                            Update packages
                            @@ -317,8 +317,15 @@

                            install-strategy

                            (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted.

                            +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted.

                            +

                            We recommend that package authors use --install-strategy=linked during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +import of a package that was never added to package.json can fail +instead of resolving by accident and shipping broken. See Catching +undeclared ("phantom") +dependencies.

                            legacy-bundling

                            • Default: false
                            • @@ -435,6 +442,9 @@

                              strict-allow-scripts

                              silently skipped; this setting only affects unreviewed entries. --ignore-scripts and --dangerously-allow-all-scripts both override this setting.

                              +

                              Optional dependencies that cannot be installed on the current platform or +engine (a non-matching os, cpu, or libc) are not flagged, because +their install scripts never run.

                              dangerously-allow-all-scripts

                              • Default: false
                              • @@ -471,6 +481,8 @@

                                before

                                sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one.

                                +

                                As with min-release-age, when this cutoff blocks a fix that npm audit fix would install, npm keeps the vulnerable version, warns, and exits with +a non-zero code.

                                Packages whose names match min-release-age-exclude are exempt from this filter.

                                min-release-age

                                @@ -488,6 +500,11 @@

                                min-release-age

                                --before while preparing a git: or github: dependency); when both apply, before wins within a single source and across sources the standard precedence rules apply.

                                +

                                When this window stops npm audit fix from installing a patched version +(because the fix was published too recently), npm keeps the package at its +vulnerable version, warns that the fix was blocked, and exits with a +non-zero code. To install the fix, add the package to +min-release-age-exclude, or relax min-release-age or before.

                                Packages whose names match min-release-age-exclude are exempt from this filter.

                                This value is not exported to the environment for child processes.

                                diff --git a/deps/npm/docs/output/commands/npm-version.html b/deps/npm/docs/output/commands/npm-version.html index ca53ca723f3dd7..17e504dd49ef3b 100644 --- a/deps/npm/docs/output/commands/npm-version.html +++ b/deps/npm/docs/output/commands/npm-version.html @@ -186,9 +186,9 @@
                                -

                                +

                                npm-version - @11.17.0 + @11.18.0

                                Bump a package version
                                diff --git a/deps/npm/docs/output/commands/npm-view.html b/deps/npm/docs/output/commands/npm-view.html index 24b933c2bcd11c..6424eed09df9d2 100644 --- a/deps/npm/docs/output/commands/npm-view.html +++ b/deps/npm/docs/output/commands/npm-view.html @@ -186,9 +186,9 @@
                                -

                                +

                                npm-view - @11.17.0 + @11.18.0

                                View registry info
                                diff --git a/deps/npm/docs/output/commands/npm-whoami.html b/deps/npm/docs/output/commands/npm-whoami.html index 6cbef18cbef7ba..9830a8c3c8d2f3 100644 --- a/deps/npm/docs/output/commands/npm-whoami.html +++ b/deps/npm/docs/output/commands/npm-whoami.html @@ -186,9 +186,9 @@
                                -

                                +

                                npm-whoami - @11.17.0 + @11.18.0

                                Display npm username
                                diff --git a/deps/npm/docs/output/commands/npm.html b/deps/npm/docs/output/commands/npm.html index 1e26458f7cf02a..cef7c6a5f2c88e 100644 --- a/deps/npm/docs/output/commands/npm.html +++ b/deps/npm/docs/output/commands/npm.html @@ -186,9 +186,9 @@
                                -

                                +

                                npm - @11.17.0 + @11.18.0

                                javascript package manager
                                @@ -203,7 +203,7 @@

                                Table of contents

                          Note: This command is unaware of workspaces.

                          Version

                          -

                          11.17.0

                          +

                          11.18.0

                          Description

                          npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency conflicts intelligently.

                          diff --git a/deps/npm/docs/output/commands/npx.html b/deps/npm/docs/output/commands/npx.html index 8cd5c4dcaf6302..f06143a5c2cd56 100644 --- a/deps/npm/docs/output/commands/npx.html +++ b/deps/npm/docs/output/commands/npx.html @@ -186,9 +186,9 @@
                          -

                          +

                          npx - @11.17.0 + @11.18.0

                          Run a command from a local or remote npm package
                          diff --git a/deps/npm/docs/output/configuring-npm/folders.html b/deps/npm/docs/output/configuring-npm/folders.html index 6523b966186e45..78f9f0f1ebd7e9 100644 --- a/deps/npm/docs/output/configuring-npm/folders.html +++ b/deps/npm/docs/output/configuring-npm/folders.html @@ -186,9 +186,9 @@
                          -

                          +

                          Folders - @11.17.0 + @11.18.0

                          Folder structures used by npm
                          diff --git a/deps/npm/docs/output/configuring-npm/install.html b/deps/npm/docs/output/configuring-npm/install.html index 21589fead823df..9ae64ab1d402dd 100644 --- a/deps/npm/docs/output/configuring-npm/install.html +++ b/deps/npm/docs/output/configuring-npm/install.html @@ -186,9 +186,9 @@
                          -

                          +

                          Install - @11.17.0 + @11.18.0

                          Download and install node and npm
                          diff --git a/deps/npm/docs/output/configuring-npm/npm-global.html b/deps/npm/docs/output/configuring-npm/npm-global.html index 6523b966186e45..78f9f0f1ebd7e9 100644 --- a/deps/npm/docs/output/configuring-npm/npm-global.html +++ b/deps/npm/docs/output/configuring-npm/npm-global.html @@ -186,9 +186,9 @@
                          -

                          +

                          Folders - @11.17.0 + @11.18.0

                          Folder structures used by npm
                          diff --git a/deps/npm/docs/output/configuring-npm/npm-json.html b/deps/npm/docs/output/configuring-npm/npm-json.html index bccbdcc5d32753..cb9a3626a0ce04 100644 --- a/deps/npm/docs/output/configuring-npm/npm-json.html +++ b/deps/npm/docs/output/configuring-npm/npm-json.html @@ -186,9 +186,9 @@
                          -

                          +

                          package.json - @11.17.0 + @11.18.0

                          Specifics of npm's package.json handling
                          diff --git a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html index 0b58b9608ecda9..ecbc9d9e1502ec 100644 --- a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html +++ b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html @@ -186,9 +186,9 @@
                          -

                          +

                          npm-shrinkwrap.json - @11.17.0 + @11.18.0

                          A publishable lockfile
                          diff --git a/deps/npm/docs/output/configuring-npm/npmrc.html b/deps/npm/docs/output/configuring-npm/npmrc.html index 1bea346797ae61..bad73af8064b6d 100644 --- a/deps/npm/docs/output/configuring-npm/npmrc.html +++ b/deps/npm/docs/output/configuring-npm/npmrc.html @@ -186,9 +186,9 @@
                          -

                          +

                          .npmrc - @11.17.0 + @11.18.0

                          The npm config files
                          diff --git a/deps/npm/docs/output/configuring-npm/package-json.html b/deps/npm/docs/output/configuring-npm/package-json.html index bccbdcc5d32753..cb9a3626a0ce04 100644 --- a/deps/npm/docs/output/configuring-npm/package-json.html +++ b/deps/npm/docs/output/configuring-npm/package-json.html @@ -186,9 +186,9 @@
                          -

                          +

                          package.json - @11.17.0 + @11.18.0

                          Specifics of npm's package.json handling
                          diff --git a/deps/npm/docs/output/configuring-npm/package-lock-json.html b/deps/npm/docs/output/configuring-npm/package-lock-json.html index 25d262fadf53da..834e14f626389a 100644 --- a/deps/npm/docs/output/configuring-npm/package-lock-json.html +++ b/deps/npm/docs/output/configuring-npm/package-lock-json.html @@ -186,9 +186,9 @@
                          -

                          +

                          package-lock.json - @11.17.0 + @11.18.0

                          A manifestation of the manifest
                          diff --git a/deps/npm/docs/output/using-npm/config.html b/deps/npm/docs/output/using-npm/config.html index 17e7bd13896348..f52caeefd1847d 100644 --- a/deps/npm/docs/output/using-npm/config.html +++ b/deps/npm/docs/output/using-npm/config.html @@ -186,9 +186,9 @@
                          -

                          +

                          Config - @11.17.0 + @11.18.0

                          About npm configuration
                          @@ -464,6 +464,8 @@

                          before

                          sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one.

                          +

                          As with min-release-age, when this cutoff blocks a fix that npm audit fix would install, npm keeps the vulnerable version, warns, and exits with +a non-zero code.

                          Packages whose names match min-release-age-exclude are exempt from this filter.

                          @@ -948,8 +950,15 @@

                          install-strategy

                          (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted.

                          +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted.

                          +

                          We recommend that package authors use --install-strategy=linked during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +import of a package that was never added to package.json can fail +instead of resolving by accident and shipping broken. See Catching +undeclared ("phantom") +dependencies.

                          json

to install it locally into the node_modules folder in that other place.

Then go into the node-repl, and try using require("my-thing") to bring in your module's main module.

+

Catching undeclared ("phantom") dependencies

+

Under the default hoisted node_modules layout, your package can import a dependency it never declared and still resolve it. +A transitive dependency hoisted alongside it, or your workspace root's node_modules, happens to satisfy the import. +That undeclared ("phantom") dependency passes your own build silently, then fails for anyone who installs your package on its own.

+

We recommend developing your package under install-strategy=linked. +The isolated layout only exposes a package's declared dependencies, so an import of an undeclared package fails for you during development instead of resolving by accident, shipping broken, and failing for your users:

+
npm install --install-strategy=linked
+npm test
+
+
+

Note: This doesn't catch every case. +A dependency that's still satisfied at your build by a devDependency or by your workspace root's node_modules can resolve fine for you and still be missing for whoever installs your package. +So treat it as one check, not a guarantee, alongside auditing the dependencies your published package actually uses.

+

Create a User Account

Create a user with the adduser command. It works like this:

diff --git a/deps/npm/docs/output/using-npm/logging.html b/deps/npm/docs/output/using-npm/logging.html index bbba11e5508a6b..19c47d4adc3906 100644 --- a/deps/npm/docs/output/using-npm/logging.html +++ b/deps/npm/docs/output/using-npm/logging.html @@ -186,9 +186,9 @@
-

+

Logging - @11.17.0 + @11.18.0

Why, What & How we Log
diff --git a/deps/npm/docs/output/using-npm/orgs.html b/deps/npm/docs/output/using-npm/orgs.html index ae4920f10c3ca4..3444f3bf1c4c97 100644 --- a/deps/npm/docs/output/using-npm/orgs.html +++ b/deps/npm/docs/output/using-npm/orgs.html @@ -186,9 +186,9 @@
-

+

Organizations - @11.17.0 + @11.18.0

Working with teams & organizations
diff --git a/deps/npm/docs/output/using-npm/package-spec.html b/deps/npm/docs/output/using-npm/package-spec.html index 47d02ec2b6b94f..92cd9d2af617d8 100644 --- a/deps/npm/docs/output/using-npm/package-spec.html +++ b/deps/npm/docs/output/using-npm/package-spec.html @@ -186,9 +186,9 @@
-

+

Package spec - @11.17.0 + @11.18.0

Package name specifier
diff --git a/deps/npm/docs/output/using-npm/registry.html b/deps/npm/docs/output/using-npm/registry.html index 2c221dee07a0ed..ed47e3a6ed7171 100644 --- a/deps/npm/docs/output/using-npm/registry.html +++ b/deps/npm/docs/output/using-npm/registry.html @@ -186,9 +186,9 @@
-

+

Registry - @11.17.0 + @11.18.0

The JavaScript Package Registry
diff --git a/deps/npm/docs/output/using-npm/removal.html b/deps/npm/docs/output/using-npm/removal.html index 932d43121c9dea..57f02ed1ee2b7f 100644 --- a/deps/npm/docs/output/using-npm/removal.html +++ b/deps/npm/docs/output/using-npm/removal.html @@ -186,9 +186,9 @@
-

+

Removal - @11.17.0 + @11.18.0

Cleaning the slate
diff --git a/deps/npm/docs/output/using-npm/scope.html b/deps/npm/docs/output/using-npm/scope.html index 657021503ff52c..11861347920567 100644 --- a/deps/npm/docs/output/using-npm/scope.html +++ b/deps/npm/docs/output/using-npm/scope.html @@ -186,9 +186,9 @@
-

+

Scope - @11.17.0 + @11.18.0

Scoped packages
diff --git a/deps/npm/docs/output/using-npm/scripts.html b/deps/npm/docs/output/using-npm/scripts.html index 3a87423e11f529..65ff19a4673afd 100644 --- a/deps/npm/docs/output/using-npm/scripts.html +++ b/deps/npm/docs/output/using-npm/scripts.html @@ -186,9 +186,9 @@
-

+

Scripts - @11.17.0 + @11.18.0

How npm handles the "scripts" field
diff --git a/deps/npm/docs/output/using-npm/workspaces.html b/deps/npm/docs/output/using-npm/workspaces.html index 2e5ac47adfc8a4..fd75a0ad62a641 100644 --- a/deps/npm/docs/output/using-npm/workspaces.html +++ b/deps/npm/docs/output/using-npm/workspaces.html @@ -186,9 +186,9 @@
-

+

Workspaces - @11.17.0 + @11.18.0

Working with workspaces
diff --git a/deps/npm/lib/commands/audit.js b/deps/npm/lib/commands/audit.js index a8d742cc73a6e4..6a55af43135840 100644 --- a/deps/npm/lib/commands/audit.js +++ b/deps/npm/lib/commands/audit.js @@ -73,6 +73,19 @@ class Audit extends ArboristWorkspaceCmd { await arb.audit({ fix }) if (fix) { await reifyFinish(this.npm, arb) + // Report any fix that a `min-release-age`/`before` window blocked from + // installing, and exit non-zero so a blocked fix is not missed. + const report = arb.auditReport + const blocked = report instanceof Map + ? [...report.values()].filter(v => v.fixBlockedByReleaseAge).map(v => v.name) + : [] + if (blocked.length) { + log.warn('audit', `${blocked.length} package(s) left at a vulnerable version because ` + + `a fix is newer than the release-age cutoff: ${blocked.join(', ')}.\n` + + 'Add the package to min-release-age-exclude, or relax min-release-age or before, ' + + 'to install the fix.') + process.exitCode = 1 + } } else { // will throw if there's an error, because this is an audit command auditError(this.npm, arb.auditReport) diff --git a/deps/npm/lib/commands/exec.js b/deps/npm/lib/commands/exec.js index 23c47a0cc1ad77..7b7d8ad30fcd55 100644 --- a/deps/npm/lib/commands/exec.js +++ b/deps/npm/lib/commands/exec.js @@ -42,7 +42,7 @@ class Exec extends BaseCommand { } } - async callExec (args, { name, locationMsg, runPath } = {}) { + async callExec (args, { locationMsg, runPath } = {}) { let localBin = this.npm.localBin let pkgPath = this.npm.localPrefix @@ -50,8 +50,8 @@ class Exec extends BaseCommand { if (!runPath) { runPath = process.cwd() } else { - // We have to consider if the workspace has its own separate versions libnpmexec will walk up to localDir after looking here - localBin = resolve(this.npm.localDir, name, 'node_modules', '.bin') + // Use the workspace's own node_modules/.bin, not localDir/, since the linked strategy does not symlink workspaces into the root node_modules. + localBin = resolve(runPath, 'node_modules', '.bin') // We also need to look for `bin` entries in the workspace package.json // libnpmexec will NOT look in the project root for the bin entry pkgPath = runPath diff --git a/deps/npm/lib/commands/install-scripts.js b/deps/npm/lib/commands/install-scripts.js new file mode 100644 index 00000000000000..c6f91f87b08765 --- /dev/null +++ b/deps/npm/lib/commands/install-scripts.js @@ -0,0 +1,53 @@ +const AllowScriptsCmd = require('../utils/allow-scripts-cmd.js') + +// Namespaced front-end for install-script approvals. +// `approve`/`deny` write the `allowScripts` policy, `ls` lists unreviewed packages, +// `prune` drops entries that no longer match an installed package with an install script. +// `npm approve-scripts` / `npm deny-scripts` are aliases for `approve` / `deny`. +class InstallScripts extends AllowScriptsCmd { + static description = 'Manage install-script approvals for dependencies' + static name = 'install-scripts' + static usage = [ + 'approve [ ...]', + 'approve --all', + 'deny [ ...]', + 'deny --all', + 'ls', + 'prune', + ] + + static params = ['all', 'allow-scripts-pin', 'dry-run', 'json'] + + static async completion (opts) { + const argv = opts.conf.argv.remain + const subcommands = ['approve', 'deny', 'ls', 'prune'] + if (argv.length === 2) { + return subcommands + } + if (subcommands.includes(argv[2])) { + return [] + } + throw new Error(`${argv[2]} not recognized`) + } + + async exec (args) { + const [sub, ...rest] = args + switch (sub) { + case 'approve': + return this.runMode('approve', rest) + case 'deny': + return this.runMode('deny', rest) + case 'ls': + case 'list': + return this.runMode('list', rest) + case 'prune': + return this.runMode('prune', rest) + default: + throw this.usageError( + sub ? `\`${sub}\` is not a recognized subcommand.` : undefined + ) + } + } +} + +module.exports = InstallScripts diff --git a/deps/npm/lib/commands/link.js b/deps/npm/lib/commands/link.js index 160ba2b707efd8..cad499b2df8efb 100644 --- a/deps/npm/lib/commands/link.js +++ b/deps/npm/lib/commands/link.js @@ -5,6 +5,7 @@ const pkgJson = require('@npmcli/package-json') const semver = require('semver') const reifyFinish = require('../utils/reify-finish.js') const resolveAllowScripts = require('../utils/resolve-allow-scripts.js') +const strictAllowScriptsPreflight = require('../utils/strict-allow-scripts-preflight.js') const ArboristWorkspaceCmd = require('../arborist-cmd.js') class Link extends ArboristWorkspaceCmd { @@ -68,12 +69,16 @@ class Link extends ArboristWorkspaceCmd { // load current packages from the global space, and then add symlinks installs locally const globalTop = resolve(this.npm.globalDir, '..') const Arborist = require('@npmcli/arborist') + // Resolve the policy up front so it also gates the global install of + // missing packages, not just the local link. + const { policy: allowScriptsPolicy } = await resolveAllowScripts(this.npm) const globalOpts = { ...this.npm.flatOptions, Arborist, path: globalTop, global: true, prune: false, + allowScripts: allowScriptsPolicy, } const globalArb = new Arborist(globalOpts) @@ -86,10 +91,17 @@ class Link extends ArboristWorkspaceCmd { // any extra arg that is missing from the current global space should be reified there first const missing = this.missingArgsFromTree(globals, args) if (missing.length) { - await globalArb.reify({ + const globalReifyOpts = { ...globalOpts, add: missing, + } + // Gate the global install with the same preflight as `npm install`. + await strictAllowScriptsPreflight({ + arb: globalArb, + npm: this.npm, + idealTreeOpts: globalReifyOpts, }) + await globalArb.reify(globalReifyOpts) } // get a list of module names that should be linked in the local prefix @@ -116,12 +128,13 @@ class Link extends ArboristWorkspaceCmd { ) // create a new arborist instance for the local prefix and // reify all the pending names as symlinks there - const { policy: allowScriptsPolicy } = await resolveAllowScripts(this.npm) const localArb = new Arborist({ ...this.npm.flatOptions, prune: false, path: this.npm.prefix, save, + // Arborist reads this.options.workspaces (set at construction) to decide which node receives the add, so it must be set here, not only at reify time. + workspaces: this.workspaceNames, allowScripts: allowScriptsPolicy, }) await localArb.reify({ diff --git a/deps/npm/lib/commands/ls.js b/deps/npm/lib/commands/ls.js index 5dacd3919882e8..8b9b4f3f5d2e2d 100644 --- a/deps/npm/lib/commands/ls.js +++ b/deps/npm/lib/commands/ls.js @@ -135,7 +135,7 @@ class LS extends ArboristWorkspaceCmd { omit, }) : () => true) .filter(installStrategy === 'linked' - ? filterLinkedStrategyEdges({ node, currentDepth }) + ? filterLinkedStrategyEdges({ currentDepth }) : () => true) .map(mapEdgesToNodes({ seenPaths })) .concat(appendExtraneousChildren({ node, seenPaths })) @@ -400,32 +400,16 @@ const getJsonOutputItem = (node, { global, long }) => { return augmentItemWithIncludeMetadata(node, item) } -// In linked strategy, two types of edges produce false UNMET DEPENDENCYs: -// 1. Workspace edges for undeclared workspaces: the lockfile records edges from root to ALL workspaces, but only declared workspaces are hoisted to root/node_modules in linked mode. Undeclared ones are intentionally absent. -// 2. Dev edges on non-root packages: store package link targets have no parent in the node tree, so they are treated as "top" nodes and their devDependencies are loaded as edges. Those devDeps are never installed. -const filterLinkedStrategyEdges = ({ node, currentDepth }) => { - const declaredDeps = new Set(Object.keys(Object.assign({}, - node.target.package.dependencies, - node.target.package.devDependencies, - node.target.package.optionalDependencies, - node.target.package.peerDependencies - ))) - - return (edge) => { - // Skip workspace edges for undeclared workspaces at root level - if (currentDepth === 0 && edge.type === 'workspace' && edge.missing) { - if (!declaredDeps.has(edge.name)) { - return false - } - } - - // Skip dev edges for non-root packages (store packages) - if (currentDepth > 0 && edge.dev) { - return false - } - - return true +// In linked strategy, dev edges on non-root packages produce false UNMET DEPENDENCYs: store package link targets have no parent in the node tree, so they are treated as "top" nodes and their devDependencies are loaded as edges. Those devDeps are never installed. +// Undeclared workspaces no longer need filtering here: loadActual synthesizes their root links so their edges resolve instead of reporting missing. +const filterLinkedStrategyEdges = ({ currentDepth }) => (edge) => { + // Skip dev edges for non-root packages (store packages) + /* istanbul ignore next: store packages no longer carry dev edges, so this guard is not exercised by tests */ + if (currentDepth > 0 && edge.dev) { + return false } + + return true } const filterByEdgesTypes = ({ link, omit }) => (edge) => { diff --git a/deps/npm/lib/commands/query.js b/deps/npm/lib/commands/query.js index 63bd00c3206b33..f826cdc52659e5 100644 --- a/deps/npm/lib/commands/query.js +++ b/deps/npm/lib/commands/query.js @@ -2,6 +2,15 @@ const { resolve } = require('node:path') const BaseCommand = require('../base-cmd.js') const { log, output } = require('proc-log') +// Ranks competing representations of the same physical package so the most logical one is reported. +// A top-level placement (e.g. node_modules/) beats the canonical store node, which beats an internal store symlink. +const locationRank = (node) => { + if (!node.location.includes('node_modules/.store/')) { + return 2 + } + return node.isLink ? 0 : 1 +} + class QuerySelectorItem { constructor (node) { // all enumerable properties from the target @@ -9,8 +18,11 @@ class QuerySelectorItem { // append extra info this.pkgid = node.target.pkgid - this.location = node.target.location - this.path = node.target.path + // For a dep symlinked into the isolated store, report the logical link location (node_modules/) rather than the .store backing path. + // Workspaces and regular nodes keep the target location (e.g. packages/). + const logical = node.target.isInStore ? node : node.target + this.location = logical.location + this.path = logical.path this.realpath = node.target.realpath this.resolved = node.target.resolved this.from = [] @@ -33,7 +45,7 @@ class QuerySelectorItem { class Query extends BaseCommand { #response = [] // response is the query response - #seen = new Set() // paths we've seen so we can keep response deduped + #seen = new Map() // physical location -> index in #response, to keep response deduped static description = 'Retrieve a filtered list of packages' static name = 'query' @@ -127,12 +139,22 @@ class Query extends BaseCommand { async #queryTree (tree, arg) { const items = await tree.querySelectorAll(arg, this.npm.flatOptions) for (const node of items) { + // Dedup by the target's physical location so multiple logical links to the same store node collapse to one result. const { location } = node.target - if (!location || !this.#seen.has(location)) { - const item = new QuerySelectorItem(node) - this.#response.push(item) - if (location) { - this.#seen.add(item.location) + if (!location) { + this.#response.push(new QuerySelectorItem(node)) + continue + } + const seen = this.#seen.get(location) + if (seen === undefined) { + this.#seen.set(location, { index: this.#response.length, rank: locationRank(node) }) + this.#response.push(new QuerySelectorItem(node)) + } else { + // Replace the stored representation only with a more logical one for the same physical package. + const rank = locationRank(node) + if (rank > seen.rank) { + this.#response[seen.index] = new QuerySelectorItem(node) + seen.rank = rank } } } diff --git a/deps/npm/lib/commands/rebuild.js b/deps/npm/lib/commands/rebuild.js index 3f8cb98154d552..17595aa4eb72e2 100644 --- a/deps/npm/lib/commands/rebuild.js +++ b/deps/npm/lib/commands/rebuild.js @@ -75,13 +75,13 @@ class Rebuild extends ArboristWorkspaceCmd { if (unreviewed.length > 0) { const count = unreviewed.length const noun = count === 1 ? 'package has' : 'packages have' - // `npm approve-scripts` writes to a project package.json, which doesn't + // `npm install-scripts` writes to a project package.json, which doesn't // exist for global rebuilds. Point global users at `npm config set`, // which writes the `allow-scripts` setting to their user .npmrc. const names = unreviewed.map(({ node }) => trustedDisplay(node).name) const remediation = this.npm.global ? `Run \`${configSetAllowScripts(names)}\` to allow their scripts.` - : 'Run `npm approve-scripts --allow-scripts-pending` to review.' + : 'Run `npm install-scripts ls` to review.' log.warn( 'rebuild', `${count} ${noun} install scripts not yet covered by allowScripts. ` + diff --git a/deps/npm/lib/commands/token.js b/deps/npm/lib/commands/token.js index b248d6a789a1f8..8f54e9d8725dfb 100644 --- a/deps/npm/lib/commands/token.js +++ b/deps/npm/lib/commands/token.js @@ -73,17 +73,22 @@ class Token extends BaseCommand { const parseable = this.npm.config.get('parseable') log.info('token', 'getting list') const tokens = await paginate('/-/npm/v1/tokens', this.npm.flatOptions) + + this.generateTokenIds(tokens, 6) + if (json) { output.buffer(tokens) return } if (parseable) { - output.standard(['key', 'token', 'created', 'readonly', 'CIDR whitelist'].join('\t')) + output.standard(['key', 'token', 'id', 'name', 'created', 'readonly', 'CIDR whitelist'].join('\t')) tokens.forEach(token => { output.standard( [ token.key, token.token, + token.id, + token.name, token.created, token.readonly ? 'true' : 'false', token.cidr_whitelist ? token.cidr_whitelist.join(',') : '', @@ -92,11 +97,10 @@ class Token extends BaseCommand { }) return } - this.generateTokenIds(tokens, 6) const chalk = this.npm.chalk for (const token of tokens) { const created = String(token.created).slice(0, 10) - output.standard(`${chalk.blue('Token')} ${token.token}… with id ${chalk.cyan(token.id)} created ${created}`) + output.standard(`${chalk.blue('Token')} ${token.token}… with id ${chalk.cyan(token.id)} name ${chalk.magenta(token.name)} created ${created}`) if (token.cidr_whitelist) { output.standard(`with IP whitelist: ${chalk.green(token.cidr_whitelist.join(','))}`) } diff --git a/deps/npm/lib/utils/allow-scripts-cmd.js b/deps/npm/lib/utils/allow-scripts-cmd.js index b6ec663124fe84..315b7b0b4fb9ce 100644 --- a/deps/npm/lib/utils/allow-scripts-cmd.js +++ b/deps/npm/lib/utils/allow-scripts-cmd.js @@ -3,6 +3,7 @@ const npa = require('npm-package-arg') const semver = require('semver') const pkgJson = require('@npmcli/package-json') const { trustedDisplay } = require('@npmcli/arborist/lib/script-allowed.js') +const getInstallScripts = require('@npmcli/arborist/lib/install-scripts.js') const checkAllowScripts = require('./check-allow-scripts.js') const resolveAllowScripts = require('./resolve-allow-scripts.js') const { @@ -10,6 +11,7 @@ const { applyDenyForPackage, nameKeyFor, } = require('./allow-scripts-writer.js') +const { classifyUnusedEntries } = require('./allow-scripts-prune.js') const BaseCommand = require('../base-cmd.js') // Parse a positional arg into a name and an optional version range. A bare @@ -34,8 +36,9 @@ const parsePositional = (arg) => { return { name, range: null } } -// Shared implementation for `npm approve-scripts` and `npm deny-scripts`. -// Subclasses set `verb` to `'approve'` or `'deny'`. +// Shared implementation for `npm approve-scripts`, `npm deny-scripts`, and the `npm install-scripts` namespace. +// `npm install-scripts` dispatches to `runMode('approve' | 'deny' | 'list', ...)`. +// The standalone commands set `static verb` and run through the default `exec`. // // Extends `BaseCommand` rather than `ArboristCmd` on purpose. Per RFC, // `allowScripts` is read from the workspace root's `package.json` only; @@ -48,13 +51,23 @@ class AllowScriptsCmd extends BaseCommand { static params = ['all', 'allow-scripts-pending', 'allow-scripts-pin', 'json'] static ignoreImplicitWorkspace = false - // Subclasses set `static verb = 'approve' | 'deny'`. + // Mode of the current run, set by runMode. + // One of 'approve', 'deny', 'list', or 'prune'. + #mode = null + + // verb drives the writers and summaries, which only run in the two write modes, so it is never read while listing. get verb () { - /* istanbul ignore next: every concrete subclass declares static verb */ - return this.constructor.verb + return this.#mode } + // Standalone `npm approve-scripts` / `npm deny-scripts` pick their mode from `static verb`. async exec (args) { + return this.runMode(this.constructor.verb, args) + } + + async runMode (mode, args) { + this.#mode = mode + if (this.npm.global) { throw Object.assign( new Error(`\`npm ${this.constructor.name}\` does not work for global installs`), @@ -62,19 +75,33 @@ class AllowScriptsCmd extends BaseCommand { ) } - const pending = !!this.npm.config.get('allow-scripts-pending') + // `prune` has its own flow: it reads the literal package.json#allowScripts + // map, not the resolved policy. + if (mode === 'prune') { + return this.runPrune(args) + } + + // `--allow-scripts-pending` is only honored by commands that declare it; the namespace lists via `ls` instead. + const pending = this.constructor.params.includes('allow-scripts-pending') && + !!this.npm.config.get('allow-scripts-pending') const all = !!this.npm.config.get('all') + // The `ls` subcommand lists, and so does `--allow-scripts-pending` on the write commands. + const list = mode === 'list' || pending - if (pending && (args.length > 0 || all)) { + if (list && (args.length > 0 || all)) { + const what = mode === 'list' ? '`npm install-scripts ls`' : '`--allow-scripts-pending`' throw this.usageError( - '`--allow-scripts-pending` cannot be combined with positional arguments or `--all`.' + `${what} cannot be combined with positional arguments or \`--all\`.` ) } - if (!pending && !all && args.length === 0) { + if (!list && !all && args.length === 0) { throw this.usageError() } - if (this.verb === 'deny' && pending) { - throw this.usageError('`npm deny-scripts --allow-scripts-pending` is not supported.') + if (mode === 'deny' && pending) { + throw this.usageError( + '`npm deny-scripts --allow-scripts-pending` is not supported; ' + + 'run `npm install-scripts ls` to list unreviewed packages.' + ) } const Arborist = require('@npmcli/arborist') @@ -91,7 +118,7 @@ class AllowScriptsCmd extends BaseCommand { // only lists; nothing runs. const unreviewed = await checkAllowScripts({ arb, npm: this.npm, includeWhenIgnored: true }) - if (pending) { + if (list) { return this.runPending(unreviewed) } @@ -129,7 +156,8 @@ class AllowScriptsCmd extends BaseCommand { } output.standard('') output.standard( - 'Run `npm approve-scripts ` to allow, or `npm deny-scripts ` to deny.' + 'Run `npm install-scripts approve ` to allow, ' + + 'or `npm install-scripts deny ` to deny.' ) } @@ -298,6 +326,78 @@ class AllowScriptsCmd extends BaseCommand { output.standard(`Nothing to ${this.verb}; allowScripts unchanged.`) } } + + // `npm install-scripts prune`: drop package.json#allowScripts entries that no + // longer match an installed package with an install script. Edits only + // package.json (never `.npmrc`/CLI policy); `--dry-run` reports without writing. + async runPrune (args) { + const all = !!this.npm.config.get('all') + if (args.length > 0 || all) { + throw this.usageError( + '`npm install-scripts prune` cannot be combined with positional arguments or `--all`.' + ) + } + + const dryRun = !!this.npm.config.get('dry-run') + const pkg = await pkgJson.load(this.npm.prefix) + const existing = pkg.content.allowScripts && typeof pkg.content.allowScripts === 'object' + ? pkg.content.allowScripts + : {} + + let removed = [] + if (Object.keys(existing).length > 0) { + const Arborist = require('@npmcli/arborist') + const arb = new Arborist({ + ...this.npm.flatOptions, + path: this.npm.prefix, + }) + await arb.loadActual() + + // Candidate install nodes (mirrors collectUnreviewedScripts), tagged with + // whether each has install scripts so the classifier can tell "gone" from + // "no longer has scripts". + const nodes = [] + for (const node of arb.actualTree.inventory.values()) { + if (node.isProjectRoot || node.isWorkspace || node.isLink || node.inBundle || node.inert) { + continue + } + const scripts = await getInstallScripts(node) + nodes.push({ node, hasScripts: Object.keys(scripts).length > 0 }) + } + + const { remaining, removed: unused } = classifyUnusedEntries(existing, nodes) + removed = unused + + if (removed.length > 0 && !dryRun) { + // Drop the field entirely when nothing is left rather than leaving `{}`. + pkg.update({ + allowScripts: Object.keys(remaining).length > 0 ? remaining : undefined, + }) + await pkg.save() + } + } + + this.printPruneSummary({ removed, dryRun }) + } + + printPruneSummary ({ removed, dryRun }) { + if (this.npm.flatOptions.json) { + output.buffer({ allowScripts: { removed, dryRun } }) + return + } + if (removed.length === 0) { + output.standard('No unused allowScripts entries.') + return + } + const entry = removed.length === 1 ? 'entry' : 'entries' + output.standard( + `${dryRun ? 'Would remove' : 'Removed'} ${removed.length} unused allowScripts ${entry}:` + ) + for (const { key, reason } of removed) { + const text = reason === 'not-installed' ? 'package not installed' : 'no install scripts' + output.standard(` ${key} (${text})`) + } + } } module.exports = AllowScriptsCmd diff --git a/deps/npm/lib/utils/allow-scripts-prune.js b/deps/npm/lib/utils/allow-scripts-prune.js new file mode 100644 index 00000000000000..1111b45d9ca3fd --- /dev/null +++ b/deps/npm/lib/utils/allow-scripts-prune.js @@ -0,0 +1,47 @@ +const npa = require('npm-package-arg') +const { matches } = require('@npmcli/arborist/lib/script-allowed.js') + +// Pure classifier behind `npm install-scripts prune`. +// +// Splits the `package.json#allowScripts` map into entries to keep (`remaining`) +// and unused ones to drop (`removed`). `nodes` is the install candidates as +// `{ node, hasScripts }`; the caller gathers them so this stays sync. +// +// An entry is unused (version-aware, by trusted identity) when: +// - no installed node matches the key -> reason 'not-installed' +// - it matches but none have scripts -> reason 'no-scripts' +// +// Unparseable keys are kept (prune never drops what it can't parse). Both +// `true` (approve) and `false` (deny) entries are pruned. +const classifyUnusedEntries = (allowScripts, nodes) => { + const remaining = {} + const removed = [] + + for (const [key, value] of Object.entries(allowScripts || {})) { + let parseable = true + try { + npa(key) + } catch { + parseable = false + } + if (!parseable) { + remaining[key] = value + continue + } + + const matching = nodes.filter(({ node }) => matches(node, key)) + if (matching.length === 0) { + removed.push({ key, value, reason: 'not-installed' }) + continue + } + if (!matching.some(({ hasScripts }) => hasScripts)) { + removed.push({ key, value, reason: 'no-scripts' }) + continue + } + remaining[key] = value + } + + return { remaining, removed } +} + +module.exports = { classifyUnusedEntries } diff --git a/deps/npm/lib/utils/allow-scripts-writer.js b/deps/npm/lib/utils/allow-scripts-writer.js index 310e22412a4a44..b9476905d427b0 100644 --- a/deps/npm/lib/utils/allow-scripts-writer.js +++ b/deps/npm/lib/utils/allow-scripts-writer.js @@ -108,15 +108,15 @@ const isSingleVersionPin = (key) => { // an approval. Per RFC, a name-only deny ("pkg": false) is widest and // the only remediation is to remove the entry. A versioned deny // ("pkg@1.2.3": false or a disjunction) blocks only specific versions; -// the user can either widen it via `npm deny-scripts ` or remove -// it to approve the currently-installed version only. +// the user can either widen it via `npm install-scripts deny ` or +// remove it to approve the currently-installed version only. const denyWarning = (key, subject, name) => { if (isNameOnlyKey(key)) { return `${key} is denied; remove the entry from allowScripts to approve ${subject}.` } /* istanbul ignore next: name fallback is defensive; callers pass nameKeyFor(sample) */ const widenTarget = name || 'this package' - return `${key} is a versioned deny; run \`npm deny-scripts ${widenTarget}\` ` + + return `${key} is a versioned deny; run \`npm install-scripts deny ${widenTarget}\` ` + `to widen the deny to all versions of ${widenTarget}, or remove the entry ` + `to approve ${subject}.` } @@ -250,7 +250,41 @@ const applyApprovalForPackage = (existing, nodes, { pin = true } = {}) => { // package are removed. Per the RFC's pin-mismatch table, an existing // name-only entry (`pkg: true`) is replaced by `pkg@x.y.z: true` once // every installed version has a pin. - const installedKeys = new Set(nodes.map(versionedKeyFor).filter(Boolean)) + const versionedKeys = nodes.map(versionedKeyFor) + const installedKeys = new Set(versionedKeys.filter(Boolean)) + + // A registry dep with no `resolved` URL in the lockfile has no trustable + // version (getTrustedRegistryIdentity won't trust the tarball's + // node.version), so versionedKeyFor returns null and a `pkg@x.y.z` pin can + // never match it (npm/cli#9558). When any installed version can't be + // pinned, approve the whole package by name and drop now-redundant pins. + if (name && versionedKeys.some(key => !key)) { + for (const key of Object.keys(allowScripts)) { + if ( + keyTargetsNode(key, sample) && + key !== name && + isSingleVersionPin(key) && + allowScripts[key] === true + ) { + delete allowScripts[key] + changes.push({ key, change: 'removed-pinned-allow' }) + } + } + if (allowScripts[name] !== true) { + allowScripts[name] = true + changes.push({ key: name, change: 'added' }) + } + return { + allowScripts, + changes, + warning: changes.length + ? `${name}: approved by name (all versions) because its ` + + `package-lock.json entry has no "resolved" URL, so npm can't pin a ` + + `specific version. Run \`npm install\` to refresh the lockfile and ` + + `enable pinning.` + : undefined, + } + } for (const key of Object.keys(allowScripts)) { if ( diff --git a/deps/npm/lib/utils/cmd-list.js b/deps/npm/lib/utils/cmd-list.js index 1909df0d045469..8816d8294716ef 100644 --- a/deps/npm/lib/utils/cmd-list.js +++ b/deps/npm/lib/utils/cmd-list.js @@ -31,6 +31,7 @@ const commands = [ 'init', 'install', 'install-ci-test', + 'install-scripts', 'install-test', 'link', 'll', diff --git a/deps/npm/lib/utils/reify-output.js b/deps/npm/lib/utils/reify-output.js index 1ccbd4d0cad71a..6e25f94340632a 100644 --- a/deps/npm/lib/utils/reify-output.js +++ b/deps/npm/lib/utils/reify-output.js @@ -66,7 +66,8 @@ const reifyOutput = (npm, arb, extras = {}) => { if (showDiff) { output.standard(`${chalk.green('add')} ${d.ideal.name} ${d.ideal.package.version}`) } - if (actualTree.inventory.has(d.ideal)) { + // Linked store packages live under .store, absent from the logical actualTree, so identity lookup misses them; count each store package node (non-link). + if (actualTree.inventory.has(d.ideal) || (d.ideal.isInStore && !d.ideal.isLink)) { summary.added++ summary.add.push({ name: d.ideal.name, @@ -268,7 +269,7 @@ const unreviewedScriptsMessage = (npm, unreviewedScripts) => { ) } -// `npm approve-scripts` writes to a project package.json, which doesn't +// `npm install-scripts` writes to a project package.json, which doesn't // exist for global installs (it throws EGLOBAL). For those, point users at // the mechanism that does work globally: the `--allow-scripts` flag for a // one-off, or `npm config set allow-scripts` to persist it. @@ -282,8 +283,8 @@ const remediationLines = (npm, names) => { ] } return [ - 'Run `npm approve-scripts --allow-scripts-pending` to review, ' + - 'or `npm approve-scripts ` to allow.', + 'Run `npm install-scripts ls` to review, ' + + 'or `npm install-scripts approve ` to allow.', ] } diff --git a/deps/npm/lib/utils/sbom-cyclonedx.js b/deps/npm/lib/utils/sbom-cyclonedx.js index fe368e968baaa7..bd741718bef0d6 100644 --- a/deps/npm/lib/utils/sbom-cyclonedx.js +++ b/deps/npm/lib/utils/sbom-cyclonedx.js @@ -76,7 +76,7 @@ const toCyclonedxItem = (node, { packageType }) => { // Calculate purl from package spec let spec = npa(node.pkgid) spec = (spec.type === 'alias') ? spec.subSpec : spec - const purl = npa.toPurl(spec) + (isGitNode(node) ? `?vcs_url=${node.resolved}` : '') + const purl = npa.toPurl(spec) + (isGitNode(node) ? `?vcs_url=${encodeURIComponent(node.resolved)}` : '') if (node.package) { const toNormalize = new PackageJson() diff --git a/deps/npm/lib/utils/sbom-spdx.js b/deps/npm/lib/utils/sbom-spdx.js index 8ea75c688bc862..88797fd03effba 100644 --- a/deps/npm/lib/utils/sbom-spdx.js +++ b/deps/npm/lib/utils/sbom-spdx.js @@ -109,7 +109,7 @@ const toSpdxItem = (node, { packageType }) => { // Calculate purl from package spec let spec = npa(node.pkgid) spec = (spec.type === 'alias') ? spec.subSpec : spec - const purl = npa.toPurl(spec) + (isGitNode(node) ? `?vcs_url=${node.resolved}` : '') + const purl = npa.toPurl(spec) + (isGitNode(node) ? `?vcs_url=${encodeURIComponent(node.resolved)}` : '') /* For workspace nodes, use the location from their linkNode */ let location = node.location diff --git a/deps/npm/lib/utils/strict-allow-scripts-preflight.js b/deps/npm/lib/utils/strict-allow-scripts-preflight.js index d3575289fa8ed6..0c500018184c2e 100644 --- a/deps/npm/lib/utils/strict-allow-scripts-preflight.js +++ b/deps/npm/lib/utils/strict-allow-scripts-preflight.js @@ -48,19 +48,19 @@ const strictAllowScriptsPreflight = async ({ arb, npm, idealTreeOpts }) => { return ` ${label} (${events})` }).join('\n') - // `npm approve-scripts` / `npm deny-scripts` write to a project - // package.json, which doesn't exist for global installs. Point global - // users at the `--allow-scripts` flag and `npm config set allow-scripts`, - // which both work for global installs. Use the trusted display identity - // so the suggested `npm config set` value matches what the policy matches - // on, not the tarball's self-reported name. + // `npm install-scripts` writes to a project package.json, which doesn't + // exist for global installs. Point global users at the `--allow-scripts` + // flag and `npm config set allow-scripts`, which both work for global + // installs. Use the trusted display identity so the suggested `npm config + // set` value matches what the policy matches on, not the tarball's + // self-reported name. const names = unreviewed.map(({ node }) => trustedDisplay(node).name) const remediation = npm.global ? 'Allow them with `--allow-scripts`, persist them with ' + `\`${configSetAllowScripts(names)}\`, or bypass this ` + 'check with `--dangerously-allow-all-scripts`.' - : 'Approve them with `npm approve-scripts`, deny them with ' + - '`npm deny-scripts`, or bypass this check with ' + + : 'Approve them with `npm install-scripts approve`, deny them with ' + + '`npm install-scripts deny`, or bypass this check with ' + '`--dangerously-allow-all-scripts`.' throw Object.assign( diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1 index 5ffc6914ad0633..707bc69f167c40 100644 --- a/deps/npm/man/man1/npm-access.1 +++ b/deps/npm/man/man1/npm-access.1 @@ -1,4 +1,4 @@ -.TH "NPM-ACCESS" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-ACCESS" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-access\fR - Set access level on published packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1 index 83f72e33008086..091bcf2e3fe833 100644 --- a/deps/npm/man/man1/npm-adduser.1 +++ b/deps/npm/man/man1/npm-adduser.1 @@ -1,4 +1,4 @@ -.TH "NPM-ADDUSER" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-ADDUSER" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-adduser\fR - Add a registry user account .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-approve-scripts.1 b/deps/npm/man/man1/npm-approve-scripts.1 index 1fa1807f197223..cd2aee3190b791 100644 --- a/deps/npm/man/man1/npm-approve-scripts.1 +++ b/deps/npm/man/man1/npm-approve-scripts.1 @@ -1,4 +1,4 @@ -.TH "NPM-APPROVE-SCRIPTS" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-APPROVE-SCRIPTS" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-approve-scripts\fR - Approve install scripts for specific dependencies .SS "Synopsis" @@ -37,6 +37,8 @@ npm approve-scripts --allow-scripts-pending \fB--allow-scripts-pending\fR is read-only: it lists every package whose install scripts are not yet covered by \fBallowScripts\fR, without modifying \fBpackage.json\fR. .P \fBapprove-scripts\fR honours the asymmetric pin rule: if you re-approve a package whose installed version has changed, the existing pin is rewritten to track the new installed version. Multi-version statements (\fBpkg@1 || 2\fR) are left alone, since they likely capture intent that the command cannot infer. Existing \fBfalse\fR entries always win; \fBapprove-scripts\fR will not silently re-allow a package you previously denied. +.P +If a registry dependency has no \fBresolved\fR URL in your \fBpackage-lock.json\fR (for example, an older lockfile or one written with \fBomit-lockfile-registry-resolved\fR), npm cannot verify a trusted version for it and cannot pin it: a \fBpkg@1.2.3\fR entry never matches, so the package keeps appearing under \fB--allow-scripts-pending\fR. \fBapprove-scripts\fR approves these by name (\fBpkg: true\fR) and warns when it does. To restore pinning, refresh the lockfile with \fBnpm install\fR. .SS "Examples" .P .RS 2 diff --git a/deps/npm/man/man1/npm-audit.1 b/deps/npm/man/man1/npm-audit.1 index 9dca2a16806cd8..4c9bf13ecc27ba 100644 --- a/deps/npm/man/man1/npm-audit.1 +++ b/deps/npm/man/man1/npm-audit.1 @@ -1,4 +1,4 @@ -.TH "NPM-AUDIT" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-AUDIT" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-audit\fR - Run a security audit .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1 index 4e9fb5d6d1ddf7..529f369d12dac4 100644 --- a/deps/npm/man/man1/npm-bugs.1 +++ b/deps/npm/man/man1/npm-bugs.1 @@ -1,4 +1,4 @@ -.TH "NPM-BUGS" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-BUGS" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-bugs\fR - Report bugs for a package in a web browser .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1 index 056647fd1f366c..1f609ffd785afe 100644 --- a/deps/npm/man/man1/npm-cache.1 +++ b/deps/npm/man/man1/npm-cache.1 @@ -1,4 +1,4 @@ -.TH "NPM-CACHE" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-CACHE" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-cache\fR - Manipulates packages cache .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-ci.1 b/deps/npm/man/man1/npm-ci.1 index 88d49e4cfd29a5..2e62f4a1e73fcb 100644 --- a/deps/npm/man/man1/npm-ci.1 +++ b/deps/npm/man/man1/npm-ci.1 @@ -1,4 +1,4 @@ -.TH "NPM-CI" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-CI" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-ci\fR - Clean install a project .SS "Synopsis" @@ -75,7 +75,9 @@ Type: "hoisted", "nested", "shallow", or "linked" .RE 0 .P -Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: (experimental) install in node_modules/.store, link in place, unhoisted. +Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: install in node_modules/.store, link in place, unhoisted. +.P +We recommend that package authors use \fB--install-strategy=linked\fR during development to catch undeclared ("phantom") dependencies before publishing: the isolated layout only exposes a package's declared dependencies, so an \fBimport\fR of a package that was never added to \fBpackage.json\fR can fail instead of resolving by accident and shipping broken. See \fBCatching undeclared ("phantom") dependencies\fR \fI\(la/using-npm/developers#catching-undeclared-phantom-dependencies\(ra\fR. .SS "\fBlegacy-bundling\fR" .RS 0 .IP \(bu 4 @@ -242,6 +244,8 @@ Type: Boolean If \fBtrue\fR, turn the install-script policy from a warning into a hard error: any dependency with install scripts not covered by \fBallowScripts\fR will fail the install instead of running with a notice. .P Dependencies explicitly denied with \fBfalse\fR in \fBallowScripts\fR are always silently skipped; this setting only affects unreviewed entries. \fB--ignore-scripts\fR and \fB--dangerously-allow-all-scripts\fR both override this setting. +.P +Optional dependencies that cannot be installed on the current platform or engine (a non-matching \fBos\fR, \fBcpu\fR, or \fBlibc\fR) are not flagged, because their install scripts never run. .SS "\fBdangerously-allow-all-scripts\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1 index 15444b319c7642..5327001ec3f12e 100644 --- a/deps/npm/man/man1/npm-completion.1 +++ b/deps/npm/man/man1/npm-completion.1 @@ -1,4 +1,4 @@ -.TH "NPM-COMPLETION" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-COMPLETION" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-completion\fR - Tab Completion for npm .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1 index 446486b119387b..82fd108f72c0c7 100644 --- a/deps/npm/man/man1/npm-config.1 +++ b/deps/npm/man/man1/npm-config.1 @@ -1,4 +1,4 @@ -.TH "NPM-CONFIG" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-CONFIG" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-config\fR - Manage the npm configuration files .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1 index c370607b6fc112..68e369035eae76 100644 --- a/deps/npm/man/man1/npm-dedupe.1 +++ b/deps/npm/man/man1/npm-dedupe.1 @@ -1,4 +1,4 @@ -.TH "NPM-DEDUPE" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-DEDUPE" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-dedupe\fR - Reduce duplication in the package tree .SS "Synopsis" @@ -74,7 +74,9 @@ Type: "hoisted", "nested", "shallow", or "linked" .RE 0 .P -Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: (experimental) install in node_modules/.store, link in place, unhoisted. +Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: install in node_modules/.store, link in place, unhoisted. +.P +We recommend that package authors use \fB--install-strategy=linked\fR during development to catch undeclared ("phantom") dependencies before publishing: the isolated layout only exposes a package's declared dependencies, so an \fBimport\fR of a package that was never added to \fBpackage.json\fR can fail instead of resolving by accident and shipping broken. See \fBCatching undeclared ("phantom") dependencies\fR \fI\(la/using-npm/developers#catching-undeclared-phantom-dependencies\(ra\fR. .SS "\fBlegacy-bundling\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-deny-scripts.1 b/deps/npm/man/man1/npm-deny-scripts.1 index f60c26b5a3c410..67daaa87b720ee 100644 --- a/deps/npm/man/man1/npm-deny-scripts.1 +++ b/deps/npm/man/man1/npm-deny-scripts.1 @@ -1,4 +1,4 @@ -.TH "NPM-DENY-SCRIPTS" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-DENY-SCRIPTS" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-deny-scripts\fR - Deny install scripts for specific dependencies .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1 index e04d1228f86db9..1d89f067e7305e 100644 --- a/deps/npm/man/man1/npm-deprecate.1 +++ b/deps/npm/man/man1/npm-deprecate.1 @@ -1,4 +1,4 @@ -.TH "NPM-DEPRECATE" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-DEPRECATE" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-deprecate\fR - Deprecate a version of a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-diff.1 b/deps/npm/man/man1/npm-diff.1 index ed49280aa5a1e9..cc06fc95438658 100644 --- a/deps/npm/man/man1/npm-diff.1 +++ b/deps/npm/man/man1/npm-diff.1 @@ -1,4 +1,4 @@ -.TH "NPM-DIFF" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-DIFF" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-diff\fR - The registry diff command .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1 index 3aeacd51dccecc..6c3e74e3c6513d 100644 --- a/deps/npm/man/man1/npm-dist-tag.1 +++ b/deps/npm/man/man1/npm-dist-tag.1 @@ -1,4 +1,4 @@ -.TH "NPM-DIST-TAG" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-DIST-TAG" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-dist-tag\fR - Modify package distribution tags .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1 index e3e9a43aac9cf8..952c18cf115f69 100644 --- a/deps/npm/man/man1/npm-docs.1 +++ b/deps/npm/man/man1/npm-docs.1 @@ -1,4 +1,4 @@ -.TH "NPM-DOCS" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-DOCS" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-docs\fR - Open documentation for a package in a web browser .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-doctor.1 b/deps/npm/man/man1/npm-doctor.1 index 1e89fec2f3f986..1e8813a13a1488 100644 --- a/deps/npm/man/man1/npm-doctor.1 +++ b/deps/npm/man/man1/npm-doctor.1 @@ -1,4 +1,4 @@ -.TH "NPM-DOCTOR" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-DOCTOR" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-doctor\fR - Check the health of your npm environment .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1 index 530543a029b114..d46ea046ddb046 100644 --- a/deps/npm/man/man1/npm-edit.1 +++ b/deps/npm/man/man1/npm-edit.1 @@ -1,4 +1,4 @@ -.TH "NPM-EDIT" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-EDIT" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-edit\fR - Edit an installed package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-exec.1 b/deps/npm/man/man1/npm-exec.1 index 3122968e406543..93245000380fb7 100644 --- a/deps/npm/man/man1/npm-exec.1 +++ b/deps/npm/man/man1/npm-exec.1 @@ -1,4 +1,4 @@ -.TH "NPM-EXEC" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-EXEC" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-exec\fR - Run a command from a local or remote npm package .SS "Synopsis" @@ -193,6 +193,8 @@ Type: Boolean If \fBtrue\fR, turn the install-script policy from a warning into a hard error: any dependency with install scripts not covered by \fBallowScripts\fR will fail the install instead of running with a notice. .P Dependencies explicitly denied with \fBfalse\fR in \fBallowScripts\fR are always silently skipped; this setting only affects unreviewed entries. \fB--ignore-scripts\fR and \fB--dangerously-allow-all-scripts\fR both override this setting. +.P +Optional dependencies that cannot be installed on the current platform or engine (a non-matching \fBos\fR, \fBcpu\fR, or \fBlibc\fR) are not flagged, because their install scripts never run. .SS "\fBdangerously-allow-all-scripts\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-explain.1 b/deps/npm/man/man1/npm-explain.1 index ad4b6a15bf64ce..0c4b22410bf64a 100644 --- a/deps/npm/man/man1/npm-explain.1 +++ b/deps/npm/man/man1/npm-explain.1 @@ -1,4 +1,4 @@ -.TH "NPM-EXPLAIN" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-EXPLAIN" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-explain\fR - Explain installed packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1 index ee12137b4d6270..bd6788e463ea42 100644 --- a/deps/npm/man/man1/npm-explore.1 +++ b/deps/npm/man/man1/npm-explore.1 @@ -1,4 +1,4 @@ -.TH "NPM-EXPLORE" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-EXPLORE" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-explore\fR - Browse an installed package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-find-dupes.1 b/deps/npm/man/man1/npm-find-dupes.1 index 287971553cc917..8cab256a973b0f 100644 --- a/deps/npm/man/man1/npm-find-dupes.1 +++ b/deps/npm/man/man1/npm-find-dupes.1 @@ -1,4 +1,4 @@ -.TH "NPM-FIND-DUPES" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-FIND-DUPES" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-find-dupes\fR - Find duplication in the package tree .SS "Synopsis" @@ -21,7 +21,9 @@ Type: "hoisted", "nested", "shallow", or "linked" .RE 0 .P -Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: (experimental) install in node_modules/.store, link in place, unhoisted. +Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: install in node_modules/.store, link in place, unhoisted. +.P +We recommend that package authors use \fB--install-strategy=linked\fR during development to catch undeclared ("phantom") dependencies before publishing: the isolated layout only exposes a package's declared dependencies, so an \fBimport\fR of a package that was never added to \fBpackage.json\fR can fail instead of resolving by accident and shipping broken. See \fBCatching undeclared ("phantom") dependencies\fR \fI\(la/using-npm/developers#catching-undeclared-phantom-dependencies\(ra\fR. .SS "\fBlegacy-bundling\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-fund.1 b/deps/npm/man/man1/npm-fund.1 index fbe8cdc9bee951..a334c59e990078 100644 --- a/deps/npm/man/man1/npm-fund.1 +++ b/deps/npm/man/man1/npm-fund.1 @@ -1,4 +1,4 @@ -.TH "NPM-FUND" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-FUND" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-fund\fR - Retrieve funding information .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-get.1 b/deps/npm/man/man1/npm-get.1 index 03c66b0379ffdd..1eb86d69f161e0 100644 --- a/deps/npm/man/man1/npm-get.1 +++ b/deps/npm/man/man1/npm-get.1 @@ -1,4 +1,4 @@ -.TH "NPM-GET" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-GET" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-get\fR - Get a value from the npm configuration .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1 index 00a4a24dce4a23..b1752ad2b563be 100644 --- a/deps/npm/man/man1/npm-help-search.1 +++ b/deps/npm/man/man1/npm-help-search.1 @@ -1,4 +1,4 @@ -.TH "NPM-HELP-SEARCH" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-HELP-SEARCH" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-help-search\fR - Search npm help documentation .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1 index 7462b626b6f017..aef5394daaa26a 100644 --- a/deps/npm/man/man1/npm-help.1 +++ b/deps/npm/man/man1/npm-help.1 @@ -1,4 +1,4 @@ -.TH "NPM-HELP" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-HELP" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-help\fR - Get help on npm .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1 index 80e94e4140e090..990e0a58ed2820 100644 --- a/deps/npm/man/man1/npm-init.1 +++ b/deps/npm/man/man1/npm-init.1 @@ -1,4 +1,4 @@ -.TH "NPM-INIT" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-INIT" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-init\fR - Create a package.json file .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-install-ci-test.1 b/deps/npm/man/man1/npm-install-ci-test.1 index 77d75105800b89..88db36a8799a22 100644 --- a/deps/npm/man/man1/npm-install-ci-test.1 +++ b/deps/npm/man/man1/npm-install-ci-test.1 @@ -1,4 +1,4 @@ -.TH "NPM-INSTALL-CI-TEST" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-INSTALL-CI-TEST" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-install-ci-test\fR - Install a project with a clean slate and run tests .SS "Synopsis" @@ -23,7 +23,9 @@ Type: "hoisted", "nested", "shallow", or "linked" .RE 0 .P -Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: (experimental) install in node_modules/.store, link in place, unhoisted. +Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: install in node_modules/.store, link in place, unhoisted. +.P +We recommend that package authors use \fB--install-strategy=linked\fR during development to catch undeclared ("phantom") dependencies before publishing: the isolated layout only exposes a package's declared dependencies, so an \fBimport\fR of a package that was never added to \fBpackage.json\fR can fail instead of resolving by accident and shipping broken. See \fBCatching undeclared ("phantom") dependencies\fR \fI\(la/using-npm/developers#catching-undeclared-phantom-dependencies\(ra\fR. .SS "\fBlegacy-bundling\fR" .RS 0 .IP \(bu 4 @@ -190,6 +192,8 @@ Type: Boolean If \fBtrue\fR, turn the install-script policy from a warning into a hard error: any dependency with install scripts not covered by \fBallowScripts\fR will fail the install instead of running with a notice. .P Dependencies explicitly denied with \fBfalse\fR in \fBallowScripts\fR are always silently skipped; this setting only affects unreviewed entries. \fB--ignore-scripts\fR and \fB--dangerously-allow-all-scripts\fR both override this setting. +.P +Optional dependencies that cannot be installed on the current platform or engine (a non-matching \fBos\fR, \fBcpu\fR, or \fBlibc\fR) are not flagged, because their install scripts never run. .SS "\fBdangerously-allow-all-scripts\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-install-scripts.1 b/deps/npm/man/man1/npm-install-scripts.1 new file mode 100644 index 00000000000000..457b55c9fb7a8b --- /dev/null +++ b/deps/npm/man/man1/npm-install-scripts.1 @@ -0,0 +1,133 @@ +.TH "NPM-INSTALL-SCRIPTS" "1" "June 2026" "NPM@11.18.0" "" +.SH "NAME" +\fBnpm-install-scripts\fR - Manage install-script approvals for dependencies +.SS "Synopsis" +.P +.RS 2 +.nf +npm install-scripts approve \[lB] ...\[rB] +npm install-scripts approve --all +npm install-scripts deny \[lB] ...\[rB] +npm install-scripts deny --all +npm install-scripts ls +npm install-scripts prune +.fi +.RE +.P +Note: This command is unaware of workspaces. +.SS "Description" +.P +Manages the \fBallowScripts\fR field in your project's \fBpackage.json\fR, which records which of your dependencies are permitted to run install scripts (\fBpreinstall\fR, \fBinstall\fR, \fBpostinstall\fR, and \fBprepare\fR for non-registry sources). This is the recommended way to maintain that field. +.P +Dependency install scripts are blocked by default. Install commands silently skip lifecycle scripts for any dependency that does not have a matching entry in \fBallowScripts\fR, and end with a list of the packages whose scripts were skipped so you can review them here. +.P +This command only works inside a project that has a \fBpackage.json\fR. Running it with \fB--global\fR (\fB-g\fR) fails with an \fBEGLOBAL\fR error, since global installs (\fBnpm install -g\fR) and one-off executions (\fBnpm exec\fR / \fBnpx\fR) have no project \fBpackage.json\fR to write to. To allow install scripts in those contexts, use the \fB--allow-scripts\fR flag at install time (for example \fBnpm install -g --allow-scripts=canvas,sharp\fR) or persist the setting with \fBnpm config set allow-scripts=canvas,sharp --location=user\fR. +.P +There are four subcommands: +.P +.RS 2 +.nf +npm install-scripts approve \[lB] ...\[rB] +npm install-scripts approve --all +npm install-scripts deny \[lB] ...\[rB] +npm install-scripts deny --all +npm install-scripts ls +npm install-scripts prune +.fi +.RE +.P +\fBapprove\fR allows install scripts for the named packages. \fB\fR matches every installed version of that package. By default it writes pinned entries (\fBpkg@1.2.3\fR), which keep their approval narrowed to the specific version you reviewed. Pass \fB--no-allow-scripts-pin\fR to write name-only entries that allow any future version. \fB--all\fR approves every package with unreviewed install scripts in one go. +.P +\fBdeny\fR records an explicit denial for the named packages (a name-only \fBfalse\fR entry), which survives \fBnpm install-scripts approve --all\fR and excludes the package from any future blanket approval. \fB--all\fR denies every package with unreviewed install scripts. +.P +\fBls\fR is read-only: it lists every package whose install scripts are not yet covered by \fBallowScripts\fR, without modifying \fBpackage.json\fR. +.P +\fBprune\fR removes \fBallowScripts\fR entries that no longer match an installed package with an install script, either because the package is no longer installed (a transitive dependency changed, or a pinned \fBpkg@1.2.3\fR was upgraded) or because it no longer has an install script. Both approvals (\fBtrue\fR) and denials (\fBfalse\fR) are removed. It edits only the \fBallowScripts\fR field in \fBpackage.json\fR, never \fB.npmrc\fR or \fB--allow-scripts\fR. Pass \fB--dry-run\fR to preview without writing. Unparseable keys are left alone. +.P +\fBapprove\fR honours the asymmetric pin rule: if you re-approve a package whose installed version has changed, the existing pin is rewritten to track the new installed version. Multi-version statements (\fBpkg@1 || 2\fR) are left alone, since they likely capture intent that the command cannot infer. Existing \fBfalse\fR entries always win; \fBapprove\fR will not silently re-allow a package you previously denied. +.P +The standalone commands npm help approve-scripts and npm help deny-scripts are aliases for \fBnpm install-scripts approve\fR and \fBnpm install-scripts deny\fR. +.SS "Examples" +.P +.RS 2 +.nf +# Approve all currently-installed install scripts after reviewing them +npm install-scripts approve --all + +# Approve specific packages, pinned to their installed version +npm install-scripts approve canvas sharp + +# Deny a package so it stays blocked +npm install-scripts deny telemetry-pkg + +# Preview which packages still need review +npm install-scripts ls + +# Preview stale allowScripts entries, then remove them +npm install-scripts prune --dry-run +npm install-scripts prune +.fi +.RE +.SS "Configuration" +.SS "\fBall\fR" +.RS 0 +.IP \(bu 4 +Default: false +.IP \(bu 4 +Type: Boolean +.RE 0 + +.P +Show or act on all packages, not just the ones your project directly depends on. For \fBnpm outdated\fR and \fBnpm ls\fR this lists every outdated or installed package. For \fBnpm approve-scripts\fR and \fBnpm deny-scripts\fR it selects every package with pending install scripts. +.SS "\fBallow-scripts-pin\fR" +.RS 0 +.IP \(bu 4 +Default: true +.IP \(bu 4 +Type: Boolean +.RE 0 + +.P +Write pinned (\fBpkg@version\fR) entries when approving install scripts. Set to \fBfalse\fR to write name-only entries that allow any version. Has no effect on \fBnpm deny-scripts\fR, which always writes name-only entries regardless of this setting. +.SS "\fBdry-run\fR" +.RS 0 +.IP \(bu 4 +Default: false +.IP \(bu 4 +Type: Boolean +.RE 0 + +.P +Indicates that you don't want npm to make any changes and that it should only report what it would have done. This can be passed into any of the commands that modify your local installation, eg, \fBinstall\fR, \fBupdate\fR, \fBdedupe\fR, \fBuninstall\fR, as well as \fBpack\fR and \fBpublish\fR. +.P +Note: This is NOT honored by other network related commands, eg \fBdist-tags\fR, \fBowner\fR, etc. +.SS "\fBjson\fR" +.RS 0 +.IP \(bu 4 +Default: false +.IP \(bu 4 +Type: Boolean +.RE 0 + +.P +Whether or not to output JSON data, rather than the normal output. +.RS 0 +.IP \(bu 4 +In \fBnpm pkg set\fR it enables parsing set values with JSON.parse() before saving them to your \fBpackage.json\fR. +.RE 0 + +.P +Not supported by all npm commands. +.SS "See Also" +.RS 0 +.IP \(bu 4 +npm help approve-scripts +.IP \(bu 4 +npm help deny-scripts +.IP \(bu 4 +npm help install +.IP \(bu 4 +npm help rebuild +.IP \(bu 4 +\fBpackage.json\fR \fI\(la/configuring-npm/package-json\(ra\fR +.RE 0 diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1 index bea21d8f9996f4..56a0a454c8e601 100644 --- a/deps/npm/man/man1/npm-install-test.1 +++ b/deps/npm/man/man1/npm-install-test.1 @@ -1,4 +1,4 @@ -.TH "NPM-INSTALL-TEST" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-INSTALL-TEST" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-install-test\fR - Install package(s) and run tests .SS "Synopsis" @@ -66,7 +66,9 @@ Type: "hoisted", "nested", "shallow", or "linked" .RE 0 .P -Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: (experimental) install in node_modules/.store, link in place, unhoisted. +Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: install in node_modules/.store, link in place, unhoisted. +.P +We recommend that package authors use \fB--install-strategy=linked\fR during development to catch undeclared ("phantom") dependencies before publishing: the isolated layout only exposes a package's declared dependencies, so an \fBimport\fR of a package that was never added to \fBpackage.json\fR can fail instead of resolving by accident and shipping broken. See \fBCatching undeclared ("phantom") dependencies\fR \fI\(la/using-npm/developers#catching-undeclared-phantom-dependencies\(ra\fR. .SS "\fBlegacy-bundling\fR" .RS 0 .IP \(bu 4 @@ -267,6 +269,8 @@ Type: Boolean If \fBtrue\fR, turn the install-script policy from a warning into a hard error: any dependency with install scripts not covered by \fBallowScripts\fR will fail the install instead of running with a notice. .P Dependencies explicitly denied with \fBfalse\fR in \fBallowScripts\fR are always silently skipped; this setting only affects unreviewed entries. \fB--ignore-scripts\fR and \fB--dangerously-allow-all-scripts\fR both override this setting. +.P +Optional dependencies that cannot be installed on the current platform or engine (a non-matching \fBos\fR, \fBcpu\fR, or \fBlibc\fR) are not flagged, because their install scripts never run. .SS "\fBdangerously-allow-all-scripts\fR" .RS 0 .IP \(bu 4 @@ -302,6 +306,9 @@ If the requested version is a \fBdist-tag\fR and the given tag does not pass the .P If \fBbefore\fR and \fBmin-release-age\fR are both set in the same source, \fBbefore\fR wins (an explicit absolute date overrides a relative window). Across sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one. .P +As with \fBmin-release-age\fR, when this cutoff blocks a fix that \fBnpm audit +fix\fR would install, npm keeps the vulnerable version, warns, and exits with a non-zero code. +.P Packages whose names match \fBmin-release-age-exclude\fR are exempt from this filter. .SS "\fBmin-release-age\fR" .RS 0 @@ -316,6 +323,8 @@ If set, npm will build the npm tree such that only versions that were available .P This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days. The two may coexist (e.g. \fBmin-release-age\fR in your \fB.npmrc\fR is preserved when npm internally spawns a sub-process with \fB--before\fR while preparing a \fBgit:\fR or \fBgithub:\fR dependency); when both apply, \fBbefore\fR wins within a single source and across sources the standard precedence rules apply. .P +When this window stops \fBnpm audit fix\fR from installing a patched version (because the fix was published too recently), npm keeps the package at its vulnerable version, warns that the fix was blocked, and exits with a non-zero code. To install the fix, add the package to \fBmin-release-age-exclude\fR, or relax \fBmin-release-age\fR or \fBbefore\fR. +.P Packages whose names match \fBmin-release-age-exclude\fR are exempt from this filter. .P This value is not exported to the environment for child processes. diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1 index c4a9d33e00e736..1c853a06d9e7a1 100644 --- a/deps/npm/man/man1/npm-install.1 +++ b/deps/npm/man/man1/npm-install.1 @@ -1,4 +1,4 @@ -.TH "NPM-INSTALL" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-INSTALL" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-install\fR - Install a package .SS "Synopsis" @@ -456,7 +456,9 @@ Type: "hoisted", "nested", "shallow", or "linked" .RE 0 .P -Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: (experimental) install in node_modules/.store, link in place, unhoisted. +Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: install in node_modules/.store, link in place, unhoisted. +.P +We recommend that package authors use \fB--install-strategy=linked\fR during development to catch undeclared ("phantom") dependencies before publishing: the isolated layout only exposes a package's declared dependencies, so an \fBimport\fR of a package that was never added to \fBpackage.json\fR can fail instead of resolving by accident and shipping broken. See \fBCatching undeclared ("phantom") dependencies\fR \fI\(la/using-npm/developers#catching-undeclared-phantom-dependencies\(ra\fR. .SS "\fBlegacy-bundling\fR" .RS 0 .IP \(bu 4 @@ -657,6 +659,8 @@ Type: Boolean If \fBtrue\fR, turn the install-script policy from a warning into a hard error: any dependency with install scripts not covered by \fBallowScripts\fR will fail the install instead of running with a notice. .P Dependencies explicitly denied with \fBfalse\fR in \fBallowScripts\fR are always silently skipped; this setting only affects unreviewed entries. \fB--ignore-scripts\fR and \fB--dangerously-allow-all-scripts\fR both override this setting. +.P +Optional dependencies that cannot be installed on the current platform or engine (a non-matching \fBos\fR, \fBcpu\fR, or \fBlibc\fR) are not flagged, because their install scripts never run. .SS "\fBdangerously-allow-all-scripts\fR" .RS 0 .IP \(bu 4 @@ -692,6 +696,9 @@ If the requested version is a \fBdist-tag\fR and the given tag does not pass the .P If \fBbefore\fR and \fBmin-release-age\fR are both set in the same source, \fBbefore\fR wins (an explicit absolute date overrides a relative window). Across sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one. .P +As with \fBmin-release-age\fR, when this cutoff blocks a fix that \fBnpm audit +fix\fR would install, npm keeps the vulnerable version, warns, and exits with a non-zero code. +.P Packages whose names match \fBmin-release-age-exclude\fR are exempt from this filter. .SS "\fBmin-release-age\fR" .RS 0 @@ -706,6 +713,8 @@ If set, npm will build the npm tree such that only versions that were available .P This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days. The two may coexist (e.g. \fBmin-release-age\fR in your \fB.npmrc\fR is preserved when npm internally spawns a sub-process with \fB--before\fR while preparing a \fBgit:\fR or \fBgithub:\fR dependency); when both apply, \fBbefore\fR wins within a single source and across sources the standard precedence rules apply. .P +When this window stops \fBnpm audit fix\fR from installing a patched version (because the fix was published too recently), npm keeps the package at its vulnerable version, warns that the fix was blocked, and exits with a non-zero code. To install the fix, add the package to \fBmin-release-age-exclude\fR, or relax \fBmin-release-age\fR or \fBbefore\fR. +.P Packages whose names match \fBmin-release-age-exclude\fR are exempt from this filter. .P This value is not exported to the environment for child processes. diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1 index 52b718e15e9cab..9b45424b521c13 100644 --- a/deps/npm/man/man1/npm-link.1 +++ b/deps/npm/man/man1/npm-link.1 @@ -1,4 +1,4 @@ -.TH "NPM-LINK" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-LINK" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-link\fR - Symlink a package folder .SS "Synopsis" @@ -133,7 +133,9 @@ Type: "hoisted", "nested", "shallow", or "linked" .RE 0 .P -Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: (experimental) install in node_modules/.store, link in place, unhoisted. +Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: install in node_modules/.store, link in place, unhoisted. +.P +We recommend that package authors use \fB--install-strategy=linked\fR during development to catch undeclared ("phantom") dependencies before publishing: the isolated layout only exposes a package's declared dependencies, so an \fBimport\fR of a package that was never added to \fBpackage.json\fR can fail instead of resolving by accident and shipping broken. See \fBCatching undeclared ("phantom") dependencies\fR \fI\(la/using-npm/developers#catching-undeclared-phantom-dependencies\(ra\fR. .SS "\fBlegacy-bundling\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-ll.1 b/deps/npm/man/man1/npm-ll.1 index cd62068571d750..76cca43a86c547 100644 --- a/deps/npm/man/man1/npm-ll.1 +++ b/deps/npm/man/man1/npm-ll.1 @@ -1,4 +1,4 @@ -.TH "NPM-LL" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-LL" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-ll\fR - List installed packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-login.1 b/deps/npm/man/man1/npm-login.1 index 3848cf175db3cf..c08365bf41b291 100644 --- a/deps/npm/man/man1/npm-login.1 +++ b/deps/npm/man/man1/npm-login.1 @@ -1,4 +1,4 @@ -.TH "NPM-LOGIN" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-LOGIN" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-login\fR - Login to a registry user account .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1 index ebb1c62f319920..e27692a1f361d6 100644 --- a/deps/npm/man/man1/npm-logout.1 +++ b/deps/npm/man/man1/npm-logout.1 @@ -1,4 +1,4 @@ -.TH "NPM-LOGOUT" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-LOGOUT" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-logout\fR - Log out of the registry .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1 index f1d982134141bd..8d6a48be7adb13 100644 --- a/deps/npm/man/man1/npm-ls.1 +++ b/deps/npm/man/man1/npm-ls.1 @@ -1,4 +1,4 @@ -.TH "NPM-LS" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-LS" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-ls\fR - List installed packages .SS "Synopsis" @@ -20,7 +20,7 @@ Positional arguments are \fBname@version-range\fR identifiers, which will limit .P .RS 2 .nf -npm@11.17.0 /path/to/npm +npm@11.18.0 /path/to/npm └─┬ init-package-json@0.0.4 └── promzard@0.1.5 .fi diff --git a/deps/npm/man/man1/npm-org.1 b/deps/npm/man/man1/npm-org.1 index 879be21b203a8f..87b14daf94bb7e 100644 --- a/deps/npm/man/man1/npm-org.1 +++ b/deps/npm/man/man1/npm-org.1 @@ -1,4 +1,4 @@ -.TH "NPM-ORG" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-ORG" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-org\fR - Manage orgs .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1 index 446ddba893f360..0b2677ecbe64e4 100644 --- a/deps/npm/man/man1/npm-outdated.1 +++ b/deps/npm/man/man1/npm-outdated.1 @@ -1,4 +1,4 @@ -.TH "NPM-OUTDATED" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-OUTDATED" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-outdated\fR - Check for outdated packages .SS "Synopsis" @@ -182,6 +182,9 @@ If the requested version is a \fBdist-tag\fR and the given tag does not pass the .P If \fBbefore\fR and \fBmin-release-age\fR are both set in the same source, \fBbefore\fR wins (an explicit absolute date overrides a relative window). Across sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one. .P +As with \fBmin-release-age\fR, when this cutoff blocks a fix that \fBnpm audit +fix\fR would install, npm keeps the vulnerable version, warns, and exits with a non-zero code. +.P Packages whose names match \fBmin-release-age-exclude\fR are exempt from this filter. .SS "\fBmin-release-age\fR" .RS 0 @@ -196,6 +199,8 @@ If set, npm will build the npm tree such that only versions that were available .P This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days. The two may coexist (e.g. \fBmin-release-age\fR in your \fB.npmrc\fR is preserved when npm internally spawns a sub-process with \fB--before\fR while preparing a \fBgit:\fR or \fBgithub:\fR dependency); when both apply, \fBbefore\fR wins within a single source and across sources the standard precedence rules apply. .P +When this window stops \fBnpm audit fix\fR from installing a patched version (because the fix was published too recently), npm keeps the package at its vulnerable version, warns that the fix was blocked, and exits with a non-zero code. To install the fix, add the package to \fBmin-release-age-exclude\fR, or relax \fBmin-release-age\fR or \fBbefore\fR. +.P Packages whose names match \fBmin-release-age-exclude\fR are exempt from this filter. .P This value is not exported to the environment for child processes. diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1 index f257550482ccad..b4239474547451 100644 --- a/deps/npm/man/man1/npm-owner.1 +++ b/deps/npm/man/man1/npm-owner.1 @@ -1,4 +1,4 @@ -.TH "NPM-OWNER" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-OWNER" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-owner\fR - Manage package owners .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1 index 64de415452732e..4220d6eab1ba48 100644 --- a/deps/npm/man/man1/npm-pack.1 +++ b/deps/npm/man/man1/npm-pack.1 @@ -1,4 +1,4 @@ -.TH "NPM-PACK" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-PACK" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-pack\fR - Create a tarball from a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1 index 8f4292b8b5e9a2..b214ef9bbe299f 100644 --- a/deps/npm/man/man1/npm-ping.1 +++ b/deps/npm/man/man1/npm-ping.1 @@ -1,4 +1,4 @@ -.TH "NPM-PING" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-PING" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-ping\fR - Ping npm registry .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-pkg.1 b/deps/npm/man/man1/npm-pkg.1 index fba0a9b61aee9e..e61280ea9b3b51 100644 --- a/deps/npm/man/man1/npm-pkg.1 +++ b/deps/npm/man/man1/npm-pkg.1 @@ -1,4 +1,4 @@ -.TH "NPM-PKG" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-PKG" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-pkg\fR - Manages your package.json .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1 index 17248aa54d5396..8e5f186bc4940d 100644 --- a/deps/npm/man/man1/npm-prefix.1 +++ b/deps/npm/man/man1/npm-prefix.1 @@ -1,4 +1,4 @@ -.TH "NPM-PREFIX" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-PREFIX" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-prefix\fR - Display prefix .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-profile.1 b/deps/npm/man/man1/npm-profile.1 index c050f580f4c853..7a3a7c3e73aed3 100644 --- a/deps/npm/man/man1/npm-profile.1 +++ b/deps/npm/man/man1/npm-profile.1 @@ -1,4 +1,4 @@ -.TH "NPM-PROFILE" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-PROFILE" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-profile\fR - Change settings on your registry profile .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1 index d70133afd0dcfc..d36938d3e27db9 100644 --- a/deps/npm/man/man1/npm-prune.1 +++ b/deps/npm/man/man1/npm-prune.1 @@ -1,4 +1,4 @@ -.TH "NPM-PRUNE" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-PRUNE" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-prune\fR - Remove extraneous packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1 index d25d25c7590460..36ad2d781aca22 100644 --- a/deps/npm/man/man1/npm-publish.1 +++ b/deps/npm/man/man1/npm-publish.1 @@ -1,4 +1,4 @@ -.TH "NPM-PUBLISH" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-PUBLISH" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-publish\fR - Publish a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-query.1 b/deps/npm/man/man1/npm-query.1 index 654f2c33242b56..f5e07ec1954db5 100644 --- a/deps/npm/man/man1/npm-query.1 +++ b/deps/npm/man/man1/npm-query.1 @@ -1,4 +1,4 @@ -.TH "NPM-QUERY" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-QUERY" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-query\fR - Dependency selector query .SS "Synopsis" @@ -289,6 +289,9 @@ If the requested version is a \fBdist-tag\fR and the given tag does not pass the .P If \fBbefore\fR and \fBmin-release-age\fR are both set in the same source, \fBbefore\fR wins (an explicit absolute date overrides a relative window). Across sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one. .P +As with \fBmin-release-age\fR, when this cutoff blocks a fix that \fBnpm audit +fix\fR would install, npm keeps the vulnerable version, warns, and exits with a non-zero code. +.P Packages whose names match \fBmin-release-age-exclude\fR are exempt from this filter. .SS "\fBmin-release-age\fR" .RS 0 @@ -303,6 +306,8 @@ If set, npm will build the npm tree such that only versions that were available .P This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days. The two may coexist (e.g. \fBmin-release-age\fR in your \fB.npmrc\fR is preserved when npm internally spawns a sub-process with \fB--before\fR while preparing a \fBgit:\fR or \fBgithub:\fR dependency); when both apply, \fBbefore\fR wins within a single source and across sources the standard precedence rules apply. .P +When this window stops \fBnpm audit fix\fR from installing a patched version (because the fix was published too recently), npm keeps the package at its vulnerable version, warns that the fix was blocked, and exits with a non-zero code. To install the fix, add the package to \fBmin-release-age-exclude\fR, or relax \fBmin-release-age\fR or \fBbefore\fR. +.P Packages whose names match \fBmin-release-age-exclude\fR are exempt from this filter. .P This value is not exported to the environment for child processes. diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1 index 9c4aac4a249191..972bb0fadefa4c 100644 --- a/deps/npm/man/man1/npm-rebuild.1 +++ b/deps/npm/man/man1/npm-rebuild.1 @@ -1,4 +1,4 @@ -.TH "NPM-REBUILD" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-REBUILD" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-rebuild\fR - Rebuild a package .SS "Synopsis" @@ -127,6 +127,8 @@ Type: Boolean If \fBtrue\fR, turn the install-script policy from a warning into a hard error: any dependency with install scripts not covered by \fBallowScripts\fR will fail the install instead of running with a notice. .P Dependencies explicitly denied with \fBfalse\fR in \fBallowScripts\fR are always silently skipped; this setting only affects unreviewed entries. \fB--ignore-scripts\fR and \fB--dangerously-allow-all-scripts\fR both override this setting. +.P +Optional dependencies that cannot be installed on the current platform or engine (a non-matching \fBos\fR, \fBcpu\fR, or \fBlibc\fR) are not flagged, because their install scripts never run. .SS "\fBdangerously-allow-all-scripts\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1 index 2ddf9937d8e715..f354706b7a96bc 100644 --- a/deps/npm/man/man1/npm-repo.1 +++ b/deps/npm/man/man1/npm-repo.1 @@ -1,4 +1,4 @@ -.TH "NPM-REPO" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-REPO" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-repo\fR - Open package repository page in the browser .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1 index 2b9b1161058b44..754c1450517e85 100644 --- a/deps/npm/man/man1/npm-restart.1 +++ b/deps/npm/man/man1/npm-restart.1 @@ -1,4 +1,4 @@ -.TH "NPM-RESTART" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-RESTART" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-restart\fR - Restart a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1 index 7b85912e45cfb0..21a04731a3c84f 100644 --- a/deps/npm/man/man1/npm-root.1 +++ b/deps/npm/man/man1/npm-root.1 @@ -1,4 +1,4 @@ -.TH "NPM-ROOT" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-ROOT" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-root\fR - Display npm root .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-run.1 b/deps/npm/man/man1/npm-run.1 index 0beb0b5fd04437..c481d3ea7f3a57 100644 --- a/deps/npm/man/man1/npm-run.1 +++ b/deps/npm/man/man1/npm-run.1 @@ -1,4 +1,4 @@ -.TH "NPM-RUN" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-RUN" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-run\fR - Run arbitrary package scripts .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-sbom.1 b/deps/npm/man/man1/npm-sbom.1 index c04aca73069b15..4528c2287d3689 100644 --- a/deps/npm/man/man1/npm-sbom.1 +++ b/deps/npm/man/man1/npm-sbom.1 @@ -1,4 +1,4 @@ -.TH "NPM-SBOM" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-SBOM" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-sbom\fR - Generate a Software Bill of Materials (SBOM) .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1 index 72e8175649c820..88088ac8303093 100644 --- a/deps/npm/man/man1/npm-search.1 +++ b/deps/npm/man/man1/npm-search.1 @@ -1,4 +1,4 @@ -.TH "NPM-SEARCH" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-SEARCH" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-search\fR - Search for packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-set.1 b/deps/npm/man/man1/npm-set.1 index 84190092eaa846..feee9c27be677c 100644 --- a/deps/npm/man/man1/npm-set.1 +++ b/deps/npm/man/man1/npm-set.1 @@ -1,4 +1,4 @@ -.TH "NPM-SET" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-SET" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-set\fR - Set a value in the npm configuration .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1 index faf1d8081df6a9..12d1b01f5553f4 100644 --- a/deps/npm/man/man1/npm-shrinkwrap.1 +++ b/deps/npm/man/man1/npm-shrinkwrap.1 @@ -1,4 +1,4 @@ -.TH "NPM-SHRINKWRAP" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-SHRINKWRAP" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-shrinkwrap\fR - Lock down dependency versions for publication .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-stage.1 b/deps/npm/man/man1/npm-stage.1 index 20549ea1b36821..9e14f2c5b25179 100644 --- a/deps/npm/man/man1/npm-stage.1 +++ b/deps/npm/man/man1/npm-stage.1 @@ -1,4 +1,4 @@ -.TH "NPM-STAGE" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-STAGE" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-stage\fR - Stage packages for publishing .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1 index 545945e0bdbc12..37d94b17a7c376 100644 --- a/deps/npm/man/man1/npm-star.1 +++ b/deps/npm/man/man1/npm-star.1 @@ -1,4 +1,4 @@ -.TH "NPM-STAR" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-STAR" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-star\fR - Mark your favorite packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1 index 1eb8ca9b8f31ab..4db22ed60395ec 100644 --- a/deps/npm/man/man1/npm-stars.1 +++ b/deps/npm/man/man1/npm-stars.1 @@ -1,4 +1,4 @@ -.TH "NPM-STARS" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-STARS" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-stars\fR - View packages marked as favorites .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-start.1 b/deps/npm/man/man1/npm-start.1 index 7722f5aa5bfab9..0729d9cd175465 100644 --- a/deps/npm/man/man1/npm-start.1 +++ b/deps/npm/man/man1/npm-start.1 @@ -1,4 +1,4 @@ -.TH "NPM-START" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-START" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-start\fR - Start a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1 index df8ec8448baad3..e9261943c03c6e 100644 --- a/deps/npm/man/man1/npm-stop.1 +++ b/deps/npm/man/man1/npm-stop.1 @@ -1,4 +1,4 @@ -.TH "NPM-STOP" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-STOP" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-stop\fR - Stop a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1 index 4ef28794fc6c2d..d1e9e481cd882f 100644 --- a/deps/npm/man/man1/npm-team.1 +++ b/deps/npm/man/man1/npm-team.1 @@ -1,4 +1,4 @@ -.TH "NPM-TEAM" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-TEAM" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-team\fR - Manage organization teams and team memberships .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1 index b000e1bc6417fb..a9c28e79e980e5 100644 --- a/deps/npm/man/man1/npm-test.1 +++ b/deps/npm/man/man1/npm-test.1 @@ -1,4 +1,4 @@ -.TH "NPM-TEST" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-TEST" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-test\fR - Test a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-token.1 b/deps/npm/man/man1/npm-token.1 index a6823c2e2fa530..383a825d14fbde 100644 --- a/deps/npm/man/man1/npm-token.1 +++ b/deps/npm/man/man1/npm-token.1 @@ -1,4 +1,4 @@ -.TH "NPM-TOKEN" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-TOKEN" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-token\fR - Manage your authentication tokens .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-trust.1 b/deps/npm/man/man1/npm-trust.1 index 9d20c2d45e8e59..5dc2dfc702a25f 100644 --- a/deps/npm/man/man1/npm-trust.1 +++ b/deps/npm/man/man1/npm-trust.1 @@ -1,4 +1,4 @@ -.TH "NPM-TRUST" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-TRUST" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-trust\fR - Manage trusted publishing relationships between packages and CI/CD providers .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-undeprecate.1 b/deps/npm/man/man1/npm-undeprecate.1 index 896fdb1f228fd7..2fc8e0050091b9 100644 --- a/deps/npm/man/man1/npm-undeprecate.1 +++ b/deps/npm/man/man1/npm-undeprecate.1 @@ -1,4 +1,4 @@ -.TH "NPM-UNDEPRECATE" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-UNDEPRECATE" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-undeprecate\fR - Undeprecate a version of a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1 index 7384f0c4b2ac20..d2843a8a330506 100644 --- a/deps/npm/man/man1/npm-uninstall.1 +++ b/deps/npm/man/man1/npm-uninstall.1 @@ -1,4 +1,4 @@ -.TH "NPM-UNINSTALL" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-UNINSTALL" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-uninstall\fR - Remove a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1 index 15ece4ea1512d5..7c62b0c1324a31 100644 --- a/deps/npm/man/man1/npm-unpublish.1 +++ b/deps/npm/man/man1/npm-unpublish.1 @@ -1,4 +1,4 @@ -.TH "NPM-UNPUBLISH" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-UNPUBLISH" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-unpublish\fR - Remove a package from the registry .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-unstar.1 b/deps/npm/man/man1/npm-unstar.1 index 756d74ff719167..fe080180b661e7 100644 --- a/deps/npm/man/man1/npm-unstar.1 +++ b/deps/npm/man/man1/npm-unstar.1 @@ -1,4 +1,4 @@ -.TH "NPM-UNSTAR" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-UNSTAR" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-unstar\fR - Remove an item from your favorite packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1 index 1d2904e2000df9..5ad8146b0da980 100644 --- a/deps/npm/man/man1/npm-update.1 +++ b/deps/npm/man/man1/npm-update.1 @@ -1,4 +1,4 @@ -.TH "NPM-UPDATE" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-UPDATE" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-update\fR - Update packages .SS "Synopsis" @@ -174,7 +174,9 @@ Type: "hoisted", "nested", "shallow", or "linked" .RE 0 .P -Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: (experimental) install in node_modules/.store, link in place, unhoisted. +Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: install in node_modules/.store, link in place, unhoisted. +.P +We recommend that package authors use \fB--install-strategy=linked\fR during development to catch undeclared ("phantom") dependencies before publishing: the isolated layout only exposes a package's declared dependencies, so an \fBimport\fR of a package that was never added to \fBpackage.json\fR can fail instead of resolving by accident and shipping broken. See \fBCatching undeclared ("phantom") dependencies\fR \fI\(la/using-npm/developers#catching-undeclared-phantom-dependencies\(ra\fR. .SS "\fBlegacy-bundling\fR" .RS 0 .IP \(bu 4 @@ -303,6 +305,8 @@ Type: Boolean If \fBtrue\fR, turn the install-script policy from a warning into a hard error: any dependency with install scripts not covered by \fBallowScripts\fR will fail the install instead of running with a notice. .P Dependencies explicitly denied with \fBfalse\fR in \fBallowScripts\fR are always silently skipped; this setting only affects unreviewed entries. \fB--ignore-scripts\fR and \fB--dangerously-allow-all-scripts\fR both override this setting. +.P +Optional dependencies that cannot be installed on the current platform or engine (a non-matching \fBos\fR, \fBcpu\fR, or \fBlibc\fR) are not flagged, because their install scripts never run. .SS "\fBdangerously-allow-all-scripts\fR" .RS 0 .IP \(bu 4 @@ -338,6 +342,9 @@ If the requested version is a \fBdist-tag\fR and the given tag does not pass the .P If \fBbefore\fR and \fBmin-release-age\fR are both set in the same source, \fBbefore\fR wins (an explicit absolute date overrides a relative window). Across sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one. .P +As with \fBmin-release-age\fR, when this cutoff blocks a fix that \fBnpm audit +fix\fR would install, npm keeps the vulnerable version, warns, and exits with a non-zero code. +.P Packages whose names match \fBmin-release-age-exclude\fR are exempt from this filter. .SS "\fBmin-release-age\fR" .RS 0 @@ -352,6 +359,8 @@ If set, npm will build the npm tree such that only versions that were available .P This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days. The two may coexist (e.g. \fBmin-release-age\fR in your \fB.npmrc\fR is preserved when npm internally spawns a sub-process with \fB--before\fR while preparing a \fBgit:\fR or \fBgithub:\fR dependency); when both apply, \fBbefore\fR wins within a single source and across sources the standard precedence rules apply. .P +When this window stops \fBnpm audit fix\fR from installing a patched version (because the fix was published too recently), npm keeps the package at its vulnerable version, warns that the fix was blocked, and exits with a non-zero code. To install the fix, add the package to \fBmin-release-age-exclude\fR, or relax \fBmin-release-age\fR or \fBbefore\fR. +.P Packages whose names match \fBmin-release-age-exclude\fR are exempt from this filter. .P This value is not exported to the environment for child processes. diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1 index 165689083e7fd8..d80b0e8288c096 100644 --- a/deps/npm/man/man1/npm-version.1 +++ b/deps/npm/man/man1/npm-version.1 @@ -1,4 +1,4 @@ -.TH "NPM-VERSION" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-VERSION" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-version\fR - Bump a package version .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1 index f487a05cc30e92..1c965ded858613 100644 --- a/deps/npm/man/man1/npm-view.1 +++ b/deps/npm/man/man1/npm-view.1 @@ -1,4 +1,4 @@ -.TH "NPM-VIEW" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-VIEW" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-view\fR - View registry info .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1 index 93c147ae162664..7ddb5ca6a84e76 100644 --- a/deps/npm/man/man1/npm-whoami.1 +++ b/deps/npm/man/man1/npm-whoami.1 @@ -1,4 +1,4 @@ -.TH "NPM-WHOAMI" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM-WHOAMI" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-whoami\fR - Display npm username .SS "Synopsis" diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1 index 29634dd59b29b6..58f6815ebadf92 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPM" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm\fR - javascript package manager .SS "Synopsis" @@ -12,7 +12,7 @@ npm Note: This command is unaware of workspaces. .SS "Version" .P -11.17.0 +11.18.0 .SS "Description" .P npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency conflicts intelligently. diff --git a/deps/npm/man/man1/npx.1 b/deps/npm/man/man1/npx.1 index d8d510d6d9bf09..c3a4f521f66762 100644 --- a/deps/npm/man/man1/npx.1 +++ b/deps/npm/man/man1/npx.1 @@ -1,4 +1,4 @@ -.TH "NPX" "1" "June 2026" "NPM@11.17.0" "" +.TH "NPX" "1" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpx\fR - Run a command from a local or remote npm package .SS "Synopsis" diff --git a/deps/npm/man/man5/folders.5 b/deps/npm/man/man5/folders.5 index 5dd5cc2f5c537f..0202a97198c8f9 100644 --- a/deps/npm/man/man5/folders.5 +++ b/deps/npm/man/man5/folders.5 @@ -1,4 +1,4 @@ -.TH "FOLDERS" "5" "June 2026" "NPM@11.17.0" "" +.TH "FOLDERS" "5" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBFolders\fR - Folder structures used by npm .SS "Description" diff --git a/deps/npm/man/man5/install.5 b/deps/npm/man/man5/install.5 index ecd657bf2a4ba8..8e23936cba2da1 100644 --- a/deps/npm/man/man5/install.5 +++ b/deps/npm/man/man5/install.5 @@ -1,4 +1,4 @@ -.TH "INSTALL" "5" "June 2026" "NPM@11.17.0" "" +.TH "INSTALL" "5" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBInstall\fR - Download and install node and npm .SS "Description" diff --git a/deps/npm/man/man5/npm-global.5 b/deps/npm/man/man5/npm-global.5 index 5dd5cc2f5c537f..0202a97198c8f9 100644 --- a/deps/npm/man/man5/npm-global.5 +++ b/deps/npm/man/man5/npm-global.5 @@ -1,4 +1,4 @@ -.TH "FOLDERS" "5" "June 2026" "NPM@11.17.0" "" +.TH "FOLDERS" "5" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBFolders\fR - Folder structures used by npm .SS "Description" diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5 index b1a7646edc8f3b..bd9d1bd5b7ee94 100644 --- a/deps/npm/man/man5/npm-json.5 +++ b/deps/npm/man/man5/npm-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE.JSON" "5" "June 2026" "NPM@11.17.0" "" +.TH "PACKAGE.JSON" "5" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBpackage.json\fR - Specifics of npm's package.json handling .SS "Description" diff --git a/deps/npm/man/man5/npm-shrinkwrap-json.5 b/deps/npm/man/man5/npm-shrinkwrap-json.5 index 25c446d6238919..5f1f80576e9a09 100644 --- a/deps/npm/man/man5/npm-shrinkwrap-json.5 +++ b/deps/npm/man/man5/npm-shrinkwrap-json.5 @@ -1,4 +1,4 @@ -.TH "NPM-SHRINKWRAP.JSON" "5" "June 2026" "NPM@11.17.0" "" +.TH "NPM-SHRINKWRAP.JSON" "5" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBnpm-shrinkwrap.json\fR - A publishable lockfile .SS "Description" diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5 index f57ca1f46819c5..14d449b3111b7e 100644 --- a/deps/npm/man/man5/npmrc.5 +++ b/deps/npm/man/man5/npmrc.5 @@ -1,4 +1,4 @@ -.TH ".NPMRC" "5" "June 2026" "NPM@11.17.0" "" +.TH ".NPMRC" "5" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fB.npmrc\fR - The npm config files .SS "Description" diff --git a/deps/npm/man/man5/package-json.5 b/deps/npm/man/man5/package-json.5 index b1a7646edc8f3b..bd9d1bd5b7ee94 100644 --- a/deps/npm/man/man5/package-json.5 +++ b/deps/npm/man/man5/package-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE.JSON" "5" "June 2026" "NPM@11.17.0" "" +.TH "PACKAGE.JSON" "5" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBpackage.json\fR - Specifics of npm's package.json handling .SS "Description" diff --git a/deps/npm/man/man5/package-lock-json.5 b/deps/npm/man/man5/package-lock-json.5 index 527fc62ab1bb65..0223c95c68a4d5 100644 --- a/deps/npm/man/man5/package-lock-json.5 +++ b/deps/npm/man/man5/package-lock-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE-LOCK.JSON" "5" "June 2026" "NPM@11.17.0" "" +.TH "PACKAGE-LOCK.JSON" "5" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBpackage-lock.json\fR - A manifestation of the manifest .SS "Description" diff --git a/deps/npm/man/man7/config.7 b/deps/npm/man/man7/config.7 index 75c854342d85ae..eb4145df952600 100644 --- a/deps/npm/man/man7/config.7 +++ b/deps/npm/man/man7/config.7 @@ -1,4 +1,4 @@ -.TH "CONFIG" "7" "June 2026" "NPM@11.17.0" "" +.TH "CONFIG" "7" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBConfig\fR - About npm configuration .SS "Description" @@ -333,6 +333,9 @@ If the requested version is a \fBdist-tag\fR and the given tag does not pass the .P If \fBbefore\fR and \fBmin-release-age\fR are both set in the same source, \fBbefore\fR wins (an explicit absolute date overrides a relative window). Across sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one. .P +As with \fBmin-release-age\fR, when this cutoff blocks a fix that \fBnpm audit +fix\fR would install, npm keeps the vulnerable version, warns, and exits with a non-zero code. +.P Packages whose names match \fBmin-release-age-exclude\fR are exempt from this filter. .SS "\fBbin-links\fR" .RS 0 @@ -1020,7 +1023,9 @@ Type: "hoisted", "nested", "shallow", or "linked" .RE 0 .P -Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: (experimental) install in node_modules/.store, link in place, unhoisted. +Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. linked: install in node_modules/.store, link in place, unhoisted. +.P +We recommend that package authors use \fB--install-strategy=linked\fR during development to catch undeclared ("phantom") dependencies before publishing: the isolated layout only exposes a package's declared dependencies, so an \fBimport\fR of a package that was never added to \fBpackage.json\fR can fail instead of resolving by accident and shipping broken. See \fBCatching undeclared ("phantom") dependencies\fR \fI\(la/using-npm/developers#catching-undeclared-phantom-dependencies\(ra\fR. .SS "\fBjson\fR" .RS 0 .IP \(bu 4 @@ -1202,6 +1207,8 @@ If set, npm will build the npm tree such that only versions that were available .P This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days. The two may coexist (e.g. \fBmin-release-age\fR in your \fB.npmrc\fR is preserved when npm internally spawns a sub-process with \fB--before\fR while preparing a \fBgit:\fR or \fBgithub:\fR dependency); when both apply, \fBbefore\fR wins within a single source and across sources the standard precedence rules apply. .P +When this window stops \fBnpm audit fix\fR from installing a patched version (because the fix was published too recently), npm keeps the package at its vulnerable version, warns that the fix was blocked, and exits with a non-zero code. To install the fix, add the package to \fBmin-release-age-exclude\fR, or relax \fBmin-release-age\fR or \fBbefore\fR. +.P Packages whose names match \fBmin-release-age-exclude\fR are exempt from this filter. .P This value is not exported to the environment for child processes. @@ -1586,7 +1593,9 @@ Defines behavior for replacing the registry host in a lockfile with the configur .P The default behavior is to replace package dist URLs from the default registry (https://registry.npmjs.org) to the configured registry. If set to "never", then use the registry value. If set to "always", then replace the registry host with the configured host every time. .P -You may also specify a bare hostname (e.g., "registry.npmjs.org"). +You may also specify a bare hostname (e.g., "registry.npmjs.org") to only replace URLs coming from that host. +.P +You may also specify a full URL including a path (e.g., "https://old-registry.example.com/npm/path"). In that case, resolved URLs whose host and path begin with that prefix will have the entire prefix replaced with the configured registry URL (host and path), without duplicating path segments. .SS "\fBsave\fR" .RS 0 .IP \(bu 4 @@ -1847,6 +1856,8 @@ Type: Boolean If \fBtrue\fR, turn the install-script policy from a warning into a hard error: any dependency with install scripts not covered by \fBallowScripts\fR will fail the install instead of running with a notice. .P Dependencies explicitly denied with \fBfalse\fR in \fBallowScripts\fR are always silently skipped; this setting only affects unreviewed entries. \fB--ignore-scripts\fR and \fB--dangerously-allow-all-scripts\fR both override this setting. +.P +Optional dependencies that cannot be installed on the current platform or engine (a non-matching \fBos\fR, \fBcpu\fR, or \fBlibc\fR) are not flagged, because their install scripts never run. .SS "\fBstrict-peer-deps\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man7/dependency-selectors.7 b/deps/npm/man/man7/dependency-selectors.7 index be698295b15fae..0a9ea65ac2a4f9 100644 --- a/deps/npm/man/man7/dependency-selectors.7 +++ b/deps/npm/man/man7/dependency-selectors.7 @@ -1,4 +1,4 @@ -.TH "SELECTORS" "7" "June 2026" "NPM@11.17.0" "" +.TH "SELECTORS" "7" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBSelectors\fR - Dependency Selector Syntax & Querying .SS "Description" diff --git a/deps/npm/man/man7/developers.7 b/deps/npm/man/man7/developers.7 index 0956c032d8f6c2..85cc7a5f794032 100644 --- a/deps/npm/man/man7/developers.7 +++ b/deps/npm/man/man7/developers.7 @@ -1,4 +1,4 @@ -.TH "DEVELOPERS" "7" "June 2026" "NPM@11.17.0" "" +.TH "DEVELOPERS" "7" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBDevelopers\fR - Developer guide .SS "Description" @@ -184,6 +184,23 @@ npm install ../my-package to install it locally into the node_modules folder in that other place. .P Then go into the node-repl, and try using require("my-thing") to bring in your module's main module. +.SS "Catching undeclared (\"phantom\") dependencies" +.P +Under the default hoisted \fBnode_modules\fR layout, your package can \fBimport\fR a dependency it never declared and still resolve it. A transitive dependency hoisted alongside it, or your workspace root's \fBnode_modules\fR, happens to satisfy the \fBimport\fR. That undeclared ("phantom") dependency passes your own build silently, then fails for anyone who installs your package on its own. +.P +We recommend developing your package under \fB\[rs]fBinstall-strategy=linked\[rs]fR\fR \fI\(la/using-npm/config#install-strategy\(ra\fR. The isolated layout only exposes a package's \fIdeclared\fR dependencies, so an \fBimport\fR of an undeclared package fails for you during development instead of resolving by accident, shipping broken, and failing for your users: +.P +.RS 2 +.nf +npm install --install-strategy=linked +npm test +.fi +.RE +.RS 0 +.P +\fBNote:\fR This doesn't catch every case. A dependency that's still satisfied at your build by a \fBdevDependency\fR or by your workspace root's \fBnode_modules\fR can resolve fine for you and still be missing for whoever installs your package. So treat it as one check, not a guarantee, alongside auditing the dependencies your published package actually uses. +.RE 0 + .SS "Create a User Account" .P Create a user with the adduser command. It works like this: diff --git a/deps/npm/man/man7/logging.7 b/deps/npm/man/man7/logging.7 index 3d037957e5566d..350348aa714eb8 100644 --- a/deps/npm/man/man7/logging.7 +++ b/deps/npm/man/man7/logging.7 @@ -1,4 +1,4 @@ -.TH "LOGGING" "7" "June 2026" "NPM@11.17.0" "" +.TH "LOGGING" "7" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBLogging\fR - Why, What & How we Log .SS "Description" diff --git a/deps/npm/man/man7/orgs.7 b/deps/npm/man/man7/orgs.7 index 3224946c994e53..bb6cad63c5113e 100644 --- a/deps/npm/man/man7/orgs.7 +++ b/deps/npm/man/man7/orgs.7 @@ -1,4 +1,4 @@ -.TH "ORGANIZATIONS" "7" "June 2026" "NPM@11.17.0" "" +.TH "ORGANIZATIONS" "7" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBOrganizations\fR - Working with teams & organizations .SS "Description" diff --git a/deps/npm/man/man7/package-spec.7 b/deps/npm/man/man7/package-spec.7 index 8c57645a9ca7fa..2ec37301d540ef 100644 --- a/deps/npm/man/man7/package-spec.7 +++ b/deps/npm/man/man7/package-spec.7 @@ -1,4 +1,4 @@ -.TH "SPEC" "7" "June 2026" "NPM@11.17.0" "" +.TH "SPEC" "7" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBspec\fR - Package name specifier .SS "Description" diff --git a/deps/npm/man/man7/registry.7 b/deps/npm/man/man7/registry.7 index 6fc1fa42503ec1..49f471fd2cc1e8 100644 --- a/deps/npm/man/man7/registry.7 +++ b/deps/npm/man/man7/registry.7 @@ -1,4 +1,4 @@ -.TH "REGISTRY" "7" "June 2026" "NPM@11.17.0" "" +.TH "REGISTRY" "7" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBRegistry\fR - The JavaScript Package Registry .SS "Description" diff --git a/deps/npm/man/man7/removal.7 b/deps/npm/man/man7/removal.7 index 63295bda59554e..de875cb8e0c922 100644 --- a/deps/npm/man/man7/removal.7 +++ b/deps/npm/man/man7/removal.7 @@ -1,4 +1,4 @@ -.TH "REMOVAL" "7" "June 2026" "NPM@11.17.0" "" +.TH "REMOVAL" "7" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBRemoval\fR - Cleaning the slate .SS "Synopsis" diff --git a/deps/npm/man/man7/scope.7 b/deps/npm/man/man7/scope.7 index 5d81873536a680..793031ca011065 100644 --- a/deps/npm/man/man7/scope.7 +++ b/deps/npm/man/man7/scope.7 @@ -1,4 +1,4 @@ -.TH "SCOPE" "7" "June 2026" "NPM@11.17.0" "" +.TH "SCOPE" "7" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBScope\fR - Scoped packages .SS "Description" diff --git a/deps/npm/man/man7/scripts.7 b/deps/npm/man/man7/scripts.7 index 6f104de691ad61..368e0fd18930fa 100644 --- a/deps/npm/man/man7/scripts.7 +++ b/deps/npm/man/man7/scripts.7 @@ -1,4 +1,4 @@ -.TH "SCRIPTS" "7" "June 2026" "NPM@11.17.0" "" +.TH "SCRIPTS" "7" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBScripts\fR - How npm handles the "scripts" field .SS "Description" diff --git a/deps/npm/man/man7/workspaces.7 b/deps/npm/man/man7/workspaces.7 index d68c1394c1c877..5dfa00e6492796 100644 --- a/deps/npm/man/man7/workspaces.7 +++ b/deps/npm/man/man7/workspaces.7 @@ -1,4 +1,4 @@ -.TH "WORKSPACES" "7" "June 2026" "NPM@11.17.0" "" +.TH "WORKSPACES" "7" "June 2026" "NPM@11.18.0" "" .SH "NAME" \fBWorkspaces\fR - Working with workspaces .SS "Description" diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js index 68527972b1fc39..63157b9a550de6 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js @@ -97,6 +97,7 @@ module.exports = cls => class IdealTreeBuilder extends cls { #loadFailures = new Set() #manifests = new Map() #mutateTree = false + #requestedTreeMutation = false // a map of each module in a peer set to the thing that depended on // that set of peers in the first place. Use a WeakMap so that we // don't hold onto references for nodes that are garbage collected. @@ -261,12 +262,13 @@ module.exports = cls => class IdealTreeBuilder extends cls { // set if we add anything, but also set here if we know we'll make // changes and thus have to maybe prune later. - this.#mutateTree = !!( + this.#requestedTreeMutation = !!( options.add || options.rm || update.all || update.names.length ) + this.#mutateTree = this.#requestedTreeMutation } // load the initial tree, either the virtualTree from a shrinkwrap, @@ -344,7 +346,9 @@ module.exports = cls => class IdealTreeBuilder extends cls { filter: node => node, visit: node => { for (const edge of node.edgesOut.values()) { - const skipPeerOptional = edge.type === 'peerOptional' && this.options.save === false + const skipPeerOptional = edge.type === 'peerOptional' && + this.options.save === false && + !this.#requestedTreeMutation if (!skipPeerOptional && (!edge.to || !edge.valid)) { this.#depsQueue.push(node) break // no need to continue the loop after the first hit @@ -579,6 +583,17 @@ module.exports = cls => class IdealTreeBuilder extends cls { // and leaving the user subject to getting it overwritten later anyway. async #queueVulnDependents (options) { for (const vuln of this.auditReport.values()) { + // A fix is available in-range but a release-age window blocks the patched + // version, so audit fix leaves this package at a vulnerable version. + if (vuln.fixBlockedByReleaseAge) { + const { version, before } = vuln.fixBlockedByReleaseAge + const cutoff = new Date(before).toISOString().slice(0, 10) + log.warn('audit', `A fix for ${vuln.name} is available (${vuln.name}@${version}) ` + + `but was published after the configured release-age cutoff (${cutoff}), so ` + + `${vuln.name} was left at a vulnerable version.\n` + + `To install it, add "${vuln.name}" to min-release-age-exclude, or relax ` + + 'min-release-age or before.') + } for (const node of vuln.nodes) { const bundler = node.getBundler() @@ -1036,9 +1051,16 @@ This is a one-time fix-up, please be patient... } const { from, valid, peerConflicted } = edgeIn if (!peerConflicted && !valid) { - if (this.#depsSeen.has(from) && this.options.save) { - // Re-queue already-processed nodes when a newly placed dep creates an invalid edge during npm install (save=true). - // This handles the case where a peerOptional dep was valid (missing) when the node was first processed, but becomes invalid when the dep is later placed by another path with a version that doesn't satisfy the peer spec. + if (this.#depsSeen.has(from) && + (this.options.save || + (this.options.save === false && this.#requestedTreeMutation))) { + // Re-queue already-processed nodes when a newly placed dep + // creates an invalid edge during npm install or another + // lockfile-mutating operation. This handles the case where a + // peerOptional dep was valid (missing) when the node was + // first processed, but becomes invalid when the dep is later + // placed by another path with a version that doesn't satisfy + // the peer spec. // See npm/cli#8726. this.#depsSeen.delete(from) this.#depsQueue.push(from) @@ -1249,11 +1271,16 @@ This is a one-time fix-up, please be patient... continue } - // If the edge has an error, there's a problem, unless it's peerOptional and we're not saving (e.g. npm ci), in which case we trust the lockfile and skip re-resolution. - // When saving (npm install), peerOptional invalid edges ARE treated as problems so the lockfile gets fixed. + // If the edge has an error, there's a problem, unless it's peerOptional + // and we're not saving or otherwise mutating (e.g. npm ci), in which + // case we trust the lockfile and skip re-resolution. When saving (npm + // install) or updating, peerOptional invalid edges ARE treated as + // problems so the lockfile gets fixed. // See npm/cli#8726. if (!edge.valid) { - if (edge.type !== 'peerOptional' || this.options.save !== false) { + if (edge.type !== 'peerOptional' || + this.options.save !== false || + this.#requestedTreeMutation) { problems.push(edge) } continue @@ -1568,6 +1595,10 @@ This is a one-time fix-up, please be patient... !link.target.parent && !link.target.fsParent || unseenLink) { + // Forward the link's overrides before its subtree resolves, so a root override reaches a transitive dep across the link boundary (npm/cli#9659). + if (link.overrides) { + link.target.updateOverridesEdgeInAdded(link.overrides) + } this.addTracker('idealTree', link.target.name, link.target.location) this.#depsQueue.push(link.target) } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js index a63f607ef6877a..a07c55e3f283c6 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js @@ -266,7 +266,9 @@ module.exports = cls => class IsolatedReifier extends cls { } // local `file:` deps (non-workspace fsChildren) should be treated as local dependencies, not external, so they get symlinked directly instead of being extracted into the store. - const isLocal = (n) => n.isWorkspace || node.fsChildren?.has(n) + // A file: dep surfaces as a Link edge whose resolved spec starts with file:; detect it from the edge so the target is treated as local even when it is absent from idealTree.fsChildren (a workspace consumer, or a target outside the repo root via npm link). + const fileLinkTargets = new Set(edges.filter(e => e.to?.isLink && e.to.resolved?.startsWith('file:')).map(e => e.to.target)) + const isLocal = (n) => n.isWorkspace || node.fsChildren?.has(n) || fileLinkTargets.has(n) const optionalDeps = edges.filter(edge => edge.optional).map(edge => edge.to.target) // Optional peers declared only in peerDependenciesMeta (e.g. `@types/react`) have no edge, so the materialization above misses them. diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-actual.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-actual.js index 2356227a5baa31..2158f6d32ae1aa 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-actual.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-actual.js @@ -1,6 +1,6 @@ // mix-in implementing the loadActual method -const { dirname, join, normalize, relative, resolve } = require('node:path') +const { dirname, join, normalize, relative, resolve, sep } = require('node:path') const PackageJson = require('@npmcli/package-json') const { readdirScoped } = require('@npmcli/fs') @@ -70,6 +70,7 @@ module.exports = cls => class ActualLoader extends cls { // only reset root flags if we're not re-rooting, // otherwise leave as-is calcDepFlags(tree, !options.root) + this.#repropagateOverrides() this.actualTree = treeCheck(tree) return this.actualTree }) @@ -141,6 +142,7 @@ module.exports = cls => class ActualLoader extends cls { root: this.#actualTree, }) await this[_setWorkspaces](this.#actualTree) + this.#linkActualWorkspaces() this.#transplant(root) return this.#actualTree @@ -173,6 +175,8 @@ module.exports = cls => class ActualLoader extends cls { await Promise.all(promises) } + this.#linkActualWorkspaces() + if (!ignoreMissing) { await this.#findMissingEdges() } @@ -211,6 +215,48 @@ module.exports = cls => class ActualLoader extends cls { return this.#actualTree } + // Under the linked (isolated) strategy, workspaces the root does not depend on are not symlinked into the root node_modules, so neither the on-disk scan nor the hidden lockfile gives the root's workspace edges a node_modules/ link to resolve to. + // Synthesize those links from the authoritative workspaces map so npm ls and npm query surface the workspaces, matching hoisted and the logical package-lock. + #linkActualWorkspaces () { + const root = this.#actualTree + if (this.options.installStrategy !== 'linked' || !root.workspaces) { + return + } + // Declared workspaces ARE symlinked at root node_modules under linked, so a missing link there is a real problem that must surface as UNMET. + // Only undeclared workspaces are intentionally absent from root node_modules and need a synthesized link so their root edges resolve. + const pkg = root.package + const declared = new Set(Object.keys(Object.assign({}, + pkg.dependencies, + pkg.devDependencies, + pkg.optionalDependencies, + pkg.peerDependencies + ))) + // index loaded workspace targets by both path and realpath, so a workspace reached through a symlinked dir still matches + const byLoc = new Map() + for (const node of root.fsChildren) { + byLoc.set(node.path, node) + byLoc.set(node.realpath, node) + } + for (const [name, path] of root.workspaces.entries()) { + // declared workspaces, and any name already a root child, resolve their edge without a synthesized link + if (declared.has(name) || root.children.has(name)) { + continue + } + const target = byLoc.get(path) + if (target) { + // eslint-disable-next-line no-new + new Link({ + name, + path: resolve(root.path, 'node_modules', name), + realpath: target.realpath, + target, + parent: root, + root, + }) + } + } + } + #transplant (root) { if (!root || root === this.#actualTree) { return @@ -263,6 +309,9 @@ module.exports = cls => class ActualLoader extends cls { parent, root, loadOverrides, + // A package physically located in the linked strategy's store is a transitive dependency, not a real tree top, so it must not load its devDependencies. + // Never flag the loaded root itself, even if its own path happens to sit under a .store directory. + isInStore: path !== this.path && real.includes(`${sep}node_modules${sep}.store${sep}`), } try { @@ -352,6 +401,18 @@ module.exports = cls => class ActualLoader extends cls { } } + // Re-forward overrides through links once all edges are resolved, since a Link may forward before its subtree resolves and miss a transitive match (npm/cli#9619, #9659). + #repropagateOverrides () { + if (!this.#actualTree.overrides) { + return + } + for (const node of this.#actualTree.inventory.values()) { + if (node.isLink && node.overrides) { + node.recalculateOutEdgesOverrides() + } + } + } + async #findMissingEdges () { // try to resolve any missing edges by walking up the directory tree, // checking for the package in each node_modules folder. stop at the @@ -368,9 +429,10 @@ module.exports = cls => class ActualLoader extends cls { const depPromises = [] for (const [name, edge] of node.edgesOut.entries()) { - const notMissing = !edge.missing && - !(edge.to && (edge.to.dummy || edge.to.parent !== node)) - if (notMissing) { + // An unresolved optional edge reports missing === false, so check the target directly. + // Otherwise an installed optional dep that lives only as a store sibling is never loaded. + const resolved = edge.to && !edge.to.dummy && edge.to.parent === node + if (resolved) { continue } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js index e70a2186c29713..a99d328f5d2947 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js @@ -11,7 +11,7 @@ const { depth: dfwalk } = require('treeverse') const { isNodeGypPackage, defaultGypInstallScript } = require('@npmcli/node-gyp') const { promiseRetry } = require('@gar/promise-retry') const { log, time } = require('proc-log') -const { resolve } = require('node:path') +const { resolve, delimiter } = require('node:path') const { isScriptAllowed } = require('../script-allowed.js') const boolEnv = b => b ? '1' : '' @@ -199,10 +199,21 @@ module.exports = cls => class Builder extends cls { const { package: { bin, scripts = {} } } = node.target const { preinstall, install, postinstall, prepare } = scripts const tests = { bin, preinstall, install, postinstall, prepare } + // A denied package (allowScripts resolves to `false`) still gets its + // bins linked; only its lifecycle scripts are skipped, matching + // --ignore-scripts (npm/cli#9681). --dangerously-allow-all-scripts + // bypasses the gate. + const scriptsDenied = + !this.options.dangerouslyAllowAllScripts && + isScriptAllowed(node, this.options.allowScripts) === false for (const [key, has] of Object.entries(tests)) { - if (has) { - this.#queues[key].push(node) + if (!has) { + continue } + if (key !== 'bin' && scriptsDenied) { + continue + } + this.#queues[key].push(node) } } timeEnd() @@ -226,18 +237,6 @@ module.exports = cls => class Builder extends cls { return } - // Phase 1 allowScripts gate: a `false` verdict from the policy matcher - // means the user explicitly denied install scripts for this node, so skip - // it. `true` and `null` (unreviewed) both fall through to the existing - // detection logic — unreviewed nodes still run their scripts in Phase 1 - // and are surfaced via the post-reify advisory warning. The global - // --ignore-scripts kill switch in #build() still takes precedence, and - // --dangerously-allow-all-scripts bypasses this gate entirely. - if (!this.options.dangerouslyAllowAllScripts && - isScriptAllowed(node, this.options.allowScripts) === false) { - return - } - if (this.#oldMeta === null) { const { root: { meta } } = node this.#oldMeta = meta && meta.loadedFromDisk && @@ -301,6 +300,7 @@ module.exports = cls => class Builder extends cls { await promiseCallLimit(queue.map(node => async () => { const { path, + name, integrity, resolved, optional, @@ -309,6 +309,7 @@ module.exports = cls => class Builder extends cls { devOptional, package: pkg, location, + isInStore, } = node.target // skip any that we know we'll be deleting @@ -330,6 +331,12 @@ module.exports = cls => class Builder extends cls { npm_package_dev_optional: boolEnv(devOptional && !dev && !optional), } + // In the linked strategy a store package's dependencies are symlinked siblings in its store node_modules. + // A separate bin invoked by the script (e.g. napi-postinstall) resolves modules from its own realpath in the store and cannot see those deps, so expose them via NODE_PATH. + if (isInStore) { + const storeNodeModules = resolve(path, ...name.split('/').map(() => '..')) + env.NODE_PATH = [storeNodeModules, process.env.NODE_PATH].filter(Boolean).join(delimiter) + } const runOpts = { event, path, diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js index c49f352cef1404..db5171ff7367b3 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js @@ -11,7 +11,7 @@ const { callLimit: promiseCallLimit } = require('promise-call-limit') const { depth: dfwalk } = require('treeverse') const { dirname, resolve, relative, join, sep } = require('node:path') const { log, time } = require('proc-log') -const { existsSync } = require('node:fs') +const { existsSync, realpathSync } = require('node:fs') const { lstat, mkdir, readdir, readlink, rm, symlink } = require('node:fs/promises') const { moveFile } = require('@npmcli/fs') const { subset, intersects } = require('semver') @@ -26,7 +26,8 @@ const optionalSet = require('../optional-set.js') const relpath = require('../relpath.js') const retirePath = require('../retire-path.js') const treeCheck = require('../tree-check.js') -const { defaultLockfileVersion } = require('../shrinkwrap.js') +const Shrinkwrap = require('../shrinkwrap.js') +const { defaultLockfileVersion } = Shrinkwrap const { saveTypeMap, hasSubKey } = require('../add-rm-pkg-deps.js') const { IsolatedNode, IsolatedLink } = require('../isolated-classes.js') @@ -77,6 +78,9 @@ module.exports = cls => class Reifier extends cls { #sparseTreeDirs = new Set() #sparseTreeRoots = new Set() #linkedActualForDiff = null + // Under the linked strategy the audit runs against this non-isolated ideal tree. + // The isolated tree's inventory has no queryable indexes and its edges route through symlinks, so auditing it reports no vulnerabilities. + #linkedIdealForAudit = null constructor (options) { super(options) @@ -86,7 +90,9 @@ module.exports = cls => class Reifier extends cls { // public method async reify (options = {}) { - const linked = (options.installStrategy || this.options.installStrategy) === 'linked' + // Global installs are normalized to the shallow strategy in the constructor; honor that here so a per-call installStrategy:'linked' can't re-engage the unsupported linked path. + const linked = !this.options.global && + (options.installStrategy || this.options.installStrategy) === 'linked' if (this.options.packageLockOnly && this.options.global) { const er = new Error('cannot generate lockfile for global packages') @@ -112,32 +118,50 @@ module.exports = cls => class Reifier extends cls { await this[_loadTrees](options) const oldTree = this.idealTree + // Kept to serialize the hidden lockfile from the on-disk .store/symlink layout. + let isolatedTree = null if (linked) { // swap out the tree with the isolated tree // this is currently technical debt which will be resolved in a refactor // of Node/Link trees - log.warn('reify', 'The "linked" install strategy is EXPERIMENTAL and may contain bugs.') this.idealTree = await this.createIsolatedTree() + isolatedTree = this.idealTree if (this.actualTree) { this.#linkedActualForDiff = this.#buildLinkedActualForDiff( this.idealTree, this.actualTree ) } + // Keep the non-isolated tree so the quick audit can run against it. + this.#linkedIdealForAudit = oldTree } - await this[_diffTrees]() - await this.#reifyPackages() - if (linked) { - // The sweep mutates node_modules on disk, so skip it for dry runs and lockfile-only installs (those modes also short-circuit #reifyPackages). - // The sweep itself scopes to in-filter workspaces when a filter is active, so it's safe to run for filtered installs too. - if (!this.options.dryRun && !this.options.packageLockOnly) { - await this.#cleanOrphanedStoreEntries() + try { + await this[_diffTrees]() + await this.#reifyPackages() + if (linked) { + // The sweep mutates node_modules on disk, so skip it for dry runs and lockfile-only installs (those modes also short-circuit #reifyPackages). + // The sweep itself scopes to in-filter workspaces when a filter is active, so it's safe to run for filtered installs too. + if (!this.options.dryRun && !this.options.packageLockOnly) { + await this.#cleanOrphanedStoreEntries() + } + } else if (!this.options.dryRun && !this.options.packageLockOnly) { + // The .store directory is exclusively a linked-strategy artifact, and load-actual ignores dot-directories, so the diff never sees it. + // Remove it here when switching away from linked so it does not linger under hoisted/nested. + // Only do this for a full-project install: a workspace-filtered or --workspaces=false install may leave out-of-scope workspaces with links still pointing into the store. + const filtered = this.options.workspaces.length > 0 || !this.options.workspacesEnabled + if (!filtered) { + await this.#removeStaleStoreDir() + } + } + } finally { + // Restore the non-isolated tree so the lockfile is preserved and a reused Arborist never sees the isolated tree, even if reify throws. + if (linked) { + this.idealTree = oldTree } - // swap back in the idealTree - // so that the lockfile is preserved - this.idealTree = oldTree + // The quick audit has captured its tree synchronously by now, so drop the stashed references even on throw. + this.#linkedIdealForAudit = null + this.#linkedActualForDiff = null } await this[_saveIdealTree](options) - this.#linkedActualForDiff = null // clean inert for (const node of this.idealTree.inventory.values()) { if (node.inert) { @@ -230,17 +254,24 @@ module.exports = cls => class Reifier extends cls { calcDepFlags(this.idealTree) } - // save the ideal's meta as a hidden lockfile after we actualize it - this.idealTree.meta.filename = - this.idealTree.realpath + '/node_modules/.package-lock.json' - this.idealTree.meta.hiddenLockfile = true - this.idealTree.meta.lockfileVersion = defaultLockfileVersion + // save the ideal's meta as a hidden lockfile after we actualize it. + // Under linked the logical tree is the hoisted layout, so the hidden lockfile is serialized from the isolated tree instead. + if (!linked) { + this.idealTree.meta.filename = + this.idealTree.realpath + '/node_modules/.package-lock.json' + this.idealTree.meta.hiddenLockfile = true + this.idealTree.meta.lockfileVersion = defaultLockfileVersion + } this.actualTree = this.idealTree this.idealTree = null if (!this.options.global && !this.options.dryRun) { - await this.actualTree.meta.save() + if (linked) { + await this.#saveLinkedHiddenLockfile(isolatedTree) + } else { + await this.actualTree.meta.save() + } const ignoreScripts = !!this.options.ignoreScripts // if we aren't doing a dry run or ignoring scripts and we actually made changes to the dep // tree, then run the dependencies scripts @@ -452,7 +483,10 @@ module.exports = cls => class Reifier extends cls { } if (includeRootDeps) { // add all non-workspace nodes to filterNodes - for (const tree of [this.idealTree, this.actualTree]) { + // Skip the actual tree under the linked diff wrapper: its edge targets have root===actualTree, not the wrapper, which trips Diff.calculate's filterNode guard. + // The ideal-side targets alone scope the diff. + const trees = this.#linkedActualForDiff ? [this.idealTree] : [this.idealTree, this.actualTree] + for (const tree of trees) { for (const { type, to } of tree.edgesOut.values()) { if (type !== 'workspace' && to) { filterNodes.push(to) @@ -823,6 +857,47 @@ module.exports = cls => class Reifier extends cls { return join(filePath) } + // Serialize the hidden lockfile from the isolated tree, which mirrors the on-disk .store/symlink layout. + // Its children are every materialized node_modules entry: store package dirs and all symlinks. + async #saveLinkedHiddenLockfile (isolatedTree) { + const path = isolatedTree.realpath + const meta = new Shrinkwrap({ + path, + hiddenLockfile: true, + lockfileVersion: defaultLockfileVersion, + resolveOptions: this.options, + }) + meta.reset() + meta.filename = resolve(path, 'node_modules/.package-lock.json') + const storeRe = /^(.*\/\.store\/.+?)\/node_modules\// + const containers = new Set() + const nodes = new Set() + for (const node of isolatedTree.children.values()) { + // Tree-only undeclared workspace self-links aren't on disk. + if (node.isUndeclaredWorkspaceLink) { + continue + } + nodes.add(node) + // Record the enclosing .store/ dir so loadVirtual can resolve a store package's sibling deps. + // node.location uses the platform separator; lockfile keys are posix. + const m = node.location.replace(/\\/g, '/').match(storeRe) + if (m) { + containers.add(m[1]) + } + } + // Workspace dirs hold their own dep symlinks; record them so the cache can validate those subtrees. + for (const ws of isolatedTree.fsChildren) { + nodes.add(ws) + } + for (const node of nodes) { + meta.add(node) + } + for (const loc of containers) { + meta.data.packages[loc] = {} + } + await meta.save() + } + // Build a flat actual tree wrapper for linked installs so the diff can correctly match store entries that already exist on disk. // The proxy tree from createIsolatedTree() is flat (all children on root), but loadActual() produces a nested tree where store entries are deep link targets. // This wrapper surfaces them at the root level for comparison. @@ -841,6 +916,10 @@ module.exports = cls => class Reifier extends cls { if (child.isLink && child.resolved?.startsWith('file:.store/') && !existsSync(child.realpath)) { continue } + // Skip a link whose on-disk target is a valid-but-wrong store key (e.g. an interrupted update), so the diff repoints it via ADD. + if (child.isLink && this.#linkTargetMismatch(child)) { + continue + } let entry if (child.isLink) { entry = new IsolatedLink(child) @@ -880,6 +959,12 @@ module.exports = cls => class Reifier extends cls { return wrapper } + // True when the link's on-disk target resolves to a different path than its ideal target. + // The caller only invokes this once both paths exist, so realpathSync won't throw. + #linkTargetMismatch (child) { + return realpathSync(child.path) !== realpathSync(child.realpath) + } + // When extracting a registry-resolved package, the spec we hand to pacote is name@URL. // pacote re-parses that with npa and gets spec.type === 'remote', so without an override the allow-remote gate would fire on every registry tarball (both =none and =root mis-fire). // Returns true only when we are confident this is a registry-mediated install. @@ -888,12 +973,14 @@ module.exports = cls => class Reifier extends cls { return false } try { - const resolved = new URL(node.resolved) + // Match the effective fetch URL, not the raw lockfile value. + // #registryResolved applies replace-registry-host, rewriting a public-registry pin to the configured proxy/mirror so it matches. + const resolvedURL = new URL(this.#registryResolved(node.resolved)) // pickRegistry only consults spec.scope, so a bare-name (tag) parse is sufficient and avoids a node.version dependency. const registry = new URL(pickRegistry(npa(node.name), this.options)) const registryPath = registry.pathname.replace(/\/?$/, '/') - return resolved.origin === registry.origin && - (registryPath === '/' || resolved.pathname.startsWith(registryPath)) + return resolvedURL.origin === registry.origin && + (registryPath === '/' || resolvedURL.pathname.startsWith(registryPath)) } catch { return false } @@ -910,36 +997,42 @@ module.exports = cls => class Reifier extends cls { // the default reg as the magical animal that it has been. try { const resolvedURL = hgi.parseUrl(resolved) + const registryURL = new URL(this.registry) + const registryPath = registryURL.pathname.replace(/\/$/, '') - if ((this.options.replaceRegistryHost === resolvedURL.hostname) || - this.options.replaceRegistryHost === 'always') { - const registryURL = new URL(this.registry) + let matchURL = null + try { + matchURL = new URL(this.options.replaceRegistryHost) + } catch { + // keep matchURL null + } - // Replace the host with the registry host while keeping the path intact - resolvedURL.hostname = registryURL.hostname - resolvedURL.port = registryURL.port - resolvedURL.protocol = registryURL.protocol + const matchHost = matchURL?.hostname ?? this.options.replaceRegistryHost + const matchPath = matchURL?.pathname.replace(/\/$/, '') ?? null + const hasPathPrefix = (pathname, prefix) => + pathname === prefix || pathname.startsWith(`${prefix}/`) - // Make sure we don't double-include the path if it's already there - const registryPath = registryURL.pathname.replace(/\/$/, '') + const hostMatches = this.options.replaceRegistryHost === 'always' || matchHost === resolvedURL.hostname + const pathMatches = !matchPath || hasPathPrefix(resolvedURL.pathname, matchPath) - if (registryPath && registryPath !== '/') { - // Check if the resolved pathname already starts with the registry path - // We need to ensure it's a proper path prefix, not just a string prefix - // e.g., registry path '/npm' should not match '/npm-run-path' - const hasRegistryPath = resolvedURL.pathname === registryPath || - resolvedURL.pathname.startsWith(registryPath + '/') + if (!hostMatches || !pathMatches) { + return resolved + } - if (!hasRegistryPath) { - // Since hostname is changed, we need to ensure the registry path is included - resolvedURL.pathname = registryPath + resolvedURL.pathname - } - } + resolvedURL.protocol = registryURL.protocol + resolvedURL.hostname = registryURL.hostname + resolvedURL.port = registryURL.port - return resolvedURL.toString() + if (matchPath) { + // full-URL prefix: swap old path prefix for the registry path + resolvedURL.pathname = registryPath + resolvedURL.pathname.slice(matchPath.length) + } else if (registryPath && !hasPathPrefix(resolvedURL.pathname, registryPath)) { + // host-only: prepend registry path if not already present + resolvedURL.pathname = registryPath + resolvedURL.pathname } - return resolved - } catch (e) { + + return resolvedURL.toString() + } catch { // if we could not parse the url at all then returning nothing // here means it will get removed from the tree in the next step return undefined @@ -1150,7 +1243,8 @@ module.exports = cls => class Reifier extends cls { // with the reification, and be resolved at a later time. const timeEnd = time.start('reify:audit') const options = { ...this.options } - const tree = this.idealTree + // Under the linked strategy idealTree is the isolated tree, which the audit cannot traverse; audit the non-isolated tree instead. + const tree = this.#linkedIdealForAudit || this.idealTree // if we're operating on a workspace, only audit the workspace deps if (this.options.workspaces.length) { @@ -1357,6 +1451,18 @@ module.exports = cls => class Reifier extends cls { timeEnd() } + // Remove the root .store left behind by a previous linked install when reifying under a non-linked strategy. + async #removeStaleStoreDir () { + const storeDir = resolve(this.path, 'node_modules', '.store') + if (!existsSync(storeDir)) { + return + } + log.silly('reify', 'removing stale .store from a previous linked install') + await rm(storeDir, { recursive: true, force: true }) + .catch(/* istanbul ignore next -- rm with force rarely fails */ + er => log.warn('cleanup', 'Failed to remove stale .store directory', er)) + } + // After a linked install, scan node_modules/.store/ and remove any directories that are not referenced by the current ideal tree. // Store entries become orphaned when dependencies are updated or removed, because the diff never sees the old store keys. // Then sweep the top-level node_modules/ for orphaned symlinks (e.g. an uninstalled dep whose store entry was just removed) so we don't leave dangling links. @@ -1395,6 +1501,8 @@ module.exports = cls => class Reifier extends cls { // Locations are normalized to forward slashes here because IsolatedNode/IsolatedLink locations are built with path.join, which uses backslashes on Windows. const validKeys = new Set() const nmDirs = new Map() + // Valid bin shim names per node_modules dir, collected from each top-level entry's package.bin so the .bin sweep keeps only shims a still-installed package provides. + const binsByDir = new Map() const NM_PREFIX = 'node_modules/' const STORE_MARKER = '/.store/' for (const child of this.idealTree.children.values()) { @@ -1407,13 +1515,11 @@ module.exports = cls => class Reifier extends cls { validKeys.add(key) continue } - if (!child.isLink) { - continue - } // Tree-only Links never exist on disk; skipping them lets the sweep remove any stale self-link left by an older npm version. - if (child.isUndeclaredWorkspaceLink) { + if (child.isLink && child.isUndeclaredWorkspaceLink) { continue } + // Real top-level Nodes (e.g. the root's bundled deps) fall through here too, so they are recorded as valid and never swept as stale. const nmIdx = loc.lastIndexOf(NM_PREFIX) if (nmIdx === -1 || loc.includes(STORE_MARKER)) { continue @@ -1434,6 +1540,19 @@ module.exports = cls => class Reifier extends cls { nmDirs.set(dir, set) } set.add(entry) + + // package.bin is normalized to an object keyed by bin name; shim names are unscoped even for scoped packages. + const bin = child.package?.bin + if (bin && typeof bin === 'object') { + let binSet = binsByDir.get(dir) + if (!binSet) { + binSet = new Set() + binsByDir.set(dir, binSet) + } + for (const bn of Object.keys(bin)) { + binSet.add(bn) + } + } } // Determine which node_modules directories to sweep. @@ -1507,14 +1626,47 @@ module.exports = cls => class Reifier extends cls { for (const [dir, valid] of nmDirs) { await this.#cleanOrphanedTopLevelLinks(dir, valid) + await this.#cleanStaleBinLinks(dir, binsByDir.get(dir)) } } + // Remove stale bin shims left in node_modules/.bin after an uninstall under linked, where the diff never emits an action to drop them. + // A shim is stale when no still-linked package provides its name, or when it is a dangling symlink; matching by name handles both POSIX symlinks and Windows .cmd/.ps1 shims. + async #cleanStaleBinLinks (nmDir, validBins = new Set()) { + const binDir = resolve(nmDir, '.bin') + let names + try { + names = await readdir(binDir) + } catch { + return + } + + const stale = names.filter(name => { + const base = name.replace(/\.(cmd|ps1)$/, '') + return !validBins.has(base) || !existsSync(resolve(binDir, name)) + }) + + if (!stale.length) { + return + } + + log.silly('reify', 'cleaning stale bin links', stale) + await promiseAllRejectLate( + stale.map(name => + rm(resolve(binDir, name), { force: true }) + .catch(/* istanbul ignore next -- rm with force rarely fails */ + er => log.warn('cleanup', `Failed to remove stale bin link ${name}`, er)) + ) + ) + } + // Remove node_modules/ entries that aren't represented in the ideal tree. // Run for the project root and each workspace's node_modules. // The linked diff path can't see these because #buildLinkedActualForDiff derives the actual tree from the ideal, so removed deps are never compared. - // Only symlinks whose target resolves inside the project root are removed — that covers store links (node_modules/.store/...) and workspace self-links (e.g. node_modules/ -> ../packages/) that npm itself created. - // Symlinks pointing outside the project (e.g. `npm link foo` without --save targeting the global prefix, or hand-made `ln -s` to an external path) and real directories are preserved. + // Two kinds of stale entry are removed: + // - symlinks whose target resolves inside the project root — store links (node_modules/.store/...) and workspace self-links (e.g. node_modules/ -> ../packages/) that npm itself created. + // - real package directories — hoisted-layout deps left behind when switching from the hoisted strategy to linked, where every valid top-level entry is a symlink. + // Symlinks pointing outside the project (e.g. `npm link foo` without --save targeting the global prefix, or hand-made `ln -s` to an external path) and non-package real directories are preserved. async #cleanOrphanedTopLevelLinks (nmDir, validTopLevel) { const projectPrefix = resolve(this.path) + sep let dirents @@ -1535,7 +1687,15 @@ module.exports = cls => class Reifier extends cls { return resolve(dirname(linkPath), target).startsWith(projectPrefix) } + // A real directory is stale only when it is an actual package (has a package.json), so unrelated user directories are never touched. + const isStaleRealPkg = (dirent, entPath) => + dirent.isDirectory() && existsSync(resolve(entPath, 'package.json')) + + const isOrphan = async (dirent, entPath) => + (dirent.isSymbolicLink() && await isOurOrphan(entPath)) || isStaleRealPkg(dirent, entPath) + const orphaned = [] + const scopes = new Set() for (const ent of dirents) { // skip npm-managed entries (.bin, .store, .package-lock.json, etc) if (ent.name.startsWith('.')) { @@ -1551,11 +1711,12 @@ module.exports = cls => class Reifier extends cls { } for (const pkgEnt of scoped) { const key = `${ent.name}${sep}${pkgEnt.name}` - if (!validTopLevel.has(key) && pkgEnt.isSymbolicLink() && await isOurOrphan(resolve(nmDir, key))) { + if (!validTopLevel.has(key) && await isOrphan(pkgEnt, resolve(nmDir, key))) { orphaned.push(key) + scopes.add(ent.name) } } - } else if (!validTopLevel.has(ent.name) && ent.isSymbolicLink() && await isOurOrphan(resolve(nmDir, ent.name))) { + } else if (!validTopLevel.has(ent.name) && await isOrphan(ent, resolve(nmDir, ent.name))) { orphaned.push(ent.name) } } @@ -1564,14 +1725,29 @@ module.exports = cls => class Reifier extends cls { return } - log.silly('reify', 'cleaning orphaned top-level links', orphaned) + log.silly('reify', 'cleaning orphaned top-level entries', orphaned) await promiseAllRejectLate( orphaned.map(name => rm(resolve(nmDir, name), { recursive: true, force: true }) .catch(/* istanbul ignore next -- rm with force rarely fails */ - er => log.warn('cleanup', `Failed to remove orphaned link ${name}`, er)) + er => log.warn('cleanup', `Failed to remove orphaned entry ${name}`, er)) ) ) + + // Removing the last package under a scope leaves an empty @scope directory behind, so prune any scope directory that is now empty. + await promiseAllRejectLate( + [...scopes].map(async scope => { + const scopeDir = resolve(nmDir, scope) + try { + const remaining = await readdir(scopeDir) + if (!remaining.length) { + await rm(scopeDir, { recursive: true, force: true }) + } + } catch { + /* istanbul ignore next -- readdir of a scope dir we just listed should not fail */ + } + }) + ) } // last but not least, we save the ideal tree metadata to the package-lock diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/audit-report.js b/deps/npm/node_modules/@npmcli/arborist/lib/audit-report.js index 3e74e100b6c537..1c3e15dee1924c 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/audit-report.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/audit-report.js @@ -6,6 +6,7 @@ const pickManifest = require('npm-pick-manifest') const Vuln = require('./vuln.js') const Calculator = require('@npmcli/metavuln-calculator') +const { isReleaseAgeExcluded } = require('./release-age-exclude.js') const { log, time } = require('proc-log') @@ -151,11 +152,6 @@ class AuditReport extends Map { continue } - // we will have loaded the source already if this is a metavuln - if (advisory.type === 'metavuln') { - vuln.addVia(this.get(advisory.dependency)) - } - // already marked this one, no need to do it again if (vuln.nodes.has(node)) { continue @@ -173,6 +169,11 @@ class AuditReport extends Map { // depends on root. this.topVulns.set(vuln.name, vuln) vuln.topNodes.add(dep) + } else { + // An in-range fix exists, but a `min-release-age`/`before` + // window may put the patched version out of reach, leaving the + // vulnerable version installed. + vuln.fixBlockedByReleaseAge = this.#fixBlockedByReleaseAge(vuln, spec) } } else { // calculate a metavuln, if necessary @@ -213,6 +214,17 @@ class AuditReport extends Map { } } + // post-loop reconciliation: establish all via links + // done here to ensure all vulns exist, avoid redundant setter triggers, + // and correctly handle multiple paths and omission cleanups. + for (const vuln of this.values()) { + for (const advisory of vuln.advisories) { + if (advisory.type === 'metavuln') { + vuln.addVia(this.get(advisory.dependency)) + } + } + } + timeEnd() } @@ -251,6 +263,53 @@ class AuditReport extends Map { } } + // A fix that `#fixAvailable` reports as installable in-range can still be + // unreachable when a release-age window (`before` / `min-release-age`) is set, + // because the patched version was published after the cutoff. `npm audit fix` + // then resolves back to a version that is still vulnerable, so detect that + // here and let callers warn about it. Only meaningful when an in-range fix + // exists (fixAvailable === true). Returns the blocked fix as + // `{ version, before }`, or `false` when nothing is blocked. + #fixBlockedByReleaseAge (vuln, spec) { + const { before, minReleaseAgeExclude } = this.options + // No window, or this package is explicitly exempt from it. + if (!before || isReleaseAgeExcluded(vuln.name, minReleaseAgeExclude)) { + return false + } + + // For `npm:` aliases the fix resolves against the alias target, so feed + // pickManifest the underlying range rather than the alias spec (which it + // rejects). Mirrors `#fixAvailable`. + const specObj = npa(spec) + if (specObj.subSpec) { + spec = specObj.subSpec.rawSpec + } + + // The version that would be installed if the window were lifted. + const { version } = pickManifest(vuln.packument, spec, { + ...this.options, + before: null, + avoid: vuln.range, + }) + + // What resolution can actually reach within the window. This mirrors how + // `build-ideal-tree` re-resolves the edge (non-strict avoid + `before`). + let windowed + try { + windowed = pickManifest(vuln.packument, spec, { + ...this.options, + avoid: vuln.range, + }) + } catch { + // Nothing is old enough to install at all: the fix is blocked. + return { version, before } + } + + // `_shouldAvoid` means the best version available within the window is still + // in the vulnerable range, so the only non-vulnerable fix is too new. + return windowed._shouldAvoid ? { version, before } : false + } + set () { throw new Error('do not call AuditReport.set() directly') } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/calc-dep-flags.js b/deps/npm/node_modules/@npmcli/arborist/lib/calc-dep-flags.js index 5f2484858094dc..965127f5ac9dd9 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/calc-dep-flags.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/calc-dep-flags.js @@ -35,12 +35,32 @@ const calcDepFlags = (tree, resetRoot = true) => { if (node.target == null) { continue } - node.target.dev = node.dev - node.target.optional = node.optional - node.target.devOptional = node.devOptional - node.target.peer = node.peer - node.target.extraneous = node.extraneous - queue.push(node.target) + // Only unset flags, matching the edge walk below, so multiple links to one target can't clobber a correct value. + let changed = false + if (node.target.dev && !node.dev) { + node.target.dev = false + changed = true + } + if (node.target.optional && !node.optional) { + node.target.optional = false + changed = true + } + if (node.target.devOptional && !node.devOptional) { + node.target.devOptional = false + changed = true + } + if (node.target.peer && !node.peer) { + node.target.peer = false + changed = true + } + if (node.target.extraneous && !node.extraneous) { + node.target.extraneous = false + changed = true + } + // queue target on first visit so its deps are walked + if (changed || !seen.has(node.target)) { + queue.push(node.target) + } continue } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/isolated-classes.js b/deps/npm/node_modules/@npmcli/arborist/lib/isolated-classes.js index 3a2ade64bbb3e8..fc119119664d98 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/isolated-classes.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/isolated-classes.js @@ -2,13 +2,6 @@ const CaseInsensitiveMap = require('./case-insensitive-map.js') const { resolve } = require('node:path') -// fake lib/inventory.js -class IsolatedInventory extends Map { - query () { - return [] - } -} - // fake lib/node.js class IsolatedNode { binPaths = [] @@ -18,7 +11,7 @@ class IsolatedNode { fsChildren = new Set() hasShrinkwrap = false integrity = null - inventory = new IsolatedInventory() + inventory = new Map() isInStore = false inBundle = false isRegistryDependency = false diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/link.js b/deps/npm/node_modules/@npmcli/arborist/lib/link.js index 3824dc81ffb3cb..89f993bb169004 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/link.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/link.js @@ -109,21 +109,12 @@ class Link extends Node { // so this is a no-op [_loadDeps] () {} - // When a Link receives overrides (via edgesIn), forward them to the target node which holds the actual edgesOut — but only when the OverrideSet has at least one rule that names a dep the target actually depends on. - // Without this scope, the link forwards a generic ancestor OverrideSet that has no real effect on the target's edges, but still flips the target to "has overrides", which changes downstream `canReplaceWith` / placement decisions and causes `npm ci` to re-resolve lockfile-pinned edges from the registry. - // See npm/cli#9357. + // Forward overrides to the target only when a rule names a dep it needs, directly or transitively (npm/cli#9357, #9619). recalculateOutEdgesOverrides () { if (!this.target || !this.overrides) { return } - let hasMatchingRule = false - for (const rule of this.overrides.ruleset.values()) { - if (this.target.edgesOut.has(rule.name)) { - hasMatchingRule = true - break - } - } - if (!hasMatchingRule) { + if (!overrideMatchesSubtree(this.overrides, this.target)) { return } this.target.updateOverridesEdgeInAdded(this.overrides) @@ -143,4 +134,29 @@ class Link extends Node { } } +// True when an override rule applies to an edge reachable from the target at any depth. +// getEdgeRule matches on name and spec, returning the set itself when nothing applies, so a non-applicable version-qualified rule doesn't flip an intermediate node to "has overrides" (npm/cli#9357). +// Not a method: runs from the Node super-constructor, before subclass private methods exist. +const overrideMatchesSubtree = (overrides, target) => { + const seen = new Set() + const stack = [target] + while (stack.length) { + const node = stack.pop() + const resolved = node.isLink ? node.target : node + if (seen.has(resolved)) { + continue + } + seen.add(resolved) + for (const edge of resolved.edgesOut.values()) { + if (overrides.getEdgeRule(edge).name === edge.name) { + return true + } + if (edge.to) { + stack.push(edge.to) + } + } + } + return false +} + module.exports = Link diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/node.js b/deps/npm/node_modules/@npmcli/arborist/lib/node.js index 451ede1e52cbf6..87b0ac41740bd6 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/node.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/node.js @@ -927,7 +927,8 @@ class Node { isTop: srcTop, path: srcPath, } = sourceReference || {} - const thisDev = isTop && !globalTop && path + // A package in the linked strategy's .store is a transitive dependency that is structurally a tree top, but its devDependencies are never installed or required, so they must not be loaded. + const thisDev = isTop && !globalTop && path && !this.isInStore const srcDev = !sourceReference || srcTop && !srcGlobalTop && srcPath if (thisDev && srcDev) { this.#loadDepType(this.package.devDependencies, 'dev', ad) diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/query-selector-all.js b/deps/npm/node_modules/@npmcli/arborist/lib/query-selector-all.js index 3a6c15139d40bd..05faa551f76ee8 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/query-selector-all.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/query-selector-all.js @@ -798,7 +798,8 @@ const hasParent = (node, compareNodes) => { // Only match if the node has a link whose parent is the compareNode. Without this check, nodes deep in the store (linked strategy) would incorrectly match as children of root via their fsParent chain. if (node.isTop && (node.resolveParent === compareNode)) { for (const link of node.linksIn) { - if (link.parent === compareNode) { + // A store-backing node (linked strategy) is reached through its logical Link, which matches via edgesIn below, so the store node itself is never a direct child. + if (link.parent === compareNode && !node.isInStore) { return true } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/script-allowed.js b/deps/npm/node_modules/@npmcli/arborist/lib/script-allowed.js index 89e24339791f1e..8c9b3fe118a8ed 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/script-allowed.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/script-allowed.js @@ -43,7 +43,9 @@ const isScriptAllowed = (node, policy) => { let anyDeny = false for (const [key, value] of Object.entries(policy)) { - if (!matches(node, key)) { + // Pass deny intent so matchRegistry can fail closed on an unverifiable + // version: a deny still blocks, an allow stays refused. + if (!matches(node, key, value === false)) { continue } if (value === false) { @@ -66,7 +68,7 @@ const isScriptAllowed = (node, policy) => { return null } -const matches = (node, key) => { +const matches = (node, key, failClosed) => { let parsed try { parsed = npa(key) @@ -78,7 +80,7 @@ const matches = (node, key) => { case 'tag': case 'range': case 'version': - return matchRegistry(node, parsed) + return matchRegistry(node, parsed, failClosed) case 'git': return matchGit(node, parsed) case 'file': @@ -132,7 +134,7 @@ const resolvedSourceSpecs = (node) => { return specs } -const matchRegistry = (node, parsed) => { +const matchRegistry = (node, parsed, failClosed) => { // If this node is not a registry dep, refuse the match. A registry-style // key (`pkg`, `pkg@1`, `pkg@1 || 2`) must not match a tarball or git node // even if their names happen to coincide. @@ -168,9 +170,14 @@ const matchRegistry = (node, parsed) => { if (parsed.fetchSpec === '*' || parsed.rawSpec === '' || parsed.rawSpec === '*') { return true } - if (!trusted.version || !isExactVersionDisjunction(parsed.fetchSpec)) { + if (!isExactVersionDisjunction(parsed.fetchSpec)) { return false } + // Unverifiable version (omit-lockfile-registry-resolved): a deny blocks, + // an allow is refused. + if (!trusted.version) { + return failClosed + } return semver.satisfies(trusted.version, parsed.fetchSpec, { loose: true }) } @@ -178,6 +185,10 @@ const matchRegistry = (node, parsed) => { /* istanbul ignore else: parsed.type at this point is always 'version'; the istanbul-ignored fallback below handles the impossible case. */ if (parsed.type === 'version') { + // Unverifiable version: a deny blocks, an allow is refused. + if (!trusted.version) { + return failClosed + } return trusted.version === parsed.fetchSpec } @@ -366,6 +377,7 @@ const trustedDisplay = (node) => { module.exports = isScriptAllowed module.exports.isScriptAllowed = isScriptAllowed +module.exports.matches = matches module.exports.isExactVersionDisjunction = isExactVersionDisjunction module.exports.getTrustedRegistryIdentity = getTrustedRegistryIdentity module.exports.resolvedSourceSpecs = resolvedSourceSpecs diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/shrinkwrap.js b/deps/npm/node_modules/@npmcli/arborist/lib/shrinkwrap.js index cf27bcf4ac726e..03cc86edbd4e92 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/shrinkwrap.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/shrinkwrap.js @@ -172,6 +172,35 @@ const assertNoNewer = async (path, data, lockTime, dir, seen) => { return } + // The walk above can't reach two linked-strategy layouts: a store package's sibling deps under .store//node_modules (.store is a skipped dot-dir), and an undeclared workspace not symlinked into root node_modules. Walk those dirs, derived from the lockfile entries. + // A dir reachable through a link entry is skipped: it was already reached (or, if the symlink is stale, correctly stays unseen so the lockfile is rejected). This keeps the hoisted strategy's stale-symlink detection intact, since there every workspace is a link target. + const linkTargets = new Set() + for (const loc in data.packages) { + const { link, resolved } = data.packages[loc] + if (link && resolved) { + linkTargets.add(resolved.replace(/\\/g, '/')) + } + } + const extraDirs = new Set() + for (const loc in data.packages) { + const store = loc.match(/^(.*\/\.store\/.+?)\/node_modules\//) + if (store) { + // .store/ is never walked but has no entry, so mark it seen. + seen.add(store[1]) + extraDirs.add(`${store[1]}/node_modules`) + continue + } + // A workspace/fsChild dir outside node_modules, e.g. packages/a. + const i = loc.indexOf('/node_modules/') + const root = i === -1 ? loc : loc.slice(0, i) + if (root && !/(^|\/)node_modules(\/|$)/.test(root) && !linkTargets.has(root)) { + extraDirs.add(root) + } + } + for (const rel of extraDirs) { + await assertNoNewer(path, data, lockTime, resolve(path, rel), seen) + } + // assert that all the entries in the lockfile were seen for (const loc in data.packages) { if (!seen.has(loc)) { diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/unreviewed-scripts.js b/deps/npm/node_modules/@npmcli/arborist/lib/unreviewed-scripts.js index 587d06bf8fe56b..f7bed387845ec0 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/unreviewed-scripts.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/unreviewed-scripts.js @@ -50,6 +50,13 @@ const collectUnreviewedScripts = async ({ // its own lifecycle scripts. continue } + if (node.inert) { + // Inert = an optional dep that can't be installed here (failed the + // os/cpu/libc or engine check, or failed to load). reify drops it + // before any script runs, so its install scripts never execute and it + // must not be flagged (npm/cli#9562). + continue + } const verdict = isScriptAllowed(node, resolvedPolicy) if (verdict === true || verdict === false) { diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/vuln.js b/deps/npm/node_modules/@npmcli/arborist/lib/vuln.js index 2bffe54f2dacdc..e6c6bbab383ea7 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/vuln.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/vuln.js @@ -41,6 +41,7 @@ class Vuln { this.effects = new Set() this.topNodes = new Set() this.nodes = new Set() + this.fixBlockedByReleaseAge = false this.addAdvisory(advisory) this.packument = advisory.packument this.versions = advisory.versions @@ -126,6 +127,9 @@ class Vuln { range: this.simpleRange, nodes: [...this.nodes].map(n => n.location).sort(localeCompare), fixAvailable: this.#fixAvailable, + ...(this.fixBlockedByReleaseAge + ? { fixBlockedByReleaseAge: this.fixBlockedByReleaseAge } + : {}), } } diff --git a/deps/npm/node_modules/@npmcli/arborist/package.json b/deps/npm/node_modules/@npmcli/arborist/package.json index 9a5e883cefe2f3..11c142a0092a4f 100644 --- a/deps/npm/node_modules/@npmcli/arborist/package.json +++ b/deps/npm/node_modules/@npmcli/arborist/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/arborist", - "version": "9.8.0", + "version": "9.9.0", "description": "Manage node_modules trees", "dependencies": { "@gar/promise-retry": "^1.0.0", diff --git a/deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.js b/deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.js index a4933facff6315..2bb1713458af9f 100644 --- a/deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.js +++ b/deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.js @@ -341,6 +341,10 @@ const definitions = { user > global), so a higher-priority source can always relax or override a lower-priority one. + As with \`min-release-age\`, when this cutoff blocks a fix that + \`npm audit fix\` would install, npm keeps the vulnerable version, warns, + and exits with a non-zero code. + Packages whose names match \`min-release-age-exclude\` are exempt from this filter. `, @@ -1204,8 +1208,15 @@ const definitions = { necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct deps at top-level. - linked: (experimental) install in node_modules/.store, link in place, - unhoisted. + linked: install in node_modules/.store, link in place, unhoisted. + + We recommend that package authors use \`--install-strategy=linked\` + during development to catch undeclared ("phantom") dependencies before + publishing: the isolated layout only exposes a package's declared + dependencies, so an \`import\` of a package that was never added to + \`package.json\` can fail instead of resolving by accident and shipping + broken. See [Catching undeclared ("phantom") + dependencies](/using-npm/developers#catching-undeclared-phantom-dependencies). `, flatten, }), @@ -1475,6 +1486,12 @@ const definitions = { \`github:\` dependency); when both apply, \`before\` wins within a single source and across sources the standard precedence rules apply. + When this window stops \`npm audit fix\` from installing a patched + version (because the fix was published too recently), npm keeps the + package at its vulnerable version, warns that the fix was blocked, and + exits with a non-zero code. To install the fix, add the package to + \`min-release-age-exclude\`, or relax \`min-release-age\` or \`before\`. + Packages whose names match \`min-release-age-exclude\` are exempt from this filter. `, @@ -1913,7 +1930,7 @@ const definitions = { }), 'replace-registry-host': new Definition('replace-registry-host', { default: 'npmjs', - hint: ' | hostname', + hint: ' | hostname | url', type: ['npmjs', 'never', 'always', String], description: ` Defines behavior for replacing the registry host in a lockfile with the @@ -1924,7 +1941,14 @@ const definitions = { "never", then use the registry value. If set to "always", then replace the registry host with the configured host every time. - You may also specify a bare hostname (e.g., "registry.npmjs.org"). + You may also specify a bare hostname (e.g., "registry.npmjs.org") to only + replace URLs coming from that host. + + You may also specify a full URL including a path (e.g., + "https://old-registry.example.com/npm/path"). In that case, resolved URLs + whose host and path begin with that prefix will have the entire prefix + replaced with the configured registry URL (host and path), without + duplicating path segments. `, flatten, }), @@ -2361,6 +2385,10 @@ const definitions = { always silently skipped; this setting only affects unreviewed entries. \`--ignore-scripts\` and \`--dangerously-allow-all-scripts\` both override this setting. + + Optional dependencies that cannot be installed on the current platform + or engine (a non-matching \`os\`, \`cpu\`, or \`libc\`) are not flagged, + because their install scripts never run. `, flatten, }), diff --git a/deps/npm/node_modules/@npmcli/config/package.json b/deps/npm/node_modules/@npmcli/config/package.json index 2d91ded3f9a149..360b0ab128a03c 100644 --- a/deps/npm/node_modules/@npmcli/config/package.json +++ b/deps/npm/node_modules/@npmcli/config/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/config", - "version": "10.11.0", + "version": "10.12.0", "files": [ "bin/", "lib/" diff --git a/deps/npm/node_modules/brace-expansion/dist/commonjs/index.js b/deps/npm/node_modules/brace-expansion/dist/commonjs/index.js index 33063dd3552cd6..e4e5bd87666d1b 100644 --- a/deps/npm/node_modules/brace-expansion/dist/commonjs/index.js +++ b/deps/npm/node_modules/brace-expansion/dist/commonjs/index.js @@ -95,19 +95,23 @@ function gte(i, y) { function expand_(str, max, isTop) { /** @type {string[]} */ const expansions = []; - const m = (0, balanced_match_1.balanced)('{', '}', str); - if (!m) - return [str]; - // no need to expand pre, since it is guaranteed to be free of brace-sets - const pre = m.pre; - const post = m.post.length ? expand_(m.post, max, false) : ['']; - if (/\$$/.test(m.pre)) { - for (let k = 0; k < post.length && k < max; k++) { - const expansion = pre + '{' + m.body + '}' + post[k]; - expansions.push(expansion); + // The `{a},b}` rewrite below restarts expansion on a rewritten string with + // the same `max` and `isTop = true`. Loop instead of recursing so a long run + // of non-expanding `{}` groups can't exhaust the call stack. + for (;;) { + const m = (0, balanced_match_1.balanced)('{', '}', str); + if (!m) + return [str]; + // no need to expand pre, since it is guaranteed to be free of brace-sets + const pre = m.pre; + if (/\$$/.test(m.pre)) { + const post = m.post.length ? expand_(m.post, max, false) : ['']; + for (let k = 0; k < post.length && k < max; k++) { + const expansion = pre + '{' + m.body + '}' + post[k]; + expansions.push(expansion); + } + return expansions; } - } - else { const isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); const isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); const isSequence = isNumericSequence || isAlphaSequence; @@ -116,10 +120,16 @@ function expand_(str, max, isTop) { // {a},b} if (m.post.match(/,(?!,).*\}/)) { str = m.pre + '{' + m.body + escClose + m.post; - return expand_(str, max, true); + isTop = true; + continue; } return [str]; } + // Only expand post once we know this brace set actually expands. Computing + // it before the early returns above expanded post a second time on every + // non-expanding `{}`, which is what made inputs like `a{},{},{}...` blow up + // exponentially. + const post = m.post.length ? expand_(m.post, max, false) : ['']; let n; if (isSequence) { n = m.body.split(/\.\./); @@ -195,7 +205,7 @@ function expand_(str, max, isTop) { } } } + return expansions; } - return expansions; } //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/brace-expansion/dist/esm/index.js b/deps/npm/node_modules/brace-expansion/dist/esm/index.js index 32399e7b2f5cf1..b2d2aa91bb1c31 100644 --- a/deps/npm/node_modules/brace-expansion/dist/esm/index.js +++ b/deps/npm/node_modules/brace-expansion/dist/esm/index.js @@ -91,19 +91,23 @@ function gte(i, y) { function expand_(str, max, isTop) { /** @type {string[]} */ const expansions = []; - const m = balanced('{', '}', str); - if (!m) - return [str]; - // no need to expand pre, since it is guaranteed to be free of brace-sets - const pre = m.pre; - const post = m.post.length ? expand_(m.post, max, false) : ['']; - if (/\$$/.test(m.pre)) { - for (let k = 0; k < post.length && k < max; k++) { - const expansion = pre + '{' + m.body + '}' + post[k]; - expansions.push(expansion); + // The `{a},b}` rewrite below restarts expansion on a rewritten string with + // the same `max` and `isTop = true`. Loop instead of recursing so a long run + // of non-expanding `{}` groups can't exhaust the call stack. + for (;;) { + const m = balanced('{', '}', str); + if (!m) + return [str]; + // no need to expand pre, since it is guaranteed to be free of brace-sets + const pre = m.pre; + if (/\$$/.test(m.pre)) { + const post = m.post.length ? expand_(m.post, max, false) : ['']; + for (let k = 0; k < post.length && k < max; k++) { + const expansion = pre + '{' + m.body + '}' + post[k]; + expansions.push(expansion); + } + return expansions; } - } - else { const isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); const isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); const isSequence = isNumericSequence || isAlphaSequence; @@ -112,10 +116,16 @@ function expand_(str, max, isTop) { // {a},b} if (m.post.match(/,(?!,).*\}/)) { str = m.pre + '{' + m.body + escClose + m.post; - return expand_(str, max, true); + isTop = true; + continue; } return [str]; } + // Only expand post once we know this brace set actually expands. Computing + // it before the early returns above expanded post a second time on every + // non-expanding `{}`, which is what made inputs like `a{},{},{}...` blow up + // exponentially. + const post = m.post.length ? expand_(m.post, max, false) : ['']; let n; if (isSequence) { n = m.body.split(/\.\./); @@ -191,7 +201,7 @@ function expand_(str, max, isTop) { } } } + return expansions; } - return expansions; } //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/brace-expansion/package.json b/deps/npm/node_modules/brace-expansion/package.json index 81524809e58612..a5142f2787b665 100644 --- a/deps/npm/node_modules/brace-expansion/package.json +++ b/deps/npm/node_modules/brace-expansion/package.json @@ -1,7 +1,7 @@ { "name": "brace-expansion", "description": "Brace expansion as known from sh/bash", - "version": "5.0.6", + "version": "5.0.7", "files": [ "dist" ], @@ -59,6 +59,6 @@ "module": "./dist/esm/index.js", "repository": { "type": "git", - "url": "git+ssh://git@github.com/juliangruber/brace-expansion.git" + "url": "git+https://github.com/juliangruber/brace-expansion.git" } } diff --git a/deps/npm/node_modules/libnpmdiff/package.json b/deps/npm/node_modules/libnpmdiff/package.json index 0e2a7968c74c7a..31aadc1a771808 100644 --- a/deps/npm/node_modules/libnpmdiff/package.json +++ b/deps/npm/node_modules/libnpmdiff/package.json @@ -1,6 +1,6 @@ { "name": "libnpmdiff", - "version": "8.1.10", + "version": "8.1.11", "description": "The registry diff", "repository": { "type": "git", @@ -47,7 +47,7 @@ "tap": "^16.3.8" }, "dependencies": { - "@npmcli/arborist": "^9.8.0", + "@npmcli/arborist": "^9.9.0", "@npmcli/installed-package-contents": "^4.0.0", "binary-extensions": "^3.0.0", "diff": "^8.0.2", diff --git a/deps/npm/node_modules/libnpmexec/lib/index.js b/deps/npm/node_modules/libnpmexec/lib/index.js index 35452f796246b8..4d7c1266546891 100644 --- a/deps/npm/node_modules/libnpmexec/lib/index.js +++ b/deps/npm/node_modules/libnpmexec/lib/index.js @@ -19,8 +19,6 @@ const runScript = require('./run-script.js') const isWindows = require('./is-windows.js') const withLock = require('./with-lock.js') -const binPaths = [] - // when checking the local tree we look up manifests, cache those results by // spec.raw so we don't have to fetch again when we check npxCache const manifests = new Map() @@ -113,6 +111,8 @@ const exec = async (opts) => { ...flatOptions } = opts + const binPaths = [] + let pkgPaths = opts.pkgPath if (typeof pkgPaths === 'string') { pkgPaths = [pkgPaths] @@ -196,7 +196,11 @@ const exec = async (opts) => { let commandManifest await Promise.all(packages.map(async (pkg, i) => { const spec = npa(pkg, path) - const { manifest, node } = await missingFromTree({ spec, tree: localTree, flatOptions }) + const { manifest, node } = await missingFromTree({ + spec, + tree: localTree, + flatOptions, + }) if (manifest) { // Package does not exist in the local tree needInstall.push({ spec, manifest }) diff --git a/deps/npm/node_modules/libnpmexec/package.json b/deps/npm/node_modules/libnpmexec/package.json index 77af2f57ccd508..097673618ae8dd 100644 --- a/deps/npm/node_modules/libnpmexec/package.json +++ b/deps/npm/node_modules/libnpmexec/package.json @@ -1,6 +1,6 @@ { "name": "libnpmexec", - "version": "10.3.0", + "version": "10.3.1", "files": [ "bin/", "lib/" @@ -61,7 +61,7 @@ }, "dependencies": { "@gar/promise-retry": "^1.0.0", - "@npmcli/arborist": "^9.8.0", + "@npmcli/arborist": "^9.9.0", "@npmcli/package-json": "^7.0.0", "@npmcli/run-script": "^10.0.0", "ci-info": "^4.0.0", diff --git a/deps/npm/node_modules/libnpmfund/package.json b/deps/npm/node_modules/libnpmfund/package.json index a03c4e89d63fb2..a6dc15e4b727c9 100644 --- a/deps/npm/node_modules/libnpmfund/package.json +++ b/deps/npm/node_modules/libnpmfund/package.json @@ -1,6 +1,6 @@ { "name": "libnpmfund", - "version": "7.0.24", + "version": "7.0.25", "main": "lib/index.js", "files": [ "bin/", @@ -46,7 +46,7 @@ "tap": "^16.3.8" }, "dependencies": { - "@npmcli/arborist": "^9.8.0" + "@npmcli/arborist": "^9.9.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" diff --git a/deps/npm/node_modules/libnpmpack/package.json b/deps/npm/node_modules/libnpmpack/package.json index 5c285836d35364..92aa96af6408ea 100644 --- a/deps/npm/node_modules/libnpmpack/package.json +++ b/deps/npm/node_modules/libnpmpack/package.json @@ -1,6 +1,6 @@ { "name": "libnpmpack", - "version": "9.1.10", + "version": "9.1.11", "description": "Programmatic API for the bits behind npm pack", "author": "GitHub Inc.", "main": "lib/index.js", @@ -37,7 +37,7 @@ "bugs": "https://github.com/npm/libnpmpack/issues", "homepage": "https://npmjs.com/package/libnpmpack", "dependencies": { - "@npmcli/arborist": "^9.8.0", + "@npmcli/arborist": "^9.9.0", "@npmcli/run-script": "^10.0.0", "npm-package-arg": "^13.0.0", "pacote": "^21.0.2" diff --git a/deps/npm/node_modules/npm-profile/lib/index.js b/deps/npm/node_modules/npm-profile/lib/index.js index 83ab5e1b46b68e..734e08abb655ff 100644 --- a/deps/npm/node_modules/npm-profile/lib/index.js +++ b/deps/npm/node_modules/npm-profile/lib/index.js @@ -49,6 +49,33 @@ const isValidUrl = u => { } } +// npm's web-login response names the canonical npmjs registry in `doneUrl`, which a proxy/mirror forwards verbatim. +// The poll would then hit npmjs.org instead of the proxy that holds the session, so rewrite only that npmjs host to the configured registry origin, preserving the path prefix and query string. +// Any other done host is left untouched, since a non-npmjs canonical host cannot be inferred here and may be served intentionally. +const CANONICAL_REGISTRY_HOST = 'registry.npmjs.org' + +// doneUrl is already validated by isValidUrl and registry is the origin a prior +// POST /-/v1/login succeeded against, so both parse cleanly here. +const replaceDoneUrlOrigin = (doneUrl, registry) => { + if (!registry) { + return doneUrl + } + const done = new URL(doneUrl) + if (done.hostname !== CANONICAL_REGISTRY_HOST) { + return doneUrl + } + const reg = new URL(registry) + done.protocol = reg.protocol + done.host = reg.host + const prefix = reg.pathname.replace(/\/$/, '') + if (prefix && prefix !== '/' && + done.pathname !== prefix && + !done.pathname.startsWith(prefix + '/')) { + done.pathname = prefix + done.pathname + } + return done.href +} + const webAuth = async (opener, opts, body) => { try { const res = await fetch('/-/v1/login', { @@ -65,7 +92,7 @@ const webAuth = async (opener, opts, body) => { throw new WebLoginInvalidResponse('POST', res, content) } - return await webAuthOpener(opener, loginUrl, doneUrl, opts) + return await webAuthOpener(opener, loginUrl, replaceDoneUrlOrigin(doneUrl, opts.registry), opts) } catch (er) { if ((er.statusCode >= 400 && er.statusCode <= 499) || er.statusCode === 500) { throw new WebLoginNotSupported('POST', { diff --git a/deps/npm/node_modules/npm-profile/package.json b/deps/npm/node_modules/npm-profile/package.json index 0f97cc1efa1934..bb7f23ec83121b 100644 --- a/deps/npm/node_modules/npm-profile/package.json +++ b/deps/npm/node_modules/npm-profile/package.json @@ -1,13 +1,13 @@ { "name": "npm-profile", - "version": "12.0.1", + "version": "12.0.2", "description": "Library for updating an npmjs.com profile", "keywords": [], "author": "GitHub Inc.", "license": "ISC", "dependencies": { "npm-registry-fetch": "^19.0.0", - "proc-log": "^6.0.0" + "proc-log": "^6.1.0" }, "main": "./lib/index.js", "repository": { @@ -19,8 +19,8 @@ "lib/" ], "devDependencies": { - "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.27.1", + "@npmcli/eslint-config": "^7.0.0", + "@npmcli/template-oss": "5.1.1", "nock": "^13.5.6", "tap": "^16.0.1" }, @@ -46,7 +46,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.27.1", + "version": "5.1.1", "publish": true } } diff --git a/deps/npm/node_modules/semver/classes/range.js b/deps/npm/node_modules/semver/classes/range.js index 766d505a226919..a7d6556febb4e5 100644 --- a/deps/npm/node_modules/semver/classes/range.js +++ b/deps/npm/node_modules/semver/classes/range.js @@ -299,6 +299,10 @@ const replaceTildes = (comp, options) => { const replaceTilde = (comp, options) => { const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] + // if we're including prereleases in the match, then the lower bound is + // -0, the lowest possible prerelease value, just like x-ranges and carets. + // this keeps `~1.2` equivalent to the `1.2.x` x-range it's documented as. + const z = options.includePrerelease ? '-0' : '' return comp.replace(r, (_, M, m, p, pr) => { debug('tilde', comp, _, M, m, p, pr) let ret @@ -306,10 +310,10 @@ const replaceTilde = (comp, options) => { if (isX(M)) { ret = '' } else if (isX(m)) { - ret = `>=${M}.0.0 <${+M + 1}.0.0-0` + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0` } else if (isX(p)) { // ~1.2 == >=1.2.0 <1.3.0-0 - ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0` + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0` } else if (pr) { debug('replaceTilde pr', pr) ret = `>=${M}.${m}.${p}-${pr diff --git a/deps/npm/node_modules/semver/package.json b/deps/npm/node_modules/semver/package.json index ddedbf7bdaba6f..0cb7c7bb465ea4 100644 --- a/deps/npm/node_modules/semver/package.json +++ b/deps/npm/node_modules/semver/package.json @@ -1,6 +1,6 @@ { "name": "semver", - "version": "7.8.4", + "version": "7.8.5", "description": "The semantic version parser used by npm.", "main": "index.js", "scripts": { diff --git a/deps/npm/node_modules/tar/dist/commonjs/header.js b/deps/npm/node_modules/tar/dist/commonjs/header.js index d6e8f0ec342678..f4a84fb76c3462 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/header.js +++ b/deps/npm/node_modules/tar/dist/commonjs/header.js @@ -41,6 +41,7 @@ exports.Header = void 0; const node_path_1 = require("node:path"); const large = __importStar(require("./large-numbers.js")); const types = __importStar(require("./types.js")); +const notNegative = (n) => n === undefined || n < 0 ? undefined : n; class Header { cksumValid = false; needPax = false; @@ -99,10 +100,9 @@ class Header { exForFields?.uid ?? gexForFields?.uid ?? decNumber(buf, off + 108, 8); this.gid = exForFields?.gid ?? gexForFields?.gid ?? decNumber(buf, off + 116, 8); - this.size = - exForFields?.size ?? - gexForFields?.size ?? - decNumber(buf, off + 124, 12); + this.size = notNegative(exForFields?.size ?? + gexForFields?.size ?? + decNumber(buf, off + 124, 12)); this.mtime = exForFields?.mtime ?? gexForFields?.mtime ?? @@ -188,6 +188,7 @@ class Header { // null/undefined values are ignored. return !(v === null || v === undefined || + (k === 'size' && Number(v) < 0) || (k === 'path' && gex) || (k === 'linkpath' && gex) || k === 'global'); diff --git a/deps/npm/node_modules/tar/dist/commonjs/index.min.js b/deps/npm/node_modules/tar/dist/commonjs/index.min.js index 6bce016bcece46..1a229a01e5a5f8 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/index.min.js +++ b/deps/npm/node_modules/tar/dist/commonjs/index.min.js @@ -1,4 +1,4 @@ -"use strict";var d=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var We=d(F=>{"use strict";var Ro=F&&F.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(F,"__esModule",{value:!0});F.Minipass=F.isWritable=F.isReadable=F.isStream=void 0;var Br=typeof process=="object"&&process?process:{stdout:null,stderr:null},is=require("node:events"),jr=Ro(require("node:stream")),vo=require("node:string_decoder"),To=s=>!!s&&typeof s=="object"&&(s instanceof Zt||s instanceof jr.default||(0,F.isReadable)(s)||(0,F.isWritable)(s));F.isStream=To;var Do=s=>!!s&&typeof s=="object"&&s instanceof is.EventEmitter&&typeof s.pipe=="function"&&s.pipe!==jr.default.Writable.prototype.pipe;F.isReadable=Do;var Po=s=>!!s&&typeof s=="object"&&s instanceof is.EventEmitter&&typeof s.write=="function"&&typeof s.end=="function";F.isWritable=Po;var le=Symbol("EOF"),ue=Symbol("maybeEmitEnd"),_e=Symbol("emittedEnd"),xt=Symbol("emittingEnd"),dt=Symbol("emittedError"),jt=Symbol("closed"),zr=Symbol("read"),Ut=Symbol("flush"),kr=Symbol("flushChunk"),K=Symbol("encoding"),Ue=Symbol("decoder"),O=Symbol("flowing"),mt=Symbol("paused"),qe=Symbol("resume"),R=Symbol("buffer"),I=Symbol("pipes"),v=Symbol("bufferLength"),$i=Symbol("bufferPush"),qt=Symbol("bufferShift"),N=Symbol("objectMode"),y=Symbol("destroyed"),Xi=Symbol("error"),Qi=Symbol("emitData"),xr=Symbol("emitEnd"),Ji=Symbol("emitEnd2"),J=Symbol("async"),es=Symbol("abort"),Wt=Symbol("aborted"),pt=Symbol("signal"),Ne=Symbol("dataListeners"),x=Symbol("discarded"),_t=s=>Promise.resolve().then(s),No=s=>s(),Mo=s=>s==="end"||s==="finish"||s==="prefinish",Lo=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,Ao=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),Ht=class{src;dest;opts;ondrain;constructor(e,t,i){this.src=e,this.dest=t,this.opts=i,this.ondrain=()=>e[qe](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},ts=class extends Ht{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,i){super(e,t,i),this.proxyErrors=r=>this.dest.emit("error",r),e.on("error",this.proxyErrors)}},Io=s=>!!s.objectMode,Fo=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",Zt=class extends is.EventEmitter{[O]=!1;[mt]=!1;[I]=[];[R]=[];[N];[K];[J];[Ue];[le]=!1;[_e]=!1;[xt]=!1;[jt]=!1;[dt]=null;[v]=0;[y]=!1;[pt];[Wt]=!1;[Ne]=0;[x]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Io(t)?(this[N]=!0,this[K]=null):Fo(t)?(this[K]=t.encoding,this[N]=!1):(this[N]=!1,this[K]=null),this[J]=!!t.async,this[Ue]=this[K]?new vo.StringDecoder(this[K]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[R]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[I]});let{signal:i}=t;i&&(this[pt]=i,i.aborted?this[es]():i.addEventListener("abort",()=>this[es]()))}get bufferLength(){return this[v]}get encoding(){return this[K]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[N]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[J]}set async(e){this[J]=this[J]||!!e}[es](){this[Wt]=!0,this.emit("abort",this[pt]?.reason),this.destroy(this[pt]?.reason)}get aborted(){return this[Wt]}set aborted(e){}write(e,t,i){if(this[Wt])return!1;if(this[le])throw new Error("write after end");if(this[y])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(i=t,t="utf8"),t||(t="utf8");let r=this[J]?_t:No;if(!this[N]&&!Buffer.isBuffer(e)){if(Ao(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(Lo(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[N]?(this[O]&&this[v]!==0&&this[Ut](!0),this[O]?this.emit("data",e):this[$i](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[O]):e.length?(typeof e=="string"&&!(t===this[K]&&!this[Ue]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[K]&&(e=this[Ue].write(e)),this[O]&&this[v]!==0&&this[Ut](!0),this[O]?this.emit("data",e):this[$i](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[O]):(this[v]!==0&&this.emit("readable"),i&&r(i),this[O])}read(e){if(this[y])return null;if(this[x]=!1,this[v]===0||e===0||e&&e>this[v])return this[ue](),null;this[N]&&(e=null),this[R].length>1&&!this[N]&&(this[R]=[this[K]?this[R].join(""):Buffer.concat(this[R],this[v])]);let t=this[zr](e||null,this[R][0]);return this[ue](),t}[zr](e,t){if(this[N])this[qt]();else{let i=t;e===i.length||e===null?this[qt]():typeof i=="string"?(this[R][0]=i.slice(e),t=i.slice(0,e),this[v]-=e):(this[R][0]=i.subarray(e),t=i.subarray(0,e),this[v]-=e)}return this.emit("data",t),!this[R].length&&!this[le]&&this.emit("drain"),t}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t="utf8"),e!==void 0&&this.write(e,t),i&&this.once("end",i),this[le]=!0,this.writable=!1,(this[O]||!this[mt])&&this[ue](),this}[qe](){this[y]||(!this[Ne]&&!this[I].length&&(this[x]=!0),this[mt]=!1,this[O]=!0,this.emit("resume"),this[R].length?this[Ut]():this[le]?this[ue]():this.emit("drain"))}resume(){return this[qe]()}pause(){this[O]=!1,this[mt]=!0,this[x]=!1}get destroyed(){return this[y]}get flowing(){return this[O]}get paused(){return this[mt]}[$i](e){this[N]?this[v]+=1:this[v]+=e.length,this[R].push(e)}[qt](){return this[N]?this[v]-=1:this[v]-=this[R][0].length,this[R].shift()}[Ut](e=!1){do;while(this[kr](this[qt]())&&this[R].length);!e&&!this[R].length&&!this[le]&&this.emit("drain")}[kr](e){return this.emit("data",e),this[O]}pipe(e,t){if(this[y])return e;this[x]=!1;let i=this[_e];return t=t||{},e===Br.stdout||e===Br.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,i?t.end&&e.end():(this[I].push(t.proxyErrors?new ts(this,e,t):new Ht(this,e,t)),this[J]?_t(()=>this[qe]()):this[qe]()),e}unpipe(e){let t=this[I].find(i=>i.dest===e);t&&(this[I].length===1?(this[O]&&this[Ne]===0&&(this[O]=!1),this[I]=[]):this[I].splice(this[I].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let i=super.on(e,t);if(e==="data")this[x]=!1,this[Ne]++,!this[I].length&&!this[O]&&this[qe]();else if(e==="readable"&&this[v]!==0)super.emit("readable");else if(Mo(e)&&this[_e])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[dt]){let r=t;this[J]?_t(()=>r.call(this,this[dt])):r.call(this,this[dt])}return i}removeListener(e,t){return this.off(e,t)}off(e,t){let i=super.off(e,t);return e==="data"&&(this[Ne]=this.listeners("data").length,this[Ne]===0&&!this[x]&&!this[I].length&&(this[O]=!1)),i}removeAllListeners(e){let t=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Ne]=0,!this[x]&&!this[I].length&&(this[O]=!1)),t}get emittedEnd(){return this[_e]}[ue](){!this[xt]&&!this[_e]&&!this[y]&&this[R].length===0&&this[le]&&(this[xt]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[jt]&&this.emit("close"),this[xt]=!1)}emit(e,...t){let i=t[0];if(e!=="error"&&e!=="close"&&e!==y&&this[y])return!1;if(e==="data")return!this[N]&&!i?!1:this[J]?(_t(()=>this[Qi](i)),!0):this[Qi](i);if(e==="end")return this[xr]();if(e==="close"){if(this[jt]=!0,!this[_e]&&!this[y])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[dt]=i,super.emit(Xi,i);let n=!this[pt]||this.listeners("error").length?super.emit("error",i):!1;return this[ue](),n}else if(e==="resume"){let n=super.emit("resume");return this[ue](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let r=super.emit(e,...t);return this[ue](),r}[Qi](e){for(let i of this[I])i.dest.write(e)===!1&&this.pause();let t=this[x]?!1:super.emit("data",e);return this[ue](),t}[xr](){return this[_e]?!1:(this[_e]=!0,this.readable=!1,this[J]?(_t(()=>this[Ji]()),!0):this[Ji]())}[Ji](){if(this[Ue]){let t=this[Ue].end();if(t){for(let i of this[I])i.dest.write(t);this[x]||super.emit("data",t)}}for(let t of this[I])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[N]||(e.dataLength=0);let t=this.promise();return this.on("data",i=>{e.push(i),this[N]||(e.dataLength+=i.length)}),await t,e}async concat(){if(this[N])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[K]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(y,()=>t(new Error("stream destroyed"))),this.on("error",i=>t(i)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[x]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[le])return t();let n,o,h=c=>{this.off("data",a),this.off("end",l),this.off(y,u),t(),o(c)},a=c=>{this.off("error",h),this.off("end",l),this.off(y,u),this.pause(),n({value:c,done:!!this[le]})},l=()=>{this.off("error",h),this.off("data",a),this.off(y,u),t(),n({done:!0,value:void 0})},u=()=>h(new Error("stream destroyed"));return new Promise((c,E)=>{o=E,n=c,this.once(y,u),this.once("error",h),this.once("end",l),this.once("data",a)})},throw:t,return:t,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[x]=!1;let e=!1,t=()=>(this.pause(),this.off(Xi,t),this.off(y,t),this.off("end",t),e=!0,{done:!0,value:void 0}),i=()=>{if(e)return t();let r=this.read();return r===null?t():{done:!1,value:r}};return this.once("end",t),this.once(Xi,t),this.once(y,t),{next:i,throw:t,return:t,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(e){if(this[y])return e?this.emit("error",e):this.emit(y),this;this[y]=!0,this[x]=!0,this[R].length=0,this[v]=0;let t=this;return typeof t.close=="function"&&!this[jt]&&t.close(),e?this.emit("error",e):this.emit(y),this}static get isStream(){return F.isStream}};F.Minipass=Zt});var Ke=d(W=>{"use strict";var Ur=W&&W.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(W,"__esModule",{value:!0});W.WriteStreamSync=W.WriteStream=W.ReadStreamSync=W.ReadStream=void 0;var Co=Ur(require("events")),z=Ur(require("fs")),Bo=We(),zo=z.default.writev,ye=Symbol("_autoClose"),$=Symbol("_close"),wt=Symbol("_ended"),p=Symbol("_fd"),ss=Symbol("_finished"),fe=Symbol("_flags"),rs=Symbol("_flush"),hs=Symbol("_handleChunk"),ls=Symbol("_makeBuf"),Et=Symbol("_mode"),Gt=Symbol("_needDrain"),Ge=Symbol("_onerror"),Ye=Symbol("_onopen"),ns=Symbol("_onread"),He=Symbol("_onwrite"),Ee=Symbol("_open"),V=Symbol("_path"),we=Symbol("_pos"),ee=Symbol("_queue"),Ze=Symbol("_read"),os=Symbol("_readSize"),ce=Symbol("_reading"),yt=Symbol("_remain"),as=Symbol("_size"),Yt=Symbol("_write"),Me=Symbol("_writing"),Kt=Symbol("_defaultFlag"),Le=Symbol("_errored"),Vt=class extends Bo.Minipass{[Le]=!1;[p];[V];[os];[ce]=!1;[as];[yt];[ye];constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Le]=!1,this[p]=typeof t.fd=="number"?t.fd:void 0,this[V]=e,this[os]=t.readSize||16*1024*1024,this[ce]=!1,this[as]=typeof t.size=="number"?t.size:1/0,this[yt]=this[as],this[ye]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[p]=="number"?this[Ze]():this[Ee]()}get fd(){return this[p]}get path(){return this[V]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Ee](){z.default.open(this[V],"r",(e,t)=>this[Ye](e,t))}[Ye](e,t){e?this[Ge](e):(this[p]=t,this.emit("open",t),this[Ze]())}[ls](){return Buffer.allocUnsafe(Math.min(this[os],this[yt]))}[Ze](){if(!this[ce]){this[ce]=!0;let e=this[ls]();if(e.length===0)return process.nextTick(()=>this[ns](null,0,e));z.default.read(this[p],e,0,e.length,null,(t,i,r)=>this[ns](t,i,r))}}[ns](e,t,i){this[ce]=!1,e?this[Ge](e):this[hs](t,i)&&this[Ze]()}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,z.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}[Ge](e){this[ce]=!0,this[$](),this.emit("error",e)}[hs](e,t){let i=!1;return this[yt]-=e,e>0&&(i=super.write(ethis[Ye](e,t))}[Ye](e,t){this[Kt]&&this[fe]==="r+"&&e&&e.code==="ENOENT"?(this[fe]="w",this[Ee]()):e?this[Ge](e):(this[p]=t,this.emit("open",t),this[Me]||this[rs]())}end(e,t){return e&&this.write(e,t),this[wt]=!0,!this[Me]&&!this[ee].length&&typeof this[p]=="number"&&this[He](null,0),this}write(e,t){return typeof e=="string"&&(e=Buffer.from(e,t)),this[wt]?(this.emit("error",new Error("write() after end()")),!1):this[p]===void 0||this[Me]||this[ee].length?(this[ee].push(e),this[Gt]=!0,!1):(this[Me]=!0,this[Yt](e),!0)}[Yt](e){z.default.write(this[p],e,0,e.length,this[we],(t,i)=>this[He](t,i))}[He](e,t){e?this[Ge](e):(this[we]!==void 0&&typeof t=="number"&&(this[we]+=t),this[ee].length?this[rs]():(this[Me]=!1,this[wt]&&!this[ss]?(this[ss]=!0,this[$](),this.emit("finish")):this[Gt]&&(this[Gt]=!1,this.emit("drain"))))}[rs](){if(this[ee].length===0)this[wt]&&this[He](null,0);else if(this[ee].length===1)this[Yt](this[ee].pop());else{let e=this[ee];this[ee]=[],zo(this[p],e,this[we],(t,i)=>this[He](t,i))}}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,z.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}};W.WriteStream=$t;var cs=class extends $t{[Ee](){let e;if(this[Kt]&&this[fe]==="r+")try{e=z.default.openSync(this[V],this[fe],this[Et])}catch(t){if(t?.code==="ENOENT")return this[fe]="w",this[Ee]();throw t}else e=z.default.openSync(this[V],this[fe],this[Et]);this[Ye](null,e)}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,z.default.closeSync(e),this.emit("close")}}[Yt](e){let t=!0;try{this[He](null,z.default.writeSync(this[p],e,0,e.length,this[we])),t=!1}finally{if(t)try{this[$]()}catch{}}}};W.WriteStreamSync=cs});var Xt=d(b=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});b.dealias=b.isNoFile=b.isFile=b.isAsync=b.isSync=b.isAsyncNoFile=b.isSyncNoFile=b.isAsyncFile=b.isSyncFile=void 0;var ko=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),xo=s=>!!s.sync&&!!s.file;b.isSyncFile=xo;var jo=s=>!s.sync&&!!s.file;b.isAsyncFile=jo;var Uo=s=>!!s.sync&&!s.file;b.isSyncNoFile=Uo;var qo=s=>!s.sync&&!s.file;b.isAsyncNoFile=qo;var Wo=s=>!!s.sync;b.isSync=Wo;var Ho=s=>!s.sync;b.isAsync=Ho;var Zo=s=>!!s.file;b.isFile=Zo;var Go=s=>!s.file;b.isNoFile=Go;var Yo=s=>{let e=ko.get(s);return e||s},Ko=(s={})=>{if(!s)return{};let e={};for(let[t,i]of Object.entries(s)){let r=Yo(t);e[r]=i}return e.chmod===void 0&&e.noChmod===!1&&(e.chmod=!0),delete e.noChmod,e};b.dealias=Ko});var Ve=d(Qt=>{"use strict";Object.defineProperty(Qt,"__esModule",{value:!0});Qt.makeCommand=void 0;var bt=Xt(),Vo=(s,e,t,i,r)=>Object.assign((n=[],o,h)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(h=o,o=void 0),o=o?Array.from(o):[];let a=(0,bt.dealias)(n);if(r?.(a,o),(0,bt.isSyncFile)(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return s(a,o)}else if((0,bt.isAsyncFile)(a)){let l=e(a,o);return h?l.then(()=>h(),h):l}else if((0,bt.isSyncNoFile)(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return t(a,o)}else if((0,bt.isAsyncNoFile)(a)){if(typeof h=="function")throw new TypeError("callback only supported with file option");return i(a,o)}throw new Error("impossible options??")},{syncFile:s,asyncFile:e,syncNoFile:t,asyncNoFile:i,validate:r});Qt.makeCommand=Vo});var fs=d($e=>{"use strict";var $o=$e&&$e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty($e,"__esModule",{value:!0});$e.constants=void 0;var Xo=$o(require("zlib")),Qo=Xo.default.constants||{ZLIB_VERNUM:4736};$e.constants=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Qo))});var Ds=d(f=>{"use strict";var Jo=f&&f.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),ea=f&&f.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),ta=f&&f.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;rs,ds=Wr?.writable===!0||Wr?.set!==void 0?s=>{Ae.Buffer.concat=s?oa:na}:s=>{},Ie=Symbol("_superWrite"),Fe=class extends Error{code;errno;constructor(e,t){super("zlib: "+e.message,{cause:e}),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,t??this.constructor)}get name(){return"ZlibError"}};f.ZlibError=Fe;var ms=Symbol("flushFlag"),St=class extends sa.Minipass{#e=!1;#i=!1;#s;#n;#r;#t;#o;get sawError(){return this.#e}get handle(){return this.#t}get flushFlag(){return this.#s}constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(e),this.#s=e.flush??0,this.#n=e.finishFlush??0,this.#r=e.fullFlushFlag??0,typeof qr[t]!="function")throw new TypeError("Compression method not supported: "+t);try{this.#t=new qr[t](e)}catch(i){throw new Fe(i,this.constructor)}this.#o=i=>{this.#e||(this.#e=!0,this.close(),this.emit("error",i))},this.#t?.on("error",i=>this.#o(new Fe(i))),this.once("end",()=>this.close)}close(){this.#t&&(this.#t.close(),this.#t=void 0,this.emit("close"))}reset(){if(!this.#e)return(0,ps.default)(this.#t,"zlib binding closed"),this.#t.reset?.()}flush(e){this.ended||(typeof e!="number"&&(e=this.#r),this.write(Object.assign(Ae.Buffer.alloc(0),{[ms]:e})))}end(e,t,i){return typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&(t?this.write(e,t):this.write(e)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Ie](e){return super.write(e)}write(e,t,i){if(typeof t=="function"&&(i=t,t="utf8"),typeof e=="string"&&(e=Ae.Buffer.from(e,t)),this.#e)return;(0,ps.default)(this.#t,"zlib binding closed");let r=this.#t._handle,n=r.close;r.close=()=>{};let o=this.#t.close;this.#t.close=()=>{},ds(!0);let h;try{let l=typeof e[ms]=="number"?e[ms]:this.#s;h=this.#t._processChunk(e,l),ds(!1)}catch(l){ds(!1),this.#o(new Fe(l,this.write))}finally{this.#t&&(this.#t._handle=r,r.close=n,this.#t.close=o,this.#t.removeAllListeners("error"))}this.#t&&this.#t.on("error",l=>this.#o(new Fe(l,this.write)));let a;if(h)if(Array.isArray(h)&&h.length>0){let l=h[0];a=this[Ie](Ae.Buffer.from(l));for(let u=1;u{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(e,t)}finally{this.handle.flush=i}this.handle&&(this.#e=e,this.#i=t)}}}};f.Zlib=ie;var _s=class extends ie{constructor(e){super(e,"Deflate")}};f.Deflate=_s;var ws=class extends ie{constructor(e){super(e,"Inflate")}};f.Inflate=ws;var ys=class extends ie{#e;constructor(e){super(e,"Gzip"),this.#e=e&&!!e.portable}[Ie](e){return this.#e?(this.#e=!1,e[9]=255,super[Ie](e)):super[Ie](e)}};f.Gzip=ys;var Es=class extends ie{constructor(e){super(e,"Gunzip")}};f.Gunzip=Es;var bs=class extends ie{constructor(e){super(e,"DeflateRaw")}};f.DeflateRaw=bs;var Ss=class extends ie{constructor(e){super(e,"InflateRaw")}};f.InflateRaw=Ss;var gs=class extends ie{constructor(e){super(e,"Unzip")}};f.Unzip=gs;var Jt=class extends St{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||te.constants.BROTLI_OPERATION_FINISH,e.fullFlushFlag=te.constants.BROTLI_OPERATION_FLUSH,super(e,t)}},Os=class extends Jt{constructor(e){super(e,"BrotliCompress")}};f.BrotliCompress=Os;var Rs=class extends Jt{constructor(e){super(e,"BrotliDecompress")}};f.BrotliDecompress=Rs;var ei=class extends St{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.ZSTD_e_continue,e.finishFlush=e.finishFlush||te.constants.ZSTD_e_end,e.fullFlushFlag=te.constants.ZSTD_e_flush,super(e,t)}},vs=class extends ei{constructor(e){super(e,"ZstdCompress")}};f.ZstdCompress=vs;var Ts=class extends ei{constructor(e){super(e,"ZstdDecompress")}};f.ZstdDecompress=Ts});var Gr=d(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.parse=Xe.encode=void 0;var aa=(s,e)=>{if(Number.isSafeInteger(s))s<0?la(s,e):ha(s,e);else throw Error("cannot encode number outside of javascript safe integer range");return e};Xe.encode=aa;var ha=(s,e)=>{e[0]=128;for(var t=e.length;t>1;t--)e[t-1]=s&255,s=Math.floor(s/256)},la=(s,e)=>{e[0]=255;var t=!1;s=s*-1;for(var i=e.length;i>1;i--){var r=s&255;s=Math.floor(s/256),t?e[i-1]=Hr(r):r===0?e[i-1]=0:(t=!0,e[i-1]=Zr(r))}},ua=s=>{let e=s[0],t=e===128?fa(s.subarray(1,s.length)):e===255?ca(s):null;if(t===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(t))throw Error("parsed number outside of javascript safe integer range");return t};Xe.parse=ua;var ca=s=>{for(var e=s.length,t=0,i=!1,r=e-1;r>-1;r--){var n=Number(s[r]),o;i?o=Hr(n):n===0?o=n:(i=!0,o=Zr(n)),o!==0&&(t-=o*Math.pow(256,e-r-1))}return t},fa=s=>{for(var e=s.length,t=0,i=e-1;i>-1;i--){var r=Number(s[i]);r!==0&&(t+=r*Math.pow(256,e-i-1))}return t},Hr=s=>(255^s)&255,Zr=s=>(255^s)+1&255});var Ps=d(C=>{"use strict";Object.defineProperty(C,"__esModule",{value:!0});C.code=C.name=C.normalFsTypes=C.isName=C.isCode=void 0;var da=s=>C.name.has(s);C.isCode=da;var ma=s=>C.code.has(s);C.isName=ma;C.normalFsTypes=new Set(["0","","1","2","3","4","5","6","7","D"]);C.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);C.code=new Map(Array.from(C.name).map(s=>[s[1],s[0]]))});var et=d(se=>{"use strict";var pa=se&&se.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),_a=se&&se.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Yr=se&&se.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r=t+512))throw new Error("need 512 bytes for header");let n=Ce(e,t+156,1),o=Je.normalFsTypes.has(n),h=o?i:void 0,a=o?r:void 0;if(this.path=h?.path??Ce(e,t,100),this.mode=h?.mode??a?.mode??be(e,t+100,8),this.uid=h?.uid??a?.uid??be(e,t+108,8),this.gid=h?.gid??a?.gid??be(e,t+116,8),this.size=h?.size??a?.size??be(e,t+124,12),this.mtime=h?.mtime??a?.mtime??Ns(e,t+136,12),this.cksum=be(e,t+148,12),a&&this.#i(a,!0),h&&this.#i(h),Je.isCode(n)&&(this.#e=n||"0"),this.#e==="0"&&this.path.slice(-1)==="/"&&(this.#e="5"),this.#e==="5"&&(this.size=0),this.linkpath=Ce(e,t+157,100),e.subarray(t+257,t+265).toString()==="ustar\x0000")if(this.uname=h?.uname??a?.uname??Ce(e,t+265,32),this.gname=h?.gname??a?.gname??Ce(e,t+297,32),this.devmaj=h?.devmaj??a?.devmaj??be(e,t+329,8)??0,this.devmin=h?.devmin??a?.devmin??be(e,t+337,8)??0,e[t+475]!==0){let u=Ce(e,t+345,155);this.path=u+"/"+this.path}else{let u=Ce(e,t+345,130);u&&(this.path=u+"/"+this.path),this.atime=i?.atime??r?.atime??Ns(e,t+476,12),this.ctime=i?.ctime??r?.ctime??Ns(e,t+488,12)}let l=256;for(let u=t;u!(r==null||i==="path"&&t||i==="linkpath"&&t||i==="global"))))}encode(e,t=0){if(e||(e=this.block=Buffer.alloc(512)),this.#e==="Unsupported"&&(this.#e="0"),!(e.length>=t+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=wa(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=Be(e,t,100,n)||this.needPax,this.needPax=Se(e,t+100,8,this.mode)||this.needPax,this.needPax=Se(e,t+108,8,this.uid)||this.needPax,this.needPax=Se(e,t+116,8,this.gid)||this.needPax,this.needPax=Se(e,t+124,12,this.size)||this.needPax,this.needPax=Ms(e,t+136,12,this.mtime)||this.needPax,e[t+156]=Number(this.#e.codePointAt(0)),this.needPax=Be(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=Be(e,t+265,32,this.uname)||this.needPax,this.needPax=Be(e,t+297,32,this.gname)||this.needPax,this.needPax=Se(e,t+329,8,this.devmaj)||this.needPax,this.needPax=Se(e,t+337,8,this.devmin)||this.needPax,this.needPax=Be(e,t+345,i,o)||this.needPax,e[t+475]!==0?this.needPax=Be(e,t+345,155,o)||this.needPax:(this.needPax=Be(e,t+345,130,o)||this.needPax,this.needPax=Ms(e,t+476,12,this.atime)||this.needPax,this.needPax=Ms(e,t+488,12,this.ctime)||this.needPax);let h=256;for(let a=t;a{let i=s,r="",n,o=Qe.posix.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Qe.posix.dirname(i),i=Qe.posix.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=e?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=e?n=[i.slice(0,99),r,!0]:(i=Qe.posix.join(Qe.posix.basename(r),i),r=Qe.posix.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},Ce=(s,e,t)=>s.subarray(e,e+t).toString("utf8").replace(/\0.*/,""),Ns=(s,e,t)=>ya(be(s,e,t)),ya=s=>s===void 0?void 0:new Date(s*1e3),be=(s,e,t)=>Number(s[e])&128?Kr.parse(s.subarray(e,e+t)):ba(s,e,t),Ea=s=>isNaN(s)?void 0:s,ba=(s,e,t)=>Ea(parseInt(s.subarray(e,e+t).toString("utf8").replace(/\0.*$/,"").trim(),8)),Sa={12:8589934591,8:2097151},Se=(s,e,t,i)=>i===void 0?!1:i>Sa[t]||i<0?(Kr.encode(i,s.subarray(e,e+t)),!0):(ga(s,e,t,i),!1),ga=(s,e,t,i)=>s.write(Oa(i,t),e,t,"ascii"),Oa=(s,e)=>Ra(Math.floor(s).toString(8),e),Ra=(s,e)=>(s.length===e-1?s:new Array(e-s.length-1).join("0")+s+" ")+"\0",Ms=(s,e,t,i)=>i===void 0?!1:Se(s,e,t,i.getTime()/1e3),va=new Array(156).join("\0"),Be=(s,e,t,i)=>i===void 0?!1:(s.write(i+va,e,t,"utf8"),i.length!==Buffer.byteLength(i)||i.length>t)});var ii=d(ti=>{"use strict";Object.defineProperty(ti,"__esModule",{value:!0});ti.Pax=void 0;var Ta=require("node:path"),Da=et(),As=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(e,t=!1){this.atime=e.atime,this.charset=e.charset,this.comment=e.comment,this.ctime=e.ctime,this.dev=e.dev,this.gid=e.gid,this.global=t,this.gname=e.gname,this.ino=e.ino,this.linkpath=e.linkpath,this.mtime=e.mtime,this.nlink=e.nlink,this.path=e.path,this.size=e.size,this.uid=e.uid,this.uname=e.uname}encode(){let e=this.encodeBody();if(e==="")return Buffer.allocUnsafe(0);let t=Buffer.byteLength(e),i=512*Math.ceil(1+t/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new Da.Header({path:("PaxHeader/"+(0,Ta.basename)(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:t,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(e,512,t,"utf8");for(let n=t+512;n=Math.pow(10,o)&&(o+=1),o+n+r}static parse(e,t,i=!1){return new s(Pa(Na(e),t),i)}};ti.Pax=As;var Pa=(s,e)=>e?Object.assign({},e,s):s,Na=s=>s.replace(/\n$/,"").split(` -`).reduce(Ma,Object.create(null)),Ma=(s,e)=>{let t=parseInt(e,10);if(t!==Buffer.byteLength(e)+1)return s;e=e.slice((t+" ").length);let i=e.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=");return s[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(o)*1e3):/^[0-9]+$/.test(o)?+o:o,s}});var tt=d(si=>{"use strict";Object.defineProperty(si,"__esModule",{value:!0});si.normalizeWindowsPath=void 0;var La=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;si.normalizeWindowsPath=La!=="win32"?s=>s:s=>s&&s.replaceAll(/\\/g,"/")});var Fs=d(ni=>{"use strict";Object.defineProperty(ni,"__esModule",{value:!0});ni.ReadEntry=void 0;var Aa=We(),ri=tt(),Is=class extends Aa.Minipass{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(e,t,i){switch(super({}),this.pause(),this.extended=t,this.globalExtended=i,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!e.path)throw new Error("no path provided for tar.ReadEntry");this.path=(0,ri.normalizeWindowsPath)(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?(0,ri.normalizeWindowsPath)(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,t&&this.#e(t),i&&this.#e(i,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-t),this.blockRemain=Math.max(0,r-t),this.ignore?!0:i>=t?super.write(e):super.write(e.subarray(0,i))}#e(e,t=!1){e.path&&(e.path=(0,ri.normalizeWindowsPath)(e.path)),e.linkpath&&(e.linkpath=(0,ri.normalizeWindowsPath)(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([i,r])=>!(r==null||i==="path"&&t))))}};ni.ReadEntry=Is});var ai=d(oi=>{"use strict";Object.defineProperty(oi,"__esModule",{value:!0});oi.warnMethod=void 0;var Ia=(s,e,t,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=t instanceof Error&&t.code||e,i.tarCode=e,!s.strict&&i.recoverable!==!1?(t instanceof Error&&(i=Object.assign(t,i),t=t.message),s.emit("warn",e,t,i)):t instanceof Error?s.emit("error",Object.assign(t,i)):s.emit("error",Object.assign(new Error(`${e}: ${t}`),i))};oi.warnMethod=Ia});var pi=d(mi=>{"use strict";Object.defineProperty(mi,"__esModule",{value:!0});mi.Parser=void 0;var Fa=require("events"),Cs=Ds(),Vr=et(),$r=ii(),Ca=Fs(),Ba=ai(),za=1024*1024,js=Buffer.from([31,139]),Us=Buffer.from([40,181,47,253]),ka=Math.max(js.length,Us.length),H=Symbol("state"),ze=Symbol("writeEntry"),de=Symbol("readEntry"),Bs=Symbol("nextEntry"),Xr=Symbol("processEntry"),re=Symbol("extendedHeader"),gt=Symbol("globalExtendedHeader"),ge=Symbol("meta"),Qr=Symbol("emitMeta"),_=Symbol("buffer"),me=Symbol("queue"),Oe=Symbol("ended"),zs=Symbol("emittedEnd"),ke=Symbol("emit"),S=Symbol("unzip"),hi=Symbol("consumeChunk"),li=Symbol("consumeChunkSub"),ks=Symbol("consumeBody"),Jr=Symbol("consumeMeta"),en=Symbol("consumeHeader"),Ot=Symbol("consuming"),xs=Symbol("bufferConcat"),ui=Symbol("maybeEnd"),it=Symbol("writing"),Re=Symbol("aborted"),ci=Symbol("onDone"),xe=Symbol("sawValidEntry"),fi=Symbol("sawNullBlock"),di=Symbol("sawEOF"),tn=Symbol("closeStream"),xa=()=>!0,qs=class extends Fa.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[me]=[];[_];[de];[ze];[H]="begin";[ge]="";[re];[gt];[Oe]=!1;[S];[Re]=!1;[xe];[fi]=!1;[di]=!1;[it]=!1;[Ot]=!1;[zs]=!1;constructor(e={}){super(),this.file=e.file||"",this.on(ci,()=>{(this[H]==="begin"||this[xe]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(ci,e.ondone):this.on(ci,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||za,this.filter=typeof e.filter=="function"?e.filter:xa;let t=e.file&&(e.file.endsWith(".tar.br")||e.file.endsWith(".tbr"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:t?void 0:!1;let i=e.file&&(e.file.endsWith(".tar.zst")||e.file.endsWith(".tzst"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:i?!0:void 0,this.on("end",()=>this[tn]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onReadEntry=="function"&&this.on("entry",e.onReadEntry)}warn(e,t,i={}){(0,Ba.warnMethod)(this,e,t,i)}[en](e,t){this[xe]===void 0&&(this[xe]=!1);let i;try{i=new Vr.Header(e,t,this[re],this[gt])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[fi]?(this[di]=!0,this[H]==="begin"&&(this[H]="header"),this[ke]("eof")):(this[fi]=!0,this[ke]("nullBlock"));else if(this[fi]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[ze]=new Ca.ReadEntry(i,this[re],this[gt]);if(!this[xe])if(n.remain){let o=()=>{n.invalid||(this[xe]=!0)};n.on("end",o)}else this[xe]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[ke]("ignoredEntry",n),this[H]="ignore",n.resume()):n.size>0&&(this[ge]="",n.on("data",o=>this[ge]+=o),this[H]="meta"):(this[re]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[ke]("ignoredEntry",n),this[H]=n.remain?"ignore":"header",n.resume()):(n.remain?this[H]="body":(this[H]="header",n.end()),this[de]?this[me].push(n):(this[me].push(n),this[Bs]())))}}}[tn](){queueMicrotask(()=>this.emit("close"))}[Xr](e){let t=!0;if(!e)this[de]=void 0,t=!1;else if(Array.isArray(e)){let[i,...r]=e;this.emit(i,...r)}else this[de]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",()=>this[Bs]()),t=!1);return t}[Bs](){do;while(this[Xr](this[me].shift()));if(this[me].length===0){let e=this[de];!e||e.flowing||e.size===e.remain?this[it]||this.emit("drain"):e.once("drain",()=>this.emit("drain"))}}[ks](e,t){let i=this[ze];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=e.length&&t===0?e:e.subarray(t,t+r);return i.write(n),i.blockRemain||(this[H]="header",this[ze]=void 0,i.end()),n.length}[Jr](e,t){let i=this[ze],r=this[ks](e,t);return!this[ze]&&i&&this[Qr](i),r}[ke](e,t,i){this[me].length===0&&!this[de]?this.emit(e,t,i):this[me].push([e,t,i])}[Qr](e){switch(this[ke]("meta",this[ge]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[re]=$r.Pax.parse(this[ge],this[re],!1);break;case"GlobalExtendedHeader":this[gt]=$r.Pax.parse(this[ge],this[gt],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let t=this[re]??Object.create(null);this[re]=t,t.path=this[ge].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let t=this[re]||Object.create(null);this[re]=t,t.linkpath=this[ge].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Re]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this[Re])return i?.(),!1;if((this[S]===void 0||this.brotli===void 0&&this[S]===!1)&&e){if(this[_]&&(e=Buffer.concat([this[_],e]),this[_]=void 0),e.lengththis[hi](u)),this[S].on("error",u=>this.abort(u)),this[S].on("end",()=>{this[Oe]=!0,this[hi]()}),this[it]=!0;let l=!!this[S][a?"end":"write"](e);return this[it]=!1,i?.(),l}}this[it]=!0,this[S]?this[S].write(e):this[hi](e),this[it]=!1;let n=this[me].length>0?!1:this[de]?this[de].flowing:!0;return!n&&this[me].length===0&&this[de]?.once("drain",()=>this.emit("drain")),i?.(),n}[xs](e){e&&!this[Re]&&(this[_]=this[_]?Buffer.concat([this[_],e]):e)}[ui](){if(this[Oe]&&!this[zs]&&!this[Re]&&!this[Ot]){this[zs]=!0;let e=this[ze];if(e&&e.blockRemain){let t=this[_]?this[_].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[_]&&e.write(this[_]),e.end()}this[ke](ci)}}[hi](e){if(this[Ot]&&e)this[xs](e);else if(!e&&!this[_])this[ui]();else if(e){if(this[Ot]=!0,this[_]){this[xs](e);let t=this[_];this[_]=void 0,this[li](t)}else this[li](e);for(;this[_]&&this[_]?.length>=512&&!this[Re]&&!this[di];){let t=this[_];this[_]=void 0,this[li](t)}this[Ot]=!1}(!this[_]||this[Oe])&&this[ui]()}[li](e){let t=0,i=e.length;for(;t+512<=i&&!this[Re]&&!this[di];)switch(this[H]){case"begin":case"header":this[en](e,t),t+=512;break;case"ignore":case"body":t+=this[ks](e,t);break;case"meta":t+=this[Jr](e,t);break;default:throw new Error("invalid state: "+this[H])}t{"use strict";Object.defineProperty(_i,"__esModule",{value:!0});_i.stripTrailingSlashes=void 0;var ja=s=>{let e=s.length-1,t=-1;for(;e>-1&&s.charAt(e)==="/";)t=e,e--;return t===-1?s:s.slice(0,t)};_i.stripTrailingSlashes=ja});var rt=d(B=>{"use strict";var Ua=B&&B.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),qa=B&&B.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Wa=B&&B.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{let e=s.onReadEntry;s.onReadEntry=e?t=>{e(t),t.resume()}:t=>t.resume()},Ka=(s,e)=>{let t=new Map(e.map(n=>[(0,Ws.stripTrailingSlashes)(n),!0])),i=s.filter,r=(n,o="")=>{let h=o||(0,sn.parse)(n).root||".",a;if(n===h)a=!1;else{let l=t.get(n);a=l!==void 0?l:r((0,sn.dirname)(n),h)}return t.set(n,a),a};s.filter=i?(n,o)=>i(n,o)&&r((0,Ws.stripTrailingSlashes)(n)):n=>r((0,Ws.stripTrailingSlashes)(n))};B.filesFilter=Ka;var Va=s=>{let e=new yi.Parser(s),t=s.file,i;try{i=st.default.openSync(t,"r");let r=st.default.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size{let t=new yi.Parser(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{t.on("error",h),t.on("end",o),st.default.stat(r,(a,l)=>{if(a)h(a);else{let u=new Za.ReadStream(r,{readSize:i,size:l.size});u.on("error",h),u.pipe(t)}})})};B.list=(0,Ga.makeCommand)(Va,$a,s=>new yi.Parser(s),s=>new yi.Parser(s),(s,e)=>{e?.length&&(0,B.filesFilter)(s,e),s.noResume||Ya(s)})});var rn=d(Ei=>{"use strict";Object.defineProperty(Ei,"__esModule",{value:!0});Ei.modeFix=void 0;var Xa=(s,e,t)=>(s&=4095,t&&(s=(s|384)&-19),e&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);Ei.modeFix=Xa});var Hs=d(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});bi.stripAbsolutePath=void 0;var Qa=require("node:path"),{isAbsolute:Ja,parse:nn}=Qa.win32,eh=s=>{let e="",t=nn(s);for(;Ja(s)||t.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":t.root;s=s.slice(i.length),e+=i,t=nn(s)}return[e,s]};bi.stripAbsolutePath=eh});var Gs=d(nt=>{"use strict";Object.defineProperty(nt,"__esModule",{value:!0});nt.decode=nt.encode=void 0;var Si=["|","<",">","?",":"],Zs=Si.map(s=>String.fromCodePoint(61440+Number(s.codePointAt(0)))),th=new Map(Si.map((s,e)=>[s,Zs[e]])),ih=new Map(Zs.map((s,e)=>[s,Si[e]])),sh=s=>Si.reduce((e,t)=>e.split(t).join(th.get(t)),s);nt.encode=sh;var rh=s=>Zs.reduce((e,t)=>e.split(t).join(ih.get(t)),s);nt.decode=rh});var sr=d(M=>{"use strict";var nh=M&&M.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),oh=M&&M.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),ah=M&&M.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;re?(s=(0,ne.normalizeWindowsPath)(s).replace(/^\.(\/|$)/,""),(0,hh.stripTrailingSlashes)(e)+"/"+s):(0,ne.normalizeWindowsPath)(s),uh=16*1024*1024,an=Symbol("process"),hn=Symbol("file"),ln=Symbol("directory"),Ks=Symbol("symlink"),un=Symbol("hardlink"),Rt=Symbol("header"),gi=Symbol("read"),Vs=Symbol("lstat"),Oi=Symbol("onlstat"),$s=Symbol("onread"),Xs=Symbol("onreadlink"),Qs=Symbol("openfile"),Js=Symbol("onopenfile"),ve=Symbol("close"),Ri=Symbol("mode"),er=Symbol("awaitDrain"),Ys=Symbol("ondrain"),ae=Symbol("prefix"),vi=class extends fn.Minipass{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#e=!1;constructor(e,t={}){let i=(0,pn.dealias)(t);super(),this.path=(0,ne.normalizeWindowsPath)(e),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||uh,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=(0,ne.normalizeWindowsPath)(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?(0,ne.normalizeWindowsPath)(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,h]=(0,wn.stripAbsolutePath)(this.path);o&&typeof h=="string"&&(this.path=h,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=lh.decode(this.path.replaceAll(/\\/g,"/")),e=e.replaceAll(/\\/g,"/")),this.absolute=(0,ne.normalizeWindowsPath)(i.absolute||on.default.resolve(this.cwd,e)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[Oi](n):this[Vs]()}warn(e,t,i={}){return(0,yn.warnMethod)(this,e,t,i)}emit(e,...t){return e==="error"&&(this.#e=!0),super.emit(e,...t)}[Vs](){oe.default.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[Oi](t)})}[Oi](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=ch(e),this.emit("stat",e),this[an]()}[an](){switch(this.type){case"File":return this[hn]();case"Directory":return this[ln]();case"SymbolicLink":return this[Ks]();default:return this.end()}}[Ri](e){return(0,mn.modeFix)(e,this.type==="Directory",this.portable)}[ae](e){return En(e,this.prefix)}[Rt](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new dn.Header({path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,mode:this[Ri](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new _n.Pax({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error("failed to encode header");super.write(e)}[ln](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Rt](),this.end()}[Ks](){oe.default.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[Xs](t)})}[Xs](e){this.linkpath=(0,ne.normalizeWindowsPath)(e),this[Rt](),this.end()}[un](e){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=(0,ne.normalizeWindowsPath)(on.default.relative(this.cwd,e)),this.stat.size=0,this[Rt](),this.end()}[hn](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,t=this.linkCache.get(e);if(t?.indexOf(this.cwd)===0)return this[un](t);this.linkCache.set(e,this.absolute)}if(this[Rt](),this.stat.size===0)return this.end();this[Qs]()}[Qs](){oe.default.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[Js](t)})}[Js](e){if(this.fd=e,this.#e)return this[ve]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[gi]()}[gi](){let{fd:e,buf:t,offset:i,length:r,pos:n}=this;if(e===void 0||t===void 0)throw new Error("cannot read file without first opening");oe.default.read(e,t,i,r,n,(o,h)=>{if(o)return this[ve](()=>this.emit("error",o));this[$s](h)})}[ve](e=()=>{}){this.fd!==void 0&&oe.default.close(this.fd,e)}[$s](e){if(e<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(e>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(e===this.remain)for(let r=e;rthis[Ys]())}[er](e){this.once("drain",e)}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this.blockRemaine?this.emit("error",e):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[gi]()}};M.WriteEntry=vi;var tr=class extends vi{sync=!0;[Vs](){this[Oi](oe.default.lstatSync(this.absolute))}[Ks](){this[Xs](oe.default.readlinkSync(this.absolute))}[Qs](){this[Js](oe.default.openSync(this.absolute,"r"))}[gi](){let e=!0;try{let{fd:t,buf:i,offset:r,length:n,pos:o}=this;if(t===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let h=oe.default.readSync(t,i,r,n,o);this[$s](h),e=!1}finally{if(e)try{this[ve](()=>{})}catch{}}}[er](e){e()}[ve](e=()=>{}){this.fd!==void 0&&oe.default.closeSync(this.fd),e()}};M.WriteEntrySync=tr;var ir=class extends fn.Minipass{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,t,i={}){return(0,yn.warnMethod)(this,e,t,i)}constructor(e,t={}){let i=(0,pn.dealias)(t);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=e;let{type:r}=e;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=(0,ne.normalizeWindowsPath)(e.path),this.mode=e.mode!==void 0?this[Ri](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:i.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?(0,ne.normalizeWindowsPath)(e.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[h,a]=(0,wn.stripAbsolutePath)(this.path);h&&typeof a=="string"&&(this.path=a,n=h)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new dn.Header({path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new _n.Pax({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),e.pipe(this)}[ae](e){return En(e,this.prefix)}[Ri](e){return(0,mn.modeFix)(e,this.type==="Directory",this.portable)}write(e,t,i){typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8"));let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e,i)}end(e,t,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,t??"utf8")),i&&this.once("finish",i),e?super.end(e,i):super.end(i),this}};M.WriteEntryTar=ir;var ch=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported"});var bn=d(at=>{"use strict";Object.defineProperty(at,"__esModule",{value:!0});at.Node=at.Yallist=void 0;var rr=class s{tail;head;length=0;static create(e=[]){return new s(e)}constructor(e=[]){for(let t of e)this.push(t)}*[Symbol.iterator](){for(let e=this.head;e;e=e.next)yield e.value}removeNode(e){if(e.list!==this)throw new Error("removing node which does not belong to this list");let t=e.next,i=e.prev;return t&&(t.prev=i),i&&(i.next=t),e===this.head&&(this.head=t),e===this.tail&&(this.tail=i),this.length--,e.next=void 0,e.prev=void 0,e.list=void 0,t}unshiftNode(e){if(e===this.head)return;e.list&&e.list.removeNode(e);let t=this.head;e.list=this,e.next=t,t&&(t.prev=e),this.head=e,this.tail||(this.tail=e),this.length++}pushNode(e){if(e===this.tail)return;e.list&&e.list.removeNode(e);let t=this.tail;e.list=this,e.prev=t,t&&(t.next=e),this.tail=e,this.head||(this.head=e),this.length++}push(...e){for(let t=0,i=e.length;t1)i=t;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=e(i,r.value,n),r=r.next;return i}reduceReverse(e,t){let i,r=this.tail;if(arguments.length>1)i=t;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=e(i,r.value,n),r=r.prev;return i}toArray(){let e=new Array(this.length);for(let t=0,i=this.head;i;t++)e[t]=i.value,i=i.next;return e}toArrayReverse(){let e=new Array(this.length);for(let t=0,i=this.tail;i;t++)e[t]=i.value,i=i.prev;return e}slice(e=0,t=this.length){t<0&&(t+=this.length),e<0&&(e+=this.length);let i=new s;if(tthis.length&&(t=this.length);let r=this.head,n=0;for(n=0;r&&nthis.length&&(t=this.length);let r=this.length,n=this.tail;for(;n&&r>t;r--)n=n.prev;for(;n&&r>e;r--,n=n.prev)i.push(n.value);return i}splice(e,t=0,...i){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);let r=this.head;for(let o=0;r&&o{"use strict";var ph=L&&L.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),_h=L&&L.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),wh=L&&L.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(e.gzip&&(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new nr.Gzip(e.gzip)),e.brotli&&(typeof e.brotli!="object"&&(e.brotli={}),this.zip=new nr.BrotliCompress(e.brotli)),e.zstd&&(typeof e.zstd!="object"&&(e.zstd={}),this.zip=new nr.ZstdCompress(e.zstd)),!this.zip)throw new Error("impossible");let t=this.zip;t.on("data",i=>super.write(i)),t.on("end",()=>super.end()),t.on("drain",()=>this[hr]()),this.on("resume",()=>t.resume())}else this.on("drain",this[hr]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter=="function"?e.filter:()=>!0,this[X]=new Eh.Yallist,this[Q]=0,this.jobs=Number(e.jobs)||4,this[Dt]=!1,this[vt]=!1}[Tn](e){return super.write(e)}add(e){return this.write(e),this}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&this.add(e),this[vt]=!0,this[je](),i&&i(),this}write(e){if(this[vt])throw new Error("write after end");return typeof e=="string"?this[Pi](e):this[gn](e),this.flowing}[gn](e){let t=(0,lr.normalizeWindowsPath)(Rn.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let i=new Pt(e.path,t);i.entry=new ur.WriteEntryTar(e,this[ar](i)),i.entry.on("end",()=>this[or](i)),this[Q]+=1,this[X].push(i)}this[je]()}[Pi](e){let t=(0,lr.normalizeWindowsPath)(Rn.default.resolve(this.cwd,e));this[X].push(new Pt(e,t)),this[je]()}[cr](e){e.pending=!0,this[Q]+=1;let t=this.follow?"stat":"lstat";Ai.default[t](e.absolute,(i,r)=>{e.pending=!1,this[Q]-=1,i?this.emit("error",i):this[Di](e,r)})}[Di](e,t){if(this.statCache.set(e.absolute,t),e.stat=t,!this.filter(e.path,t))e.ignore=!0;else if(t.isFile()&&t.nlink>1&&!this.linkCache.get(`${t.dev}:${t.ino}`)&&!this.sync)if(e===this[Te])this[Ti](e);else{let i=`${t.dev}:${t.ino}`,r=this[Tt].get(i);r?r.push(e):this[Tt].set(i,[e]),e.pendingLink=!0,e.pending=!0}this[je]()}[fr](e){e.pending=!0,this[Q]+=1,Ai.default.readdir(e.absolute,(t,i)=>{if(e.pending=!1,this[Q]-=1,t)return this.emit("error",t);this[Ni](e,i)})}[Ni](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[je]()}[je](){if(!this[Dt]){this[Dt]=!0;for(let e=this[X].head;e&&this[Q]1){let i=`${t.dev}:${t.ino}`,r=this[Tt].get(i);if(r){this[Tt].delete(i);for(let n of r)n.pending=!1,this[Ti](n)}}this[je]()}[Ti](e){if(e.pending&&e.pendingLink&&e===this[Te]&&(e.pending=!1,e.pendingLink=!1),!e.pending){if(e.entry){e===this[Te]&&!e.piped&&this[Mi](e);return}if(!e.stat){let t=this.statCache.get(e.absolute);t?this[Di](e,t):this[cr](e)}if(e.stat&&!e.ignore){if(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir){let t=this.readdirCache.get(e.absolute);if(t?this[Ni](e,t):this[fr](e),!e.readdir)return}if(e.entry=this[On](e),!e.entry){e.ignore=!0;return}e===this[Te]&&!e.piped&&this[Mi](e)}}}[ar](e){return{onwarn:(t,i,r)=>this.warn(t,i,r),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[On](e){this[Q]+=1;try{return new this[Li](e.path,this[ar](e)).on("end",()=>this[or](e)).on("error",i=>this.emit("error",i))}catch(t){this.emit("error",t)}}[hr](){this[Te]&&this[Te].entry&&this[Te].entry.resume()}[Mi](e){e.piped=!0,e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Pi](o+r)});let t=e.entry,i=this.zip;if(!t)throw new Error("cannot pipe without source");i?t.on("data",r=>{i.write(r)||t.pause()}):t.on("data",r=>{super.write(r)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,t,i={}){(0,bh.warnMethod)(this,e,t,i)}};L.Pack=Ii;var dr=class extends Ii{sync=!0;constructor(e){super(e),this[Li]=ur.WriteEntrySync}pause(){}resume(){}[cr](e){let t=this.follow?"statSync":"lstatSync";this[Di](e,Ai.default[t](e.absolute))}[fr](e){this[Ni](e,Ai.default.readdirSync(e.absolute))}[Mi](e){let t=e.entry,i=this.zip;if(e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Pi](o+r)}),!t)throw new Error("Cannot pipe without source");i?t.on("data",r=>{i.write(r)}):t.on("data",r=>{super[Tn](r)})}};L.PackSync=dr});var mr=d(ht=>{"use strict";var Sh=ht&&ht.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ht,"__esModule",{value:!0});ht.create=void 0;var Dn=Ke(),Pn=Sh(require("node:path")),Nn=rt(),gh=Ve(),Ci=Fi(),Oh=(s,e)=>{let t=new Ci.PackSync(s),i=new Dn.WriteStreamSync(s.file,{mode:s.mode||438});t.pipe(i),Mn(t,e)},Rh=(s,e)=>{let t=new Ci.Pack(s),i=new Dn.WriteStream(s.file,{mode:s.mode||438});t.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),t.on("error",o)});return Ln(t,e).catch(n=>t.emit("error",n)),r},Mn=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,Nn.list)({file:Pn.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},Ln=async(s,e)=>{for(let t of e)t.charAt(0)==="@"?await(0,Nn.list)({file:Pn.default.resolve(String(s.cwd),t.slice(1)),noResume:!0,onReadEntry:i=>{s.add(i)}}):s.add(t);s.end()},vh=(s,e)=>{let t=new Ci.PackSync(s);return Mn(t,e),t},Th=(s,e)=>{let t=new Ci.Pack(s);return Ln(t,e).catch(i=>t.emit("error",i)),t};ht.create=(0,gh.makeCommand)(Oh,Rh,vh,Th,(s,e)=>{if(!e?.length)throw new TypeError("no paths specified to add to archive")})});var jn=d(lt=>{"use strict";var Dh=lt&<.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(lt,"__esModule",{value:!0});lt.getWriteFlag=void 0;var Fn=Dh(require("fs")),Ph=process.env.__FAKE_PLATFORM__||process.platform,Cn=Ph==="win32",{O_CREAT:Bn,O_NOFOLLOW:An,O_TRUNC:zn,O_WRONLY:kn}=Fn.default.constants,xn=Number(process.env.__FAKE_FS_O_FILENAME__)||Fn.default.constants.UV_FS_O_FILEMAP||0,Nh=Cn&&!!xn,Mh=512*1024,Lh=xn|zn|Bn|kn,In=!Cn&&typeof An=="number"?An|zn|Bn|kn:null;lt.getWriteFlag=In!==null?()=>In:Nh?s=>s"w"});var qn=d(he=>{"use strict";var Un=he&&he.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(he,"__esModule",{value:!0});he.chownrSync=he.chownr=void 0;var zi=Un(require("node:fs")),Nt=Un(require("node:path")),pr=(s,e,t)=>{try{return zi.default.lchownSync(s,e,t)}catch(i){if(i?.code!=="ENOENT")throw i}},Bi=(s,e,t,i)=>{zi.default.lchown(s,e,t,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},Ah=(s,e,t,i,r)=>{if(e.isDirectory())(0,he.chownr)(Nt.default.resolve(s,e.name),t,i,n=>{if(n)return r(n);let o=Nt.default.resolve(s,e.name);Bi(o,t,i,r)});else{let n=Nt.default.resolve(s,e.name);Bi(n,t,i,r)}},Ih=(s,e,t,i)=>{zi.default.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return Bi(s,e,t,i);let o=n.length,h=null,a=l=>{if(!h){if(l)return i(h=l);if(--o===0)return Bi(s,e,t,i)}};for(let l of n)Ah(s,l,e,t,a)})};he.chownr=Ih;var Fh=(s,e,t,i)=>{e.isDirectory()&&(0,he.chownrSync)(Nt.default.resolve(s,e.name),t,i),pr(Nt.default.resolve(s,e.name),t,i)},Ch=(s,e,t)=>{let i;try{i=zi.default.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return pr(s,e,t);throw n}for(let r of i)Fh(s,r,e,t);return pr(s,e,t)};he.chownrSync=Ch});var Wn=d(ki=>{"use strict";Object.defineProperty(ki,"__esModule",{value:!0});ki.CwdError=void 0;var _r=class extends Error{path;code;syscall="chdir";constructor(e,t){super(`${t}: Cannot cd into '${e}'`),this.path=e,this.code=t}get name(){return"CwdError"}};ki.CwdError=_r});var yr=d(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.SymlinkError=void 0;var wr=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(e,t){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=e,this.path=t}get name(){return"SymlinkError"}};xi.SymlinkError=wr});var Kn=d(De=>{"use strict";var br=De&&De.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(De,"__esModule",{value:!0});De.mkdirSync=De.mkdir=void 0;var Hn=qn(),j=br(require("node:fs")),Bh=br(require("node:fs/promises")),ji=br(require("node:path")),Zn=Wn(),pe=tt(),Gn=yr(),zh=(s,e)=>{j.default.stat(s,(t,i)=>{(t||!i.isDirectory())&&(t=new Zn.CwdError(s,t?.code||"ENOTDIR")),e(t)})},kh=(s,e,t)=>{s=(0,pe.normalizeWindowsPath)(s);let i=e.umask??18,r=e.mode|448,n=(r&i)!==0,o=e.uid,h=e.gid,a=typeof o=="number"&&typeof h=="number"&&(o!==e.processUid||h!==e.processGid),l=e.preserve,u=e.unlink,c=(0,pe.normalizeWindowsPath)(e.cwd),E=(w,P)=>{w?t(w):P&&a?(0,Hn.chownr)(P,o,h,kt=>E(kt)):n?j.default.chmod(s,r,t):t()};if(s===c)return zh(s,E);if(l)return Bh.default.mkdir(s,{mode:r,recursive:!0}).then(w=>E(null,w??void 0),E);let A=(0,pe.normalizeWindowsPath)(ji.default.relative(c,s)).split("/");Er(c,A,r,u,c,void 0,E)};De.mkdir=kh;var Er=(s,e,t,i,r,n,o)=>{if(e.length===0)return o(null,n);let h=e.shift(),a=(0,pe.normalizeWindowsPath)(ji.default.resolve(s+"/"+h));j.default.mkdir(a,t,Yn(a,e,t,i,r,n,o))},Yn=(s,e,t,i,r,n,o)=>h=>{h?j.default.lstat(s,(a,l)=>{if(a)a.path=a.path&&(0,pe.normalizeWindowsPath)(a.path),o(a);else if(l.isDirectory())Er(s,e,t,i,r,n,o);else if(i)j.default.unlink(s,u=>{if(u)return o(u);j.default.mkdir(s,t,Yn(s,e,t,i,r,n,o))});else{if(l.isSymbolicLink())return o(new Gn.SymlinkError(s,s+"/"+e.join("/")));o(h)}}):(n=n||s,Er(s,e,t,i,r,n,o))},xh=s=>{let e=!1,t;try{e=j.default.statSync(s).isDirectory()}catch(i){t=i?.code}finally{if(!e)throw new Zn.CwdError(s,t??"ENOTDIR")}},jh=(s,e)=>{s=(0,pe.normalizeWindowsPath)(s);let t=e.umask??18,i=e.mode|448,r=(i&t)!==0,n=e.uid,o=e.gid,h=typeof n=="number"&&typeof o=="number"&&(n!==e.processUid||o!==e.processGid),a=e.preserve,l=e.unlink,u=(0,pe.normalizeWindowsPath)(e.cwd),c=w=>{w&&h&&(0,Hn.chownrSync)(w,n,o),r&&j.default.chmodSync(s,i)};if(s===u)return xh(u),c();if(a)return c(j.default.mkdirSync(s,{mode:i,recursive:!0})??void 0);let D=(0,pe.normalizeWindowsPath)(ji.default.relative(u,s)).split("/"),A;for(let w=D.shift(),P=u;w&&(P+="/"+w);w=D.shift()){P=(0,pe.normalizeWindowsPath)(ji.default.resolve(P));try{j.default.mkdirSync(P,i),A=A||P}catch{let kt=j.default.lstatSync(P);if(kt.isDirectory())continue;if(l){j.default.unlinkSync(P),j.default.mkdirSync(P,i),A=A||P;continue}else if(kt.isSymbolicLink())return new Gn.SymlinkError(P,P+"/"+D.join("/"))}}return c(A)};De.mkdirSync=jh});var $n=d(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.normalizeUnicode=void 0;var Sr=Object.create(null),Vn=1e4,ut=new Set,Uh=s=>{ut.has(s)?ut.delete(s):Sr[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),ut.add(s);let e=Sr[s],t=ut.size-Vn;if(t>Vn/10){for(let i of ut)if(ut.delete(i),delete Sr[i],--t<=0)break}return e};Ui.normalizeUnicode=Uh});var Qn=d(qi=>{"use strict";Object.defineProperty(qi,"__esModule",{value:!0});qi.PathReservations=void 0;var Xn=require("node:path"),qh=$n(),Wh=wi(),Hh=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Zh=Hh==="win32",Gh=s=>s.split("/").slice(0,-1).reduce((t,i)=>{let r=t.at(-1);return r!==void 0&&(i=(0,Xn.join)(r,i)),t.push(i||"/"),t},[]),gr=class{#e=new Map;#i=new Map;#s=new Set;reserve(e,t){e=Zh?["win32 parallelization disabled"]:e.map(r=>(0,Wh.stripTrailingSlashes)((0,Xn.join)((0,qh.normalizeUnicode)(r))));let i=new Set(e.map(r=>Gh(r)).reduce((r,n)=>r.concat(n)));this.#i.set(t,{dirs:i,paths:e});for(let r of e){let n=this.#e.get(r);n?n.push(t):this.#e.set(r,[t])}for(let r of i){let n=this.#e.get(r);if(!n)this.#e.set(r,[new Set([t])]);else{let o=n.at(-1);o instanceof Set?o.add(t):n.push(new Set([t]))}}return this.#r(t)}#n(e){let t=this.#i.get(e);if(!t)throw new Error("function does not have any path reservations");return{paths:t.paths.map(i=>this.#e.get(i)),dirs:[...t.dirs].map(i=>this.#e.get(i))}}check(e){let{paths:t,dirs:i}=this.#n(e);return t.every(r=>r&&r[0]===e)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(e))}#r(e){return this.#s.has(e)||!this.check(e)?!1:(this.#s.add(e),e(()=>this.#t(e)),!0)}#t(e){if(!this.#s.has(e))return!1;let t=this.#i.get(e);if(!t)throw new Error("invalid reservation");let{paths:i,dirs:r}=t,n=new Set;for(let o of i){let h=this.#e.get(o);if(!h||h?.[0]!==e)continue;let a=h[1];if(!a){this.#e.delete(o);continue}if(h.shift(),typeof a=="function")n.add(a);else for(let l of a)n.add(l)}for(let o of r){let h=this.#e.get(o),a=h?.[0];if(!(!h||!(a instanceof Set)))if(a.size===1&&h.length===1){this.#e.delete(o);continue}else if(a.size===1){h.shift();let l=h[0];typeof l=="function"&&n.add(l)}else a.delete(e)}return this.#s.delete(e),n.forEach(o=>this.#r(o)),!0}};qi.PathReservations=gr});var Jn=d(Wi=>{"use strict";Object.defineProperty(Wi,"__esModule",{value:!0});Wi.umask=void 0;var Yh=()=>process.umask();Wi.umask=Yh});var Ir=d(k=>{"use strict";var Kh=k&&k.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Vh=k&&k.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),lo=k&&k.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{if(!Bt)return m.default.unlink(s,e);let t=s+".DELETE."+(0,uo.randomBytes)(16).toString("hex");m.default.rename(s,t,i=>{if(i)return e(i);m.default.unlink(t,e)})},nl=s=>{if(!Bt)return m.default.unlinkSync(s);let e=s+".DELETE."+(0,uo.randomBytes)(16).toString("hex");m.default.renameSync(s,e),m.default.unlinkSync(e)},ho=(s,e,t)=>s!==void 0&&s===s>>>0?s:e!==void 0&&e===e>>>0?e:t,Gi=class extends Qh.Parser{[Rr]=!1;[Ct]=!1;[Hi]=0;reservations=new el.PathReservations;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[Rr]=!0,this[vr]()},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;this.preserveOwner=e.preserveOwner===void 0&&typeof e.uid!="number"?!!(process.getuid&&process.getuid()===0):!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:sl,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Bt,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=(0,U.normalizeWindowsPath)(g.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask=="number"?e.processUmask:(0,tl.umask)():0,this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[to](t))}warn(e,t,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,t,i)}[vr](){this[Rr]&&this[Hi]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[Or](e,t){let i=e[t],{type:r}=e;if(!i||this.preservePaths)return!0;let[n,o]=(0,Jh.stripAbsolutePath)(i),h=o.replaceAll(/\\/g,"/").split("/");if(h.includes("..")||Bt&&/^[a-z]:\.\.$/i.test(h[0]??"")){if(t==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${t} contains '..'`,{entry:e,[t]:i}),!1;let a=g.default.posix.dirname(e.path),l=g.default.posix.normalize(g.default.posix.join(a,h.join("/")));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${t} escapes extraction directory`,{entry:e,[t]:i}),!1}return n&&(e[t]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${t}`,{entry:e,[t]:i})),!0}[oo](e){let t=(0,U.normalizeWindowsPath)(e.path),i=t.split("/");if(this.strip){if(i.length=this.strip)e.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),e.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:e,path:t,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[Or](e,"path")||!this[Or](e,"linkpath"))return!1;if(e.absolute=g.default.isAbsolute(e.path)?(0,U.normalizeWindowsPath)(g.default.resolve(e.path)):(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute=="string"&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:(0,U.normalizeWindowsPath)(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=g.default.win32.parse(String(e.absolute));e.absolute=r+eo.encode(String(e.absolute).slice(r.length));let{root:n}=g.default.win32.parse(e.path);e.path=n+eo.encode(e.path.slice(n.length))}return!0}[to](e){if(!this[oo](e))return e.resume();switch(Xh.default.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Tr](e);default:return this[no](e)}}[T](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[ct](),t.resume())}[Pe](e,t,i){(0,fo.mkdir)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t},i)}[At](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[It](e){return ho(this.uid,e.uid,this.processUid)}[Ft](e){return ho(this.gid,e.gid,this.processGid)}[Pr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=new $h.WriteStream(String(e.absolute),{flags:(0,co.getWriteFlag)(e.size),mode:i,autoClose:!1});r.on("error",a=>{r.fd&&m.default.close(r.fd,()=>{}),r.write=()=>!0,this[T](a,e),t()});let n=1,o=a=>{if(a){r.fd&&m.default.close(r.fd,()=>{}),this[T](a,e),t();return}--n===0&&r.fd!==void 0&&m.default.close(r.fd,l=>{l?this[T](l,e):this[ct](),t()})};r.on("finish",()=>{let a=String(e.absolute),l=r.fd;if(typeof l=="number"&&e.mtime&&!this.noMtime){n++;let u=e.atime||new Date,c=e.mtime;m.default.futimes(l,u,c,E=>E?m.default.utimes(a,u,c,D=>o(D&&E)):o())}if(typeof l=="number"&&this[At](e)){n++;let u=this[It](e),c=this[Ft](e);typeof u=="number"&&typeof c=="number"&&m.default.fchown(l,u,c,E=>E?m.default.chown(a,u,c,D=>o(D&&E)):o())}o()});let h=this.transform&&this.transform(e)||e;h!==e&&(h.on("error",a=>{this[T](a,e),t()}),e.pipe(h)),h.pipe(r)}[Nr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode;this[Pe](String(e.absolute),i,r=>{if(r){this[T](r,e),t();return}let n=1,o=()=>{--n===0&&(t(),this[ct](),e.resume())};e.mtime&&!this.noMtime&&(n++,m.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,o)),this[At](e)&&(n++,m.default.chown(String(e.absolute),Number(this[It](e)),Number(this[Ft](e)),o)),o()})}[no](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[so](e,t){let i=(0,U.normalizeWindowsPath)(g.default.relative(this.cwd,g.default.resolve(g.default.dirname(String(e.absolute)),String(e.linkpath)))).split("/");this[Lt](e,this.cwd,i,()=>this[Zi](e,String(e.linkpath),"symlink",t),r=>{this[T](r,e),t()})}[ro](e,t){let i=(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,String(e.linkpath))),r=(0,U.normalizeWindowsPath)(String(e.linkpath)).split("/");this[Lt](e,this.cwd,r,()=>this[Zi](e,i,"link",t),n=>{this[T](n,e),t()})}[Lt](e,t,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let h=g.default.resolve(t,o);m.default.lstat(h,(a,l)=>{if(a)return r();if(l?.isSymbolicLink())return n(new mo.SymlinkError(h,g.default.resolve(h,i.join("/"))));this[Lt](e,h,i,r,n)})}[ao](){this[Hi]++}[ct](){this[Hi]--,this[vr]()}[Mr](e){this[ct](),e.resume()}[Dr](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!Bt}[Tr](e){this[ao]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,i=>this[io](e,i))}[io](e,t){let i=h=>{t(h)},r=()=>{this[Pe](this.cwd,this.dmode,h=>{if(h){this[T](h,e),i();return}this[Ct]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let h=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(h!==this.cwd)return this[Pe](h,this.dmode,a=>{if(a){this[T](a,e),i();return}o()})}o()},o=()=>{m.default.lstat(String(e.absolute),(h,a)=>{if(a&&(this.keep||this.newer&&a.mtime>(e.mtime??a.mtime))){this[Mr](e),i();return}if(h||this[Dr](e,a))return this[Z](null,e,i);if(a.isDirectory()){if(e.type==="Directory"){let l=this.chmod&&e.mode&&(a.mode&4095)!==e.mode,u=c=>this[Z](c??null,e,i);return l?m.default.chmod(String(e.absolute),Number(e.mode),u):u()}if(e.absolute!==this.cwd)return m.default.rmdir(String(e.absolute),l=>this[Z](l??null,e,i))}if(e.absolute===this.cwd)return this[Z](null,e,i);rl(String(e.absolute),l=>this[Z](l??null,e,i))})};this[Ct]?n():r()}[Z](e,t,i){if(e){this[T](e,t),i();return}switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[Pr](t,i);case"Link":return this[ro](t,i);case"SymbolicLink":return this[so](t,i);case"Directory":case"GNUDumpDir":return this[Nr](t,i)}}[Zi](e,t,i,r){m.default[i](t,String(e.absolute),n=>{n?this[T](n,e):(this[ct](),e.resume()),r()})}};k.Unpack=Gi;var Mt=s=>{try{return[null,s()]}catch(e){return[e,null]}},Lr=class extends Gi{sync=!0;[Z](e,t){return super[Z](e,t,()=>{})}[Tr](e){if(!this[Ct]){let n=this[Pe](this.cwd,this.dmode);if(n)return this[T](n,e);this[Ct]=!0}if(e.absolute!==this.cwd){let n=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(n!==this.cwd){let o=this[Pe](n,this.dmode);if(o)return this[T](o,e)}}let[t,i]=Mt(()=>m.default.lstatSync(String(e.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(e.mtime??i.mtime)))return this[Mr](e);if(t||this[Dr](e,i))return this[Z](null,e);if(i.isDirectory()){if(e.type==="Directory"){let o=this.chmod&&e.mode&&(i.mode&4095)!==e.mode,[h]=o?Mt(()=>{m.default.chmodSync(String(e.absolute),Number(e.mode))}):[];return this[Z](h,e)}let[n]=Mt(()=>m.default.rmdirSync(String(e.absolute)));this[Z](n,e)}let[r]=e.absolute===this.cwd?[]:Mt(()=>nl(String(e.absolute)));this[Z](r,e)}[Pr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=h=>{let a;try{m.default.closeSync(n)}catch(l){a=l}(h||a)&&this[T](h||a,e),t()},n;try{n=m.default.openSync(String(e.absolute),(0,co.getWriteFlag)(e.size),i)}catch(h){return r(h)}let o=this.transform&&this.transform(e)||e;o!==e&&(o.on("error",h=>this[T](h,e)),e.pipe(o)),o.on("data",h=>{try{m.default.writeSync(n,h,0,h.length)}catch(a){r(a)}}),o.on("end",()=>{let h=null;if(e.mtime&&!this.noMtime){let a=e.atime||new Date,l=e.mtime;try{m.default.futimesSync(n,a,l)}catch(u){try{m.default.utimesSync(String(e.absolute),a,l)}catch{h=u}}}if(this[At](e)){let a=this[It](e),l=this[Ft](e);try{m.default.fchownSync(n,Number(a),Number(l))}catch(u){try{m.default.chownSync(String(e.absolute),Number(a),Number(l))}catch{h=h||u}}}r(h)})}[Nr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode,r=this[Pe](String(e.absolute),i);if(r){this[T](r,e),t();return}if(e.mtime&&!this.noMtime)try{m.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime)}catch{}if(this[At](e))try{m.default.chownSync(String(e.absolute),Number(this[It](e)),Number(this[Ft](e)))}catch{}t(),e.resume()}[Pe](e,t){try{return(0,fo.mkdirSync)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t})}catch(i){return i}}[Lt](e,t,i,r,n){if(this.preservePaths||i.length===0)return r();let o=t;for(let h of i){o=g.default.resolve(o,h);let[a,l]=Mt(()=>m.default.lstatSync(o));if(a)return r();if(l.isSymbolicLink())return n(new mo.SymlinkError(o,g.default.resolve(t,i.join("/"))))}r()}[Zi](e,t,i,r){let n=`${i}Sync`;try{m.default[n](t,String(e.absolute)),r(),e.resume()}catch(o){return this[T](o,e)}}};k.UnpackSync=Lr});var Fr=d(G=>{"use strict";var ol=G&&G.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),al=G&&G.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),hl=G&&G.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{let e=new Yi.UnpackSync(s),t=s.file,i=_o.default.statSync(t),r=s.maxReadSize||16*1024*1024;new po.ReadStreamSync(t,{readSize:r,size:i.size}).pipe(e)},dl=(s,e)=>{let t=new Yi.Unpack(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{t.on("error",h),t.on("close",o),_o.default.stat(r,(a,l)=>{if(a)h(a);else{let u=new po.ReadStream(r,{readSize:i,size:l.size});u.on("error",h),u.pipe(t)}})})};G.extract=(0,cl.makeCommand)(fl,dl,s=>new Yi.UnpackSync(s),s=>new Yi.Unpack(s),(s,e)=>{e?.length&&(0,ul.filesFilter)(s,e)})});var Ki=d(ft=>{"use strict";var wo=ft&&ft.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ft,"__esModule",{value:!0});ft.replace=void 0;var yo=Ke(),q=wo(require("node:fs")),Eo=wo(require("node:path")),bo=et(),So=rt(),ml=Ve(),pl=Xt(),go=Fi(),_l=(s,e)=>{let t=new go.PackSync(s),i=!0,r,n;try{try{r=q.default.openSync(s.file,"r+")}catch(a){if(a?.code==="ENOENT")r=q.default.openSync(s.file,"w+");else throw a}let o=q.default.fstatSync(r),h=Buffer.alloc(512);e:for(n=0;no.size)break;n+=l,s.mtimeCache&&a.mtime&&s.mtimeCache.set(String(a.path),a.mtime)}i=!1,wl(s,t,n,r,e)}finally{if(i)try{q.default.closeSync(r)}catch{}}},wl=(s,e,t,i,r)=>{let n=new yo.WriteStreamSync(s.file,{fd:i,start:t});e.pipe(n),El(e,r)},yl=(s,e)=>{e=Array.from(e);let t=new go.Pack(s),i=(n,o,h)=>{let a=(D,A)=>{D?q.default.close(n,w=>h(D)):h(null,A)},l=0;if(o===0)return a(null,0);let u=0,c=Buffer.alloc(512),E=(D,A)=>{if(D||A===void 0)return a(D);if(u+=A,u<512&&A)return q.default.read(n,c,u,c.length-u,l+u,E);if(l===0&&c[0]===31&&c[1]===139)return a(new Error("cannot append to compressed archives"));if(u<512)return a(null,l);let w=new bo.Header(c);if(!w.cksumValid)return a(null,l);let P=512*Math.ceil((w.size??0)/512);if(l+P+512>o||(l+=P+512,l>=o))return a(null,l);s.mtimeCache&&w.mtime&&s.mtimeCache.set(String(w.path),w.mtime),u=0,q.default.read(n,c,0,512,l,E)};q.default.read(n,c,0,512,l,E)};return new Promise((n,o)=>{t.on("error",o);let h="r+",a=(l,u)=>{if(l&&l.code==="ENOENT"&&h==="r+")return h="w+",q.default.open(s.file,h,a);if(l||!u)return o(l);q.default.fstat(u,(c,E)=>{if(c)return q.default.close(u,()=>o(c));i(u,E.size,(D,A)=>{if(D)return o(D);let w=new yo.WriteStream(s.file,{fd:u,start:A});t.pipe(w),w.on("error",o),w.on("close",n),bl(t,e)})})};q.default.open(s.file,h,a)})},El=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,So.list)({file:Eo.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},bl=async(s,e)=>{for(let t of e)t.charAt(0)==="@"?await(0,So.list)({file:Eo.default.resolve(String(s.cwd),t.slice(1)),noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t);s.end()};ft.replace=(0,ml.makeCommand)(_l,yl,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,e)=>{if(!(0,pl.isFile)(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!e?.length)throw new TypeError("no paths specified to add/replace")})});var Cr=d(Vi=>{"use strict";Object.defineProperty(Vi,"__esModule",{value:!0});Vi.update=void 0;var Sl=Ve(),zt=Ki();Vi.update=(0,Sl.makeCommand)(zt.replace.syncFile,zt.replace.asyncFile,zt.replace.syncNoFile,zt.replace.asyncNoFile,(s,e=[])=>{zt.replace.validate?.(s,e),gl(s)});var gl=s=>{let e=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=e?(t,i)=>e(t,i)&&!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0)):(t,i)=>!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0))}});var Oo=exports&&exports.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ol=exports&&exports.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Y=exports&&exports.__exportStar||function(s,e){for(var t in s)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&Oo(e,s,t)},Rl=exports&&exports.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r()=>(e||s((e={exports:{}}).exports,e),e.exports);var We=d(F=>{"use strict";var Do=F&&F.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(F,"__esModule",{value:!0});F.Minipass=F.isWritable=F.isReadable=F.isStream=void 0;var kr=typeof process=="object"&&process?process:{stdout:null,stderr:null},ss=require("node:events"),qr=Do(require("node:stream")),Po=require("node:string_decoder"),No=s=>!!s&&typeof s=="object"&&(s instanceof Zt||s instanceof qr.default||(0,F.isReadable)(s)||(0,F.isWritable)(s));F.isStream=No;var Mo=s=>!!s&&typeof s=="object"&&s instanceof ss.EventEmitter&&typeof s.pipe=="function"&&s.pipe!==qr.default.Writable.prototype.pipe;F.isReadable=Mo;var Lo=s=>!!s&&typeof s=="object"&&s instanceof ss.EventEmitter&&typeof s.write=="function"&&typeof s.end=="function";F.isWritable=Lo;var ce=Symbol("EOF"),ue=Symbol("maybeEmitEnd"),we=Symbol("emittedEnd"),jt=Symbol("emittingEnd"),dt=Symbol("emittedError"),Ut=Symbol("closed"),xr=Symbol("read"),qt=Symbol("flush"),jr=Symbol("flushChunk"),K=Symbol("encoding"),Ue=Symbol("decoder"),R=Symbol("flowing"),mt=Symbol("paused"),qe=Symbol("resume"),O=Symbol("buffer"),I=Symbol("pipes"),v=Symbol("bufferLength"),Xi=Symbol("bufferPush"),Wt=Symbol("bufferShift"),N=Symbol("objectMode"),y=Symbol("destroyed"),Qi=Symbol("error"),Ji=Symbol("emitData"),Ur=Symbol("emitEnd"),es=Symbol("emitEnd2"),J=Symbol("async"),ts=Symbol("abort"),Ht=Symbol("aborted"),pt=Symbol("signal"),Ne=Symbol("dataListeners"),x=Symbol("discarded"),_t=s=>Promise.resolve().then(s),Ao=s=>s(),Io=s=>s==="end"||s==="finish"||s==="prefinish",Fo=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,Co=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),Gt=class{src;dest;opts;ondrain;constructor(e,t,i){this.src=e,this.dest=t,this.opts=i,this.ondrain=()=>e[qe](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},is=class extends Gt{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,i){super(e,t,i),this.proxyErrors=r=>this.dest.emit("error",r),e.on("error",this.proxyErrors)}},Bo=s=>!!s.objectMode,zo=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",Zt=class extends ss.EventEmitter{[R]=!1;[mt]=!1;[I]=[];[O]=[];[N];[K];[J];[Ue];[ce]=!1;[we]=!1;[jt]=!1;[Ut]=!1;[dt]=null;[v]=0;[y]=!1;[pt];[Ht]=!1;[Ne]=0;[x]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Bo(t)?(this[N]=!0,this[K]=null):zo(t)?(this[K]=t.encoding,this[N]=!1):(this[N]=!1,this[K]=null),this[J]=!!t.async,this[Ue]=this[K]?new Po.StringDecoder(this[K]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[O]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[I]});let{signal:i}=t;i&&(this[pt]=i,i.aborted?this[ts]():i.addEventListener("abort",()=>this[ts]()))}get bufferLength(){return this[v]}get encoding(){return this[K]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[N]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[J]}set async(e){this[J]=this[J]||!!e}[ts](){this[Ht]=!0,this.emit("abort",this[pt]?.reason),this.destroy(this[pt]?.reason)}get aborted(){return this[Ht]}set aborted(e){}write(e,t,i){if(this[Ht])return!1;if(this[ce])throw new Error("write after end");if(this[y])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(i=t,t="utf8"),t||(t="utf8");let r=this[J]?_t:Ao;if(!this[N]&&!Buffer.isBuffer(e)){if(Co(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(Fo(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[N]?(this[R]&&this[v]!==0&&this[qt](!0),this[R]?this.emit("data",e):this[Xi](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[R]):e.length?(typeof e=="string"&&!(t===this[K]&&!this[Ue]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[K]&&(e=this[Ue].write(e)),this[R]&&this[v]!==0&&this[qt](!0),this[R]?this.emit("data",e):this[Xi](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[R]):(this[v]!==0&&this.emit("readable"),i&&r(i),this[R])}read(e){if(this[y])return null;if(this[x]=!1,this[v]===0||e===0||e&&e>this[v])return this[ue](),null;this[N]&&(e=null),this[O].length>1&&!this[N]&&(this[O]=[this[K]?this[O].join(""):Buffer.concat(this[O],this[v])]);let t=this[xr](e||null,this[O][0]);return this[ue](),t}[xr](e,t){if(this[N])this[Wt]();else{let i=t;e===i.length||e===null?this[Wt]():typeof i=="string"?(this[O][0]=i.slice(e),t=i.slice(0,e),this[v]-=e):(this[O][0]=i.subarray(e),t=i.subarray(0,e),this[v]-=e)}return this.emit("data",t),!this[O].length&&!this[ce]&&this.emit("drain"),t}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t="utf8"),e!==void 0&&this.write(e,t),i&&this.once("end",i),this[ce]=!0,this.writable=!1,(this[R]||!this[mt])&&this[ue](),this}[qe](){this[y]||(!this[Ne]&&!this[I].length&&(this[x]=!0),this[mt]=!1,this[R]=!0,this.emit("resume"),this[O].length?this[qt]():this[ce]?this[ue]():this.emit("drain"))}resume(){return this[qe]()}pause(){this[R]=!1,this[mt]=!0,this[x]=!1}get destroyed(){return this[y]}get flowing(){return this[R]}get paused(){return this[mt]}[Xi](e){this[N]?this[v]+=1:this[v]+=e.length,this[O].push(e)}[Wt](){return this[N]?this[v]-=1:this[v]-=this[O][0].length,this[O].shift()}[qt](e=!1){do;while(this[jr](this[Wt]())&&this[O].length);!e&&!this[O].length&&!this[ce]&&this.emit("drain")}[jr](e){return this.emit("data",e),this[R]}pipe(e,t){if(this[y])return e;this[x]=!1;let i=this[we];return t=t||{},e===kr.stdout||e===kr.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,i?t.end&&e.end():(this[I].push(t.proxyErrors?new is(this,e,t):new Gt(this,e,t)),this[J]?_t(()=>this[qe]()):this[qe]()),e}unpipe(e){let t=this[I].find(i=>i.dest===e);t&&(this[I].length===1?(this[R]&&this[Ne]===0&&(this[R]=!1),this[I]=[]):this[I].splice(this[I].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let i=super.on(e,t);if(e==="data")this[x]=!1,this[Ne]++,!this[I].length&&!this[R]&&this[qe]();else if(e==="readable"&&this[v]!==0)super.emit("readable");else if(Io(e)&&this[we])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[dt]){let r=t;this[J]?_t(()=>r.call(this,this[dt])):r.call(this,this[dt])}return i}removeListener(e,t){return this.off(e,t)}off(e,t){let i=super.off(e,t);return e==="data"&&(this[Ne]=this.listeners("data").length,this[Ne]===0&&!this[x]&&!this[I].length&&(this[R]=!1)),i}removeAllListeners(e){let t=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Ne]=0,!this[x]&&!this[I].length&&(this[R]=!1)),t}get emittedEnd(){return this[we]}[ue](){!this[jt]&&!this[we]&&!this[y]&&this[O].length===0&&this[ce]&&(this[jt]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Ut]&&this.emit("close"),this[jt]=!1)}emit(e,...t){let i=t[0];if(e!=="error"&&e!=="close"&&e!==y&&this[y])return!1;if(e==="data")return!this[N]&&!i?!1:this[J]?(_t(()=>this[Ji](i)),!0):this[Ji](i);if(e==="end")return this[Ur]();if(e==="close"){if(this[Ut]=!0,!this[we]&&!this[y])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[dt]=i,super.emit(Qi,i);let n=!this[pt]||this.listeners("error").length?super.emit("error",i):!1;return this[ue](),n}else if(e==="resume"){let n=super.emit("resume");return this[ue](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let r=super.emit(e,...t);return this[ue](),r}[Ji](e){for(let i of this[I])i.dest.write(e)===!1&&this.pause();let t=this[x]?!1:super.emit("data",e);return this[ue](),t}[Ur](){return this[we]?!1:(this[we]=!0,this.readable=!1,this[J]?(_t(()=>this[es]()),!0):this[es]())}[es](){if(this[Ue]){let t=this[Ue].end();if(t){for(let i of this[I])i.dest.write(t);this[x]||super.emit("data",t)}}for(let t of this[I])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[N]||(e.dataLength=0);let t=this.promise();return this.on("data",i=>{e.push(i),this[N]||(e.dataLength+=i.length)}),await t,e}async concat(){if(this[N])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[K]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(y,()=>t(new Error("stream destroyed"))),this.on("error",i=>t(i)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[x]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[ce])return t();let n,o,a=u=>{this.off("data",h),this.off("end",l),this.off(y,c),t(),o(u)},h=u=>{this.off("error",a),this.off("end",l),this.off(y,c),this.pause(),n({value:u,done:!!this[ce]})},l=()=>{this.off("error",a),this.off("data",h),this.off(y,c),t(),n({done:!0,value:void 0})},c=()=>a(new Error("stream destroyed"));return new Promise((u,E)=>{o=E,n=u,this.once(y,c),this.once("error",a),this.once("end",l),this.once("data",h)})},throw:t,return:t,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[x]=!1;let e=!1,t=()=>(this.pause(),this.off(Qi,t),this.off(y,t),this.off("end",t),e=!0,{done:!0,value:void 0}),i=()=>{if(e)return t();let r=this.read();return r===null?t():{done:!1,value:r}};return this.once("end",t),this.once(Qi,t),this.once(y,t),{next:i,throw:t,return:t,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(e){if(this[y])return e?this.emit("error",e):this.emit(y),this;this[y]=!0,this[x]=!0,this[O].length=0,this[v]=0;let t=this;return typeof t.close=="function"&&!this[Ut]&&t.close(),e?this.emit("error",e):this.emit(y),this}static get isStream(){return F.isStream}};F.Minipass=Zt});var Ke=d(W=>{"use strict";var Wr=W&&W.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(W,"__esModule",{value:!0});W.WriteStreamSync=W.WriteStream=W.ReadStreamSync=W.ReadStream=void 0;var ko=Wr(require("events")),z=Wr(require("fs")),xo=We(),jo=z.default.writev,Ee=Symbol("_autoClose"),$=Symbol("_close"),wt=Symbol("_ended"),p=Symbol("_fd"),rs=Symbol("_finished"),de=Symbol("_flags"),ns=Symbol("_flush"),ls=Symbol("_handleChunk"),cs=Symbol("_makeBuf"),Et=Symbol("_mode"),Yt=Symbol("_needDrain"),Ze=Symbol("_onerror"),Ye=Symbol("_onopen"),os=Symbol("_onread"),He=Symbol("_onwrite"),be=Symbol("_open"),V=Symbol("_path"),ye=Symbol("_pos"),ee=Symbol("_queue"),Ge=Symbol("_read"),as=Symbol("_readSize"),fe=Symbol("_reading"),yt=Symbol("_remain"),hs=Symbol("_size"),Kt=Symbol("_write"),Me=Symbol("_writing"),Vt=Symbol("_defaultFlag"),Le=Symbol("_errored"),$t=class extends xo.Minipass{[Le]=!1;[p];[V];[as];[fe]=!1;[hs];[yt];[Ee];constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Le]=!1,this[p]=typeof t.fd=="number"?t.fd:void 0,this[V]=e,this[as]=t.readSize||16*1024*1024,this[fe]=!1,this[hs]=typeof t.size=="number"?t.size:1/0,this[yt]=this[hs],this[Ee]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[p]=="number"?this[Ge]():this[be]()}get fd(){return this[p]}get path(){return this[V]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[be](){z.default.open(this[V],"r",(e,t)=>this[Ye](e,t))}[Ye](e,t){e?this[Ze](e):(this[p]=t,this.emit("open",t),this[Ge]())}[cs](){return Buffer.allocUnsafe(Math.min(this[as],this[yt]))}[Ge](){if(!this[fe]){this[fe]=!0;let e=this[cs]();if(e.length===0)return process.nextTick(()=>this[os](null,0,e));z.default.read(this[p],e,0,e.length,null,(t,i,r)=>this[os](t,i,r))}}[os](e,t,i){this[fe]=!1,e?this[Ze](e):this[ls](t,i)&&this[Ge]()}[$](){if(this[Ee]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,z.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}[Ze](e){this[fe]=!0,this[$](),this.emit("error",e)}[ls](e,t){let i=!1;return this[yt]-=e,e>0&&(i=super.write(ethis[Ye](e,t))}[Ye](e,t){this[Vt]&&this[de]==="r+"&&e&&e.code==="ENOENT"?(this[de]="w",this[be]()):e?this[Ze](e):(this[p]=t,this.emit("open",t),this[Me]||this[ns]())}end(e,t){return e&&this.write(e,t),this[wt]=!0,!this[Me]&&!this[ee].length&&typeof this[p]=="number"&&this[He](null,0),this}write(e,t){return typeof e=="string"&&(e=Buffer.from(e,t)),this[wt]?(this.emit("error",new Error("write() after end()")),!1):this[p]===void 0||this[Me]||this[ee].length?(this[ee].push(e),this[Yt]=!0,!1):(this[Me]=!0,this[Kt](e),!0)}[Kt](e){z.default.write(this[p],e,0,e.length,this[ye],(t,i)=>this[He](t,i))}[He](e,t){e?this[Ze](e):(this[ye]!==void 0&&typeof t=="number"&&(this[ye]+=t),this[ee].length?this[ns]():(this[Me]=!1,this[wt]&&!this[rs]?(this[rs]=!0,this[$](),this.emit("finish")):this[Yt]&&(this[Yt]=!1,this.emit("drain"))))}[ns](){if(this[ee].length===0)this[wt]&&this[He](null,0);else if(this[ee].length===1)this[Kt](this[ee].pop());else{let e=this[ee];this[ee]=[],jo(this[p],e,this[ye],(t,i)=>this[He](t,i))}}[$](){if(this[Ee]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,z.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}};W.WriteStream=Xt;var fs=class extends Xt{[be](){let e;if(this[Vt]&&this[de]==="r+")try{e=z.default.openSync(this[V],this[de],this[Et])}catch(t){if(t?.code==="ENOENT")return this[de]="w",this[be]();throw t}else e=z.default.openSync(this[V],this[de],this[Et]);this[Ye](null,e)}[$](){if(this[Ee]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,z.default.closeSync(e),this.emit("close")}}[Kt](e){let t=!0;try{this[He](null,z.default.writeSync(this[p],e,0,e.length,this[ye])),t=!1}finally{if(t)try{this[$]()}catch{}}}};W.WriteStreamSync=fs});var Qt=d(b=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});b.dealias=b.isNoFile=b.isFile=b.isAsync=b.isSync=b.isAsyncNoFile=b.isSyncNoFile=b.isAsyncFile=b.isSyncFile=void 0;var Uo=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),qo=s=>!!s.sync&&!!s.file;b.isSyncFile=qo;var Wo=s=>!s.sync&&!!s.file;b.isAsyncFile=Wo;var Ho=s=>!!s.sync&&!s.file;b.isSyncNoFile=Ho;var Go=s=>!s.sync&&!s.file;b.isAsyncNoFile=Go;var Zo=s=>!!s.sync;b.isSync=Zo;var Yo=s=>!s.sync;b.isAsync=Yo;var Ko=s=>!!s.file;b.isFile=Ko;var Vo=s=>!s.file;b.isNoFile=Vo;var $o=s=>{let e=Uo.get(s);return e||s},Xo=(s={})=>{if(!s)return{};let e={};for(let[t,i]of Object.entries(s)){let r=$o(t);e[r]=i}return e.chmod===void 0&&e.noChmod===!1&&(e.chmod=!0),delete e.noChmod,e};b.dealias=Xo});var Ve=d(Jt=>{"use strict";Object.defineProperty(Jt,"__esModule",{value:!0});Jt.makeCommand=void 0;var bt=Qt(),Qo=(s,e,t,i,r)=>Object.assign((n=[],o,a)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(a=o,o=void 0),o=o?Array.from(o):[];let h=(0,bt.dealias)(n);if(r?.(h,o),(0,bt.isSyncFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return s(h,o)}else if((0,bt.isAsyncFile)(h)){let l=e(h,o);return a?l.then(()=>a(),a):l}else if((0,bt.isSyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return t(h,o)}else if((0,bt.isAsyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback only supported with file option");return i(h,o)}throw new Error("impossible options??")},{syncFile:s,asyncFile:e,syncNoFile:t,asyncNoFile:i,validate:r});Jt.makeCommand=Qo});var ds=d($e=>{"use strict";var Jo=$e&&$e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty($e,"__esModule",{value:!0});$e.constants=void 0;var ea=Jo(require("zlib")),ta=ea.default.constants||{ZLIB_VERNUM:4736};$e.constants=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},ta))});var Ps=d(f=>{"use strict";var ia=f&&f.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),sa=f&&f.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),ra=f&&f.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;rs,ms=Gr?.writable===!0||Gr?.set!==void 0?s=>{Ae.Buffer.concat=s?la:ha}:s=>{},Ie=Symbol("_superWrite"),Fe=class extends Error{code;errno;constructor(e,t){super("zlib: "+e.message,{cause:e}),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,t??this.constructor)}get name(){return"ZlibError"}};f.ZlibError=Fe;var ps=Symbol("flushFlag"),St=class extends oa.Minipass{#e=!1;#i=!1;#s;#n;#r;#t;#o;get sawError(){return this.#e}get handle(){return this.#t}get flushFlag(){return this.#s}constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(e),this.#s=e.flush??0,this.#n=e.finishFlush??0,this.#r=e.fullFlushFlag??0,typeof Hr[t]!="function")throw new TypeError("Compression method not supported: "+t);try{this.#t=new Hr[t](e)}catch(i){throw new Fe(i,this.constructor)}this.#o=i=>{this.#e||(this.#e=!0,this.close(),this.emit("error",i))},this.#t?.on("error",i=>this.#o(new Fe(i))),this.once("end",()=>this.close)}close(){this.#t&&(this.#t.close(),this.#t=void 0,this.emit("close"))}reset(){if(!this.#e)return(0,_s.default)(this.#t,"zlib binding closed"),this.#t.reset?.()}flush(e){this.ended||(typeof e!="number"&&(e=this.#r),this.write(Object.assign(Ae.Buffer.alloc(0),{[ps]:e})))}end(e,t,i){return typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&(t?this.write(e,t):this.write(e)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Ie](e){return super.write(e)}write(e,t,i){if(typeof t=="function"&&(i=t,t="utf8"),typeof e=="string"&&(e=Ae.Buffer.from(e,t)),this.#e)return;(0,_s.default)(this.#t,"zlib binding closed");let r=this.#t._handle,n=r.close;r.close=()=>{};let o=this.#t.close;this.#t.close=()=>{},ms(!0);let a;try{let l=typeof e[ps]=="number"?e[ps]:this.#s;a=this.#t._processChunk(e,l),ms(!1)}catch(l){ms(!1),this.#o(new Fe(l,this.write))}finally{this.#t&&(this.#t._handle=r,r.close=n,this.#t.close=o,this.#t.removeAllListeners("error"))}this.#t&&this.#t.on("error",l=>this.#o(new Fe(l,this.write)));let h;if(a)if(Array.isArray(a)&&a.length>0){let l=a[0];h=this[Ie](Ae.Buffer.from(l));for(let c=1;c{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(e,t)}finally{this.handle.flush=i}this.handle&&(this.#e=e,this.#i=t)}}}};f.Zlib=ie;var ws=class extends ie{constructor(e){super(e,"Deflate")}};f.Deflate=ws;var ys=class extends ie{constructor(e){super(e,"Inflate")}};f.Inflate=ys;var Es=class extends ie{#e;constructor(e){super(e,"Gzip"),this.#e=e&&!!e.portable}[Ie](e){return this.#e?(this.#e=!1,e[9]=255,super[Ie](e)):super[Ie](e)}};f.Gzip=Es;var bs=class extends ie{constructor(e){super(e,"Gunzip")}};f.Gunzip=bs;var Ss=class extends ie{constructor(e){super(e,"DeflateRaw")}};f.DeflateRaw=Ss;var gs=class extends ie{constructor(e){super(e,"InflateRaw")}};f.InflateRaw=gs;var Rs=class extends ie{constructor(e){super(e,"Unzip")}};f.Unzip=Rs;var ei=class extends St{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||te.constants.BROTLI_OPERATION_FINISH,e.fullFlushFlag=te.constants.BROTLI_OPERATION_FLUSH,super(e,t)}},Os=class extends ei{constructor(e){super(e,"BrotliCompress")}};f.BrotliCompress=Os;var vs=class extends ei{constructor(e){super(e,"BrotliDecompress")}};f.BrotliDecompress=vs;var ti=class extends St{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.ZSTD_e_continue,e.finishFlush=e.finishFlush||te.constants.ZSTD_e_end,e.fullFlushFlag=te.constants.ZSTD_e_flush,super(e,t)}},Ts=class extends ti{constructor(e){super(e,"ZstdCompress")}};f.ZstdCompress=Ts;var Ds=class extends ti{constructor(e){super(e,"ZstdDecompress")}};f.ZstdDecompress=Ds});var Kr=d(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.parse=Xe.encode=void 0;var ca=(s,e)=>{if(Number.isSafeInteger(s))s<0?fa(s,e):ua(s,e);else throw Error("cannot encode number outside of javascript safe integer range");return e};Xe.encode=ca;var ua=(s,e)=>{e[0]=128;for(var t=e.length;t>1;t--)e[t-1]=s&255,s=Math.floor(s/256)},fa=(s,e)=>{e[0]=255;var t=!1;s=s*-1;for(var i=e.length;i>1;i--){var r=s&255;s=Math.floor(s/256),t?e[i-1]=Zr(r):r===0?e[i-1]=0:(t=!0,e[i-1]=Yr(r))}},da=s=>{let e=s[0],t=e===128?pa(s.subarray(1,s.length)):e===255?ma(s):null;if(t===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(t))throw Error("parsed number outside of javascript safe integer range");return t};Xe.parse=da;var ma=s=>{for(var e=s.length,t=0,i=!1,r=e-1;r>-1;r--){var n=Number(s[r]),o;i?o=Zr(n):n===0?o=n:(i=!0,o=Yr(n)),o!==0&&(t-=o*Math.pow(256,e-r-1))}return t},pa=s=>{for(var e=s.length,t=0,i=e-1;i>-1;i--){var r=Number(s[i]);r!==0&&(t+=r*Math.pow(256,e-i-1))}return t},Zr=s=>(255^s)&255,Yr=s=>(255^s)+1&255});var Ns=d(C=>{"use strict";Object.defineProperty(C,"__esModule",{value:!0});C.code=C.name=C.normalFsTypes=C.isName=C.isCode=void 0;var _a=s=>C.name.has(s);C.isCode=_a;var wa=s=>C.code.has(s);C.isName=wa;C.normalFsTypes=new Set(["0","","1","2","3","4","5","6","7","D"]);C.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);C.code=new Map(Array.from(C.name).map(s=>[s[1],s[0]]))});var et=d(se=>{"use strict";var ya=se&&se.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ea=se&&se.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Vr=se&&se.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;rs===void 0||s<0?void 0:s,As=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#e="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(e,t=0,i,r){Buffer.isBuffer(e)?this.decode(e,t||0,i,r):e&&this.#i(e)}decode(e,t,i,r){if(t||(t=0),!e||!(e.length>=t+512))throw new Error("need 512 bytes for header");let n=Ce(e,t+156,1),o=Je.normalFsTypes.has(n),a=o?i:void 0,h=o?r:void 0;if(this.path=a?.path??Ce(e,t,100),this.mode=a?.mode??h?.mode??Se(e,t+100,8),this.uid=a?.uid??h?.uid??Se(e,t+108,8),this.gid=a?.gid??h?.gid??Se(e,t+116,8),this.size=ba(a?.size??h?.size??Se(e,t+124,12)),this.mtime=a?.mtime??h?.mtime??Ms(e,t+136,12),this.cksum=Se(e,t+148,12),h&&this.#i(h,!0),a&&this.#i(a),Je.isCode(n)&&(this.#e=n||"0"),this.#e==="0"&&this.path.slice(-1)==="/"&&(this.#e="5"),this.#e==="5"&&(this.size=0),this.linkpath=Ce(e,t+157,100),e.subarray(t+257,t+265).toString()==="ustar\x0000")if(this.uname=a?.uname??h?.uname??Ce(e,t+265,32),this.gname=a?.gname??h?.gname??Ce(e,t+297,32),this.devmaj=a?.devmaj??h?.devmaj??Se(e,t+329,8)??0,this.devmin=a?.devmin??h?.devmin??Se(e,t+337,8)??0,e[t+475]!==0){let c=Ce(e,t+345,155);this.path=c+"/"+this.path}else{let c=Ce(e,t+345,130);c&&(this.path=c+"/"+this.path),this.atime=i?.atime??r?.atime??Ms(e,t+476,12),this.ctime=i?.ctime??r?.ctime??Ms(e,t+488,12)}let l=256;for(let c=t;c!(r==null||i==="size"&&Number(r)<0||i==="path"&&t||i==="linkpath"&&t||i==="global"))))}encode(e,t=0){if(e||(e=this.block=Buffer.alloc(512)),this.#e==="Unsupported"&&(this.#e="0"),!(e.length>=t+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=Sa(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=Be(e,t,100,n)||this.needPax,this.needPax=ge(e,t+100,8,this.mode)||this.needPax,this.needPax=ge(e,t+108,8,this.uid)||this.needPax,this.needPax=ge(e,t+116,8,this.gid)||this.needPax,this.needPax=ge(e,t+124,12,this.size)||this.needPax,this.needPax=Ls(e,t+136,12,this.mtime)||this.needPax,e[t+156]=Number(this.#e.codePointAt(0)),this.needPax=Be(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=Be(e,t+265,32,this.uname)||this.needPax,this.needPax=Be(e,t+297,32,this.gname)||this.needPax,this.needPax=ge(e,t+329,8,this.devmaj)||this.needPax,this.needPax=ge(e,t+337,8,this.devmin)||this.needPax,this.needPax=Be(e,t+345,i,o)||this.needPax,e[t+475]!==0?this.needPax=Be(e,t+345,155,o)||this.needPax:(this.needPax=Be(e,t+345,130,o)||this.needPax,this.needPax=Ls(e,t+476,12,this.atime)||this.needPax,this.needPax=Ls(e,t+488,12,this.ctime)||this.needPax);let a=256;for(let h=t;h{let i=s,r="",n,o=Qe.posix.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Qe.posix.dirname(i),i=Qe.posix.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=e?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=e?n=[i.slice(0,99),r,!0]:(i=Qe.posix.join(Qe.posix.basename(r),i),r=Qe.posix.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},Ce=(s,e,t)=>s.subarray(e,e+t).toString("utf8").replace(/\0.*/,""),Ms=(s,e,t)=>ga(Se(s,e,t)),ga=s=>s===void 0?void 0:new Date(s*1e3),Se=(s,e,t)=>Number(s[e])&128?$r.parse(s.subarray(e,e+t)):Oa(s,e,t),Ra=s=>isNaN(s)?void 0:s,Oa=(s,e,t)=>Ra(parseInt(s.subarray(e,e+t).toString("utf8").replace(/\0.*$/,"").trim(),8)),va={12:8589934591,8:2097151},ge=(s,e,t,i)=>i===void 0?!1:i>va[t]||i<0?($r.encode(i,s.subarray(e,e+t)),!0):(Ta(s,e,t,i),!1),Ta=(s,e,t,i)=>s.write(Da(i,t),e,t,"ascii"),Da=(s,e)=>Pa(Math.floor(s).toString(8),e),Pa=(s,e)=>(s.length===e-1?s:new Array(e-s.length-1).join("0")+s+" ")+"\0",Ls=(s,e,t,i)=>i===void 0?!1:ge(s,e,t,i.getTime()/1e3),Na=new Array(156).join("\0"),Be=(s,e,t,i)=>i===void 0?!1:(s.write(i+Na,e,t,"utf8"),i.length!==Buffer.byteLength(i)||i.length>t)});var si=d(ii=>{"use strict";Object.defineProperty(ii,"__esModule",{value:!0});ii.Pax=void 0;var Ma=require("node:path"),La=et(),Is=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(e,t=!1){this.atime=e.atime,this.charset=e.charset,this.comment=e.comment,this.ctime=e.ctime,this.dev=e.dev,this.gid=e.gid,this.global=t,this.gname=e.gname,this.ino=e.ino,this.linkpath=e.linkpath,this.mtime=e.mtime,this.nlink=e.nlink,this.path=e.path,this.size=e.size,this.uid=e.uid,this.uname=e.uname}encode(){let e=this.encodeBody();if(e==="")return Buffer.allocUnsafe(0);let t=Buffer.byteLength(e),i=512*Math.ceil(1+t/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new La.Header({path:("PaxHeader/"+(0,Ma.basename)(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:t,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(e,512,t,"utf8");for(let n=t+512;n=Math.pow(10,o)&&(o+=1),o+n+r}static parse(e,t,i=!1){return new s(Aa(Ia(e),t),i)}};ii.Pax=Is;var Aa=(s,e)=>e?Object.assign({},e,s):s,Ia=s=>s.replace(/\n$/,"").split(` +`).reduce(Fa,Object.create(null)),Fa=(s,e)=>{let t=parseInt(e,10);if(t!==Buffer.byteLength(e)+1)return s;e=e.slice((t+" ").length);let i=e.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=").replace(/\0.*/,"");switch(n){case"path":case"linkpath":case"type":case"charset":case"comment":case"gname":case"uname":s[n]=o;break;case"ctime":case"atime":case"mtime":s[n]=new Date(Number(o)*1e3);break;case"size":let a=+o;a>=0&&(s[n]=a);break;case"gid":case"uid":case"dev":case"ino":case"nlink":case"mode":s[n]=+o;break}return s}});var tt=d(ri=>{"use strict";Object.defineProperty(ri,"__esModule",{value:!0});ri.normalizeWindowsPath=void 0;var Ca=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;ri.normalizeWindowsPath=Ca!=="win32"?s=>String(s):s=>String(s).replaceAll(/\\/g,"/")});var Cs=d(oi=>{"use strict";Object.defineProperty(oi,"__esModule",{value:!0});oi.ReadEntry=void 0;var Ba=We(),ni=tt(),Fs=class extends Ba.Minipass{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(e,t,i){switch(super({}),this.pause(),this.extended=t,this.globalExtended=i,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!e.path)throw new Error("no path provided for tar.ReadEntry");this.path=(0,ni.normalizeWindowsPath)(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?(0,ni.normalizeWindowsPath)(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,t&&this.#e(t),i&&this.#e(i,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-t),this.blockRemain=Math.max(0,r-t),this.ignore?!0:i>=t?super.write(e):super.write(e.subarray(0,i))}#e(e,t=!1){e.path&&(e.path=(0,ni.normalizeWindowsPath)(e.path)),e.linkpath&&(e.linkpath=(0,ni.normalizeWindowsPath)(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([i,r])=>!(r==null||i==="path"&&t))))}};oi.ReadEntry=Fs});var hi=d(ai=>{"use strict";Object.defineProperty(ai,"__esModule",{value:!0});ai.warnMethod=void 0;var za=(s,e,t,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=t instanceof Error&&t.code||e,i.tarCode=e,!s.strict&&i.recoverable!==!1?(t instanceof Error&&(i=Object.assign(t,i),t=t.message),s.emit("warn",e,t,i)):t instanceof Error?s.emit("error",Object.assign(t,i)):s.emit("error",Object.assign(new Error(`${e}: ${t}`),i))};ai.warnMethod=za});var _i=d(pi=>{"use strict";Object.defineProperty(pi,"__esModule",{value:!0});pi.Parser=void 0;var ka=require("events"),Bs=Ps(),Xr=et(),Qr=si(),xa=Cs(),ja=hi(),Ua=1024*1024,qs=Buffer.from([31,139]),Ws=Buffer.from([40,181,47,253]),qa=Math.max(qs.length,Ws.length),H=Symbol("state"),ze=Symbol("writeEntry"),me=Symbol("readEntry"),zs=Symbol("nextEntry"),Jr=Symbol("processEntry"),re=Symbol("extendedHeader"),gt=Symbol("globalExtendedHeader"),Re=Symbol("meta"),en=Symbol("emitMeta"),_=Symbol("buffer"),pe=Symbol("queue"),Oe=Symbol("ended"),ks=Symbol("emittedEnd"),ke=Symbol("emit"),S=Symbol("unzip"),li=Symbol("consumeChunk"),ci=Symbol("consumeChunkSub"),xs=Symbol("consumeBody"),tn=Symbol("consumeMeta"),sn=Symbol("consumeHeader"),Rt=Symbol("consuming"),js=Symbol("bufferConcat"),ui=Symbol("maybeEnd"),it=Symbol("writing"),ne=Symbol("aborted"),fi=Symbol("onDone"),xe=Symbol("sawValidEntry"),di=Symbol("sawNullBlock"),mi=Symbol("sawEOF"),rn=Symbol("closeStream"),Wa=1e3,Ot=Symbol("compressedBytesRead"),Us=Symbol("decompressedBytesRead"),nn=Symbol("checkDecompressionRatio"),Ha=()=>!0,Hs=class extends ka.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;maxDecompressionRatio;writable=!0;readable=!1;[pe]=[];[_];[me];[ze];[H]="begin";[Re]="";[re];[gt];[Oe]=!1;[S];[ne]=!1;[xe];[di]=!1;[mi]=!1;[it]=!1;[Rt]=!1;[ks]=!1;[Ot]=0;[Us]=0;constructor(e={}){super(),this.file=e.file||"",this.on(fi,()=>{(this[H]==="begin"||this[xe]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(fi,e.ondone):this.on(fi,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!e.strict,this.maxDecompressionRatio=typeof e.maxDecompressionRatio=="number"?e.maxDecompressionRatio:Wa,this.maxMetaEntrySize=e.maxMetaEntrySize||Ua,this.filter=typeof e.filter=="function"?e.filter:Ha;let t=e.file&&(e.file.endsWith(".tar.br")||e.file.endsWith(".tbr"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:t?void 0:!1;let i=e.file&&(e.file.endsWith(".tar.zst")||e.file.endsWith(".tzst"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:i?!0:void 0,this.on("end",()=>this[rn]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onReadEntry=="function"&&this.on("entry",e.onReadEntry)}warn(e,t,i={}){(0,ja.warnMethod)(this,e,t,i)}[sn](e,t){this[xe]===void 0&&(this[xe]=!1);let i;try{i=new Xr.Header(e,t,this[re],this[gt])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[di]?(this[mi]=!0,this[H]==="begin"&&(this[H]="header"),this[ke]("eof")):(this[di]=!0,this[ke]("nullBlock"));else if(this[di]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[ze]=new xa.ReadEntry(i,this[re],this[gt]);if(!this[xe])if(n.remain){let o=()=>{n.invalid||(this[xe]=!0)};n.on("end",o)}else this[xe]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[ke]("ignoredEntry",n),this[H]="ignore",n.resume()):n.size>0&&(this[Re]="",n.on("data",o=>this[Re]+=o),this[H]="meta"):(this[re]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[ke]("ignoredEntry",n),this[H]=n.remain?"ignore":"header",n.resume()):(n.remain?this[H]="body":(this[H]="header",n.end()),this[me]?this[pe].push(n):(this[pe].push(n),this[zs]())))}}}[rn](){queueMicrotask(()=>this.emit("close"))}[Jr](e){let t=!0;if(!e)this[me]=void 0,t=!1;else if(Array.isArray(e)){let[i,...r]=e;this.emit(i,...r)}else this[me]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",()=>this[zs]()),t=!1);return t}[zs](){do;while(this[Jr](this[pe].shift()));if(this[pe].length===0){let e=this[me];!e||e.flowing||e.size===e.remain?this[it]||this.emit("drain"):e.once("drain",()=>this.emit("drain"))}}[xs](e,t){let i=this[ze];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=e.length&&t===0?e:e.subarray(t,t+r);return i.write(n),i.blockRemain||(this[H]="header",this[ze]=void 0,i.end()),n.length}[tn](e,t){let i=this[ze],r=this[xs](e,t);return!this[ze]&&i&&this[en](i),r}[ke](e,t,i){this[pe].length===0&&!this[me]?this.emit(e,t,i):this[pe].push([e,t,i])}[en](e){switch(this[ke]("meta",this[Re]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[re]=Qr.Pax.parse(this[Re],this[re],!1);break;case"GlobalExtendedHeader":this[gt]=Qr.Pax.parse(this[Re],this[gt],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let t=this[re]??Object.create(null);this[re]=t,t.path=this[Re].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let t=this[re]||Object.create(null);this[re]=t,t.linkpath=this[Re].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+e.type)}}abort(e){this[ne]||(this[ne]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1}))}[nn](e){this[Us]+=e.length;let t=this[Us]/this[Ot];return t>this.maxDecompressionRatio?(this.abort(new Error(`max decompression ratio exceeded: ${t.toFixed(2)} > ${this.maxDecompressionRatio}`)),!1):!0}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this[ne])return i?.(),!1;if((this[S]===void 0||this.brotli===void 0&&this[S]===!1)&&e){if(this[_]&&(e=Buffer.concat([this[_],e]),this[_]=void 0),e.length{this[nn](c)&&this[li](c)}),this[S].on("error",c=>{this[ne]||this.abort(c)}),this[S].on("end",()=>{this[Oe]=!0,this[li]()}),this[it]=!0,this[Ot]+=e.length;let l=!!this[S][h?"end":"write"](e);return this[it]=!1,i?.(),l}}this[it]=!0,this[S]?(this[Ot]+=e.length,this[S].write(e)):this[li](e),this[it]=!1;let n=this[pe].length>0?!1:this[me]?this[me].flowing:!0;return!n&&this[pe].length===0&&this[me]?.once("drain",()=>this.emit("drain")),i?.(),n}[js](e){e&&!this[ne]&&(this[_]=this[_]?Buffer.concat([this[_],e]):e)}[ui](){if(this[Oe]&&!this[ks]&&!this[ne]&&!this[Rt]){this[ks]=!0;let e=this[ze];if(e?.blockRemain){let t=this[_]?this[_].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[_]&&e.write(this[_]),e.end()}this[ke](fi)}}[li](e){if(this[Rt]&&e)this[js](e);else if(!e&&!this[_])this[ui]();else if(e){if(this[Rt]=!0,this[_]){this[js](e);let t=this[_];this[_]=void 0,this[ci](t)}else this[ci](e);for(;this[_]&&this[_]?.length>=512&&!this[ne]&&!this[mi];){let t=this[_];this[_]=void 0,this[ci](t)}this[Rt]=!1}(!this[_]||this[Oe])&&this[ui]()}[ci](e){let t=0,i=e.length;for(;t+512<=i&&!this[ne]&&!this[mi];)switch(this[H]){case"begin":case"header":this[sn](e,t),t+=512;break;case"ignore":case"body":t+=this[xs](e,t);break;case"meta":t+=this[tn](e,t);break;default:throw new Error("invalid state: "+this[H])}t{"use strict";Object.defineProperty(wi,"__esModule",{value:!0});wi.stripTrailingSlashes=void 0;var Ga=s=>{let e=s.length-1,t=-1;for(;e>-1&&s.charAt(e)==="/";)t=e,e--;return t===-1?s:s.slice(0,t)};wi.stripTrailingSlashes=Ga});var rt=d(B=>{"use strict";var Za=B&&B.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ya=B&&B.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Ka=B&&B.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{let e=s.onReadEntry;s.onReadEntry=e?t=>{e(t),t.resume()}:t=>t.resume()},Ja=(s,e)=>{let t=new Map(e.map(n=>[(0,Gs.stripTrailingSlashes)(n),!0])),i=s.filter,r=(n,o="")=>{let a=o||(0,on.parse)(n).root||".",h;if(n===a)h=!1;else{let l=t.get(n);h=l!==void 0?l:r((0,on.dirname)(n),a)}return t.set(n,h),h};s.filter=i?(n,o)=>i(n,o)&&r((0,Gs.stripTrailingSlashes)(n)):n=>r((0,Gs.stripTrailingSlashes)(n))};B.filesFilter=Ja;var eh=s=>{let e=new Ei.Parser(s),t=s.file,i;try{i=st.default.openSync(t,"r");let r=st.default.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size{let t=new Ei.Parser(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("end",o),st.default.stat(r,(h,l)=>{if(h)a(h);else{let c=new $a.ReadStream(r,{readSize:i,size:l.size});c.on("error",a),c.pipe(t)}})})};B.list=(0,Xa.makeCommand)(eh,th,s=>new Ei.Parser(s),s=>new Ei.Parser(s),(s,e)=>{e?.length&&(0,B.filesFilter)(s,e),s.noResume||Qa(s)})});var an=d(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});bi.modeFix=void 0;var ih=(s,e,t)=>(s&=4095,t&&(s=(s|384)&-19),e&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);bi.modeFix=ih});var Zs=d(Si=>{"use strict";Object.defineProperty(Si,"__esModule",{value:!0});Si.stripAbsolutePath=void 0;var sh=require("node:path"),{isAbsolute:rh,parse:hn}=sh.win32,nh=s=>{let e="",t=hn(s);for(;rh(s)||t.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":t.root;s=s.slice(i.length),e+=i,t=hn(s)}return[e,s]};Si.stripAbsolutePath=nh});var Ks=d(nt=>{"use strict";Object.defineProperty(nt,"__esModule",{value:!0});nt.decode=nt.encode=void 0;var gi=["|","<",">","?",":"],Ys=gi.map(s=>String.fromCodePoint(61440+Number(s.codePointAt(0)))),oh=new Map(gi.map((s,e)=>[s,Ys[e]])),ah=new Map(Ys.map((s,e)=>[s,gi[e]])),hh=s=>gi.reduce((e,t)=>e.split(t).join(oh.get(t)),s);nt.encode=hh;var lh=s=>Ys.reduce((e,t)=>e.split(t).join(ah.get(t)),s);nt.decode=lh});var nr=d(M=>{"use strict";var ch=M&&M.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),uh=M&&M.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),fh=M&&M.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;re?(s=(0,oe.normalizeWindowsPath)(s).replace(/^\.(\/|$)/,""),(0,dh.stripTrailingSlashes)(e)+"/"+s):(0,oe.normalizeWindowsPath)(s),ph=16*1024*1024,cn=Symbol("process"),un=Symbol("file"),fn=Symbol("directory"),$s=Symbol("symlink"),dn=Symbol("hardlink"),vt=Symbol("header"),Ri=Symbol("read"),Xs=Symbol("lstat"),Oi=Symbol("onlstat"),Qs=Symbol("onread"),Js=Symbol("onreadlink"),er=Symbol("openfile"),tr=Symbol("onopenfile"),ve=Symbol("close"),vi=Symbol("mode"),ir=Symbol("awaitDrain"),Vs=Symbol("ondrain"),he=Symbol("prefix"),Ti=class extends pn.Minipass{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#e=!1;constructor(e,t={}){let i=(0,yn.dealias)(t);super(),this.path=(0,oe.normalizeWindowsPath)(e),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||ph,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=(0,oe.normalizeWindowsPath)(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?(0,oe.normalizeWindowsPath)(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,a]=(0,bn.stripAbsolutePath)(this.path);o&&typeof a=="string"&&(this.path=a,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=mh.decode(this.path.replaceAll(/\\/g,"/")),e=e.replaceAll(/\\/g,"/")),this.absolute=(0,oe.normalizeWindowsPath)(i.absolute||ln.default.resolve(this.cwd,e)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[Oi](n):this[Xs]()}warn(e,t,i={}){return(0,Sn.warnMethod)(this,e,t,i)}emit(e,...t){return e==="error"&&(this.#e=!0),super.emit(e,...t)}[Xs](){ae.default.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[Oi](t)})}[Oi](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=_h(e),this.emit("stat",e),this[cn]()}[cn](){switch(this.type){case"File":return this[un]();case"Directory":return this[fn]();case"SymbolicLink":return this[$s]();default:return this.end()}}[vi](e){return(0,wn.modeFix)(e,this.type==="Directory",this.portable)}[he](e){return gn(e,this.prefix)}[vt](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new _n.Header({path:this[he](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[he](this.linkpath):this.linkpath,mode:this[vi](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new En.Pax({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[he](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[he](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error("failed to encode header");super.write(e)}[fn](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[vt](),this.end()}[$s](){ae.default.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[Js](t)})}[Js](e){this.linkpath=(0,oe.normalizeWindowsPath)(e),this[vt](),this.end()}[dn](e){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=(0,oe.normalizeWindowsPath)(ln.default.relative(this.cwd,e)),this.stat.size=0,this[vt](),this.end()}[un](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,t=this.linkCache.get(e);if(t?.indexOf(this.cwd)===0)return this[dn](t);this.linkCache.set(e,this.absolute)}if(this[vt](),this.stat.size===0)return this.end();this[er]()}[er](){ae.default.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[tr](t)})}[tr](e){if(this.fd=e,this.#e)return this[ve]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[Ri]()}[Ri](){let{fd:e,buf:t,offset:i,length:r,pos:n}=this;if(e===void 0||t===void 0)throw new Error("cannot read file without first opening");ae.default.read(e,t,i,r,n,(o,a)=>{if(o)return this[ve](()=>this.emit("error",o));this[Qs](a)})}[ve](e=()=>{}){this.fd!==void 0&&ae.default.close(this.fd,e)}[Qs](e){if(e<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(e>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(e===this.remain)for(let r=e;rthis[Vs]())}[ir](e){this.once("drain",e)}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this.blockRemaine?this.emit("error",e):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[Ri]()}};M.WriteEntry=Ti;var sr=class extends Ti{sync=!0;[Xs](){this[Oi](ae.default.lstatSync(this.absolute))}[$s](){this[Js](ae.default.readlinkSync(this.absolute))}[er](){this[tr](ae.default.openSync(this.absolute,"r"))}[Ri](){let e=!0;try{let{fd:t,buf:i,offset:r,length:n,pos:o}=this;if(t===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let a=ae.default.readSync(t,i,r,n,o);this[Qs](a),e=!1}finally{if(e)try{this[ve](()=>{})}catch{}}}[ir](e){e()}[ve](e=()=>{}){this.fd!==void 0&&ae.default.closeSync(this.fd),e()}};M.WriteEntrySync=sr;var rr=class extends pn.Minipass{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,t,i={}){return(0,Sn.warnMethod)(this,e,t,i)}constructor(e,t={}){let i=(0,yn.dealias)(t);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=e;let{type:r}=e;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=(0,oe.normalizeWindowsPath)(e.path),this.mode=e.mode!==void 0?this[vi](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:i.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?(0,oe.normalizeWindowsPath)(e.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[a,h]=(0,bn.stripAbsolutePath)(this.path);a&&typeof h=="string"&&(this.path=h,n=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new _n.Header({path:this[he](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[he](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new En.Pax({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[he](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[he](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),e.pipe(this)}[he](e){return gn(e,this.prefix)}[vi](e){return(0,wn.modeFix)(e,this.type==="Directory",this.portable)}write(e,t,i){typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8"));let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e,i)}end(e,t,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,t??"utf8")),i&&this.once("finish",i),e?super.end(e,i):super.end(i),this}};M.WriteEntryTar=rr;var _h=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported"});var Rn=d(at=>{"use strict";Object.defineProperty(at,"__esModule",{value:!0});at.Node=at.Yallist=void 0;var or=class s{tail;head;length=0;static create(e=[]){return new s(e)}constructor(e=[]){for(let t of e)this.push(t)}*[Symbol.iterator](){for(let e=this.head;e;e=e.next)yield e.value}removeNode(e){if(e.list!==this)throw new Error("removing node which does not belong to this list");let t=e.next,i=e.prev;return t&&(t.prev=i),i&&(i.next=t),e===this.head&&(this.head=t),e===this.tail&&(this.tail=i),this.length--,e.next=void 0,e.prev=void 0,e.list=void 0,t}unshiftNode(e){if(e===this.head)return;e.list&&e.list.removeNode(e);let t=this.head;e.list=this,e.next=t,t&&(t.prev=e),this.head=e,this.tail||(this.tail=e),this.length++}pushNode(e){if(e===this.tail)return;e.list&&e.list.removeNode(e);let t=this.tail;e.list=this,e.prev=t,t&&(t.next=e),this.tail=e,this.head||(this.head=e),this.length++}push(...e){for(let t=0,i=e.length;t1)i=t;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=e(i,r.value,n),r=r.next;return i}reduceReverse(e,t){let i,r=this.tail;if(arguments.length>1)i=t;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=e(i,r.value,n),r=r.prev;return i}toArray(){let e=new Array(this.length);for(let t=0,i=this.head;i;t++)e[t]=i.value,i=i.next;return e}toArrayReverse(){let e=new Array(this.length);for(let t=0,i=this.tail;i;t++)e[t]=i.value,i=i.prev;return e}slice(e=0,t=this.length){t<0&&(t+=this.length),e<0&&(e+=this.length);let i=new s;if(tthis.length&&(t=this.length);let r=this.head,n=0;for(n=0;r&&nthis.length&&(t=this.length);let r=this.length,n=this.tail;for(;n&&r>t;r--)n=n.prev;for(;n&&r>e;r--,n=n.prev)i.push(n.value);return i}splice(e,t=0,...i){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);let r=this.head;for(let o=0;r&&o{"use strict";var bh=L&&L.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Sh=L&&L.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),gh=L&&L.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(e.gzip&&(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new ar.Gzip(e.gzip)),e.brotli&&(typeof e.brotli!="object"&&(e.brotli={}),this.zip=new ar.BrotliCompress(e.brotli)),e.zstd&&(typeof e.zstd!="object"&&(e.zstd={}),this.zip=new ar.ZstdCompress(e.zstd)),!this.zip)throw new Error("impossible");let t=this.zip;t.on("data",i=>super.write(i)),t.on("end",()=>super.end()),t.on("drain",()=>this[cr]()),this.on("resume",()=>t.resume())}else this.on("drain",this[cr]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter=="function"?e.filter:()=>!0,this[X]=new Oh.Yallist,this[Q]=0,this.jobs=Number(e.jobs)||4,this[Pt]=!1,this[Tt]=!1}[Nn](e){return super.write(e)}add(e){return this.write(e),this}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&this.add(e),this[Tt]=!0,this[je](),i&&i(),this}write(e){if(this[Tt])throw new Error("write after end");return typeof e=="string"?this[Ni](e):this[vn](e),this.flowing}[vn](e){let t=(0,ur.normalizeWindowsPath)(Dn.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let i=new Nt(e.path,t);i.entry=new fr.WriteEntryTar(e,this[lr](i)),i.entry.on("end",()=>this[hr](i)),this[Q]+=1,this[X].push(i)}this[je]()}[Ni](e){let t=(0,ur.normalizeWindowsPath)(Dn.default.resolve(this.cwd,e));this[X].push(new Nt(e,t)),this[je]()}[dr](e){e.pending=!0,this[Q]+=1;let t=this.follow?"stat":"lstat";Ii.default[t](e.absolute,(i,r)=>{e.pending=!1,this[Q]-=1,i?this.emit("error",i):this[Pi](e,r)})}[Pi](e,t){if(this.statCache.set(e.absolute,t),e.stat=t,!this.filter(e.path,t))e.ignore=!0;else if(t.isFile()&&t.nlink>1&&!this.linkCache.get(`${t.dev}:${t.ino}`)&&!this.sync)if(e===this[Te])this[Di](e);else{let i=`${t.dev}:${t.ino}`,r=this[Dt].get(i);r?r.push(e):this[Dt].set(i,[e]),e.pendingLink=!0,e.pending=!0}this[je]()}[mr](e){e.pending=!0,this[Q]+=1,Ii.default.readdir(e.absolute,(t,i)=>{if(e.pending=!1,this[Q]-=1,t)return this.emit("error",t);this[Mi](e,i)})}[Mi](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[je]()}[je](){if(!this[Pt]){this[Pt]=!0;for(let e=this[X].head;e&&this[Q]1){let i=`${t.dev}:${t.ino}`,r=this[Dt].get(i);if(r){this[Dt].delete(i);for(let n of r)n.pending=!1,this[Di](n)}}this[je]()}[Di](e){if(e.pending&&e.pendingLink&&e===this[Te]&&(e.pending=!1,e.pendingLink=!1),!e.pending){if(e.entry){e===this[Te]&&!e.piped&&this[Li](e);return}if(!e.stat){let t=this.statCache.get(e.absolute);t?this[Pi](e,t):this[dr](e)}if(e.stat&&!e.ignore){if(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir){let t=this.readdirCache.get(e.absolute);if(t?this[Mi](e,t):this[mr](e),!e.readdir)return}if(e.entry=this[Tn](e),!e.entry){e.ignore=!0;return}e===this[Te]&&!e.piped&&this[Li](e)}}}[lr](e){return{onwarn:(t,i,r)=>this.warn(t,i,r),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[Tn](e){this[Q]+=1;try{return new this[Ai](e.path,this[lr](e)).on("end",()=>this[hr](e)).on("error",i=>this.emit("error",i))}catch(t){this.emit("error",t)}}[cr](){this[Te]&&this[Te].entry&&this[Te].entry.resume()}[Li](e){e.piped=!0,e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Ni](o+r)});let t=e.entry,i=this.zip;if(!t)throw new Error("cannot pipe without source");i?t.on("data",r=>{i.write(r)||t.pause()}):t.on("data",r=>{super.write(r)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,t,i={}){(0,vh.warnMethod)(this,e,t,i)}};L.Pack=Fi;var pr=class extends Fi{sync=!0;constructor(e){super(e),this[Ai]=fr.WriteEntrySync}pause(){}resume(){}[dr](e){let t=this.follow?"statSync":"lstatSync";this[Pi](e,Ii.default[t](e.absolute))}[mr](e){this[Mi](e,Ii.default.readdirSync(e.absolute))}[Li](e){let t=e.entry,i=this.zip;if(e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Ni](o+r)}),!t)throw new Error("Cannot pipe without source");i?t.on("data",r=>{i.write(r)}):t.on("data",r=>{super[Nn](r)})}};L.PackSync=pr});var _r=d(ht=>{"use strict";var Th=ht&&ht.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ht,"__esModule",{value:!0});ht.create=void 0;var Mn=Ke(),Ln=Th(require("node:path")),An=rt(),Dh=Ve(),Bi=Ci(),Ph=(s,e)=>{let t=new Bi.PackSync(s),i=new Mn.WriteStreamSync(s.file,{mode:s.mode||438});t.pipe(i),In(t,e)},Nh=(s,e)=>{let t=new Bi.Pack(s),i=new Mn.WriteStream(s.file,{mode:s.mode||438});t.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),t.on("error",o)});return Fn(t,e).catch(n=>t.emit("error",n)),r},In=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,An.list)({file:Ln.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},Fn=async(s,e)=>{for(let t of e)t.charAt(0)==="@"?await(0,An.list)({file:Ln.default.resolve(String(s.cwd),t.slice(1)),noResume:!0,onReadEntry:i=>{s.add(i)}}):s.add(t);s.end()},Mh=(s,e)=>{let t=new Bi.PackSync(s);return In(t,e),t},Lh=(s,e)=>{let t=new Bi.Pack(s);return Fn(t,e).catch(i=>t.emit("error",i)),t};ht.create=(0,Dh.makeCommand)(Ph,Nh,Mh,Lh,(s,e)=>{if(!e?.length)throw new TypeError("no paths specified to add to archive")})});var Wn=d(lt=>{"use strict";var Ah=lt&<.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(lt,"__esModule",{value:!0});lt.getWriteFlag=void 0;var zn=Ah(require("fs")),Ih=process.env.__FAKE_PLATFORM__||process.platform,kn=Ih==="win32",{O_CREAT:xn,O_NOFOLLOW:Cn,O_TRUNC:jn,O_WRONLY:Un}=zn.default.constants,qn=Number(process.env.__FAKE_FS_O_FILENAME__)||zn.default.constants.UV_FS_O_FILEMAP||0,Fh=kn&&!!qn,Ch=512*1024,Bh=qn|jn|xn|Un,Bn=!kn&&typeof Cn=="number"?Cn|jn|xn|Un:null;lt.getWriteFlag=Bn!==null?()=>Bn:Fh?s=>s"w"});var Gn=d(le=>{"use strict";var Hn=le&&le.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(le,"__esModule",{value:!0});le.chownrSync=le.chownr=void 0;var ki=Hn(require("node:fs")),Mt=Hn(require("node:path")),wr=(s,e,t)=>{try{return ki.default.lchownSync(s,e,t)}catch(i){if(i?.code!=="ENOENT")throw i}},zi=(s,e,t,i)=>{ki.default.lchown(s,e,t,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},zh=(s,e,t,i,r)=>{if(e.isDirectory())(0,le.chownr)(Mt.default.resolve(s,e.name),t,i,n=>{if(n)return r(n);let o=Mt.default.resolve(s,e.name);zi(o,t,i,r)});else{let n=Mt.default.resolve(s,e.name);zi(n,t,i,r)}},kh=(s,e,t,i)=>{ki.default.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return zi(s,e,t,i);let o=n.length,a=null,h=l=>{if(!a){if(l)return i(a=l);if(--o===0)return zi(s,e,t,i)}};for(let l of n)zh(s,l,e,t,h)})};le.chownr=kh;var xh=(s,e,t,i)=>{e.isDirectory()&&(0,le.chownrSync)(Mt.default.resolve(s,e.name),t,i),wr(Mt.default.resolve(s,e.name),t,i)},jh=(s,e,t)=>{let i;try{i=ki.default.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return wr(s,e,t);throw n}for(let r of i)xh(s,r,e,t);return wr(s,e,t)};le.chownrSync=jh});var Zn=d(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.CwdError=void 0;var yr=class extends Error{path;code;syscall="chdir";constructor(e,t){super(`${t}: Cannot cd into '${e}'`),this.path=e,this.code=t}get name(){return"CwdError"}};xi.CwdError=yr});var br=d(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.SymlinkError=void 0;var Er=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(e,t){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=e,this.path=t}get name(){return"SymlinkError"}};ji.SymlinkError=Er});var Xn=d(De=>{"use strict";var gr=De&&De.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(De,"__esModule",{value:!0});De.mkdirSync=De.mkdir=void 0;var Yn=Gn(),j=gr(require("node:fs")),Uh=gr(require("node:fs/promises")),Ui=gr(require("node:path")),Kn=Zn(),_e=tt(),Vn=br(),qh=(s,e)=>{j.default.stat(s,(t,i)=>{(t||!i.isDirectory())&&(t=new Kn.CwdError(s,t?.code||"ENOTDIR")),e(t)})},Wh=(s,e,t)=>{s=(0,_e.normalizeWindowsPath)(s);let i=e.umask??18,r=e.mode|448,n=(r&i)!==0,o=e.uid,a=e.gid,h=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),l=e.preserve,c=e.unlink,u=(0,_e.normalizeWindowsPath)(e.cwd),E=(w,P)=>{w?t(w):P&&h?(0,Yn.chownr)(P,o,a,xt=>E(xt)):n?j.default.chmod(s,r,t):t()};if(s===u)return qh(s,E);if(l)return Uh.default.mkdir(s,{mode:r,recursive:!0}).then(w=>E(null,w??void 0),E);let A=(0,_e.normalizeWindowsPath)(Ui.default.relative(u,s)).split("/");Sr(u,A,r,c,u,void 0,E)};De.mkdir=Wh;var Sr=(s,e,t,i,r,n,o)=>{if(e.length===0)return o(null,n);let a=e.shift(),h=(0,_e.normalizeWindowsPath)(Ui.default.resolve(s+"/"+a));j.default.mkdir(h,t,$n(h,e,t,i,r,n,o))},$n=(s,e,t,i,r,n,o)=>a=>{a?j.default.lstat(s,(h,l)=>{if(h)h.path=h.path&&(0,_e.normalizeWindowsPath)(h.path),o(h);else if(l.isDirectory())Sr(s,e,t,i,r,n,o);else if(i)j.default.unlink(s,c=>{if(c)return o(c);j.default.mkdir(s,t,$n(s,e,t,i,r,n,o))});else{if(l.isSymbolicLink())return o(new Vn.SymlinkError(s,s+"/"+e.join("/")));o(a)}}):(n=n||s,Sr(s,e,t,i,r,n,o))},Hh=s=>{let e=!1,t;try{e=j.default.statSync(s).isDirectory()}catch(i){t=i?.code}finally{if(!e)throw new Kn.CwdError(s,t??"ENOTDIR")}},Gh=(s,e)=>{s=(0,_e.normalizeWindowsPath)(s);let t=e.umask??18,i=e.mode|448,r=(i&t)!==0,n=e.uid,o=e.gid,a=typeof n=="number"&&typeof o=="number"&&(n!==e.processUid||o!==e.processGid),h=e.preserve,l=e.unlink,c=(0,_e.normalizeWindowsPath)(e.cwd),u=w=>{w&&a&&(0,Yn.chownrSync)(w,n,o),r&&j.default.chmodSync(s,i)};if(s===c)return Hh(c),u();if(h)return u(j.default.mkdirSync(s,{mode:i,recursive:!0})??void 0);let D=(0,_e.normalizeWindowsPath)(Ui.default.relative(c,s)).split("/"),A;for(let w=D.shift(),P=c;w&&(P+="/"+w);w=D.shift()){P=(0,_e.normalizeWindowsPath)(Ui.default.resolve(P));try{j.default.mkdirSync(P,i),A=A||P}catch{let xt=j.default.lstatSync(P);if(xt.isDirectory())continue;if(l){j.default.unlinkSync(P),j.default.mkdirSync(P,i),A=A||P;continue}else if(xt.isSymbolicLink())return new Vn.SymlinkError(P,P+"/"+D.join("/"))}}return u(A)};De.mkdirSync=Gh});var Jn=d(qi=>{"use strict";Object.defineProperty(qi,"__esModule",{value:!0});qi.normalizeUnicode=void 0;var Rr=Object.create(null),Qn=1e4,ct=new Set,Zh=s=>{ct.has(s)?ct.delete(s):Rr[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),ct.add(s);let e=Rr[s],t=ct.size-Qn;if(t>Qn/10){for(let i of ct)if(ct.delete(i),delete Rr[i],--t<=0)break}return e};qi.normalizeUnicode=Zh});var to=d(Wi=>{"use strict";Object.defineProperty(Wi,"__esModule",{value:!0});Wi.PathReservations=void 0;var eo=require("node:path"),Yh=Jn(),Kh=yi(),Vh=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,$h=Vh==="win32",Xh=s=>s.split("/").slice(0,-1).reduce((t,i)=>{let r=t.at(-1);return r!==void 0&&(i=(0,eo.join)(r,i)),t.push(i||"/"),t},[]),Or=class{#e=new Map;#i=new Map;#s=new Set;reserve(e,t){e=$h?["win32 parallelization disabled"]:e.map(r=>(0,Kh.stripTrailingSlashes)((0,eo.join)((0,Yh.normalizeUnicode)(r))));let i=new Set(e.map(r=>Xh(r)).reduce((r,n)=>r.concat(n)));this.#i.set(t,{dirs:i,paths:e});for(let r of e){let n=this.#e.get(r);n?n.push(t):this.#e.set(r,[t])}for(let r of i){let n=this.#e.get(r);if(!n)this.#e.set(r,[new Set([t])]);else{let o=n.at(-1);o instanceof Set?o.add(t):n.push(new Set([t]))}}return this.#r(t)}#n(e){let t=this.#i.get(e);if(!t)throw new Error("function does not have any path reservations");return{paths:t.paths.map(i=>this.#e.get(i)),dirs:[...t.dirs].map(i=>this.#e.get(i))}}check(e){let{paths:t,dirs:i}=this.#n(e);return t.every(r=>r&&r[0]===e)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(e))}#r(e){return this.#s.has(e)||!this.check(e)?!1:(this.#s.add(e),e(()=>this.#t(e)),!0)}#t(e){if(!this.#s.has(e))return!1;let t=this.#i.get(e);if(!t)throw new Error("invalid reservation");let{paths:i,dirs:r}=t,n=new Set;for(let o of i){let a=this.#e.get(o);if(!a||a?.[0]!==e)continue;let h=a[1];if(!h){this.#e.delete(o);continue}if(a.shift(),typeof h=="function")n.add(h);else for(let l of h)n.add(l)}for(let o of r){let a=this.#e.get(o),h=a?.[0];if(!(!a||!(h instanceof Set)))if(h.size===1&&a.length===1){this.#e.delete(o);continue}else if(h.size===1){a.shift();let l=a[0];typeof l=="function"&&n.add(l)}else h.delete(e)}return this.#s.delete(e),n.forEach(o=>this.#r(o)),!0}};Wi.PathReservations=Or});var io=d(Hi=>{"use strict";Object.defineProperty(Hi,"__esModule",{value:!0});Hi.umask=void 0;var Qh=()=>process.umask();Hi.umask=Qh});var Cr=d(k=>{"use strict";var Jh=k&&k.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),el=k&&k.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),fo=k&&k.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{if(!zt)return m.default.unlink(s,e);let t=s+".DELETE."+(0,mo.randomBytes)(16).toString("hex");m.default.rename(s,t,i=>{if(i)return e(i);m.default.unlink(t,e)})},cl=s=>{if(!zt)return m.default.unlinkSync(s);let e=s+".DELETE."+(0,mo.randomBytes)(16).toString("hex");m.default.renameSync(s,e),m.default.unlinkSync(e)},uo=(s,e,t)=>s!==void 0&&s===s>>>0?s:e!==void 0&&e===e>>>0?e:t,Yi=class extends sl.Parser{[Tr]=!1;[Bt]=!1;[Gi]=0;reservations=new nl.PathReservations;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[Tr]=!0,this[Dr]()},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;this.preserveOwner=e.preserveOwner===void 0&&typeof e.uid!="number"?process.getuid?.()===0:!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:hl,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||zt,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=(0,U.normalizeWindowsPath)(g.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask=="number"?e.processUmask:(0,ol.umask)():0,this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[ro](t))}warn(e,t,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,t,i)}[Dr](){this[Tr]&&this[Gi]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[vr](e,t){let i=e[t],{type:r}=e;if(!i||this.preservePaths)return!0;let[n,o]=(0,rl.stripAbsolutePath)(i),a=o.replaceAll(/\\/g,"/").split("/");if(a.includes("..")||zt&&/^[a-z]:\.\.$/i.test(a[0]??"")){if(t==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${t} contains '..'`,{entry:e,[t]:i}),!1;let h=g.default.posix.dirname(e.path),l=g.default.posix.normalize(g.default.posix.join(h,a.join("/")));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${t} escapes extraction directory`,{entry:e,[t]:i}),!1}return n&&(e[t]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${t}`,{entry:e,[t]:i})),!0}[lo](e){let t=(0,U.normalizeWindowsPath)(e.path),i=t.split("/");if(this.strip){if(i.length=this.strip)e.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),e.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:e,path:t,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[vr](e,"path")||!this[vr](e,"linkpath"))return!1;if(e.absolute=g.default.isAbsolute(e.path)?(0,U.normalizeWindowsPath)(g.default.resolve(e.path)):(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute=="string"&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:(0,U.normalizeWindowsPath)(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=g.default.win32.parse(String(e.absolute));e.absolute=r+so.encode(String(e.absolute).slice(r.length));let{root:n}=g.default.win32.parse(e.path);e.path=n+so.encode(e.path.slice(n.length))}return!0}[ro](e){if(!this[lo](e))return e.resume();switch(il.default.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Pr](e);default:return this[ho](e)}}[T](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[ut](),t.resume())}[Pe](e,t,i){(0,_o.mkdir)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t},i)}[It](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[Ft](e){return uo(this.uid,e.uid,this.processUid)}[Ct](e){return uo(this.gid,e.gid,this.processGid)}[Mr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=new tl.WriteStream(String(e.absolute),{flags:(0,po.getWriteFlag)(e.size),mode:i,autoClose:!1});r.on("error",h=>{r.fd&&m.default.close(r.fd,()=>{}),r.write=()=>!0,this[T](h,e),t()});let n=1,o=h=>{if(h){r.fd&&m.default.close(r.fd,()=>{}),this[T](h,e),t();return}--n===0&&r.fd!==void 0&&m.default.close(r.fd,l=>{l?this[T](l,e):this[ut](),t()})};r.on("finish",()=>{let h=String(e.absolute),l=r.fd;if(typeof l=="number"&&e.mtime&&!this.noMtime){n++;let c=e.atime||new Date,u=e.mtime;m.default.futimes(l,c,u,E=>E?m.default.utimes(h,c,u,D=>o(D&&E)):o())}if(typeof l=="number"&&this[It](e)){n++;let c=this[Ft](e),u=this[Ct](e);typeof c=="number"&&typeof u=="number"&&m.default.fchown(l,c,u,E=>E?m.default.chown(h,c,u,D=>o(D&&E)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",h=>{this[T](h,e),t()}),e.pipe(a)),a.pipe(r)}[Lr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode;this[Pe](String(e.absolute),i,r=>{if(r){this[T](r,e),t();return}let n=1,o=()=>{--n===0&&(t(),this[ut](),e.resume())};e.mtime&&!this.noMtime&&(n++,m.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,o)),this[It](e)&&(n++,m.default.chown(String(e.absolute),Number(this[Ft](e)),Number(this[Ct](e)),o)),o()})}[ho](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[oo](e,t){let i=(0,U.normalizeWindowsPath)(g.default.relative(this.cwd,g.default.resolve(g.default.dirname(String(e.absolute)),String(e.linkpath)))).split("/");this[At](e,this.cwd,i,()=>this[Zi](e,String(e.linkpath),"symlink",t),r=>{this[T](r,e),t()})}[ao](e,t){let i=(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,String(e.linkpath))),r=(0,U.normalizeWindowsPath)(String(e.linkpath)).split("/");this[At](e,this.cwd,r,()=>this[Zi](e,i,"link",t),n=>{this[T](n,e),t()})}[At](e,t,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let a=g.default.resolve(t,o);m.default.lstat(a,(h,l)=>{if(h)return r();if(l?.isSymbolicLink())return n(new wo.SymlinkError(a,g.default.resolve(a,i.join("/"))));this[At](e,a,i,r,n)})}[co](){this[Gi]++}[ut](){this[Gi]--,this[Dr]()}[Ar](e){this[ut](),e.resume()}[Nr](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!zt}[Pr](e){this[co]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,i=>this[no](e,i))}[no](e,t){let i=a=>{t(a)},r=()=>{this[Pe](this.cwd,this.dmode,a=>{if(a){this[T](a,e),i();return}this[Bt]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let a=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(a!==this.cwd)return this[Pe](a,this.dmode,h=>{if(h){this[T](h,e),i();return}o()})}o()},o=()=>{m.default.lstat(String(e.absolute),(a,h)=>{if(h&&(this.keep||this.newer&&h.mtime>(e.mtime??h.mtime))){this[Ar](e),i();return}if(a||this[Nr](e,h))return this[G](null,e,i);if(h.isDirectory()){if(e.type==="Directory"){let l=this.chmod&&e.mode&&(h.mode&4095)!==e.mode,c=u=>this[G](u??null,e,i);return l?m.default.chmod(String(e.absolute),Number(e.mode),c):c()}if(e.absolute!==this.cwd)return m.default.rmdir(String(e.absolute),l=>this[G](l??null,e,i))}if(e.absolute===this.cwd)return this[G](null,e,i);ll(String(e.absolute),l=>this[G](l??null,e,i))})};this[Bt]?n():r()}[G](e,t,i){if(e){this[T](e,t),i();return}switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[Mr](t,i);case"Link":return this[ao](t,i);case"SymbolicLink":return this[oo](t,i);case"Directory":case"GNUDumpDir":return this[Lr](t,i)}}[Zi](e,t,i,r){m.default[i](t,String(e.absolute),n=>{n?this[T](n,e):(this[ut](),e.resume()),r()})}};k.Unpack=Yi;var Lt=s=>{try{return[null,s()]}catch(e){return[e,null]}},Ir=class extends Yi{sync=!0;[G](e,t){return super[G](e,t,()=>{})}[Pr](e){if(!this[Bt]){let n=this[Pe](this.cwd,this.dmode);if(n)return this[T](n,e);this[Bt]=!0}if(e.absolute!==this.cwd){let n=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(n!==this.cwd){let o=this[Pe](n,this.dmode);if(o)return this[T](o,e)}}let[t,i]=Lt(()=>m.default.lstatSync(String(e.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(e.mtime??i.mtime)))return this[Ar](e);if(t||this[Nr](e,i))return this[G](null,e);if(i.isDirectory()){if(e.type==="Directory"){let o=this.chmod&&e.mode&&(i.mode&4095)!==e.mode,[a]=o?Lt(()=>{m.default.chmodSync(String(e.absolute),Number(e.mode))}):[];return this[G](a,e)}let[n]=Lt(()=>m.default.rmdirSync(String(e.absolute)));this[G](n,e)}let[r]=e.absolute===this.cwd?[]:Lt(()=>cl(String(e.absolute)));this[G](r,e)}[Mr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=a=>{let h;try{m.default.closeSync(n)}catch(l){h=l}(a||h)&&this[T](a||h,e),t()},n;try{n=m.default.openSync(String(e.absolute),(0,po.getWriteFlag)(e.size),i)}catch(a){return r(a)}let o=this.transform&&this.transform(e)||e;o!==e&&(o.on("error",a=>this[T](a,e)),e.pipe(o)),o.on("data",a=>{try{m.default.writeSync(n,a,0,a.length)}catch(h){r(h)}}),o.on("end",()=>{let a=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,l=e.mtime;try{m.default.futimesSync(n,h,l)}catch(c){try{m.default.utimesSync(String(e.absolute),h,l)}catch{a=c}}}if(this[It](e)){let h=this[Ft](e),l=this[Ct](e);try{m.default.fchownSync(n,Number(h),Number(l))}catch(c){try{m.default.chownSync(String(e.absolute),Number(h),Number(l))}catch{a=a||c}}}r(a)})}[Lr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode,r=this[Pe](String(e.absolute),i);if(r){this[T](r,e),t();return}if(e.mtime&&!this.noMtime)try{m.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime)}catch{}if(this[It](e))try{m.default.chownSync(String(e.absolute),Number(this[Ft](e)),Number(this[Ct](e)))}catch{}t(),e.resume()}[Pe](e,t){try{return(0,_o.mkdirSync)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t})}catch(i){return i}}[At](e,t,i,r,n){if(this.preservePaths||i.length===0)return r();let o=t;for(let a of i){o=g.default.resolve(o,a);let[h,l]=Lt(()=>m.default.lstatSync(o));if(h)return r();if(l.isSymbolicLink())return n(new wo.SymlinkError(o,g.default.resolve(t,i.join("/"))))}r()}[Zi](e,t,i,r){let n=`${i}Sync`;try{m.default[n](t,String(e.absolute)),r(),e.resume()}catch(o){return this[T](o,e)}}};k.UnpackSync=Ir});var Br=d(Z=>{"use strict";var ul=Z&&Z.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),fl=Z&&Z.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),dl=Z&&Z.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{let e=new Ki.UnpackSync(s),t=s.file,i=Eo.default.statSync(t),r=s.maxReadSize||16*1024*1024;new yo.ReadStreamSync(t,{readSize:r,size:i.size}).pipe(e)},yl=(s,e)=>{let t=new Ki.Unpack(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("close",o),Eo.default.stat(r,(h,l)=>{if(h)a(h);else{let c=new yo.ReadStream(r,{readSize:i,size:l.size});c.on("error",a),c.pipe(t)}})})};Z.extract=(0,_l.makeCommand)(wl,yl,s=>new Ki.UnpackSync(s),s=>new Ki.Unpack(s),(s,e)=>{e?.length&&(0,pl.filesFilter)(s,e)})});var Vi=d(ft=>{"use strict";var bo=ft&&ft.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ft,"__esModule",{value:!0});ft.replace=void 0;var So=Ke(),q=bo(require("node:fs")),go=bo(require("node:path")),Ro=et(),Oo=rt(),El=Ve(),bl=Qt(),vo=Ci(),Sl=(s,e)=>{let t=new vo.PackSync(s),i=!0,r,n;try{try{r=q.default.openSync(s.file,"r+")}catch(h){if(h?.code==="ENOENT")r=q.default.openSync(s.file,"w+");else throw h}let o=q.default.fstatSync(r),a=Buffer.alloc(512);e:for(n=0;no.size)break;n+=l,s.mtimeCache&&h.mtime&&s.mtimeCache.set(String(h.path),h.mtime)}i=!1,gl(s,t,n,r,e)}finally{if(i)try{q.default.closeSync(r)}catch{}}},gl=(s,e,t,i,r)=>{let n=new So.WriteStreamSync(s.file,{fd:i,start:t});e.pipe(n),Ol(e,r)},Rl=(s,e)=>{e=Array.from(e);let t=new vo.Pack(s),i=(n,o,a)=>{let h=(D,A)=>{D?q.default.close(n,w=>a(D)):a(null,A)},l=0;if(o===0)return h(null,0);let c=0,u=Buffer.alloc(512),E=(D,A)=>{if(D||A===void 0)return h(D);if(c+=A,c<512&&A)return q.default.read(n,u,c,u.length-c,l+c,E);if(l===0&&u[0]===31&&u[1]===139)return h(new Error("cannot append to compressed archives"));if(c<512)return h(null,l);let w=new Ro.Header(u);if(!w.cksumValid)return h(null,l);let P=512*Math.ceil((w.size??0)/512);if(l+P+512>o||(l+=P+512,l>=o))return h(null,l);s.mtimeCache&&w.mtime&&s.mtimeCache.set(String(w.path),w.mtime),c=0,q.default.read(n,u,0,512,l,E)};q.default.read(n,u,0,512,l,E)};return new Promise((n,o)=>{t.on("error",o);let a="r+",h=(l,c)=>{if(l&&l.code==="ENOENT"&&a==="r+")return a="w+",q.default.open(s.file,a,h);if(l||!c)return o(l);q.default.fstat(c,(u,E)=>{if(u)return q.default.close(c,()=>o(u));i(c,E.size,(D,A)=>{if(D)return o(D);let w=new So.WriteStream(s.file,{fd:c,start:A});t.pipe(w),w.on("error",o),w.on("close",n),vl(t,e)})})};q.default.open(s.file,a,h)})},Ol=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,Oo.list)({file:go.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},vl=async(s,e)=>{for(let t of e)t.charAt(0)==="@"?await(0,Oo.list)({file:go.default.resolve(String(s.cwd),t.slice(1)),noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t);s.end()};ft.replace=(0,El.makeCommand)(Sl,Rl,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,e)=>{if(!(0,bl.isFile)(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!e?.length)throw new TypeError("no paths specified to add/replace")})});var zr=d($i=>{"use strict";Object.defineProperty($i,"__esModule",{value:!0});$i.update=void 0;var Tl=Ve(),kt=Vi();$i.update=(0,Tl.makeCommand)(kt.replace.syncFile,kt.replace.asyncFile,kt.replace.syncNoFile,kt.replace.asyncNoFile,(s,e=[])=>{kt.replace.validate?.(s,e),Dl(s)});var Dl=s=>{let e=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=e?(t,i)=>e(t,i)&&!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0)):(t,i)=>!((s.mtimeCache?.get(t)??i.mtime??0)>(i.mtime??0))}});var To=exports&&exports.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Pl=exports&&exports.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Y=exports&&exports.__exportStar||function(s,e){for(var t in s)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&To(e,s,t)},Nl=exports&&exports.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r p - : (p) => p && p.replaceAll(/\\/g, '/'); + (p) => String(p) + : (p) => String(p).replaceAll(/\\/g, '/'); //# sourceMappingURL=normalize-windows-path.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/tar/dist/commonjs/parse.js b/deps/npm/node_modules/tar/dist/commonjs/parse.js index 999873ec64032e..2968e861ee68e5 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/parse.js +++ b/deps/npm/node_modules/tar/dist/commonjs/parse.js @@ -60,6 +60,10 @@ const SAW_VALID_ENTRY = Symbol('sawValidEntry'); const SAW_NULL_BLOCK = Symbol('sawNullBlock'); const SAW_EOF = Symbol('sawEOF'); const CLOSESTREAM = Symbol('closeStream'); +const MAX_DECOMPRESSION_RATIO = 1000; +const COMPRESSEDBYTESREAD = Symbol('compressedBytesRead'); +const DECOMPRESSEDBYTESREAD = Symbol('decompressedBytesRead'); +const CHECKDECOMPRESSIONRATIO = Symbol('checkDecompressionRatio'); const noop = () => true; class Parser extends events_1.EventEmitter { file; @@ -68,6 +72,7 @@ class Parser extends events_1.EventEmitter { filter; brotli; zstd; + maxDecompressionRatio; writable = true; readable = false; [QUEUE] = []; @@ -87,6 +92,8 @@ class Parser extends events_1.EventEmitter { [WRITING] = false; [CONSUMING] = false; [EMITTEDEND] = false; + [COMPRESSEDBYTESREAD] = 0; + [DECOMPRESSEDBYTESREAD] = 0; constructor(opt = {}) { super(); this.file = opt.file || ''; @@ -109,6 +116,10 @@ class Parser extends events_1.EventEmitter { }); } this.strict = !!opt.strict; + this.maxDecompressionRatio = + typeof opt.maxDecompressionRatio === 'number' ? + opt.maxDecompressionRatio + : MAX_DECOMPRESSION_RATIO; this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize; this.filter = typeof opt.filter === 'function' ? opt.filter : noop; // Unlike gzip, brotli doesn't have any magic bytes to identify it @@ -362,11 +373,23 @@ class Parser extends events_1.EventEmitter { } } abort(error) { + if (this[ABORTED]) { + return; + } this[ABORTED] = true; this.emit('abort', error); // always throws, even in non-strict mode this.warn('TAR_ABORT', error, { recoverable: false }); } + [CHECKDECOMPRESSIONRATIO](chunk) { + this[DECOMPRESSEDBYTESREAD] += chunk.length; + const ratio = this[DECOMPRESSEDBYTESREAD] / this[COMPRESSEDBYTESREAD]; + if (ratio > this.maxDecompressionRatio) { + this.abort(new Error(`max decompression ratio exceeded: ${ratio.toFixed(2)} > ${this.maxDecompressionRatio}`)); + return false; + } + return true; + } write(chunk, encoding, cb) { if (typeof encoding === 'function') { cb = encoding; @@ -450,13 +473,22 @@ class Parser extends events_1.EventEmitter { this[UNZIP] === undefined ? new minizlib_1.Unzip({}) : isZstd ? new minizlib_1.ZstdDecompress({}) : new minizlib_1.BrotliDecompress({}); - this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk)); - this[UNZIP].on('error', er => this.abort(er)); + this[UNZIP].on('data', chunk => { + if (this[CHECKDECOMPRESSIONRATIO](chunk)) { + this[CONSUMECHUNK](chunk); + } + }); + this[UNZIP].on('error', er => { + if (!this[ABORTED]) { + this.abort(er); + } + }); this[UNZIP].on('end', () => { this[ENDED] = true; this[CONSUMECHUNK](); }); this[WRITING] = true; + this[COMPRESSEDBYTESREAD] += chunk.length; const ret = !!this[UNZIP][ended ? 'end' : 'write'](chunk); this[WRITING] = false; cb?.(); @@ -465,6 +497,7 @@ class Parser extends events_1.EventEmitter { } this[WRITING] = true; if (this[UNZIP]) { + this[COMPRESSEDBYTESREAD] += chunk.length; this[UNZIP].write(chunk); } else { @@ -495,7 +528,7 @@ class Parser extends events_1.EventEmitter { !this[CONSUMING]) { this[EMITTEDEND] = true; const entry = this[WRITEENTRY]; - if (entry && entry.blockRemain) { + if (entry?.blockRemain) { // truncated, likely a damaged file const have = this[BUFFER] ? this[BUFFER].length : 0; this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${entry.blockRemain} more bytes, only ${have} available)`, { entry }); @@ -589,8 +622,10 @@ class Parser extends events_1.EventEmitter { if (!this[ABORTED]) { if (this[UNZIP]) { /* c8 ignore start */ - if (chunk) + if (chunk) { + this[COMPRESSEDBYTESREAD] += chunk.length; this[UNZIP].write(chunk); + } /* c8 ignore stop */ this[UNZIP].end(); } diff --git a/deps/npm/node_modules/tar/dist/commonjs/pax.js b/deps/npm/node_modules/tar/dist/commonjs/pax.js index d30c0f3efbe9ea..fce37f63058e10 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/pax.js +++ b/deps/npm/node_modules/tar/dist/commonjs/pax.js @@ -147,12 +147,36 @@ const parseKVLine = (set, line) => { return set; } const k = r.replace(/^SCHILY\.(dev|ino|nlink)/, '$1'); - const v = kv.join('='); - set[k] = - /^([A-Z]+\.)?([mac]|birth|creation)time$/.test(k) ? - new Date(Number(v) * 1000) - : /^[0-9]+$/.test(v) ? +v - : v; + const v = kv.join('=').replace(/\0.*/, ''); + switch (k) { + case 'path': + case 'linkpath': + case 'type': + case 'charset': + case 'comment': + case 'gname': + case 'uname': + set[k] = v; + break; + case 'ctime': + case 'atime': + case 'mtime': + set[k] = new Date(Number(v) * 1000); + break; + case 'size': + const s = +v; + if (s >= 0) + set[k] = s; + break; + case 'gid': + case 'uid': + case 'dev': + case 'ino': + case 'nlink': + case 'mode': + set[k] = +v; + break; + } return set; }; //# sourceMappingURL=pax.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/tar/dist/commonjs/unpack.js b/deps/npm/node_modules/tar/dist/commonjs/unpack.js index 3df1031d84cbe5..0e9f861abb87cb 100644 --- a/deps/npm/node_modules/tar/dist/commonjs/unpack.js +++ b/deps/npm/node_modules/tar/dist/commonjs/unpack.js @@ -185,7 +185,7 @@ class Unpack extends parse_js_1.Parser { // default true for root this.preserveOwner = opt.preserveOwner === undefined && typeof opt.uid !== 'number' ? - !!(process.getuid && process.getuid() === 0) + !!(process.getuid?.() === 0) : !!opt.preserveOwner; this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ? @@ -406,7 +406,7 @@ class Unpack extends parse_js_1.Parser { } } [MKDIR](dir, mode, cb) { - (0, mkdir_js_1.mkdir)((0, normalize_windows_path_js_1.normalizeWindowsPath)(dir), { + void (0, mkdir_js_1.mkdir)((0, normalize_windows_path_js_1.normalizeWindowsPath)(dir), { uid: this.uid, gid: this.gid, processUid: this.processUid, diff --git a/deps/npm/node_modules/tar/dist/esm/header.js b/deps/npm/node_modules/tar/dist/esm/header.js index fe8c09928e46c9..068c4ea039885e 100644 --- a/deps/npm/node_modules/tar/dist/esm/header.js +++ b/deps/npm/node_modules/tar/dist/esm/header.js @@ -5,6 +5,7 @@ import { posix as pathModule } from 'node:path'; import * as large from './large-numbers.js'; import * as types from './types.js'; +const notNegative = (n) => n === undefined || n < 0 ? undefined : n; export class Header { cksumValid = false; needPax = false; @@ -63,10 +64,9 @@ export class Header { exForFields?.uid ?? gexForFields?.uid ?? decNumber(buf, off + 108, 8); this.gid = exForFields?.gid ?? gexForFields?.gid ?? decNumber(buf, off + 116, 8); - this.size = - exForFields?.size ?? - gexForFields?.size ?? - decNumber(buf, off + 124, 12); + this.size = notNegative(exForFields?.size ?? + gexForFields?.size ?? + decNumber(buf, off + 124, 12)); this.mtime = exForFields?.mtime ?? gexForFields?.mtime ?? @@ -152,6 +152,7 @@ export class Header { // null/undefined values are ignored. return !(v === null || v === undefined || + (k === 'size' && Number(v) < 0) || (k === 'path' && gex) || (k === 'linkpath' && gex) || k === 'global'); diff --git a/deps/npm/node_modules/tar/dist/esm/index.min.js b/deps/npm/node_modules/tar/dist/esm/index.min.js index 57c1c7a4df9a80..bf4036b4115e85 100644 --- a/deps/npm/node_modules/tar/dist/esm/index.min.js +++ b/deps/npm/node_modules/tar/dist/esm/index.min.js @@ -1,4 +1,4 @@ -var Mr=Object.defineProperty;var Br=(s,t)=>{for(var e in t)Mr(s,e,{get:t[e],enumerable:!0})};import $r from"events";import I from"fs";import{EventEmitter as Li}from"node:events";import As from"node:stream";import{StringDecoder as Pr}from"node:string_decoder";var xs=typeof process=="object"&&process?process:{stdout:null,stderr:null},zr=s=>!!s&&typeof s=="object"&&(s instanceof A||s instanceof As||Ur(s)||Hr(s)),Ur=s=>!!s&&typeof s=="object"&&s instanceof Li&&typeof s.pipe=="function"&&s.pipe!==As.Writable.prototype.pipe,Hr=s=>!!s&&typeof s=="object"&&s instanceof Li&&typeof s.write=="function"&&typeof s.end=="function",q=Symbol("EOF"),Q=Symbol("maybeEmitEnd"),rt=Symbol("emittedEnd"),Le=Symbol("emittingEnd"),qt=Symbol("emittedError"),Ne=Symbol("closed"),Ls=Symbol("read"),De=Symbol("flush"),Ns=Symbol("flushChunk"),z=Symbol("encoding"),Mt=Symbol("decoder"),g=Symbol("flowing"),Qt=Symbol("paused"),Bt=Symbol("resume"),b=Symbol("buffer"),D=Symbol("pipes"),_=Symbol("bufferLength"),gi=Symbol("bufferPush"),Ae=Symbol("bufferShift"),L=Symbol("objectMode"),w=Symbol("destroyed"),bi=Symbol("error"),_i=Symbol("emitData"),Ds=Symbol("emitEnd"),Oi=Symbol("emitEnd2"),Z=Symbol("async"),Ti=Symbol("abort"),Ie=Symbol("aborted"),Jt=Symbol("signal"),Rt=Symbol("dataListeners"),F=Symbol("discarded"),jt=s=>Promise.resolve().then(s),Wr=s=>s(),Gr=s=>s==="end"||s==="finish"||s==="prefinish",Zr=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,Yr=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),Fe=class{src;dest;opts;ondrain;constructor(t,e,i){this.src=t,this.dest=e,this.opts=i,this.ondrain=()=>t[Bt](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},xi=class extends Fe{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,e,i){super(t,e,i),this.proxyErrors=r=>this.dest.emit("error",r),t.on("error",this.proxyErrors)}},Kr=s=>!!s.objectMode,Vr=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",A=class extends Li{[g]=!1;[Qt]=!1;[D]=[];[b]=[];[L];[z];[Z];[Mt];[q]=!1;[rt]=!1;[Le]=!1;[Ne]=!1;[qt]=null;[_]=0;[w]=!1;[Jt];[Ie]=!1;[Rt]=0;[F]=!1;writable=!0;readable=!0;constructor(...t){let e=t[0]||{};if(super(),e.objectMode&&typeof e.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Kr(e)?(this[L]=!0,this[z]=null):Vr(e)?(this[z]=e.encoding,this[L]=!1):(this[L]=!1,this[z]=null),this[Z]=!!e.async,this[Mt]=this[z]?new Pr(this[z]):null,e&&e.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[b]}),e&&e.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[D]});let{signal:i}=e;i&&(this[Jt]=i,i.aborted?this[Ti]():i.addEventListener("abort",()=>this[Ti]()))}get bufferLength(){return this[_]}get encoding(){return this[z]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[L]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[Z]}set async(t){this[Z]=this[Z]||!!t}[Ti](){this[Ie]=!0,this.emit("abort",this[Jt]?.reason),this.destroy(this[Jt]?.reason)}get aborted(){return this[Ie]}set aborted(t){}write(t,e,i){if(this[Ie])return!1;if(this[q])throw new Error("write after end");if(this[w])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof e=="function"&&(i=e,e="utf8"),e||(e="utf8");let r=this[Z]?jt:Wr;if(!this[L]&&!Buffer.isBuffer(t)){if(Yr(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(Zr(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[L]?(this[g]&&this[_]!==0&&this[De](!0),this[g]?this.emit("data",t):this[gi](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[g]):t.length?(typeof t=="string"&&!(e===this[z]&&!this[Mt]?.lastNeed)&&(t=Buffer.from(t,e)),Buffer.isBuffer(t)&&this[z]&&(t=this[Mt].write(t)),this[g]&&this[_]!==0&&this[De](!0),this[g]?this.emit("data",t):this[gi](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[g]):(this[_]!==0&&this.emit("readable"),i&&r(i),this[g])}read(t){if(this[w])return null;if(this[F]=!1,this[_]===0||t===0||t&&t>this[_])return this[Q](),null;this[L]&&(t=null),this[b].length>1&&!this[L]&&(this[b]=[this[z]?this[b].join(""):Buffer.concat(this[b],this[_])]);let e=this[Ls](t||null,this[b][0]);return this[Q](),e}[Ls](t,e){if(this[L])this[Ae]();else{let i=e;t===i.length||t===null?this[Ae]():typeof i=="string"?(this[b][0]=i.slice(t),e=i.slice(0,t),this[_]-=t):(this[b][0]=i.subarray(t),e=i.subarray(0,t),this[_]-=t)}return this.emit("data",e),!this[b].length&&!this[q]&&this.emit("drain"),e}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e="utf8"),t!==void 0&&this.write(t,e),i&&this.once("end",i),this[q]=!0,this.writable=!1,(this[g]||!this[Qt])&&this[Q](),this}[Bt](){this[w]||(!this[Rt]&&!this[D].length&&(this[F]=!0),this[Qt]=!1,this[g]=!0,this.emit("resume"),this[b].length?this[De]():this[q]?this[Q]():this.emit("drain"))}resume(){return this[Bt]()}pause(){this[g]=!1,this[Qt]=!0,this[F]=!1}get destroyed(){return this[w]}get flowing(){return this[g]}get paused(){return this[Qt]}[gi](t){this[L]?this[_]+=1:this[_]+=t.length,this[b].push(t)}[Ae](){return this[L]?this[_]-=1:this[_]-=this[b][0].length,this[b].shift()}[De](t=!1){do;while(this[Ns](this[Ae]())&&this[b].length);!t&&!this[b].length&&!this[q]&&this.emit("drain")}[Ns](t){return this.emit("data",t),this[g]}pipe(t,e){if(this[w])return t;this[F]=!1;let i=this[rt];return e=e||{},t===xs.stdout||t===xs.stderr?e.end=!1:e.end=e.end!==!1,e.proxyErrors=!!e.proxyErrors,i?e.end&&t.end():(this[D].push(e.proxyErrors?new xi(this,t,e):new Fe(this,t,e)),this[Z]?jt(()=>this[Bt]()):this[Bt]()),t}unpipe(t){let e=this[D].find(i=>i.dest===t);e&&(this[D].length===1?(this[g]&&this[Rt]===0&&(this[g]=!1),this[D]=[]):this[D].splice(this[D].indexOf(e),1),e.unpipe())}addListener(t,e){return this.on(t,e)}on(t,e){let i=super.on(t,e);if(t==="data")this[F]=!1,this[Rt]++,!this[D].length&&!this[g]&&this[Bt]();else if(t==="readable"&&this[_]!==0)super.emit("readable");else if(Gr(t)&&this[rt])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[qt]){let r=e;this[Z]?jt(()=>r.call(this,this[qt])):r.call(this,this[qt])}return i}removeListener(t,e){return this.off(t,e)}off(t,e){let i=super.off(t,e);return t==="data"&&(this[Rt]=this.listeners("data").length,this[Rt]===0&&!this[F]&&!this[D].length&&(this[g]=!1)),i}removeAllListeners(t){let e=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[Rt]=0,!this[F]&&!this[D].length&&(this[g]=!1)),e}get emittedEnd(){return this[rt]}[Q](){!this[Le]&&!this[rt]&&!this[w]&&this[b].length===0&&this[q]&&(this[Le]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Ne]&&this.emit("close"),this[Le]=!1)}emit(t,...e){let i=e[0];if(t!=="error"&&t!=="close"&&t!==w&&this[w])return!1;if(t==="data")return!this[L]&&!i?!1:this[Z]?(jt(()=>this[_i](i)),!0):this[_i](i);if(t==="end")return this[Ds]();if(t==="close"){if(this[Ne]=!0,!this[rt]&&!this[w])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(t==="error"){this[qt]=i,super.emit(bi,i);let n=!this[Jt]||this.listeners("error").length?super.emit("error",i):!1;return this[Q](),n}else if(t==="resume"){let n=super.emit("resume");return this[Q](),n}else if(t==="finish"||t==="prefinish"){let n=super.emit(t);return this.removeAllListeners(t),n}let r=super.emit(t,...e);return this[Q](),r}[_i](t){for(let i of this[D])i.dest.write(t)===!1&&this.pause();let e=this[F]?!1:super.emit("data",t);return this[Q](),e}[Ds](){return this[rt]?!1:(this[rt]=!0,this.readable=!1,this[Z]?(jt(()=>this[Oi]()),!0):this[Oi]())}[Oi](){if(this[Mt]){let e=this[Mt].end();if(e){for(let i of this[D])i.dest.write(e);this[F]||super.emit("data",e)}}for(let e of this[D])e.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[L]||(t.dataLength=0);let e=this.promise();return this.on("data",i=>{t.push(i),this[L]||(t.dataLength+=i.length)}),await e,t}async concat(){if(this[L])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[z]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,e)=>{this.on(w,()=>e(new Error("stream destroyed"))),this.on("error",i=>e(i)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[F]=!1;let t=!1,e=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return e();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[q])return e();let n,o,a=d=>{this.off("data",h),this.off("end",l),this.off(w,c),e(),o(d)},h=d=>{this.off("error",a),this.off("end",l),this.off(w,c),this.pause(),n({value:d,done:!!this[q]})},l=()=>{this.off("error",a),this.off("data",h),this.off(w,c),e(),n({done:!0,value:void 0})},c=()=>a(new Error("stream destroyed"));return new Promise((d,S)=>{o=S,n=d,this.once(w,c),this.once("error",a),this.once("end",l),this.once("data",h)})},throw:e,return:e,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[F]=!1;let t=!1,e=()=>(this.pause(),this.off(bi,e),this.off(w,e),this.off("end",e),t=!0,{done:!0,value:void 0}),i=()=>{if(t)return e();let r=this.read();return r===null?e():{done:!1,value:r}};return this.once("end",e),this.once(bi,e),this.once(w,e),{next:i,throw:e,return:e,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(t){if(this[w])return t?this.emit("error",t):this.emit(w),this;this[w]=!0,this[F]=!0,this[b].length=0,this[_]=0;let e=this;return typeof e.close=="function"&&!this[Ne]&&e.close(),t?this.emit("error",t):this.emit(w),this}static get isStream(){return zr}};var Xr=I.writev,ot=Symbol("_autoClose"),H=Symbol("_close"),te=Symbol("_ended"),m=Symbol("_fd"),Ni=Symbol("_finished"),j=Symbol("_flags"),Di=Symbol("_flush"),Ci=Symbol("_handleChunk"),ki=Symbol("_makeBuf"),ie=Symbol("_mode"),Ce=Symbol("_needDrain"),Ut=Symbol("_onerror"),Ht=Symbol("_onopen"),Ai=Symbol("_onread"),Pt=Symbol("_onwrite"),ht=Symbol("_open"),U=Symbol("_path"),nt=Symbol("_pos"),Y=Symbol("_queue"),zt=Symbol("_read"),Ii=Symbol("_readSize"),J=Symbol("_reading"),ee=Symbol("_remain"),Fi=Symbol("_size"),ke=Symbol("_write"),gt=Symbol("_writing"),ve=Symbol("_defaultFlag"),bt=Symbol("_errored"),_t=class extends A{[bt]=!1;[m];[U];[Ii];[J]=!1;[Fi];[ee];[ot];constructor(t,e){if(e=e||{},super(e),this.readable=!0,this.writable=!1,typeof t!="string")throw new TypeError("path must be a string");this[bt]=!1,this[m]=typeof e.fd=="number"?e.fd:void 0,this[U]=t,this[Ii]=e.readSize||16*1024*1024,this[J]=!1,this[Fi]=typeof e.size=="number"?e.size:1/0,this[ee]=this[Fi],this[ot]=typeof e.autoClose=="boolean"?e.autoClose:!0,typeof this[m]=="number"?this[zt]():this[ht]()}get fd(){return this[m]}get path(){return this[U]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[ht](){I.open(this[U],"r",(t,e)=>this[Ht](t,e))}[Ht](t,e){t?this[Ut](t):(this[m]=e,this.emit("open",e),this[zt]())}[ki](){return Buffer.allocUnsafe(Math.min(this[Ii],this[ee]))}[zt](){if(!this[J]){this[J]=!0;let t=this[ki]();if(t.length===0)return process.nextTick(()=>this[Ai](null,0,t));I.read(this[m],t,0,t.length,null,(e,i,r)=>this[Ai](e,i,r))}}[Ai](t,e,i){this[J]=!1,t?this[Ut](t):this[Ci](e,i)&&this[zt]()}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}[Ut](t){this[J]=!0,this[H](),this.emit("error",t)}[Ci](t,e){let i=!1;return this[ee]-=t,t>0&&(i=super.write(tthis[Ht](t,e))}[Ht](t,e){this[ve]&&this[j]==="r+"&&t&&t.code==="ENOENT"?(this[j]="w",this[ht]()):t?this[Ut](t):(this[m]=e,this.emit("open",e),this[gt]||this[Di]())}end(t,e){return t&&this.write(t,e),this[te]=!0,!this[gt]&&!this[Y].length&&typeof this[m]=="number"&&this[Pt](null,0),this}write(t,e){return typeof t=="string"&&(t=Buffer.from(t,e)),this[te]?(this.emit("error",new Error("write() after end()")),!1):this[m]===void 0||this[gt]||this[Y].length?(this[Y].push(t),this[Ce]=!0,!1):(this[gt]=!0,this[ke](t),!0)}[ke](t){I.write(this[m],t,0,t.length,this[nt],(e,i)=>this[Pt](e,i))}[Pt](t,e){t?this[Ut](t):(this[nt]!==void 0&&typeof e=="number"&&(this[nt]+=e),this[Y].length?this[Di]():(this[gt]=!1,this[te]&&!this[Ni]?(this[Ni]=!0,this[H](),this.emit("finish")):this[Ce]&&(this[Ce]=!1,this.emit("drain"))))}[Di](){if(this[Y].length===0)this[te]&&this[Pt](null,0);else if(this[Y].length===1)this[ke](this[Y].pop());else{let t=this[Y];this[Y]=[],Xr(this[m],t,this[nt],(e,i)=>this[Pt](e,i))}}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}},Wt=class extends tt{[ht](){let t;if(this[ve]&&this[j]==="r+")try{t=I.openSync(this[U],this[j],this[ie])}catch(e){if(e?.code==="ENOENT")return this[j]="w",this[ht]();throw e}else t=I.openSync(this[U],this[j],this[ie]);this[Ht](null,t)}[H](){if(this[ot]&&typeof this[m]=="number"){let t=this[m];this[m]=void 0,I.closeSync(t),this.emit("close")}}[ke](t){let e=!0;try{this[Pt](null,I.writeSync(this[m],t,0,t.length,this[nt])),e=!1}finally{if(e)try{this[H]()}catch{}}}};import hr from"node:path";import Kt from"node:fs";import{dirname as Nn,parse as Dn}from"path";var qr=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),Is=s=>!!s.sync&&!!s.file,Fs=s=>!s.sync&&!!s.file,Cs=s=>!!s.sync&&!s.file,ks=s=>!s.sync&&!s.file;var vs=s=>!!s.file;var Qr=s=>{let t=qr.get(s);return t||s},se=(s={})=>{if(!s)return{};let t={};for(let[e,i]of Object.entries(s)){let r=Qr(e);t[r]=i}return t.chmod===void 0&&t.noChmod===!1&&(t.chmod=!0),delete t.noChmod,t};var K=(s,t,e,i,r)=>Object.assign((n=[],o,a)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(a=o,o=void 0),o=o?Array.from(o):[];let h=se(n);if(r?.(h,o),Is(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return s(h,o)}else if(Fs(h)){let l=t(h,o);return a?l.then(()=>a(),a):l}else if(Cs(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return e(h,o)}else if(ks(h)){if(typeof a=="function")throw new TypeError("callback only supported with file option");return i(h,o)}throw new Error("impossible options??")},{syncFile:s,asyncFile:t,syncNoFile:e,asyncNoFile:i,validate:r});import{EventEmitter as On}from"events";import Pi from"assert";import{Buffer as Ot}from"buffer";import*as Ms from"zlib";import Jr from"zlib";var jr=Jr.constants||{ZLIB_VERNUM:4736},M=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},jr));var tn=Ot.concat,Bs=Object.getOwnPropertyDescriptor(Ot,"concat"),en=s=>s,Mi=Bs?.writable===!0||Bs?.set!==void 0?s=>{Ot.concat=s?en:tn}:s=>{},Tt=Symbol("_superWrite"),Gt=class extends Error{code;errno;constructor(t,e){super("zlib: "+t.message,{cause:t}),this.code=t.code,this.errno=t.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+t.message,Error.captureStackTrace(this,e??this.constructor)}get name(){return"ZlibError"}},Bi=Symbol("flushFlag"),re=class extends A{#t=!1;#i=!1;#s;#n;#r;#e;#o;get sawError(){return this.#t}get handle(){return this.#e}get flushFlag(){return this.#s}constructor(t,e){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(t),this.#s=t.flush??0,this.#n=t.finishFlush??0,this.#r=t.fullFlushFlag??0,typeof Ms[e]!="function")throw new TypeError("Compression method not supported: "+e);try{this.#e=new Ms[e](t)}catch(i){throw new Gt(i,this.constructor)}this.#o=i=>{this.#t||(this.#t=!0,this.close(),this.emit("error",i))},this.#e?.on("error",i=>this.#o(new Gt(i))),this.once("end",()=>this.close)}close(){this.#e&&(this.#e.close(),this.#e=void 0,this.emit("close"))}reset(){if(!this.#t)return Pi(this.#e,"zlib binding closed"),this.#e.reset?.()}flush(t){this.ended||(typeof t!="number"&&(t=this.#r),this.write(Object.assign(Ot.alloc(0),{[Bi]:t})))}end(t,e,i){return typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&(e?this.write(t,e):this.write(t)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Tt](t){return super.write(t)}write(t,e,i){if(typeof e=="function"&&(i=e,e="utf8"),typeof t=="string"&&(t=Ot.from(t,e)),this.#t)return;Pi(this.#e,"zlib binding closed");let r=this.#e._handle,n=r.close;r.close=()=>{};let o=this.#e.close;this.#e.close=()=>{},Mi(!0);let a;try{let l=typeof t[Bi]=="number"?t[Bi]:this.#s;a=this.#e._processChunk(t,l),Mi(!1)}catch(l){Mi(!1),this.#o(new Gt(l,this.write))}finally{this.#e&&(this.#e._handle=r,r.close=n,this.#e.close=o,this.#e.removeAllListeners("error"))}this.#e&&this.#e.on("error",l=>this.#o(new Gt(l,this.write)));let h;if(a)if(Array.isArray(a)&&a.length>0){let l=a[0];h=this[Tt](Ot.from(l));for(let c=1;c{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(t,e)}finally{this.handle.flush=i}this.handle&&(this.#t=t,this.#i=e)}}}};var Pe=class extends Be{#t;constructor(t){super(t,"Gzip"),this.#t=t&&!!t.portable}[Tt](t){return this.#t?(this.#t=!1,t[9]=255,super[Tt](t)):super[Tt](t)}};var ze=class extends Be{constructor(t){super(t,"Unzip")}},Ue=class extends re{constructor(t,e){t=t||{},t.flush=t.flush||M.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||M.BROTLI_OPERATION_FINISH,t.fullFlushFlag=M.BROTLI_OPERATION_FLUSH,super(t,e)}},He=class extends Ue{constructor(t){super(t,"BrotliCompress")}},We=class extends Ue{constructor(t){super(t,"BrotliDecompress")}},Ge=class extends re{constructor(t,e){t=t||{},t.flush=t.flush||M.ZSTD_e_continue,t.finishFlush=t.finishFlush||M.ZSTD_e_end,t.fullFlushFlag=M.ZSTD_e_flush,super(t,e)}},Ze=class extends Ge{constructor(t){super(t,"ZstdCompress")}},Ye=class extends Ge{constructor(t){super(t,"ZstdDecompress")}};import{posix as Zt}from"node:path";var Ps=(s,t)=>{if(Number.isSafeInteger(s))s<0?nn(s,t):rn(s,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},rn=(s,t)=>{t[0]=128;for(var e=t.length;e>1;e--)t[e-1]=s&255,s=Math.floor(s/256)},nn=(s,t)=>{t[0]=255;var e=!1;s=s*-1;for(var i=t.length;i>1;i--){var r=s&255;s=Math.floor(s/256),e?t[i-1]=Us(r):r===0?t[i-1]=0:(e=!0,t[i-1]=Hs(r))}},zs=s=>{let t=s[0],e=t===128?hn(s.subarray(1,s.length)):t===255?on(s):null;if(e===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(e))throw Error("parsed number outside of javascript safe integer range");return e},on=s=>{for(var t=s.length,e=0,i=!1,r=t-1;r>-1;r--){var n=Number(s[r]),o;i?o=Us(n):n===0?o=n:(i=!0,o=Hs(n)),o!==0&&(e-=o*Math.pow(256,t-r-1))}return e},hn=s=>{for(var t=s.length,e=0,i=t-1;i>-1;i--){var r=Number(s[i]);r!==0&&(e+=r*Math.pow(256,t-i-1))}return e},Us=s=>(255^s)&255,Hs=s=>(255^s)+1&255;var Ui={};Br(Ui,{code:()=>Ke,isCode:()=>ne,isName:()=>ln,name:()=>oe,normalFsTypes:()=>zi});var ne=s=>oe.has(s),ln=s=>Ke.has(s),zi=new Set(["0","","1","2","3","4","5","6","7","D"]),oe=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]),Ke=new Map(Array.from(oe).map(s=>[s[1],s[0]]));var C=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#t="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(t,e=0,i,r){Buffer.isBuffer(t)?this.decode(t,e||0,i,r):t&&this.#i(t)}decode(t,e,i,r){if(e||(e=0),!t||!(t.length>=e+512))throw new Error("need 512 bytes for header");let n=xt(t,e+156,1),o=zi.has(n),a=o?i:void 0,h=o?r:void 0;if(this.path=a?.path??xt(t,e,100),this.mode=a?.mode??h?.mode??at(t,e+100,8),this.uid=a?.uid??h?.uid??at(t,e+108,8),this.gid=a?.gid??h?.gid??at(t,e+116,8),this.size=a?.size??h?.size??at(t,e+124,12),this.mtime=a?.mtime??h?.mtime??Hi(t,e+136,12),this.cksum=at(t,e+148,12),h&&this.#i(h,!0),a&&this.#i(a),ne(n)&&(this.#t=n||"0"),this.#t==="0"&&this.path.slice(-1)==="/"&&(this.#t="5"),this.#t==="5"&&(this.size=0),this.linkpath=xt(t,e+157,100),t.subarray(e+257,e+265).toString()==="ustar\x0000")if(this.uname=a?.uname??h?.uname??xt(t,e+265,32),this.gname=a?.gname??h?.gname??xt(t,e+297,32),this.devmaj=a?.devmaj??h?.devmaj??at(t,e+329,8)??0,this.devmin=a?.devmin??h?.devmin??at(t,e+337,8)??0,t[e+475]!==0){let c=xt(t,e+345,155);this.path=c+"/"+this.path}else{let c=xt(t,e+345,130);c&&(this.path=c+"/"+this.path),this.atime=i?.atime??r?.atime??Hi(t,e+476,12),this.ctime=i?.ctime??r?.ctime??Hi(t,e+488,12)}let l=256;for(let c=e;c!(r==null||i==="path"&&e||i==="linkpath"&&e||i==="global"))))}encode(t,e=0){if(t||(t=this.block=Buffer.alloc(512)),this.#t==="Unsupported"&&(this.#t="0"),!(t.length>=e+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=cn(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=Lt(t,e,100,n)||this.needPax,this.needPax=lt(t,e+100,8,this.mode)||this.needPax,this.needPax=lt(t,e+108,8,this.uid)||this.needPax,this.needPax=lt(t,e+116,8,this.gid)||this.needPax,this.needPax=lt(t,e+124,12,this.size)||this.needPax,this.needPax=Wi(t,e+136,12,this.mtime)||this.needPax,t[e+156]=Number(this.#t.codePointAt(0)),this.needPax=Lt(t,e+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",e+257,8),this.needPax=Lt(t,e+265,32,this.uname)||this.needPax,this.needPax=Lt(t,e+297,32,this.gname)||this.needPax,this.needPax=lt(t,e+329,8,this.devmaj)||this.needPax,this.needPax=lt(t,e+337,8,this.devmin)||this.needPax,this.needPax=Lt(t,e+345,i,o)||this.needPax,t[e+475]!==0?this.needPax=Lt(t,e+345,155,o)||this.needPax:(this.needPax=Lt(t,e+345,130,o)||this.needPax,this.needPax=Wi(t,e+476,12,this.atime)||this.needPax,this.needPax=Wi(t,e+488,12,this.ctime)||this.needPax);let a=256;for(let h=e;h{let i=s,r="",n,o=Zt.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Zt.dirname(i),i=Zt.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=t?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=t?n=[i.slice(0,99),r,!0]:(i=Zt.join(Zt.basename(r),i),r=Zt.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},xt=(s,t,e)=>s.subarray(t,t+e).toString("utf8").replace(/\0.*/,""),Hi=(s,t,e)=>fn(at(s,t,e)),fn=s=>s===void 0?void 0:new Date(s*1e3),at=(s,t,e)=>Number(s[t])&128?zs(s.subarray(t,t+e)):un(s,t,e),dn=s=>isNaN(s)?void 0:s,un=(s,t,e)=>dn(parseInt(s.subarray(t,t+e).toString("utf8").replace(/\0.*$/,"").trim(),8)),mn={12:8589934591,8:2097151},lt=(s,t,e,i)=>i===void 0?!1:i>mn[e]||i<0?(Ps(i,s.subarray(t,t+e)),!0):(pn(s,t,e,i),!1),pn=(s,t,e,i)=>s.write(En(i,e),t,e,"ascii"),En=(s,t)=>wn(Math.floor(s).toString(8),t),wn=(s,t)=>(s.length===t-1?s:new Array(t-s.length-1).join("0")+s+" ")+"\0",Wi=(s,t,e,i)=>i===void 0?!1:lt(s,t,e,i.getTime()/1e3),Sn=new Array(156).join("\0"),Lt=(s,t,e,i)=>i===void 0?!1:(s.write(i+Sn,t,e,"utf8"),i.length!==Buffer.byteLength(i)||i.length>e);import{basename as yn}from"node:path";var ct=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(t,e=!1){this.atime=t.atime,this.charset=t.charset,this.comment=t.comment,this.ctime=t.ctime,this.dev=t.dev,this.gid=t.gid,this.global=e,this.gname=t.gname,this.ino=t.ino,this.linkpath=t.linkpath,this.mtime=t.mtime,this.nlink=t.nlink,this.path=t.path,this.size=t.size,this.uid=t.uid,this.uname=t.uname}encode(){let t=this.encodeBody();if(t==="")return Buffer.allocUnsafe(0);let e=Buffer.byteLength(t),i=512*Math.ceil(1+e/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new C({path:("PaxHeader/"+yn(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:e,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(t,512,e,"utf8");for(let n=e+512;n=Math.pow(10,o)&&(o+=1),o+n+r}static parse(t,e,i=!1){return new s(Rn(gn(t),e),i)}},Rn=(s,t)=>t?Object.assign({},t,s):s,gn=s=>s.replace(/\n$/,"").split(` -`).reduce(bn,Object.create(null)),bn=(s,t)=>{let e=parseInt(t,10);if(e!==Buffer.byteLength(t)+1)return s;t=t.slice((e+" ").length);let i=t.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=");return s[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(o)*1e3):/^[0-9]+$/.test(o)?+o:o,s};var _n=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,f=_n!=="win32"?s=>s:s=>s&&s.replaceAll(/\\/g,"/");var Ve=class extends A{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(t,e,i){switch(super({}),this.pause(),this.extended=e,this.globalExtended=i,this.header=t,this.remain=t.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=t.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!t.path)throw new Error("no path provided for tar.ReadEntry");this.path=f(t.path),this.mode=t.mode,this.mode&&(this.mode=this.mode&4095),this.uid=t.uid,this.gid=t.gid,this.uname=t.uname,this.gname=t.gname,this.size=this.remain,this.mtime=t.mtime,this.atime=t.atime,this.ctime=t.ctime,this.linkpath=t.linkpath?f(t.linkpath):void 0,this.uname=t.uname,this.gname=t.gname,e&&this.#t(e),i&&this.#t(i,!0)}write(t){let e=t.length;if(e>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-e),this.blockRemain=Math.max(0,r-e),this.ignore?!0:i>=e?super.write(t):super.write(t.subarray(0,i))}#t(t,e=!1){t.path&&(t.path=f(t.path)),t.linkpath&&(t.linkpath=f(t.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(t).filter(([i,r])=>!(r==null||i==="path"&&e))))}};var Nt=(s,t,e,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=e instanceof Error&&e.code||t,i.tarCode=t,!s.strict&&i.recoverable!==!1?(e instanceof Error&&(i=Object.assign(e,i),e=e.message),s.emit("warn",t,e,i)):e instanceof Error?s.emit("error",Object.assign(e,i)):s.emit("error",Object.assign(new Error(`${t}: ${e}`),i))};var Tn=1024*1024,Vi=Buffer.from([31,139]),$i=Buffer.from([40,181,47,253]),xn=Math.max(Vi.length,$i.length),B=Symbol("state"),Dt=Symbol("writeEntry"),et=Symbol("readEntry"),Gi=Symbol("nextEntry"),Ws=Symbol("processEntry"),V=Symbol("extendedHeader"),he=Symbol("globalExtendedHeader"),ft=Symbol("meta"),Gs=Symbol("emitMeta"),p=Symbol("buffer"),it=Symbol("queue"),dt=Symbol("ended"),Zi=Symbol("emittedEnd"),At=Symbol("emit"),y=Symbol("unzip"),$e=Symbol("consumeChunk"),Xe=Symbol("consumeChunkSub"),Yi=Symbol("consumeBody"),Zs=Symbol("consumeMeta"),Ys=Symbol("consumeHeader"),ae=Symbol("consuming"),Ki=Symbol("bufferConcat"),qe=Symbol("maybeEnd"),Yt=Symbol("writing"),ut=Symbol("aborted"),Qe=Symbol("onDone"),It=Symbol("sawValidEntry"),Je=Symbol("sawNullBlock"),je=Symbol("sawEOF"),Ks=Symbol("closeStream"),Ln=()=>!0,st=class extends On{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[it]=[];[p];[et];[Dt];[B]="begin";[ft]="";[V];[he];[dt]=!1;[y];[ut]=!1;[It];[Je]=!1;[je]=!1;[Yt]=!1;[ae]=!1;[Zi]=!1;constructor(t={}){super(),this.file=t.file||"",this.on(Qe,()=>{(this[B]==="begin"||this[It]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(Qe,t.ondone):this.on(Qe,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!t.strict,this.maxMetaEntrySize=t.maxMetaEntrySize||Tn,this.filter=typeof t.filter=="function"?t.filter:Ln;let e=t.file&&(t.file.endsWith(".tar.br")||t.file.endsWith(".tbr"));this.brotli=!(t.gzip||t.zstd)&&t.brotli!==void 0?t.brotli:e?void 0:!1;let i=t.file&&(t.file.endsWith(".tar.zst")||t.file.endsWith(".tzst"));this.zstd=!(t.gzip||t.brotli)&&t.zstd!==void 0?t.zstd:i?!0:void 0,this.on("end",()=>this[Ks]()),typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onReadEntry=="function"&&this.on("entry",t.onReadEntry)}warn(t,e,i={}){Nt(this,t,e,i)}[Ys](t,e){this[It]===void 0&&(this[It]=!1);let i;try{i=new C(t,e,this[V],this[he])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[Je]?(this[je]=!0,this[B]==="begin"&&(this[B]="header"),this[At]("eof")):(this[Je]=!0,this[At]("nullBlock"));else if(this[Je]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Dt]=new Ve(i,this[V],this[he]);if(!this[It])if(n.remain){let o=()=>{n.invalid||(this[It]=!0)};n.on("end",o)}else this[It]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[At]("ignoredEntry",n),this[B]="ignore",n.resume()):n.size>0&&(this[ft]="",n.on("data",o=>this[ft]+=o),this[B]="meta"):(this[V]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[At]("ignoredEntry",n),this[B]=n.remain?"ignore":"header",n.resume()):(n.remain?this[B]="body":(this[B]="header",n.end()),this[et]?this[it].push(n):(this[it].push(n),this[Gi]())))}}}[Ks](){queueMicrotask(()=>this.emit("close"))}[Ws](t){let e=!0;if(!t)this[et]=void 0,e=!1;else if(Array.isArray(t)){let[i,...r]=t;this.emit(i,...r)}else this[et]=t,this.emit("entry",t),t.emittedEnd||(t.on("end",()=>this[Gi]()),e=!1);return e}[Gi](){do;while(this[Ws](this[it].shift()));if(this[it].length===0){let t=this[et];!t||t.flowing||t.size===t.remain?this[Yt]||this.emit("drain"):t.once("drain",()=>this.emit("drain"))}}[Yi](t,e){let i=this[Dt];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=t.length&&e===0?t:t.subarray(e,e+r);return i.write(n),i.blockRemain||(this[B]="header",this[Dt]=void 0,i.end()),n.length}[Zs](t,e){let i=this[Dt],r=this[Yi](t,e);return!this[Dt]&&i&&this[Gs](i),r}[At](t,e,i){this[it].length===0&&!this[et]?this.emit(t,e,i):this[it].push([t,e,i])}[Gs](t){switch(this[At]("meta",this[ft]),t.type){case"ExtendedHeader":case"OldExtendedHeader":this[V]=ct.parse(this[ft],this[V],!1);break;case"GlobalExtendedHeader":this[he]=ct.parse(this[ft],this[he],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let e=this[V]??Object.create(null);this[V]=e,e.path=this[ft].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let e=this[V]||Object.create(null);this[V]=e,e.linkpath=this[ft].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+t.type)}}abort(t){this[ut]=!0,this.emit("abort",t),this.warn("TAR_ABORT",t,{recoverable:!1})}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this[ut])return i?.(),!1;if((this[y]===void 0||this.brotli===void 0&&this[y]===!1)&&t){if(this[p]&&(t=Buffer.concat([this[p],t]),this[p]=void 0),t.lengththis[$e](c)),this[y].on("error",c=>this.abort(c)),this[y].on("end",()=>{this[dt]=!0,this[$e]()}),this[Yt]=!0;let l=!!this[y][h?"end":"write"](t);return this[Yt]=!1,i?.(),l}}this[Yt]=!0,this[y]?this[y].write(t):this[$e](t),this[Yt]=!1;let n=this[it].length>0?!1:this[et]?this[et].flowing:!0;return!n&&this[it].length===0&&this[et]?.once("drain",()=>this.emit("drain")),i?.(),n}[Ki](t){t&&!this[ut]&&(this[p]=this[p]?Buffer.concat([this[p],t]):t)}[qe](){if(this[dt]&&!this[Zi]&&!this[ut]&&!this[ae]){this[Zi]=!0;let t=this[Dt];if(t&&t.blockRemain){let e=this[p]?this[p].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${t.blockRemain} more bytes, only ${e} available)`,{entry:t}),this[p]&&t.write(this[p]),t.end()}this[At](Qe)}}[$e](t){if(this[ae]&&t)this[Ki](t);else if(!t&&!this[p])this[qe]();else if(t){if(this[ae]=!0,this[p]){this[Ki](t);let e=this[p];this[p]=void 0,this[Xe](e)}else this[Xe](t);for(;this[p]&&this[p]?.length>=512&&!this[ut]&&!this[je];){let e=this[p];this[p]=void 0,this[Xe](e)}this[ae]=!1}(!this[p]||this[dt])&&this[qe]()}[Xe](t){let e=0,i=t.length;for(;e+512<=i&&!this[ut]&&!this[je];)switch(this[B]){case"begin":case"header":this[Ys](t,e),e+=512;break;case"ignore":case"body":e+=this[Yi](t,e);break;case"meta":e+=this[Zs](t,e);break;default:throw new Error("invalid state: "+this[B])}e{let t=s.length-1,e=-1;for(;t>-1&&s.charAt(t)==="/";)e=t,t--;return e===-1?s:s.slice(0,e)};var An=s=>{let t=s.onReadEntry;s.onReadEntry=t?e=>{t(e),e.resume()}:e=>e.resume()},Xi=(s,t)=>{let e=new Map(t.map(n=>[mt(n),!0])),i=s.filter,r=(n,o="")=>{let a=o||Dn(n).root||".",h;if(n===a)h=!1;else{let l=e.get(n);h=l!==void 0?l:r(Nn(n),a)}return e.set(n,h),h};s.filter=i?(n,o)=>i(n,o)&&r(mt(n)):n=>r(mt(n))},In=s=>{let t=new st(s),e=s.file,i;try{i=Kt.openSync(e,"r");let r=Kt.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size{let e=new st(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{e.on("error",a),e.on("end",o),Kt.stat(r,(h,l)=>{if(h)a(h);else{let c=new _t(r,{readSize:i,size:l.size});c.on("error",a),c.pipe(e)}})})},Ft=K(In,Fn,s=>new st(s),s=>new st(s),(s,t)=>{t?.length&&Xi(s,t),s.noResume||An(s)});import ui from"fs";import $ from"fs";import qs from"path";var qi=(s,t,e)=>(s&=4095,e&&(s=(s|384)&-19),t&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);import{win32 as Cn}from"node:path";var{isAbsolute:kn,parse:Vs}=Cn,le=s=>{let t="",e=Vs(s);for(;kn(s)||e.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":e.root;s=s.slice(i.length),t+=i,e=Vs(s)}return[t,s]};var ti=["|","<",">","?",":"],Qi=ti.map(s=>String.fromCodePoint(61440+Number(s.codePointAt(0)))),vn=new Map(ti.map((s,t)=>[s,Qi[t]])),Mn=new Map(Qi.map((s,t)=>[s,ti[t]])),Ji=s=>ti.reduce((t,e)=>t.split(e).join(vn.get(e)),s),$s=s=>Qi.reduce((t,e)=>t.split(e).join(Mn.get(e)),s);var er=(s,t)=>t?(s=f(s).replace(/^\.(\/|$)/,""),mt(t)+"/"+s):f(s),Bn=16*1024*1024,Qs=Symbol("process"),Js=Symbol("file"),js=Symbol("directory"),ts=Symbol("symlink"),tr=Symbol("hardlink"),ce=Symbol("header"),ei=Symbol("read"),es=Symbol("lstat"),ii=Symbol("onlstat"),is=Symbol("onread"),ss=Symbol("onreadlink"),rs=Symbol("openfile"),ns=Symbol("onopenfile"),pt=Symbol("close"),si=Symbol("mode"),os=Symbol("awaitDrain"),ji=Symbol("ondrain"),X=Symbol("prefix"),fe=class extends A{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#t=!1;constructor(t,e={}){let i=se(e);super(),this.path=f(t),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||Bn,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=f(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?f(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,a]=le(this.path);o&&typeof a=="string"&&(this.path=a,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=$s(this.path.replaceAll(/\\/g,"/")),t=t.replaceAll(/\\/g,"/")),this.absolute=f(i.absolute||qs.resolve(this.cwd,t)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[ii](n):this[es]()}warn(t,e,i={}){return Nt(this,t,e,i)}emit(t,...e){return t==="error"&&(this.#t=!0),super.emit(t,...e)}[es](){$.lstat(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[ii](e)})}[ii](t){this.statCache.set(this.absolute,t),this.stat=t,t.isFile()||(t.size=0),this.type=Pn(t),this.emit("stat",t),this[Qs]()}[Qs](){switch(this.type){case"File":return this[Js]();case"Directory":return this[js]();case"SymbolicLink":return this[ts]();default:return this.end()}}[si](t){return qi(t,this.type==="Directory",this.portable)}[X](t){return er(t,this.prefix)}[ce](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new C({path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,mode:this[si](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new ct({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let t=this.header?.block;if(!t)throw new Error("failed to encode header");super.write(t)}[js](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[ce](),this.end()}[ts](){$.readlink(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[ss](e)})}[ss](t){this.linkpath=f(t),this[ce](),this.end()}[tr](t){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=f(qs.relative(this.cwd,t)),this.stat.size=0,this[ce](),this.end()}[Js](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let t=`${this.stat.dev}:${this.stat.ino}`,e=this.linkCache.get(t);if(e?.indexOf(this.cwd)===0)return this[tr](e);this.linkCache.set(t,this.absolute)}if(this[ce](),this.stat.size===0)return this.end();this[rs]()}[rs](){$.open(this.absolute,"r",(t,e)=>{if(t)return this.emit("error",t);this[ns](e)})}[ns](t){if(this.fd=t,this.#t)return this[pt]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let e=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(e),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[ei]()}[ei](){let{fd:t,buf:e,offset:i,length:r,pos:n}=this;if(t===void 0||e===void 0)throw new Error("cannot read file without first opening");$.read(t,e,i,r,n,(o,a)=>{if(o)return this[pt](()=>this.emit("error",o));this[is](a)})}[pt](t=()=>{}){this.fd!==void 0&&$.close(this.fd,t)}[is](t){if(t<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(t>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(t===this.remain)for(let r=t;rthis[ji]())}[os](t){this.once("drain",t)}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this.blockRemaint?this.emit("error",t):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[ei]()}},ri=class extends fe{sync=!0;[es](){this[ii]($.lstatSync(this.absolute))}[ts](){this[ss]($.readlinkSync(this.absolute))}[rs](){this[ns]($.openSync(this.absolute,"r"))}[ei](){let t=!0;try{let{fd:e,buf:i,offset:r,length:n,pos:o}=this;if(e===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let a=$.readSync(e,i,r,n,o);this[is](a),t=!1}finally{if(t)try{this[pt](()=>{})}catch{}}}[os](t){t()}[pt](t=()=>{}){this.fd!==void 0&&$.closeSync(this.fd),t()}},ni=class extends A{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(t,e,i={}){return Nt(this,t,e,i)}constructor(t,e={}){let i=se(e);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=t;let{type:r}=t;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=f(t.path),this.mode=t.mode!==void 0?this[si](t.mode):void 0,this.uid=this.portable?void 0:t.uid,this.gid=this.portable?void 0:t.gid,this.uname=this.portable?void 0:t.uname,this.gname=this.portable?void 0:t.gname,this.size=t.size,this.mtime=this.noMtime?void 0:i.mtime||t.mtime,this.atime=this.portable?void 0:t.atime,this.ctime=this.portable?void 0:t.ctime,this.linkpath=t.linkpath!==void 0?f(t.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[a,h]=le(this.path);a&&typeof h=="string"&&(this.path=h,n=a)}this.remain=t.size,this.blockRemain=t.startBlockSize,this.onWriteEntry?.(this),this.header=new C({path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new ct({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[X](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[X](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),t.pipe(this)}[X](t){return er(t,this.prefix)}[si](t){return qi(t,this.type==="Directory",this.portable)}write(t,e,i){typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8"));let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(t,i)}end(t,e,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,e??"utf8")),i&&this.once("finish",i),t?super.end(t,i):super.end(i),this}},Pn=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported";var oi=class s{tail;head;length=0;static create(t=[]){return new s(t)}constructor(t=[]){for(let e of t)this.push(e)}*[Symbol.iterator](){for(let t=this.head;t;t=t.next)yield t.value}removeNode(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");let e=t.next,i=t.prev;return e&&(e.prev=i),i&&(i.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=i),this.length--,t.next=void 0,t.prev=void 0,t.list=void 0,e}unshiftNode(t){if(t===this.head)return;t.list&&t.list.removeNode(t);let e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}pushNode(t){if(t===this.tail)return;t.list&&t.list.removeNode(t);let e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}push(...t){for(let e=0,i=t.length;e1)i=e;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=t(i,r.value,n),r=r.next;return i}reduceReverse(t,e){let i,r=this.tail;if(arguments.length>1)i=e;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=t(i,r.value,n),r=r.prev;return i}toArray(){let t=new Array(this.length);for(let e=0,i=this.head;i;e++)t[e]=i.value,i=i.next;return t}toArrayReverse(){let t=new Array(this.length);for(let e=0,i=this.tail;i;e++)t[e]=i.value,i=i.prev;return t}slice(t=0,e=this.length){e<0&&(e+=this.length),t<0&&(t+=this.length);let i=new s;if(ethis.length&&(e=this.length);let r=this.head,n=0;for(n=0;r&&nthis.length&&(e=this.length);let r=this.length,n=this.tail;for(;n&&r>e;r--)n=n.prev;for(;n&&r>t;r--,n=n.prev)i.push(n.value);return i}splice(t,e=0,...i){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);let r=this.head;for(let o=0;r&&o1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(t.gzip&&(typeof t.gzip!="object"&&(t.gzip={}),this.portable&&(t.gzip.portable=!0),this.zip=new Pe(t.gzip)),t.brotli&&(typeof t.brotli!="object"&&(t.brotli={}),this.zip=new He(t.brotli)),t.zstd&&(typeof t.zstd!="object"&&(t.zstd={}),this.zip=new Ze(t.zstd)),!this.zip)throw new Error("impossible");let e=this.zip;e.on("data",i=>super.write(i)),e.on("end",()=>super.end()),e.on("drain",()=>this[ls]()),this.on("resume",()=>e.resume())}else this.on("drain",this[ls]);this.noDirRecurse=!!t.noDirRecurse,this.follow=!!t.follow,this.noMtime=!!t.noMtime,t.mtime&&(this.mtime=t.mtime),this.filter=typeof t.filter=="function"?t.filter:()=>!0,this[W]=new oi,this[G]=0,this.jobs=Number(t.jobs)||4,this[pe]=!1,this[ue]=!1}[or](t){return super.write(t)}add(t){return this.write(t),this}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&this.add(t),this[ue]=!0,this[Ct](),i&&i(),this}write(t){if(this[ue])throw new Error("write after end");return typeof t=="string"?this[li](t):this[sr](t),this.flowing}[sr](t){let e=f(nr.resolve(this.cwd,t.path));if(!this.filter(t.path,t))t.resume();else{let i=new mi(t.path,e);i.entry=new ni(t,this[as](i)),i.entry.on("end",()=>this[hs](i)),this[G]+=1,this[W].push(i)}this[Ct]()}[li](t){let e=f(nr.resolve(this.cwd,t));this[W].push(new mi(t,e)),this[Ct]()}[cs](t){t.pending=!0,this[G]+=1;let e=this.follow?"stat":"lstat";ui[e](t.absolute,(i,r)=>{t.pending=!1,this[G]-=1,i?this.emit("error",i):this[ai](t,r)})}[ai](t,e){if(this.statCache.set(t.absolute,e),t.stat=e,!this.filter(t.path,e))t.ignore=!0;else if(e.isFile()&&e.nlink>1&&!this.linkCache.get(`${e.dev}:${e.ino}`)&&!this.sync)if(t===this[Et])this[hi](t);else{let i=`${e.dev}:${e.ino}`,r=this[me].get(i);r?r.push(t):this[me].set(i,[t]),t.pendingLink=!0,t.pending=!0}this[Ct]()}[fs](t){t.pending=!0,this[G]+=1,ui.readdir(t.absolute,(e,i)=>{if(t.pending=!1,this[G]-=1,e)return this.emit("error",e);this[ci](t,i)})}[ci](t,e){this.readdirCache.set(t.absolute,e),t.readdir=e,this[Ct]()}[Ct](){if(!this[pe]){this[pe]=!0;for(let t=this[W].head;t&&this[G]1){let i=`${e.dev}:${e.ino}`,r=this[me].get(i);if(r){this[me].delete(i);for(let n of r)n.pending=!1,this[hi](n)}}this[Ct]()}[hi](t){if(t.pending&&t.pendingLink&&t===this[Et]&&(t.pending=!1,t.pendingLink=!1),!t.pending){if(t.entry){t===this[Et]&&!t.piped&&this[fi](t);return}if(!t.stat){let e=this.statCache.get(t.absolute);e?this[ai](t,e):this[cs](t)}if(t.stat&&!t.ignore){if(!this.noDirRecurse&&t.stat.isDirectory()&&!t.readdir){let e=this.readdirCache.get(t.absolute);if(e?this[ci](t,e):this[fs](t),!t.readdir)return}if(t.entry=this[rr](t),!t.entry){t.ignore=!0;return}t===this[Et]&&!t.piped&&this[fi](t)}}}[as](t){return{onwarn:(e,i,r)=>this.warn(e,i,r),noPax:this.noPax,cwd:this.cwd,absolute:t.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[rr](t){this[G]+=1;try{return new this[di](t.path,this[as](t)).on("end",()=>this[hs](t)).on("error",i=>this.emit("error",i))}catch(e){this.emit("error",e)}}[ls](){this[Et]&&this[Et].entry&&this[Et].entry.resume()}[fi](t){t.piped=!0,t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[li](o+r)});let e=t.entry,i=this.zip;if(!e)throw new Error("cannot pipe without source");i?e.on("data",r=>{i.write(r)||e.pause()}):e.on("data",r=>{super.write(r)||e.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(t,e,i={}){Nt(this,t,e,i)}},kt=class extends wt{sync=!0;constructor(t){super(t),this[di]=ri}pause(){}resume(){}[cs](t){let e=this.follow?"statSync":"lstatSync";this[ai](t,ui[e](t.absolute))}[fs](t){this[ci](t,ui.readdirSync(t.absolute))}[fi](t){let e=t.entry,i=this.zip;if(t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[li](o+r)}),!e)throw new Error("Cannot pipe without source");i?e.on("data",r=>{i.write(r)}):e.on("data",r=>{super[or](r)})}};var Wn=(s,t)=>{let e=new kt(s),i=new Wt(s.file,{mode:s.mode||438});e.pipe(i),ar(e,t)},Gn=(s,t)=>{let e=new wt(s),i=new tt(s.file,{mode:s.mode||438});e.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),e.on("error",o)});return lr(e,t).catch(n=>e.emit("error",n)),r},ar=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?Ft({file:hr.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},lr=async(s,t)=>{for(let e of t)e.charAt(0)==="@"?await Ft({file:hr.resolve(String(s.cwd),e.slice(1)),noResume:!0,onReadEntry:i=>{s.add(i)}}):s.add(e);s.end()},Zn=(s,t)=>{let e=new kt(s);return ar(e,t),e},Yn=(s,t)=>{let e=new wt(s);return lr(e,t).catch(i=>e.emit("error",i)),e},Kn=K(Wn,Gn,Zn,Yn,(s,t)=>{if(!t?.length)throw new TypeError("no paths specified to add to archive")});import kr from"node:fs";import no from"node:assert";import{randomBytes as Cr}from"node:crypto";import u from"node:fs";import R from"node:path";import dr from"fs";var Vn=process.env.__FAKE_PLATFORM__||process.platform,ur=Vn==="win32",{O_CREAT:mr,O_NOFOLLOW:cr,O_TRUNC:pr,O_WRONLY:Er}=dr.constants,wr=Number(process.env.__FAKE_FS_O_FILENAME__)||dr.constants.UV_FS_O_FILEMAP||0,$n=ur&&!!wr,Xn=512*1024,qn=wr|pr|mr|Er,fr=!ur&&typeof cr=="number"?cr|pr|mr|Er:null,ds=fr!==null?()=>fr:$n?s=>s"w";import Ei from"node:fs";import Ee from"node:path";var us=(s,t,e)=>{try{return Ei.lchownSync(s,t,e)}catch(i){if(i?.code!=="ENOENT")throw i}},pi=(s,t,e,i)=>{Ei.lchown(s,t,e,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},Qn=(s,t,e,i,r)=>{if(t.isDirectory())ms(Ee.resolve(s,t.name),e,i,n=>{if(n)return r(n);let o=Ee.resolve(s,t.name);pi(o,e,i,r)});else{let n=Ee.resolve(s,t.name);pi(n,e,i,r)}},ms=(s,t,e,i)=>{Ei.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return pi(s,t,e,i);let o=n.length,a=null,h=l=>{if(!a){if(l)return i(a=l);if(--o===0)return pi(s,t,e,i)}};for(let l of n)Qn(s,l,t,e,h)})},Jn=(s,t,e,i)=>{t.isDirectory()&&ps(Ee.resolve(s,t.name),e,i),us(Ee.resolve(s,t.name),e,i)},ps=(s,t,e)=>{let i;try{i=Ei.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return us(s,t,e);throw n}for(let r of i)Jn(s,r,t,e);return us(s,t,e)};import k from"node:fs";import jn from"node:fs/promises";import wi from"node:path";var we=class extends Error{path;code;syscall="chdir";constructor(t,e){super(`${e}: Cannot cd into '${t}'`),this.path=t,this.code=e}get name(){return"CwdError"}};var St=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(t,e){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=t,this.path=e}get name(){return"SymlinkError"}};var to=(s,t)=>{k.stat(s,(e,i)=>{(e||!i.isDirectory())&&(e=new we(s,e?.code||"ENOTDIR")),t(e)})},Sr=(s,t,e)=>{s=f(s);let i=t.umask??18,r=t.mode|448,n=(r&i)!==0,o=t.uid,a=t.gid,h=typeof o=="number"&&typeof a=="number"&&(o!==t.processUid||a!==t.processGid),l=t.preserve,c=t.unlink,d=f(t.cwd),S=(E,x)=>{E?e(E):x&&h?ms(x,o,a,xe=>S(xe)):n?k.chmod(s,r,e):e()};if(s===d)return to(s,S);if(l)return jn.mkdir(s,{mode:r,recursive:!0}).then(E=>S(null,E??void 0),S);let N=f(wi.relative(d,s)).split("/");Es(d,N,r,c,d,void 0,S)},Es=(s,t,e,i,r,n,o)=>{if(t.length===0)return o(null,n);let a=t.shift(),h=f(wi.resolve(s+"/"+a));k.mkdir(h,e,yr(h,t,e,i,r,n,o))},yr=(s,t,e,i,r,n,o)=>a=>{a?k.lstat(s,(h,l)=>{if(h)h.path=h.path&&f(h.path),o(h);else if(l.isDirectory())Es(s,t,e,i,r,n,o);else if(i)k.unlink(s,c=>{if(c)return o(c);k.mkdir(s,e,yr(s,t,e,i,r,n,o))});else{if(l.isSymbolicLink())return o(new St(s,s+"/"+t.join("/")));o(a)}}):(n=n||s,Es(s,t,e,i,r,n,o))},eo=s=>{let t=!1,e;try{t=k.statSync(s).isDirectory()}catch(i){e=i?.code}finally{if(!t)throw new we(s,e??"ENOTDIR")}},Rr=(s,t)=>{s=f(s);let e=t.umask??18,i=t.mode|448,r=(i&e)!==0,n=t.uid,o=t.gid,a=typeof n=="number"&&typeof o=="number"&&(n!==t.processUid||o!==t.processGid),h=t.preserve,l=t.unlink,c=f(t.cwd),d=E=>{E&&a&&ps(E,n,o),r&&k.chmodSync(s,i)};if(s===c)return eo(c),d();if(h)return d(k.mkdirSync(s,{mode:i,recursive:!0})??void 0);let T=f(wi.relative(c,s)).split("/"),N;for(let E=T.shift(),x=c;E&&(x+="/"+E);E=T.shift()){x=f(wi.resolve(x));try{k.mkdirSync(x,i),N=N||x}catch{let xe=k.lstatSync(x);if(xe.isDirectory())continue;if(l){k.unlinkSync(x),k.mkdirSync(x,i),N=N||x;continue}else if(xe.isSymbolicLink())return new St(x,x+"/"+T.join("/"))}}return d(N)};import{join as _r}from"node:path";var ws=Object.create(null),gr=1e4,Vt=new Set,br=s=>{Vt.has(s)?Vt.delete(s):ws[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),Vt.add(s);let t=ws[s],e=Vt.size-gr;if(e>gr/10){for(let i of Vt)if(Vt.delete(i),delete ws[i],--e<=0)break}return t};var io=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,so=io==="win32",ro=s=>s.split("/").slice(0,-1).reduce((e,i)=>{let r=e.at(-1);return r!==void 0&&(i=_r(r,i)),e.push(i||"/"),e},[]),Si=class{#t=new Map;#i=new Map;#s=new Set;reserve(t,e){t=so?["win32 parallelization disabled"]:t.map(r=>mt(_r(br(r))));let i=new Set(t.map(r=>ro(r)).reduce((r,n)=>r.concat(n)));this.#i.set(e,{dirs:i,paths:t});for(let r of t){let n=this.#t.get(r);n?n.push(e):this.#t.set(r,[e])}for(let r of i){let n=this.#t.get(r);if(!n)this.#t.set(r,[new Set([e])]);else{let o=n.at(-1);o instanceof Set?o.add(e):n.push(new Set([e]))}}return this.#r(e)}#n(t){let e=this.#i.get(t);if(!e)throw new Error("function does not have any path reservations");return{paths:e.paths.map(i=>this.#t.get(i)),dirs:[...e.dirs].map(i=>this.#t.get(i))}}check(t){let{paths:e,dirs:i}=this.#n(t);return e.every(r=>r&&r[0]===t)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(t))}#r(t){return this.#s.has(t)||!this.check(t)?!1:(this.#s.add(t),t(()=>this.#e(t)),!0)}#e(t){if(!this.#s.has(t))return!1;let e=this.#i.get(t);if(!e)throw new Error("invalid reservation");let{paths:i,dirs:r}=e,n=new Set;for(let o of i){let a=this.#t.get(o);if(!a||a?.[0]!==t)continue;let h=a[1];if(!h){this.#t.delete(o);continue}if(a.shift(),typeof h=="function")n.add(h);else for(let l of h)n.add(l)}for(let o of r){let a=this.#t.get(o),h=a?.[0];if(!(!a||!(h instanceof Set)))if(h.size===1&&a.length===1){this.#t.delete(o);continue}else if(h.size===1){a.shift();let l=a[0];typeof l=="function"&&n.add(l)}else h.delete(t)}return this.#s.delete(t),n.forEach(o=>this.#r(o)),!0}};var Or=()=>process.umask();var Tr=Symbol("onEntry"),gs=Symbol("checkFs"),xr=Symbol("checkFs2"),bs=Symbol("isReusable"),P=Symbol("makeFs"),_s=Symbol("file"),Os=Symbol("directory"),Ri=Symbol("link"),Lr=Symbol("symlink"),Nr=Symbol("hardlink"),ye=Symbol("ensureNoSymlink"),Dr=Symbol("unsupported"),Ar=Symbol("checkPath"),Ss=Symbol("stripAbsolutePath"),yt=Symbol("mkdir"),O=Symbol("onError"),yi=Symbol("pending"),Ir=Symbol("pend"),$t=Symbol("unpend"),ys=Symbol("ended"),Rs=Symbol("maybeClose"),Ts=Symbol("skip"),Re=Symbol("doChown"),ge=Symbol("uid"),be=Symbol("gid"),_e=Symbol("checkedCwd"),oo=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Oe=oo==="win32",ho=1024,ao=(s,t)=>{if(!Oe)return u.unlink(s,t);let e=s+".DELETE."+Cr(16).toString("hex");u.rename(s,e,i=>{if(i)return t(i);u.unlink(e,t)})},lo=s=>{if(!Oe)return u.unlinkSync(s);let t=s+".DELETE."+Cr(16).toString("hex");u.renameSync(s,t),u.unlinkSync(t)},Fr=(s,t,e)=>s!==void 0&&s===s>>>0?s:t!==void 0&&t===t>>>0?t:e,Xt=class extends st{[ys]=!1;[_e]=!1;[yi]=0;reservations=new Si;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(t={}){if(t.ondone=()=>{this[ys]=!0,this[Rs]()},super(t),this.transform=t.transform,this.chmod=!!t.chmod,typeof t.uid=="number"||typeof t.gid=="number"){if(typeof t.uid!="number"||typeof t.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(t.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=t.uid,this.gid=t.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;this.preserveOwner=t.preserveOwner===void 0&&typeof t.uid!="number"?!!(process.getuid&&process.getuid()===0):!!t.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof t.maxDepth=="number"?t.maxDepth:ho,this.forceChown=t.forceChown===!0,this.win32=!!t.win32||Oe,this.newer=!!t.newer,this.keep=!!t.keep,this.noMtime=!!t.noMtime,this.preservePaths=!!t.preservePaths,this.unlink=!!t.unlink,this.cwd=f(R.resolve(t.cwd||process.cwd())),this.strip=Number(t.strip)||0,this.processUmask=this.chmod?typeof t.processUmask=="number"?t.processUmask:Or():0,this.umask=typeof t.umask=="number"?t.umask:this.processUmask,this.dmode=t.dmode||511&~this.umask,this.fmode=t.fmode||438&~this.umask,this.on("entry",e=>this[Tr](e))}warn(t,e,i={}){return(t==="TAR_BAD_ARCHIVE"||t==="TAR_ABORT")&&(i.recoverable=!1),super.warn(t,e,i)}[Rs](){this[ys]&&this[yi]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[Ss](t,e){let i=t[e],{type:r}=t;if(!i||this.preservePaths)return!0;let[n,o]=le(i),a=o.replaceAll(/\\/g,"/").split("/");if(a.includes("..")||Oe&&/^[a-z]:\.\.$/i.test(a[0]??"")){if(e==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${e} contains '..'`,{entry:t,[e]:i}),!1;let h=R.posix.dirname(t.path),l=R.posix.normalize(R.posix.join(h,a.join("/")));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${e} escapes extraction directory`,{entry:t,[e]:i}),!1}return n&&(t[e]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${e}`,{entry:t,[e]:i})),!0}[Ar](t){let e=f(t.path),i=e.split("/");if(this.strip){if(i.length=this.strip)t.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),t.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:t,path:e,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[Ss](t,"path")||!this[Ss](t,"linkpath"))return!1;if(t.absolute=R.isAbsolute(t.path)?f(R.resolve(t.path)):f(R.resolve(this.cwd,t.path)),!this.preservePaths&&typeof t.absolute=="string"&&t.absolute.indexOf(this.cwd+"/")!==0&&t.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:t,path:f(t.path),resolvedPath:t.absolute,cwd:this.cwd}),!1;if(t.absolute===this.cwd&&t.type!=="Directory"&&t.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=R.win32.parse(String(t.absolute));t.absolute=r+Ji(String(t.absolute).slice(r.length));let{root:n}=R.win32.parse(t.path);t.path=n+Ji(t.path.slice(n.length))}return!0}[Tr](t){if(!this[Ar](t))return t.resume();switch(no.equal(typeof t.absolute,"string"),t.type){case"Directory":case"GNUDumpDir":t.mode&&(t.mode=t.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[gs](t);default:return this[Dr](t)}}[O](t,e){t.name==="CwdError"?this.emit("error",t):(this.warn("TAR_ENTRY_ERROR",t,{entry:e}),this[$t](),e.resume())}[yt](t,e,i){Sr(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e},i)}[Re](t){return this.forceChown||this.preserveOwner&&(typeof t.uid=="number"&&t.uid!==this.processUid||typeof t.gid=="number"&&t.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[ge](t){return Fr(this.uid,t.uid,this.processUid)}[be](t){return Fr(this.gid,t.gid,this.processGid)}[_s](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=new tt(String(t.absolute),{flags:ds(t.size),mode:i,autoClose:!1});r.on("error",h=>{r.fd&&u.close(r.fd,()=>{}),r.write=()=>!0,this[O](h,t),e()});let n=1,o=h=>{if(h){r.fd&&u.close(r.fd,()=>{}),this[O](h,t),e();return}--n===0&&r.fd!==void 0&&u.close(r.fd,l=>{l?this[O](l,t):this[$t](),e()})};r.on("finish",()=>{let h=String(t.absolute),l=r.fd;if(typeof l=="number"&&t.mtime&&!this.noMtime){n++;let c=t.atime||new Date,d=t.mtime;u.futimes(l,c,d,S=>S?u.utimes(h,c,d,T=>o(T&&S)):o())}if(typeof l=="number"&&this[Re](t)){n++;let c=this[ge](t),d=this[be](t);typeof c=="number"&&typeof d=="number"&&u.fchown(l,c,d,S=>S?u.chown(h,c,d,T=>o(T&&S)):o())}o()});let a=this.transform&&this.transform(t)||t;a!==t&&(a.on("error",h=>{this[O](h,t),e()}),t.pipe(a)),a.pipe(r)}[Os](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode;this[yt](String(t.absolute),i,r=>{if(r){this[O](r,t),e();return}let n=1,o=()=>{--n===0&&(e(),this[$t](),t.resume())};t.mtime&&!this.noMtime&&(n++,u.utimes(String(t.absolute),t.atime||new Date,t.mtime,o)),this[Re](t)&&(n++,u.chown(String(t.absolute),Number(this[ge](t)),Number(this[be](t)),o)),o()})}[Dr](t){t.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${t.type}`,{entry:t}),t.resume()}[Lr](t,e){let i=f(R.relative(this.cwd,R.resolve(R.dirname(String(t.absolute)),String(t.linkpath)))).split("/");this[ye](t,this.cwd,i,()=>this[Ri](t,String(t.linkpath),"symlink",e),r=>{this[O](r,t),e()})}[Nr](t,e){let i=f(R.resolve(this.cwd,String(t.linkpath))),r=f(String(t.linkpath)).split("/");this[ye](t,this.cwd,r,()=>this[Ri](t,i,"link",e),n=>{this[O](n,t),e()})}[ye](t,e,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let a=R.resolve(e,o);u.lstat(a,(h,l)=>{if(h)return r();if(l?.isSymbolicLink())return n(new St(a,R.resolve(a,i.join("/"))));this[ye](t,a,i,r,n)})}[Ir](){this[yi]++}[$t](){this[yi]--,this[Rs]()}[Ts](t){this[$t](),t.resume()}[bs](t,e){return t.type==="File"&&!this.unlink&&e.isFile()&&e.nlink<=1&&!Oe}[gs](t){this[Ir]();let e=[t.path];t.linkpath&&e.push(t.linkpath),this.reservations.reserve(e,i=>this[xr](t,i))}[xr](t,e){let i=a=>{e(a)},r=()=>{this[yt](this.cwd,this.dmode,a=>{if(a){this[O](a,t),i();return}this[_e]=!0,n()})},n=()=>{if(t.absolute!==this.cwd){let a=f(R.dirname(String(t.absolute)));if(a!==this.cwd)return this[yt](a,this.dmode,h=>{if(h){this[O](h,t),i();return}o()})}o()},o=()=>{u.lstat(String(t.absolute),(a,h)=>{if(h&&(this.keep||this.newer&&h.mtime>(t.mtime??h.mtime))){this[Ts](t),i();return}if(a||this[bs](t,h))return this[P](null,t,i);if(h.isDirectory()){if(t.type==="Directory"){let l=this.chmod&&t.mode&&(h.mode&4095)!==t.mode,c=d=>this[P](d??null,t,i);return l?u.chmod(String(t.absolute),Number(t.mode),c):c()}if(t.absolute!==this.cwd)return u.rmdir(String(t.absolute),l=>this[P](l??null,t,i))}if(t.absolute===this.cwd)return this[P](null,t,i);ao(String(t.absolute),l=>this[P](l??null,t,i))})};this[_e]?n():r()}[P](t,e,i){if(t){this[O](t,e),i();return}switch(e.type){case"File":case"OldFile":case"ContiguousFile":return this[_s](e,i);case"Link":return this[Nr](e,i);case"SymbolicLink":return this[Lr](e,i);case"Directory":case"GNUDumpDir":return this[Os](e,i)}}[Ri](t,e,i,r){u[i](e,String(t.absolute),n=>{n?this[O](n,t):(this[$t](),t.resume()),r()})}},Se=s=>{try{return[null,s()]}catch(t){return[t,null]}},Te=class extends Xt{sync=!0;[P](t,e){return super[P](t,e,()=>{})}[gs](t){if(!this[_e]){let n=this[yt](this.cwd,this.dmode);if(n)return this[O](n,t);this[_e]=!0}if(t.absolute!==this.cwd){let n=f(R.dirname(String(t.absolute)));if(n!==this.cwd){let o=this[yt](n,this.dmode);if(o)return this[O](o,t)}}let[e,i]=Se(()=>u.lstatSync(String(t.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(t.mtime??i.mtime)))return this[Ts](t);if(e||this[bs](t,i))return this[P](null,t);if(i.isDirectory()){if(t.type==="Directory"){let o=this.chmod&&t.mode&&(i.mode&4095)!==t.mode,[a]=o?Se(()=>{u.chmodSync(String(t.absolute),Number(t.mode))}):[];return this[P](a,t)}let[n]=Se(()=>u.rmdirSync(String(t.absolute)));this[P](n,t)}let[r]=t.absolute===this.cwd?[]:Se(()=>lo(String(t.absolute)));this[P](r,t)}[_s](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=a=>{let h;try{u.closeSync(n)}catch(l){h=l}(a||h)&&this[O](a||h,t),e()},n;try{n=u.openSync(String(t.absolute),ds(t.size),i)}catch(a){return r(a)}let o=this.transform&&this.transform(t)||t;o!==t&&(o.on("error",a=>this[O](a,t)),t.pipe(o)),o.on("data",a=>{try{u.writeSync(n,a,0,a.length)}catch(h){r(h)}}),o.on("end",()=>{let a=null;if(t.mtime&&!this.noMtime){let h=t.atime||new Date,l=t.mtime;try{u.futimesSync(n,h,l)}catch(c){try{u.utimesSync(String(t.absolute),h,l)}catch{a=c}}}if(this[Re](t)){let h=this[ge](t),l=this[be](t);try{u.fchownSync(n,Number(h),Number(l))}catch(c){try{u.chownSync(String(t.absolute),Number(h),Number(l))}catch{a=a||c}}}r(a)})}[Os](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode,r=this[yt](String(t.absolute),i);if(r){this[O](r,t),e();return}if(t.mtime&&!this.noMtime)try{u.utimesSync(String(t.absolute),t.atime||new Date,t.mtime)}catch{}if(this[Re](t))try{u.chownSync(String(t.absolute),Number(this[ge](t)),Number(this[be](t)))}catch{}e(),t.resume()}[yt](t,e){try{return Rr(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e})}catch(i){return i}}[ye](t,e,i,r,n){if(this.preservePaths||i.length===0)return r();let o=e;for(let a of i){o=R.resolve(o,a);let[h,l]=Se(()=>u.lstatSync(o));if(h)return r();if(l.isSymbolicLink())return n(new St(o,R.resolve(e,i.join("/"))))}r()}[Ri](t,e,i,r){let n=`${i}Sync`;try{u[n](e,String(t.absolute)),r(),t.resume()}catch(o){return this[O](o,t)}}};var co=s=>{let t=new Te(s),e=s.file,i=kr.statSync(e),r=s.maxReadSize||16*1024*1024;new Me(e,{readSize:r,size:i.size}).pipe(t)},fo=(s,t)=>{let e=new Xt(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{e.on("error",a),e.on("close",o),kr.stat(r,(h,l)=>{if(h)a(h);else{let c=new _t(r,{readSize:i,size:l.size});c.on("error",a),c.pipe(e)}})})},uo=K(co,fo,s=>new Te(s),s=>new Xt(s),(s,t)=>{t?.length&&Xi(s,t)});import v from"node:fs";import vr from"node:path";var mo=(s,t)=>{let e=new kt(s),i=!0,r,n;try{try{r=v.openSync(s.file,"r+")}catch(h){if(h?.code==="ENOENT")r=v.openSync(s.file,"w+");else throw h}let o=v.fstatSync(r),a=Buffer.alloc(512);t:for(n=0;no.size)break;n+=l,s.mtimeCache&&h.mtime&&s.mtimeCache.set(String(h.path),h.mtime)}i=!1,po(s,e,n,r,t)}finally{if(i)try{v.closeSync(r)}catch{}}},po=(s,t,e,i,r)=>{let n=new Wt(s.file,{fd:i,start:e});t.pipe(n),wo(t,r)},Eo=(s,t)=>{t=Array.from(t);let e=new wt(s),i=(n,o,a)=>{let h=(T,N)=>{T?v.close(n,E=>a(T)):a(null,N)},l=0;if(o===0)return h(null,0);let c=0,d=Buffer.alloc(512),S=(T,N)=>{if(T||N===void 0)return h(T);if(c+=N,c<512&&N)return v.read(n,d,c,d.length-c,l+c,S);if(l===0&&d[0]===31&&d[1]===139)return h(new Error("cannot append to compressed archives"));if(c<512)return h(null,l);let E=new C(d);if(!E.cksumValid)return h(null,l);let x=512*Math.ceil((E.size??0)/512);if(l+x+512>o||(l+=x+512,l>=o))return h(null,l);s.mtimeCache&&E.mtime&&s.mtimeCache.set(String(E.path),E.mtime),c=0,v.read(n,d,0,512,l,S)};v.read(n,d,0,512,l,S)};return new Promise((n,o)=>{e.on("error",o);let a="r+",h=(l,c)=>{if(l&&l.code==="ENOENT"&&a==="r+")return a="w+",v.open(s.file,a,h);if(l||!c)return o(l);v.fstat(c,(d,S)=>{if(d)return v.close(c,()=>o(d));i(c,S.size,(T,N)=>{if(T)return o(T);let E=new tt(s.file,{fd:c,start:N});e.pipe(E),E.on("error",o),E.on("close",n),So(e,t)})})};v.open(s.file,a,h)})},wo=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?Ft({file:vr.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},So=async(s,t)=>{for(let e of t)e.charAt(0)==="@"?await Ft({file:vr.resolve(String(s.cwd),e.slice(1)),noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e);s.end()},vt=K(mo,Eo,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,t)=>{if(!vs(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!t?.length)throw new TypeError("no paths specified to add/replace")});var yo=K(vt.syncFile,vt.asyncFile,vt.syncNoFile,vt.asyncNoFile,(s,t=[])=>{vt.validate?.(s,t),Ro(s)}),Ro=s=>{let t=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=t?(e,i)=>t(e,i)&&!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0)):(e,i)=>!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0))};export{C as Header,wt as Pack,mi as PackJob,kt as PackSync,st as Parser,ct as Pax,Ve as ReadEntry,Xt as Unpack,Te as UnpackSync,fe as WriteEntry,ri as WriteEntrySync,ni as WriteEntryTar,Kn as c,Kn as create,uo as extract,Xi as filesFilter,Ft as list,vt as r,vt as replace,Ft as t,Ui as types,yo as u,yo as update,uo as x}; +var zr=Object.defineProperty;var Ur=(s,t)=>{for(var e in t)zr(s,e,{get:t[e],enumerable:!0})};import Qr from"events";import I from"fs";import{EventEmitter as Di}from"node:events";import Cs from"node:stream";import{StringDecoder as Hr}from"node:string_decoder";var Ds=typeof process=="object"&&process?process:{stdout:null,stderr:null},Wr=s=>!!s&&typeof s=="object"&&(s instanceof A||s instanceof Cs||Gr(s)||Zr(s)),Gr=s=>!!s&&typeof s=="object"&&s instanceof Di&&typeof s.pipe=="function"&&s.pipe!==Cs.Writable.prototype.pipe,Zr=s=>!!s&&typeof s=="object"&&s instanceof Di&&typeof s.write=="function"&&typeof s.end=="function",Q=Symbol("EOF"),J=Symbol("maybeEmitEnd"),nt=Symbol("emittedEnd"),De=Symbol("emittingEnd"),qt=Symbol("emittedError"),Ne=Symbol("closed"),Ns=Symbol("read"),Ae=Symbol("flush"),As=Symbol("flushChunk"),z=Symbol("encoding"),Mt=Symbol("decoder"),g=Symbol("flowing"),Qt=Symbol("paused"),Bt=Symbol("resume"),b=Symbol("buffer"),N=Symbol("pipes"),_=Symbol("bufferLength"),bi=Symbol("bufferPush"),Ie=Symbol("bufferShift"),L=Symbol("objectMode"),w=Symbol("destroyed"),_i=Symbol("error"),Oi=Symbol("emitData"),Is=Symbol("emitEnd"),Ti=Symbol("emitEnd2"),Z=Symbol("async"),xi=Symbol("abort"),Ce=Symbol("aborted"),Jt=Symbol("signal"),Rt=Symbol("dataListeners"),C=Symbol("discarded"),jt=s=>Promise.resolve().then(s),Yr=s=>s(),Kr=s=>s==="end"||s==="finish"||s==="prefinish",Vr=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,$r=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),Fe=class{src;dest;opts;ondrain;constructor(t,e,i){this.src=t,this.dest=e,this.opts=i,this.ondrain=()=>t[Bt](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},Li=class extends Fe{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,e,i){super(t,e,i),this.proxyErrors=r=>this.dest.emit("error",r),t.on("error",this.proxyErrors)}},Xr=s=>!!s.objectMode,qr=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",A=class extends Di{[g]=!1;[Qt]=!1;[N]=[];[b]=[];[L];[z];[Z];[Mt];[Q]=!1;[nt]=!1;[De]=!1;[Ne]=!1;[qt]=null;[_]=0;[w]=!1;[Jt];[Ce]=!1;[Rt]=0;[C]=!1;writable=!0;readable=!0;constructor(...t){let e=t[0]||{};if(super(),e.objectMode&&typeof e.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Xr(e)?(this[L]=!0,this[z]=null):qr(e)?(this[z]=e.encoding,this[L]=!1):(this[L]=!1,this[z]=null),this[Z]=!!e.async,this[Mt]=this[z]?new Hr(this[z]):null,e&&e.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[b]}),e&&e.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[N]});let{signal:i}=e;i&&(this[Jt]=i,i.aborted?this[xi]():i.addEventListener("abort",()=>this[xi]()))}get bufferLength(){return this[_]}get encoding(){return this[z]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[L]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[Z]}set async(t){this[Z]=this[Z]||!!t}[xi](){this[Ce]=!0,this.emit("abort",this[Jt]?.reason),this.destroy(this[Jt]?.reason)}get aborted(){return this[Ce]}set aborted(t){}write(t,e,i){if(this[Ce])return!1;if(this[Q])throw new Error("write after end");if(this[w])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof e=="function"&&(i=e,e="utf8"),e||(e="utf8");let r=this[Z]?jt:Yr;if(!this[L]&&!Buffer.isBuffer(t)){if($r(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(Vr(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[L]?(this[g]&&this[_]!==0&&this[Ae](!0),this[g]?this.emit("data",t):this[bi](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[g]):t.length?(typeof t=="string"&&!(e===this[z]&&!this[Mt]?.lastNeed)&&(t=Buffer.from(t,e)),Buffer.isBuffer(t)&&this[z]&&(t=this[Mt].write(t)),this[g]&&this[_]!==0&&this[Ae](!0),this[g]?this.emit("data",t):this[bi](t),this[_]!==0&&this.emit("readable"),i&&r(i),this[g]):(this[_]!==0&&this.emit("readable"),i&&r(i),this[g])}read(t){if(this[w])return null;if(this[C]=!1,this[_]===0||t===0||t&&t>this[_])return this[J](),null;this[L]&&(t=null),this[b].length>1&&!this[L]&&(this[b]=[this[z]?this[b].join(""):Buffer.concat(this[b],this[_])]);let e=this[Ns](t||null,this[b][0]);return this[J](),e}[Ns](t,e){if(this[L])this[Ie]();else{let i=e;t===i.length||t===null?this[Ie]():typeof i=="string"?(this[b][0]=i.slice(t),e=i.slice(0,t),this[_]-=t):(this[b][0]=i.subarray(t),e=i.subarray(0,t),this[_]-=t)}return this.emit("data",e),!this[b].length&&!this[Q]&&this.emit("drain"),e}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e="utf8"),t!==void 0&&this.write(t,e),i&&this.once("end",i),this[Q]=!0,this.writable=!1,(this[g]||!this[Qt])&&this[J](),this}[Bt](){this[w]||(!this[Rt]&&!this[N].length&&(this[C]=!0),this[Qt]=!1,this[g]=!0,this.emit("resume"),this[b].length?this[Ae]():this[Q]?this[J]():this.emit("drain"))}resume(){return this[Bt]()}pause(){this[g]=!1,this[Qt]=!0,this[C]=!1}get destroyed(){return this[w]}get flowing(){return this[g]}get paused(){return this[Qt]}[bi](t){this[L]?this[_]+=1:this[_]+=t.length,this[b].push(t)}[Ie](){return this[L]?this[_]-=1:this[_]-=this[b][0].length,this[b].shift()}[Ae](t=!1){do;while(this[As](this[Ie]())&&this[b].length);!t&&!this[b].length&&!this[Q]&&this.emit("drain")}[As](t){return this.emit("data",t),this[g]}pipe(t,e){if(this[w])return t;this[C]=!1;let i=this[nt];return e=e||{},t===Ds.stdout||t===Ds.stderr?e.end=!1:e.end=e.end!==!1,e.proxyErrors=!!e.proxyErrors,i?e.end&&t.end():(this[N].push(e.proxyErrors?new Li(this,t,e):new Fe(this,t,e)),this[Z]?jt(()=>this[Bt]()):this[Bt]()),t}unpipe(t){let e=this[N].find(i=>i.dest===t);e&&(this[N].length===1?(this[g]&&this[Rt]===0&&(this[g]=!1),this[N]=[]):this[N].splice(this[N].indexOf(e),1),e.unpipe())}addListener(t,e){return this.on(t,e)}on(t,e){let i=super.on(t,e);if(t==="data")this[C]=!1,this[Rt]++,!this[N].length&&!this[g]&&this[Bt]();else if(t==="readable"&&this[_]!==0)super.emit("readable");else if(Kr(t)&&this[nt])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[qt]){let r=e;this[Z]?jt(()=>r.call(this,this[qt])):r.call(this,this[qt])}return i}removeListener(t,e){return this.off(t,e)}off(t,e){let i=super.off(t,e);return t==="data"&&(this[Rt]=this.listeners("data").length,this[Rt]===0&&!this[C]&&!this[N].length&&(this[g]=!1)),i}removeAllListeners(t){let e=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[Rt]=0,!this[C]&&!this[N].length&&(this[g]=!1)),e}get emittedEnd(){return this[nt]}[J](){!this[De]&&!this[nt]&&!this[w]&&this[b].length===0&&this[Q]&&(this[De]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Ne]&&this.emit("close"),this[De]=!1)}emit(t,...e){let i=e[0];if(t!=="error"&&t!=="close"&&t!==w&&this[w])return!1;if(t==="data")return!this[L]&&!i?!1:this[Z]?(jt(()=>this[Oi](i)),!0):this[Oi](i);if(t==="end")return this[Is]();if(t==="close"){if(this[Ne]=!0,!this[nt]&&!this[w])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(t==="error"){this[qt]=i,super.emit(_i,i);let n=!this[Jt]||this.listeners("error").length?super.emit("error",i):!1;return this[J](),n}else if(t==="resume"){let n=super.emit("resume");return this[J](),n}else if(t==="finish"||t==="prefinish"){let n=super.emit(t);return this.removeAllListeners(t),n}let r=super.emit(t,...e);return this[J](),r}[Oi](t){for(let i of this[N])i.dest.write(t)===!1&&this.pause();let e=this[C]?!1:super.emit("data",t);return this[J](),e}[Is](){return this[nt]?!1:(this[nt]=!0,this.readable=!1,this[Z]?(jt(()=>this[Ti]()),!0):this[Ti]())}[Ti](){if(this[Mt]){let e=this[Mt].end();if(e){for(let i of this[N])i.dest.write(e);this[C]||super.emit("data",e)}}for(let e of this[N])e.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[L]||(t.dataLength=0);let e=this.promise();return this.on("data",i=>{t.push(i),this[L]||(t.dataLength+=i.length)}),await e,t}async concat(){if(this[L])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[z]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,e)=>{this.on(w,()=>e(new Error("stream destroyed"))),this.on("error",i=>e(i)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[C]=!1;let t=!1,e=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return e();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[Q])return e();let n,o,h=d=>{this.off("data",a),this.off("end",l),this.off(w,c),e(),o(d)},a=d=>{this.off("error",h),this.off("end",l),this.off(w,c),this.pause(),n({value:d,done:!!this[Q]})},l=()=>{this.off("error",h),this.off("data",a),this.off(w,c),e(),n({done:!0,value:void 0})},c=()=>h(new Error("stream destroyed"));return new Promise((d,S)=>{o=S,n=d,this.once(w,c),this.once("error",h),this.once("end",l),this.once("data",a)})},throw:e,return:e,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[C]=!1;let t=!1,e=()=>(this.pause(),this.off(_i,e),this.off(w,e),this.off("end",e),t=!0,{done:!0,value:void 0}),i=()=>{if(t)return e();let r=this.read();return r===null?e():{done:!1,value:r}};return this.once("end",e),this.once(_i,e),this.once(w,e),{next:i,throw:e,return:e,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(t){if(this[w])return t?this.emit("error",t):this.emit(w),this;this[w]=!0,this[C]=!0,this[b].length=0,this[_]=0;let e=this;return typeof e.close=="function"&&!this[Ne]&&e.close(),t?this.emit("error",t):this.emit(w),this}static get isStream(){return Wr}};var Jr=I.writev,ht=Symbol("_autoClose"),H=Symbol("_close"),te=Symbol("_ended"),u=Symbol("_fd"),Ni=Symbol("_finished"),tt=Symbol("_flags"),Ai=Symbol("_flush"),ki=Symbol("_handleChunk"),vi=Symbol("_makeBuf"),ie=Symbol("_mode"),ke=Symbol("_needDrain"),Ut=Symbol("_onerror"),Ht=Symbol("_onopen"),Ii=Symbol("_onread"),Pt=Symbol("_onwrite"),at=Symbol("_open"),U=Symbol("_path"),ot=Symbol("_pos"),Y=Symbol("_queue"),zt=Symbol("_read"),Ci=Symbol("_readSize"),j=Symbol("_reading"),ee=Symbol("_remain"),Fi=Symbol("_size"),ve=Symbol("_write"),gt=Symbol("_writing"),Me=Symbol("_defaultFlag"),bt=Symbol("_errored"),_t=class extends A{[bt]=!1;[u];[U];[Ci];[j]=!1;[Fi];[ee];[ht];constructor(t,e){if(e=e||{},super(e),this.readable=!0,this.writable=!1,typeof t!="string")throw new TypeError("path must be a string");this[bt]=!1,this[u]=typeof e.fd=="number"?e.fd:void 0,this[U]=t,this[Ci]=e.readSize||16*1024*1024,this[j]=!1,this[Fi]=typeof e.size=="number"?e.size:1/0,this[ee]=this[Fi],this[ht]=typeof e.autoClose=="boolean"?e.autoClose:!0,typeof this[u]=="number"?this[zt]():this[at]()}get fd(){return this[u]}get path(){return this[U]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[at](){I.open(this[U],"r",(t,e)=>this[Ht](t,e))}[Ht](t,e){t?this[Ut](t):(this[u]=e,this.emit("open",e),this[zt]())}[vi](){return Buffer.allocUnsafe(Math.min(this[Ci],this[ee]))}[zt](){if(!this[j]){this[j]=!0;let t=this[vi]();if(t.length===0)return process.nextTick(()=>this[Ii](null,0,t));I.read(this[u],t,0,t.length,null,(e,i,r)=>this[Ii](e,i,r))}}[Ii](t,e,i){this[j]=!1,t?this[Ut](t):this[ki](e,i)&&this[zt]()}[H](){if(this[ht]&&typeof this[u]=="number"){let t=this[u];this[u]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}[Ut](t){this[j]=!0,this[H](),this.emit("error",t)}[ki](t,e){let i=!1;return this[ee]-=t,t>0&&(i=super.write(tthis[Ht](t,e))}[Ht](t,e){this[Me]&&this[tt]==="r+"&&t&&t.code==="ENOENT"?(this[tt]="w",this[at]()):t?this[Ut](t):(this[u]=e,this.emit("open",e),this[gt]||this[Ai]())}end(t,e){return t&&this.write(t,e),this[te]=!0,!this[gt]&&!this[Y].length&&typeof this[u]=="number"&&this[Pt](null,0),this}write(t,e){return typeof t=="string"&&(t=Buffer.from(t,e)),this[te]?(this.emit("error",new Error("write() after end()")),!1):this[u]===void 0||this[gt]||this[Y].length?(this[Y].push(t),this[ke]=!0,!1):(this[gt]=!0,this[ve](t),!0)}[ve](t){I.write(this[u],t,0,t.length,this[ot],(e,i)=>this[Pt](e,i))}[Pt](t,e){t?this[Ut](t):(this[ot]!==void 0&&typeof e=="number"&&(this[ot]+=e),this[Y].length?this[Ai]():(this[gt]=!1,this[te]&&!this[Ni]?(this[Ni]=!0,this[H](),this.emit("finish")):this[ke]&&(this[ke]=!1,this.emit("drain"))))}[Ai](){if(this[Y].length===0)this[te]&&this[Pt](null,0);else if(this[Y].length===1)this[ve](this[Y].pop());else{let t=this[Y];this[Y]=[],Jr(this[u],t,this[ot],(e,i)=>this[Pt](e,i))}}[H](){if(this[ht]&&typeof this[u]=="number"){let t=this[u];this[u]=void 0,I.close(t,e=>e?this.emit("error",e):this.emit("close"))}}},Wt=class extends et{[at](){let t;if(this[Me]&&this[tt]==="r+")try{t=I.openSync(this[U],this[tt],this[ie])}catch(e){if(e?.code==="ENOENT")return this[tt]="w",this[at]();throw e}else t=I.openSync(this[U],this[tt],this[ie]);this[Ht](null,t)}[H](){if(this[ht]&&typeof this[u]=="number"){let t=this[u];this[u]=void 0,I.closeSync(t),this.emit("close")}}[ve](t){let e=!0;try{this[Pt](null,I.writeSync(this[u],t,0,t.length,this[ot])),e=!1}finally{if(e)try{this[H]()}catch{}}}};import cr from"node:path";import Kt from"node:fs";import{dirname as Fn,parse as kn}from"path";var jr=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),Fs=s=>!!s.sync&&!!s.file,ks=s=>!s.sync&&!!s.file,vs=s=>!!s.sync&&!s.file,Ms=s=>!s.sync&&!s.file;var Bs=s=>!!s.file;var tn=s=>{let t=jr.get(s);return t||s},se=(s={})=>{if(!s)return{};let t={};for(let[e,i]of Object.entries(s)){let r=tn(e);t[r]=i}return t.chmod===void 0&&t.noChmod===!1&&(t.chmod=!0),delete t.noChmod,t};var K=(s,t,e,i,r)=>Object.assign((n=[],o,h)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(h=o,o=void 0),o=o?Array.from(o):[];let a=se(n);if(r?.(a,o),Fs(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return s(a,o)}else if(ks(a)){let l=t(a,o);return h?l.then(()=>h(),h):l}else if(vs(a)){if(typeof h=="function")throw new TypeError("callback not supported for sync tar functions");return e(a,o)}else if(Ms(a)){if(typeof h=="function")throw new TypeError("callback only supported with file option");return i(a,o)}throw new Error("impossible options??")},{syncFile:s,asyncFile:t,syncNoFile:e,asyncNoFile:i,validate:r});import{EventEmitter as Dn}from"events";import zi from"assert";import{Buffer as Ot}from"buffer";import*as Ps from"zlib";import en from"zlib";var sn=en.constants||{ZLIB_VERNUM:4736},M=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},sn));var rn=Ot.concat,zs=Object.getOwnPropertyDescriptor(Ot,"concat"),nn=s=>s,Bi=zs?.writable===!0||zs?.set!==void 0?s=>{Ot.concat=s?nn:rn}:s=>{},Tt=Symbol("_superWrite"),Gt=class extends Error{code;errno;constructor(t,e){super("zlib: "+t.message,{cause:t}),this.code=t.code,this.errno=t.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+t.message,Error.captureStackTrace(this,e??this.constructor)}get name(){return"ZlibError"}},Pi=Symbol("flushFlag"),re=class extends A{#t=!1;#i=!1;#s;#n;#r;#e;#o;get sawError(){return this.#t}get handle(){return this.#e}get flushFlag(){return this.#s}constructor(t,e){if(!t||typeof t!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(t),this.#s=t.flush??0,this.#n=t.finishFlush??0,this.#r=t.fullFlushFlag??0,typeof Ps[e]!="function")throw new TypeError("Compression method not supported: "+e);try{this.#e=new Ps[e](t)}catch(i){throw new Gt(i,this.constructor)}this.#o=i=>{this.#t||(this.#t=!0,this.close(),this.emit("error",i))},this.#e?.on("error",i=>this.#o(new Gt(i))),this.once("end",()=>this.close)}close(){this.#e&&(this.#e.close(),this.#e=void 0,this.emit("close"))}reset(){if(!this.#t)return zi(this.#e,"zlib binding closed"),this.#e.reset?.()}flush(t){this.ended||(typeof t!="number"&&(t=this.#r),this.write(Object.assign(Ot.alloc(0),{[Pi]:t})))}end(t,e,i){return typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&(e?this.write(t,e):this.write(t)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Tt](t){return super.write(t)}write(t,e,i){if(typeof e=="function"&&(i=e,e="utf8"),typeof t=="string"&&(t=Ot.from(t,e)),this.#t)return;zi(this.#e,"zlib binding closed");let r=this.#e._handle,n=r.close;r.close=()=>{};let o=this.#e.close;this.#e.close=()=>{},Bi(!0);let h;try{let l=typeof t[Pi]=="number"?t[Pi]:this.#s;h=this.#e._processChunk(t,l),Bi(!1)}catch(l){Bi(!1),this.#o(new Gt(l,this.write))}finally{this.#e&&(this.#e._handle=r,r.close=n,this.#e.close=o,this.#e.removeAllListeners("error"))}this.#e&&this.#e.on("error",l=>this.#o(new Gt(l,this.write)));let a;if(h)if(Array.isArray(h)&&h.length>0){let l=h[0];a=this[Tt](Ot.from(l));for(let c=1;c{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(t,e)}finally{this.handle.flush=i}this.handle&&(this.#t=t,this.#i=e)}}}};var ze=class extends Pe{#t;constructor(t){super(t,"Gzip"),this.#t=t&&!!t.portable}[Tt](t){return this.#t?(this.#t=!1,t[9]=255,super[Tt](t)):super[Tt](t)}};var Ue=class extends Pe{constructor(t){super(t,"Unzip")}},He=class extends re{constructor(t,e){t=t||{},t.flush=t.flush||M.BROTLI_OPERATION_PROCESS,t.finishFlush=t.finishFlush||M.BROTLI_OPERATION_FINISH,t.fullFlushFlag=M.BROTLI_OPERATION_FLUSH,super(t,e)}},We=class extends He{constructor(t){super(t,"BrotliCompress")}},Ge=class extends He{constructor(t){super(t,"BrotliDecompress")}},Ze=class extends re{constructor(t,e){t=t||{},t.flush=t.flush||M.ZSTD_e_continue,t.finishFlush=t.finishFlush||M.ZSTD_e_end,t.fullFlushFlag=M.ZSTD_e_flush,super(t,e)}},Ye=class extends Ze{constructor(t){super(t,"ZstdCompress")}},Ke=class extends Ze{constructor(t){super(t,"ZstdDecompress")}};import{posix as Zt}from"node:path";var Us=(s,t)=>{if(Number.isSafeInteger(s))s<0?an(s,t):hn(s,t);else throw Error("cannot encode number outside of javascript safe integer range");return t},hn=(s,t)=>{t[0]=128;for(var e=t.length;e>1;e--)t[e-1]=s&255,s=Math.floor(s/256)},an=(s,t)=>{t[0]=255;var e=!1;s=s*-1;for(var i=t.length;i>1;i--){var r=s&255;s=Math.floor(s/256),e?t[i-1]=Ws(r):r===0?t[i-1]=0:(e=!0,t[i-1]=Gs(r))}},Hs=s=>{let t=s[0],e=t===128?cn(s.subarray(1,s.length)):t===255?ln(s):null;if(e===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(e))throw Error("parsed number outside of javascript safe integer range");return e},ln=s=>{for(var t=s.length,e=0,i=!1,r=t-1;r>-1;r--){var n=Number(s[r]),o;i?o=Ws(n):n===0?o=n:(i=!0,o=Gs(n)),o!==0&&(e-=o*Math.pow(256,t-r-1))}return e},cn=s=>{for(var t=s.length,e=0,i=t-1;i>-1;i--){var r=Number(s[i]);r!==0&&(e+=r*Math.pow(256,t-i-1))}return e},Ws=s=>(255^s)&255,Gs=s=>(255^s)+1&255;var Hi={};Ur(Hi,{code:()=>Ve,isCode:()=>ne,isName:()=>dn,name:()=>oe,normalFsTypes:()=>Ui});var ne=s=>oe.has(s),dn=s=>Ve.has(s),Ui=new Set(["0","","1","2","3","4","5","6","7","D"]),oe=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]),Ve=new Map(Array.from(oe).map(s=>[s[1],s[0]]));var mn=s=>s===void 0||s<0?void 0:s,F=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#t="Unsupported";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(t,e=0,i,r){Buffer.isBuffer(t)?this.decode(t,e||0,i,r):t&&this.#i(t)}decode(t,e,i,r){if(e||(e=0),!t||!(t.length>=e+512))throw new Error("need 512 bytes for header");let n=xt(t,e+156,1),o=Ui.has(n),h=o?i:void 0,a=o?r:void 0;if(this.path=h?.path??xt(t,e,100),this.mode=h?.mode??a?.mode??lt(t,e+100,8),this.uid=h?.uid??a?.uid??lt(t,e+108,8),this.gid=h?.gid??a?.gid??lt(t,e+116,8),this.size=mn(h?.size??a?.size??lt(t,e+124,12)),this.mtime=h?.mtime??a?.mtime??Wi(t,e+136,12),this.cksum=lt(t,e+148,12),a&&this.#i(a,!0),h&&this.#i(h),ne(n)&&(this.#t=n||"0"),this.#t==="0"&&this.path.slice(-1)==="/"&&(this.#t="5"),this.#t==="5"&&(this.size=0),this.linkpath=xt(t,e+157,100),t.subarray(e+257,e+265).toString()==="ustar\x0000")if(this.uname=h?.uname??a?.uname??xt(t,e+265,32),this.gname=h?.gname??a?.gname??xt(t,e+297,32),this.devmaj=h?.devmaj??a?.devmaj??lt(t,e+329,8)??0,this.devmin=h?.devmin??a?.devmin??lt(t,e+337,8)??0,t[e+475]!==0){let c=xt(t,e+345,155);this.path=c+"/"+this.path}else{let c=xt(t,e+345,130);c&&(this.path=c+"/"+this.path),this.atime=i?.atime??r?.atime??Wi(t,e+476,12),this.ctime=i?.ctime??r?.ctime??Wi(t,e+488,12)}let l=256;for(let c=e;c!(r==null||i==="size"&&Number(r)<0||i==="path"&&e||i==="linkpath"&&e||i==="global"))))}encode(t,e=0){if(t||(t=this.block=Buffer.alloc(512)),this.#t==="Unsupported"&&(this.#t="0"),!(t.length>=e+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=un(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=Lt(t,e,100,n)||this.needPax,this.needPax=ct(t,e+100,8,this.mode)||this.needPax,this.needPax=ct(t,e+108,8,this.uid)||this.needPax,this.needPax=ct(t,e+116,8,this.gid)||this.needPax,this.needPax=ct(t,e+124,12,this.size)||this.needPax,this.needPax=Gi(t,e+136,12,this.mtime)||this.needPax,t[e+156]=Number(this.#t.codePointAt(0)),this.needPax=Lt(t,e+157,100,this.linkpath)||this.needPax,t.write("ustar\x0000",e+257,8),this.needPax=Lt(t,e+265,32,this.uname)||this.needPax,this.needPax=Lt(t,e+297,32,this.gname)||this.needPax,this.needPax=ct(t,e+329,8,this.devmaj)||this.needPax,this.needPax=ct(t,e+337,8,this.devmin)||this.needPax,this.needPax=Lt(t,e+345,i,o)||this.needPax,t[e+475]!==0?this.needPax=Lt(t,e+345,155,o)||this.needPax:(this.needPax=Lt(t,e+345,130,o)||this.needPax,this.needPax=Gi(t,e+476,12,this.atime)||this.needPax,this.needPax=Gi(t,e+488,12,this.ctime)||this.needPax);let h=256;for(let a=e;a{let i=s,r="",n,o=Zt.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Zt.dirname(i),i=Zt.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=t?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=t?n=[i.slice(0,99),r,!0]:(i=Zt.join(Zt.basename(r),i),r=Zt.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},xt=(s,t,e)=>s.subarray(t,t+e).toString("utf8").replace(/\0.*/,""),Wi=(s,t,e)=>pn(lt(s,t,e)),pn=s=>s===void 0?void 0:new Date(s*1e3),lt=(s,t,e)=>Number(s[t])&128?Hs(s.subarray(t,t+e)):wn(s,t,e),En=s=>isNaN(s)?void 0:s,wn=(s,t,e)=>En(parseInt(s.subarray(t,t+e).toString("utf8").replace(/\0.*$/,"").trim(),8)),Sn={12:8589934591,8:2097151},ct=(s,t,e,i)=>i===void 0?!1:i>Sn[e]||i<0?(Us(i,s.subarray(t,t+e)),!0):(yn(s,t,e,i),!1),yn=(s,t,e,i)=>s.write(Rn(i,e),t,e,"ascii"),Rn=(s,t)=>gn(Math.floor(s).toString(8),t),gn=(s,t)=>(s.length===t-1?s:new Array(t-s.length-1).join("0")+s+" ")+"\0",Gi=(s,t,e,i)=>i===void 0?!1:ct(s,t,e,i.getTime()/1e3),bn=new Array(156).join("\0"),Lt=(s,t,e,i)=>i===void 0?!1:(s.write(i+bn,t,e,"utf8"),i.length!==Buffer.byteLength(i)||i.length>e);import{basename as _n}from"node:path";var ft=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(t,e=!1){this.atime=t.atime,this.charset=t.charset,this.comment=t.comment,this.ctime=t.ctime,this.dev=t.dev,this.gid=t.gid,this.global=e,this.gname=t.gname,this.ino=t.ino,this.linkpath=t.linkpath,this.mtime=t.mtime,this.nlink=t.nlink,this.path=t.path,this.size=t.size,this.uid=t.uid,this.uname=t.uname}encode(){let t=this.encodeBody();if(t==="")return Buffer.allocUnsafe(0);let e=Buffer.byteLength(t),i=512*Math.ceil(1+e/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new F({path:("PaxHeader/"+_n(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:e,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(t,512,e,"utf8");for(let n=e+512;n=Math.pow(10,o)&&(o+=1),o+n+r}static parse(t,e,i=!1){return new s(On(Tn(t),e),i)}},On=(s,t)=>t?Object.assign({},t,s):s,Tn=s=>s.replace(/\n$/,"").split(` +`).reduce(xn,Object.create(null)),xn=(s,t)=>{let e=parseInt(t,10);if(e!==Buffer.byteLength(t)+1)return s;t=t.slice((e+" ").length);let i=t.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=").replace(/\0.*/,"");switch(n){case"path":case"linkpath":case"type":case"charset":case"comment":case"gname":case"uname":s[n]=o;break;case"ctime":case"atime":case"mtime":s[n]=new Date(Number(o)*1e3);break;case"size":let h=+o;h>=0&&(s[n]=h);break;case"gid":case"uid":case"dev":case"ino":case"nlink":case"mode":s[n]=+o;break}return s};var Ln=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,f=Ln!=="win32"?s=>String(s):s=>String(s).replaceAll(/\\/g,"/");var $e=class extends A{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(t,e,i){switch(super({}),this.pause(),this.extended=e,this.globalExtended=i,this.header=t,this.remain=t.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=t.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!t.path)throw new Error("no path provided for tar.ReadEntry");this.path=f(t.path),this.mode=t.mode,this.mode&&(this.mode=this.mode&4095),this.uid=t.uid,this.gid=t.gid,this.uname=t.uname,this.gname=t.gname,this.size=this.remain,this.mtime=t.mtime,this.atime=t.atime,this.ctime=t.ctime,this.linkpath=t.linkpath?f(t.linkpath):void 0,this.uname=t.uname,this.gname=t.gname,e&&this.#t(e),i&&this.#t(i,!0)}write(t){let e=t.length;if(e>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-e),this.blockRemain=Math.max(0,r-e),this.ignore?!0:i>=e?super.write(t):super.write(t.subarray(0,i))}#t(t,e=!1){t.path&&(t.path=f(t.path)),t.linkpath&&(t.linkpath=f(t.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(t).filter(([i,r])=>!(r==null||i==="path"&&e))))}};var Dt=(s,t,e,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=e instanceof Error&&e.code||t,i.tarCode=t,!s.strict&&i.recoverable!==!1?(e instanceof Error&&(i=Object.assign(e,i),e=e.message),s.emit("warn",t,e,i)):e instanceof Error?s.emit("error",Object.assign(e,i)):s.emit("error",Object.assign(new Error(`${t}: ${e}`),i))};var Nn=1024*1024,Xi=Buffer.from([31,139]),qi=Buffer.from([40,181,47,253]),An=Math.max(Xi.length,qi.length),B=Symbol("state"),Nt=Symbol("writeEntry"),it=Symbol("readEntry"),Zi=Symbol("nextEntry"),Zs=Symbol("processEntry"),V=Symbol("extendedHeader"),he=Symbol("globalExtendedHeader"),dt=Symbol("meta"),Ys=Symbol("emitMeta"),p=Symbol("buffer"),st=Symbol("queue"),mt=Symbol("ended"),Yi=Symbol("emittedEnd"),At=Symbol("emit"),y=Symbol("unzip"),Xe=Symbol("consumeChunk"),qe=Symbol("consumeChunkSub"),Ki=Symbol("consumeBody"),Ks=Symbol("consumeMeta"),Vs=Symbol("consumeHeader"),ae=Symbol("consuming"),Vi=Symbol("bufferConcat"),Qe=Symbol("maybeEnd"),Yt=Symbol("writing"),$=Symbol("aborted"),Je=Symbol("onDone"),It=Symbol("sawValidEntry"),je=Symbol("sawNullBlock"),ti=Symbol("sawEOF"),$s=Symbol("closeStream"),In=1e3,le=Symbol("compressedBytesRead"),$i=Symbol("decompressedBytesRead"),Xs=Symbol("checkDecompressionRatio"),Cn=()=>!0,rt=class extends Dn{file;strict;maxMetaEntrySize;filter;brotli;zstd;maxDecompressionRatio;writable=!0;readable=!1;[st]=[];[p];[it];[Nt];[B]="begin";[dt]="";[V];[he];[mt]=!1;[y];[$]=!1;[It];[je]=!1;[ti]=!1;[Yt]=!1;[ae]=!1;[Yi]=!1;[le]=0;[$i]=0;constructor(t={}){super(),this.file=t.file||"",this.on(Je,()=>{(this[B]==="begin"||this[It]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),t.ondone?this.on(Je,t.ondone):this.on(Je,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!t.strict,this.maxDecompressionRatio=typeof t.maxDecompressionRatio=="number"?t.maxDecompressionRatio:In,this.maxMetaEntrySize=t.maxMetaEntrySize||Nn,this.filter=typeof t.filter=="function"?t.filter:Cn;let e=t.file&&(t.file.endsWith(".tar.br")||t.file.endsWith(".tbr"));this.brotli=!(t.gzip||t.zstd)&&t.brotli!==void 0?t.brotli:e?void 0:!1;let i=t.file&&(t.file.endsWith(".tar.zst")||t.file.endsWith(".tzst"));this.zstd=!(t.gzip||t.brotli)&&t.zstd!==void 0?t.zstd:i?!0:void 0,this.on("end",()=>this[$s]()),typeof t.onwarn=="function"&&this.on("warn",t.onwarn),typeof t.onReadEntry=="function"&&this.on("entry",t.onReadEntry)}warn(t,e,i={}){Dt(this,t,e,i)}[Vs](t,e){this[It]===void 0&&(this[It]=!1);let i;try{i=new F(t,e,this[V],this[he])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[je]?(this[ti]=!0,this[B]==="begin"&&(this[B]="header"),this[At]("eof")):(this[je]=!0,this[At]("nullBlock"));else if(this[je]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Nt]=new $e(i,this[V],this[he]);if(!this[It])if(n.remain){let o=()=>{n.invalid||(this[It]=!0)};n.on("end",o)}else this[It]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[At]("ignoredEntry",n),this[B]="ignore",n.resume()):n.size>0&&(this[dt]="",n.on("data",o=>this[dt]+=o),this[B]="meta"):(this[V]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[At]("ignoredEntry",n),this[B]=n.remain?"ignore":"header",n.resume()):(n.remain?this[B]="body":(this[B]="header",n.end()),this[it]?this[st].push(n):(this[st].push(n),this[Zi]())))}}}[$s](){queueMicrotask(()=>this.emit("close"))}[Zs](t){let e=!0;if(!t)this[it]=void 0,e=!1;else if(Array.isArray(t)){let[i,...r]=t;this.emit(i,...r)}else this[it]=t,this.emit("entry",t),t.emittedEnd||(t.on("end",()=>this[Zi]()),e=!1);return e}[Zi](){do;while(this[Zs](this[st].shift()));if(this[st].length===0){let t=this[it];!t||t.flowing||t.size===t.remain?this[Yt]||this.emit("drain"):t.once("drain",()=>this.emit("drain"))}}[Ki](t,e){let i=this[Nt];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=t.length&&e===0?t:t.subarray(e,e+r);return i.write(n),i.blockRemain||(this[B]="header",this[Nt]=void 0,i.end()),n.length}[Ks](t,e){let i=this[Nt],r=this[Ki](t,e);return!this[Nt]&&i&&this[Ys](i),r}[At](t,e,i){this[st].length===0&&!this[it]?this.emit(t,e,i):this[st].push([t,e,i])}[Ys](t){switch(this[At]("meta",this[dt]),t.type){case"ExtendedHeader":case"OldExtendedHeader":this[V]=ft.parse(this[dt],this[V],!1);break;case"GlobalExtendedHeader":this[he]=ft.parse(this[dt],this[he],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let e=this[V]??Object.create(null);this[V]=e,e.path=this[dt].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let e=this[V]||Object.create(null);this[V]=e,e.linkpath=this[dt].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+t.type)}}abort(t){this[$]||(this[$]=!0,this.emit("abort",t),this.warn("TAR_ABORT",t,{recoverable:!1}))}[Xs](t){this[$i]+=t.length;let e=this[$i]/this[le];return e>this.maxDecompressionRatio?(this.abort(new Error(`max decompression ratio exceeded: ${e.toFixed(2)} > ${this.maxDecompressionRatio}`)),!1):!0}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this[$])return i?.(),!1;if((this[y]===void 0||this.brotli===void 0&&this[y]===!1)&&t){if(this[p]&&(t=Buffer.concat([this[p],t]),this[p]=void 0),t.length{this[Xs](c)&&this[Xe](c)}),this[y].on("error",c=>{this[$]||this.abort(c)}),this[y].on("end",()=>{this[mt]=!0,this[Xe]()}),this[Yt]=!0,this[le]+=t.length;let l=!!this[y][a?"end":"write"](t);return this[Yt]=!1,i?.(),l}}this[Yt]=!0,this[y]?(this[le]+=t.length,this[y].write(t)):this[Xe](t),this[Yt]=!1;let n=this[st].length>0?!1:this[it]?this[it].flowing:!0;return!n&&this[st].length===0&&this[it]?.once("drain",()=>this.emit("drain")),i?.(),n}[Vi](t){t&&!this[$]&&(this[p]=this[p]?Buffer.concat([this[p],t]):t)}[Qe](){if(this[mt]&&!this[Yi]&&!this[$]&&!this[ae]){this[Yi]=!0;let t=this[Nt];if(t?.blockRemain){let e=this[p]?this[p].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${t.blockRemain} more bytes, only ${e} available)`,{entry:t}),this[p]&&t.write(this[p]),t.end()}this[At](Je)}}[Xe](t){if(this[ae]&&t)this[Vi](t);else if(!t&&!this[p])this[Qe]();else if(t){if(this[ae]=!0,this[p]){this[Vi](t);let e=this[p];this[p]=void 0,this[qe](e)}else this[qe](t);for(;this[p]&&this[p]?.length>=512&&!this[$]&&!this[ti];){let e=this[p];this[p]=void 0,this[qe](e)}this[ae]=!1}(!this[p]||this[mt])&&this[Qe]()}[qe](t){let e=0,i=t.length;for(;e+512<=i&&!this[$]&&!this[ti];)switch(this[B]){case"begin":case"header":this[Vs](t,e),e+=512;break;case"ignore":case"body":e+=this[Ki](t,e);break;case"meta":e+=this[Ks](t,e);break;default:throw new Error("invalid state: "+this[B])}e{let t=s.length-1,e=-1;for(;t>-1&&s.charAt(t)==="/";)e=t,t--;return e===-1?s:s.slice(0,e)};var vn=s=>{let t=s.onReadEntry;s.onReadEntry=t?e=>{t(e),e.resume()}:e=>e.resume()},Qi=(s,t)=>{let e=new Map(t.map(n=>[ut(n),!0])),i=s.filter,r=(n,o="")=>{let h=o||kn(n).root||".",a;if(n===h)a=!1;else{let l=e.get(n);a=l!==void 0?l:r(Fn(n),h)}return e.set(n,a),a};s.filter=i?(n,o)=>i(n,o)&&r(ut(n)):n=>r(ut(n))},Mn=s=>{let t=new rt(s),e=s.file,i;try{i=Kt.openSync(e,"r");let r=Kt.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size{let e=new rt(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{e.on("error",h),e.on("end",o),Kt.stat(r,(a,l)=>{if(a)h(a);else{let c=new _t(r,{readSize:i,size:l.size});c.on("error",h),c.pipe(e)}})})},Ct=K(Mn,Bn,s=>new rt(s),s=>new rt(s),(s,t)=>{t?.length&&Qi(s,t),s.noResume||vn(s)});import ui from"fs";import X from"fs";import js from"path";var Ji=(s,t,e)=>(s&=4095,e&&(s=(s|384)&-19),t&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);import{win32 as Pn}from"node:path";var{isAbsolute:zn,parse:qs}=Pn,ce=s=>{let t="",e=qs(s);for(;zn(s)||e.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":e.root;s=s.slice(i.length),t+=i,e=qs(s)}return[t,s]};var ei=["|","<",">","?",":"],ji=ei.map(s=>String.fromCodePoint(61440+Number(s.codePointAt(0)))),Un=new Map(ei.map((s,t)=>[s,ji[t]])),Hn=new Map(ji.map((s,t)=>[s,ei[t]])),ts=s=>ei.reduce((t,e)=>t.split(e).join(Un.get(e)),s),Qs=s=>ji.reduce((t,e)=>t.split(e).join(Hn.get(e)),s);var rr=(s,t)=>t?(s=f(s).replace(/^\.(\/|$)/,""),ut(t)+"/"+s):f(s),Wn=16*1024*1024,tr=Symbol("process"),er=Symbol("file"),ir=Symbol("directory"),is=Symbol("symlink"),sr=Symbol("hardlink"),fe=Symbol("header"),ii=Symbol("read"),ss=Symbol("lstat"),si=Symbol("onlstat"),rs=Symbol("onread"),ns=Symbol("onreadlink"),os=Symbol("openfile"),hs=Symbol("onopenfile"),pt=Symbol("close"),ri=Symbol("mode"),as=Symbol("awaitDrain"),es=Symbol("ondrain"),q=Symbol("prefix"),de=class extends A{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#t=!1;constructor(t,e={}){let i=se(e);super(),this.path=f(t),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||Wn,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=f(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?f(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,h]=ce(this.path);o&&typeof h=="string"&&(this.path=h,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=Qs(this.path.replaceAll(/\\/g,"/")),t=t.replaceAll(/\\/g,"/")),this.absolute=f(i.absolute||js.resolve(this.cwd,t)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[si](n):this[ss]()}warn(t,e,i={}){return Dt(this,t,e,i)}emit(t,...e){return t==="error"&&(this.#t=!0),super.emit(t,...e)}[ss](){X.lstat(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[si](e)})}[si](t){this.statCache.set(this.absolute,t),this.stat=t,t.isFile()||(t.size=0),this.type=Gn(t),this.emit("stat",t),this[tr]()}[tr](){switch(this.type){case"File":return this[er]();case"Directory":return this[ir]();case"SymbolicLink":return this[is]();default:return this.end()}}[ri](t){return Ji(t,this.type==="Directory",this.portable)}[q](t){return rr(t,this.prefix)}[fe](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new F({path:this[q](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[q](this.linkpath):this.linkpath,mode:this[ri](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new ft({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[q](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[q](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let t=this.header?.block;if(!t)throw new Error("failed to encode header");super.write(t)}[ir](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[fe](),this.end()}[is](){X.readlink(this.absolute,(t,e)=>{if(t)return this.emit("error",t);this[ns](e)})}[ns](t){this.linkpath=f(t),this[fe](),this.end()}[sr](t){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=f(js.relative(this.cwd,t)),this.stat.size=0,this[fe](),this.end()}[er](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let t=`${this.stat.dev}:${this.stat.ino}`,e=this.linkCache.get(t);if(e?.indexOf(this.cwd)===0)return this[sr](e);this.linkCache.set(t,this.absolute)}if(this[fe](),this.stat.size===0)return this.end();this[os]()}[os](){X.open(this.absolute,"r",(t,e)=>{if(t)return this.emit("error",t);this[hs](e)})}[hs](t){if(this.fd=t,this.#t)return this[pt]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let e=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(e),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[ii]()}[ii](){let{fd:t,buf:e,offset:i,length:r,pos:n}=this;if(t===void 0||e===void 0)throw new Error("cannot read file without first opening");X.read(t,e,i,r,n,(o,h)=>{if(o)return this[pt](()=>this.emit("error",o));this[rs](h)})}[pt](t=()=>{}){this.fd!==void 0&&X.close(this.fd,t)}[rs](t){if(t<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(t>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[pt](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(t===this.remain)for(let r=t;rthis[es]())}[as](t){this.once("drain",t)}write(t,e,i){if(typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8")),this.blockRemaint?this.emit("error",t):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[ii]()}},ni=class extends de{sync=!0;[ss](){this[si](X.lstatSync(this.absolute))}[is](){this[ns](X.readlinkSync(this.absolute))}[os](){this[hs](X.openSync(this.absolute,"r"))}[ii](){let t=!0;try{let{fd:e,buf:i,offset:r,length:n,pos:o}=this;if(e===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let h=X.readSync(e,i,r,n,o);this[rs](h),t=!1}finally{if(t)try{this[pt](()=>{})}catch{}}}[as](t){t()}[pt](t=()=>{}){this.fd!==void 0&&X.closeSync(this.fd),t()}},oi=class extends A{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(t,e,i={}){return Dt(this,t,e,i)}constructor(t,e={}){let i=se(e);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=t;let{type:r}=t;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=f(t.path),this.mode=t.mode!==void 0?this[ri](t.mode):void 0,this.uid=this.portable?void 0:t.uid,this.gid=this.portable?void 0:t.gid,this.uname=this.portable?void 0:t.uname,this.gname=this.portable?void 0:t.gname,this.size=t.size,this.mtime=this.noMtime?void 0:i.mtime||t.mtime,this.atime=this.portable?void 0:t.atime,this.ctime=this.portable?void 0:t.ctime,this.linkpath=t.linkpath!==void 0?f(t.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[h,a]=ce(this.path);h&&typeof a=="string"&&(this.path=a,n=h)}this.remain=t.size,this.blockRemain=t.startBlockSize,this.onWriteEntry?.(this),this.header=new F({path:this[q](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[q](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new ft({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[q](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[q](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),t.pipe(this)}[q](t){return rr(t,this.prefix)}[ri](t){return Ji(t,this.type==="Directory",this.portable)}write(t,e,i){typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,typeof e=="string"?e:"utf8"));let r=t.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(t,i)}end(t,e,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof t=="function"&&(i=t,e=void 0,t=void 0),typeof e=="function"&&(i=e,e=void 0),typeof t=="string"&&(t=Buffer.from(t,e??"utf8")),i&&this.once("finish",i),t?super.end(t,i):super.end(i),this}},Gn=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported";var hi=class s{tail;head;length=0;static create(t=[]){return new s(t)}constructor(t=[]){for(let e of t)this.push(e)}*[Symbol.iterator](){for(let t=this.head;t;t=t.next)yield t.value}removeNode(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");let e=t.next,i=t.prev;return e&&(e.prev=i),i&&(i.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=i),this.length--,t.next=void 0,t.prev=void 0,t.list=void 0,e}unshiftNode(t){if(t===this.head)return;t.list&&t.list.removeNode(t);let e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}pushNode(t){if(t===this.tail)return;t.list&&t.list.removeNode(t);let e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}push(...t){for(let e=0,i=t.length;e1)i=e;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=t(i,r.value,n),r=r.next;return i}reduceReverse(t,e){let i,r=this.tail;if(arguments.length>1)i=e;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=t(i,r.value,n),r=r.prev;return i}toArray(){let t=new Array(this.length);for(let e=0,i=this.head;i;e++)t[e]=i.value,i=i.next;return t}toArrayReverse(){let t=new Array(this.length);for(let e=0,i=this.tail;i;e++)t[e]=i.value,i=i.prev;return t}slice(t=0,e=this.length){e<0&&(e+=this.length),t<0&&(t+=this.length);let i=new s;if(ethis.length&&(e=this.length);let r=this.head,n=0;for(n=0;r&&nthis.length&&(e=this.length);let r=this.length,n=this.tail;for(;n&&r>e;r--)n=n.prev;for(;n&&r>t;r--,n=n.prev)i.push(n.value);return i}splice(t,e=0,...i){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);let r=this.head;for(let o=0;r&&o1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(t.gzip&&(typeof t.gzip!="object"&&(t.gzip={}),this.portable&&(t.gzip.portable=!0),this.zip=new ze(t.gzip)),t.brotli&&(typeof t.brotli!="object"&&(t.brotli={}),this.zip=new We(t.brotli)),t.zstd&&(typeof t.zstd!="object"&&(t.zstd={}),this.zip=new Ye(t.zstd)),!this.zip)throw new Error("impossible");let e=this.zip;e.on("data",i=>super.write(i)),e.on("end",()=>super.end()),e.on("drain",()=>this[fs]()),this.on("resume",()=>e.resume())}else this.on("drain",this[fs]);this.noDirRecurse=!!t.noDirRecurse,this.follow=!!t.follow,this.noMtime=!!t.noMtime,t.mtime&&(this.mtime=t.mtime),this.filter=typeof t.filter=="function"?t.filter:()=>!0,this[W]=new hi,this[G]=0,this.jobs=Number(t.jobs)||4,this[Ee]=!1,this[ue]=!1}[lr](t){return super.write(t)}add(t){return this.write(t),this}end(t,e,i){return typeof t=="function"&&(i=t,t=void 0),typeof e=="function"&&(i=e,e=void 0),t&&this.add(t),this[ue]=!0,this[Ft](),i&&i(),this}write(t){if(this[ue])throw new Error("write after end");return typeof t=="string"?this[ci](t):this[or](t),this.flowing}[or](t){let e=f(ar.resolve(this.cwd,t.path));if(!this.filter(t.path,t))t.resume();else{let i=new pi(t.path,e);i.entry=new oi(t,this[cs](i)),i.entry.on("end",()=>this[ls](i)),this[G]+=1,this[W].push(i)}this[Ft]()}[ci](t){let e=f(ar.resolve(this.cwd,t));this[W].push(new pi(t,e)),this[Ft]()}[ds](t){t.pending=!0,this[G]+=1;let e=this.follow?"stat":"lstat";ui[e](t.absolute,(i,r)=>{t.pending=!1,this[G]-=1,i?this.emit("error",i):this[li](t,r)})}[li](t,e){if(this.statCache.set(t.absolute,e),t.stat=e,!this.filter(t.path,e))t.ignore=!0;else if(e.isFile()&&e.nlink>1&&!this.linkCache.get(`${e.dev}:${e.ino}`)&&!this.sync)if(t===this[Et])this[ai](t);else{let i=`${e.dev}:${e.ino}`,r=this[pe].get(i);r?r.push(t):this[pe].set(i,[t]),t.pendingLink=!0,t.pending=!0}this[Ft]()}[ms](t){t.pending=!0,this[G]+=1,ui.readdir(t.absolute,(e,i)=>{if(t.pending=!1,this[G]-=1,e)return this.emit("error",e);this[fi](t,i)})}[fi](t,e){this.readdirCache.set(t.absolute,e),t.readdir=e,this[Ft]()}[Ft](){if(!this[Ee]){this[Ee]=!0;for(let t=this[W].head;t&&this[G]1){let i=`${e.dev}:${e.ino}`,r=this[pe].get(i);if(r){this[pe].delete(i);for(let n of r)n.pending=!1,this[ai](n)}}this[Ft]()}[ai](t){if(t.pending&&t.pendingLink&&t===this[Et]&&(t.pending=!1,t.pendingLink=!1),!t.pending){if(t.entry){t===this[Et]&&!t.piped&&this[di](t);return}if(!t.stat){let e=this.statCache.get(t.absolute);e?this[li](t,e):this[ds](t)}if(t.stat&&!t.ignore){if(!this.noDirRecurse&&t.stat.isDirectory()&&!t.readdir){let e=this.readdirCache.get(t.absolute);if(e?this[fi](t,e):this[ms](t),!t.readdir)return}if(t.entry=this[hr](t),!t.entry){t.ignore=!0;return}t===this[Et]&&!t.piped&&this[di](t)}}}[cs](t){return{onwarn:(e,i,r)=>this.warn(e,i,r),noPax:this.noPax,cwd:this.cwd,absolute:t.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[hr](t){this[G]+=1;try{return new this[mi](t.path,this[cs](t)).on("end",()=>this[ls](t)).on("error",i=>this.emit("error",i))}catch(e){this.emit("error",e)}}[fs](){this[Et]&&this[Et].entry&&this[Et].entry.resume()}[di](t){t.piped=!0,t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[ci](o+r)});let e=t.entry,i=this.zip;if(!e)throw new Error("cannot pipe without source");i?e.on("data",r=>{i.write(r)||e.pause()}):e.on("data",r=>{super.write(r)||e.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(t,e,i={}){Dt(this,t,e,i)}},kt=class extends wt{sync=!0;constructor(t){super(t),this[mi]=ni}pause(){}resume(){}[ds](t){let e=this.follow?"statSync":"lstatSync";this[li](t,ui[e](t.absolute))}[ms](t){this[fi](t,ui.readdirSync(t.absolute))}[di](t){let e=t.entry,i=this.zip;if(t.readdir&&t.readdir.forEach(r=>{let n=t.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[ci](o+r)}),!e)throw new Error("Cannot pipe without source");i?e.on("data",r=>{i.write(r)}):e.on("data",r=>{super[lr](r)})}};var Vn=(s,t)=>{let e=new kt(s),i=new Wt(s.file,{mode:s.mode||438});e.pipe(i),fr(e,t)},$n=(s,t)=>{let e=new wt(s),i=new et(s.file,{mode:s.mode||438});e.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),e.on("error",o)});return dr(e,t).catch(n=>e.emit("error",n)),r},fr=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?Ct({file:cr.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},dr=async(s,t)=>{for(let e of t)e.charAt(0)==="@"?await Ct({file:cr.resolve(String(s.cwd),e.slice(1)),noResume:!0,onReadEntry:i=>{s.add(i)}}):s.add(e);s.end()},Xn=(s,t)=>{let e=new kt(s);return fr(e,t),e},qn=(s,t)=>{let e=new wt(s);return dr(e,t).catch(i=>e.emit("error",i)),e},Qn=K(Vn,$n,Xn,qn,(s,t)=>{if(!t?.length)throw new TypeError("no paths specified to add to archive")});import Br from"node:fs";import co from"node:assert";import{randomBytes as Mr}from"node:crypto";import m from"node:fs";import R from"node:path";import pr from"fs";var Jn=process.env.__FAKE_PLATFORM__||process.platform,Er=Jn==="win32",{O_CREAT:wr,O_NOFOLLOW:mr,O_TRUNC:Sr,O_WRONLY:yr}=pr.constants,Rr=Number(process.env.__FAKE_FS_O_FILENAME__)||pr.constants.UV_FS_O_FILEMAP||0,jn=Er&&!!Rr,to=512*1024,eo=Rr|Sr|wr|yr,ur=!Er&&typeof mr=="number"?mr|Sr|wr|yr:null,us=ur!==null?()=>ur:jn?s=>s"w";import wi from"node:fs";import we from"node:path";var ps=(s,t,e)=>{try{return wi.lchownSync(s,t,e)}catch(i){if(i?.code!=="ENOENT")throw i}},Ei=(s,t,e,i)=>{wi.lchown(s,t,e,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},io=(s,t,e,i,r)=>{if(t.isDirectory())Es(we.resolve(s,t.name),e,i,n=>{if(n)return r(n);let o=we.resolve(s,t.name);Ei(o,e,i,r)});else{let n=we.resolve(s,t.name);Ei(n,e,i,r)}},Es=(s,t,e,i)=>{wi.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return Ei(s,t,e,i);let o=n.length,h=null,a=l=>{if(!h){if(l)return i(h=l);if(--o===0)return Ei(s,t,e,i)}};for(let l of n)io(s,l,t,e,a)})},so=(s,t,e,i)=>{t.isDirectory()&&ws(we.resolve(s,t.name),e,i),ps(we.resolve(s,t.name),e,i)},ws=(s,t,e)=>{let i;try{i=wi.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return ps(s,t,e);throw n}for(let r of i)so(s,r,t,e);return ps(s,t,e)};import k from"node:fs";import ro from"node:fs/promises";import Si from"node:path";var Se=class extends Error{path;code;syscall="chdir";constructor(t,e){super(`${e}: Cannot cd into '${t}'`),this.path=t,this.code=e}get name(){return"CwdError"}};var St=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(t,e){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=t,this.path=e}get name(){return"SymlinkError"}};var no=(s,t)=>{k.stat(s,(e,i)=>{(e||!i.isDirectory())&&(e=new Se(s,e?.code||"ENOTDIR")),t(e)})},gr=(s,t,e)=>{s=f(s);let i=t.umask??18,r=t.mode|448,n=(r&i)!==0,o=t.uid,h=t.gid,a=typeof o=="number"&&typeof h=="number"&&(o!==t.processUid||h!==t.processGid),l=t.preserve,c=t.unlink,d=f(t.cwd),S=(E,x)=>{E?e(E):x&&a?Es(x,o,h,Le=>S(Le)):n?k.chmod(s,r,e):e()};if(s===d)return no(s,S);if(l)return ro.mkdir(s,{mode:r,recursive:!0}).then(E=>S(null,E??void 0),S);let D=f(Si.relative(d,s)).split("/");Ss(d,D,r,c,d,void 0,S)},Ss=(s,t,e,i,r,n,o)=>{if(t.length===0)return o(null,n);let h=t.shift(),a=f(Si.resolve(s+"/"+h));k.mkdir(a,e,br(a,t,e,i,r,n,o))},br=(s,t,e,i,r,n,o)=>h=>{h?k.lstat(s,(a,l)=>{if(a)a.path=a.path&&f(a.path),o(a);else if(l.isDirectory())Ss(s,t,e,i,r,n,o);else if(i)k.unlink(s,c=>{if(c)return o(c);k.mkdir(s,e,br(s,t,e,i,r,n,o))});else{if(l.isSymbolicLink())return o(new St(s,s+"/"+t.join("/")));o(h)}}):(n=n||s,Ss(s,t,e,i,r,n,o))},oo=s=>{let t=!1,e;try{t=k.statSync(s).isDirectory()}catch(i){e=i?.code}finally{if(!t)throw new Se(s,e??"ENOTDIR")}},_r=(s,t)=>{s=f(s);let e=t.umask??18,i=t.mode|448,r=(i&e)!==0,n=t.uid,o=t.gid,h=typeof n=="number"&&typeof o=="number"&&(n!==t.processUid||o!==t.processGid),a=t.preserve,l=t.unlink,c=f(t.cwd),d=E=>{E&&h&&ws(E,n,o),r&&k.chmodSync(s,i)};if(s===c)return oo(c),d();if(a)return d(k.mkdirSync(s,{mode:i,recursive:!0})??void 0);let T=f(Si.relative(c,s)).split("/"),D;for(let E=T.shift(),x=c;E&&(x+="/"+E);E=T.shift()){x=f(Si.resolve(x));try{k.mkdirSync(x,i),D=D||x}catch{let Le=k.lstatSync(x);if(Le.isDirectory())continue;if(l){k.unlinkSync(x),k.mkdirSync(x,i),D=D||x;continue}else if(Le.isSymbolicLink())return new St(x,x+"/"+T.join("/"))}}return d(D)};import{join as xr}from"node:path";var ys=Object.create(null),Or=1e4,Vt=new Set,Tr=s=>{Vt.has(s)?Vt.delete(s):ys[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),Vt.add(s);let t=ys[s],e=Vt.size-Or;if(e>Or/10){for(let i of Vt)if(Vt.delete(i),delete ys[i],--e<=0)break}return t};var ho=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,ao=ho==="win32",lo=s=>s.split("/").slice(0,-1).reduce((e,i)=>{let r=e.at(-1);return r!==void 0&&(i=xr(r,i)),e.push(i||"/"),e},[]),yi=class{#t=new Map;#i=new Map;#s=new Set;reserve(t,e){t=ao?["win32 parallelization disabled"]:t.map(r=>ut(xr(Tr(r))));let i=new Set(t.map(r=>lo(r)).reduce((r,n)=>r.concat(n)));this.#i.set(e,{dirs:i,paths:t});for(let r of t){let n=this.#t.get(r);n?n.push(e):this.#t.set(r,[e])}for(let r of i){let n=this.#t.get(r);if(!n)this.#t.set(r,[new Set([e])]);else{let o=n.at(-1);o instanceof Set?o.add(e):n.push(new Set([e]))}}return this.#r(e)}#n(t){let e=this.#i.get(t);if(!e)throw new Error("function does not have any path reservations");return{paths:e.paths.map(i=>this.#t.get(i)),dirs:[...e.dirs].map(i=>this.#t.get(i))}}check(t){let{paths:e,dirs:i}=this.#n(t);return e.every(r=>r&&r[0]===t)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(t))}#r(t){return this.#s.has(t)||!this.check(t)?!1:(this.#s.add(t),t(()=>this.#e(t)),!0)}#e(t){if(!this.#s.has(t))return!1;let e=this.#i.get(t);if(!e)throw new Error("invalid reservation");let{paths:i,dirs:r}=e,n=new Set;for(let o of i){let h=this.#t.get(o);if(!h||h?.[0]!==t)continue;let a=h[1];if(!a){this.#t.delete(o);continue}if(h.shift(),typeof a=="function")n.add(a);else for(let l of a)n.add(l)}for(let o of r){let h=this.#t.get(o),a=h?.[0];if(!(!h||!(a instanceof Set)))if(a.size===1&&h.length===1){this.#t.delete(o);continue}else if(a.size===1){h.shift();let l=h[0];typeof l=="function"&&n.add(l)}else a.delete(t)}return this.#s.delete(t),n.forEach(o=>this.#r(o)),!0}};var Lr=()=>process.umask();var Dr=Symbol("onEntry"),_s=Symbol("checkFs"),Nr=Symbol("checkFs2"),Os=Symbol("isReusable"),P=Symbol("makeFs"),Ts=Symbol("file"),xs=Symbol("directory"),gi=Symbol("link"),Ar=Symbol("symlink"),Ir=Symbol("hardlink"),Re=Symbol("ensureNoSymlink"),Cr=Symbol("unsupported"),Fr=Symbol("checkPath"),Rs=Symbol("stripAbsolutePath"),yt=Symbol("mkdir"),O=Symbol("onError"),Ri=Symbol("pending"),kr=Symbol("pend"),$t=Symbol("unpend"),gs=Symbol("ended"),bs=Symbol("maybeClose"),Ls=Symbol("skip"),ge=Symbol("doChown"),be=Symbol("uid"),_e=Symbol("gid"),Oe=Symbol("checkedCwd"),fo=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Te=fo==="win32",mo=1024,uo=(s,t)=>{if(!Te)return m.unlink(s,t);let e=s+".DELETE."+Mr(16).toString("hex");m.rename(s,e,i=>{if(i)return t(i);m.unlink(e,t)})},po=s=>{if(!Te)return m.unlinkSync(s);let t=s+".DELETE."+Mr(16).toString("hex");m.renameSync(s,t),m.unlinkSync(t)},vr=(s,t,e)=>s!==void 0&&s===s>>>0?s:t!==void 0&&t===t>>>0?t:e,Xt=class extends rt{[gs]=!1;[Oe]=!1;[Ri]=0;reservations=new yi;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(t={}){if(t.ondone=()=>{this[gs]=!0,this[bs]()},super(t),this.transform=t.transform,this.chmod=!!t.chmod,typeof t.uid=="number"||typeof t.gid=="number"){if(typeof t.uid!="number"||typeof t.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(t.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=t.uid,this.gid=t.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;this.preserveOwner=t.preserveOwner===void 0&&typeof t.uid!="number"?process.getuid?.()===0:!!t.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof t.maxDepth=="number"?t.maxDepth:mo,this.forceChown=t.forceChown===!0,this.win32=!!t.win32||Te,this.newer=!!t.newer,this.keep=!!t.keep,this.noMtime=!!t.noMtime,this.preservePaths=!!t.preservePaths,this.unlink=!!t.unlink,this.cwd=f(R.resolve(t.cwd||process.cwd())),this.strip=Number(t.strip)||0,this.processUmask=this.chmod?typeof t.processUmask=="number"?t.processUmask:Lr():0,this.umask=typeof t.umask=="number"?t.umask:this.processUmask,this.dmode=t.dmode||511&~this.umask,this.fmode=t.fmode||438&~this.umask,this.on("entry",e=>this[Dr](e))}warn(t,e,i={}){return(t==="TAR_BAD_ARCHIVE"||t==="TAR_ABORT")&&(i.recoverable=!1),super.warn(t,e,i)}[bs](){this[gs]&&this[Ri]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[Rs](t,e){let i=t[e],{type:r}=t;if(!i||this.preservePaths)return!0;let[n,o]=ce(i),h=o.replaceAll(/\\/g,"/").split("/");if(h.includes("..")||Te&&/^[a-z]:\.\.$/i.test(h[0]??"")){if(e==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${e} contains '..'`,{entry:t,[e]:i}),!1;let a=R.posix.dirname(t.path),l=R.posix.normalize(R.posix.join(a,h.join("/")));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${e} escapes extraction directory`,{entry:t,[e]:i}),!1}return n&&(t[e]=String(o),this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute ${e}`,{entry:t,[e]:i})),!0}[Fr](t){let e=f(t.path),i=e.split("/");if(this.strip){if(i.length=this.strip)t.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),t.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:t,path:e,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[Rs](t,"path")||!this[Rs](t,"linkpath"))return!1;if(t.absolute=R.isAbsolute(t.path)?f(R.resolve(t.path)):f(R.resolve(this.cwd,t.path)),!this.preservePaths&&typeof t.absolute=="string"&&t.absolute.indexOf(this.cwd+"/")!==0&&t.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:t,path:f(t.path),resolvedPath:t.absolute,cwd:this.cwd}),!1;if(t.absolute===this.cwd&&t.type!=="Directory"&&t.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=R.win32.parse(String(t.absolute));t.absolute=r+ts(String(t.absolute).slice(r.length));let{root:n}=R.win32.parse(t.path);t.path=n+ts(t.path.slice(n.length))}return!0}[Dr](t){if(!this[Fr](t))return t.resume();switch(co.equal(typeof t.absolute,"string"),t.type){case"Directory":case"GNUDumpDir":t.mode&&(t.mode=t.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[_s](t);default:return this[Cr](t)}}[O](t,e){t.name==="CwdError"?this.emit("error",t):(this.warn("TAR_ENTRY_ERROR",t,{entry:e}),this[$t](),e.resume())}[yt](t,e,i){gr(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e},i)}[ge](t){return this.forceChown||this.preserveOwner&&(typeof t.uid=="number"&&t.uid!==this.processUid||typeof t.gid=="number"&&t.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[be](t){return vr(this.uid,t.uid,this.processUid)}[_e](t){return vr(this.gid,t.gid,this.processGid)}[Ts](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=new et(String(t.absolute),{flags:us(t.size),mode:i,autoClose:!1});r.on("error",a=>{r.fd&&m.close(r.fd,()=>{}),r.write=()=>!0,this[O](a,t),e()});let n=1,o=a=>{if(a){r.fd&&m.close(r.fd,()=>{}),this[O](a,t),e();return}--n===0&&r.fd!==void 0&&m.close(r.fd,l=>{l?this[O](l,t):this[$t](),e()})};r.on("finish",()=>{let a=String(t.absolute),l=r.fd;if(typeof l=="number"&&t.mtime&&!this.noMtime){n++;let c=t.atime||new Date,d=t.mtime;m.futimes(l,c,d,S=>S?m.utimes(a,c,d,T=>o(T&&S)):o())}if(typeof l=="number"&&this[ge](t)){n++;let c=this[be](t),d=this[_e](t);typeof c=="number"&&typeof d=="number"&&m.fchown(l,c,d,S=>S?m.chown(a,c,d,T=>o(T&&S)):o())}o()});let h=this.transform&&this.transform(t)||t;h!==t&&(h.on("error",a=>{this[O](a,t),e()}),t.pipe(h)),h.pipe(r)}[xs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode;this[yt](String(t.absolute),i,r=>{if(r){this[O](r,t),e();return}let n=1,o=()=>{--n===0&&(e(),this[$t](),t.resume())};t.mtime&&!this.noMtime&&(n++,m.utimes(String(t.absolute),t.atime||new Date,t.mtime,o)),this[ge](t)&&(n++,m.chown(String(t.absolute),Number(this[be](t)),Number(this[_e](t)),o)),o()})}[Cr](t){t.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${t.type}`,{entry:t}),t.resume()}[Ar](t,e){let i=f(R.relative(this.cwd,R.resolve(R.dirname(String(t.absolute)),String(t.linkpath)))).split("/");this[Re](t,this.cwd,i,()=>this[gi](t,String(t.linkpath),"symlink",e),r=>{this[O](r,t),e()})}[Ir](t,e){let i=f(R.resolve(this.cwd,String(t.linkpath))),r=f(String(t.linkpath)).split("/");this[Re](t,this.cwd,r,()=>this[gi](t,i,"link",e),n=>{this[O](n,t),e()})}[Re](t,e,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let h=R.resolve(e,o);m.lstat(h,(a,l)=>{if(a)return r();if(l?.isSymbolicLink())return n(new St(h,R.resolve(h,i.join("/"))));this[Re](t,h,i,r,n)})}[kr](){this[Ri]++}[$t](){this[Ri]--,this[bs]()}[Ls](t){this[$t](),t.resume()}[Os](t,e){return t.type==="File"&&!this.unlink&&e.isFile()&&e.nlink<=1&&!Te}[_s](t){this[kr]();let e=[t.path];t.linkpath&&e.push(t.linkpath),this.reservations.reserve(e,i=>this[Nr](t,i))}[Nr](t,e){let i=h=>{e(h)},r=()=>{this[yt](this.cwd,this.dmode,h=>{if(h){this[O](h,t),i();return}this[Oe]=!0,n()})},n=()=>{if(t.absolute!==this.cwd){let h=f(R.dirname(String(t.absolute)));if(h!==this.cwd)return this[yt](h,this.dmode,a=>{if(a){this[O](a,t),i();return}o()})}o()},o=()=>{m.lstat(String(t.absolute),(h,a)=>{if(a&&(this.keep||this.newer&&a.mtime>(t.mtime??a.mtime))){this[Ls](t),i();return}if(h||this[Os](t,a))return this[P](null,t,i);if(a.isDirectory()){if(t.type==="Directory"){let l=this.chmod&&t.mode&&(a.mode&4095)!==t.mode,c=d=>this[P](d??null,t,i);return l?m.chmod(String(t.absolute),Number(t.mode),c):c()}if(t.absolute!==this.cwd)return m.rmdir(String(t.absolute),l=>this[P](l??null,t,i))}if(t.absolute===this.cwd)return this[P](null,t,i);uo(String(t.absolute),l=>this[P](l??null,t,i))})};this[Oe]?n():r()}[P](t,e,i){if(t){this[O](t,e),i();return}switch(e.type){case"File":case"OldFile":case"ContiguousFile":return this[Ts](e,i);case"Link":return this[Ir](e,i);case"SymbolicLink":return this[Ar](e,i);case"Directory":case"GNUDumpDir":return this[xs](e,i)}}[gi](t,e,i,r){m[i](e,String(t.absolute),n=>{n?this[O](n,t):(this[$t](),t.resume()),r()})}},ye=s=>{try{return[null,s()]}catch(t){return[t,null]}},xe=class extends Xt{sync=!0;[P](t,e){return super[P](t,e,()=>{})}[_s](t){if(!this[Oe]){let n=this[yt](this.cwd,this.dmode);if(n)return this[O](n,t);this[Oe]=!0}if(t.absolute!==this.cwd){let n=f(R.dirname(String(t.absolute)));if(n!==this.cwd){let o=this[yt](n,this.dmode);if(o)return this[O](o,t)}}let[e,i]=ye(()=>m.lstatSync(String(t.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(t.mtime??i.mtime)))return this[Ls](t);if(e||this[Os](t,i))return this[P](null,t);if(i.isDirectory()){if(t.type==="Directory"){let o=this.chmod&&t.mode&&(i.mode&4095)!==t.mode,[h]=o?ye(()=>{m.chmodSync(String(t.absolute),Number(t.mode))}):[];return this[P](h,t)}let[n]=ye(()=>m.rmdirSync(String(t.absolute)));this[P](n,t)}let[r]=t.absolute===this.cwd?[]:ye(()=>po(String(t.absolute)));this[P](r,t)}[Ts](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.fmode,r=h=>{let a;try{m.closeSync(n)}catch(l){a=l}(h||a)&&this[O](h||a,t),e()},n;try{n=m.openSync(String(t.absolute),us(t.size),i)}catch(h){return r(h)}let o=this.transform&&this.transform(t)||t;o!==t&&(o.on("error",h=>this[O](h,t)),t.pipe(o)),o.on("data",h=>{try{m.writeSync(n,h,0,h.length)}catch(a){r(a)}}),o.on("end",()=>{let h=null;if(t.mtime&&!this.noMtime){let a=t.atime||new Date,l=t.mtime;try{m.futimesSync(n,a,l)}catch(c){try{m.utimesSync(String(t.absolute),a,l)}catch{h=c}}}if(this[ge](t)){let a=this[be](t),l=this[_e](t);try{m.fchownSync(n,Number(a),Number(l))}catch(c){try{m.chownSync(String(t.absolute),Number(a),Number(l))}catch{h=h||c}}}r(h)})}[xs](t,e){let i=typeof t.mode=="number"?t.mode&4095:this.dmode,r=this[yt](String(t.absolute),i);if(r){this[O](r,t),e();return}if(t.mtime&&!this.noMtime)try{m.utimesSync(String(t.absolute),t.atime||new Date,t.mtime)}catch{}if(this[ge](t))try{m.chownSync(String(t.absolute),Number(this[be](t)),Number(this[_e](t)))}catch{}e(),t.resume()}[yt](t,e){try{return _r(f(t),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:e})}catch(i){return i}}[Re](t,e,i,r,n){if(this.preservePaths||i.length===0)return r();let o=e;for(let h of i){o=R.resolve(o,h);let[a,l]=ye(()=>m.lstatSync(o));if(a)return r();if(l.isSymbolicLink())return n(new St(o,R.resolve(e,i.join("/"))))}r()}[gi](t,e,i,r){let n=`${i}Sync`;try{m[n](e,String(t.absolute)),r(),t.resume()}catch(o){return this[O](o,t)}}};var Eo=s=>{let t=new xe(s),e=s.file,i=Br.statSync(e),r=s.maxReadSize||16*1024*1024;new Be(e,{readSize:r,size:i.size}).pipe(t)},wo=(s,t)=>{let e=new Xt(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,h)=>{e.on("error",h),e.on("close",o),Br.stat(r,(a,l)=>{if(a)h(a);else{let c=new _t(r,{readSize:i,size:l.size});c.on("error",h),c.pipe(e)}})})},So=K(Eo,wo,s=>new xe(s),s=>new Xt(s),(s,t)=>{t?.length&&Qi(s,t)});import v from"node:fs";import Pr from"node:path";var yo=(s,t)=>{let e=new kt(s),i=!0,r,n;try{try{r=v.openSync(s.file,"r+")}catch(a){if(a?.code==="ENOENT")r=v.openSync(s.file,"w+");else throw a}let o=v.fstatSync(r),h=Buffer.alloc(512);t:for(n=0;no.size)break;n+=l,s.mtimeCache&&a.mtime&&s.mtimeCache.set(String(a.path),a.mtime)}i=!1,Ro(s,e,n,r,t)}finally{if(i)try{v.closeSync(r)}catch{}}},Ro=(s,t,e,i,r)=>{let n=new Wt(s.file,{fd:i,start:e});t.pipe(n),bo(t,r)},go=(s,t)=>{t=Array.from(t);let e=new wt(s),i=(n,o,h)=>{let a=(T,D)=>{T?v.close(n,E=>h(T)):h(null,D)},l=0;if(o===0)return a(null,0);let c=0,d=Buffer.alloc(512),S=(T,D)=>{if(T||D===void 0)return a(T);if(c+=D,c<512&&D)return v.read(n,d,c,d.length-c,l+c,S);if(l===0&&d[0]===31&&d[1]===139)return a(new Error("cannot append to compressed archives"));if(c<512)return a(null,l);let E=new F(d);if(!E.cksumValid)return a(null,l);let x=512*Math.ceil((E.size??0)/512);if(l+x+512>o||(l+=x+512,l>=o))return a(null,l);s.mtimeCache&&E.mtime&&s.mtimeCache.set(String(E.path),E.mtime),c=0,v.read(n,d,0,512,l,S)};v.read(n,d,0,512,l,S)};return new Promise((n,o)=>{e.on("error",o);let h="r+",a=(l,c)=>{if(l&&l.code==="ENOENT"&&h==="r+")return h="w+",v.open(s.file,h,a);if(l||!c)return o(l);v.fstat(c,(d,S)=>{if(d)return v.close(c,()=>o(d));i(c,S.size,(T,D)=>{if(T)return o(T);let E=new et(s.file,{fd:c,start:D});e.pipe(E),E.on("error",o),E.on("close",n),_o(e,t)})})};v.open(s.file,h,a)})},bo=(s,t)=>{t.forEach(e=>{e.charAt(0)==="@"?Ct({file:Pr.resolve(s.cwd,e.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e)}),s.end()},_o=async(s,t)=>{for(let e of t)e.charAt(0)==="@"?await Ct({file:Pr.resolve(String(s.cwd),e.slice(1)),noResume:!0,onReadEntry:i=>s.add(i)}):s.add(e);s.end()},vt=K(yo,go,()=>{throw new TypeError("file is required")},()=>{throw new TypeError("file is required")},(s,t)=>{if(!Bs(s))throw new TypeError("file is required");if(s.gzip||s.brotli||s.zstd||s.file.endsWith(".br")||s.file.endsWith(".tbr"))throw new TypeError("cannot append to compressed archives");if(!t?.length)throw new TypeError("no paths specified to add/replace")});var Oo=K(vt.syncFile,vt.asyncFile,vt.syncNoFile,vt.asyncNoFile,(s,t=[])=>{vt.validate?.(s,t),To(s)}),To=s=>{let t=s.filter;s.mtimeCache||(s.mtimeCache=new Map),s.filter=t?(e,i)=>t(e,i)&&!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0)):(e,i)=>!((s.mtimeCache?.get(e)??i.mtime??0)>(i.mtime??0))};export{F as Header,wt as Pack,pi as PackJob,kt as PackSync,rt as Parser,ft as Pax,$e as ReadEntry,Xt as Unpack,xe as UnpackSync,de as WriteEntry,ni as WriteEntrySync,oi as WriteEntryTar,Qn as c,Qn as create,So as extract,Qi as filesFilter,Ct as list,vt as r,vt as replace,Ct as t,Hi as types,Oo as u,Oo as update,So as x}; //# sourceMappingURL=index.min.js.map diff --git a/deps/npm/node_modules/tar/dist/esm/normalize-windows-path.js b/deps/npm/node_modules/tar/dist/esm/normalize-windows-path.js index bde0c962344a30..cc75178aa9cee4 100644 --- a/deps/npm/node_modules/tar/dist/esm/normalize-windows-path.js +++ b/deps/npm/node_modules/tar/dist/esm/normalize-windows-path.js @@ -4,6 +4,6 @@ // so that we can use / as our one and only directory separator char. const platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform; export const normalizeWindowsPath = platform !== 'win32' ? - (p) => p - : (p) => p && p.replaceAll(/\\/g, '/'); + (p) => String(p) + : (p) => String(p).replaceAll(/\\/g, '/'); //# sourceMappingURL=normalize-windows-path.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/tar/dist/esm/parse.js b/deps/npm/node_modules/tar/dist/esm/parse.js index 02454bfd2c4052..fb303a5171bea0 100644 --- a/deps/npm/node_modules/tar/dist/esm/parse.js +++ b/deps/npm/node_modules/tar/dist/esm/parse.js @@ -57,6 +57,10 @@ const SAW_VALID_ENTRY = Symbol('sawValidEntry'); const SAW_NULL_BLOCK = Symbol('sawNullBlock'); const SAW_EOF = Symbol('sawEOF'); const CLOSESTREAM = Symbol('closeStream'); +const MAX_DECOMPRESSION_RATIO = 1000; +const COMPRESSEDBYTESREAD = Symbol('compressedBytesRead'); +const DECOMPRESSEDBYTESREAD = Symbol('decompressedBytesRead'); +const CHECKDECOMPRESSIONRATIO = Symbol('checkDecompressionRatio'); const noop = () => true; export class Parser extends EE { file; @@ -65,6 +69,7 @@ export class Parser extends EE { filter; brotli; zstd; + maxDecompressionRatio; writable = true; readable = false; [QUEUE] = []; @@ -84,6 +89,8 @@ export class Parser extends EE { [WRITING] = false; [CONSUMING] = false; [EMITTEDEND] = false; + [COMPRESSEDBYTESREAD] = 0; + [DECOMPRESSEDBYTESREAD] = 0; constructor(opt = {}) { super(); this.file = opt.file || ''; @@ -106,6 +113,10 @@ export class Parser extends EE { }); } this.strict = !!opt.strict; + this.maxDecompressionRatio = + typeof opt.maxDecompressionRatio === 'number' ? + opt.maxDecompressionRatio + : MAX_DECOMPRESSION_RATIO; this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize; this.filter = typeof opt.filter === 'function' ? opt.filter : noop; // Unlike gzip, brotli doesn't have any magic bytes to identify it @@ -359,11 +370,23 @@ export class Parser extends EE { } } abort(error) { + if (this[ABORTED]) { + return; + } this[ABORTED] = true; this.emit('abort', error); // always throws, even in non-strict mode this.warn('TAR_ABORT', error, { recoverable: false }); } + [CHECKDECOMPRESSIONRATIO](chunk) { + this[DECOMPRESSEDBYTESREAD] += chunk.length; + const ratio = this[DECOMPRESSEDBYTESREAD] / this[COMPRESSEDBYTESREAD]; + if (ratio > this.maxDecompressionRatio) { + this.abort(new Error(`max decompression ratio exceeded: ${ratio.toFixed(2)} > ${this.maxDecompressionRatio}`)); + return false; + } + return true; + } write(chunk, encoding, cb) { if (typeof encoding === 'function') { cb = encoding; @@ -447,13 +470,22 @@ export class Parser extends EE { this[UNZIP] === undefined ? new Unzip({}) : isZstd ? new ZstdDecompress({}) : new BrotliDecompress({}); - this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk)); - this[UNZIP].on('error', er => this.abort(er)); + this[UNZIP].on('data', chunk => { + if (this[CHECKDECOMPRESSIONRATIO](chunk)) { + this[CONSUMECHUNK](chunk); + } + }); + this[UNZIP].on('error', er => { + if (!this[ABORTED]) { + this.abort(er); + } + }); this[UNZIP].on('end', () => { this[ENDED] = true; this[CONSUMECHUNK](); }); this[WRITING] = true; + this[COMPRESSEDBYTESREAD] += chunk.length; const ret = !!this[UNZIP][ended ? 'end' : 'write'](chunk); this[WRITING] = false; cb?.(); @@ -462,6 +494,7 @@ export class Parser extends EE { } this[WRITING] = true; if (this[UNZIP]) { + this[COMPRESSEDBYTESREAD] += chunk.length; this[UNZIP].write(chunk); } else { @@ -492,7 +525,7 @@ export class Parser extends EE { !this[CONSUMING]) { this[EMITTEDEND] = true; const entry = this[WRITEENTRY]; - if (entry && entry.blockRemain) { + if (entry?.blockRemain) { // truncated, likely a damaged file const have = this[BUFFER] ? this[BUFFER].length : 0; this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${entry.blockRemain} more bytes, only ${have} available)`, { entry }); @@ -586,8 +619,10 @@ export class Parser extends EE { if (!this[ABORTED]) { if (this[UNZIP]) { /* c8 ignore start */ - if (chunk) + if (chunk) { + this[COMPRESSEDBYTESREAD] += chunk.length; this[UNZIP].write(chunk); + } /* c8 ignore stop */ this[UNZIP].end(); } diff --git a/deps/npm/node_modules/tar/dist/esm/pax.js b/deps/npm/node_modules/tar/dist/esm/pax.js index 832808f344da53..907193a4b93257 100644 --- a/deps/npm/node_modules/tar/dist/esm/pax.js +++ b/deps/npm/node_modules/tar/dist/esm/pax.js @@ -143,12 +143,36 @@ const parseKVLine = (set, line) => { return set; } const k = r.replace(/^SCHILY\.(dev|ino|nlink)/, '$1'); - const v = kv.join('='); - set[k] = - /^([A-Z]+\.)?([mac]|birth|creation)time$/.test(k) ? - new Date(Number(v) * 1000) - : /^[0-9]+$/.test(v) ? +v - : v; + const v = kv.join('=').replace(/\0.*/, ''); + switch (k) { + case 'path': + case 'linkpath': + case 'type': + case 'charset': + case 'comment': + case 'gname': + case 'uname': + set[k] = v; + break; + case 'ctime': + case 'atime': + case 'mtime': + set[k] = new Date(Number(v) * 1000); + break; + case 'size': + const s = +v; + if (s >= 0) + set[k] = s; + break; + case 'gid': + case 'uid': + case 'dev': + case 'ino': + case 'nlink': + case 'mode': + set[k] = +v; + break; + } return set; }; //# sourceMappingURL=pax.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/tar/dist/esm/unpack.js b/deps/npm/node_modules/tar/dist/esm/unpack.js index 46c53db2ad57c6..3bbdad99bcd8a0 100644 --- a/deps/npm/node_modules/tar/dist/esm/unpack.js +++ b/deps/npm/node_modules/tar/dist/esm/unpack.js @@ -146,7 +146,7 @@ export class Unpack extends Parser { // default true for root this.preserveOwner = opt.preserveOwner === undefined && typeof opt.uid !== 'number' ? - !!(process.getuid && process.getuid() === 0) + !!(process.getuid?.() === 0) : !!opt.preserveOwner; this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ? @@ -367,7 +367,7 @@ export class Unpack extends Parser { } } [MKDIR](dir, mode, cb) { - mkdir(normalizeWindowsPath(dir), { + void mkdir(normalizeWindowsPath(dir), { uid: this.uid, gid: this.gid, processUid: this.processUid, diff --git a/deps/npm/node_modules/tar/package.json b/deps/npm/node_modules/tar/package.json index 556b3e7d9f2fb0..9d082e44049477 100644 --- a/deps/npm/node_modules/tar/package.json +++ b/deps/npm/node_modules/tar/package.json @@ -2,7 +2,7 @@ "author": "Isaac Z. Schlueter", "name": "tar", "description": "tar for node", - "version": "7.5.16", + "version": "7.5.19", "repository": { "type": "git", "url": "https://github.com/isaacs/node-tar.git" diff --git a/deps/npm/node_modules/undici/docs/docs/api/Client.md b/deps/npm/node_modules/undici/docs/docs/api/Client.md index fdee5ea702671b..e0d41b47805ec2 100644 --- a/deps/npm/node_modules/undici/docs/docs/api/Client.md +++ b/deps/npm/node_modules/undici/docs/docs/api/Client.md @@ -27,6 +27,7 @@ Returns: `Client` * **maxHeaderSize** `number | null` (optional) - Default: `--max-http-header-size` or `16384` - The maximum length of request headers in bytes. Defaults to Node.js' --max-http-header-size or 16KiB. * **maxResponseSize** `number | null` (optional) - Default: `-1` - The maximum length of response body in bytes. Set to `-1` to disable. * **webSocket** `WebSocketOptions` (optional) - WebSocket-specific configuration options. + * **maxFragments** `number` (optional) - Default: `131072` - Maximum number of fragments in a message. Set to 0 to disable the limit. * **maxPayloadSize** `number` (optional) - Default: `134217728` (128 MB) - Maximum allowed payload size in bytes for WebSocket messages. Applied to uncompressed messages, compressed frame payloads, and decompressed (permessage-deflate) messages. Set to 0 to disable the limit. * **pipelining** `number | null` (optional) - Default: `1` - The amount of concurrent requests to be sent over the single TCP/TLS connection according to [RFC7230](https://tools.ietf.org/html/rfc7230#section-6.3.2). Carefully consider your workload and environment before enabling concurrent requests as pipelining may reduce performance if used incorrectly. Pipelining is sensitive to network stack settings as well as head of line blocking caused by e.g. long running requests. Set to `0` to disable keep-alive connections. * **connect** `ConnectOptions | Function | null` (optional) - Default: `null`. diff --git a/deps/npm/node_modules/undici/lib/dispatcher/client-h1.js b/deps/npm/node_modules/undici/lib/dispatcher/client-h1.js index ef3d38ea4f2ed3..9455517a19b15f 100644 --- a/deps/npm/node_modules/undici/lib/dispatcher/client-h1.js +++ b/deps/npm/node_modules/undici/lib/dispatcher/client-h1.js @@ -57,6 +57,9 @@ const EMPTY_BUF = Buffer.alloc(0) const FastBuffer = Buffer[Symbol.species] const addListener = util.addListener const removeAllListeners = util.removeAllListeners +const kIdleSocketValidation = Symbol('kIdleSocketValidation') +const kIdleSocketValidationTimeout = Symbol('kIdleSocketValidationTimeout') +const kSocketUsed = Symbol('kSocketUsed') let extractBody @@ -371,6 +374,11 @@ class Parser { return -1 } + if (client[kRunning] === 0) { + util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket))) + return -1 + } + const request = client[kQueue][client[kRunningIdx]] if (!request) { return -1 @@ -474,6 +482,11 @@ class Parser { return -1 } + if (client[kRunning] === 0) { + util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket))) + return -1 + } + const request = client[kQueue][client[kRunningIdx]] /* istanbul ignore next: difficult to make a test case for */ @@ -647,6 +660,7 @@ class Parser { request.onComplete(headers) client[kQueue][client[kRunningIdx]++] = null + socket[kSocketUsed] = true if (socket[kWriting]) { assert(client[kRunning] === 0) @@ -705,6 +719,9 @@ async function connectH1 (client, socket) { socket[kWriting] = false socket[kReset] = false socket[kBlocking] = false + socket[kIdleSocketValidation] = 0 + socket[kIdleSocketValidationTimeout] = null + socket[kSocketUsed] = false socket[kParser] = new Parser(client, socket, llhttpInstance) addListener(socket, 'error', function (err) { @@ -751,6 +768,8 @@ async function connectH1 (client, socket) { const client = this[kClient] const parser = this[kParser] + clearIdleSocketValidation(this) + if (parser) { if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { this[kError] = parser.finish() || this[kError] @@ -816,7 +835,7 @@ async function connectH1 (client, socket) { return socket.destroyed }, busy (request) { - if (socket[kWriting] || socket[kReset] || socket[kBlocking]) { + if (socket[kWriting] || socket[kReset] || socket[kBlocking] || socket[kIdleSocketValidation] === 1) { return true } @@ -854,6 +873,31 @@ async function connectH1 (client, socket) { } } +function clearIdleSocketValidation (socket) { + if (socket[kIdleSocketValidationTimeout]) { + clearTimeout(socket[kIdleSocketValidationTimeout]) + socket[kIdleSocketValidationTimeout] = null + } + + socket[kIdleSocketValidation] = 0 +} + +function scheduleIdleSocketValidation (client, socket) { + socket[kIdleSocketValidation] = 1 + socket[kIdleSocketValidationTimeout] = setTimeout(() => { + socket[kIdleSocketValidationTimeout] = null + socket[kIdleSocketValidation] = 2 + + if (client[kSocket] === socket && !socket.destroyed) { + client[kResume]() + } + }, 0) + socket[kIdleSocketValidationTimeout].unref?.() +} + +/** + * @param {import('./client.js')} client + */ function resumeH1 (client) { const socket = client[kSocket] @@ -868,6 +912,32 @@ function resumeH1 (client) { socket[kNoRef] = false } + if (client[kRunning] === 0 && client[kPending] > 0 && socket[kSocketUsed]) { + if (socket[kIdleSocketValidation] === 0) { + scheduleIdleSocketValidation(client, socket) + socket[kParser].readMore() + if (socket.destroyed) { + return + } + return + } + + if (socket[kIdleSocketValidation] === 1) { + socket[kParser].readMore() + if (socket.destroyed) { + return + } + return + } + } + + if (client[kRunning] === 0) { + socket[kParser].readMore() + if (socket.destroyed) { + return + } + } + if (client[kSize] === 0) { if (socket[kParser].timeoutType !== TIMEOUT_KEEP_ALIVE) { socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_KEEP_ALIVE) @@ -961,6 +1031,7 @@ function writeH1 (client, request) { } const socket = client[kSocket] + clearIdleSocketValidation(socket) const abort = (err) => { if (request.aborted || request.completed) { diff --git a/deps/npm/node_modules/undici/lib/dispatcher/dispatcher-base.js b/deps/npm/node_modules/undici/lib/dispatcher/dispatcher-base.js index c999b2c2fb6740..371a3ea1f6f1e0 100644 --- a/deps/npm/node_modules/undici/lib/dispatcher/dispatcher-base.js +++ b/deps/npm/node_modules/undici/lib/dispatcher/dispatcher-base.js @@ -26,6 +26,7 @@ class DispatcherBase extends Dispatcher { get webSocketOptions () { return { + maxFragments: this[kWebSocketOptions].maxFragments ?? 131072, maxPayloadSize: this[kWebSocketOptions].maxPayloadSize ?? 128 * 1024 * 1024 } } diff --git a/deps/npm/node_modules/undici/lib/web/cookies/parse.js b/deps/npm/node_modules/undici/lib/web/cookies/parse.js index 3c48c26b93ffa0..b3c25fb9423e29 100644 --- a/deps/npm/node_modules/undici/lib/web/cookies/parse.js +++ b/deps/npm/node_modules/undici/lib/web/cookies/parse.js @@ -275,32 +275,25 @@ function parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) // If the attribute-name case-insensitively matches the string // "SameSite", the user agent MUST process the cookie-av as follows: - // 1. Let enforcement be "Default". - let enforcement = 'Default' - const attributeValueLowercase = attributeValue.toLowerCase() - // 2. If cookie-av's attribute-value is a case-insensitive match for - // "None", set enforcement to "None". - if (attributeValueLowercase.includes('none')) { - enforcement = 'None' - } - // 3. If cookie-av's attribute-value is a case-insensitive match for - // "Strict", set enforcement to "Strict". - if (attributeValueLowercase.includes('strict')) { - enforcement = 'Strict' + // 1. If cookie-av's attribute-value is a case-insensitive match for + // "None", append an attribute to the cookie-attribute-list with an + // attribute-name of "SameSite" and an attribute-value of "None". + if (attributeValueLowercase === 'none') { + cookieAttributeList.sameSite = 'None' + } else if (attributeValueLowercase === 'strict') { + // 2. If cookie-av's attribute-value is a case-insensitive match for + // "Strict", append an attribute to the cookie-attribute-list with + // an attribute-name of "SameSite" and an attribute-value of + // "Strict". + cookieAttributeList.sameSite = 'Strict' + } else if (attributeValueLowercase === 'lax') { + // 3. If cookie-av's attribute-value is a case-insensitive match for + // "Lax", append an attribute to the cookie-attribute-list with an + // attribute-name of "SameSite" and an attribute-value of "Lax". + cookieAttributeList.sameSite = 'Lax' } - - // 4. If cookie-av's attribute-value is a case-insensitive match for - // "Lax", set enforcement to "Lax". - if (attributeValueLowercase.includes('lax')) { - enforcement = 'Lax' - } - - // 5. Append an attribute to the cookie-attribute-list with an - // attribute-name of "SameSite" and an attribute-value of - // enforcement. - cookieAttributeList.sameSite = enforcement } else { cookieAttributeList.unparsed ??= [] diff --git a/deps/npm/node_modules/undici/lib/web/websocket/receiver.js b/deps/npm/node_modules/undici/lib/web/websocket/receiver.js index 53e427eb2e4642..a7dea7fae1c1fc 100644 --- a/deps/npm/node_modules/undici/lib/web/websocket/receiver.js +++ b/deps/npm/node_modules/undici/lib/web/websocket/receiver.js @@ -20,6 +20,11 @@ const { closeWebSocketConnection } = require('./connection') const { PerMessageDeflate } = require('./permessage-deflate') const { MessageSizeExceededError } = require('../../core/errors') +function failWebsocketConnectionWithCode (ws, code, reason) { + closeWebSocketConnection(ws, code, reason, Buffer.byteLength(reason)) + failWebsocketConnection(ws, reason) +} + // This code was influenced by ws released under the MIT license. // Copyright (c) 2011 Einar Otto Stangvik // Copyright (c) 2013 Arnout Kazemier and contributors @@ -39,19 +44,23 @@ class ByteParser extends Writable { /** @type {Map} */ #extensions + /** @type {number} */ + #maxFragments + /** @type {number} */ #maxPayloadSize /** * @param {import('./websocket').WebSocket} ws * @param {Map|null} extensions - * @param {{ maxPayloadSize?: number }} [options] + * @param {{ maxFragments?: number, maxPayloadSize?: number }} [options] */ constructor (ws, extensions, options = {}) { super() this.ws = ws this.#extensions = extensions == null ? new Map() : extensions + this.#maxFragments = options.maxFragments ?? 0 this.#maxPayloadSize = options.maxPayloadSize ?? 0 if (this.#extensions.has('permessage-deflate')) { @@ -75,9 +84,9 @@ class ByteParser extends Writable { if ( this.#maxPayloadSize > 0 && !isControlFrame(this.#info.opcode) && - this.#info.payloadLength > this.#maxPayloadSize + this.#info.payloadLength + this.#fragmentsBytes > this.#maxPayloadSize ) { - failWebsocketConnection(this.ws, 'Payload size exceeds maximum allowed size') + failWebsocketConnectionWithCode(this.ws, 1009, 'Payload size exceeds maximum allowed size') return false } @@ -242,10 +251,12 @@ class ByteParser extends Writable { this.#state = parserStates.INFO } else { if (!this.#info.compressed) { - this.writeFragments(body) + if (!this.writeFragments(body)) { + return + } if (this.#maxPayloadSize > 0 && this.#fragmentsBytes > this.#maxPayloadSize) { - failWebsocketConnection(this.ws, new MessageSizeExceededError().message) + failWebsocketConnectionWithCode(this.ws, 1009, new MessageSizeExceededError().message) return } @@ -264,14 +275,17 @@ class ByteParser extends Writable { this.#info.fin, (error, data) => { if (error) { - failWebsocketConnection(this.ws, error.message) + const code = error instanceof MessageSizeExceededError ? 1009 : 1007 + failWebsocketConnectionWithCode(this.ws, code, error.message) return } - this.writeFragments(data) + if (!this.writeFragments(data)) { + return + } if (this.#maxPayloadSize > 0 && this.#fragmentsBytes > this.#maxPayloadSize) { - failWebsocketConnection(this.ws, new MessageSizeExceededError().message) + failWebsocketConnectionWithCode(this.ws, 1009, new MessageSizeExceededError().message) return } @@ -341,8 +355,17 @@ class ByteParser extends Writable { } writeFragments (fragment) { + if ( + this.#maxFragments > 0 && + this.#fragments.length === this.#maxFragments + ) { + failWebsocketConnectionWithCode(this.ws, 1008, 'Too many message fragments') + return false + } + this.#fragmentsBytes += fragment.length this.#fragments.push(fragment) + return true } consumeFragments () { diff --git a/deps/npm/node_modules/undici/lib/web/websocket/websocket.js b/deps/npm/node_modules/undici/lib/web/websocket/websocket.js index ccedb792169a10..80991e96a2e94f 100644 --- a/deps/npm/node_modules/undici/lib/web/websocket/websocket.js +++ b/deps/npm/node_modules/undici/lib/web/websocket/websocket.js @@ -435,9 +435,12 @@ class WebSocket extends EventTarget { // once this happens, the connection is open this[kResponse] = response - const maxPayloadSize = this[kController]?.dispatcher?.webSocketOptions?.maxPayloadSize + const webSocketOptions = this[kController]?.dispatcher?.webSocketOptions + const maxFragments = webSocketOptions?.maxFragments + const maxPayloadSize = webSocketOptions?.maxPayloadSize const parser = new ByteParser(this, parsedExtensions, { + maxFragments, maxPayloadSize }) parser.on('drain', onParserDrain) diff --git a/deps/npm/node_modules/undici/package.json b/deps/npm/node_modules/undici/package.json index d1eef502c4169f..3c2001f391e3f8 100644 --- a/deps/npm/node_modules/undici/package.json +++ b/deps/npm/node_modules/undici/package.json @@ -1,6 +1,6 @@ { "name": "undici", - "version": "6.26.0", + "version": "6.27.0", "description": "An HTTP/1.1 client, written from scratch for Node.js", "homepage": "https://undici.nodejs.org", "bugs": { diff --git a/deps/npm/package.json b/deps/npm/package.json index 3309782d55e6db..b2ee14b3db8b6f 100644 --- a/deps/npm/package.json +++ b/deps/npm/package.json @@ -1,5 +1,5 @@ { - "version": "11.17.0", + "version": "11.18.0", "name": "npm", "description": "a package manager for JavaScript", "workspaces": [ @@ -52,8 +52,8 @@ }, "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^9.8.0", - "@npmcli/config": "^10.11.0", + "@npmcli/arborist": "^9.9.0", + "@npmcli/config": "^10.12.0", "@npmcli/fs": "^5.0.0", "@npmcli/map-workspaces": "^5.0.3", "@npmcli/metavuln-calculator": "^9.0.3", @@ -77,11 +77,11 @@ "is-cidr": "^6.0.4", "json-parse-even-better-errors": "^5.0.0", "libnpmaccess": "^10.0.3", - "libnpmdiff": "^8.1.10", - "libnpmexec": "^10.3.0", - "libnpmfund": "^7.0.24", + "libnpmdiff": "^8.1.11", + "libnpmexec": "^10.3.1", + "libnpmfund": "^7.0.25", "libnpmorg": "^8.0.1", - "libnpmpack": "^9.1.10", + "libnpmpack": "^9.1.11", "libnpmpublish": "^11.2.0", "libnpmsearch": "^9.0.1", "libnpmteam": "^8.0.2", @@ -97,7 +97,7 @@ "npm-install-checks": "^8.0.0", "npm-package-arg": "^13.0.2", "npm-pick-manifest": "^11.0.3", - "npm-profile": "^12.0.1", + "npm-profile": "^12.0.2", "npm-registry-fetch": "^19.1.1", "npm-user-validate": "^4.0.0", "p-map": "^7.0.4", @@ -106,11 +106,11 @@ "proc-log": "^6.1.0", "qrcode-terminal": "^0.12.0", "read": "^5.0.1", - "semver": "^7.8.4", + "semver": "^7.8.5", "spdx-expression-parse": "^4.0.0", "ssri": "^13.0.1", "supports-color": "^10.2.2", - "tar": "^7.5.16", + "tar": "^7.5.19", "text-table": "~0.2.0", "tiny-relative-date": "^2.0.2", "treeverse": "^3.0.0", diff --git a/deps/npm/tap-snapshots/test/lib/commands/publish.js.test.cjs b/deps/npm/tap-snapshots/test/lib/commands/publish.js.test.cjs index 143d08dda8ff4b..dbc6b9f13b0ac4 100644 --- a/deps/npm/tap-snapshots/test/lib/commands/publish.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/commands/publish.js.test.cjs @@ -181,6 +181,7 @@ Object { "man/man1/npm-help.1", "man/man1/npm-init.1", "man/man1/npm-install-ci-test.1", + "man/man1/npm-install-scripts.1", "man/man1/npm-install-test.1", "man/man1/npm-install.1", "man/man1/npm-link.1", diff --git a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs index c5fd6a2ecfe036..1e2799652c91fe 100644 --- a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs @@ -125,6 +125,7 @@ Array [ "init", "install", "install-ci-test", + "install-scripts", "install-test", "link", "ll", @@ -404,6 +405,10 @@ sources, the standard precedence applies (cli > env > project > user > global), so a higher-priority source can always relax or override a lower-priority one. +As with \`min-release-age\`, when this cutoff blocks a fix that \`npm audit +fix\` would install, npm keeps the vulnerable version, warns, and exits with +a non-zero code. + Packages whose names match \`min-release-age-exclude\` are exempt from this filter. @@ -1084,8 +1089,16 @@ Sets the strategy for installing packages in node_modules. hoisted (default): Install non-duplicated in top-level, and duplicated as necessary within directory structure. nested: (formerly --legacy-bundling) install in place, no hoisting. shallow (formerly --global-style) only install direct -deps at top-level. linked: (experimental) install in node_modules/.store, -link in place, unhoisted. +deps at top-level. linked: install in node_modules/.store, link in place, +unhoisted. + +We recommend that package authors use \`--install-strategy=linked\` during +development to catch undeclared ("phantom") dependencies before publishing: +the isolated layout only exposes a package's declared dependencies, so an +\`import\` of a package that was never added to \`package.json\` can fail +instead of resolving by accident and shipping broken. See [Catching +undeclared ("phantom") +dependencies](/using-npm/developers#catching-undeclared-phantom-dependencies). @@ -1279,6 +1292,12 @@ your \`.npmrc\` is preserved when npm internally spawns a sub-process with apply, \`before\` wins within a single source and across sources the standard precedence rules apply. +When this window stops \`npm audit fix\` from installing a patched version +(because the fix was published too recently), npm keeps the package at its +vulnerable version, warns that the fix was blocked, and exits with a +non-zero code. To install the fix, add the package to +\`min-release-age-exclude\`, or relax \`min-release-age\` or \`before\`. + Packages whose names match \`min-release-age-exclude\` are exempt from this filter. @@ -1675,7 +1694,14 @@ registry (https://registry.npmjs.org) to the configured registry. If set to "never", then use the registry value. If set to "always", then replace the registry host with the configured host every time. -You may also specify a bare hostname (e.g., "registry.npmjs.org"). +You may also specify a bare hostname (e.g., "registry.npmjs.org") to only +replace URLs coming from that host. + +You may also specify a full URL including a path (e.g., +"https://old-registry.example.com/npm/path"). In that case, resolved URLs +whose host and path begin with that prefix will have the entire prefix +replaced with the configured registry URL (host and path), without +duplicating path segments. @@ -1932,6 +1958,10 @@ silently skipped; this setting only affects unreviewed entries. \`--ignore-scripts\` and \`--dangerously-allow-all-scripts\` both override this setting. +Optional dependencies that cannot be installed on the current platform or +engine (a non-matching \`os\`, \`cpu\`, or \`libc\`) are not flagged, because +their install scripts never run. + #### \`strict-peer-deps\` @@ -4573,6 +4603,52 @@ aliases: cit, clean-install-test, sit #### \`install-links\` ` +exports[`test/lib/docs.js TAP usage install-scripts > must match snapshot 1`] = ` +Manage install-script approvals for dependencies + +Usage: +npm install-scripts approve [ ...] +npm install-scripts approve --all +npm install-scripts deny [ ...] +npm install-scripts deny --all +npm install-scripts ls +npm install-scripts prune + +Options: +[-a|--all] [--no-allow-scripts-pin] [--dry-run] [--json] + + -a|--all + Show or act on all packages, not just the ones your project directly + + --allow-scripts-pin + Write pinned (\`pkg@version\`) entries when approving install scripts. + + --dry-run + Indicates that you don't want npm to make any changes and that it should + + --json + Whether or not to output JSON data, rather than the normal output. + + +Run "npm help install-scripts" for more info + +\`\`\`bash +npm install-scripts approve [ ...] +npm install-scripts approve --all +npm install-scripts deny [ ...] +npm install-scripts deny --all +npm install-scripts ls +npm install-scripts prune +\`\`\` + +Note: This command is unaware of workspaces. + +#### \`all\` +#### \`allow-scripts-pin\` +#### \`dry-run\` +#### \`json\` +` + exports[`test/lib/docs.js TAP usage install-test > must match snapshot 1`] = ` Install package(s) and run tests diff --git a/deps/npm/tap-snapshots/test/lib/npm.js.test.cjs b/deps/npm/tap-snapshots/test/lib/npm.js.test.cjs index dc1c95cd3c5763..a3837dc72ab761 100644 --- a/deps/npm/tap-snapshots/test/lib/npm.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/npm.js.test.cjs @@ -35,12 +35,13 @@ All commands: completion, config, dedupe, deny-scripts, deprecate, diff, dist-tag, docs, doctor, edit, exec, explain, explore, find-dupes, fund, get, help, help-search, init, install, - install-ci-test, install-test, link, ll, login, logout, ls, - org, outdated, owner, pack, ping, pkg, prefix, profile, - prune, publish, query, rebuild, repo, restart, root, run, - sbom, search, set, shrinkwrap, stage, star, stars, start, - stop, team, test, token, trust, undeprecate, uninstall, - unpublish, unstar, update, version, view, whoami + install-ci-test, install-scripts, install-test, link, ll, + login, logout, ls, org, outdated, owner, pack, ping, pkg, + prefix, profile, prune, publish, query, rebuild, repo, + restart, root, run, sbom, search, set, shrinkwrap, stage, + star, stars, start, stop, team, test, token, trust, + undeprecate, uninstall, unpublish, unstar, update, version, + view, whoami Specify configs in the ini-formatted file: {USERCONFIG} @@ -81,6 +82,7 @@ All commands: help-search, init, install, install-ci-test, + install-scripts, install-test, link, ll, login, logout, ls, org, outdated, owner, pack, @@ -136,6 +138,7 @@ All commands: help-search, init, install, install-ci-test, + install-scripts, install-test, link, ll, login, logout, ls, org, outdated, owner, pack, @@ -182,12 +185,13 @@ All commands: completion, config, dedupe, deny-scripts, deprecate, diff, dist-tag, docs, doctor, edit, exec, explain, explore, find-dupes, fund, get, help, help-search, init, install, - install-ci-test, install-test, link, ll, login, logout, ls, - org, outdated, owner, pack, ping, pkg, prefix, profile, - prune, publish, query, rebuild, repo, restart, root, run, - sbom, search, set, shrinkwrap, stage, star, stars, start, - stop, team, test, token, trust, undeprecate, uninstall, - unpublish, unstar, update, version, view, whoami + install-ci-test, install-scripts, install-test, link, ll, + login, logout, ls, org, outdated, owner, pack, ping, pkg, + prefix, profile, prune, publish, query, rebuild, repo, + restart, root, run, sbom, search, set, shrinkwrap, stage, + star, stars, start, stop, team, test, token, trust, + undeprecate, uninstall, unpublish, unstar, update, version, + view, whoami Specify configs in the ini-formatted file: {USERCONFIG} @@ -228,6 +232,7 @@ All commands: help-search, init, install, install-ci-test, + install-scripts, install-test, link, ll, login, logout, ls, org, outdated, owner, pack, @@ -283,6 +288,7 @@ All commands: help-search, init, install, install-ci-test, + install-scripts, install-test, link, ll, login, logout, ls, org, outdated, owner, pack, @@ -337,6 +343,7 @@ All commands: fund, get, help, help-search, init, install, install-ci-test, + install-scripts, install-test, link, ll, login, logout, ls, org, outdated, owner, pack, @@ -383,12 +390,13 @@ All commands: completion, config, dedupe, deny-scripts, deprecate, diff, dist-tag, docs, doctor, edit, exec, explain, explore, find-dupes, fund, get, help, help-search, init, install, - install-ci-test, install-test, link, ll, login, logout, ls, - org, outdated, owner, pack, ping, pkg, prefix, profile, - prune, publish, query, rebuild, repo, restart, root, run, - sbom, search, set, shrinkwrap, stage, star, stars, start, - stop, team, test, token, trust, undeprecate, uninstall, - unpublish, unstar, update, version, view, whoami + install-ci-test, install-scripts, install-test, link, ll, + login, logout, ls, org, outdated, owner, pack, ping, pkg, + prefix, profile, prune, publish, query, rebuild, repo, + restart, root, run, sbom, search, set, shrinkwrap, stage, + star, stars, start, stop, team, test, token, trust, + undeprecate, uninstall, unpublish, unstar, update, version, + view, whoami Specify configs in the ini-formatted file: {USERCONFIG} @@ -420,12 +428,13 @@ All commands: completion, config, dedupe, deny-scripts, deprecate, diff, dist-tag, docs, doctor, edit, exec, explain, explore, find-dupes, fund, get, help, help-search, init, install, - install-ci-test, install-test, link, ll, login, logout, ls, - org, outdated, owner, pack, ping, pkg, prefix, profile, - prune, publish, query, rebuild, repo, restart, root, run, - sbom, search, set, shrinkwrap, stage, star, stars, start, - stop, team, test, token, trust, undeprecate, uninstall, - unpublish, unstar, update, version, view, whoami + install-ci-test, install-scripts, install-test, link, ll, + login, logout, ls, org, outdated, owner, pack, ping, pkg, + prefix, profile, prune, publish, query, rebuild, repo, + restart, root, run, sbom, search, set, shrinkwrap, stage, + star, stars, start, stop, team, test, token, trust, + undeprecate, uninstall, unpublish, unstar, update, version, + view, whoami Specify configs in the ini-formatted file: {USERCONFIG} @@ -457,12 +466,13 @@ All commands: completion, config, dedupe, deny-scripts, deprecate, diff, dist-tag, docs, doctor, edit, exec, explain, explore, find-dupes, fund, get, help, help-search, init, install, - install-ci-test, install-test, link, ll, login, logout, ls, - org, outdated, owner, pack, ping, pkg, prefix, profile, - prune, publish, query, rebuild, repo, restart, root, run, - sbom, search, set, shrinkwrap, stage, star, stars, start, - stop, team, test, token, trust, undeprecate, uninstall, - unpublish, unstar, update, version, view, whoami + install-ci-test, install-scripts, install-test, link, ll, + login, logout, ls, org, outdated, owner, pack, ping, pkg, + prefix, profile, prune, publish, query, rebuild, repo, + restart, root, run, sbom, search, set, shrinkwrap, stage, + star, stars, start, stop, team, test, token, trust, + undeprecate, uninstall, unpublish, unstar, update, version, + view, whoami Specify configs in the ini-formatted file: {USERCONFIG} diff --git a/deps/npm/tap-snapshots/test/lib/utils/reify-output.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/reify-output.js.test.cjs index 40d4cd221ca024..828a99679eab6b 100644 --- a/deps/npm/tap-snapshots/test/lib/utils/reify-output.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/utils/reify-output.js.test.cjs @@ -10,6 +10,11 @@ exports[`test/lib/utils/reify-output.js TAP added packages should be looked up w added 1 package in {TIME} ` +exports[`test/lib/utils/reify-output.js TAP added packages should be looked up within returned tree linked store package counted though absent from actualTree > must match snapshot 1`] = ` + +added 1 package in {TIME} +` + exports[`test/lib/utils/reify-output.js TAP added packages should be looked up within returned tree missing added pkg in inventory > must match snapshot 1`] = ` up to date in {TIME} diff --git a/deps/npm/tap-snapshots/test/lib/utils/sbom-cyclonedx.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/sbom-cyclonedx.js.test.cjs index 124478bc829938..6963299566d53d 100644 --- a/deps/npm/tap-snapshots/test/lib/utils/sbom-cyclonedx.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/utils/sbom-cyclonedx.js.test.cjs @@ -417,7 +417,7 @@ exports[`test/lib/utils/sbom-cyclonedx.js TAP single node - from git url > must "version": "1.0.0", "scope": "required", "author": "Author", - "purl": "pkg:npm/root@1.0.0?vcs_url=https://github.com/foo/bar#1234", + "purl": "pkg:npm/root@1.0.0?vcs_url=https%3A%2F%2Fgithub.com%2Ffoo%2Fbar%231234", "properties": [], "externalReferences": [ { diff --git a/deps/npm/tap-snapshots/test/lib/utils/sbom-spdx.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/sbom-spdx.js.test.cjs index 6adb6d26de1435..eda01bcaa4ed6a 100644 --- a/deps/npm/tap-snapshots/test/lib/utils/sbom-spdx.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/utils/sbom-spdx.js.test.cjs @@ -414,7 +414,7 @@ exports[`test/lib/utils/sbom-spdx.js TAP single node - from git url > must match { "referenceCategory": "PACKAGE-MANAGER", "referenceType": "purl", - "referenceLocator": "pkg:npm/root@1.0.0?vcs_url=https://github.com/foo/bar#1234" + "referenceLocator": "pkg:npm/root@1.0.0?vcs_url=https%3A%2F%2Fgithub.com%2Ffoo%2Fbar%231234" } ] } diff --git a/deps/npm/test/lib/commands/approve-scripts.js b/deps/npm/test/lib/commands/approve-scripts.js index 30325f41014c88..4b2e7e5a73e1f8 100644 --- a/deps/npm/test/lib/commands/approve-scripts.js +++ b/deps/npm/test/lib/commands/approve-scripts.js @@ -7,7 +7,7 @@ const mockNpm = async (t, opts = {}) => { return _mockNpm(t, opts) } -const setupProject = ({ allowScripts, withScripts = ['canvas'] } = {}) => { +const setupProject = ({ allowScripts, withScripts = ['canvas'], noResolved = [] } = {}) => { const pkg = { name: 'host', version: '1.0.0', @@ -28,11 +28,16 @@ const setupProject = ({ allowScripts, withScripts = ['canvas'] } = {}) => { scripts: { install: 'echo install' }, }), } - lockPackages[`node_modules/${name}`] = { + const lockEntry = { version: '1.0.0', - resolved: tarUrl, hasInstallScript: true, } + // Some lockfiles omit `resolved` for registry deps. Those nodes have no + // trustable version, so they can only be approved by name. + if (!noResolved.includes(name)) { + lockEntry.resolved = tarUrl + } + lockPackages[`node_modules/${name}`] = lockEntry } return { @@ -119,6 +124,51 @@ t.test('approve-scripts --all approves every unreviewed package', async t => { }) }) +t.test('approve-scripts --all approves a dep without a resolved URL by name', async t => { + // Regression for npm/cli#9558: a dep with no `resolved` URL can't be + // pinned, but must still be approved by name, not silently skipped. + const { npm, prefix, logs } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'], noResolved: ['canvas'] }), + config: { all: true }, + }) + await npm.exec('approve-scripts', []) + + const pkg = JSON.parse(fs.readFileSync(resolve(prefix, 'package.json'), 'utf8')) + t.strictSame(pkg.allowScripts, { canvas: true }, 'approved by name, not skipped') + t.match( + logs.warn.byTitle('approve-scripts').join('\n'), + /no "resolved" URL/, + 'warns that a version pin could not be written' + ) +}) + +t.test('approve-scripts approves a dep without a resolved URL by name', async t => { + const { npm, prefix } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'], noResolved: ['canvas'] }), + }) + await npm.exec('approve-scripts', ['canvas']) + + const pkg = JSON.parse(fs.readFileSync(resolve(prefix, 'package.json'), 'utf8')) + t.strictSame(pkg.allowScripts, { canvas: true }) +}) + +t.test('approve-scripts --pending is empty after a no-resolved dep is approved by name', async t => { + const { npm, joinedOutput } = await mockNpm(t, { + prefixDir: setupProject({ + allowScripts: { canvas: true }, + withScripts: ['canvas'], + noResolved: ['canvas'], + }), + config: { 'allow-scripts-pending': true }, + }) + await npm.exec('approve-scripts', []) + t.match( + joinedOutput(), + /No packages with unreviewed install scripts/, + 'name-only entry covers the dep even without a resolved URL' + ) +}) + t.test('approve-scripts errors on unknown package', async t => { const { npm } = await mockNpm(t, { prefixDir: setupProject({ withScripts: ['canvas'] }), diff --git a/deps/npm/test/lib/commands/audit.js b/deps/npm/test/lib/commands/audit.js index 3bd5e5033c499f..61887417216eb0 100644 --- a/deps/npm/test/lib/commands/audit.js +++ b/deps/npm/test/lib/commands/audit.js @@ -163,6 +163,86 @@ t.test('audit fix - bulk endpoint', async t => { ) }) +t.test('audit fix exits non-zero when min-release-age blocks a fix', async t => { + const { npm, logs } = await loadMockNpm(t, { + prefixDir: tree, + config: { 'min-release-age': 30 }, + }) + const registry = new MockRegistry({ + tap: t, + registry: npm.config.get('registry'), + }) + const manifest = registry.manifest({ + name: 'test-dep-a', + packuments: [{ version: '1.0.0' }, { version: '1.0.1' }], + }) + // 1.0.0 is old enough to install; the fix 1.0.1 was published too recently. + manifest.time['1.0.0'] = '2020-01-01T00:00:00.000Z' + manifest.time['1.0.1'] = new Date().toISOString() + await registry.package({ + manifest, + tarballs: { + '1.0.0': path.join(npm.prefix, 'test-dep-a-vuln'), + }, + times: 2, + }) + const advisory = registry.advisory({ id: 100, vulnerable_versions: '<1.0.1' }) + registry.nock.post('/-/npm/v1/security/advisories/bulk', body => { + const unzipped = JSON.parse(gunzip(Buffer.from(body, 'hex'))) + return t.same(unzipped, { 'test-dep-a': ['1.0.0'] }) + }) + .reply(200, { 'test-dep-a': [advisory] }) + .post('/-/npm/v1/security/advisories/bulk', body => { + const unzipped = JSON.parse(gunzip(Buffer.from(body, 'hex'))) + return t.same(unzipped, { 'test-dep-a': ['1.0.0'] }) + }) + .reply(200, { 'test-dep-a': [advisory] }) + + await npm.exec('audit', ['fix']) + + t.equal(process.exitCode, 1, 'exits non-zero because the fix was blocked') + t.ok( + logs.warn.some(w => + /left at a vulnerable version because a fix is newer than the release-age cutoff/.test(w)), + 'warns that the fix was blocked by min-release-age' + ) + const lock = JSON.parse(fs.readFileSync(path.join(npm.prefix, 'package-lock.json'), 'utf8')) + t.equal(lock.packages['node_modules/test-dep-a'].version, '1.0.0', + 'test-dep-a was left at the vulnerable version') +}) + +t.test('json audit reports fixBlockedByReleaseAge when a fix is too new', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, { + prefixDir: tree, + config: { + json: true, + 'min-release-age': 30, + }, + }) + const registry = new MockRegistry({ + tap: t, + registry: npm.config.get('registry'), + }) + const manifest = registry.manifest({ + name: 'test-dep-a', + packuments: [{ version: '1.0.0' }, { version: '1.0.1' }], + }) + manifest.time['1.0.0'] = '2020-01-01T00:00:00.000Z' + manifest.time['1.0.1'] = new Date().toISOString() + await registry.package({ manifest }) + const advisory = registry.advisory({ id: 100, vulnerable_versions: '<1.0.1' }) + const bulkBody = gzip(JSON.stringify({ 'test-dep-a': ['1.0.0'] })) + registry.nock.post('/-/npm/v1/security/advisories/bulk', bulkBody) + .reply(200, { + 'test-dep-a': [advisory], + }) + + await npm.exec('audit', []) + const report = JSON.parse(joinedOutput()) + t.match(report.vulnerabilities['test-dep-a'].fixBlockedByReleaseAge, { version: '1.0.1' }, + 'json output flags the fix that min-release-age blocked') +}) + t.test('audit fix no package lock', async t => { const { npm } = await loadMockNpm(t, { config: { diff --git a/deps/npm/test/lib/commands/deny-scripts.js b/deps/npm/test/lib/commands/deny-scripts.js index 358b71d7da7bd6..1caf93b715134c 100644 --- a/deps/npm/test/lib/commands/deny-scripts.js +++ b/deps/npm/test/lib/commands/deny-scripts.js @@ -80,7 +80,10 @@ t.test('deny-scripts --pending is rejected', async t => { prefixDir: setupProject({ withScripts: ['core-js'] }), config: { 'allow-scripts-pending': true }, }) - await t.rejects(npm.exec('deny-scripts', []), { code: 'EUSAGE' }) + await t.rejects(npm.exec('deny-scripts', []), { + code: 'EUSAGE', + message: /`npm deny-scripts --allow-scripts-pending` is not supported; run `npm install-scripts ls` to list unreviewed packages/, + }) }) t.test('deny-scripts --all denies every unreviewed package', async t => { diff --git a/deps/npm/test/lib/commands/exec.js b/deps/npm/test/lib/commands/exec.js index 92ea993e3edfb2..45e7634da5e100 100644 --- a/deps/npm/test/lib/commands/exec.js +++ b/deps/npm/test/lib/commands/exec.js @@ -220,6 +220,41 @@ t.test('finds workspace dep first', async t => { t.ok(exists.isFile(), 'bin ran, creating file') }) +t.test('finds workspace dep bin under linked install strategy', async t => { + const { npm } = await loadMockNpm(t, { + config: { + 'install-strategy': 'linked', + }, + prefixDir: { + 'package.json': JSON.stringify({ + name: '@npmcli/npx-workspace-root-test', + workspaces: ['workspace-a', 'tool'], + }), + 'workspace-a': { + 'package.json': JSON.stringify({ + name: 'workspace-a', + dependencies: { tool: '*' }, + }), + }, + tool: { + 'package.json': JSON.stringify({ + name: 'tool', + version: '1.0.0', + bin: { 'npx-test': 'index.js' }, + }), + 'index.js': `#!/usr/bin/env node + require('fs').writeFileSync('npm-exec-test-success', '')`, + }, + }, + }) + + await npm.exec('install', []) + npm.config.set('workspace', ['workspace-a']) + await npm.exec('exec', ['npx-test']) + const exists = await fs.stat(path.join(npm.prefix, 'workspace-a', 'npm-exec-test-success')) + t.ok(exists.isFile(), 'workspace-local bin ran instead of falling back to the registry') +}) + t.test('npx --no-install @npmcli/npx-test', async t => { const registry = new MockRegistry({ tap: t, diff --git a/deps/npm/test/lib/commands/install-scripts.js b/deps/npm/test/lib/commands/install-scripts.js new file mode 100644 index 00000000000000..523aba42bdd943 --- /dev/null +++ b/deps/npm/test/lib/commands/install-scripts.js @@ -0,0 +1,336 @@ +const t = require('tap') +const fs = require('node:fs') +const { resolve } = require('node:path') +const _mockNpm = require('../../fixtures/mock-npm') +const InstallScripts = require('../../../lib/commands/install-scripts.js') + +const mockNpm = async (t, opts = {}) => { + return _mockNpm(t, opts) +} + +const setupProject = ({ allowScripts, withScripts = ['canvas'], noScripts = [] } = {}) => { + const pkg = { + name: 'host', + version: '1.0.0', + dependencies: Object.fromEntries([...withScripts, ...noScripts].map((n) => [n, '*'])), + } + if (allowScripts !== undefined) { + pkg.allowScripts = allowScripts + } + + const lockPackages = { '': pkg } + const nodeModules = {} + for (const name of withScripts) { + nodeModules[name] = { + 'package.json': JSON.stringify({ + name, + version: '1.0.0', + scripts: { install: 'echo install' }, + }), + } + lockPackages[`node_modules/${name}`] = { + version: '1.0.0', + hasInstallScript: true, + resolved: `https://registry.npmjs.org/${name}/-/${name}-1.0.0.tgz`, + } + } + for (const name of noScripts) { + nodeModules[name] = { + 'package.json': JSON.stringify({ name, version: '1.0.0' }), + } + lockPackages[`node_modules/${name}`] = { + version: '1.0.0', + resolved: `https://registry.npmjs.org/${name}/-/${name}-1.0.0.tgz`, + } + } + + return { + 'package.json': JSON.stringify(pkg, null, 2), + 'package-lock.json': JSON.stringify({ + name: pkg.name, + version: pkg.version, + lockfileVersion: 3, + requires: true, + packages: lockPackages, + }), + node_modules: nodeModules, + } +} + +t.test('completion', async t => { + const comp = (argv) => + InstallScripts.completion({ conf: { argv: { remain: argv } } }) + + t.resolveMatch(comp(['npm', 'install-scripts']), ['approve', 'deny', 'ls', 'prune']) + t.resolveMatch(comp(['npm', 'install-scripts', 'approve']), []) + t.resolveMatch(comp(['npm', 'install-scripts', 'deny']), []) + t.resolveMatch(comp(['npm', 'install-scripts', 'ls']), []) + t.resolveMatch(comp(['npm', 'install-scripts', 'prune']), []) + await t.rejects(comp(['npm', 'install-scripts', 'frobnicate']), { + message: 'frobnicate not recognized', + }) +}) + +t.test('install-scripts approve writes a pinned entry', async t => { + const { npm, prefix } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'] }), + }) + await npm.exec('install-scripts', ['approve', 'canvas']) + + const pkg = JSON.parse(fs.readFileSync(resolve(prefix, 'package.json'), 'utf8')) + t.strictSame(pkg.allowScripts, { 'canvas@1.0.0': true }) +}) + +t.test('install-scripts approve --all approves every unreviewed package', async t => { + const { npm, prefix } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas', 'sharp'] }), + config: { all: true }, + }) + await npm.exec('install-scripts', ['approve']) + + const pkg = JSON.parse(fs.readFileSync(resolve(prefix, 'package.json'), 'utf8')) + t.strictSame(pkg.allowScripts, { + 'canvas@1.0.0': true, + 'sharp@1.0.0': true, + }) +}) + +t.test('install-scripts deny writes a name-only false entry', async t => { + const { npm, prefix } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'] }), + }) + await npm.exec('install-scripts', ['deny', 'canvas']) + + const pkg = JSON.parse(fs.readFileSync(resolve(prefix, 'package.json'), 'utf8')) + t.strictSame(pkg.allowScripts, { canvas: false }) +}) + +t.test('install-scripts deny --all denies every unreviewed package', async t => { + const { npm, prefix } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas', 'sharp'] }), + config: { all: true }, + }) + await npm.exec('install-scripts', ['deny']) + + const pkg = JSON.parse(fs.readFileSync(resolve(prefix, 'package.json'), 'utf8')) + t.strictSame(pkg.allowScripts, { canvas: false, sharp: false }) +}) + +t.test('install-scripts ignores allow-scripts-pending and still writes', async t => { + // The namespace exposes listing through `ls`, so a stray + // `allow-scripts-pending` config must not divert approve into list mode. + const { npm, prefix } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'] }), + config: { 'allow-scripts-pending': true }, + }) + await npm.exec('install-scripts', ['approve', 'canvas']) + + const pkg = JSON.parse(fs.readFileSync(resolve(prefix, 'package.json'), 'utf8')) + t.strictSame(pkg.allowScripts, { 'canvas@1.0.0': true }) +}) + +t.test('install-scripts ls lists unreviewed packages', async t => { + const { npm, joinedOutput } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas', 'sharp'] }), + }) + await npm.exec('install-scripts', ['ls']) + const out = joinedOutput() + t.match(out, /2 packages have install scripts not yet covered by allowScripts/) + t.match(out, /canvas@1\.0\.0/) + t.match(out, /sharp@1\.0\.0/) +}) + +t.test('install-scripts ls with no unreviewed says so', async t => { + const { npm, joinedOutput } = await mockNpm(t, { + prefixDir: setupProject({ allowScripts: { canvas: true }, withScripts: ['canvas'] }), + }) + await npm.exec('install-scripts', ['ls']) + t.match(joinedOutput(), /No packages with unreviewed install scripts/) +}) + +t.test('install-scripts ls rejects positional args', async t => { + const { npm } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'] }), + }) + await t.rejects( + npm.exec('install-scripts', ['ls', 'canvas']), + /cannot be combined with positional arguments/ + ) +}) + +t.test('install-scripts with no subcommand errors with usage', async t => { + const { npm } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'] }), + }) + await t.rejects( + npm.exec('install-scripts', []), + { code: 'EUSAGE' } + ) +}) + +t.test('install-scripts with an unknown subcommand errors', async t => { + const { npm } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'] }), + }) + await t.rejects( + npm.exec('install-scripts', ['frobnicate']), + /`frobnicate` is not a recognized subcommand/ + ) +}) + +t.test('install-scripts approve errors on unknown package', async t => { + const { npm } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'] }), + }) + await t.rejects( + npm.exec('install-scripts', ['approve', 'not-installed']), + { code: 'ENOMATCH' } + ) +}) + +t.test('install-scripts fails for global installs', async t => { + const { npm } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'] }), + config: { global: true }, + }) + await t.rejects( + npm.exec('install-scripts', ['approve', 'canvas']), + { code: 'EGLOBAL' } + ) +}) + +t.test('install-scripts prune removes not-installed and no-script entries', async t => { + const { npm, prefix, joinedOutput } = await mockNpm(t, { + prefixDir: setupProject({ + withScripts: ['canvas'], + noScripts: ['no-scripts-pkg'], + allowScripts: { + 'canvas@1.0.0': true, + 'no-scripts-pkg': true, + gone: true, + }, + }), + }) + await npm.exec('install-scripts', ['prune']) + + const pkg = JSON.parse(fs.readFileSync(resolve(prefix, 'package.json'), 'utf8')) + t.strictSame(pkg.allowScripts, { 'canvas@1.0.0': true }) + + const out = joinedOutput() + t.match(out, /Removed 2 unused allowScripts entries:/) + t.match(out, /no-scripts-pkg \(no install scripts\)/) + t.match(out, /gone \(package not installed\)/) +}) + +t.test('install-scripts prune removes unused deny entries too', async t => { + const { npm, prefix } = await mockNpm(t, { + prefixDir: setupProject({ + withScripts: ['canvas'], + allowScripts: { 'canvas@1.0.0': true, 'denied-gone': false }, + }), + }) + await npm.exec('install-scripts', ['prune']) + + const pkg = JSON.parse(fs.readFileSync(resolve(prefix, 'package.json'), 'utf8')) + t.strictSame(pkg.allowScripts, { 'canvas@1.0.0': true }) +}) + +t.test('install-scripts prune removes a stale version pin and drops the field', async t => { + const { npm, prefix, joinedOutput } = await mockNpm(t, { + prefixDir: setupProject({ + withScripts: ['canvas'], + allowScripts: { 'canvas@9.9.9': true }, + }), + }) + await npm.exec('install-scripts', ['prune']) + + const pkg = JSON.parse(fs.readFileSync(resolve(prefix, 'package.json'), 'utf8')) + t.notOk('allowScripts' in pkg, 'allowScripts field is removed when empty') + // Singular wording for a single entry. + t.match(joinedOutput(), /Removed 1 unused allowScripts entry:/) +}) + +t.test('install-scripts prune --dry-run reports without writing', async t => { + const allowScripts = { 'canvas@1.0.0': true, gone: true } + const { npm, prefix, joinedOutput } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'], allowScripts }), + config: { 'dry-run': true }, + }) + await npm.exec('install-scripts', ['prune']) + + const pkg = JSON.parse(fs.readFileSync(resolve(prefix, 'package.json'), 'utf8')) + t.strictSame(pkg.allowScripts, allowScripts, 'package.json is unchanged') + t.match(joinedOutput(), /Would remove 1 unused allowScripts entry:/) +}) + +t.test('install-scripts prune --json emits a machine-readable summary', async t => { + const { npm, joinedOutput } = await mockNpm(t, { + prefixDir: setupProject({ + withScripts: ['canvas'], + allowScripts: { 'canvas@1.0.0': true, gone: true }, + }), + config: { json: true }, + }) + await npm.exec('install-scripts', ['prune']) + + t.strictSame(JSON.parse(joinedOutput()), { + allowScripts: { + removed: [{ key: 'gone', value: true, reason: 'not-installed' }], + dryRun: false, + }, + }) +}) + +t.test('install-scripts prune with nothing unused says so', async t => { + const { npm, prefix, joinedOutput } = await mockNpm(t, { + prefixDir: setupProject({ + withScripts: ['canvas'], + allowScripts: { 'canvas@1.0.0': true }, + }), + }) + await npm.exec('install-scripts', ['prune']) + + const pkg = JSON.parse(fs.readFileSync(resolve(prefix, 'package.json'), 'utf8')) + t.strictSame(pkg.allowScripts, { 'canvas@1.0.0': true }) + t.match(joinedOutput(), /No unused allowScripts entries\./) +}) + +t.test('install-scripts prune with no allowScripts field says so', async t => { + const { npm, joinedOutput } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'] }), + }) + await npm.exec('install-scripts', ['prune']) + t.match(joinedOutput(), /No unused allowScripts entries\./) +}) + +t.test('install-scripts prune rejects positional args', async t => { + const { npm } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'] }), + }) + await t.rejects( + npm.exec('install-scripts', ['prune', 'canvas']), + /cannot be combined with positional arguments/ + ) +}) + +t.test('install-scripts prune rejects --all', async t => { + const { npm } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'] }), + config: { all: true }, + }) + await t.rejects( + npm.exec('install-scripts', ['prune']), + /cannot be combined with positional arguments or `--all`/ + ) +}) + +t.test('install-scripts prune fails for global installs', async t => { + const { npm } = await mockNpm(t, { + prefixDir: setupProject({ withScripts: ['canvas'] }), + config: { global: true }, + }) + await t.rejects( + npm.exec('install-scripts', ['prune']), + { code: 'EGLOBAL' } + ) +}) diff --git a/deps/npm/test/lib/commands/link.js b/deps/npm/test/lib/commands/link.js index 4aaf24c9d0a287..11ed182edd94ba 100644 --- a/deps/npm/test/lib/commands/link.js +++ b/deps/npm/test/lib/commands/link.js @@ -289,6 +289,44 @@ t.test('link global linked pkg to local workspace using args', async t => { t.matchSnapshot(await printLinks(), 'should create a local symlink to global pkg') }) +t.test('link --workspace --save targets the workspace manifest, not the root', async t => { + const { link, prefix } = await mockLink(t, { + globalPrefixDir: { + node_modules: { + a: { + 'package.json': JSON.stringify({ + name: 'a', + version: '1.0.0', + }), + }, + }, + }, + prefixDir: { + 'package.json': JSON.stringify({ + name: 'my-project', + version: '1.0.0', + workspaces: ['packages/*'], + }), + packages: { + x: { + 'package.json': JSON.stringify({ + name: 'x', + version: '1.0.0', + }), + }, + }, + }, + config: { workspace: 'x', save: true }, + }) + + await link.exec(['a']) + + const root = JSON.parse(fs.readFileSync(join(prefix, 'package.json'), 'utf8')) + const ws = JSON.parse(fs.readFileSync(join(prefix, 'packages', 'x', 'package.json'), 'utf8')) + t.notOk(root.dependencies, 'root manifest should not get the dependency') + t.match(ws.dependencies, { a: /^file:/ }, 'workspace manifest should get the file: dependency') +}) + t.test('link pkg already in global space', async t => { const { npm, link, printLinks, prefix } = await mockLink(t, { globalPrefixDir: { @@ -554,3 +592,73 @@ t.test('link threads allowScripts policy through to arborist', async t => { t.strictSame(localOpts.allowScripts, { canvas: true }, 'local arborist opts.allowScripts populated from package.json') }) + +t.test('link threads allowScripts policy to the global install', async t => { + const capturedOpts = [] + const FakeArborist = function (opts) { + capturedOpts.push(opts) + this.options = opts + this.actualTree = { inventory: new Map() } + } + FakeArborist.prototype.loadActual = async () => ({ isLink: false, children: new Map() }) + FakeArborist.prototype.reify = async () => {} + + const mock = await mockNpm(t, { + command: 'link', + prefixDir: { + 'package.json': JSON.stringify({ + name: 'host', + version: '1.0.0', + allowScripts: { canvas: true }, + }), + }, + mocks: { + '@npmcli/arborist': FakeArborist, + '{LIB}/utils/reify-finish.js': async () => {}, + }, + }) + await mock.npm.exec('link', ['canvas']) + // the global Arborist is constructed first; its missing-package install + // must carry the project policy. + t.strictSame(capturedOpts[0].allowScripts, { canvas: true }, + 'global arborist opts.allowScripts populated from package.json') +}) + +t.test('link runs the strict-allow-scripts preflight before the global install', async t => { + // The mocked preflight stands in for strict mode finding an uncovered + // script. It must run and throw before the global reify. + const calls = [] + const FakeArborist = function (opts) { + this.options = opts + this.actualTree = { inventory: new Map() } + } + FakeArborist.prototype.loadActual = async () => ({ isLink: false, children: new Map() }) + FakeArborist.prototype.reify = async () => { + calls.push('reify') + } + + const mock = await mockNpm(t, { + command: 'link', + prefixDir: { + 'package.json': JSON.stringify({ + name: 'host', + version: '1.0.0', + }), + }, + mocks: { + '@npmcli/arborist': FakeArborist, + '{LIB}/utils/reify-finish.js': async () => {}, + '{LIB}/utils/strict-allow-scripts-preflight.js': async () => { + calls.push('preflight') + throw Object.assign(new Error('blocked'), { code: 'ESTRICTALLOWSCRIPTS' }) + }, + }, + }) + await t.rejects( + mock.npm.exec('link', ['canvas']), + { code: 'ESTRICTALLOWSCRIPTS' }, + 'the strict preflight blocks the link' + ) + t.strictSame(calls, ['preflight'], + 'preflight ran and the global reify never executed') +}) diff --git a/deps/npm/test/lib/commands/login.js b/deps/npm/test/lib/commands/login.js index 55568edd09f9d2..4ebc7147e46ae1 100644 --- a/deps/npm/test/lib/commands/login.js +++ b/deps/npm/test/lib/commands/login.js @@ -130,6 +130,19 @@ t.test('web', t => { }) t.match(outputs[0], '/npm-cli-test/login/cli/00000000-0000-0000-0000-000000000000') }) + t.test('proxy registry whose doneUrl points at the canonical registry', async t => { + // Regression for npm/cli#8875: a proxy/mirror returns a doneUrl on registry.npmjs.org. + // npm must poll the configured proxy where the session lives, not the canonical registry. + const proxy = 'https://proxy.registry.example/' + const { npm, registry, login, rc } = await mockLogin(t, { + registry: proxy, + config: { 'auth-type': 'web', registry: proxy }, + }) + registry.weblogin({ token: 'npm_proxy-token', doneRegistry: 'https://registry.npmjs.org' }) + await login.exec([]) + t.same(npm.config.get('//proxy.registry.example/:_authToken'), 'npm_proxy-token') + t.match(rc(), { '//proxy.registry.example/:_authToken': 'npm_proxy-token' }) + }) t.test('server error', async t => { const { registry, login } = await mockLogin(t, { config: { 'auth-type': 'web' }, diff --git a/deps/npm/test/lib/commands/ls.js b/deps/npm/test/lib/commands/ls.js index ab98773bc68e5c..899a2b8169051b 100644 --- a/deps/npm/test/lib/commands/ls.js +++ b/deps/npm/test/lib/commands/ls.js @@ -5332,6 +5332,25 @@ t.test('ls --install-strategy=linked', async t => { node_modules: { 'workspace-a': t.fixture('symlink', '../packages/workspace-a'), // workspace-b intentionally NOT linked (undeclared in dependencies) + // The hidden lockfile a real linked install writes records only the + // declared workspace as linked into root node_modules, so loadActual + // resolves workspace-b's root edge as missing (the undeclared-workspace case). + '.package-lock.json': JSON.stringify({ + lockfileVersion: 3, + requires: true, + packages: { + 'node_modules/workspace-a': { + resolved: 'packages/workspace-a', + link: true, + }, + 'packages/workspace-a': { + version: '1.0.0', + }, + 'packages/workspace-b': { + version: '1.0.0', + }, + }, + }), }, }, }) @@ -5339,6 +5358,7 @@ t.test('ls --install-strategy=linked', async t => { const output = cleanCwd(result()) t.notMatch(output, /UNMET DEPENDENCY/, 'should not report undeclared workspace as UNMET DEPENDENCY') t.match(output, /workspace-a/, 'should list declared workspace') + t.match(output, /workspace-b/, 'should list undeclared workspace (npm/cli#9618)') }) t.test('should not report devDeps of store packages as UNMET DEPENDENCY', async t => { @@ -5397,7 +5417,20 @@ t.test('ls --install-strategy=linked', async t => { }, }, node_modules: { - // workspace-a is declared but its symlink is missing + // workspace-a is declared but its symlink is missing. + // The hidden lockfile records the workspace target without a root + // node_modules link, so loadActual resolves the declared workspace's + // root edge as missing (the declared-but-missing case), which must + // still be reported as UNMET DEPENDENCY. + '.package-lock.json': JSON.stringify({ + lockfileVersion: 3, + requires: true, + packages: { + 'packages/workspace-a': { + version: '1.0.0', + }, + }, + }), }, }, }) diff --git a/deps/npm/test/lib/commands/query.js b/deps/npm/test/lib/commands/query.js index 40dadc88858363..cb9230c93fbcb3 100644 --- a/deps/npm/test/lib/commands/query.js +++ b/deps/npm/test/lib/commands/query.js @@ -160,6 +160,61 @@ t.test('linked node', async t => { t.matchSnapshot(joinedOutput(), 'should return linked node res') }) +t.test('linked strategy reports logical location, not store backing path', async t => { + /* linked layout: nopt (direct) symlinked to its store key, abbrev a transitive dep of nopt */ + const linkedDir = { + prefixDir: { + node_modules: { + nopt: t.fixture('symlink', '.store/nopt-hash/node_modules/nopt'), + '.store': { + 'nopt-hash': { + node_modules: { + nopt: { + 'package.json': JSON.stringify({ + name: 'nopt', + version: '7.2.1', + dependencies: { abbrev: '^2.0.0' }, + }), + }, + abbrev: t.fixture('symlink', '../../abbrev-hash/node_modules/abbrev'), + }, + }, + 'abbrev-hash': { + node_modules: { + abbrev: { + 'package.json': JSON.stringify({ name: 'abbrev', version: '2.0.0' }), + }, + }, + }, + }, + }, + 'package.json': JSON.stringify({ + name: 'project', + version: '1.0.0', + dependencies: { nopt: '^7.0.0' }, + }), + }, + } + + await t.test(':root > * reports the logical link location', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, linkedDir) + await npm.exec('query', [':root > *']) + const res = JSON.parse(joinedOutput()) + t.equal(res.length, 1, 'returns a single result, not the store node duplicate') + t.equal(res[0].location, 'node_modules/nopt', 'reports the logical location') + t.match(res[0].realpath, /\.store/, 'realpath still resolves to the store') + }) + + await t.test(':root * keeps direct deps logical and transitive deps canonical', async t => { + const { npm, joinedOutput } = await loadMockNpm(t, linkedDir) + await npm.exec('query', [':root *']) + const byName = Object.fromEntries(JSON.parse(joinedOutput()).map(n => [n.name, n.location])) + t.equal(byName.nopt, 'node_modules/nopt', 'direct dep keeps its logical location') + t.equal(byName.abbrev, 'node_modules/.store/abbrev-hash/node_modules/abbrev', + 'transitive dep reports its canonical store key, not a consumer symlink') + }) +}) + t.test('global', async t => { const { npm, joinedOutput } = await loadMockNpm(t, { config: { @@ -434,3 +489,24 @@ t.test('missing', async t => { await npm.exec('query', [':missing']) t.matchSnapshot(joinedOutput(), 'should return missing node') }) + +t.test('linked strategy surfaces undeclared workspaces', async t => { + // npm/cli#9618: undeclared workspaces are not symlinked into root node_modules under linked, but must remain visible to `npm query`. + const { npm, joinedOutput } = await loadMockNpm(t, { + config: { 'install-strategy': 'linked' }, + prefixDir: { + 'package.json': JSON.stringify({ + name: 'root', + version: '1.0.0', + workspaces: ['packages/*'], + }), + packages: { + a: { 'package.json': JSON.stringify({ name: 'a', version: '1.0.0' }) }, + b: { 'package.json': JSON.stringify({ name: 'b', version: '1.0.0' }) }, + }, + }, + }) + await npm.exec('query', [':root > *']) + const names = JSON.parse(joinedOutput()).map(n => n.name).sort() + t.same(names, ['a', 'b'], 'both undeclared workspaces are listed') +}) diff --git a/deps/npm/test/lib/commands/token.js b/deps/npm/test/lib/commands/token.js index 56ab906d921bec..34297a923c8972 100644 --- a/deps/npm/test/lib/commands/token.js +++ b/deps/npm/test/lib/commands/token.js @@ -13,6 +13,7 @@ const tokens = [ { key: 'abcd1234abcd1234', token: 'efgh5678efgh5678', + name: 'abcd001', cidr_whitelist: null, readonly: false, created: now, @@ -21,6 +22,7 @@ const tokens = [ { key: 'abcd1256', token: 'hgfe8765', + name: 'abcd002', cidr_whitelist: ['192.168.1.1/32'], readonly: true, created: now, @@ -63,9 +65,9 @@ t.test('token list', async t => { registry.getTokens(tokens) await npm.exec('token', []) t.strictSame(outputs, [ - `Token efgh5678efgh5678… with id abcd123 created ${now.slice(0, 10)}`, + `Token efgh5678efgh5678… with id abcd123 name abcd001 created ${now.slice(0, 10)}`, '', - `Token hgfe8765… with id abcd125 created ${now.slice(0, 10)}`, + `Token hgfe8765… with id abcd125 name abcd002 created ${now.slice(0, 10)}`, 'with IP whitelist: 192.168.1.1/32', '', ]) @@ -104,9 +106,9 @@ t.test('token list parseable output', async t => { registry.getTokens(tokens) await npm.exec('token', []) t.strictSame(outputs, [ - 'key\ttoken\tcreated\treadonly\tCIDR whitelist', - `abcd1234abcd1234\tefgh5678efgh5678\t${now}\tfalse\t`, - `abcd1256\thgfe8765\t${now}\ttrue\t192.168.1.1/32`, + 'key\ttoken\tid\tname\tcreated\treadonly\tCIDR whitelist', + `abcd1234abcd1234\tefgh5678efgh5678\tabcd123\tabcd001\t${now}\tfalse\t`, + `abcd1256\thgfe8765\tabcd125\tabcd002\t${now}\ttrue\t192.168.1.1/32`, ]) }) diff --git a/deps/npm/test/lib/utils/allow-scripts-prune.js b/deps/npm/test/lib/utils/allow-scripts-prune.js new file mode 100644 index 00000000000000..880b1dfe343717 --- /dev/null +++ b/deps/npm/test/lib/utils/allow-scripts-prune.js @@ -0,0 +1,90 @@ +const t = require('tap') +const { classifyUnusedEntries } = require('../../../lib/utils/allow-scripts-prune.js') + +// Minimal registry node: `matches` derives name/version from the resolved URL. +const node = ({ name = 'pkg', version = '1.0.0' } = {}) => ({ + name, + version, + isRegistryDependency: true, + resolved: `https://registry.npmjs.org/${name}/-/${name}-${version}.tgz`, +}) + +const withScripts = (overrides) => ({ node: node(overrides), hasScripts: true }) +const noScripts = (overrides) => ({ node: node(overrides), hasScripts: false }) + +t.test('empty / nullish policy', t => { + t.same(classifyUnusedEntries({}, []), { remaining: {}, removed: [] }) + t.same(classifyUnusedEntries(null, []), { remaining: {}, removed: [] }) + t.same(classifyUnusedEntries(undefined, [withScripts()]), { remaining: {}, removed: [] }) + t.end() +}) + +t.test('keeps entries that match an installed package with scripts', t => { + const { remaining, removed } = classifyUnusedEntries( + { canvas: true, 'esbuild@1.0.0': true }, + [withScripts({ name: 'canvas' }), withScripts({ name: 'esbuild', version: '1.0.0' })] + ) + t.same(remaining, { canvas: true, 'esbuild@1.0.0': true }) + t.same(removed, []) + t.end() +}) + +t.test('removes entries for packages no longer installed', t => { + const { remaining, removed } = classifyUnusedEntries( + { canvas: true, gone: true }, + [withScripts({ name: 'canvas' })] + ) + t.same(remaining, { canvas: true }) + t.same(removed, [{ key: 'gone', value: true, reason: 'not-installed' }]) + t.end() +}) + +t.test('removes entries whose package no longer has install scripts', t => { + const { remaining, removed } = classifyUnusedEntries( + { canvas: true }, + [noScripts({ name: 'canvas' })] + ) + t.same(remaining, {}) + t.same(removed, [{ key: 'canvas', value: true, reason: 'no-scripts' }]) + t.end() +}) + +t.test('a matching version with scripts keeps the entry even if another lacks them', t => { + const { remaining, removed } = classifyUnusedEntries( + { canvas: true }, + [noScripts({ name: 'canvas', version: '1.0.0' }), withScripts({ name: 'canvas', version: '2.0.0' })] + ) + t.same(remaining, { canvas: true }) + t.same(removed, []) + t.end() +}) + +t.test('version-pinned entry is unused when that exact version is not installed', t => { + const { remaining, removed } = classifyUnusedEntries( + { 'canvas@1.0.0': true }, + [withScripts({ name: 'canvas', version: '2.0.0' })] + ) + t.same(remaining, {}) + t.same(removed, [{ key: 'canvas@1.0.0', value: true, reason: 'not-installed' }]) + t.end() +}) + +t.test('prunes unused deny (false) entries the same way', t => { + const { remaining, removed } = classifyUnusedEntries( + { 'denied-gone': false, 'denied-here': false }, + [withScripts({ name: 'denied-here' })] + ) + t.same(remaining, { 'denied-here': false }) + t.same(removed, [{ key: 'denied-gone', value: false, reason: 'not-installed' }]) + t.end() +}) + +t.test('keeps unparseable keys untouched', t => { + const { remaining, removed } = classifyUnusedEntries( + { 'a b': true, gone: true }, + [withScripts({ name: 'canvas' })] + ) + t.same(remaining, { 'a b': true }) + t.same(removed, [{ key: 'gone', value: true, reason: 'not-installed' }]) + t.end() +}) diff --git a/deps/npm/test/lib/utils/allow-scripts-writer.js b/deps/npm/test/lib/utils/allow-scripts-writer.js index f72a84eef113ba..8edf25be3079c7 100644 --- a/deps/npm/test/lib/utils/allow-scripts-writer.js +++ b/deps/npm/test/lib/utils/allow-scripts-writer.js @@ -24,6 +24,23 @@ const node = (overrides = {}) => { } } +// A registry node with no `resolved` URL in the lockfile. Its trusted name +// comes from a dependency edge, but its version isn't trustable, so +// versionedKeyFor returns null (npm/cli#9558). +const noResolvedNode = (overrides = {}) => { + const name = overrides.name ?? 'pkg' + const version = overrides.version ?? '1.0.0' + return { + name, + packageName: overrides.packageName ?? name, + version, + resolved: undefined, + location: `node_modules/${name}`, + isRegistryDependency: true, + edgesIn: new Set([{ name, spec: overrides.spec ?? `^${version}` }]), + } +} + t.test('nameKeyFor / versionedKeyFor — registry', async t => { const n = node({ name: 'canvas', version: '2.11.0' }) t.equal(nameKeyFor(n), 'canvas') @@ -214,6 +231,73 @@ t.test('applyApprovalForPackage — keeps existing pin matching one installed, a t.strictSame(allowScripts, { 'lodash@3.10.1': true, 'lodash@4.17.21': true }) }) +t.test('versionedKeyFor — registry dep without a resolved URL has no trustable version', async t => { + const n = noResolvedNode({ name: 'esbuild', version: '0.25.0' }) + t.equal(nameKeyFor(n), 'esbuild', 'name still recoverable from the dependency edge') + t.equal(versionedKeyFor(n), null, 'version cannot be trusted without a resolved URL') +}) + +t.test('applyApprovalForPackage — pin mode falls back to name-only when version is not trustable', async t => { + const { allowScripts, changes, warning } = applyApprovalForPackage( + {}, + [noResolvedNode({ name: 'esbuild', version: '0.25.0' })], + { pin: true } + ) + t.strictSame(allowScripts, { esbuild: true }, 'approved by name instead of silently skipped') + t.strictSame(changes, [{ key: 'esbuild', change: 'added' }]) + t.match(warning, /no "resolved" URL/, 'explains why a pin was not written') +}) + +t.test('applyApprovalForPackage — mixed resolved/no-resolved collapses to one name-only entry', async t => { + const { allowScripts, warning } = applyApprovalForPackage( + {}, + [ + node({ name: 'esbuild', version: '0.21.5' }), + noResolvedNode({ name: 'esbuild', version: '0.25.0' }), + ], + { pin: true } + ) + t.strictSame(allowScripts, { esbuild: true }, 'no redundant pin alongside the name-only entry') + t.match(warning, /no "resolved" URL/) +}) + +t.test('applyApprovalForPackage — existing pin collapses into name-only when a sibling cannot be pinned', async t => { + const { allowScripts, changes } = applyApprovalForPackage( + { 'esbuild@0.21.5': true }, + [ + node({ name: 'esbuild', version: '0.21.5' }), + noResolvedNode({ name: 'esbuild', version: '0.25.0' }), + ], + { pin: true } + ) + t.strictSame(allowScripts, { esbuild: true }) + t.match(changes, [ + { key: 'esbuild@0.21.5', change: 'removed-pinned-allow' }, + { key: 'esbuild', change: 'added' }, + ]) +}) + +t.test('applyApprovalForPackage — no-resolved dep already approved by name is a no-op', async t => { + const { allowScripts, changes } = applyApprovalForPackage( + { esbuild: true }, + [noResolvedNode({ name: 'esbuild', version: '0.25.0' })], + { pin: true } + ) + t.strictSame(allowScripts, { esbuild: true }) + t.strictSame(changes, []) +}) + +t.test('applyApprovalForPackage — no-resolved dep with name-only deny still loses to the deny', async t => { + const { allowScripts, changes, warning } = applyApprovalForPackage( + { esbuild: false }, + [noResolvedNode({ name: 'esbuild', version: '0.25.0' })], + { pin: true } + ) + t.strictSame(allowScripts, { esbuild: false }, 'deny wins; nothing approved') + t.strictSame(changes, []) + t.match(warning, /esbuild is denied/) +}) + t.test('applyDenyForPackage — empty allowScripts adds name-only false', async t => { const { allowScripts, changes } = applyDenyForPackage( {}, @@ -620,7 +704,7 @@ t.test('denyWarning branches on key shape per RFC §approve-scripts', async t => { pin: true } ) t.match(pinned.warning, /versioned deny/) - t.match(pinned.warning, /npm deny-scripts canvas/) + t.match(pinned.warning, /npm install-scripts deny canvas/) t.match(pinned.warning, /widen the deny to all versions/) t.match(pinned.warning, /remove the entry/) @@ -631,7 +715,7 @@ t.test('denyWarning branches on key shape per RFC §approve-scripts', async t => { pin: true } ) t.match(multi.warning, /versioned deny/) - t.match(multi.warning, /npm deny-scripts canvas/) + t.match(multi.warning, /npm install-scripts deny canvas/) }) t.test('denyWarning: tag-type key (pkg@latest: false) is name-only', async t => { diff --git a/deps/npm/test/lib/utils/reify-output.js b/deps/npm/test/lib/utils/reify-output.js index 597a03374815ba..0f2be24b0246e2 100644 --- a/deps/npm/test/lib/utils/reify-output.js +++ b/deps/npm/test/lib/utils/reify-output.js @@ -391,6 +391,25 @@ t.test('added packages should be looked up within returned tree', async t => { t.matchSnapshot(out) }) + + t.test('linked store package counted though absent from actualTree', async t => { + const out = await mockReify(t, { + actualTree: { + name: 'foo', + inventory: { + has: () => false, + }, + }, + diff: { + children: [ + { action: 'ADD', ideal: { path: 'test/baz', name: 'baz', isInStore: true, isLink: false, package: { version: '1.0.0' } } }, + { action: 'ADD', ideal: { path: 'test/baz-link', name: 'baz', isInStore: false, isLink: true, package: { version: '1.0.0' } } }, + ], + }, + }) + + t.matchSnapshot(out) + }) }) t.test('prints dedupe difference on dry-run', async t => { @@ -484,7 +503,7 @@ t.test('prints unreviewed install scripts summary', async t => { t.match(warn, /2 packages have install scripts not yet covered/) t.match(warn, /canvas@2\.11\.0 \(install: node-gyp rebuild\)/) t.match(warn, /sharp@0\.33\.2 \(preinstall: pre; postinstall: post\)/) - t.match(warn, /npm approve-scripts --allow-scripts-pending/) + t.match(warn, /npm install-scripts ls/) }) t.test('global install suggests --allow-scripts, not approve-scripts', async t => { diff --git a/deps/npm/test/lib/utils/sbom-cyclonedx.js b/deps/npm/test/lib/utils/sbom-cyclonedx.js index ea569d41c57d8b..f3105e3cd48798 100644 --- a/deps/npm/test/lib/utils/sbom-cyclonedx.js +++ b/deps/npm/test/lib/utils/sbom-cyclonedx.js @@ -257,6 +257,17 @@ t.test('single node - from git url', t => { t.end() }) +t.test('git url with special chars is encoded into the vcs_url qualifier', t => { + const node = { ...root, type: 'git', resolved: 'https://github.com/foo/bar.git?a=b&c=d#1234' } + const res = cyclonedxOutput({ npm, nodes: [node] }) + const { purl } = res.metadata.component + // everything after vcs_url= must be a single percent-encoded value, so the + // committish/query can't leak out as an extra purl qualifier or subpath + t.equal(purl, 'pkg:npm/root@1.0.0?vcs_url=https%3A%2F%2Fgithub.com%2Ffoo%2Fbar.git%3Fa%3Db%26c%3Dd%231234') + t.notMatch(purl.split('vcs_url=')[1], /[#&]/) + t.end() +}) + t.test('single node - no package info', t => { const node = { ...root, package: undefined } const res = cyclonedxOutput({ npm, nodes: [node] }) diff --git a/deps/npm/test/lib/utils/sbom-spdx.js b/deps/npm/test/lib/utils/sbom-spdx.js index d2599b0824510c..1e21c945ca75d5 100644 --- a/deps/npm/test/lib/utils/sbom-spdx.js +++ b/deps/npm/test/lib/utils/sbom-spdx.js @@ -223,6 +223,17 @@ t.test('single node - from git url', t => { t.end() }) +t.test('git url with special chars is encoded into the vcs_url qualifier', t => { + const node = { ...root, type: 'git', resolved: 'https://github.com/foo/bar.git?a=b&c=d#1234' } + const res = spdxOutput({ npm, nodes: [node] }) + const purl = res.packages + .find(p => p.SPDXID === 'SPDXRef-Package-root-1.0.0') + .externalRefs.find(r => r.referenceType === 'purl').referenceLocator + t.equal(purl, 'pkg:npm/root@1.0.0?vcs_url=https%3A%2F%2Fgithub.com%2Ffoo%2Fbar.git%3Fa%3Db%26c%3Dd%231234') + t.notMatch(purl.split('vcs_url=')[1], /[#&]/) + t.end() +}) + t.test('single node - linked', t => { const node = { ...root, isLink: true, target: { edgesOut: [] } } const res = spdxOutput({ npm, nodes: [node] }) diff --git a/deps/npm/test/lib/utils/strict-allow-scripts-preflight.js b/deps/npm/test/lib/utils/strict-allow-scripts-preflight.js index e0c54105f88632..c67a6e4853a12d 100644 --- a/deps/npm/test/lib/utils/strict-allow-scripts-preflight.js +++ b/deps/npm/test/lib/utils/strict-allow-scripts-preflight.js @@ -76,6 +76,19 @@ t.test('throws when unreviewed install scripts exist (idealTree path)', async t ) }) +t.test('passes when the only unreviewed node is inert (platform-incompatible optional dep)', async t => { + // An inert dep is in the ideal tree but removed before any script runs, so + // strict mode must not reject it (npm/cli#9562). + const inertNode = { ...node({ name: 'fsevents' }), inert: true } + const arb = makeArb({ ideal: tree([inertNode]) }) + await preflight({ + arb, + npm: { flatOptions: { strictAllowScripts: true } }, + idealTreeOpts: {}, + }) + t.pass('no error thrown for inert node') +}) + t.test('passes when all install-script nodes are explicitly approved', async t => { const arb = makeArb({ ideal: tree([node({ name: 'canvas' })]), @@ -190,7 +203,7 @@ t.test('error label falls back to node.name when package.version is missing', as ) }) -t.test('project-scoped error suggests approve-scripts / deny-scripts', async t => { +t.test('project-scoped error suggests install-scripts approve / deny', async t => { const arb = makeArb({ ideal: tree([node({ name: 'canvas' })]) }) await t.rejects( preflight({ @@ -198,7 +211,7 @@ t.test('project-scoped error suggests approve-scripts / deny-scripts', async t = npm: { flatOptions: { strictAllowScripts: true } }, idealTreeOpts: {}, }), - { message: /Approve them with `npm approve-scripts`/ } + { message: /Approve them with `npm install-scripts approve`/ } ) }) diff --git a/deps/openssl/README.md b/deps/openssl/README.md index 06f5c71c65d455..c3e48022c604e4 100644 --- a/deps/openssl/README.md +++ b/deps/openssl/README.md @@ -54,6 +54,7 @@ Here is a list of supported architectures for use of ASM in OpenSSL. | linux | ppc64(*1) | linux-ppc64le | o | | linux | s390 | linux32-s390x | o | | linux | s390x | linux64-s390x | o | + | linux | riscv64 | linux64-riscv64 | - | | mac | ia32 | darwin-i386-cc | - | | mac | x64 | darwin64-x86-cc | o | | win | ia32 | VC-WIN32 | - | diff --git a/deps/openssl/config/Makefile b/deps/openssl/config/Makefile index 785db7972dedc8..11f2f7290ba31d 100644 --- a/deps/openssl/config/Makefile +++ b/deps/openssl/config/Makefile @@ -13,9 +13,10 @@ ASM_ARCHS = aix64-gcc-as BSD-x86 BSD-x86_64 \ darwin64-x86_64-cc darwin-i386-cc darwin64-arm64-cc linux-aarch64 \ linux-armv4 linux-elf linux-x86_64 \ linux-ppc64le linux32-s390x linux64-s390x linux64-mips64\ +linux64-riscv64 \ solaris-x86-gcc solaris64-x86_64-gcc VC-WIN64A VC-WIN32 -NO_ASM_ARCHS = VC-WIN64-ARM linux64-riscv64 linux64-loongarch64 +NO_ASM_ARCHS = VC-WIN64-ARM linux64-loongarch64 CC = gcc FAKE_GCC = ../config/fake_gcc.pl diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/apps/progs.c b/deps/openssl/config/archs/linux64-riscv64/asm/apps/progs.c new file mode 100644 index 00000000000000..317acf5bc8b2d0 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/apps/progs.c @@ -0,0 +1,404 @@ +/* + * WARNING: do not edit! + * Generated by apps/progs.pl + * + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "progs.h" + +FUNCTION functions[] = { + {FT_general, "asn1parse", asn1parse_main, asn1parse_options, NULL, NULL}, + {FT_general, "ca", ca_main, ca_options, NULL, NULL}, +#ifndef OPENSSL_NO_SOCK + {FT_general, "ciphers", ciphers_main, ciphers_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_CMP + {FT_general, "cmp", cmp_main, cmp_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_CMS + {FT_general, "cms", cms_main, cms_options, NULL, NULL}, +#endif + {FT_general, "crl", crl_main, crl_options, NULL, NULL}, + {FT_general, "crl2pkcs7", crl2pkcs7_main, crl2pkcs7_options, NULL, NULL}, + {FT_general, "dgst", dgst_main, dgst_options, NULL, NULL}, +#ifndef OPENSSL_NO_DH + {FT_general, "dhparam", dhparam_main, dhparam_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_DSA + {FT_general, "dsa", dsa_main, dsa_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_DSA + {FT_general, "dsaparam", dsaparam_main, dsaparam_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_EC + {FT_general, "ec", ec_main, ec_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_EC + {FT_general, "ecparam", ecparam_main, ecparam_options, NULL, NULL}, +#endif + {FT_general, "enc", enc_main, enc_options, NULL, NULL}, +#ifndef OPENSSL_NO_ENGINE + {FT_general, "engine", engine_main, engine_options, NULL, NULL}, +#endif + {FT_general, "errstr", errstr_main, errstr_options, NULL, NULL}, + {FT_general, "fipsinstall", fipsinstall_main, fipsinstall_options, NULL, NULL}, +#ifndef OPENSSL_NO_DSA + {FT_general, "gendsa", gendsa_main, gendsa_options, NULL, NULL}, +#endif + {FT_general, "genpkey", genpkey_main, genpkey_options, NULL, NULL}, +#ifndef OPENSSL_NO_RSA + {FT_general, "genrsa", genrsa_main, genrsa_options, NULL, NULL}, +#endif + {FT_general, "help", help_main, help_options, NULL, NULL}, + {FT_general, "info", info_main, info_options, NULL, NULL}, + {FT_general, "kdf", kdf_main, kdf_options, NULL, NULL}, + {FT_general, "list", list_main, list_options, NULL, NULL}, + {FT_general, "mac", mac_main, mac_options, NULL, NULL}, + {FT_general, "nseq", nseq_main, nseq_options, NULL, NULL}, +#ifndef OPENSSL_NO_OCSP + {FT_general, "ocsp", ocsp_main, ocsp_options, NULL, NULL}, +#endif + {FT_general, "passwd", passwd_main, passwd_options, NULL, NULL}, + {FT_general, "pkcs12", pkcs12_main, pkcs12_options, NULL, NULL}, + {FT_general, "pkcs7", pkcs7_main, pkcs7_options, NULL, NULL}, + {FT_general, "pkcs8", pkcs8_main, pkcs8_options, NULL, NULL}, + {FT_general, "pkey", pkey_main, pkey_options, NULL, NULL}, + {FT_general, "pkeyparam", pkeyparam_main, pkeyparam_options, NULL, NULL}, + {FT_general, "pkeyutl", pkeyutl_main, pkeyutl_options, NULL, NULL}, + {FT_general, "prime", prime_main, prime_options, NULL, NULL}, + {FT_general, "rand", rand_main, rand_options, NULL, NULL}, + {FT_general, "rehash", rehash_main, rehash_options, NULL, NULL}, + {FT_general, "req", req_main, req_options, NULL, NULL}, + {FT_general, "rsa", rsa_main, rsa_options, NULL, NULL}, +#if !defined(OPENSSL_NO_DEPRECATED_3_0) && !defined(OPENSSL_NO_RSA) + {FT_general, "rsautl", rsautl_main, rsautl_options, "pkeyutl", "3.0"}, +#endif +#ifndef OPENSSL_NO_SOCK + {FT_general, "s_client", s_client_main, s_client_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_SOCK + {FT_general, "s_server", s_server_main, s_server_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_SOCK + {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, +#endif + {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, + {FT_general, "smime", smime_main, smime_options, NULL, NULL}, + {FT_general, "speed", speed_main, speed_options, NULL, NULL}, + {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, +#ifndef OPENSSL_NO_SRP + {FT_general, "srp", srp_main, srp_options, NULL, NULL}, +#endif + {FT_general, "storeutl", storeutl_main, storeutl_options, NULL, NULL}, +#ifndef OPENSSL_NO_TS + {FT_general, "ts", ts_main, ts_options, NULL, NULL}, +#endif + {FT_general, "verify", verify_main, verify_options, NULL, NULL}, + {FT_general, "version", version_main, version_options, NULL, NULL}, + {FT_general, "x509", x509_main, x509_options, NULL, NULL}, +#ifndef OPENSSL_NO_MD2 + {FT_md, "md2", dgst_main, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_MD4 + {FT_md, "md4", dgst_main, NULL, NULL}, +#endif + {FT_md, "md5", dgst_main, NULL, NULL}, + {FT_md, "sha1", dgst_main, NULL, NULL}, + {FT_md, "sha224", dgst_main, NULL, NULL}, + {FT_md, "sha256", dgst_main, NULL, NULL}, + {FT_md, "sha384", dgst_main, NULL, NULL}, + {FT_md, "sha512", dgst_main, NULL, NULL}, + {FT_md, "sha512-224", dgst_main, NULL, NULL}, + {FT_md, "sha512-256", dgst_main, NULL, NULL}, + {FT_md, "sha3-224", dgst_main, NULL, NULL}, + {FT_md, "sha3-256", dgst_main, NULL, NULL}, + {FT_md, "sha3-384", dgst_main, NULL, NULL}, + {FT_md, "sha3-512", dgst_main, NULL, NULL}, + {FT_md, "shake128", dgst_main, NULL, NULL}, + {FT_md, "shake256", dgst_main, NULL, NULL}, +#ifndef OPENSSL_NO_MDC2 + {FT_md, "mdc2", dgst_main, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_RMD160 + {FT_md, "rmd160", dgst_main, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_BLAKE2 + {FT_md, "blake2b512", dgst_main, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_BLAKE2 + {FT_md, "blake2s256", dgst_main, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_SM3 + {FT_md, "sm3", dgst_main, NULL, NULL}, +#endif + {FT_cipher, "aes-128-cbc", enc_main, enc_options, NULL}, + {FT_cipher, "aes-128-ecb", enc_main, enc_options, NULL}, + {FT_cipher, "aes-192-cbc", enc_main, enc_options, NULL}, + {FT_cipher, "aes-192-ecb", enc_main, enc_options, NULL}, + {FT_cipher, "aes-256-cbc", enc_main, enc_options, NULL}, + {FT_cipher, "aes-256-ecb", enc_main, enc_options, NULL}, +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-ctr", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cfb1", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cfb8", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-ctr", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cfb1", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cfb8", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-ctr", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cfb1", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cfb8", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-128-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-128-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-192-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-192-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-256-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, +#endif + {FT_cipher, "base64", enc_main, enc_options, NULL}, +#ifndef OPENSSL_NO_ZLIB + {FT_cipher, "zlib", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des3", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "desx", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC4 + {FT_cipher, "rc4", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC4 + {FT_cipher, "rc4-40", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-64-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-40-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-ctr", enc_main, enc_options, NULL}, +#endif + {0, NULL, NULL, NULL, NULL} +}; diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/configdata.pm b/deps/openssl/config/archs/linux64-riscv64/asm/configdata.pm new file mode 100644 index 00000000000000..4431f75a1afde7 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/configdata.pm @@ -0,0 +1,25808 @@ +#! /usr/bin/env perl +# -*- mode: perl -*- + +package configdata; + +use strict; +use warnings; + +use Exporter; +our @ISA = qw(Exporter); +our @EXPORT = qw( + %config %target %disabled %withargs %unified_info + @disablables @disablables_int +); + +our %config = ( + "AR" => "ar", + "ARFLAGS" => [ + "qc" + ], + "AS" => "as", + "ASFLAGS" => [], + "CC" => "gcc", + "CFLAGS" => [ + "-Wall -O3" + ], + "CPPDEFINES" => [], + "CPPFLAGS" => [], + "CPPINCLUDES" => [], + "CXX" => "g++", + "CXXFLAGS" => [ + "-Wall -O3" + ], + "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", + "HASHBANGPERL" => "/usr/bin/env perl", + "LD" => "ld", + "LDFLAGS" => [], + "LDLIBS" => [], + "OBJCOPY" => "objcopy", + "PERL" => "/usr/bin/perl", + "RANLIB" => "ranlib", + "RC" => "windres", + "RCFLAGS" => [], + "api" => "30500", + "b32" => "0", + "b64" => "0", + "b64l" => "1", + "bn_ll" => "0", + "build_file" => "Makefile", + "build_file_templates" => [ + "Configurations/common0.tmpl", + "Configurations/unix-Makefile.tmpl" + ], + "build_infos" => [ + "./build.info", + "crypto/build.info", + "ssl/build.info", + "apps/build.info", + "util/build.info", + "tools/build.info", + "fuzz/build.info", + "providers/build.info", + "doc/build.info", + "engines/build.info", + "exporters/build.info", + "crypto/objects/build.info", + "crypto/buffer/build.info", + "crypto/bio/build.info", + "crypto/stack/build.info", + "crypto/lhash/build.info", + "crypto/hashtable/build.info", + "crypto/rand/build.info", + "crypto/evp/build.info", + "crypto/asn1/build.info", + "crypto/pem/build.info", + "crypto/x509/build.info", + "crypto/conf/build.info", + "crypto/txt_db/build.info", + "crypto/pkcs7/build.info", + "crypto/pkcs12/build.info", + "crypto/ui/build.info", + "crypto/kdf/build.info", + "crypto/store/build.info", + "crypto/property/build.info", + "crypto/md4/build.info", + "crypto/md5/build.info", + "crypto/sha/build.info", + "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", + "crypto/hmac/build.info", + "crypto/ripemd/build.info", + "crypto/whrlpool/build.info", + "crypto/poly1305/build.info", + "crypto/siphash/build.info", + "crypto/sm3/build.info", + "crypto/des/build.info", + "crypto/aes/build.info", + "crypto/rc2/build.info", + "crypto/rc4/build.info", + "crypto/idea/build.info", + "crypto/aria/build.info", + "crypto/bf/build.info", + "crypto/cast/build.info", + "crypto/camellia/build.info", + "crypto/seed/build.info", + "crypto/sm4/build.info", + "crypto/chacha/build.info", + "crypto/modes/build.info", + "crypto/bn/build.info", + "crypto/ec/build.info", + "crypto/rsa/build.info", + "crypto/dsa/build.info", + "crypto/dh/build.info", + "crypto/sm2/build.info", + "crypto/dso/build.info", + "crypto/engine/build.info", + "crypto/err/build.info", + "crypto/comp/build.info", + "crypto/http/build.info", + "crypto/ocsp/build.info", + "crypto/cms/build.info", + "crypto/ts/build.info", + "crypto/srp/build.info", + "crypto/cmac/build.info", + "crypto/ct/build.info", + "crypto/async/build.info", + "crypto/ess/build.info", + "crypto/crmf/build.info", + "crypto/cmp/build.info", + "crypto/encode_decode/build.info", + "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", + "apps/lib/build.info", + "providers/common/build.info", + "providers/implementations/build.info", + "providers/fips/build.info", + "doc/man1/build.info", + "ssl/record/methods/build.info", + "providers/common/der/build.info", + "providers/implementations/digests/build.info", + "providers/implementations/ciphers/build.info", + "providers/implementations/rands/build.info", + "providers/implementations/macs/build.info", + "providers/implementations/kdfs/build.info", + "providers/implementations/exchange/build.info", + "providers/implementations/keymgmt/build.info", + "providers/implementations/signature/build.info", + "providers/implementations/asymciphers/build.info", + "providers/implementations/encode_decode/build.info", + "providers/implementations/storemgmt/build.info", + "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", + "providers/implementations/rands/seeding/build.info" + ], + "build_metadata" => "", + "build_type" => "release", + "builddir" => ".", + "cflags" => [ + "-Wa,--noexecstack" + ], + "conf_files" => [ + "Configurations/00-base-templates.conf", + "Configurations/10-main.conf" + ], + "cppflags" => [], + "cxxflags" => [], + "defines" => [ + "NDEBUG" + ], + "dynamic_engines" => "0", + "ex_libs" => [], + "full_version" => "3.5.7", + "includes" => [], + "lflags" => [], + "lib_defines" => [ + "OPENSSL_PIC" + ], + "libdir" => "", + "major" => "3", + "makedep_scheme" => "gcc", + "minor" => "5", + "openssl_api_defines" => [ + "OPENSSL_CONFIGURED_API=30500" + ], + "openssl_feature_defines" => [ + "OPENSSL_RAND_SEED_OS", + "OPENSSL_THREADS", + "OPENSSL_NO_AFALGENG", + "OPENSSL_NO_ASAN", + "OPENSSL_NO_BROTLI_DYNAMIC", + "OPENSSL_NO_CRYPTO_MDEBUG", + "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", + "OPENSSL_NO_DEVCRYPTOENG", + "OPENSSL_NO_EC_NISTP_64_GCC_128", + "OPENSSL_NO_EGD", + "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", + "OPENSSL_NO_FUZZ_AFL", + "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", + "OPENSSL_NO_KTLS", + "OPENSSL_NO_LOADERENG", + "OPENSSL_NO_MD2", + "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", + "OPENSSL_NO_RC5", + "OPENSSL_NO_SCTP", + "OPENSSL_NO_SSL3", + "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TESTS", + "OPENSSL_NO_TFO", + "OPENSSL_NO_TRACE", + "OPENSSL_NO_UBSAN", + "OPENSSL_NO_UNIT_TEST", + "OPENSSL_NO_UPLINK", + "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_WINSTORE", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD_DYNAMIC", + "OPENSSL_NO_DYNAMIC_ENGINE" + ], + "openssl_other_defines" => [ + "OPENSSL_NO_KTLS" + ], + "openssl_sys_defines" => [], + "openssldir" => "", + "options" => "enable-ssl-trace enable-fips enable-zlib --with-zlib-include=../../zlib enable-brotli --with-brotli-include=../../brotli/c/include enable-zstd --with-zstd-include=../../zstd/lib no-afalgeng no-asan no-brotli-dynamic no-buildtest-c++ no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tests no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib-dynamic no-zstd-dynamic", + "patch" => "7", + "perl_archname" => "x86_64-linux-thread-multi", + "perl_cmd" => "/usr/bin/perl", + "perl_version" => "5.42.2", + "perlargv" => [ + "no-tests", + "no-shared", + "no-afalgeng", + "enable-ssl-trace", + "enable-fips", + "zlib", + "--with-zlib-include=../../zlib", + "enable-brotli", + "--with-brotli-include=../../brotli/c/include", + "enable-zstd", + "--with-zstd-include=../../zstd/lib", + "linux64-riscv64" + ], + "perlenv" => { + "AR" => "ar", + "ARFLAGS" => undef, + "AS" => "as", + "ASFLAGS" => undef, + "BUILDFILE" => undef, + "CC" => "gcc", + "CFLAGS" => undef, + "CPP" => undef, + "CPPDEFINES" => undef, + "CPPFLAGS" => undef, + "CPPINCLUDES" => undef, + "CROSS_COMPILE" => undef, + "CXX" => "g++", + "CXXFLAGS" => undef, + "HASHBANGPERL" => undef, + "LD" => "ld", + "LDFLAGS" => undef, + "LDLIBS" => undef, + "MT" => undef, + "MTFLAGS" => undef, + "OBJCOPY" => "objcopy", + "OPENSSL_LOCAL_CONFIG_DIR" => undef, + "PERL" => undef, + "RANLIB" => "ranlib", + "RC" => undef, + "RCFLAGS" => undef, + "RM" => undef, + "WINDRES" => undef, + "__CNF_CFLAGS" => undef, + "__CNF_CPPDEFINES" => undef, + "__CNF_CPPFLAGS" => undef, + "__CNF_CPPINCLUDES" => undef, + "__CNF_CXXFLAGS" => undef, + "__CNF_LDFLAGS" => undef, + "__CNF_LDLIBS" => undef + }, + "prefix" => "", + "prerelease" => "", + "processor" => "", + "rc4_int" => "unsigned char", + "release_date" => "9 Jun 2026", + "shlib_version" => "3", + "sourcedir" => ".", + "target" => "linux64-riscv64", + "version" => "3.5.7" +); +our %target = ( + "AR" => "ar", + "ARFLAGS" => "qc", + "CC" => "gcc", + "CFLAGS" => "-Wall -O3", + "CXX" => "g++", + "CXXFLAGS" => "-Wall -O3", + "HASHBANGPERL" => "/usr/bin/env perl", + "OBJCOPY" => "objcopy", + "RANLIB" => "ranlib", + "RC" => "windres", + "_conf_fname_int" => [ + "Configurations/00-base-templates.conf", + "Configurations/00-base-templates.conf", + "Configurations/10-main.conf", + "Configurations/10-main.conf", + "Configurations/10-main.conf", + "Configurations/shared-info.pl" + ], + "asm_arch" => "riscv64", + "bin_cflags" => "", + "bin_lflags" => "", + "bn_ops" => "SIXTY_FOUR_BIT_LONG RC4_CHAR", + "build_file" => "Makefile", + "build_scheme" => [ + "unified", + "unix" + ], + "cflags" => "-pthread", + "cppflags" => "", + "cxxflags" => "-std=c++11 -pthread", + "defines" => [ + "OPENSSL_BUILDING_OPENSSL", + "BROTLI", + "ZLIB", + "ZSTD" + ], + "disable" => [], + "dso_ldflags" => "-Wl,-z,defs", + "dso_scheme" => "dlfcn", + "enable" => [ + "afalgeng" + ], + "ex_libs" => "-lz -lbrotlienc -lbrotlidec -lbrotlicommon -lm -lzstd -ldl -pthread", + "includes" => [ + "../../brotli/c/include", + "../../zlib", + "../../zstd/lib" + ], + "lflags" => "", + "lib_cflags" => "", + "lib_cppflags" => "-DOPENSSL_USE_NODELETE", + "lib_defines" => [], + "module_cflags" => "-fPIC", + "module_cxxflags" => undef, + "module_ldflags" => "-Wl,-znodelete -shared -Wl,-Bsymbolic", + "perl_platform" => "Unix", + "perlasm_scheme" => "linux64", + "shared_cflag" => "-fPIC", + "shared_defflag" => "-Wl,--version-script=", + "shared_defines" => [], + "shared_ldflag" => "-Wl,-znodelete -shared -Wl,-Bsymbolic", + "shared_rcflag" => "", + "shared_sonameflag" => "-Wl,-soname=", + "shared_target" => "linux-shared", + "template" => "1", + "thread_defines" => [], + "thread_scheme" => "pthreads", + "unistd" => "" +); +our @disablables = ( + "acvp-tests", + "afalgeng", + "apps", + "argon2", + "aria", + "asan", + "asm", + "async", + "atexit", + "autoalginit", + "autoerrinit", + "autoload-config", + "bf", + "blake2", + "brotli", + "brotli-dynamic", + "buildtest-c++", + "bulk", + "cached-fetch", + "camellia", + "capieng", + "winstore", + "cast", + "chacha", + "cmac", + "cmp", + "cms", + "comp", + "crypto-mdebug", + "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", + "deprecated", + "des", + "devcryptoeng", + "dgram", + "dh", + "docs", + "dsa", + "dso", + "dtls", + "dynamic-engine", + "ec", + "ec2m", + "ec_nistp_64_gcc_128", + "ecdh", + "ecdsa", + "ecx", + "egd", + "engine", + "err", + "external-tests", + "filenames", + "fips", + "fips-securitychecks", + "fips-post", + "fips-jitter", + "fuzz-afl", + "fuzz-libfuzzer", + "gost", + "http", + "idea", + "integrity-only-ciphers", + "jitter", + "ktls", + "legacy", + "loadereng", + "makedepend", + "md2", + "md4", + "mdc2", + "ml-dsa", + "ml-kem", + "module", + "msan", + "multiblock", + "nextprotoneg", + "ocb", + "ocsp", + "padlockeng", + "pic", + "pie", + "pinshared", + "poly1305", + "posix-io", + "psk", + "quic", + "unstable-qlog", + "rc2", + "rc4", + "rc5", + "rdrand", + "rfc3779", + "rmd160", + "scrypt", + "sctp", + "secure-memory", + "seed", + "shared", + "siphash", + "siv", + "slh-dsa", + "sm2", + "sm2-precomp", + "sm3", + "sm4", + "sock", + "srp", + "srtp", + "sse2", + "ssl", + "ssl-trace", + "static-engine", + "stdio", + "sslkeylog", + "tests", + "tfo", + "thread-pool", + "threads", + "tls", + "tls-deprecated-ec", + "trace", + "ts", + "ubsan", + "ui-console", + "unit-test", + "uplink", + "weak-ssl-ciphers", + "whirlpool", + "zlib", + "zlib-dynamic", + "zstd", + "zstd-dynamic", + "ssl3", + "ssl3-method", + "tls1", + "tls1-method", + "tls1_1", + "tls1_1-method", + "tls1_2", + "tls1_2-method", + "tls1_3", + "dtls1", + "dtls1-method", + "dtls1_2", + "dtls1_2-method" +); +our @disablables_int = ( + "crmf" +); +our %disabled = ( + "afalgeng" => "option", + "asan" => "default", + "brotli-dynamic" => "default", + "buildtest-c++" => "default", + "crypto-mdebug" => "default", + "crypto-mdebug-backtrace" => "default", + "demos" => "default", + "devcryptoeng" => "default", + "dynamic-engine" => "cascade", + "ec_nistp_64_gcc_128" => "default", + "egd" => "default", + "external-tests" => "default", + "fips-jitter" => "default", + "fuzz-afl" => "default", + "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", + "ktls" => "default", + "loadereng" => "cascade", + "md2" => "default", + "msan" => "default", + "pie" => "default", + "rc5" => "default", + "sctp" => "default", + "shared" => "option", + "ssl3" => "default", + "ssl3-method" => "default", + "sslkeylog" => "default", + "tests" => "option", + "tfo" => "default", + "trace" => "default", + "ubsan" => "default", + "unit-test" => "default", + "uplink" => "no uplink_arch", + "weak-ssl-ciphers" => "default", + "winstore" => "not-windows", + "zlib-dynamic" => "default", + "zstd-dynamic" => "default" +); +our %withargs = ( + "brotli_include" => "../../brotli/c/include", + "zlib_include" => "../../zlib", + "zstd_include" => "../../zstd/lib" +); +our %unified_info = ( + "attributes" => { + "depends" => { + "doc/man1/openssl-asn1parse.pod" => { + "doc/man1/openssl-asn1parse.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-ca.pod" => { + "doc/man1/openssl-ca.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-ciphers.pod" => { + "doc/man1/openssl-ciphers.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-cmds.pod" => { + "doc/man1/openssl-cmds.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-cmp.pod" => { + "doc/man1/openssl-cmp.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-cms.pod" => { + "doc/man1/openssl-cms.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-crl.pod" => { + "doc/man1/openssl-crl.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-crl2pkcs7.pod" => { + "doc/man1/openssl-crl2pkcs7.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-dgst.pod" => { + "doc/man1/openssl-dgst.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-dhparam.pod" => { + "doc/man1/openssl-dhparam.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-dsa.pod" => { + "doc/man1/openssl-dsa.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-dsaparam.pod" => { + "doc/man1/openssl-dsaparam.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-ec.pod" => { + "doc/man1/openssl-ec.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-ecparam.pod" => { + "doc/man1/openssl-ecparam.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-enc.pod" => { + "doc/man1/openssl-enc.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-engine.pod" => { + "doc/man1/openssl-engine.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-errstr.pod" => { + "doc/man1/openssl-errstr.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-fipsinstall.pod" => { + "doc/man1/openssl-fipsinstall.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-gendsa.pod" => { + "doc/man1/openssl-gendsa.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-genpkey.pod" => { + "doc/man1/openssl-genpkey.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-genrsa.pod" => { + "doc/man1/openssl-genrsa.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-info.pod" => { + "doc/man1/openssl-info.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-kdf.pod" => { + "doc/man1/openssl-kdf.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-list.pod" => { + "doc/man1/openssl-list.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-mac.pod" => { + "doc/man1/openssl-mac.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-nseq.pod" => { + "doc/man1/openssl-nseq.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-ocsp.pod" => { + "doc/man1/openssl-ocsp.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-passwd.pod" => { + "doc/man1/openssl-passwd.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-pkcs12.pod" => { + "doc/man1/openssl-pkcs12.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-pkcs7.pod" => { + "doc/man1/openssl-pkcs7.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-pkcs8.pod" => { + "doc/man1/openssl-pkcs8.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-pkey.pod" => { + "doc/man1/openssl-pkey.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-pkeyparam.pod" => { + "doc/man1/openssl-pkeyparam.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-pkeyutl.pod" => { + "doc/man1/openssl-pkeyutl.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-prime.pod" => { + "doc/man1/openssl-prime.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-rand.pod" => { + "doc/man1/openssl-rand.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-rehash.pod" => { + "doc/man1/openssl-rehash.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-req.pod" => { + "doc/man1/openssl-req.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-rsa.pod" => { + "doc/man1/openssl-rsa.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-rsautl.pod" => { + "doc/man1/openssl-rsautl.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-s_client.pod" => { + "doc/man1/openssl-s_client.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-s_server.pod" => { + "doc/man1/openssl-s_server.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-s_time.pod" => { + "doc/man1/openssl-s_time.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-sess_id.pod" => { + "doc/man1/openssl-sess_id.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-smime.pod" => { + "doc/man1/openssl-smime.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-speed.pod" => { + "doc/man1/openssl-speed.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-spkac.pod" => { + "doc/man1/openssl-spkac.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-srp.pod" => { + "doc/man1/openssl-srp.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-storeutl.pod" => { + "doc/man1/openssl-storeutl.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-ts.pod" => { + "doc/man1/openssl-ts.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-verify.pod" => { + "doc/man1/openssl-verify.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-version.pod" => { + "doc/man1/openssl-version.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-x509.pod" => { + "doc/man1/openssl-x509.pod.in" => { + "pod" => "1" + } + }, + "doc/man7/openssl_user_macros.pod" => { + "doc/man7/openssl_user_macros.pod.in" => { + "pod" => "1" + } + }, + "providers/libcommon.a" => { + "libcrypto" => { + "weak" => "1" + } + } + }, + "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, + "include/openssl/configuration.h" => { + "skip" => "1" + } + }, + "libraries" => { + "apps/libapps.a" => { + "noinst" => "1" + }, + "providers/libcommon.a" => { + "noinst" => "1" + }, + "providers/libdefault.a" => { + "noinst" => "1" + }, + "providers/libfips.a" => { + "noinst" => "1" + }, + "providers/liblegacy.a" => { + "noinst" => "1" + }, + "providers/libtemplate.a" => { + "noinst" => "1" + } + }, + "modules" => { + "providers/fips" => { + "fips" => "1" + } + }, + "scripts" => { + "apps/CA.pl" => { + "misc" => "1" + }, + "apps/tsget.pl" => { + "linkname" => "tsget", + "misc" => "1" + }, + "util/shlib_wrap.sh" => { + "noinst" => "1" + }, + "util/wrap.pl" => { + "noinst" => "1" + } + }, + "sources" => { + "apps/openssl" => { + "apps/openssl-bin-progs.o" => { + "nocheck" => "1" + } + }, + "apps/openssl-bin-progs.o" => { + "apps/progs.c" => { + "nocheck" => "1" + } + }, + "apps/progs.o" => {} + } + }, + "defines" => { + "libcrypto" => [ + "AES_ASM", + "GHASH_ASM", + "INCLUDE_C_CHACHA20", + "INCLUDE_C_SHA256", + "INCLUDE_C_SHA512", + "OPENSSL_CPUID_OBJ", + "OPENSSL_SM3_ASM", + "SHA256_ASM", + "SHA512_ASM", + "SM4_ASM" + ], + "providers/fips" => [ + "FIPS_MODULE" + ], + "providers/libcommon.a" => [ + "OPENSSL_CPUID_OBJ" + ], + "providers/libdefault.a" => [ + "AES_ASM", + "GHASH_ASM", + "INCLUDE_C_SHA256", + "INCLUDE_C_SHA512", + "OPENSSL_CPUID_OBJ", + "SHA256_ASM", + "SHA512_ASM", + "SM4_ASM" + ], + "providers/libfips.a" => [ + "AES_ASM", + "FIPS_MODULE", + "GHASH_ASM", + "INCLUDE_C_SHA256", + "INCLUDE_C_SHA512", + "OPENSSL_CPUID_OBJ", + "SHA256_ASM", + "SHA512_ASM", + "SM4_ASM" + ] + }, + "depends" => { + "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", + "include/crypto/bn_conf.h", + "include/crypto/dso_conf.h", + "include/internal/param_names.h", + "include/openssl/asn1.h", + "include/openssl/asn1t.h", + "include/openssl/bio.h", + "include/openssl/cmp.h", + "include/openssl/cms.h", + "include/openssl/comp.h", + "include/openssl/conf.h", + "include/openssl/core_names.h", + "include/openssl/crmf.h", + "include/openssl/crypto.h", + "include/openssl/ct.h", + "include/openssl/err.h", + "include/openssl/ess.h", + "include/openssl/fipskey.h", + "include/openssl/lhash.h", + "include/openssl/ocsp.h", + "include/openssl/opensslv.h", + "include/openssl/pkcs12.h", + "include/openssl/pkcs7.h", + "include/openssl/safestack.h", + "include/openssl/srp.h", + "include/openssl/ssl.h", + "include/openssl/ui.h", + "include/openssl/x509.h", + "include/openssl/x509_acert.h", + "include/openssl/x509_vfy.h", + "include/openssl/x509v3.h", + "openssl.pc" + ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/lib/openssl-bin-cmp_mock_srv.o" => [ + "apps/progs.h" + ], + "apps/openssl" => [ + "apps/libapps.a", + "libssl" + ], + "apps/openssl-bin-asn1parse.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-ca.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-ciphers.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-cmp.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-cms.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-crl.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-crl2pkcs7.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-dgst.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-dhparam.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-dsa.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-dsaparam.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-ec.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-ecparam.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-enc.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-engine.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-errstr.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-fipsinstall.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-gendsa.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-genpkey.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-genrsa.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-info.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-kdf.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-list.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-mac.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-nseq.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-ocsp.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-openssl.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-passwd.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-pkcs12.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-pkcs7.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-pkcs8.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-pkey.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-pkeyparam.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-pkeyutl.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-prime.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-progs.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-rand.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-rehash.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-req.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-rsa.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-rsautl.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-s_client.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-s_server.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-s_time.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-sess_id.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-smime.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-speed.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-spkac.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-srp.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-storeutl.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-ts.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-verify.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-version.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-x509.o" => [ + "apps/progs.h" + ], + "apps/progs.c" => [ + "configdata.pm" + ], + "apps/progs.h" => [ + "apps/progs.c" + ], + "build_modules_nodep" => [ + "providers/fipsmodule.cnf" + ], + "crypto/aes/aes-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/aes/aesni-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/aes/aest4-sparcv9.S" => [ + "crypto/perlasm/sparcv9_modes.pl" + ], + "crypto/aes/vpaes-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/bf/bf-586.S" => [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl" + ], + "crypto/bn/bn-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/bn/co-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/bn/x86-gf2m.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/bn/x86-mont.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/camellia/cmll-x86.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/camellia/cmllt4-sparcv9.S" => [ + "crypto/perlasm/sparcv9_modes.pl" + ], + "crypto/cast/cast-586.S" => [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl" + ], + "crypto/des/crypt586.S" => [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl" + ], + "crypto/des/des-586.S" => [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl" + ], + "crypto/libcrypto-lib-cversion.o" => [ + "crypto/buildinf.h" + ], + "crypto/libcrypto-lib-info.o" => [ + "crypto/buildinf.h" + ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "crypto/rc4/rc4-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/ripemd/rmd-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/sha/sha1-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/sha/sha256-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/sha/sha512-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/whrlpool/wp-mmx.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/x86cpuid.s" => [ + "crypto/perlasm/x86asm.pl" + ], + "doc/html/man1/CA.pl.html" => [ + "doc/man1/CA.pl.pod" + ], + "doc/html/man1/openssl-asn1parse.html" => [ + "doc/man1/openssl-asn1parse.pod" + ], + "doc/html/man1/openssl-ca.html" => [ + "doc/man1/openssl-ca.pod" + ], + "doc/html/man1/openssl-ciphers.html" => [ + "doc/man1/openssl-ciphers.pod" + ], + "doc/html/man1/openssl-cmds.html" => [ + "doc/man1/openssl-cmds.pod" + ], + "doc/html/man1/openssl-cmp.html" => [ + "doc/man1/openssl-cmp.pod" + ], + "doc/html/man1/openssl-cms.html" => [ + "doc/man1/openssl-cms.pod" + ], + "doc/html/man1/openssl-crl.html" => [ + "doc/man1/openssl-crl.pod" + ], + "doc/html/man1/openssl-crl2pkcs7.html" => [ + "doc/man1/openssl-crl2pkcs7.pod" + ], + "doc/html/man1/openssl-dgst.html" => [ + "doc/man1/openssl-dgst.pod" + ], + "doc/html/man1/openssl-dhparam.html" => [ + "doc/man1/openssl-dhparam.pod" + ], + "doc/html/man1/openssl-dsa.html" => [ + "doc/man1/openssl-dsa.pod" + ], + "doc/html/man1/openssl-dsaparam.html" => [ + "doc/man1/openssl-dsaparam.pod" + ], + "doc/html/man1/openssl-ec.html" => [ + "doc/man1/openssl-ec.pod" + ], + "doc/html/man1/openssl-ecparam.html" => [ + "doc/man1/openssl-ecparam.pod" + ], + "doc/html/man1/openssl-enc.html" => [ + "doc/man1/openssl-enc.pod" + ], + "doc/html/man1/openssl-engine.html" => [ + "doc/man1/openssl-engine.pod" + ], + "doc/html/man1/openssl-errstr.html" => [ + "doc/man1/openssl-errstr.pod" + ], + "doc/html/man1/openssl-fipsinstall.html" => [ + "doc/man1/openssl-fipsinstall.pod" + ], + "doc/html/man1/openssl-format-options.html" => [ + "doc/man1/openssl-format-options.pod" + ], + "doc/html/man1/openssl-gendsa.html" => [ + "doc/man1/openssl-gendsa.pod" + ], + "doc/html/man1/openssl-genpkey.html" => [ + "doc/man1/openssl-genpkey.pod" + ], + "doc/html/man1/openssl-genrsa.html" => [ + "doc/man1/openssl-genrsa.pod" + ], + "doc/html/man1/openssl-info.html" => [ + "doc/man1/openssl-info.pod" + ], + "doc/html/man1/openssl-kdf.html" => [ + "doc/man1/openssl-kdf.pod" + ], + "doc/html/man1/openssl-list.html" => [ + "doc/man1/openssl-list.pod" + ], + "doc/html/man1/openssl-mac.html" => [ + "doc/man1/openssl-mac.pod" + ], + "doc/html/man1/openssl-namedisplay-options.html" => [ + "doc/man1/openssl-namedisplay-options.pod" + ], + "doc/html/man1/openssl-nseq.html" => [ + "doc/man1/openssl-nseq.pod" + ], + "doc/html/man1/openssl-ocsp.html" => [ + "doc/man1/openssl-ocsp.pod" + ], + "doc/html/man1/openssl-passphrase-options.html" => [ + "doc/man1/openssl-passphrase-options.pod" + ], + "doc/html/man1/openssl-passwd.html" => [ + "doc/man1/openssl-passwd.pod" + ], + "doc/html/man1/openssl-pkcs12.html" => [ + "doc/man1/openssl-pkcs12.pod" + ], + "doc/html/man1/openssl-pkcs7.html" => [ + "doc/man1/openssl-pkcs7.pod" + ], + "doc/html/man1/openssl-pkcs8.html" => [ + "doc/man1/openssl-pkcs8.pod" + ], + "doc/html/man1/openssl-pkey.html" => [ + "doc/man1/openssl-pkey.pod" + ], + "doc/html/man1/openssl-pkeyparam.html" => [ + "doc/man1/openssl-pkeyparam.pod" + ], + "doc/html/man1/openssl-pkeyutl.html" => [ + "doc/man1/openssl-pkeyutl.pod" + ], + "doc/html/man1/openssl-prime.html" => [ + "doc/man1/openssl-prime.pod" + ], + "doc/html/man1/openssl-rand.html" => [ + "doc/man1/openssl-rand.pod" + ], + "doc/html/man1/openssl-rehash.html" => [ + "doc/man1/openssl-rehash.pod" + ], + "doc/html/man1/openssl-req.html" => [ + "doc/man1/openssl-req.pod" + ], + "doc/html/man1/openssl-rsa.html" => [ + "doc/man1/openssl-rsa.pod" + ], + "doc/html/man1/openssl-rsautl.html" => [ + "doc/man1/openssl-rsautl.pod" + ], + "doc/html/man1/openssl-s_client.html" => [ + "doc/man1/openssl-s_client.pod" + ], + "doc/html/man1/openssl-s_server.html" => [ + "doc/man1/openssl-s_server.pod" + ], + "doc/html/man1/openssl-s_time.html" => [ + "doc/man1/openssl-s_time.pod" + ], + "doc/html/man1/openssl-sess_id.html" => [ + "doc/man1/openssl-sess_id.pod" + ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], + "doc/html/man1/openssl-smime.html" => [ + "doc/man1/openssl-smime.pod" + ], + "doc/html/man1/openssl-speed.html" => [ + "doc/man1/openssl-speed.pod" + ], + "doc/html/man1/openssl-spkac.html" => [ + "doc/man1/openssl-spkac.pod" + ], + "doc/html/man1/openssl-srp.html" => [ + "doc/man1/openssl-srp.pod" + ], + "doc/html/man1/openssl-storeutl.html" => [ + "doc/man1/openssl-storeutl.pod" + ], + "doc/html/man1/openssl-ts.html" => [ + "doc/man1/openssl-ts.pod" + ], + "doc/html/man1/openssl-verification-options.html" => [ + "doc/man1/openssl-verification-options.pod" + ], + "doc/html/man1/openssl-verify.html" => [ + "doc/man1/openssl-verify.pod" + ], + "doc/html/man1/openssl-version.html" => [ + "doc/man1/openssl-version.pod" + ], + "doc/html/man1/openssl-x509.html" => [ + "doc/man1/openssl-x509.pod" + ], + "doc/html/man1/openssl.html" => [ + "doc/man1/openssl.pod" + ], + "doc/html/man1/tsget.html" => [ + "doc/man1/tsget.pod" + ], + "doc/html/man3/ADMISSIONS.html" => [ + "doc/man3/ADMISSIONS.pod" + ], + "doc/html/man3/ASN1_EXTERN_FUNCS.html" => [ + "doc/man3/ASN1_EXTERN_FUNCS.pod" + ], + "doc/html/man3/ASN1_INTEGER_get_int64.html" => [ + "doc/man3/ASN1_INTEGER_get_int64.pod" + ], + "doc/html/man3/ASN1_INTEGER_new.html" => [ + "doc/man3/ASN1_INTEGER_new.pod" + ], + "doc/html/man3/ASN1_ITEM_lookup.html" => [ + "doc/man3/ASN1_ITEM_lookup.pod" + ], + "doc/html/man3/ASN1_OBJECT_new.html" => [ + "doc/man3/ASN1_OBJECT_new.pod" + ], + "doc/html/man3/ASN1_STRING_TABLE_add.html" => [ + "doc/man3/ASN1_STRING_TABLE_add.pod" + ], + "doc/html/man3/ASN1_STRING_length.html" => [ + "doc/man3/ASN1_STRING_length.pod" + ], + "doc/html/man3/ASN1_STRING_new.html" => [ + "doc/man3/ASN1_STRING_new.pod" + ], + "doc/html/man3/ASN1_STRING_print_ex.html" => [ + "doc/man3/ASN1_STRING_print_ex.pod" + ], + "doc/html/man3/ASN1_TIME_set.html" => [ + "doc/man3/ASN1_TIME_set.pod" + ], + "doc/html/man3/ASN1_TYPE_get.html" => [ + "doc/man3/ASN1_TYPE_get.pod" + ], + "doc/html/man3/ASN1_aux_cb.html" => [ + "doc/man3/ASN1_aux_cb.pod" + ], + "doc/html/man3/ASN1_generate_nconf.html" => [ + "doc/man3/ASN1_generate_nconf.pod" + ], + "doc/html/man3/ASN1_item_d2i_bio.html" => [ + "doc/man3/ASN1_item_d2i_bio.pod" + ], + "doc/html/man3/ASN1_item_new.html" => [ + "doc/man3/ASN1_item_new.pod" + ], + "doc/html/man3/ASN1_item_sign.html" => [ + "doc/man3/ASN1_item_sign.pod" + ], + "doc/html/man3/ASYNC_WAIT_CTX_new.html" => [ + "doc/man3/ASYNC_WAIT_CTX_new.pod" + ], + "doc/html/man3/ASYNC_start_job.html" => [ + "doc/man3/ASYNC_start_job.pod" + ], + "doc/html/man3/BF_encrypt.html" => [ + "doc/man3/BF_encrypt.pod" + ], + "doc/html/man3/BIO_ADDR.html" => [ + "doc/man3/BIO_ADDR.pod" + ], + "doc/html/man3/BIO_ADDRINFO.html" => [ + "doc/man3/BIO_ADDRINFO.pod" + ], + "doc/html/man3/BIO_connect.html" => [ + "doc/man3/BIO_connect.pod" + ], + "doc/html/man3/BIO_ctrl.html" => [ + "doc/man3/BIO_ctrl.pod" + ], + "doc/html/man3/BIO_f_base64.html" => [ + "doc/man3/BIO_f_base64.pod" + ], + "doc/html/man3/BIO_f_buffer.html" => [ + "doc/man3/BIO_f_buffer.pod" + ], + "doc/html/man3/BIO_f_cipher.html" => [ + "doc/man3/BIO_f_cipher.pod" + ], + "doc/html/man3/BIO_f_md.html" => [ + "doc/man3/BIO_f_md.pod" + ], + "doc/html/man3/BIO_f_null.html" => [ + "doc/man3/BIO_f_null.pod" + ], + "doc/html/man3/BIO_f_prefix.html" => [ + "doc/man3/BIO_f_prefix.pod" + ], + "doc/html/man3/BIO_f_readbuffer.html" => [ + "doc/man3/BIO_f_readbuffer.pod" + ], + "doc/html/man3/BIO_f_ssl.html" => [ + "doc/man3/BIO_f_ssl.pod" + ], + "doc/html/man3/BIO_find_type.html" => [ + "doc/man3/BIO_find_type.pod" + ], + "doc/html/man3/BIO_get_data.html" => [ + "doc/man3/BIO_get_data.pod" + ], + "doc/html/man3/BIO_get_ex_new_index.html" => [ + "doc/man3/BIO_get_ex_new_index.pod" + ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], + "doc/html/man3/BIO_meth_new.html" => [ + "doc/man3/BIO_meth_new.pod" + ], + "doc/html/man3/BIO_new.html" => [ + "doc/man3/BIO_new.pod" + ], + "doc/html/man3/BIO_new_CMS.html" => [ + "doc/man3/BIO_new_CMS.pod" + ], + "doc/html/man3/BIO_parse_hostserv.html" => [ + "doc/man3/BIO_parse_hostserv.pod" + ], + "doc/html/man3/BIO_printf.html" => [ + "doc/man3/BIO_printf.pod" + ], + "doc/html/man3/BIO_push.html" => [ + "doc/man3/BIO_push.pod" + ], + "doc/html/man3/BIO_read.html" => [ + "doc/man3/BIO_read.pod" + ], + "doc/html/man3/BIO_s_accept.html" => [ + "doc/man3/BIO_s_accept.pod" + ], + "doc/html/man3/BIO_s_bio.html" => [ + "doc/man3/BIO_s_bio.pod" + ], + "doc/html/man3/BIO_s_connect.html" => [ + "doc/man3/BIO_s_connect.pod" + ], + "doc/html/man3/BIO_s_core.html" => [ + "doc/man3/BIO_s_core.pod" + ], + "doc/html/man3/BIO_s_datagram.html" => [ + "doc/man3/BIO_s_datagram.pod" + ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], + "doc/html/man3/BIO_s_fd.html" => [ + "doc/man3/BIO_s_fd.pod" + ], + "doc/html/man3/BIO_s_file.html" => [ + "doc/man3/BIO_s_file.pod" + ], + "doc/html/man3/BIO_s_mem.html" => [ + "doc/man3/BIO_s_mem.pod" + ], + "doc/html/man3/BIO_s_null.html" => [ + "doc/man3/BIO_s_null.pod" + ], + "doc/html/man3/BIO_s_socket.html" => [ + "doc/man3/BIO_s_socket.pod" + ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], + "doc/html/man3/BIO_set_callback.html" => [ + "doc/man3/BIO_set_callback.pod" + ], + "doc/html/man3/BIO_set_flags.html" => [ + "doc/man3/BIO_set_flags.pod" + ], + "doc/html/man3/BIO_should_retry.html" => [ + "doc/man3/BIO_should_retry.pod" + ], + "doc/html/man3/BIO_socket_wait.html" => [ + "doc/man3/BIO_socket_wait.pod" + ], + "doc/html/man3/BN_BLINDING_new.html" => [ + "doc/man3/BN_BLINDING_new.pod" + ], + "doc/html/man3/BN_CTX_new.html" => [ + "doc/man3/BN_CTX_new.pod" + ], + "doc/html/man3/BN_CTX_start.html" => [ + "doc/man3/BN_CTX_start.pod" + ], + "doc/html/man3/BN_add.html" => [ + "doc/man3/BN_add.pod" + ], + "doc/html/man3/BN_add_word.html" => [ + "doc/man3/BN_add_word.pod" + ], + "doc/html/man3/BN_bn2bin.html" => [ + "doc/man3/BN_bn2bin.pod" + ], + "doc/html/man3/BN_cmp.html" => [ + "doc/man3/BN_cmp.pod" + ], + "doc/html/man3/BN_copy.html" => [ + "doc/man3/BN_copy.pod" + ], + "doc/html/man3/BN_generate_prime.html" => [ + "doc/man3/BN_generate_prime.pod" + ], + "doc/html/man3/BN_mod_exp_mont.html" => [ + "doc/man3/BN_mod_exp_mont.pod" + ], + "doc/html/man3/BN_mod_inverse.html" => [ + "doc/man3/BN_mod_inverse.pod" + ], + "doc/html/man3/BN_mod_mul_montgomery.html" => [ + "doc/man3/BN_mod_mul_montgomery.pod" + ], + "doc/html/man3/BN_mod_mul_reciprocal.html" => [ + "doc/man3/BN_mod_mul_reciprocal.pod" + ], + "doc/html/man3/BN_new.html" => [ + "doc/man3/BN_new.pod" + ], + "doc/html/man3/BN_num_bytes.html" => [ + "doc/man3/BN_num_bytes.pod" + ], + "doc/html/man3/BN_rand.html" => [ + "doc/man3/BN_rand.pod" + ], + "doc/html/man3/BN_security_bits.html" => [ + "doc/man3/BN_security_bits.pod" + ], + "doc/html/man3/BN_set_bit.html" => [ + "doc/man3/BN_set_bit.pod" + ], + "doc/html/man3/BN_swap.html" => [ + "doc/man3/BN_swap.pod" + ], + "doc/html/man3/BN_zero.html" => [ + "doc/man3/BN_zero.pod" + ], + "doc/html/man3/BUF_MEM_new.html" => [ + "doc/man3/BUF_MEM_new.pod" + ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], + "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ + "doc/man3/CMS_EncryptedData_decrypt.pod" + ], + "doc/html/man3/CMS_EncryptedData_encrypt.html" => [ + "doc/man3/CMS_EncryptedData_encrypt.pod" + ], + "doc/html/man3/CMS_EncryptedData_set1_key.html" => [ + "doc/man3/CMS_EncryptedData_set1_key.pod" + ], + "doc/html/man3/CMS_EnvelopedData_create.html" => [ + "doc/man3/CMS_EnvelopedData_create.pod" + ], + "doc/html/man3/CMS_add0_cert.html" => [ + "doc/man3/CMS_add0_cert.pod" + ], + "doc/html/man3/CMS_add1_recipient_cert.html" => [ + "doc/man3/CMS_add1_recipient_cert.pod" + ], + "doc/html/man3/CMS_add1_signer.html" => [ + "doc/man3/CMS_add1_signer.pod" + ], + "doc/html/man3/CMS_compress.html" => [ + "doc/man3/CMS_compress.pod" + ], + "doc/html/man3/CMS_data_create.html" => [ + "doc/man3/CMS_data_create.pod" + ], + "doc/html/man3/CMS_decrypt.html" => [ + "doc/man3/CMS_decrypt.pod" + ], + "doc/html/man3/CMS_digest_create.html" => [ + "doc/man3/CMS_digest_create.pod" + ], + "doc/html/man3/CMS_encrypt.html" => [ + "doc/man3/CMS_encrypt.pod" + ], + "doc/html/man3/CMS_final.html" => [ + "doc/man3/CMS_final.pod" + ], + "doc/html/man3/CMS_get0_RecipientInfos.html" => [ + "doc/man3/CMS_get0_RecipientInfos.pod" + ], + "doc/html/man3/CMS_get0_SignerInfos.html" => [ + "doc/man3/CMS_get0_SignerInfos.pod" + ], + "doc/html/man3/CMS_get0_type.html" => [ + "doc/man3/CMS_get0_type.pod" + ], + "doc/html/man3/CMS_get1_ReceiptRequest.html" => [ + "doc/man3/CMS_get1_ReceiptRequest.pod" + ], + "doc/html/man3/CMS_sign.html" => [ + "doc/man3/CMS_sign.pod" + ], + "doc/html/man3/CMS_sign_receipt.html" => [ + "doc/man3/CMS_sign_receipt.pod" + ], + "doc/html/man3/CMS_signed_get_attr.html" => [ + "doc/man3/CMS_signed_get_attr.pod" + ], + "doc/html/man3/CMS_uncompress.html" => [ + "doc/man3/CMS_uncompress.pod" + ], + "doc/html/man3/CMS_verify.html" => [ + "doc/man3/CMS_verify.pod" + ], + "doc/html/man3/CMS_verify_receipt.html" => [ + "doc/man3/CMS_verify_receipt.pod" + ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], + "doc/html/man3/CONF_modules_free.html" => [ + "doc/man3/CONF_modules_free.pod" + ], + "doc/html/man3/CONF_modules_load_file.html" => [ + "doc/man3/CONF_modules_load_file.pod" + ], + "doc/html/man3/CRYPTO_THREAD_run_once.html" => [ + "doc/man3/CRYPTO_THREAD_run_once.pod" + ], + "doc/html/man3/CRYPTO_get_ex_new_index.html" => [ + "doc/man3/CRYPTO_get_ex_new_index.pod" + ], + "doc/html/man3/CRYPTO_memcmp.html" => [ + "doc/man3/CRYPTO_memcmp.pod" + ], + "doc/html/man3/CTLOG_STORE_get0_log_by_id.html" => [ + "doc/man3/CTLOG_STORE_get0_log_by_id.pod" + ], + "doc/html/man3/CTLOG_STORE_new.html" => [ + "doc/man3/CTLOG_STORE_new.pod" + ], + "doc/html/man3/CTLOG_new.html" => [ + "doc/man3/CTLOG_new.pod" + ], + "doc/html/man3/CT_POLICY_EVAL_CTX_new.html" => [ + "doc/man3/CT_POLICY_EVAL_CTX_new.pod" + ], + "doc/html/man3/DEFINE_STACK_OF.html" => [ + "doc/man3/DEFINE_STACK_OF.pod" + ], + "doc/html/man3/DES_random_key.html" => [ + "doc/man3/DES_random_key.pod" + ], + "doc/html/man3/DH_generate_key.html" => [ + "doc/man3/DH_generate_key.pod" + ], + "doc/html/man3/DH_generate_parameters.html" => [ + "doc/man3/DH_generate_parameters.pod" + ], + "doc/html/man3/DH_get0_pqg.html" => [ + "doc/man3/DH_get0_pqg.pod" + ], + "doc/html/man3/DH_get_1024_160.html" => [ + "doc/man3/DH_get_1024_160.pod" + ], + "doc/html/man3/DH_meth_new.html" => [ + "doc/man3/DH_meth_new.pod" + ], + "doc/html/man3/DH_new.html" => [ + "doc/man3/DH_new.pod" + ], + "doc/html/man3/DH_new_by_nid.html" => [ + "doc/man3/DH_new_by_nid.pod" + ], + "doc/html/man3/DH_set_method.html" => [ + "doc/man3/DH_set_method.pod" + ], + "doc/html/man3/DH_size.html" => [ + "doc/man3/DH_size.pod" + ], + "doc/html/man3/DSA_SIG_new.html" => [ + "doc/man3/DSA_SIG_new.pod" + ], + "doc/html/man3/DSA_do_sign.html" => [ + "doc/man3/DSA_do_sign.pod" + ], + "doc/html/man3/DSA_dup_DH.html" => [ + "doc/man3/DSA_dup_DH.pod" + ], + "doc/html/man3/DSA_generate_key.html" => [ + "doc/man3/DSA_generate_key.pod" + ], + "doc/html/man3/DSA_generate_parameters.html" => [ + "doc/man3/DSA_generate_parameters.pod" + ], + "doc/html/man3/DSA_get0_pqg.html" => [ + "doc/man3/DSA_get0_pqg.pod" + ], + "doc/html/man3/DSA_meth_new.html" => [ + "doc/man3/DSA_meth_new.pod" + ], + "doc/html/man3/DSA_new.html" => [ + "doc/man3/DSA_new.pod" + ], + "doc/html/man3/DSA_set_method.html" => [ + "doc/man3/DSA_set_method.pod" + ], + "doc/html/man3/DSA_sign.html" => [ + "doc/man3/DSA_sign.pod" + ], + "doc/html/man3/DSA_size.html" => [ + "doc/man3/DSA_size.pod" + ], + "doc/html/man3/DTLS_get_data_mtu.html" => [ + "doc/man3/DTLS_get_data_mtu.pod" + ], + "doc/html/man3/DTLS_set_timer_cb.html" => [ + "doc/man3/DTLS_set_timer_cb.pod" + ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], + "doc/html/man3/DTLSv1_listen.html" => [ + "doc/man3/DTLSv1_listen.pod" + ], + "doc/html/man3/ECDSA_SIG_new.html" => [ + "doc/man3/ECDSA_SIG_new.pod" + ], + "doc/html/man3/ECDSA_sign.html" => [ + "doc/man3/ECDSA_sign.pod" + ], + "doc/html/man3/ECPKParameters_print.html" => [ + "doc/man3/ECPKParameters_print.pod" + ], + "doc/html/man3/EC_GFp_simple_method.html" => [ + "doc/man3/EC_GFp_simple_method.pod" + ], + "doc/html/man3/EC_GROUP_copy.html" => [ + "doc/man3/EC_GROUP_copy.pod" + ], + "doc/html/man3/EC_GROUP_new.html" => [ + "doc/man3/EC_GROUP_new.pod" + ], + "doc/html/man3/EC_KEY_get_enc_flags.html" => [ + "doc/man3/EC_KEY_get_enc_flags.pod" + ], + "doc/html/man3/EC_KEY_new.html" => [ + "doc/man3/EC_KEY_new.pod" + ], + "doc/html/man3/EC_POINT_add.html" => [ + "doc/man3/EC_POINT_add.pod" + ], + "doc/html/man3/EC_POINT_new.html" => [ + "doc/man3/EC_POINT_new.pod" + ], + "doc/html/man3/ENGINE_add.html" => [ + "doc/man3/ENGINE_add.pod" + ], + "doc/html/man3/ERR_GET_LIB.html" => [ + "doc/man3/ERR_GET_LIB.pod" + ], + "doc/html/man3/ERR_clear_error.html" => [ + "doc/man3/ERR_clear_error.pod" + ], + "doc/html/man3/ERR_error_string.html" => [ + "doc/man3/ERR_error_string.pod" + ], + "doc/html/man3/ERR_get_error.html" => [ + "doc/man3/ERR_get_error.pod" + ], + "doc/html/man3/ERR_load_crypto_strings.html" => [ + "doc/man3/ERR_load_crypto_strings.pod" + ], + "doc/html/man3/ERR_load_strings.html" => [ + "doc/man3/ERR_load_strings.pod" + ], + "doc/html/man3/ERR_new.html" => [ + "doc/man3/ERR_new.pod" + ], + "doc/html/man3/ERR_print_errors.html" => [ + "doc/man3/ERR_print_errors.pod" + ], + "doc/html/man3/ERR_put_error.html" => [ + "doc/man3/ERR_put_error.pod" + ], + "doc/html/man3/ERR_remove_state.html" => [ + "doc/man3/ERR_remove_state.pod" + ], + "doc/html/man3/ERR_set_mark.html" => [ + "doc/man3/ERR_set_mark.pod" + ], + "doc/html/man3/EVP_ASYM_CIPHER_free.html" => [ + "doc/man3/EVP_ASYM_CIPHER_free.pod" + ], + "doc/html/man3/EVP_BytesToKey.html" => [ + "doc/man3/EVP_BytesToKey.pod" + ], + "doc/html/man3/EVP_CIPHER_CTX_get_app_data.html" => [ + "doc/man3/EVP_CIPHER_CTX_get_app_data.pod" + ], + "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html" => [ + "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" + ], + "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html" => [ + "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" + ], + "doc/html/man3/EVP_CIPHER_meth_new.html" => [ + "doc/man3/EVP_CIPHER_meth_new.pod" + ], + "doc/html/man3/EVP_DigestInit.html" => [ + "doc/man3/EVP_DigestInit.pod" + ], + "doc/html/man3/EVP_DigestSignInit.html" => [ + "doc/man3/EVP_DigestSignInit.pod" + ], + "doc/html/man3/EVP_DigestVerifyInit.html" => [ + "doc/man3/EVP_DigestVerifyInit.pod" + ], + "doc/html/man3/EVP_EncodeInit.html" => [ + "doc/man3/EVP_EncodeInit.pod" + ], + "doc/html/man3/EVP_EncryptInit.html" => [ + "doc/man3/EVP_EncryptInit.pod" + ], + "doc/html/man3/EVP_KDF.html" => [ + "doc/man3/EVP_KDF.pod" + ], + "doc/html/man3/EVP_KEM_free.html" => [ + "doc/man3/EVP_KEM_free.pod" + ], + "doc/html/man3/EVP_KEYEXCH_free.html" => [ + "doc/man3/EVP_KEYEXCH_free.pod" + ], + "doc/html/man3/EVP_KEYMGMT.html" => [ + "doc/man3/EVP_KEYMGMT.pod" + ], + "doc/html/man3/EVP_MAC.html" => [ + "doc/man3/EVP_MAC.pod" + ], + "doc/html/man3/EVP_MD_meth_new.html" => [ + "doc/man3/EVP_MD_meth_new.pod" + ], + "doc/html/man3/EVP_OpenInit.html" => [ + "doc/man3/EVP_OpenInit.pod" + ], + "doc/html/man3/EVP_PBE_CipherInit.html" => [ + "doc/man3/EVP_PBE_CipherInit.pod" + ], + "doc/html/man3/EVP_PKEY2PKCS8.html" => [ + "doc/man3/EVP_PKEY2PKCS8.pod" + ], + "doc/html/man3/EVP_PKEY_ASN1_METHOD.html" => [ + "doc/man3/EVP_PKEY_ASN1_METHOD.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_ctrl.html" => [ + "doc/man3/EVP_PKEY_CTX_ctrl.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html" => [ + "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ + "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_new.html" => [ + "doc/man3/EVP_PKEY_CTX_new.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html" => [ + "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html" => [ + "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_params.html" => [ + "doc/man3/EVP_PKEY_CTX_set_params.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html" => [ + "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html" => [ + "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html" => [ + "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" + ], + "doc/html/man3/EVP_PKEY_asn1_get_count.html" => [ + "doc/man3/EVP_PKEY_asn1_get_count.pod" + ], + "doc/html/man3/EVP_PKEY_check.html" => [ + "doc/man3/EVP_PKEY_check.pod" + ], + "doc/html/man3/EVP_PKEY_copy_parameters.html" => [ + "doc/man3/EVP_PKEY_copy_parameters.pod" + ], + "doc/html/man3/EVP_PKEY_decapsulate.html" => [ + "doc/man3/EVP_PKEY_decapsulate.pod" + ], + "doc/html/man3/EVP_PKEY_decrypt.html" => [ + "doc/man3/EVP_PKEY_decrypt.pod" + ], + "doc/html/man3/EVP_PKEY_derive.html" => [ + "doc/man3/EVP_PKEY_derive.pod" + ], + "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html" => [ + "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" + ], + "doc/html/man3/EVP_PKEY_encapsulate.html" => [ + "doc/man3/EVP_PKEY_encapsulate.pod" + ], + "doc/html/man3/EVP_PKEY_encrypt.html" => [ + "doc/man3/EVP_PKEY_encrypt.pod" + ], + "doc/html/man3/EVP_PKEY_fromdata.html" => [ + "doc/man3/EVP_PKEY_fromdata.pod" + ], + "doc/html/man3/EVP_PKEY_get_attr.html" => [ + "doc/man3/EVP_PKEY_get_attr.pod" + ], + "doc/html/man3/EVP_PKEY_get_default_digest_nid.html" => [ + "doc/man3/EVP_PKEY_get_default_digest_nid.pod" + ], + "doc/html/man3/EVP_PKEY_get_field_type.html" => [ + "doc/man3/EVP_PKEY_get_field_type.pod" + ], + "doc/html/man3/EVP_PKEY_get_group_name.html" => [ + "doc/man3/EVP_PKEY_get_group_name.pod" + ], + "doc/html/man3/EVP_PKEY_get_size.html" => [ + "doc/man3/EVP_PKEY_get_size.pod" + ], + "doc/html/man3/EVP_PKEY_gettable_params.html" => [ + "doc/man3/EVP_PKEY_gettable_params.pod" + ], + "doc/html/man3/EVP_PKEY_is_a.html" => [ + "doc/man3/EVP_PKEY_is_a.pod" + ], + "doc/html/man3/EVP_PKEY_keygen.html" => [ + "doc/man3/EVP_PKEY_keygen.pod" + ], + "doc/html/man3/EVP_PKEY_meth_get_count.html" => [ + "doc/man3/EVP_PKEY_meth_get_count.pod" + ], + "doc/html/man3/EVP_PKEY_meth_new.html" => [ + "doc/man3/EVP_PKEY_meth_new.pod" + ], + "doc/html/man3/EVP_PKEY_new.html" => [ + "doc/man3/EVP_PKEY_new.pod" + ], + "doc/html/man3/EVP_PKEY_print_private.html" => [ + "doc/man3/EVP_PKEY_print_private.pod" + ], + "doc/html/man3/EVP_PKEY_set1_RSA.html" => [ + "doc/man3/EVP_PKEY_set1_RSA.pod" + ], + "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html" => [ + "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" + ], + "doc/html/man3/EVP_PKEY_set_type.html" => [ + "doc/man3/EVP_PKEY_set_type.pod" + ], + "doc/html/man3/EVP_PKEY_settable_params.html" => [ + "doc/man3/EVP_PKEY_settable_params.pod" + ], + "doc/html/man3/EVP_PKEY_sign.html" => [ + "doc/man3/EVP_PKEY_sign.pod" + ], + "doc/html/man3/EVP_PKEY_todata.html" => [ + "doc/man3/EVP_PKEY_todata.pod" + ], + "doc/html/man3/EVP_PKEY_verify.html" => [ + "doc/man3/EVP_PKEY_verify.pod" + ], + "doc/html/man3/EVP_PKEY_verify_recover.html" => [ + "doc/man3/EVP_PKEY_verify_recover.pod" + ], + "doc/html/man3/EVP_RAND.html" => [ + "doc/man3/EVP_RAND.pod" + ], + "doc/html/man3/EVP_SIGNATURE.html" => [ + "doc/man3/EVP_SIGNATURE.pod" + ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], + "doc/html/man3/EVP_SealInit.html" => [ + "doc/man3/EVP_SealInit.pod" + ], + "doc/html/man3/EVP_SignInit.html" => [ + "doc/man3/EVP_SignInit.pod" + ], + "doc/html/man3/EVP_VerifyInit.html" => [ + "doc/man3/EVP_VerifyInit.pod" + ], + "doc/html/man3/EVP_aes_128_gcm.html" => [ + "doc/man3/EVP_aes_128_gcm.pod" + ], + "doc/html/man3/EVP_aria_128_gcm.html" => [ + "doc/man3/EVP_aria_128_gcm.pod" + ], + "doc/html/man3/EVP_bf_cbc.html" => [ + "doc/man3/EVP_bf_cbc.pod" + ], + "doc/html/man3/EVP_blake2b512.html" => [ + "doc/man3/EVP_blake2b512.pod" + ], + "doc/html/man3/EVP_camellia_128_ecb.html" => [ + "doc/man3/EVP_camellia_128_ecb.pod" + ], + "doc/html/man3/EVP_cast5_cbc.html" => [ + "doc/man3/EVP_cast5_cbc.pod" + ], + "doc/html/man3/EVP_chacha20.html" => [ + "doc/man3/EVP_chacha20.pod" + ], + "doc/html/man3/EVP_des_cbc.html" => [ + "doc/man3/EVP_des_cbc.pod" + ], + "doc/html/man3/EVP_desx_cbc.html" => [ + "doc/man3/EVP_desx_cbc.pod" + ], + "doc/html/man3/EVP_idea_cbc.html" => [ + "doc/man3/EVP_idea_cbc.pod" + ], + "doc/html/man3/EVP_md2.html" => [ + "doc/man3/EVP_md2.pod" + ], + "doc/html/man3/EVP_md4.html" => [ + "doc/man3/EVP_md4.pod" + ], + "doc/html/man3/EVP_md5.html" => [ + "doc/man3/EVP_md5.pod" + ], + "doc/html/man3/EVP_mdc2.html" => [ + "doc/man3/EVP_mdc2.pod" + ], + "doc/html/man3/EVP_rc2_cbc.html" => [ + "doc/man3/EVP_rc2_cbc.pod" + ], + "doc/html/man3/EVP_rc4.html" => [ + "doc/man3/EVP_rc4.pod" + ], + "doc/html/man3/EVP_rc5_32_12_16_cbc.html" => [ + "doc/man3/EVP_rc5_32_12_16_cbc.pod" + ], + "doc/html/man3/EVP_ripemd160.html" => [ + "doc/man3/EVP_ripemd160.pod" + ], + "doc/html/man3/EVP_seed_cbc.html" => [ + "doc/man3/EVP_seed_cbc.pod" + ], + "doc/html/man3/EVP_set_default_properties.html" => [ + "doc/man3/EVP_set_default_properties.pod" + ], + "doc/html/man3/EVP_sha1.html" => [ + "doc/man3/EVP_sha1.pod" + ], + "doc/html/man3/EVP_sha224.html" => [ + "doc/man3/EVP_sha224.pod" + ], + "doc/html/man3/EVP_sha3_224.html" => [ + "doc/man3/EVP_sha3_224.pod" + ], + "doc/html/man3/EVP_sm3.html" => [ + "doc/man3/EVP_sm3.pod" + ], + "doc/html/man3/EVP_sm4_cbc.html" => [ + "doc/man3/EVP_sm4_cbc.pod" + ], + "doc/html/man3/EVP_whirlpool.html" => [ + "doc/man3/EVP_whirlpool.pod" + ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], + "doc/html/man3/HMAC.html" => [ + "doc/man3/HMAC.pod" + ], + "doc/html/man3/MD5.html" => [ + "doc/man3/MD5.pod" + ], + "doc/html/man3/MDC2_Init.html" => [ + "doc/man3/MDC2_Init.pod" + ], + "doc/html/man3/NCONF_new_ex.html" => [ + "doc/man3/NCONF_new_ex.pod" + ], + "doc/html/man3/OBJ_nid2obj.html" => [ + "doc/man3/OBJ_nid2obj.pod" + ], + "doc/html/man3/OCSP_REQUEST_new.html" => [ + "doc/man3/OCSP_REQUEST_new.pod" + ], + "doc/html/man3/OCSP_cert_to_id.html" => [ + "doc/man3/OCSP_cert_to_id.pod" + ], + "doc/html/man3/OCSP_request_add1_nonce.html" => [ + "doc/man3/OCSP_request_add1_nonce.pod" + ], + "doc/html/man3/OCSP_resp_find_status.html" => [ + "doc/man3/OCSP_resp_find_status.pod" + ], + "doc/html/man3/OCSP_response_status.html" => [ + "doc/man3/OCSP_response_status.pod" + ], + "doc/html/man3/OCSP_sendreq_new.html" => [ + "doc/man3/OCSP_sendreq_new.pod" + ], + "doc/html/man3/OPENSSL_Applink.html" => [ + "doc/man3/OPENSSL_Applink.pod" + ], + "doc/html/man3/OPENSSL_FILE.html" => [ + "doc/man3/OPENSSL_FILE.pod" + ], + "doc/html/man3/OPENSSL_LH_COMPFUNC.html" => [ + "doc/man3/OPENSSL_LH_COMPFUNC.pod" + ], + "doc/html/man3/OPENSSL_LH_stats.html" => [ + "doc/man3/OPENSSL_LH_stats.pod" + ], + "doc/html/man3/OPENSSL_config.html" => [ + "doc/man3/OPENSSL_config.pod" + ], + "doc/html/man3/OPENSSL_fork_prepare.html" => [ + "doc/man3/OPENSSL_fork_prepare.pod" + ], + "doc/html/man3/OPENSSL_gmtime.html" => [ + "doc/man3/OPENSSL_gmtime.pod" + ], + "doc/html/man3/OPENSSL_hexchar2int.html" => [ + "doc/man3/OPENSSL_hexchar2int.pod" + ], + "doc/html/man3/OPENSSL_ia32cap.html" => [ + "doc/man3/OPENSSL_ia32cap.pod" + ], + "doc/html/man3/OPENSSL_init_crypto.html" => [ + "doc/man3/OPENSSL_init_crypto.pod" + ], + "doc/html/man3/OPENSSL_init_ssl.html" => [ + "doc/man3/OPENSSL_init_ssl.pod" + ], + "doc/html/man3/OPENSSL_instrument_bus.html" => [ + "doc/man3/OPENSSL_instrument_bus.pod" + ], + "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ + "doc/man3/OPENSSL_load_builtin_modules.pod" + ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], + "doc/html/man3/OPENSSL_malloc.html" => [ + "doc/man3/OPENSSL_malloc.pod" + ], + "doc/html/man3/OPENSSL_ppccap.html" => [ + "doc/man3/OPENSSL_ppccap.pod" + ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], + "doc/html/man3/OPENSSL_s390xcap.html" => [ + "doc/man3/OPENSSL_s390xcap.pod" + ], + "doc/html/man3/OPENSSL_secure_malloc.html" => [ + "doc/man3/OPENSSL_secure_malloc.pod" + ], + "doc/html/man3/OPENSSL_strcasecmp.html" => [ + "doc/man3/OPENSSL_strcasecmp.pod" + ], + "doc/html/man3/OSSL_ALGORITHM.html" => [ + "doc/man3/OSSL_ALGORITHM.pod" + ], + "doc/html/man3/OSSL_CALLBACK.html" => [ + "doc/man3/OSSL_CALLBACK.pod" + ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], + "doc/html/man3/OSSL_CMP_CTX_new.html" => [ + "doc/man3/OSSL_CMP_CTX_new.pod" + ], + "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ + "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" + ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], + "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ + "doc/man3/OSSL_CMP_ITAV_set0.pod" + ], + "doc/html/man3/OSSL_CMP_MSG_get0_header.html" => [ + "doc/man3/OSSL_CMP_MSG_get0_header.pod" + ], + "doc/html/man3/OSSL_CMP_MSG_http_perform.html" => [ + "doc/man3/OSSL_CMP_MSG_http_perform.pod" + ], + "doc/html/man3/OSSL_CMP_SRV_CTX_new.html" => [ + "doc/man3/OSSL_CMP_SRV_CTX_new.pod" + ], + "doc/html/man3/OSSL_CMP_STATUSINFO_new.html" => [ + "doc/man3/OSSL_CMP_STATUSINFO_new.pod" + ], + "doc/html/man3/OSSL_CMP_exec_certreq.html" => [ + "doc/man3/OSSL_CMP_exec_certreq.pod" + ], + "doc/html/man3/OSSL_CMP_log_open.html" => [ + "doc/man3/OSSL_CMP_log_open.pod" + ], + "doc/html/man3/OSSL_CMP_validate_msg.html" => [ + "doc/man3/OSSL_CMP_validate_msg.pod" + ], + "doc/html/man3/OSSL_CORE_MAKE_FUNC.html" => [ + "doc/man3/OSSL_CORE_MAKE_FUNC.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html" => [ + "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html" => [ + "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" + ], + "doc/html/man3/OSSL_CRMF_pbmp_new.html" => [ + "doc/man3/OSSL_CRMF_pbmp_new.pod" + ], + "doc/html/man3/OSSL_DECODER.html" => [ + "doc/man3/OSSL_DECODER.pod" + ], + "doc/html/man3/OSSL_DECODER_CTX.html" => [ + "doc/man3/OSSL_DECODER_CTX.pod" + ], + "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html" => [ + "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" + ], + "doc/html/man3/OSSL_DECODER_from_bio.html" => [ + "doc/man3/OSSL_DECODER_from_bio.pod" + ], + "doc/html/man3/OSSL_DISPATCH.html" => [ + "doc/man3/OSSL_DISPATCH.pod" + ], + "doc/html/man3/OSSL_ENCODER.html" => [ + "doc/man3/OSSL_ENCODER.pod" + ], + "doc/html/man3/OSSL_ENCODER_CTX.html" => [ + "doc/man3/OSSL_ENCODER_CTX.pod" + ], + "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html" => [ + "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" + ], + "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ + "doc/man3/OSSL_ENCODER_to_bio.pod" + ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], + "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ + "doc/man3/OSSL_ESS_check_signing_certs.pod" + ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], + "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ + "doc/man3/OSSL_HTTP_REQ_CTX.pod" + ], + "doc/html/man3/OSSL_HTTP_parse_url.html" => [ + "doc/man3/OSSL_HTTP_parse_url.pod" + ], + "doc/html/man3/OSSL_HTTP_transfer.html" => [ + "doc/man3/OSSL_HTTP_transfer.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], + "doc/html/man3/OSSL_ITEM.html" => [ + "doc/man3/OSSL_ITEM.pod" + ], + "doc/html/man3/OSSL_LIB_CTX.html" => [ + "doc/man3/OSSL_LIB_CTX.pod" + ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], + "doc/html/man3/OSSL_PARAM.html" => [ + "doc/man3/OSSL_PARAM.pod" + ], + "doc/html/man3/OSSL_PARAM_BLD.html" => [ + "doc/man3/OSSL_PARAM_BLD.pod" + ], + "doc/html/man3/OSSL_PARAM_allocate_from_text.html" => [ + "doc/man3/OSSL_PARAM_allocate_from_text.pod" + ], + "doc/html/man3/OSSL_PARAM_dup.html" => [ + "doc/man3/OSSL_PARAM_dup.pod" + ], + "doc/html/man3/OSSL_PARAM_int.html" => [ + "doc/man3/OSSL_PARAM_int.pod" + ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], + "doc/html/man3/OSSL_PROVIDER.html" => [ + "doc/man3/OSSL_PROVIDER.pod" + ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], + "doc/html/man3/OSSL_SELF_TEST_new.html" => [ + "doc/man3/OSSL_SELF_TEST_new.pod" + ], + "doc/html/man3/OSSL_SELF_TEST_set_callback.html" => [ + "doc/man3/OSSL_SELF_TEST_set_callback.pod" + ], + "doc/html/man3/OSSL_STORE_INFO.html" => [ + "doc/man3/OSSL_STORE_INFO.pod" + ], + "doc/html/man3/OSSL_STORE_LOADER.html" => [ + "doc/man3/OSSL_STORE_LOADER.pod" + ], + "doc/html/man3/OSSL_STORE_SEARCH.html" => [ + "doc/man3/OSSL_STORE_SEARCH.pod" + ], + "doc/html/man3/OSSL_STORE_attach.html" => [ + "doc/man3/OSSL_STORE_attach.pod" + ], + "doc/html/man3/OSSL_STORE_expect.html" => [ + "doc/man3/OSSL_STORE_expect.pod" + ], + "doc/html/man3/OSSL_STORE_open.html" => [ + "doc/man3/OSSL_STORE_open.pod" + ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], + "doc/html/man3/OSSL_trace_enabled.html" => [ + "doc/man3/OSSL_trace_enabled.pod" + ], + "doc/html/man3/OSSL_trace_get_category_num.html" => [ + "doc/man3/OSSL_trace_get_category_num.pod" + ], + "doc/html/man3/OSSL_trace_set_channel.html" => [ + "doc/man3/OSSL_trace_set_channel.pod" + ], + "doc/html/man3/OpenSSL_add_all_algorithms.html" => [ + "doc/man3/OpenSSL_add_all_algorithms.pod" + ], + "doc/html/man3/OpenSSL_version.html" => [ + "doc/man3/OpenSSL_version.pod" + ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], + "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ + "doc/man3/PEM_X509_INFO_read_bio_ex.pod" + ], + "doc/html/man3/PEM_bytes_read_bio.html" => [ + "doc/man3/PEM_bytes_read_bio.pod" + ], + "doc/html/man3/PEM_read.html" => [ + "doc/man3/PEM_read.pod" + ], + "doc/html/man3/PEM_read_CMS.html" => [ + "doc/man3/PEM_read_CMS.pod" + ], + "doc/html/man3/PEM_read_bio_PrivateKey.html" => [ + "doc/man3/PEM_read_bio_PrivateKey.pod" + ], + "doc/html/man3/PEM_read_bio_ex.html" => [ + "doc/man3/PEM_read_bio_ex.pod" + ], + "doc/html/man3/PEM_write_bio_CMS_stream.html" => [ + "doc/man3/PEM_write_bio_CMS_stream.pod" + ], + "doc/html/man3/PEM_write_bio_PKCS7_stream.html" => [ + "doc/man3/PEM_write_bio_PKCS7_stream.pod" + ], + "doc/html/man3/PKCS12_PBE_keyivgen.html" => [ + "doc/man3/PKCS12_PBE_keyivgen.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_create_cert.html" => [ + "doc/man3/PKCS12_SAFEBAG_create_cert.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ + "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], + "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ + "doc/man3/PKCS12_add1_attr_by_NID.pod" + ], + "doc/html/man3/PKCS12_add_CSPName_asc.html" => [ + "doc/man3/PKCS12_add_CSPName_asc.pod" + ], + "doc/html/man3/PKCS12_add_cert.html" => [ + "doc/man3/PKCS12_add_cert.pod" + ], + "doc/html/man3/PKCS12_add_friendlyname_asc.html" => [ + "doc/man3/PKCS12_add_friendlyname_asc.pod" + ], + "doc/html/man3/PKCS12_add_localkeyid.html" => [ + "doc/man3/PKCS12_add_localkeyid.pod" + ], + "doc/html/man3/PKCS12_add_safe.html" => [ + "doc/man3/PKCS12_add_safe.pod" + ], + "doc/html/man3/PKCS12_create.html" => [ + "doc/man3/PKCS12_create.pod" + ], + "doc/html/man3/PKCS12_decrypt_skey.html" => [ + "doc/man3/PKCS12_decrypt_skey.pod" + ], + "doc/html/man3/PKCS12_gen_mac.html" => [ + "doc/man3/PKCS12_gen_mac.pod" + ], + "doc/html/man3/PKCS12_get_friendlyname.html" => [ + "doc/man3/PKCS12_get_friendlyname.pod" + ], + "doc/html/man3/PKCS12_init.html" => [ + "doc/man3/PKCS12_init.pod" + ], + "doc/html/man3/PKCS12_item_decrypt_d2i.html" => [ + "doc/man3/PKCS12_item_decrypt_d2i.pod" + ], + "doc/html/man3/PKCS12_key_gen_utf8_ex.html" => [ + "doc/man3/PKCS12_key_gen_utf8_ex.pod" + ], + "doc/html/man3/PKCS12_newpass.html" => [ + "doc/man3/PKCS12_newpass.pod" + ], + "doc/html/man3/PKCS12_pack_p7encdata.html" => [ + "doc/man3/PKCS12_pack_p7encdata.pod" + ], + "doc/html/man3/PKCS12_parse.html" => [ + "doc/man3/PKCS12_parse.pod" + ], + "doc/html/man3/PKCS5_PBE_keyivgen.html" => [ + "doc/man3/PKCS5_PBE_keyivgen.pod" + ], + "doc/html/man3/PKCS5_PBKDF2_HMAC.html" => [ + "doc/man3/PKCS5_PBKDF2_HMAC.pod" + ], + "doc/html/man3/PKCS7_decrypt.html" => [ + "doc/man3/PKCS7_decrypt.pod" + ], + "doc/html/man3/PKCS7_encrypt.html" => [ + "doc/man3/PKCS7_encrypt.pod" + ], + "doc/html/man3/PKCS7_get_octet_string.html" => [ + "doc/man3/PKCS7_get_octet_string.pod" + ], + "doc/html/man3/PKCS7_sign.html" => [ + "doc/man3/PKCS7_sign.pod" + ], + "doc/html/man3/PKCS7_sign_add_signer.html" => [ + "doc/man3/PKCS7_sign_add_signer.pod" + ], + "doc/html/man3/PKCS7_type_is_other.html" => [ + "doc/man3/PKCS7_type_is_other.pod" + ], + "doc/html/man3/PKCS7_verify.html" => [ + "doc/man3/PKCS7_verify.pod" + ], + "doc/html/man3/PKCS8_encrypt.html" => [ + "doc/man3/PKCS8_encrypt.pod" + ], + "doc/html/man3/PKCS8_pkey_add1_attr.html" => [ + "doc/man3/PKCS8_pkey_add1_attr.pod" + ], + "doc/html/man3/RAND_add.html" => [ + "doc/man3/RAND_add.pod" + ], + "doc/html/man3/RAND_bytes.html" => [ + "doc/man3/RAND_bytes.pod" + ], + "doc/html/man3/RAND_cleanup.html" => [ + "doc/man3/RAND_cleanup.pod" + ], + "doc/html/man3/RAND_egd.html" => [ + "doc/man3/RAND_egd.pod" + ], + "doc/html/man3/RAND_get0_primary.html" => [ + "doc/man3/RAND_get0_primary.pod" + ], + "doc/html/man3/RAND_load_file.html" => [ + "doc/man3/RAND_load_file.pod" + ], + "doc/html/man3/RAND_set_DRBG_type.html" => [ + "doc/man3/RAND_set_DRBG_type.pod" + ], + "doc/html/man3/RAND_set_rand_method.html" => [ + "doc/man3/RAND_set_rand_method.pod" + ], + "doc/html/man3/RC4_set_key.html" => [ + "doc/man3/RC4_set_key.pod" + ], + "doc/html/man3/RIPEMD160_Init.html" => [ + "doc/man3/RIPEMD160_Init.pod" + ], + "doc/html/man3/RSA_blinding_on.html" => [ + "doc/man3/RSA_blinding_on.pod" + ], + "doc/html/man3/RSA_check_key.html" => [ + "doc/man3/RSA_check_key.pod" + ], + "doc/html/man3/RSA_generate_key.html" => [ + "doc/man3/RSA_generate_key.pod" + ], + "doc/html/man3/RSA_get0_key.html" => [ + "doc/man3/RSA_get0_key.pod" + ], + "doc/html/man3/RSA_meth_new.html" => [ + "doc/man3/RSA_meth_new.pod" + ], + "doc/html/man3/RSA_new.html" => [ + "doc/man3/RSA_new.pod" + ], + "doc/html/man3/RSA_padding_add_PKCS1_type_1.html" => [ + "doc/man3/RSA_padding_add_PKCS1_type_1.pod" + ], + "doc/html/man3/RSA_print.html" => [ + "doc/man3/RSA_print.pod" + ], + "doc/html/man3/RSA_private_encrypt.html" => [ + "doc/man3/RSA_private_encrypt.pod" + ], + "doc/html/man3/RSA_public_encrypt.html" => [ + "doc/man3/RSA_public_encrypt.pod" + ], + "doc/html/man3/RSA_set_method.html" => [ + "doc/man3/RSA_set_method.pod" + ], + "doc/html/man3/RSA_sign.html" => [ + "doc/man3/RSA_sign.pod" + ], + "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html" => [ + "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" + ], + "doc/html/man3/RSA_size.html" => [ + "doc/man3/RSA_size.pod" + ], + "doc/html/man3/SCT_new.html" => [ + "doc/man3/SCT_new.pod" + ], + "doc/html/man3/SCT_print.html" => [ + "doc/man3/SCT_print.pod" + ], + "doc/html/man3/SCT_validate.html" => [ + "doc/man3/SCT_validate.pod" + ], + "doc/html/man3/SHA256_Init.html" => [ + "doc/man3/SHA256_Init.pod" + ], + "doc/html/man3/SMIME_read_ASN1.html" => [ + "doc/man3/SMIME_read_ASN1.pod" + ], + "doc/html/man3/SMIME_read_CMS.html" => [ + "doc/man3/SMIME_read_CMS.pod" + ], + "doc/html/man3/SMIME_read_PKCS7.html" => [ + "doc/man3/SMIME_read_PKCS7.pod" + ], + "doc/html/man3/SMIME_write_ASN1.html" => [ + "doc/man3/SMIME_write_ASN1.pod" + ], + "doc/html/man3/SMIME_write_CMS.html" => [ + "doc/man3/SMIME_write_CMS.pod" + ], + "doc/html/man3/SMIME_write_PKCS7.html" => [ + "doc/man3/SMIME_write_PKCS7.pod" + ], + "doc/html/man3/SRP_Calc_B.html" => [ + "doc/man3/SRP_Calc_B.pod" + ], + "doc/html/man3/SRP_VBASE_new.html" => [ + "doc/man3/SRP_VBASE_new.pod" + ], + "doc/html/man3/SRP_create_verifier.html" => [ + "doc/man3/SRP_create_verifier.pod" + ], + "doc/html/man3/SRP_user_pwd_new.html" => [ + "doc/man3/SRP_user_pwd_new.pod" + ], + "doc/html/man3/SSL_CIPHER_get_name.html" => [ + "doc/man3/SSL_CIPHER_get_name.pod" + ], + "doc/html/man3/SSL_COMP_add_compression_method.html" => [ + "doc/man3/SSL_COMP_add_compression_method.pod" + ], + "doc/html/man3/SSL_CONF_CTX_new.html" => [ + "doc/man3/SSL_CONF_CTX_new.pod" + ], + "doc/html/man3/SSL_CONF_CTX_set1_prefix.html" => [ + "doc/man3/SSL_CONF_CTX_set1_prefix.pod" + ], + "doc/html/man3/SSL_CONF_CTX_set_flags.html" => [ + "doc/man3/SSL_CONF_CTX_set_flags.pod" + ], + "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html" => [ + "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" + ], + "doc/html/man3/SSL_CONF_cmd.html" => [ + "doc/man3/SSL_CONF_cmd.pod" + ], + "doc/html/man3/SSL_CONF_cmd_argv.html" => [ + "doc/man3/SSL_CONF_cmd_argv.pod" + ], + "doc/html/man3/SSL_CTX_add1_chain_cert.html" => [ + "doc/man3/SSL_CTX_add1_chain_cert.pod" + ], + "doc/html/man3/SSL_CTX_add_extra_chain_cert.html" => [ + "doc/man3/SSL_CTX_add_extra_chain_cert.pod" + ], + "doc/html/man3/SSL_CTX_add_session.html" => [ + "doc/man3/SSL_CTX_add_session.pod" + ], + "doc/html/man3/SSL_CTX_config.html" => [ + "doc/man3/SSL_CTX_config.pod" + ], + "doc/html/man3/SSL_CTX_ctrl.html" => [ + "doc/man3/SSL_CTX_ctrl.pod" + ], + "doc/html/man3/SSL_CTX_dane_enable.html" => [ + "doc/man3/SSL_CTX_dane_enable.pod" + ], + "doc/html/man3/SSL_CTX_flush_sessions.html" => [ + "doc/man3/SSL_CTX_flush_sessions.pod" + ], + "doc/html/man3/SSL_CTX_free.html" => [ + "doc/man3/SSL_CTX_free.pod" + ], + "doc/html/man3/SSL_CTX_get0_param.html" => [ + "doc/man3/SSL_CTX_get0_param.pod" + ], + "doc/html/man3/SSL_CTX_get_verify_mode.html" => [ + "doc/man3/SSL_CTX_get_verify_mode.pod" + ], + "doc/html/man3/SSL_CTX_has_client_custom_ext.html" => [ + "doc/man3/SSL_CTX_has_client_custom_ext.pod" + ], + "doc/html/man3/SSL_CTX_load_verify_locations.html" => [ + "doc/man3/SSL_CTX_load_verify_locations.pod" + ], + "doc/html/man3/SSL_CTX_new.html" => [ + "doc/man3/SSL_CTX_new.pod" + ], + "doc/html/man3/SSL_CTX_sess_number.html" => [ + "doc/man3/SSL_CTX_sess_number.pod" + ], + "doc/html/man3/SSL_CTX_sess_set_cache_size.html" => [ + "doc/man3/SSL_CTX_sess_set_cache_size.pod" + ], + "doc/html/man3/SSL_CTX_sess_set_get_cb.html" => [ + "doc/man3/SSL_CTX_sess_set_get_cb.pod" + ], + "doc/html/man3/SSL_CTX_sessions.html" => [ + "doc/man3/SSL_CTX_sessions.pod" + ], + "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ + "doc/man3/SSL_CTX_set0_CA_list.pod" + ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], + "doc/html/man3/SSL_CTX_set1_curves.html" => [ + "doc/man3/SSL_CTX_set1_curves.pod" + ], + "doc/html/man3/SSL_CTX_set1_sigalgs.html" => [ + "doc/man3/SSL_CTX_set1_sigalgs.pod" + ], + "doc/html/man3/SSL_CTX_set1_verify_cert_store.html" => [ + "doc/man3/SSL_CTX_set1_verify_cert_store.pod" + ], + "doc/html/man3/SSL_CTX_set_alpn_select_cb.html" => [ + "doc/man3/SSL_CTX_set_alpn_select_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_cert_cb.html" => [ + "doc/man3/SSL_CTX_set_cert_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_cert_store.html" => [ + "doc/man3/SSL_CTX_set_cert_store.pod" + ], + "doc/html/man3/SSL_CTX_set_cert_verify_callback.html" => [ + "doc/man3/SSL_CTX_set_cert_verify_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_cipher_list.html" => [ + "doc/man3/SSL_CTX_set_cipher_list.pod" + ], + "doc/html/man3/SSL_CTX_set_client_cert_cb.html" => [ + "doc/man3/SSL_CTX_set_client_cert_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_client_hello_cb.html" => [ + "doc/man3/SSL_CTX_set_client_hello_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_ct_validation_callback.html" => [ + "doc/man3/SSL_CTX_set_ct_validation_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_ctlog_list_file.html" => [ + "doc/man3/SSL_CTX_set_ctlog_list_file.pod" + ], + "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ + "doc/man3/SSL_CTX_set_default_passwd_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], + "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ + "doc/man3/SSL_CTX_set_generate_session_id.pod" + ], + "doc/html/man3/SSL_CTX_set_info_callback.html" => [ + "doc/man3/SSL_CTX_set_info_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_keylog_callback.html" => [ + "doc/man3/SSL_CTX_set_keylog_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_max_cert_list.html" => [ + "doc/man3/SSL_CTX_set_max_cert_list.pod" + ], + "doc/html/man3/SSL_CTX_set_min_proto_version.html" => [ + "doc/man3/SSL_CTX_set_min_proto_version.pod" + ], + "doc/html/man3/SSL_CTX_set_mode.html" => [ + "doc/man3/SSL_CTX_set_mode.pod" + ], + "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ + "doc/man3/SSL_CTX_set_msg_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ + "doc/man3/SSL_CTX_set_num_tickets.pod" + ], + "doc/html/man3/SSL_CTX_set_options.html" => [ + "doc/man3/SSL_CTX_set_options.pod" + ], + "doc/html/man3/SSL_CTX_set_psk_client_callback.html" => [ + "doc/man3/SSL_CTX_set_psk_client_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_quiet_shutdown.html" => [ + "doc/man3/SSL_CTX_set_quiet_shutdown.pod" + ], + "doc/html/man3/SSL_CTX_set_read_ahead.html" => [ + "doc/man3/SSL_CTX_set_read_ahead.pod" + ], + "doc/html/man3/SSL_CTX_set_record_padding_callback.html" => [ + "doc/man3/SSL_CTX_set_record_padding_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_security_level.html" => [ + "doc/man3/SSL_CTX_set_security_level.pod" + ], + "doc/html/man3/SSL_CTX_set_session_cache_mode.html" => [ + "doc/man3/SSL_CTX_set_session_cache_mode.pod" + ], + "doc/html/man3/SSL_CTX_set_session_id_context.html" => [ + "doc/man3/SSL_CTX_set_session_id_context.pod" + ], + "doc/html/man3/SSL_CTX_set_session_ticket_cb.html" => [ + "doc/man3/SSL_CTX_set_session_ticket_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_split_send_fragment.html" => [ + "doc/man3/SSL_CTX_set_split_send_fragment.pod" + ], + "doc/html/man3/SSL_CTX_set_srp_password.html" => [ + "doc/man3/SSL_CTX_set_srp_password.pod" + ], + "doc/html/man3/SSL_CTX_set_ssl_version.html" => [ + "doc/man3/SSL_CTX_set_ssl_version.pod" + ], + "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html" => [ + "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_timeout.html" => [ + "doc/man3/SSL_CTX_set_timeout.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html" => [ + "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html" => [ + "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html" => [ + "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html" => [ + "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" + ], + "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html" => [ + "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_tmp_ecdh.html" => [ + "doc/man3/SSL_CTX_set_tmp_ecdh.pod" + ], + "doc/html/man3/SSL_CTX_set_verify.html" => [ + "doc/man3/SSL_CTX_set_verify.pod" + ], + "doc/html/man3/SSL_CTX_use_certificate.html" => [ + "doc/man3/SSL_CTX_use_certificate.pod" + ], + "doc/html/man3/SSL_CTX_use_psk_identity_hint.html" => [ + "doc/man3/SSL_CTX_use_psk_identity_hint.pod" + ], + "doc/html/man3/SSL_CTX_use_serverinfo.html" => [ + "doc/man3/SSL_CTX_use_serverinfo.pod" + ], + "doc/html/man3/SSL_SESSION_free.html" => [ + "doc/man3/SSL_SESSION_free.pod" + ], + "doc/html/man3/SSL_SESSION_get0_cipher.html" => [ + "doc/man3/SSL_SESSION_get0_cipher.pod" + ], + "doc/html/man3/SSL_SESSION_get0_hostname.html" => [ + "doc/man3/SSL_SESSION_get0_hostname.pod" + ], + "doc/html/man3/SSL_SESSION_get0_id_context.html" => [ + "doc/man3/SSL_SESSION_get0_id_context.pod" + ], + "doc/html/man3/SSL_SESSION_get0_peer.html" => [ + "doc/man3/SSL_SESSION_get0_peer.pod" + ], + "doc/html/man3/SSL_SESSION_get_compress_id.html" => [ + "doc/man3/SSL_SESSION_get_compress_id.pod" + ], + "doc/html/man3/SSL_SESSION_get_protocol_version.html" => [ + "doc/man3/SSL_SESSION_get_protocol_version.pod" + ], + "doc/html/man3/SSL_SESSION_get_time.html" => [ + "doc/man3/SSL_SESSION_get_time.pod" + ], + "doc/html/man3/SSL_SESSION_has_ticket.html" => [ + "doc/man3/SSL_SESSION_has_ticket.pod" + ], + "doc/html/man3/SSL_SESSION_is_resumable.html" => [ + "doc/man3/SSL_SESSION_is_resumable.pod" + ], + "doc/html/man3/SSL_SESSION_print.html" => [ + "doc/man3/SSL_SESSION_print.pod" + ], + "doc/html/man3/SSL_SESSION_set1_id.html" => [ + "doc/man3/SSL_SESSION_set1_id.pod" + ], + "doc/html/man3/SSL_accept.html" => [ + "doc/man3/SSL_accept.pod" + ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], + "doc/html/man3/SSL_alert_type_string.html" => [ + "doc/man3/SSL_alert_type_string.pod" + ], + "doc/html/man3/SSL_alloc_buffers.html" => [ + "doc/man3/SSL_alloc_buffers.pod" + ], + "doc/html/man3/SSL_check_chain.html" => [ + "doc/man3/SSL_check_chain.pod" + ], + "doc/html/man3/SSL_clear.html" => [ + "doc/man3/SSL_clear.pod" + ], + "doc/html/man3/SSL_connect.html" => [ + "doc/man3/SSL_connect.pod" + ], + "doc/html/man3/SSL_do_handshake.html" => [ + "doc/man3/SSL_do_handshake.pod" + ], + "doc/html/man3/SSL_export_keying_material.html" => [ + "doc/man3/SSL_export_keying_material.pod" + ], + "doc/html/man3/SSL_extension_supported.html" => [ + "doc/man3/SSL_extension_supported.pod" + ], + "doc/html/man3/SSL_free.html" => [ + "doc/man3/SSL_free.pod" + ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], + "doc/html/man3/SSL_get0_peer_scts.html" => [ + "doc/man3/SSL_get0_peer_scts.pod" + ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], + "doc/html/man3/SSL_get_SSL_CTX.html" => [ + "doc/man3/SSL_get_SSL_CTX.pod" + ], + "doc/html/man3/SSL_get_all_async_fds.html" => [ + "doc/man3/SSL_get_all_async_fds.pod" + ], + "doc/html/man3/SSL_get_certificate.html" => [ + "doc/man3/SSL_get_certificate.pod" + ], + "doc/html/man3/SSL_get_ciphers.html" => [ + "doc/man3/SSL_get_ciphers.pod" + ], + "doc/html/man3/SSL_get_client_random.html" => [ + "doc/man3/SSL_get_client_random.pod" + ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], + "doc/html/man3/SSL_get_current_cipher.html" => [ + "doc/man3/SSL_get_current_cipher.pod" + ], + "doc/html/man3/SSL_get_default_timeout.html" => [ + "doc/man3/SSL_get_default_timeout.pod" + ], + "doc/html/man3/SSL_get_error.html" => [ + "doc/man3/SSL_get_error.pod" + ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], + "doc/html/man3/SSL_get_extms_support.html" => [ + "doc/man3/SSL_get_extms_support.pod" + ], + "doc/html/man3/SSL_get_fd.html" => [ + "doc/man3/SSL_get_fd.pod" + ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], + "doc/html/man3/SSL_get_peer_cert_chain.html" => [ + "doc/man3/SSL_get_peer_cert_chain.pod" + ], + "doc/html/man3/SSL_get_peer_certificate.html" => [ + "doc/man3/SSL_get_peer_certificate.pod" + ], + "doc/html/man3/SSL_get_peer_signature_nid.html" => [ + "doc/man3/SSL_get_peer_signature_nid.pod" + ], + "doc/html/man3/SSL_get_peer_tmp_key.html" => [ + "doc/man3/SSL_get_peer_tmp_key.pod" + ], + "doc/html/man3/SSL_get_psk_identity.html" => [ + "doc/man3/SSL_get_psk_identity.pod" + ], + "doc/html/man3/SSL_get_rbio.html" => [ + "doc/man3/SSL_get_rbio.pod" + ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], + "doc/html/man3/SSL_get_session.html" => [ + "doc/man3/SSL_get_session.pod" + ], + "doc/html/man3/SSL_get_shared_sigalgs.html" => [ + "doc/man3/SSL_get_shared_sigalgs.pod" + ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], + "doc/html/man3/SSL_get_verify_result.html" => [ + "doc/man3/SSL_get_verify_result.pod" + ], + "doc/html/man3/SSL_get_version.html" => [ + "doc/man3/SSL_get_version.pod" + ], + "doc/html/man3/SSL_group_to_name.html" => [ + "doc/man3/SSL_group_to_name.pod" + ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], + "doc/html/man3/SSL_in_init.html" => [ + "doc/man3/SSL_in_init.pod" + ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], + "doc/html/man3/SSL_key_update.html" => [ + "doc/man3/SSL_key_update.pod" + ], + "doc/html/man3/SSL_library_init.html" => [ + "doc/man3/SSL_library_init.pod" + ], + "doc/html/man3/SSL_load_client_CA_file.html" => [ + "doc/man3/SSL_load_client_CA_file.pod" + ], + "doc/html/man3/SSL_new.html" => [ + "doc/man3/SSL_new.pod" + ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], + "doc/html/man3/SSL_pending.html" => [ + "doc/man3/SSL_pending.pod" + ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], + "doc/html/man3/SSL_read.html" => [ + "doc/man3/SSL_read.pod" + ], + "doc/html/man3/SSL_read_early_data.html" => [ + "doc/man3/SSL_read_early_data.pod" + ], + "doc/html/man3/SSL_rstate_string.html" => [ + "doc/man3/SSL_rstate_string.pod" + ], + "doc/html/man3/SSL_session_reused.html" => [ + "doc/man3/SSL_session_reused.pod" + ], + "doc/html/man3/SSL_set1_host.html" => [ + "doc/man3/SSL_set1_host.pod" + ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], + "doc/html/man3/SSL_set_async_callback.html" => [ + "doc/man3/SSL_set_async_callback.pod" + ], + "doc/html/man3/SSL_set_bio.html" => [ + "doc/man3/SSL_set_bio.pod" + ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], + "doc/html/man3/SSL_set_connect_state.html" => [ + "doc/man3/SSL_set_connect_state.pod" + ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], + "doc/html/man3/SSL_set_fd.html" => [ + "doc/man3/SSL_set_fd.pod" + ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], + "doc/html/man3/SSL_set_retry_verify.html" => [ + "doc/man3/SSL_set_retry_verify.pod" + ], + "doc/html/man3/SSL_set_session.html" => [ + "doc/man3/SSL_set_session.pod" + ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], + "doc/html/man3/SSL_set_shutdown.html" => [ + "doc/man3/SSL_set_shutdown.pod" + ], + "doc/html/man3/SSL_set_verify_result.html" => [ + "doc/man3/SSL_set_verify_result.pod" + ], + "doc/html/man3/SSL_shutdown.html" => [ + "doc/man3/SSL_shutdown.pod" + ], + "doc/html/man3/SSL_state_string.html" => [ + "doc/man3/SSL_state_string.pod" + ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], + "doc/html/man3/SSL_want.html" => [ + "doc/man3/SSL_want.pod" + ], + "doc/html/man3/SSL_write.html" => [ + "doc/man3/SSL_write.pod" + ], + "doc/html/man3/TS_RESP_CTX_new.html" => [ + "doc/man3/TS_RESP_CTX_new.pod" + ], + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" + ], + "doc/html/man3/UI_STRING.html" => [ + "doc/man3/UI_STRING.pod" + ], + "doc/html/man3/UI_UTIL_read_pw.html" => [ + "doc/man3/UI_UTIL_read_pw.pod" + ], + "doc/html/man3/UI_create_method.html" => [ + "doc/man3/UI_create_method.pod" + ], + "doc/html/man3/UI_new.html" => [ + "doc/man3/UI_new.pod" + ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], + "doc/html/man3/X509V3_get_d2i.html" => [ + "doc/man3/X509V3_get_d2i.pod" + ], + "doc/html/man3/X509V3_set_ctx.html" => [ + "doc/man3/X509V3_set_ctx.pod" + ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], + "doc/html/man3/X509_ALGOR_dup.html" => [ + "doc/man3/X509_ALGOR_dup.pod" + ], + "doc/html/man3/X509_ATTRIBUTE.html" => [ + "doc/man3/X509_ATTRIBUTE.pod" + ], + "doc/html/man3/X509_CRL_get0_by_serial.html" => [ + "doc/man3/X509_CRL_get0_by_serial.pod" + ], + "doc/html/man3/X509_EXTENSION_set_object.html" => [ + "doc/man3/X509_EXTENSION_set_object.pod" + ], + "doc/html/man3/X509_LOOKUP.html" => [ + "doc/man3/X509_LOOKUP.pod" + ], + "doc/html/man3/X509_LOOKUP_hash_dir.html" => [ + "doc/man3/X509_LOOKUP_hash_dir.pod" + ], + "doc/html/man3/X509_LOOKUP_meth_new.html" => [ + "doc/man3/X509_LOOKUP_meth_new.pod" + ], + "doc/html/man3/X509_NAME_ENTRY_get_object.html" => [ + "doc/man3/X509_NAME_ENTRY_get_object.pod" + ], + "doc/html/man3/X509_NAME_add_entry_by_txt.html" => [ + "doc/man3/X509_NAME_add_entry_by_txt.pod" + ], + "doc/html/man3/X509_NAME_get0_der.html" => [ + "doc/man3/X509_NAME_get0_der.pod" + ], + "doc/html/man3/X509_NAME_get_index_by_NID.html" => [ + "doc/man3/X509_NAME_get_index_by_NID.pod" + ], + "doc/html/man3/X509_NAME_print_ex.html" => [ + "doc/man3/X509_NAME_print_ex.pod" + ], + "doc/html/man3/X509_PUBKEY_new.html" => [ + "doc/man3/X509_PUBKEY_new.pod" + ], + "doc/html/man3/X509_REQ_get_attr.html" => [ + "doc/man3/X509_REQ_get_attr.pod" + ], + "doc/html/man3/X509_REQ_get_extensions.html" => [ + "doc/man3/X509_REQ_get_extensions.pod" + ], + "doc/html/man3/X509_SIG_get0.html" => [ + "doc/man3/X509_SIG_get0.pod" + ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], + "doc/html/man3/X509_STORE_CTX_get_error.html" => [ + "doc/man3/X509_STORE_CTX_get_error.pod" + ], + "doc/html/man3/X509_STORE_CTX_new.html" => [ + "doc/man3/X509_STORE_CTX_new.pod" + ], + "doc/html/man3/X509_STORE_CTX_set_verify_cb.html" => [ + "doc/man3/X509_STORE_CTX_set_verify_cb.pod" + ], + "doc/html/man3/X509_STORE_add_cert.html" => [ + "doc/man3/X509_STORE_add_cert.pod" + ], + "doc/html/man3/X509_STORE_get0_param.html" => [ + "doc/man3/X509_STORE_get0_param.pod" + ], + "doc/html/man3/X509_STORE_new.html" => [ + "doc/man3/X509_STORE_new.pod" + ], + "doc/html/man3/X509_STORE_set_verify_cb_func.html" => [ + "doc/man3/X509_STORE_set_verify_cb_func.pod" + ], + "doc/html/man3/X509_VERIFY_PARAM_set_flags.html" => [ + "doc/man3/X509_VERIFY_PARAM_set_flags.pod" + ], + "doc/html/man3/X509_add_cert.html" => [ + "doc/man3/X509_add_cert.pod" + ], + "doc/html/man3/X509_check_ca.html" => [ + "doc/man3/X509_check_ca.pod" + ], + "doc/html/man3/X509_check_host.html" => [ + "doc/man3/X509_check_host.pod" + ], + "doc/html/man3/X509_check_issued.html" => [ + "doc/man3/X509_check_issued.pod" + ], + "doc/html/man3/X509_check_private_key.html" => [ + "doc/man3/X509_check_private_key.pod" + ], + "doc/html/man3/X509_check_purpose.html" => [ + "doc/man3/X509_check_purpose.pod" + ], + "doc/html/man3/X509_cmp.html" => [ + "doc/man3/X509_cmp.pod" + ], + "doc/html/man3/X509_cmp_time.html" => [ + "doc/man3/X509_cmp_time.pod" + ], + "doc/html/man3/X509_digest.html" => [ + "doc/man3/X509_digest.pod" + ], + "doc/html/man3/X509_dup.html" => [ + "doc/man3/X509_dup.pod" + ], + "doc/html/man3/X509_get0_distinguishing_id.html" => [ + "doc/man3/X509_get0_distinguishing_id.pod" + ], + "doc/html/man3/X509_get0_notBefore.html" => [ + "doc/man3/X509_get0_notBefore.pod" + ], + "doc/html/man3/X509_get0_signature.html" => [ + "doc/man3/X509_get0_signature.pod" + ], + "doc/html/man3/X509_get0_uids.html" => [ + "doc/man3/X509_get0_uids.pod" + ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], + "doc/html/man3/X509_get_extension_flags.html" => [ + "doc/man3/X509_get_extension_flags.pod" + ], + "doc/html/man3/X509_get_pubkey.html" => [ + "doc/man3/X509_get_pubkey.pod" + ], + "doc/html/man3/X509_get_serialNumber.html" => [ + "doc/man3/X509_get_serialNumber.pod" + ], + "doc/html/man3/X509_get_subject_name.html" => [ + "doc/man3/X509_get_subject_name.pod" + ], + "doc/html/man3/X509_get_version.html" => [ + "doc/man3/X509_get_version.pod" + ], + "doc/html/man3/X509_load_http.html" => [ + "doc/man3/X509_load_http.pod" + ], + "doc/html/man3/X509_new.html" => [ + "doc/man3/X509_new.pod" + ], + "doc/html/man3/X509_sign.html" => [ + "doc/man3/X509_sign.pod" + ], + "doc/html/man3/X509_verify.html" => [ + "doc/man3/X509_verify.pod" + ], + "doc/html/man3/X509_verify_cert.html" => [ + "doc/man3/X509_verify_cert.pod" + ], + "doc/html/man3/X509v3_get_ext_by_NID.html" => [ + "doc/man3/X509v3_get_ext_by_NID.pod" + ], + "doc/html/man3/b2i_PVK_bio_ex.html" => [ + "doc/man3/b2i_PVK_bio_ex.pod" + ], + "doc/html/man3/d2i_PKCS8PrivateKey_bio.html" => [ + "doc/man3/d2i_PKCS8PrivateKey_bio.pod" + ], + "doc/html/man3/d2i_PrivateKey.html" => [ + "doc/man3/d2i_PrivateKey.pod" + ], + "doc/html/man3/d2i_RSAPrivateKey.html" => [ + "doc/man3/d2i_RSAPrivateKey.pod" + ], + "doc/html/man3/d2i_SSL_SESSION.html" => [ + "doc/man3/d2i_SSL_SESSION.pod" + ], + "doc/html/man3/d2i_X509.html" => [ + "doc/man3/d2i_X509.pod" + ], + "doc/html/man3/i2d_CMS_bio_stream.html" => [ + "doc/man3/i2d_CMS_bio_stream.pod" + ], + "doc/html/man3/i2d_PKCS7_bio_stream.html" => [ + "doc/man3/i2d_PKCS7_bio_stream.pod" + ], + "doc/html/man3/i2d_re_X509_tbs.html" => [ + "doc/man3/i2d_re_X509_tbs.pod" + ], + "doc/html/man3/o2i_SCT_LIST.html" => [ + "doc/man3/o2i_SCT_LIST.pod" + ], + "doc/html/man3/s2i_ASN1_IA5STRING.html" => [ + "doc/man3/s2i_ASN1_IA5STRING.pod" + ], + "doc/html/man5/config.html" => [ + "doc/man5/config.pod" + ], + "doc/html/man5/fips_config.html" => [ + "doc/man5/fips_config.pod" + ], + "doc/html/man5/x509v3_config.html" => [ + "doc/man5/x509v3_config.pod" + ], + "doc/html/man7/EVP_ASYM_CIPHER-RSA.html" => [ + "doc/man7/EVP_ASYM_CIPHER-RSA.pod" + ], + "doc/html/man7/EVP_ASYM_CIPHER-SM2.html" => [ + "doc/man7/EVP_ASYM_CIPHER-SM2.pod" + ], + "doc/html/man7/EVP_CIPHER-AES.html" => [ + "doc/man7/EVP_CIPHER-AES.pod" + ], + "doc/html/man7/EVP_CIPHER-ARIA.html" => [ + "doc/man7/EVP_CIPHER-ARIA.pod" + ], + "doc/html/man7/EVP_CIPHER-BLOWFISH.html" => [ + "doc/man7/EVP_CIPHER-BLOWFISH.pod" + ], + "doc/html/man7/EVP_CIPHER-CAMELLIA.html" => [ + "doc/man7/EVP_CIPHER-CAMELLIA.pod" + ], + "doc/html/man7/EVP_CIPHER-CAST.html" => [ + "doc/man7/EVP_CIPHER-CAST.pod" + ], + "doc/html/man7/EVP_CIPHER-CHACHA.html" => [ + "doc/man7/EVP_CIPHER-CHACHA.pod" + ], + "doc/html/man7/EVP_CIPHER-DES.html" => [ + "doc/man7/EVP_CIPHER-DES.pod" + ], + "doc/html/man7/EVP_CIPHER-IDEA.html" => [ + "doc/man7/EVP_CIPHER-IDEA.pod" + ], + "doc/html/man7/EVP_CIPHER-NULL.html" => [ + "doc/man7/EVP_CIPHER-NULL.pod" + ], + "doc/html/man7/EVP_CIPHER-RC2.html" => [ + "doc/man7/EVP_CIPHER-RC2.pod" + ], + "doc/html/man7/EVP_CIPHER-RC4.html" => [ + "doc/man7/EVP_CIPHER-RC4.pod" + ], + "doc/html/man7/EVP_CIPHER-RC5.html" => [ + "doc/man7/EVP_CIPHER-RC5.pod" + ], + "doc/html/man7/EVP_CIPHER-SEED.html" => [ + "doc/man7/EVP_CIPHER-SEED.pod" + ], + "doc/html/man7/EVP_CIPHER-SM4.html" => [ + "doc/man7/EVP_CIPHER-SM4.pod" + ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], + "doc/html/man7/EVP_KDF-HKDF.html" => [ + "doc/man7/EVP_KDF-HKDF.pod" + ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], + "doc/html/man7/EVP_KDF-KB.html" => [ + "doc/man7/EVP_KDF-KB.pod" + ], + "doc/html/man7/EVP_KDF-KRB5KDF.html" => [ + "doc/man7/EVP_KDF-KRB5KDF.pod" + ], + "doc/html/man7/EVP_KDF-PBKDF1.html" => [ + "doc/man7/EVP_KDF-PBKDF1.pod" + ], + "doc/html/man7/EVP_KDF-PBKDF2.html" => [ + "doc/man7/EVP_KDF-PBKDF2.pod" + ], + "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ + "doc/man7/EVP_KDF-PKCS12KDF.pod" + ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], + "doc/html/man7/EVP_KDF-SCRYPT.html" => [ + "doc/man7/EVP_KDF-SCRYPT.pod" + ], + "doc/html/man7/EVP_KDF-SS.html" => [ + "doc/man7/EVP_KDF-SS.pod" + ], + "doc/html/man7/EVP_KDF-SSHKDF.html" => [ + "doc/man7/EVP_KDF-SSHKDF.pod" + ], + "doc/html/man7/EVP_KDF-TLS13_KDF.html" => [ + "doc/man7/EVP_KDF-TLS13_KDF.pod" + ], + "doc/html/man7/EVP_KDF-TLS1_PRF.html" => [ + "doc/man7/EVP_KDF-TLS1_PRF.pod" + ], + "doc/html/man7/EVP_KDF-X942-ASN1.html" => [ + "doc/man7/EVP_KDF-X942-ASN1.pod" + ], + "doc/html/man7/EVP_KDF-X942-CONCAT.html" => [ + "doc/man7/EVP_KDF-X942-CONCAT.pod" + ], + "doc/html/man7/EVP_KDF-X963.html" => [ + "doc/man7/EVP_KDF-X963.pod" + ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], + "doc/html/man7/EVP_KEM-RSA.html" => [ + "doc/man7/EVP_KEM-RSA.pod" + ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], + "doc/html/man7/EVP_KEYEXCH-DH.html" => [ + "doc/man7/EVP_KEYEXCH-DH.pod" + ], + "doc/html/man7/EVP_KEYEXCH-ECDH.html" => [ + "doc/man7/EVP_KEYEXCH-ECDH.pod" + ], + "doc/html/man7/EVP_KEYEXCH-X25519.html" => [ + "doc/man7/EVP_KEYEXCH-X25519.pod" + ], + "doc/html/man7/EVP_MAC-BLAKE2.html" => [ + "doc/man7/EVP_MAC-BLAKE2.pod" + ], + "doc/html/man7/EVP_MAC-CMAC.html" => [ + "doc/man7/EVP_MAC-CMAC.pod" + ], + "doc/html/man7/EVP_MAC-GMAC.html" => [ + "doc/man7/EVP_MAC-GMAC.pod" + ], + "doc/html/man7/EVP_MAC-HMAC.html" => [ + "doc/man7/EVP_MAC-HMAC.pod" + ], + "doc/html/man7/EVP_MAC-KMAC.html" => [ + "doc/man7/EVP_MAC-KMAC.pod" + ], + "doc/html/man7/EVP_MAC-Poly1305.html" => [ + "doc/man7/EVP_MAC-Poly1305.pod" + ], + "doc/html/man7/EVP_MAC-Siphash.html" => [ + "doc/man7/EVP_MAC-Siphash.pod" + ], + "doc/html/man7/EVP_MD-BLAKE2.html" => [ + "doc/man7/EVP_MD-BLAKE2.pod" + ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], + "doc/html/man7/EVP_MD-MD2.html" => [ + "doc/man7/EVP_MD-MD2.pod" + ], + "doc/html/man7/EVP_MD-MD4.html" => [ + "doc/man7/EVP_MD-MD4.pod" + ], + "doc/html/man7/EVP_MD-MD5-SHA1.html" => [ + "doc/man7/EVP_MD-MD5-SHA1.pod" + ], + "doc/html/man7/EVP_MD-MD5.html" => [ + "doc/man7/EVP_MD-MD5.pod" + ], + "doc/html/man7/EVP_MD-MDC2.html" => [ + "doc/man7/EVP_MD-MDC2.pod" + ], + "doc/html/man7/EVP_MD-NULL.html" => [ + "doc/man7/EVP_MD-NULL.pod" + ], + "doc/html/man7/EVP_MD-RIPEMD160.html" => [ + "doc/man7/EVP_MD-RIPEMD160.pod" + ], + "doc/html/man7/EVP_MD-SHA1.html" => [ + "doc/man7/EVP_MD-SHA1.pod" + ], + "doc/html/man7/EVP_MD-SHA2.html" => [ + "doc/man7/EVP_MD-SHA2.pod" + ], + "doc/html/man7/EVP_MD-SHA3.html" => [ + "doc/man7/EVP_MD-SHA3.pod" + ], + "doc/html/man7/EVP_MD-SHAKE.html" => [ + "doc/man7/EVP_MD-SHAKE.pod" + ], + "doc/html/man7/EVP_MD-SM3.html" => [ + "doc/man7/EVP_MD-SM3.pod" + ], + "doc/html/man7/EVP_MD-WHIRLPOOL.html" => [ + "doc/man7/EVP_MD-WHIRLPOOL.pod" + ], + "doc/html/man7/EVP_MD-common.html" => [ + "doc/man7/EVP_MD-common.pod" + ], + "doc/html/man7/EVP_PKEY-DH.html" => [ + "doc/man7/EVP_PKEY-DH.pod" + ], + "doc/html/man7/EVP_PKEY-DSA.html" => [ + "doc/man7/EVP_PKEY-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-EC.html" => [ + "doc/man7/EVP_PKEY-EC.pod" + ], + "doc/html/man7/EVP_PKEY-FFC.html" => [ + "doc/man7/EVP_PKEY-FFC.pod" + ], + "doc/html/man7/EVP_PKEY-HMAC.html" => [ + "doc/man7/EVP_PKEY-HMAC.pod" + ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], + "doc/html/man7/EVP_PKEY-RSA.html" => [ + "doc/man7/EVP_PKEY-RSA.pod" + ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-SM2.html" => [ + "doc/man7/EVP_PKEY-SM2.pod" + ], + "doc/html/man7/EVP_PKEY-X25519.html" => [ + "doc/man7/EVP_PKEY-X25519.pod" + ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], + "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ + "doc/man7/EVP_RAND-CTR-DRBG.pod" + ], + "doc/html/man7/EVP_RAND-HASH-DRBG.html" => [ + "doc/man7/EVP_RAND-HASH-DRBG.pod" + ], + "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ + "doc/man7/EVP_RAND-HMAC-DRBG.pod" + ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], + "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ + "doc/man7/EVP_RAND-SEED-SRC.pod" + ], + "doc/html/man7/EVP_RAND-TEST-RAND.html" => [ + "doc/man7/EVP_RAND-TEST-RAND.pod" + ], + "doc/html/man7/EVP_RAND.html" => [ + "doc/man7/EVP_RAND.pod" + ], + "doc/html/man7/EVP_SIGNATURE-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-DSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-ECDSA.html" => [ + "doc/man7/EVP_SIGNATURE-ECDSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-ED25519.html" => [ + "doc/man7/EVP_SIGNATURE-ED25519.pod" + ], + "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ + "doc/man7/EVP_SIGNATURE-HMAC.pod" + ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ + "doc/man7/EVP_SIGNATURE-RSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], + "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ + "doc/man7/OSSL_PROVIDER-FIPS.pod" + ], + "doc/html/man7/OSSL_PROVIDER-base.html" => [ + "doc/man7/OSSL_PROVIDER-base.pod" + ], + "doc/html/man7/OSSL_PROVIDER-default.html" => [ + "doc/man7/OSSL_PROVIDER-default.pod" + ], + "doc/html/man7/OSSL_PROVIDER-legacy.html" => [ + "doc/man7/OSSL_PROVIDER-legacy.pod" + ], + "doc/html/man7/OSSL_PROVIDER-null.html" => [ + "doc/man7/OSSL_PROVIDER-null.pod" + ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], + "doc/html/man7/RAND.html" => [ + "doc/man7/RAND.pod" + ], + "doc/html/man7/RSA-PSS.html" => [ + "doc/man7/RSA-PSS.pod" + ], + "doc/html/man7/X25519.html" => [ + "doc/man7/X25519.pod" + ], + "doc/html/man7/bio.html" => [ + "doc/man7/bio.pod" + ], + "doc/html/man7/ct.html" => [ + "doc/man7/ct.pod" + ], + "doc/html/man7/des_modes.html" => [ + "doc/man7/des_modes.pod" + ], + "doc/html/man7/evp.html" => [ + "doc/man7/evp.pod" + ], + "doc/html/man7/fips_module.html" => [ + "doc/man7/fips_module.pod" + ], + "doc/html/man7/life_cycle-cipher.html" => [ + "doc/man7/life_cycle-cipher.pod" + ], + "doc/html/man7/life_cycle-digest.html" => [ + "doc/man7/life_cycle-digest.pod" + ], + "doc/html/man7/life_cycle-kdf.html" => [ + "doc/man7/life_cycle-kdf.pod" + ], + "doc/html/man7/life_cycle-mac.html" => [ + "doc/man7/life_cycle-mac.pod" + ], + "doc/html/man7/life_cycle-pkey.html" => [ + "doc/man7/life_cycle-pkey.pod" + ], + "doc/html/man7/life_cycle-rand.html" => [ + "doc/man7/life_cycle-rand.pod" + ], + "doc/html/man7/openssl-core.h.html" => [ + "doc/man7/openssl-core.h.pod" + ], + "doc/html/man7/openssl-core_dispatch.h.html" => [ + "doc/man7/openssl-core_dispatch.h.pod" + ], + "doc/html/man7/openssl-core_names.h.html" => [ + "doc/man7/openssl-core_names.h.pod" + ], + "doc/html/man7/openssl-env.html" => [ + "doc/man7/openssl-env.pod" + ], + "doc/html/man7/openssl-glossary.html" => [ + "doc/man7/openssl-glossary.pod" + ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], + "doc/html/man7/openssl-threads.html" => [ + "doc/man7/openssl-threads.pod" + ], + "doc/html/man7/openssl_user_macros.html" => [ + "doc/man7/openssl_user_macros.pod" + ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], + "doc/html/man7/ossl_store-file.html" => [ + "doc/man7/ossl_store-file.pod" + ], + "doc/html/man7/ossl_store.html" => [ + "doc/man7/ossl_store.pod" + ], + "doc/html/man7/passphrase-encoding.html" => [ + "doc/man7/passphrase-encoding.pod" + ], + "doc/html/man7/property.html" => [ + "doc/man7/property.pod" + ], + "doc/html/man7/provider-asym_cipher.html" => [ + "doc/man7/provider-asym_cipher.pod" + ], + "doc/html/man7/provider-base.html" => [ + "doc/man7/provider-base.pod" + ], + "doc/html/man7/provider-cipher.html" => [ + "doc/man7/provider-cipher.pod" + ], + "doc/html/man7/provider-decoder.html" => [ + "doc/man7/provider-decoder.pod" + ], + "doc/html/man7/provider-digest.html" => [ + "doc/man7/provider-digest.pod" + ], + "doc/html/man7/provider-encoder.html" => [ + "doc/man7/provider-encoder.pod" + ], + "doc/html/man7/provider-kdf.html" => [ + "doc/man7/provider-kdf.pod" + ], + "doc/html/man7/provider-kem.html" => [ + "doc/man7/provider-kem.pod" + ], + "doc/html/man7/provider-keyexch.html" => [ + "doc/man7/provider-keyexch.pod" + ], + "doc/html/man7/provider-keymgmt.html" => [ + "doc/man7/provider-keymgmt.pod" + ], + "doc/html/man7/provider-mac.html" => [ + "doc/man7/provider-mac.pod" + ], + "doc/html/man7/provider-object.html" => [ + "doc/man7/provider-object.pod" + ], + "doc/html/man7/provider-rand.html" => [ + "doc/man7/provider-rand.pod" + ], + "doc/html/man7/provider-signature.html" => [ + "doc/man7/provider-signature.pod" + ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], + "doc/html/man7/provider-storemgmt.html" => [ + "doc/man7/provider-storemgmt.pod" + ], + "doc/html/man7/provider.html" => [ + "doc/man7/provider.pod" + ], + "doc/html/man7/proxy-certificates.html" => [ + "doc/man7/proxy-certificates.pod" + ], + "doc/html/man7/x509.html" => [ + "doc/man7/x509.pod" + ], + "doc/man/man1/CA.pl.1" => [ + "doc/man1/CA.pl.pod" + ], + "doc/man/man1/openssl-asn1parse.1" => [ + "doc/man1/openssl-asn1parse.pod" + ], + "doc/man/man1/openssl-ca.1" => [ + "doc/man1/openssl-ca.pod" + ], + "doc/man/man1/openssl-ciphers.1" => [ + "doc/man1/openssl-ciphers.pod" + ], + "doc/man/man1/openssl-cmds.1" => [ + "doc/man1/openssl-cmds.pod" + ], + "doc/man/man1/openssl-cmp.1" => [ + "doc/man1/openssl-cmp.pod" + ], + "doc/man/man1/openssl-cms.1" => [ + "doc/man1/openssl-cms.pod" + ], + "doc/man/man1/openssl-crl.1" => [ + "doc/man1/openssl-crl.pod" + ], + "doc/man/man1/openssl-crl2pkcs7.1" => [ + "doc/man1/openssl-crl2pkcs7.pod" + ], + "doc/man/man1/openssl-dgst.1" => [ + "doc/man1/openssl-dgst.pod" + ], + "doc/man/man1/openssl-dhparam.1" => [ + "doc/man1/openssl-dhparam.pod" + ], + "doc/man/man1/openssl-dsa.1" => [ + "doc/man1/openssl-dsa.pod" + ], + "doc/man/man1/openssl-dsaparam.1" => [ + "doc/man1/openssl-dsaparam.pod" + ], + "doc/man/man1/openssl-ec.1" => [ + "doc/man1/openssl-ec.pod" + ], + "doc/man/man1/openssl-ecparam.1" => [ + "doc/man1/openssl-ecparam.pod" + ], + "doc/man/man1/openssl-enc.1" => [ + "doc/man1/openssl-enc.pod" + ], + "doc/man/man1/openssl-engine.1" => [ + "doc/man1/openssl-engine.pod" + ], + "doc/man/man1/openssl-errstr.1" => [ + "doc/man1/openssl-errstr.pod" + ], + "doc/man/man1/openssl-fipsinstall.1" => [ + "doc/man1/openssl-fipsinstall.pod" + ], + "doc/man/man1/openssl-format-options.1" => [ + "doc/man1/openssl-format-options.pod" + ], + "doc/man/man1/openssl-gendsa.1" => [ + "doc/man1/openssl-gendsa.pod" + ], + "doc/man/man1/openssl-genpkey.1" => [ + "doc/man1/openssl-genpkey.pod" + ], + "doc/man/man1/openssl-genrsa.1" => [ + "doc/man1/openssl-genrsa.pod" + ], + "doc/man/man1/openssl-info.1" => [ + "doc/man1/openssl-info.pod" + ], + "doc/man/man1/openssl-kdf.1" => [ + "doc/man1/openssl-kdf.pod" + ], + "doc/man/man1/openssl-list.1" => [ + "doc/man1/openssl-list.pod" + ], + "doc/man/man1/openssl-mac.1" => [ + "doc/man1/openssl-mac.pod" + ], + "doc/man/man1/openssl-namedisplay-options.1" => [ + "doc/man1/openssl-namedisplay-options.pod" + ], + "doc/man/man1/openssl-nseq.1" => [ + "doc/man1/openssl-nseq.pod" + ], + "doc/man/man1/openssl-ocsp.1" => [ + "doc/man1/openssl-ocsp.pod" + ], + "doc/man/man1/openssl-passphrase-options.1" => [ + "doc/man1/openssl-passphrase-options.pod" + ], + "doc/man/man1/openssl-passwd.1" => [ + "doc/man1/openssl-passwd.pod" + ], + "doc/man/man1/openssl-pkcs12.1" => [ + "doc/man1/openssl-pkcs12.pod" + ], + "doc/man/man1/openssl-pkcs7.1" => [ + "doc/man1/openssl-pkcs7.pod" + ], + "doc/man/man1/openssl-pkcs8.1" => [ + "doc/man1/openssl-pkcs8.pod" + ], + "doc/man/man1/openssl-pkey.1" => [ + "doc/man1/openssl-pkey.pod" + ], + "doc/man/man1/openssl-pkeyparam.1" => [ + "doc/man1/openssl-pkeyparam.pod" + ], + "doc/man/man1/openssl-pkeyutl.1" => [ + "doc/man1/openssl-pkeyutl.pod" + ], + "doc/man/man1/openssl-prime.1" => [ + "doc/man1/openssl-prime.pod" + ], + "doc/man/man1/openssl-rand.1" => [ + "doc/man1/openssl-rand.pod" + ], + "doc/man/man1/openssl-rehash.1" => [ + "doc/man1/openssl-rehash.pod" + ], + "doc/man/man1/openssl-req.1" => [ + "doc/man1/openssl-req.pod" + ], + "doc/man/man1/openssl-rsa.1" => [ + "doc/man1/openssl-rsa.pod" + ], + "doc/man/man1/openssl-rsautl.1" => [ + "doc/man1/openssl-rsautl.pod" + ], + "doc/man/man1/openssl-s_client.1" => [ + "doc/man1/openssl-s_client.pod" + ], + "doc/man/man1/openssl-s_server.1" => [ + "doc/man1/openssl-s_server.pod" + ], + "doc/man/man1/openssl-s_time.1" => [ + "doc/man1/openssl-s_time.pod" + ], + "doc/man/man1/openssl-sess_id.1" => [ + "doc/man1/openssl-sess_id.pod" + ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], + "doc/man/man1/openssl-smime.1" => [ + "doc/man1/openssl-smime.pod" + ], + "doc/man/man1/openssl-speed.1" => [ + "doc/man1/openssl-speed.pod" + ], + "doc/man/man1/openssl-spkac.1" => [ + "doc/man1/openssl-spkac.pod" + ], + "doc/man/man1/openssl-srp.1" => [ + "doc/man1/openssl-srp.pod" + ], + "doc/man/man1/openssl-storeutl.1" => [ + "doc/man1/openssl-storeutl.pod" + ], + "doc/man/man1/openssl-ts.1" => [ + "doc/man1/openssl-ts.pod" + ], + "doc/man/man1/openssl-verification-options.1" => [ + "doc/man1/openssl-verification-options.pod" + ], + "doc/man/man1/openssl-verify.1" => [ + "doc/man1/openssl-verify.pod" + ], + "doc/man/man1/openssl-version.1" => [ + "doc/man1/openssl-version.pod" + ], + "doc/man/man1/openssl-x509.1" => [ + "doc/man1/openssl-x509.pod" + ], + "doc/man/man1/openssl.1" => [ + "doc/man1/openssl.pod" + ], + "doc/man/man1/tsget.1" => [ + "doc/man1/tsget.pod" + ], + "doc/man/man3/ADMISSIONS.3" => [ + "doc/man3/ADMISSIONS.pod" + ], + "doc/man/man3/ASN1_EXTERN_FUNCS.3" => [ + "doc/man3/ASN1_EXTERN_FUNCS.pod" + ], + "doc/man/man3/ASN1_INTEGER_get_int64.3" => [ + "doc/man3/ASN1_INTEGER_get_int64.pod" + ], + "doc/man/man3/ASN1_INTEGER_new.3" => [ + "doc/man3/ASN1_INTEGER_new.pod" + ], + "doc/man/man3/ASN1_ITEM_lookup.3" => [ + "doc/man3/ASN1_ITEM_lookup.pod" + ], + "doc/man/man3/ASN1_OBJECT_new.3" => [ + "doc/man3/ASN1_OBJECT_new.pod" + ], + "doc/man/man3/ASN1_STRING_TABLE_add.3" => [ + "doc/man3/ASN1_STRING_TABLE_add.pod" + ], + "doc/man/man3/ASN1_STRING_length.3" => [ + "doc/man3/ASN1_STRING_length.pod" + ], + "doc/man/man3/ASN1_STRING_new.3" => [ + "doc/man3/ASN1_STRING_new.pod" + ], + "doc/man/man3/ASN1_STRING_print_ex.3" => [ + "doc/man3/ASN1_STRING_print_ex.pod" + ], + "doc/man/man3/ASN1_TIME_set.3" => [ + "doc/man3/ASN1_TIME_set.pod" + ], + "doc/man/man3/ASN1_TYPE_get.3" => [ + "doc/man3/ASN1_TYPE_get.pod" + ], + "doc/man/man3/ASN1_aux_cb.3" => [ + "doc/man3/ASN1_aux_cb.pod" + ], + "doc/man/man3/ASN1_generate_nconf.3" => [ + "doc/man3/ASN1_generate_nconf.pod" + ], + "doc/man/man3/ASN1_item_d2i_bio.3" => [ + "doc/man3/ASN1_item_d2i_bio.pod" + ], + "doc/man/man3/ASN1_item_new.3" => [ + "doc/man3/ASN1_item_new.pod" + ], + "doc/man/man3/ASN1_item_sign.3" => [ + "doc/man3/ASN1_item_sign.pod" + ], + "doc/man/man3/ASYNC_WAIT_CTX_new.3" => [ + "doc/man3/ASYNC_WAIT_CTX_new.pod" + ], + "doc/man/man3/ASYNC_start_job.3" => [ + "doc/man3/ASYNC_start_job.pod" + ], + "doc/man/man3/BF_encrypt.3" => [ + "doc/man3/BF_encrypt.pod" + ], + "doc/man/man3/BIO_ADDR.3" => [ + "doc/man3/BIO_ADDR.pod" + ], + "doc/man/man3/BIO_ADDRINFO.3" => [ + "doc/man3/BIO_ADDRINFO.pod" + ], + "doc/man/man3/BIO_connect.3" => [ + "doc/man3/BIO_connect.pod" + ], + "doc/man/man3/BIO_ctrl.3" => [ + "doc/man3/BIO_ctrl.pod" + ], + "doc/man/man3/BIO_f_base64.3" => [ + "doc/man3/BIO_f_base64.pod" + ], + "doc/man/man3/BIO_f_buffer.3" => [ + "doc/man3/BIO_f_buffer.pod" + ], + "doc/man/man3/BIO_f_cipher.3" => [ + "doc/man3/BIO_f_cipher.pod" + ], + "doc/man/man3/BIO_f_md.3" => [ + "doc/man3/BIO_f_md.pod" + ], + "doc/man/man3/BIO_f_null.3" => [ + "doc/man3/BIO_f_null.pod" + ], + "doc/man/man3/BIO_f_prefix.3" => [ + "doc/man3/BIO_f_prefix.pod" + ], + "doc/man/man3/BIO_f_readbuffer.3" => [ + "doc/man3/BIO_f_readbuffer.pod" + ], + "doc/man/man3/BIO_f_ssl.3" => [ + "doc/man3/BIO_f_ssl.pod" + ], + "doc/man/man3/BIO_find_type.3" => [ + "doc/man3/BIO_find_type.pod" + ], + "doc/man/man3/BIO_get_data.3" => [ + "doc/man3/BIO_get_data.pod" + ], + "doc/man/man3/BIO_get_ex_new_index.3" => [ + "doc/man3/BIO_get_ex_new_index.pod" + ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], + "doc/man/man3/BIO_meth_new.3" => [ + "doc/man3/BIO_meth_new.pod" + ], + "doc/man/man3/BIO_new.3" => [ + "doc/man3/BIO_new.pod" + ], + "doc/man/man3/BIO_new_CMS.3" => [ + "doc/man3/BIO_new_CMS.pod" + ], + "doc/man/man3/BIO_parse_hostserv.3" => [ + "doc/man3/BIO_parse_hostserv.pod" + ], + "doc/man/man3/BIO_printf.3" => [ + "doc/man3/BIO_printf.pod" + ], + "doc/man/man3/BIO_push.3" => [ + "doc/man3/BIO_push.pod" + ], + "doc/man/man3/BIO_read.3" => [ + "doc/man3/BIO_read.pod" + ], + "doc/man/man3/BIO_s_accept.3" => [ + "doc/man3/BIO_s_accept.pod" + ], + "doc/man/man3/BIO_s_bio.3" => [ + "doc/man3/BIO_s_bio.pod" + ], + "doc/man/man3/BIO_s_connect.3" => [ + "doc/man3/BIO_s_connect.pod" + ], + "doc/man/man3/BIO_s_core.3" => [ + "doc/man3/BIO_s_core.pod" + ], + "doc/man/man3/BIO_s_datagram.3" => [ + "doc/man3/BIO_s_datagram.pod" + ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], + "doc/man/man3/BIO_s_fd.3" => [ + "doc/man3/BIO_s_fd.pod" + ], + "doc/man/man3/BIO_s_file.3" => [ + "doc/man3/BIO_s_file.pod" + ], + "doc/man/man3/BIO_s_mem.3" => [ + "doc/man3/BIO_s_mem.pod" + ], + "doc/man/man3/BIO_s_null.3" => [ + "doc/man3/BIO_s_null.pod" + ], + "doc/man/man3/BIO_s_socket.3" => [ + "doc/man3/BIO_s_socket.pod" + ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], + "doc/man/man3/BIO_set_callback.3" => [ + "doc/man3/BIO_set_callback.pod" + ], + "doc/man/man3/BIO_set_flags.3" => [ + "doc/man3/BIO_set_flags.pod" + ], + "doc/man/man3/BIO_should_retry.3" => [ + "doc/man3/BIO_should_retry.pod" + ], + "doc/man/man3/BIO_socket_wait.3" => [ + "doc/man3/BIO_socket_wait.pod" + ], + "doc/man/man3/BN_BLINDING_new.3" => [ + "doc/man3/BN_BLINDING_new.pod" + ], + "doc/man/man3/BN_CTX_new.3" => [ + "doc/man3/BN_CTX_new.pod" + ], + "doc/man/man3/BN_CTX_start.3" => [ + "doc/man3/BN_CTX_start.pod" + ], + "doc/man/man3/BN_add.3" => [ + "doc/man3/BN_add.pod" + ], + "doc/man/man3/BN_add_word.3" => [ + "doc/man3/BN_add_word.pod" + ], + "doc/man/man3/BN_bn2bin.3" => [ + "doc/man3/BN_bn2bin.pod" + ], + "doc/man/man3/BN_cmp.3" => [ + "doc/man3/BN_cmp.pod" + ], + "doc/man/man3/BN_copy.3" => [ + "doc/man3/BN_copy.pod" + ], + "doc/man/man3/BN_generate_prime.3" => [ + "doc/man3/BN_generate_prime.pod" + ], + "doc/man/man3/BN_mod_exp_mont.3" => [ + "doc/man3/BN_mod_exp_mont.pod" + ], + "doc/man/man3/BN_mod_inverse.3" => [ + "doc/man3/BN_mod_inverse.pod" + ], + "doc/man/man3/BN_mod_mul_montgomery.3" => [ + "doc/man3/BN_mod_mul_montgomery.pod" + ], + "doc/man/man3/BN_mod_mul_reciprocal.3" => [ + "doc/man3/BN_mod_mul_reciprocal.pod" + ], + "doc/man/man3/BN_new.3" => [ + "doc/man3/BN_new.pod" + ], + "doc/man/man3/BN_num_bytes.3" => [ + "doc/man3/BN_num_bytes.pod" + ], + "doc/man/man3/BN_rand.3" => [ + "doc/man3/BN_rand.pod" + ], + "doc/man/man3/BN_security_bits.3" => [ + "doc/man3/BN_security_bits.pod" + ], + "doc/man/man3/BN_set_bit.3" => [ + "doc/man3/BN_set_bit.pod" + ], + "doc/man/man3/BN_swap.3" => [ + "doc/man3/BN_swap.pod" + ], + "doc/man/man3/BN_zero.3" => [ + "doc/man3/BN_zero.pod" + ], + "doc/man/man3/BUF_MEM_new.3" => [ + "doc/man3/BUF_MEM_new.pod" + ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], + "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ + "doc/man3/CMS_EncryptedData_decrypt.pod" + ], + "doc/man/man3/CMS_EncryptedData_encrypt.3" => [ + "doc/man3/CMS_EncryptedData_encrypt.pod" + ], + "doc/man/man3/CMS_EncryptedData_set1_key.3" => [ + "doc/man3/CMS_EncryptedData_set1_key.pod" + ], + "doc/man/man3/CMS_EnvelopedData_create.3" => [ + "doc/man3/CMS_EnvelopedData_create.pod" + ], + "doc/man/man3/CMS_add0_cert.3" => [ + "doc/man3/CMS_add0_cert.pod" + ], + "doc/man/man3/CMS_add1_recipient_cert.3" => [ + "doc/man3/CMS_add1_recipient_cert.pod" + ], + "doc/man/man3/CMS_add1_signer.3" => [ + "doc/man3/CMS_add1_signer.pod" + ], + "doc/man/man3/CMS_compress.3" => [ + "doc/man3/CMS_compress.pod" + ], + "doc/man/man3/CMS_data_create.3" => [ + "doc/man3/CMS_data_create.pod" + ], + "doc/man/man3/CMS_decrypt.3" => [ + "doc/man3/CMS_decrypt.pod" + ], + "doc/man/man3/CMS_digest_create.3" => [ + "doc/man3/CMS_digest_create.pod" + ], + "doc/man/man3/CMS_encrypt.3" => [ + "doc/man3/CMS_encrypt.pod" + ], + "doc/man/man3/CMS_final.3" => [ + "doc/man3/CMS_final.pod" + ], + "doc/man/man3/CMS_get0_RecipientInfos.3" => [ + "doc/man3/CMS_get0_RecipientInfos.pod" + ], + "doc/man/man3/CMS_get0_SignerInfos.3" => [ + "doc/man3/CMS_get0_SignerInfos.pod" + ], + "doc/man/man3/CMS_get0_type.3" => [ + "doc/man3/CMS_get0_type.pod" + ], + "doc/man/man3/CMS_get1_ReceiptRequest.3" => [ + "doc/man3/CMS_get1_ReceiptRequest.pod" + ], + "doc/man/man3/CMS_sign.3" => [ + "doc/man3/CMS_sign.pod" + ], + "doc/man/man3/CMS_sign_receipt.3" => [ + "doc/man3/CMS_sign_receipt.pod" + ], + "doc/man/man3/CMS_signed_get_attr.3" => [ + "doc/man3/CMS_signed_get_attr.pod" + ], + "doc/man/man3/CMS_uncompress.3" => [ + "doc/man3/CMS_uncompress.pod" + ], + "doc/man/man3/CMS_verify.3" => [ + "doc/man3/CMS_verify.pod" + ], + "doc/man/man3/CMS_verify_receipt.3" => [ + "doc/man3/CMS_verify_receipt.pod" + ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], + "doc/man/man3/CONF_modules_free.3" => [ + "doc/man3/CONF_modules_free.pod" + ], + "doc/man/man3/CONF_modules_load_file.3" => [ + "doc/man3/CONF_modules_load_file.pod" + ], + "doc/man/man3/CRYPTO_THREAD_run_once.3" => [ + "doc/man3/CRYPTO_THREAD_run_once.pod" + ], + "doc/man/man3/CRYPTO_get_ex_new_index.3" => [ + "doc/man3/CRYPTO_get_ex_new_index.pod" + ], + "doc/man/man3/CRYPTO_memcmp.3" => [ + "doc/man3/CRYPTO_memcmp.pod" + ], + "doc/man/man3/CTLOG_STORE_get0_log_by_id.3" => [ + "doc/man3/CTLOG_STORE_get0_log_by_id.pod" + ], + "doc/man/man3/CTLOG_STORE_new.3" => [ + "doc/man3/CTLOG_STORE_new.pod" + ], + "doc/man/man3/CTLOG_new.3" => [ + "doc/man3/CTLOG_new.pod" + ], + "doc/man/man3/CT_POLICY_EVAL_CTX_new.3" => [ + "doc/man3/CT_POLICY_EVAL_CTX_new.pod" + ], + "doc/man/man3/DEFINE_STACK_OF.3" => [ + "doc/man3/DEFINE_STACK_OF.pod" + ], + "doc/man/man3/DES_random_key.3" => [ + "doc/man3/DES_random_key.pod" + ], + "doc/man/man3/DH_generate_key.3" => [ + "doc/man3/DH_generate_key.pod" + ], + "doc/man/man3/DH_generate_parameters.3" => [ + "doc/man3/DH_generate_parameters.pod" + ], + "doc/man/man3/DH_get0_pqg.3" => [ + "doc/man3/DH_get0_pqg.pod" + ], + "doc/man/man3/DH_get_1024_160.3" => [ + "doc/man3/DH_get_1024_160.pod" + ], + "doc/man/man3/DH_meth_new.3" => [ + "doc/man3/DH_meth_new.pod" + ], + "doc/man/man3/DH_new.3" => [ + "doc/man3/DH_new.pod" + ], + "doc/man/man3/DH_new_by_nid.3" => [ + "doc/man3/DH_new_by_nid.pod" + ], + "doc/man/man3/DH_set_method.3" => [ + "doc/man3/DH_set_method.pod" + ], + "doc/man/man3/DH_size.3" => [ + "doc/man3/DH_size.pod" + ], + "doc/man/man3/DSA_SIG_new.3" => [ + "doc/man3/DSA_SIG_new.pod" + ], + "doc/man/man3/DSA_do_sign.3" => [ + "doc/man3/DSA_do_sign.pod" + ], + "doc/man/man3/DSA_dup_DH.3" => [ + "doc/man3/DSA_dup_DH.pod" + ], + "doc/man/man3/DSA_generate_key.3" => [ + "doc/man3/DSA_generate_key.pod" + ], + "doc/man/man3/DSA_generate_parameters.3" => [ + "doc/man3/DSA_generate_parameters.pod" + ], + "doc/man/man3/DSA_get0_pqg.3" => [ + "doc/man3/DSA_get0_pqg.pod" + ], + "doc/man/man3/DSA_meth_new.3" => [ + "doc/man3/DSA_meth_new.pod" + ], + "doc/man/man3/DSA_new.3" => [ + "doc/man3/DSA_new.pod" + ], + "doc/man/man3/DSA_set_method.3" => [ + "doc/man3/DSA_set_method.pod" + ], + "doc/man/man3/DSA_sign.3" => [ + "doc/man3/DSA_sign.pod" + ], + "doc/man/man3/DSA_size.3" => [ + "doc/man3/DSA_size.pod" + ], + "doc/man/man3/DTLS_get_data_mtu.3" => [ + "doc/man3/DTLS_get_data_mtu.pod" + ], + "doc/man/man3/DTLS_set_timer_cb.3" => [ + "doc/man3/DTLS_set_timer_cb.pod" + ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], + "doc/man/man3/DTLSv1_listen.3" => [ + "doc/man3/DTLSv1_listen.pod" + ], + "doc/man/man3/ECDSA_SIG_new.3" => [ + "doc/man3/ECDSA_SIG_new.pod" + ], + "doc/man/man3/ECDSA_sign.3" => [ + "doc/man3/ECDSA_sign.pod" + ], + "doc/man/man3/ECPKParameters_print.3" => [ + "doc/man3/ECPKParameters_print.pod" + ], + "doc/man/man3/EC_GFp_simple_method.3" => [ + "doc/man3/EC_GFp_simple_method.pod" + ], + "doc/man/man3/EC_GROUP_copy.3" => [ + "doc/man3/EC_GROUP_copy.pod" + ], + "doc/man/man3/EC_GROUP_new.3" => [ + "doc/man3/EC_GROUP_new.pod" + ], + "doc/man/man3/EC_KEY_get_enc_flags.3" => [ + "doc/man3/EC_KEY_get_enc_flags.pod" + ], + "doc/man/man3/EC_KEY_new.3" => [ + "doc/man3/EC_KEY_new.pod" + ], + "doc/man/man3/EC_POINT_add.3" => [ + "doc/man3/EC_POINT_add.pod" + ], + "doc/man/man3/EC_POINT_new.3" => [ + "doc/man3/EC_POINT_new.pod" + ], + "doc/man/man3/ENGINE_add.3" => [ + "doc/man3/ENGINE_add.pod" + ], + "doc/man/man3/ERR_GET_LIB.3" => [ + "doc/man3/ERR_GET_LIB.pod" + ], + "doc/man/man3/ERR_clear_error.3" => [ + "doc/man3/ERR_clear_error.pod" + ], + "doc/man/man3/ERR_error_string.3" => [ + "doc/man3/ERR_error_string.pod" + ], + "doc/man/man3/ERR_get_error.3" => [ + "doc/man3/ERR_get_error.pod" + ], + "doc/man/man3/ERR_load_crypto_strings.3" => [ + "doc/man3/ERR_load_crypto_strings.pod" + ], + "doc/man/man3/ERR_load_strings.3" => [ + "doc/man3/ERR_load_strings.pod" + ], + "doc/man/man3/ERR_new.3" => [ + "doc/man3/ERR_new.pod" + ], + "doc/man/man3/ERR_print_errors.3" => [ + "doc/man3/ERR_print_errors.pod" + ], + "doc/man/man3/ERR_put_error.3" => [ + "doc/man3/ERR_put_error.pod" + ], + "doc/man/man3/ERR_remove_state.3" => [ + "doc/man3/ERR_remove_state.pod" + ], + "doc/man/man3/ERR_set_mark.3" => [ + "doc/man3/ERR_set_mark.pod" + ], + "doc/man/man3/EVP_ASYM_CIPHER_free.3" => [ + "doc/man3/EVP_ASYM_CIPHER_free.pod" + ], + "doc/man/man3/EVP_BytesToKey.3" => [ + "doc/man3/EVP_BytesToKey.pod" + ], + "doc/man/man3/EVP_CIPHER_CTX_get_app_data.3" => [ + "doc/man3/EVP_CIPHER_CTX_get_app_data.pod" + ], + "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3" => [ + "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" + ], + "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3" => [ + "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" + ], + "doc/man/man3/EVP_CIPHER_meth_new.3" => [ + "doc/man3/EVP_CIPHER_meth_new.pod" + ], + "doc/man/man3/EVP_DigestInit.3" => [ + "doc/man3/EVP_DigestInit.pod" + ], + "doc/man/man3/EVP_DigestSignInit.3" => [ + "doc/man3/EVP_DigestSignInit.pod" + ], + "doc/man/man3/EVP_DigestVerifyInit.3" => [ + "doc/man3/EVP_DigestVerifyInit.pod" + ], + "doc/man/man3/EVP_EncodeInit.3" => [ + "doc/man3/EVP_EncodeInit.pod" + ], + "doc/man/man3/EVP_EncryptInit.3" => [ + "doc/man3/EVP_EncryptInit.pod" + ], + "doc/man/man3/EVP_KDF.3" => [ + "doc/man3/EVP_KDF.pod" + ], + "doc/man/man3/EVP_KEM_free.3" => [ + "doc/man3/EVP_KEM_free.pod" + ], + "doc/man/man3/EVP_KEYEXCH_free.3" => [ + "doc/man3/EVP_KEYEXCH_free.pod" + ], + "doc/man/man3/EVP_KEYMGMT.3" => [ + "doc/man3/EVP_KEYMGMT.pod" + ], + "doc/man/man3/EVP_MAC.3" => [ + "doc/man3/EVP_MAC.pod" + ], + "doc/man/man3/EVP_MD_meth_new.3" => [ + "doc/man3/EVP_MD_meth_new.pod" + ], + "doc/man/man3/EVP_OpenInit.3" => [ + "doc/man3/EVP_OpenInit.pod" + ], + "doc/man/man3/EVP_PBE_CipherInit.3" => [ + "doc/man3/EVP_PBE_CipherInit.pod" + ], + "doc/man/man3/EVP_PKEY2PKCS8.3" => [ + "doc/man3/EVP_PKEY2PKCS8.pod" + ], + "doc/man/man3/EVP_PKEY_ASN1_METHOD.3" => [ + "doc/man3/EVP_PKEY_ASN1_METHOD.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_ctrl.3" => [ + "doc/man3/EVP_PKEY_CTX_ctrl.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3" => [ + "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ + "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_new.3" => [ + "doc/man3/EVP_PKEY_CTX_new.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3" => [ + "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3" => [ + "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_params.3" => [ + "doc/man3/EVP_PKEY_CTX_set_params.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3" => [ + "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3" => [ + "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3" => [ + "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" + ], + "doc/man/man3/EVP_PKEY_asn1_get_count.3" => [ + "doc/man3/EVP_PKEY_asn1_get_count.pod" + ], + "doc/man/man3/EVP_PKEY_check.3" => [ + "doc/man3/EVP_PKEY_check.pod" + ], + "doc/man/man3/EVP_PKEY_copy_parameters.3" => [ + "doc/man3/EVP_PKEY_copy_parameters.pod" + ], + "doc/man/man3/EVP_PKEY_decapsulate.3" => [ + "doc/man3/EVP_PKEY_decapsulate.pod" + ], + "doc/man/man3/EVP_PKEY_decrypt.3" => [ + "doc/man3/EVP_PKEY_decrypt.pod" + ], + "doc/man/man3/EVP_PKEY_derive.3" => [ + "doc/man3/EVP_PKEY_derive.pod" + ], + "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3" => [ + "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" + ], + "doc/man/man3/EVP_PKEY_encapsulate.3" => [ + "doc/man3/EVP_PKEY_encapsulate.pod" + ], + "doc/man/man3/EVP_PKEY_encrypt.3" => [ + "doc/man3/EVP_PKEY_encrypt.pod" + ], + "doc/man/man3/EVP_PKEY_fromdata.3" => [ + "doc/man3/EVP_PKEY_fromdata.pod" + ], + "doc/man/man3/EVP_PKEY_get_attr.3" => [ + "doc/man3/EVP_PKEY_get_attr.pod" + ], + "doc/man/man3/EVP_PKEY_get_default_digest_nid.3" => [ + "doc/man3/EVP_PKEY_get_default_digest_nid.pod" + ], + "doc/man/man3/EVP_PKEY_get_field_type.3" => [ + "doc/man3/EVP_PKEY_get_field_type.pod" + ], + "doc/man/man3/EVP_PKEY_get_group_name.3" => [ + "doc/man3/EVP_PKEY_get_group_name.pod" + ], + "doc/man/man3/EVP_PKEY_get_size.3" => [ + "doc/man3/EVP_PKEY_get_size.pod" + ], + "doc/man/man3/EVP_PKEY_gettable_params.3" => [ + "doc/man3/EVP_PKEY_gettable_params.pod" + ], + "doc/man/man3/EVP_PKEY_is_a.3" => [ + "doc/man3/EVP_PKEY_is_a.pod" + ], + "doc/man/man3/EVP_PKEY_keygen.3" => [ + "doc/man3/EVP_PKEY_keygen.pod" + ], + "doc/man/man3/EVP_PKEY_meth_get_count.3" => [ + "doc/man3/EVP_PKEY_meth_get_count.pod" + ], + "doc/man/man3/EVP_PKEY_meth_new.3" => [ + "doc/man3/EVP_PKEY_meth_new.pod" + ], + "doc/man/man3/EVP_PKEY_new.3" => [ + "doc/man3/EVP_PKEY_new.pod" + ], + "doc/man/man3/EVP_PKEY_print_private.3" => [ + "doc/man3/EVP_PKEY_print_private.pod" + ], + "doc/man/man3/EVP_PKEY_set1_RSA.3" => [ + "doc/man3/EVP_PKEY_set1_RSA.pod" + ], + "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3" => [ + "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" + ], + "doc/man/man3/EVP_PKEY_set_type.3" => [ + "doc/man3/EVP_PKEY_set_type.pod" + ], + "doc/man/man3/EVP_PKEY_settable_params.3" => [ + "doc/man3/EVP_PKEY_settable_params.pod" + ], + "doc/man/man3/EVP_PKEY_sign.3" => [ + "doc/man3/EVP_PKEY_sign.pod" + ], + "doc/man/man3/EVP_PKEY_todata.3" => [ + "doc/man3/EVP_PKEY_todata.pod" + ], + "doc/man/man3/EVP_PKEY_verify.3" => [ + "doc/man3/EVP_PKEY_verify.pod" + ], + "doc/man/man3/EVP_PKEY_verify_recover.3" => [ + "doc/man3/EVP_PKEY_verify_recover.pod" + ], + "doc/man/man3/EVP_RAND.3" => [ + "doc/man3/EVP_RAND.pod" + ], + "doc/man/man3/EVP_SIGNATURE.3" => [ + "doc/man3/EVP_SIGNATURE.pod" + ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], + "doc/man/man3/EVP_SealInit.3" => [ + "doc/man3/EVP_SealInit.pod" + ], + "doc/man/man3/EVP_SignInit.3" => [ + "doc/man3/EVP_SignInit.pod" + ], + "doc/man/man3/EVP_VerifyInit.3" => [ + "doc/man3/EVP_VerifyInit.pod" + ], + "doc/man/man3/EVP_aes_128_gcm.3" => [ + "doc/man3/EVP_aes_128_gcm.pod" + ], + "doc/man/man3/EVP_aria_128_gcm.3" => [ + "doc/man3/EVP_aria_128_gcm.pod" + ], + "doc/man/man3/EVP_bf_cbc.3" => [ + "doc/man3/EVP_bf_cbc.pod" + ], + "doc/man/man3/EVP_blake2b512.3" => [ + "doc/man3/EVP_blake2b512.pod" + ], + "doc/man/man3/EVP_camellia_128_ecb.3" => [ + "doc/man3/EVP_camellia_128_ecb.pod" + ], + "doc/man/man3/EVP_cast5_cbc.3" => [ + "doc/man3/EVP_cast5_cbc.pod" + ], + "doc/man/man3/EVP_chacha20.3" => [ + "doc/man3/EVP_chacha20.pod" + ], + "doc/man/man3/EVP_des_cbc.3" => [ + "doc/man3/EVP_des_cbc.pod" + ], + "doc/man/man3/EVP_desx_cbc.3" => [ + "doc/man3/EVP_desx_cbc.pod" + ], + "doc/man/man3/EVP_idea_cbc.3" => [ + "doc/man3/EVP_idea_cbc.pod" + ], + "doc/man/man3/EVP_md2.3" => [ + "doc/man3/EVP_md2.pod" + ], + "doc/man/man3/EVP_md4.3" => [ + "doc/man3/EVP_md4.pod" + ], + "doc/man/man3/EVP_md5.3" => [ + "doc/man3/EVP_md5.pod" + ], + "doc/man/man3/EVP_mdc2.3" => [ + "doc/man3/EVP_mdc2.pod" + ], + "doc/man/man3/EVP_rc2_cbc.3" => [ + "doc/man3/EVP_rc2_cbc.pod" + ], + "doc/man/man3/EVP_rc4.3" => [ + "doc/man3/EVP_rc4.pod" + ], + "doc/man/man3/EVP_rc5_32_12_16_cbc.3" => [ + "doc/man3/EVP_rc5_32_12_16_cbc.pod" + ], + "doc/man/man3/EVP_ripemd160.3" => [ + "doc/man3/EVP_ripemd160.pod" + ], + "doc/man/man3/EVP_seed_cbc.3" => [ + "doc/man3/EVP_seed_cbc.pod" + ], + "doc/man/man3/EVP_set_default_properties.3" => [ + "doc/man3/EVP_set_default_properties.pod" + ], + "doc/man/man3/EVP_sha1.3" => [ + "doc/man3/EVP_sha1.pod" + ], + "doc/man/man3/EVP_sha224.3" => [ + "doc/man3/EVP_sha224.pod" + ], + "doc/man/man3/EVP_sha3_224.3" => [ + "doc/man3/EVP_sha3_224.pod" + ], + "doc/man/man3/EVP_sm3.3" => [ + "doc/man3/EVP_sm3.pod" + ], + "doc/man/man3/EVP_sm4_cbc.3" => [ + "doc/man3/EVP_sm4_cbc.pod" + ], + "doc/man/man3/EVP_whirlpool.3" => [ + "doc/man3/EVP_whirlpool.pod" + ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], + "doc/man/man3/HMAC.3" => [ + "doc/man3/HMAC.pod" + ], + "doc/man/man3/MD5.3" => [ + "doc/man3/MD5.pod" + ], + "doc/man/man3/MDC2_Init.3" => [ + "doc/man3/MDC2_Init.pod" + ], + "doc/man/man3/NCONF_new_ex.3" => [ + "doc/man3/NCONF_new_ex.pod" + ], + "doc/man/man3/OBJ_nid2obj.3" => [ + "doc/man3/OBJ_nid2obj.pod" + ], + "doc/man/man3/OCSP_REQUEST_new.3" => [ + "doc/man3/OCSP_REQUEST_new.pod" + ], + "doc/man/man3/OCSP_cert_to_id.3" => [ + "doc/man3/OCSP_cert_to_id.pod" + ], + "doc/man/man3/OCSP_request_add1_nonce.3" => [ + "doc/man3/OCSP_request_add1_nonce.pod" + ], + "doc/man/man3/OCSP_resp_find_status.3" => [ + "doc/man3/OCSP_resp_find_status.pod" + ], + "doc/man/man3/OCSP_response_status.3" => [ + "doc/man3/OCSP_response_status.pod" + ], + "doc/man/man3/OCSP_sendreq_new.3" => [ + "doc/man3/OCSP_sendreq_new.pod" + ], + "doc/man/man3/OPENSSL_Applink.3" => [ + "doc/man3/OPENSSL_Applink.pod" + ], + "doc/man/man3/OPENSSL_FILE.3" => [ + "doc/man3/OPENSSL_FILE.pod" + ], + "doc/man/man3/OPENSSL_LH_COMPFUNC.3" => [ + "doc/man3/OPENSSL_LH_COMPFUNC.pod" + ], + "doc/man/man3/OPENSSL_LH_stats.3" => [ + "doc/man3/OPENSSL_LH_stats.pod" + ], + "doc/man/man3/OPENSSL_config.3" => [ + "doc/man3/OPENSSL_config.pod" + ], + "doc/man/man3/OPENSSL_fork_prepare.3" => [ + "doc/man3/OPENSSL_fork_prepare.pod" + ], + "doc/man/man3/OPENSSL_gmtime.3" => [ + "doc/man3/OPENSSL_gmtime.pod" + ], + "doc/man/man3/OPENSSL_hexchar2int.3" => [ + "doc/man3/OPENSSL_hexchar2int.pod" + ], + "doc/man/man3/OPENSSL_ia32cap.3" => [ + "doc/man3/OPENSSL_ia32cap.pod" + ], + "doc/man/man3/OPENSSL_init_crypto.3" => [ + "doc/man3/OPENSSL_init_crypto.pod" + ], + "doc/man/man3/OPENSSL_init_ssl.3" => [ + "doc/man3/OPENSSL_init_ssl.pod" + ], + "doc/man/man3/OPENSSL_instrument_bus.3" => [ + "doc/man3/OPENSSL_instrument_bus.pod" + ], + "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ + "doc/man3/OPENSSL_load_builtin_modules.pod" + ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], + "doc/man/man3/OPENSSL_malloc.3" => [ + "doc/man3/OPENSSL_malloc.pod" + ], + "doc/man/man3/OPENSSL_ppccap.3" => [ + "doc/man3/OPENSSL_ppccap.pod" + ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], + "doc/man/man3/OPENSSL_s390xcap.3" => [ + "doc/man3/OPENSSL_s390xcap.pod" + ], + "doc/man/man3/OPENSSL_secure_malloc.3" => [ + "doc/man3/OPENSSL_secure_malloc.pod" + ], + "doc/man/man3/OPENSSL_strcasecmp.3" => [ + "doc/man3/OPENSSL_strcasecmp.pod" + ], + "doc/man/man3/OSSL_ALGORITHM.3" => [ + "doc/man3/OSSL_ALGORITHM.pod" + ], + "doc/man/man3/OSSL_CALLBACK.3" => [ + "doc/man3/OSSL_CALLBACK.pod" + ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], + "doc/man/man3/OSSL_CMP_CTX_new.3" => [ + "doc/man3/OSSL_CMP_CTX_new.pod" + ], + "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ + "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" + ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], + "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ + "doc/man3/OSSL_CMP_ITAV_set0.pod" + ], + "doc/man/man3/OSSL_CMP_MSG_get0_header.3" => [ + "doc/man3/OSSL_CMP_MSG_get0_header.pod" + ], + "doc/man/man3/OSSL_CMP_MSG_http_perform.3" => [ + "doc/man3/OSSL_CMP_MSG_http_perform.pod" + ], + "doc/man/man3/OSSL_CMP_SRV_CTX_new.3" => [ + "doc/man3/OSSL_CMP_SRV_CTX_new.pod" + ], + "doc/man/man3/OSSL_CMP_STATUSINFO_new.3" => [ + "doc/man3/OSSL_CMP_STATUSINFO_new.pod" + ], + "doc/man/man3/OSSL_CMP_exec_certreq.3" => [ + "doc/man3/OSSL_CMP_exec_certreq.pod" + ], + "doc/man/man3/OSSL_CMP_log_open.3" => [ + "doc/man3/OSSL_CMP_log_open.pod" + ], + "doc/man/man3/OSSL_CMP_validate_msg.3" => [ + "doc/man3/OSSL_CMP_validate_msg.pod" + ], + "doc/man/man3/OSSL_CORE_MAKE_FUNC.3" => [ + "doc/man3/OSSL_CORE_MAKE_FUNC.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3" => [ + "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3" => [ + "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" + ], + "doc/man/man3/OSSL_CRMF_pbmp_new.3" => [ + "doc/man3/OSSL_CRMF_pbmp_new.pod" + ], + "doc/man/man3/OSSL_DECODER.3" => [ + "doc/man3/OSSL_DECODER.pod" + ], + "doc/man/man3/OSSL_DECODER_CTX.3" => [ + "doc/man3/OSSL_DECODER_CTX.pod" + ], + "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3" => [ + "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" + ], + "doc/man/man3/OSSL_DECODER_from_bio.3" => [ + "doc/man3/OSSL_DECODER_from_bio.pod" + ], + "doc/man/man3/OSSL_DISPATCH.3" => [ + "doc/man3/OSSL_DISPATCH.pod" + ], + "doc/man/man3/OSSL_ENCODER.3" => [ + "doc/man3/OSSL_ENCODER.pod" + ], + "doc/man/man3/OSSL_ENCODER_CTX.3" => [ + "doc/man3/OSSL_ENCODER_CTX.pod" + ], + "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3" => [ + "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" + ], + "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ + "doc/man3/OSSL_ENCODER_to_bio.pod" + ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], + "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ + "doc/man3/OSSL_ESS_check_signing_certs.pod" + ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], + "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ + "doc/man3/OSSL_HTTP_REQ_CTX.pod" + ], + "doc/man/man3/OSSL_HTTP_parse_url.3" => [ + "doc/man3/OSSL_HTTP_parse_url.pod" + ], + "doc/man/man3/OSSL_HTTP_transfer.3" => [ + "doc/man3/OSSL_HTTP_transfer.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], + "doc/man/man3/OSSL_ITEM.3" => [ + "doc/man3/OSSL_ITEM.pod" + ], + "doc/man/man3/OSSL_LIB_CTX.3" => [ + "doc/man3/OSSL_LIB_CTX.pod" + ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], + "doc/man/man3/OSSL_PARAM.3" => [ + "doc/man3/OSSL_PARAM.pod" + ], + "doc/man/man3/OSSL_PARAM_BLD.3" => [ + "doc/man3/OSSL_PARAM_BLD.pod" + ], + "doc/man/man3/OSSL_PARAM_allocate_from_text.3" => [ + "doc/man3/OSSL_PARAM_allocate_from_text.pod" + ], + "doc/man/man3/OSSL_PARAM_dup.3" => [ + "doc/man3/OSSL_PARAM_dup.pod" + ], + "doc/man/man3/OSSL_PARAM_int.3" => [ + "doc/man3/OSSL_PARAM_int.pod" + ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], + "doc/man/man3/OSSL_PROVIDER.3" => [ + "doc/man3/OSSL_PROVIDER.pod" + ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], + "doc/man/man3/OSSL_SELF_TEST_new.3" => [ + "doc/man3/OSSL_SELF_TEST_new.pod" + ], + "doc/man/man3/OSSL_SELF_TEST_set_callback.3" => [ + "doc/man3/OSSL_SELF_TEST_set_callback.pod" + ], + "doc/man/man3/OSSL_STORE_INFO.3" => [ + "doc/man3/OSSL_STORE_INFO.pod" + ], + "doc/man/man3/OSSL_STORE_LOADER.3" => [ + "doc/man3/OSSL_STORE_LOADER.pod" + ], + "doc/man/man3/OSSL_STORE_SEARCH.3" => [ + "doc/man3/OSSL_STORE_SEARCH.pod" + ], + "doc/man/man3/OSSL_STORE_attach.3" => [ + "doc/man3/OSSL_STORE_attach.pod" + ], + "doc/man/man3/OSSL_STORE_expect.3" => [ + "doc/man3/OSSL_STORE_expect.pod" + ], + "doc/man/man3/OSSL_STORE_open.3" => [ + "doc/man3/OSSL_STORE_open.pod" + ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], + "doc/man/man3/OSSL_trace_enabled.3" => [ + "doc/man3/OSSL_trace_enabled.pod" + ], + "doc/man/man3/OSSL_trace_get_category_num.3" => [ + "doc/man3/OSSL_trace_get_category_num.pod" + ], + "doc/man/man3/OSSL_trace_set_channel.3" => [ + "doc/man3/OSSL_trace_set_channel.pod" + ], + "doc/man/man3/OpenSSL_add_all_algorithms.3" => [ + "doc/man3/OpenSSL_add_all_algorithms.pod" + ], + "doc/man/man3/OpenSSL_version.3" => [ + "doc/man3/OpenSSL_version.pod" + ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], + "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ + "doc/man3/PEM_X509_INFO_read_bio_ex.pod" + ], + "doc/man/man3/PEM_bytes_read_bio.3" => [ + "doc/man3/PEM_bytes_read_bio.pod" + ], + "doc/man/man3/PEM_read.3" => [ + "doc/man3/PEM_read.pod" + ], + "doc/man/man3/PEM_read_CMS.3" => [ + "doc/man3/PEM_read_CMS.pod" + ], + "doc/man/man3/PEM_read_bio_PrivateKey.3" => [ + "doc/man3/PEM_read_bio_PrivateKey.pod" + ], + "doc/man/man3/PEM_read_bio_ex.3" => [ + "doc/man3/PEM_read_bio_ex.pod" + ], + "doc/man/man3/PEM_write_bio_CMS_stream.3" => [ + "doc/man3/PEM_write_bio_CMS_stream.pod" + ], + "doc/man/man3/PEM_write_bio_PKCS7_stream.3" => [ + "doc/man3/PEM_write_bio_PKCS7_stream.pod" + ], + "doc/man/man3/PKCS12_PBE_keyivgen.3" => [ + "doc/man3/PKCS12_PBE_keyivgen.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_create_cert.3" => [ + "doc/man3/PKCS12_SAFEBAG_create_cert.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ + "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], + "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ + "doc/man3/PKCS12_add1_attr_by_NID.pod" + ], + "doc/man/man3/PKCS12_add_CSPName_asc.3" => [ + "doc/man3/PKCS12_add_CSPName_asc.pod" + ], + "doc/man/man3/PKCS12_add_cert.3" => [ + "doc/man3/PKCS12_add_cert.pod" + ], + "doc/man/man3/PKCS12_add_friendlyname_asc.3" => [ + "doc/man3/PKCS12_add_friendlyname_asc.pod" + ], + "doc/man/man3/PKCS12_add_localkeyid.3" => [ + "doc/man3/PKCS12_add_localkeyid.pod" + ], + "doc/man/man3/PKCS12_add_safe.3" => [ + "doc/man3/PKCS12_add_safe.pod" + ], + "doc/man/man3/PKCS12_create.3" => [ + "doc/man3/PKCS12_create.pod" + ], + "doc/man/man3/PKCS12_decrypt_skey.3" => [ + "doc/man3/PKCS12_decrypt_skey.pod" + ], + "doc/man/man3/PKCS12_gen_mac.3" => [ + "doc/man3/PKCS12_gen_mac.pod" + ], + "doc/man/man3/PKCS12_get_friendlyname.3" => [ + "doc/man3/PKCS12_get_friendlyname.pod" + ], + "doc/man/man3/PKCS12_init.3" => [ + "doc/man3/PKCS12_init.pod" + ], + "doc/man/man3/PKCS12_item_decrypt_d2i.3" => [ + "doc/man3/PKCS12_item_decrypt_d2i.pod" + ], + "doc/man/man3/PKCS12_key_gen_utf8_ex.3" => [ + "doc/man3/PKCS12_key_gen_utf8_ex.pod" + ], + "doc/man/man3/PKCS12_newpass.3" => [ + "doc/man3/PKCS12_newpass.pod" + ], + "doc/man/man3/PKCS12_pack_p7encdata.3" => [ + "doc/man3/PKCS12_pack_p7encdata.pod" + ], + "doc/man/man3/PKCS12_parse.3" => [ + "doc/man3/PKCS12_parse.pod" + ], + "doc/man/man3/PKCS5_PBE_keyivgen.3" => [ + "doc/man3/PKCS5_PBE_keyivgen.pod" + ], + "doc/man/man3/PKCS5_PBKDF2_HMAC.3" => [ + "doc/man3/PKCS5_PBKDF2_HMAC.pod" + ], + "doc/man/man3/PKCS7_decrypt.3" => [ + "doc/man3/PKCS7_decrypt.pod" + ], + "doc/man/man3/PKCS7_encrypt.3" => [ + "doc/man3/PKCS7_encrypt.pod" + ], + "doc/man/man3/PKCS7_get_octet_string.3" => [ + "doc/man3/PKCS7_get_octet_string.pod" + ], + "doc/man/man3/PKCS7_sign.3" => [ + "doc/man3/PKCS7_sign.pod" + ], + "doc/man/man3/PKCS7_sign_add_signer.3" => [ + "doc/man3/PKCS7_sign_add_signer.pod" + ], + "doc/man/man3/PKCS7_type_is_other.3" => [ + "doc/man3/PKCS7_type_is_other.pod" + ], + "doc/man/man3/PKCS7_verify.3" => [ + "doc/man3/PKCS7_verify.pod" + ], + "doc/man/man3/PKCS8_encrypt.3" => [ + "doc/man3/PKCS8_encrypt.pod" + ], + "doc/man/man3/PKCS8_pkey_add1_attr.3" => [ + "doc/man3/PKCS8_pkey_add1_attr.pod" + ], + "doc/man/man3/RAND_add.3" => [ + "doc/man3/RAND_add.pod" + ], + "doc/man/man3/RAND_bytes.3" => [ + "doc/man3/RAND_bytes.pod" + ], + "doc/man/man3/RAND_cleanup.3" => [ + "doc/man3/RAND_cleanup.pod" + ], + "doc/man/man3/RAND_egd.3" => [ + "doc/man3/RAND_egd.pod" + ], + "doc/man/man3/RAND_get0_primary.3" => [ + "doc/man3/RAND_get0_primary.pod" + ], + "doc/man/man3/RAND_load_file.3" => [ + "doc/man3/RAND_load_file.pod" + ], + "doc/man/man3/RAND_set_DRBG_type.3" => [ + "doc/man3/RAND_set_DRBG_type.pod" + ], + "doc/man/man3/RAND_set_rand_method.3" => [ + "doc/man3/RAND_set_rand_method.pod" + ], + "doc/man/man3/RC4_set_key.3" => [ + "doc/man3/RC4_set_key.pod" + ], + "doc/man/man3/RIPEMD160_Init.3" => [ + "doc/man3/RIPEMD160_Init.pod" + ], + "doc/man/man3/RSA_blinding_on.3" => [ + "doc/man3/RSA_blinding_on.pod" + ], + "doc/man/man3/RSA_check_key.3" => [ + "doc/man3/RSA_check_key.pod" + ], + "doc/man/man3/RSA_generate_key.3" => [ + "doc/man3/RSA_generate_key.pod" + ], + "doc/man/man3/RSA_get0_key.3" => [ + "doc/man3/RSA_get0_key.pod" + ], + "doc/man/man3/RSA_meth_new.3" => [ + "doc/man3/RSA_meth_new.pod" + ], + "doc/man/man3/RSA_new.3" => [ + "doc/man3/RSA_new.pod" + ], + "doc/man/man3/RSA_padding_add_PKCS1_type_1.3" => [ + "doc/man3/RSA_padding_add_PKCS1_type_1.pod" + ], + "doc/man/man3/RSA_print.3" => [ + "doc/man3/RSA_print.pod" + ], + "doc/man/man3/RSA_private_encrypt.3" => [ + "doc/man3/RSA_private_encrypt.pod" + ], + "doc/man/man3/RSA_public_encrypt.3" => [ + "doc/man3/RSA_public_encrypt.pod" + ], + "doc/man/man3/RSA_set_method.3" => [ + "doc/man3/RSA_set_method.pod" + ], + "doc/man/man3/RSA_sign.3" => [ + "doc/man3/RSA_sign.pod" + ], + "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3" => [ + "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" + ], + "doc/man/man3/RSA_size.3" => [ + "doc/man3/RSA_size.pod" + ], + "doc/man/man3/SCT_new.3" => [ + "doc/man3/SCT_new.pod" + ], + "doc/man/man3/SCT_print.3" => [ + "doc/man3/SCT_print.pod" + ], + "doc/man/man3/SCT_validate.3" => [ + "doc/man3/SCT_validate.pod" + ], + "doc/man/man3/SHA256_Init.3" => [ + "doc/man3/SHA256_Init.pod" + ], + "doc/man/man3/SMIME_read_ASN1.3" => [ + "doc/man3/SMIME_read_ASN1.pod" + ], + "doc/man/man3/SMIME_read_CMS.3" => [ + "doc/man3/SMIME_read_CMS.pod" + ], + "doc/man/man3/SMIME_read_PKCS7.3" => [ + "doc/man3/SMIME_read_PKCS7.pod" + ], + "doc/man/man3/SMIME_write_ASN1.3" => [ + "doc/man3/SMIME_write_ASN1.pod" + ], + "doc/man/man3/SMIME_write_CMS.3" => [ + "doc/man3/SMIME_write_CMS.pod" + ], + "doc/man/man3/SMIME_write_PKCS7.3" => [ + "doc/man3/SMIME_write_PKCS7.pod" + ], + "doc/man/man3/SRP_Calc_B.3" => [ + "doc/man3/SRP_Calc_B.pod" + ], + "doc/man/man3/SRP_VBASE_new.3" => [ + "doc/man3/SRP_VBASE_new.pod" + ], + "doc/man/man3/SRP_create_verifier.3" => [ + "doc/man3/SRP_create_verifier.pod" + ], + "doc/man/man3/SRP_user_pwd_new.3" => [ + "doc/man3/SRP_user_pwd_new.pod" + ], + "doc/man/man3/SSL_CIPHER_get_name.3" => [ + "doc/man3/SSL_CIPHER_get_name.pod" + ], + "doc/man/man3/SSL_COMP_add_compression_method.3" => [ + "doc/man3/SSL_COMP_add_compression_method.pod" + ], + "doc/man/man3/SSL_CONF_CTX_new.3" => [ + "doc/man3/SSL_CONF_CTX_new.pod" + ], + "doc/man/man3/SSL_CONF_CTX_set1_prefix.3" => [ + "doc/man3/SSL_CONF_CTX_set1_prefix.pod" + ], + "doc/man/man3/SSL_CONF_CTX_set_flags.3" => [ + "doc/man3/SSL_CONF_CTX_set_flags.pod" + ], + "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3" => [ + "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" + ], + "doc/man/man3/SSL_CONF_cmd.3" => [ + "doc/man3/SSL_CONF_cmd.pod" + ], + "doc/man/man3/SSL_CONF_cmd_argv.3" => [ + "doc/man3/SSL_CONF_cmd_argv.pod" + ], + "doc/man/man3/SSL_CTX_add1_chain_cert.3" => [ + "doc/man3/SSL_CTX_add1_chain_cert.pod" + ], + "doc/man/man3/SSL_CTX_add_extra_chain_cert.3" => [ + "doc/man3/SSL_CTX_add_extra_chain_cert.pod" + ], + "doc/man/man3/SSL_CTX_add_session.3" => [ + "doc/man3/SSL_CTX_add_session.pod" + ], + "doc/man/man3/SSL_CTX_config.3" => [ + "doc/man3/SSL_CTX_config.pod" + ], + "doc/man/man3/SSL_CTX_ctrl.3" => [ + "doc/man3/SSL_CTX_ctrl.pod" + ], + "doc/man/man3/SSL_CTX_dane_enable.3" => [ + "doc/man3/SSL_CTX_dane_enable.pod" + ], + "doc/man/man3/SSL_CTX_flush_sessions.3" => [ + "doc/man3/SSL_CTX_flush_sessions.pod" + ], + "doc/man/man3/SSL_CTX_free.3" => [ + "doc/man3/SSL_CTX_free.pod" + ], + "doc/man/man3/SSL_CTX_get0_param.3" => [ + "doc/man3/SSL_CTX_get0_param.pod" + ], + "doc/man/man3/SSL_CTX_get_verify_mode.3" => [ + "doc/man3/SSL_CTX_get_verify_mode.pod" + ], + "doc/man/man3/SSL_CTX_has_client_custom_ext.3" => [ + "doc/man3/SSL_CTX_has_client_custom_ext.pod" + ], + "doc/man/man3/SSL_CTX_load_verify_locations.3" => [ + "doc/man3/SSL_CTX_load_verify_locations.pod" + ], + "doc/man/man3/SSL_CTX_new.3" => [ + "doc/man3/SSL_CTX_new.pod" + ], + "doc/man/man3/SSL_CTX_sess_number.3" => [ + "doc/man3/SSL_CTX_sess_number.pod" + ], + "doc/man/man3/SSL_CTX_sess_set_cache_size.3" => [ + "doc/man3/SSL_CTX_sess_set_cache_size.pod" + ], + "doc/man/man3/SSL_CTX_sess_set_get_cb.3" => [ + "doc/man3/SSL_CTX_sess_set_get_cb.pod" + ], + "doc/man/man3/SSL_CTX_sessions.3" => [ + "doc/man3/SSL_CTX_sessions.pod" + ], + "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ + "doc/man3/SSL_CTX_set0_CA_list.pod" + ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], + "doc/man/man3/SSL_CTX_set1_curves.3" => [ + "doc/man3/SSL_CTX_set1_curves.pod" + ], + "doc/man/man3/SSL_CTX_set1_sigalgs.3" => [ + "doc/man3/SSL_CTX_set1_sigalgs.pod" + ], + "doc/man/man3/SSL_CTX_set1_verify_cert_store.3" => [ + "doc/man3/SSL_CTX_set1_verify_cert_store.pod" + ], + "doc/man/man3/SSL_CTX_set_alpn_select_cb.3" => [ + "doc/man3/SSL_CTX_set_alpn_select_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_cert_cb.3" => [ + "doc/man3/SSL_CTX_set_cert_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_cert_store.3" => [ + "doc/man3/SSL_CTX_set_cert_store.pod" + ], + "doc/man/man3/SSL_CTX_set_cert_verify_callback.3" => [ + "doc/man3/SSL_CTX_set_cert_verify_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_cipher_list.3" => [ + "doc/man3/SSL_CTX_set_cipher_list.pod" + ], + "doc/man/man3/SSL_CTX_set_client_cert_cb.3" => [ + "doc/man3/SSL_CTX_set_client_cert_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_client_hello_cb.3" => [ + "doc/man3/SSL_CTX_set_client_hello_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_ct_validation_callback.3" => [ + "doc/man3/SSL_CTX_set_ct_validation_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_ctlog_list_file.3" => [ + "doc/man3/SSL_CTX_set_ctlog_list_file.pod" + ], + "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ + "doc/man3/SSL_CTX_set_default_passwd_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], + "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ + "doc/man3/SSL_CTX_set_generate_session_id.pod" + ], + "doc/man/man3/SSL_CTX_set_info_callback.3" => [ + "doc/man3/SSL_CTX_set_info_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_keylog_callback.3" => [ + "doc/man3/SSL_CTX_set_keylog_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_max_cert_list.3" => [ + "doc/man3/SSL_CTX_set_max_cert_list.pod" + ], + "doc/man/man3/SSL_CTX_set_min_proto_version.3" => [ + "doc/man3/SSL_CTX_set_min_proto_version.pod" + ], + "doc/man/man3/SSL_CTX_set_mode.3" => [ + "doc/man3/SSL_CTX_set_mode.pod" + ], + "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ + "doc/man3/SSL_CTX_set_msg_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ + "doc/man3/SSL_CTX_set_num_tickets.pod" + ], + "doc/man/man3/SSL_CTX_set_options.3" => [ + "doc/man3/SSL_CTX_set_options.pod" + ], + "doc/man/man3/SSL_CTX_set_psk_client_callback.3" => [ + "doc/man3/SSL_CTX_set_psk_client_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_quiet_shutdown.3" => [ + "doc/man3/SSL_CTX_set_quiet_shutdown.pod" + ], + "doc/man/man3/SSL_CTX_set_read_ahead.3" => [ + "doc/man3/SSL_CTX_set_read_ahead.pod" + ], + "doc/man/man3/SSL_CTX_set_record_padding_callback.3" => [ + "doc/man3/SSL_CTX_set_record_padding_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_security_level.3" => [ + "doc/man3/SSL_CTX_set_security_level.pod" + ], + "doc/man/man3/SSL_CTX_set_session_cache_mode.3" => [ + "doc/man3/SSL_CTX_set_session_cache_mode.pod" + ], + "doc/man/man3/SSL_CTX_set_session_id_context.3" => [ + "doc/man3/SSL_CTX_set_session_id_context.pod" + ], + "doc/man/man3/SSL_CTX_set_session_ticket_cb.3" => [ + "doc/man3/SSL_CTX_set_session_ticket_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_split_send_fragment.3" => [ + "doc/man3/SSL_CTX_set_split_send_fragment.pod" + ], + "doc/man/man3/SSL_CTX_set_srp_password.3" => [ + "doc/man3/SSL_CTX_set_srp_password.pod" + ], + "doc/man/man3/SSL_CTX_set_ssl_version.3" => [ + "doc/man3/SSL_CTX_set_ssl_version.pod" + ], + "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3" => [ + "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_timeout.3" => [ + "doc/man3/SSL_CTX_set_timeout.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3" => [ + "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3" => [ + "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3" => [ + "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3" => [ + "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" + ], + "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3" => [ + "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_tmp_ecdh.3" => [ + "doc/man3/SSL_CTX_set_tmp_ecdh.pod" + ], + "doc/man/man3/SSL_CTX_set_verify.3" => [ + "doc/man3/SSL_CTX_set_verify.pod" + ], + "doc/man/man3/SSL_CTX_use_certificate.3" => [ + "doc/man3/SSL_CTX_use_certificate.pod" + ], + "doc/man/man3/SSL_CTX_use_psk_identity_hint.3" => [ + "doc/man3/SSL_CTX_use_psk_identity_hint.pod" + ], + "doc/man/man3/SSL_CTX_use_serverinfo.3" => [ + "doc/man3/SSL_CTX_use_serverinfo.pod" + ], + "doc/man/man3/SSL_SESSION_free.3" => [ + "doc/man3/SSL_SESSION_free.pod" + ], + "doc/man/man3/SSL_SESSION_get0_cipher.3" => [ + "doc/man3/SSL_SESSION_get0_cipher.pod" + ], + "doc/man/man3/SSL_SESSION_get0_hostname.3" => [ + "doc/man3/SSL_SESSION_get0_hostname.pod" + ], + "doc/man/man3/SSL_SESSION_get0_id_context.3" => [ + "doc/man3/SSL_SESSION_get0_id_context.pod" + ], + "doc/man/man3/SSL_SESSION_get0_peer.3" => [ + "doc/man3/SSL_SESSION_get0_peer.pod" + ], + "doc/man/man3/SSL_SESSION_get_compress_id.3" => [ + "doc/man3/SSL_SESSION_get_compress_id.pod" + ], + "doc/man/man3/SSL_SESSION_get_protocol_version.3" => [ + "doc/man3/SSL_SESSION_get_protocol_version.pod" + ], + "doc/man/man3/SSL_SESSION_get_time.3" => [ + "doc/man3/SSL_SESSION_get_time.pod" + ], + "doc/man/man3/SSL_SESSION_has_ticket.3" => [ + "doc/man3/SSL_SESSION_has_ticket.pod" + ], + "doc/man/man3/SSL_SESSION_is_resumable.3" => [ + "doc/man3/SSL_SESSION_is_resumable.pod" + ], + "doc/man/man3/SSL_SESSION_print.3" => [ + "doc/man3/SSL_SESSION_print.pod" + ], + "doc/man/man3/SSL_SESSION_set1_id.3" => [ + "doc/man3/SSL_SESSION_set1_id.pod" + ], + "doc/man/man3/SSL_accept.3" => [ + "doc/man3/SSL_accept.pod" + ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], + "doc/man/man3/SSL_alert_type_string.3" => [ + "doc/man3/SSL_alert_type_string.pod" + ], + "doc/man/man3/SSL_alloc_buffers.3" => [ + "doc/man3/SSL_alloc_buffers.pod" + ], + "doc/man/man3/SSL_check_chain.3" => [ + "doc/man3/SSL_check_chain.pod" + ], + "doc/man/man3/SSL_clear.3" => [ + "doc/man3/SSL_clear.pod" + ], + "doc/man/man3/SSL_connect.3" => [ + "doc/man3/SSL_connect.pod" + ], + "doc/man/man3/SSL_do_handshake.3" => [ + "doc/man3/SSL_do_handshake.pod" + ], + "doc/man/man3/SSL_export_keying_material.3" => [ + "doc/man3/SSL_export_keying_material.pod" + ], + "doc/man/man3/SSL_extension_supported.3" => [ + "doc/man3/SSL_extension_supported.pod" + ], + "doc/man/man3/SSL_free.3" => [ + "doc/man3/SSL_free.pod" + ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], + "doc/man/man3/SSL_get0_peer_scts.3" => [ + "doc/man3/SSL_get0_peer_scts.pod" + ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], + "doc/man/man3/SSL_get_SSL_CTX.3" => [ + "doc/man3/SSL_get_SSL_CTX.pod" + ], + "doc/man/man3/SSL_get_all_async_fds.3" => [ + "doc/man3/SSL_get_all_async_fds.pod" + ], + "doc/man/man3/SSL_get_certificate.3" => [ + "doc/man3/SSL_get_certificate.pod" + ], + "doc/man/man3/SSL_get_ciphers.3" => [ + "doc/man3/SSL_get_ciphers.pod" + ], + "doc/man/man3/SSL_get_client_random.3" => [ + "doc/man3/SSL_get_client_random.pod" + ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], + "doc/man/man3/SSL_get_current_cipher.3" => [ + "doc/man3/SSL_get_current_cipher.pod" + ], + "doc/man/man3/SSL_get_default_timeout.3" => [ + "doc/man3/SSL_get_default_timeout.pod" + ], + "doc/man/man3/SSL_get_error.3" => [ + "doc/man3/SSL_get_error.pod" + ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], + "doc/man/man3/SSL_get_extms_support.3" => [ + "doc/man3/SSL_get_extms_support.pod" + ], + "doc/man/man3/SSL_get_fd.3" => [ + "doc/man3/SSL_get_fd.pod" + ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], + "doc/man/man3/SSL_get_peer_cert_chain.3" => [ + "doc/man3/SSL_get_peer_cert_chain.pod" + ], + "doc/man/man3/SSL_get_peer_certificate.3" => [ + "doc/man3/SSL_get_peer_certificate.pod" + ], + "doc/man/man3/SSL_get_peer_signature_nid.3" => [ + "doc/man3/SSL_get_peer_signature_nid.pod" + ], + "doc/man/man3/SSL_get_peer_tmp_key.3" => [ + "doc/man3/SSL_get_peer_tmp_key.pod" + ], + "doc/man/man3/SSL_get_psk_identity.3" => [ + "doc/man3/SSL_get_psk_identity.pod" + ], + "doc/man/man3/SSL_get_rbio.3" => [ + "doc/man3/SSL_get_rbio.pod" + ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], + "doc/man/man3/SSL_get_session.3" => [ + "doc/man3/SSL_get_session.pod" + ], + "doc/man/man3/SSL_get_shared_sigalgs.3" => [ + "doc/man3/SSL_get_shared_sigalgs.pod" + ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], + "doc/man/man3/SSL_get_verify_result.3" => [ + "doc/man3/SSL_get_verify_result.pod" + ], + "doc/man/man3/SSL_get_version.3" => [ + "doc/man3/SSL_get_version.pod" + ], + "doc/man/man3/SSL_group_to_name.3" => [ + "doc/man3/SSL_group_to_name.pod" + ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], + "doc/man/man3/SSL_in_init.3" => [ + "doc/man3/SSL_in_init.pod" + ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], + "doc/man/man3/SSL_key_update.3" => [ + "doc/man3/SSL_key_update.pod" + ], + "doc/man/man3/SSL_library_init.3" => [ + "doc/man3/SSL_library_init.pod" + ], + "doc/man/man3/SSL_load_client_CA_file.3" => [ + "doc/man3/SSL_load_client_CA_file.pod" + ], + "doc/man/man3/SSL_new.3" => [ + "doc/man3/SSL_new.pod" + ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], + "doc/man/man3/SSL_pending.3" => [ + "doc/man3/SSL_pending.pod" + ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], + "doc/man/man3/SSL_read.3" => [ + "doc/man3/SSL_read.pod" + ], + "doc/man/man3/SSL_read_early_data.3" => [ + "doc/man3/SSL_read_early_data.pod" + ], + "doc/man/man3/SSL_rstate_string.3" => [ + "doc/man3/SSL_rstate_string.pod" + ], + "doc/man/man3/SSL_session_reused.3" => [ + "doc/man3/SSL_session_reused.pod" + ], + "doc/man/man3/SSL_set1_host.3" => [ + "doc/man3/SSL_set1_host.pod" + ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], + "doc/man/man3/SSL_set_async_callback.3" => [ + "doc/man3/SSL_set_async_callback.pod" + ], + "doc/man/man3/SSL_set_bio.3" => [ + "doc/man3/SSL_set_bio.pod" + ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], + "doc/man/man3/SSL_set_connect_state.3" => [ + "doc/man3/SSL_set_connect_state.pod" + ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], + "doc/man/man3/SSL_set_fd.3" => [ + "doc/man3/SSL_set_fd.pod" + ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], + "doc/man/man3/SSL_set_retry_verify.3" => [ + "doc/man3/SSL_set_retry_verify.pod" + ], + "doc/man/man3/SSL_set_session.3" => [ + "doc/man3/SSL_set_session.pod" + ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], + "doc/man/man3/SSL_set_shutdown.3" => [ + "doc/man3/SSL_set_shutdown.pod" + ], + "doc/man/man3/SSL_set_verify_result.3" => [ + "doc/man3/SSL_set_verify_result.pod" + ], + "doc/man/man3/SSL_shutdown.3" => [ + "doc/man3/SSL_shutdown.pod" + ], + "doc/man/man3/SSL_state_string.3" => [ + "doc/man3/SSL_state_string.pod" + ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], + "doc/man/man3/SSL_want.3" => [ + "doc/man3/SSL_want.pod" + ], + "doc/man/man3/SSL_write.3" => [ + "doc/man3/SSL_write.pod" + ], + "doc/man/man3/TS_RESP_CTX_new.3" => [ + "doc/man3/TS_RESP_CTX_new.pod" + ], + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" + ], + "doc/man/man3/UI_STRING.3" => [ + "doc/man3/UI_STRING.pod" + ], + "doc/man/man3/UI_UTIL_read_pw.3" => [ + "doc/man3/UI_UTIL_read_pw.pod" + ], + "doc/man/man3/UI_create_method.3" => [ + "doc/man3/UI_create_method.pod" + ], + "doc/man/man3/UI_new.3" => [ + "doc/man3/UI_new.pod" + ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], + "doc/man/man3/X509V3_get_d2i.3" => [ + "doc/man3/X509V3_get_d2i.pod" + ], + "doc/man/man3/X509V3_set_ctx.3" => [ + "doc/man3/X509V3_set_ctx.pod" + ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], + "doc/man/man3/X509_ALGOR_dup.3" => [ + "doc/man3/X509_ALGOR_dup.pod" + ], + "doc/man/man3/X509_ATTRIBUTE.3" => [ + "doc/man3/X509_ATTRIBUTE.pod" + ], + "doc/man/man3/X509_CRL_get0_by_serial.3" => [ + "doc/man3/X509_CRL_get0_by_serial.pod" + ], + "doc/man/man3/X509_EXTENSION_set_object.3" => [ + "doc/man3/X509_EXTENSION_set_object.pod" + ], + "doc/man/man3/X509_LOOKUP.3" => [ + "doc/man3/X509_LOOKUP.pod" + ], + "doc/man/man3/X509_LOOKUP_hash_dir.3" => [ + "doc/man3/X509_LOOKUP_hash_dir.pod" + ], + "doc/man/man3/X509_LOOKUP_meth_new.3" => [ + "doc/man3/X509_LOOKUP_meth_new.pod" + ], + "doc/man/man3/X509_NAME_ENTRY_get_object.3" => [ + "doc/man3/X509_NAME_ENTRY_get_object.pod" + ], + "doc/man/man3/X509_NAME_add_entry_by_txt.3" => [ + "doc/man3/X509_NAME_add_entry_by_txt.pod" + ], + "doc/man/man3/X509_NAME_get0_der.3" => [ + "doc/man3/X509_NAME_get0_der.pod" + ], + "doc/man/man3/X509_NAME_get_index_by_NID.3" => [ + "doc/man3/X509_NAME_get_index_by_NID.pod" + ], + "doc/man/man3/X509_NAME_print_ex.3" => [ + "doc/man3/X509_NAME_print_ex.pod" + ], + "doc/man/man3/X509_PUBKEY_new.3" => [ + "doc/man3/X509_PUBKEY_new.pod" + ], + "doc/man/man3/X509_REQ_get_attr.3" => [ + "doc/man3/X509_REQ_get_attr.pod" + ], + "doc/man/man3/X509_REQ_get_extensions.3" => [ + "doc/man3/X509_REQ_get_extensions.pod" + ], + "doc/man/man3/X509_SIG_get0.3" => [ + "doc/man3/X509_SIG_get0.pod" + ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], + "doc/man/man3/X509_STORE_CTX_get_error.3" => [ + "doc/man3/X509_STORE_CTX_get_error.pod" + ], + "doc/man/man3/X509_STORE_CTX_new.3" => [ + "doc/man3/X509_STORE_CTX_new.pod" + ], + "doc/man/man3/X509_STORE_CTX_set_verify_cb.3" => [ + "doc/man3/X509_STORE_CTX_set_verify_cb.pod" + ], + "doc/man/man3/X509_STORE_add_cert.3" => [ + "doc/man3/X509_STORE_add_cert.pod" + ], + "doc/man/man3/X509_STORE_get0_param.3" => [ + "doc/man3/X509_STORE_get0_param.pod" + ], + "doc/man/man3/X509_STORE_new.3" => [ + "doc/man3/X509_STORE_new.pod" + ], + "doc/man/man3/X509_STORE_set_verify_cb_func.3" => [ + "doc/man3/X509_STORE_set_verify_cb_func.pod" + ], + "doc/man/man3/X509_VERIFY_PARAM_set_flags.3" => [ + "doc/man3/X509_VERIFY_PARAM_set_flags.pod" + ], + "doc/man/man3/X509_add_cert.3" => [ + "doc/man3/X509_add_cert.pod" + ], + "doc/man/man3/X509_check_ca.3" => [ + "doc/man3/X509_check_ca.pod" + ], + "doc/man/man3/X509_check_host.3" => [ + "doc/man3/X509_check_host.pod" + ], + "doc/man/man3/X509_check_issued.3" => [ + "doc/man3/X509_check_issued.pod" + ], + "doc/man/man3/X509_check_private_key.3" => [ + "doc/man3/X509_check_private_key.pod" + ], + "doc/man/man3/X509_check_purpose.3" => [ + "doc/man3/X509_check_purpose.pod" + ], + "doc/man/man3/X509_cmp.3" => [ + "doc/man3/X509_cmp.pod" + ], + "doc/man/man3/X509_cmp_time.3" => [ + "doc/man3/X509_cmp_time.pod" + ], + "doc/man/man3/X509_digest.3" => [ + "doc/man3/X509_digest.pod" + ], + "doc/man/man3/X509_dup.3" => [ + "doc/man3/X509_dup.pod" + ], + "doc/man/man3/X509_get0_distinguishing_id.3" => [ + "doc/man3/X509_get0_distinguishing_id.pod" + ], + "doc/man/man3/X509_get0_notBefore.3" => [ + "doc/man3/X509_get0_notBefore.pod" + ], + "doc/man/man3/X509_get0_signature.3" => [ + "doc/man3/X509_get0_signature.pod" + ], + "doc/man/man3/X509_get0_uids.3" => [ + "doc/man3/X509_get0_uids.pod" + ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], + "doc/man/man3/X509_get_extension_flags.3" => [ + "doc/man3/X509_get_extension_flags.pod" + ], + "doc/man/man3/X509_get_pubkey.3" => [ + "doc/man3/X509_get_pubkey.pod" + ], + "doc/man/man3/X509_get_serialNumber.3" => [ + "doc/man3/X509_get_serialNumber.pod" + ], + "doc/man/man3/X509_get_subject_name.3" => [ + "doc/man3/X509_get_subject_name.pod" + ], + "doc/man/man3/X509_get_version.3" => [ + "doc/man3/X509_get_version.pod" + ], + "doc/man/man3/X509_load_http.3" => [ + "doc/man3/X509_load_http.pod" + ], + "doc/man/man3/X509_new.3" => [ + "doc/man3/X509_new.pod" + ], + "doc/man/man3/X509_sign.3" => [ + "doc/man3/X509_sign.pod" + ], + "doc/man/man3/X509_verify.3" => [ + "doc/man3/X509_verify.pod" + ], + "doc/man/man3/X509_verify_cert.3" => [ + "doc/man3/X509_verify_cert.pod" + ], + "doc/man/man3/X509v3_get_ext_by_NID.3" => [ + "doc/man3/X509v3_get_ext_by_NID.pod" + ], + "doc/man/man3/b2i_PVK_bio_ex.3" => [ + "doc/man3/b2i_PVK_bio_ex.pod" + ], + "doc/man/man3/d2i_PKCS8PrivateKey_bio.3" => [ + "doc/man3/d2i_PKCS8PrivateKey_bio.pod" + ], + "doc/man/man3/d2i_PrivateKey.3" => [ + "doc/man3/d2i_PrivateKey.pod" + ], + "doc/man/man3/d2i_RSAPrivateKey.3" => [ + "doc/man3/d2i_RSAPrivateKey.pod" + ], + "doc/man/man3/d2i_SSL_SESSION.3" => [ + "doc/man3/d2i_SSL_SESSION.pod" + ], + "doc/man/man3/d2i_X509.3" => [ + "doc/man3/d2i_X509.pod" + ], + "doc/man/man3/i2d_CMS_bio_stream.3" => [ + "doc/man3/i2d_CMS_bio_stream.pod" + ], + "doc/man/man3/i2d_PKCS7_bio_stream.3" => [ + "doc/man3/i2d_PKCS7_bio_stream.pod" + ], + "doc/man/man3/i2d_re_X509_tbs.3" => [ + "doc/man3/i2d_re_X509_tbs.pod" + ], + "doc/man/man3/o2i_SCT_LIST.3" => [ + "doc/man3/o2i_SCT_LIST.pod" + ], + "doc/man/man3/s2i_ASN1_IA5STRING.3" => [ + "doc/man3/s2i_ASN1_IA5STRING.pod" + ], + "doc/man/man5/config.5" => [ + "doc/man5/config.pod" + ], + "doc/man/man5/fips_config.5" => [ + "doc/man5/fips_config.pod" + ], + "doc/man/man5/x509v3_config.5" => [ + "doc/man5/x509v3_config.pod" + ], + "doc/man/man7/EVP_ASYM_CIPHER-RSA.7" => [ + "doc/man7/EVP_ASYM_CIPHER-RSA.pod" + ], + "doc/man/man7/EVP_ASYM_CIPHER-SM2.7" => [ + "doc/man7/EVP_ASYM_CIPHER-SM2.pod" + ], + "doc/man/man7/EVP_CIPHER-AES.7" => [ + "doc/man7/EVP_CIPHER-AES.pod" + ], + "doc/man/man7/EVP_CIPHER-ARIA.7" => [ + "doc/man7/EVP_CIPHER-ARIA.pod" + ], + "doc/man/man7/EVP_CIPHER-BLOWFISH.7" => [ + "doc/man7/EVP_CIPHER-BLOWFISH.pod" + ], + "doc/man/man7/EVP_CIPHER-CAMELLIA.7" => [ + "doc/man7/EVP_CIPHER-CAMELLIA.pod" + ], + "doc/man/man7/EVP_CIPHER-CAST.7" => [ + "doc/man7/EVP_CIPHER-CAST.pod" + ], + "doc/man/man7/EVP_CIPHER-CHACHA.7" => [ + "doc/man7/EVP_CIPHER-CHACHA.pod" + ], + "doc/man/man7/EVP_CIPHER-DES.7" => [ + "doc/man7/EVP_CIPHER-DES.pod" + ], + "doc/man/man7/EVP_CIPHER-IDEA.7" => [ + "doc/man7/EVP_CIPHER-IDEA.pod" + ], + "doc/man/man7/EVP_CIPHER-NULL.7" => [ + "doc/man7/EVP_CIPHER-NULL.pod" + ], + "doc/man/man7/EVP_CIPHER-RC2.7" => [ + "doc/man7/EVP_CIPHER-RC2.pod" + ], + "doc/man/man7/EVP_CIPHER-RC4.7" => [ + "doc/man7/EVP_CIPHER-RC4.pod" + ], + "doc/man/man7/EVP_CIPHER-RC5.7" => [ + "doc/man7/EVP_CIPHER-RC5.pod" + ], + "doc/man/man7/EVP_CIPHER-SEED.7" => [ + "doc/man7/EVP_CIPHER-SEED.pod" + ], + "doc/man/man7/EVP_CIPHER-SM4.7" => [ + "doc/man7/EVP_CIPHER-SM4.pod" + ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], + "doc/man/man7/EVP_KDF-HKDF.7" => [ + "doc/man7/EVP_KDF-HKDF.pod" + ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], + "doc/man/man7/EVP_KDF-KB.7" => [ + "doc/man7/EVP_KDF-KB.pod" + ], + "doc/man/man7/EVP_KDF-KRB5KDF.7" => [ + "doc/man7/EVP_KDF-KRB5KDF.pod" + ], + "doc/man/man7/EVP_KDF-PBKDF1.7" => [ + "doc/man7/EVP_KDF-PBKDF1.pod" + ], + "doc/man/man7/EVP_KDF-PBKDF2.7" => [ + "doc/man7/EVP_KDF-PBKDF2.pod" + ], + "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ + "doc/man7/EVP_KDF-PKCS12KDF.pod" + ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], + "doc/man/man7/EVP_KDF-SCRYPT.7" => [ + "doc/man7/EVP_KDF-SCRYPT.pod" + ], + "doc/man/man7/EVP_KDF-SS.7" => [ + "doc/man7/EVP_KDF-SS.pod" + ], + "doc/man/man7/EVP_KDF-SSHKDF.7" => [ + "doc/man7/EVP_KDF-SSHKDF.pod" + ], + "doc/man/man7/EVP_KDF-TLS13_KDF.7" => [ + "doc/man7/EVP_KDF-TLS13_KDF.pod" + ], + "doc/man/man7/EVP_KDF-TLS1_PRF.7" => [ + "doc/man7/EVP_KDF-TLS1_PRF.pod" + ], + "doc/man/man7/EVP_KDF-X942-ASN1.7" => [ + "doc/man7/EVP_KDF-X942-ASN1.pod" + ], + "doc/man/man7/EVP_KDF-X942-CONCAT.7" => [ + "doc/man7/EVP_KDF-X942-CONCAT.pod" + ], + "doc/man/man7/EVP_KDF-X963.7" => [ + "doc/man7/EVP_KDF-X963.pod" + ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], + "doc/man/man7/EVP_KEM-RSA.7" => [ + "doc/man7/EVP_KEM-RSA.pod" + ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], + "doc/man/man7/EVP_KEYEXCH-DH.7" => [ + "doc/man7/EVP_KEYEXCH-DH.pod" + ], + "doc/man/man7/EVP_KEYEXCH-ECDH.7" => [ + "doc/man7/EVP_KEYEXCH-ECDH.pod" + ], + "doc/man/man7/EVP_KEYEXCH-X25519.7" => [ + "doc/man7/EVP_KEYEXCH-X25519.pod" + ], + "doc/man/man7/EVP_MAC-BLAKE2.7" => [ + "doc/man7/EVP_MAC-BLAKE2.pod" + ], + "doc/man/man7/EVP_MAC-CMAC.7" => [ + "doc/man7/EVP_MAC-CMAC.pod" + ], + "doc/man/man7/EVP_MAC-GMAC.7" => [ + "doc/man7/EVP_MAC-GMAC.pod" + ], + "doc/man/man7/EVP_MAC-HMAC.7" => [ + "doc/man7/EVP_MAC-HMAC.pod" + ], + "doc/man/man7/EVP_MAC-KMAC.7" => [ + "doc/man7/EVP_MAC-KMAC.pod" + ], + "doc/man/man7/EVP_MAC-Poly1305.7" => [ + "doc/man7/EVP_MAC-Poly1305.pod" + ], + "doc/man/man7/EVP_MAC-Siphash.7" => [ + "doc/man7/EVP_MAC-Siphash.pod" + ], + "doc/man/man7/EVP_MD-BLAKE2.7" => [ + "doc/man7/EVP_MD-BLAKE2.pod" + ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], + "doc/man/man7/EVP_MD-MD2.7" => [ + "doc/man7/EVP_MD-MD2.pod" + ], + "doc/man/man7/EVP_MD-MD4.7" => [ + "doc/man7/EVP_MD-MD4.pod" + ], + "doc/man/man7/EVP_MD-MD5-SHA1.7" => [ + "doc/man7/EVP_MD-MD5-SHA1.pod" + ], + "doc/man/man7/EVP_MD-MD5.7" => [ + "doc/man7/EVP_MD-MD5.pod" + ], + "doc/man/man7/EVP_MD-MDC2.7" => [ + "doc/man7/EVP_MD-MDC2.pod" + ], + "doc/man/man7/EVP_MD-NULL.7" => [ + "doc/man7/EVP_MD-NULL.pod" + ], + "doc/man/man7/EVP_MD-RIPEMD160.7" => [ + "doc/man7/EVP_MD-RIPEMD160.pod" + ], + "doc/man/man7/EVP_MD-SHA1.7" => [ + "doc/man7/EVP_MD-SHA1.pod" + ], + "doc/man/man7/EVP_MD-SHA2.7" => [ + "doc/man7/EVP_MD-SHA2.pod" + ], + "doc/man/man7/EVP_MD-SHA3.7" => [ + "doc/man7/EVP_MD-SHA3.pod" + ], + "doc/man/man7/EVP_MD-SHAKE.7" => [ + "doc/man7/EVP_MD-SHAKE.pod" + ], + "doc/man/man7/EVP_MD-SM3.7" => [ + "doc/man7/EVP_MD-SM3.pod" + ], + "doc/man/man7/EVP_MD-WHIRLPOOL.7" => [ + "doc/man7/EVP_MD-WHIRLPOOL.pod" + ], + "doc/man/man7/EVP_MD-common.7" => [ + "doc/man7/EVP_MD-common.pod" + ], + "doc/man/man7/EVP_PKEY-DH.7" => [ + "doc/man7/EVP_PKEY-DH.pod" + ], + "doc/man/man7/EVP_PKEY-DSA.7" => [ + "doc/man7/EVP_PKEY-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-EC.7" => [ + "doc/man7/EVP_PKEY-EC.pod" + ], + "doc/man/man7/EVP_PKEY-FFC.7" => [ + "doc/man7/EVP_PKEY-FFC.pod" + ], + "doc/man/man7/EVP_PKEY-HMAC.7" => [ + "doc/man7/EVP_PKEY-HMAC.pod" + ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], + "doc/man/man7/EVP_PKEY-RSA.7" => [ + "doc/man7/EVP_PKEY-RSA.pod" + ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-SM2.7" => [ + "doc/man7/EVP_PKEY-SM2.pod" + ], + "doc/man/man7/EVP_PKEY-X25519.7" => [ + "doc/man7/EVP_PKEY-X25519.pod" + ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], + "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ + "doc/man7/EVP_RAND-CTR-DRBG.pod" + ], + "doc/man/man7/EVP_RAND-HASH-DRBG.7" => [ + "doc/man7/EVP_RAND-HASH-DRBG.pod" + ], + "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ + "doc/man7/EVP_RAND-HMAC-DRBG.pod" + ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], + "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ + "doc/man7/EVP_RAND-SEED-SRC.pod" + ], + "doc/man/man7/EVP_RAND-TEST-RAND.7" => [ + "doc/man7/EVP_RAND-TEST-RAND.pod" + ], + "doc/man/man7/EVP_RAND.7" => [ + "doc/man7/EVP_RAND.pod" + ], + "doc/man/man7/EVP_SIGNATURE-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-DSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-ECDSA.7" => [ + "doc/man7/EVP_SIGNATURE-ECDSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-ED25519.7" => [ + "doc/man7/EVP_SIGNATURE-ED25519.pod" + ], + "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ + "doc/man7/EVP_SIGNATURE-HMAC.pod" + ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ + "doc/man7/EVP_SIGNATURE-RSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], + "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ + "doc/man7/OSSL_PROVIDER-FIPS.pod" + ], + "doc/man/man7/OSSL_PROVIDER-base.7" => [ + "doc/man7/OSSL_PROVIDER-base.pod" + ], + "doc/man/man7/OSSL_PROVIDER-default.7" => [ + "doc/man7/OSSL_PROVIDER-default.pod" + ], + "doc/man/man7/OSSL_PROVIDER-legacy.7" => [ + "doc/man7/OSSL_PROVIDER-legacy.pod" + ], + "doc/man/man7/OSSL_PROVIDER-null.7" => [ + "doc/man7/OSSL_PROVIDER-null.pod" + ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], + "doc/man/man7/RAND.7" => [ + "doc/man7/RAND.pod" + ], + "doc/man/man7/RSA-PSS.7" => [ + "doc/man7/RSA-PSS.pod" + ], + "doc/man/man7/X25519.7" => [ + "doc/man7/X25519.pod" + ], + "doc/man/man7/bio.7" => [ + "doc/man7/bio.pod" + ], + "doc/man/man7/ct.7" => [ + "doc/man7/ct.pod" + ], + "doc/man/man7/des_modes.7" => [ + "doc/man7/des_modes.pod" + ], + "doc/man/man7/evp.7" => [ + "doc/man7/evp.pod" + ], + "doc/man/man7/fips_module.7" => [ + "doc/man7/fips_module.pod" + ], + "doc/man/man7/life_cycle-cipher.7" => [ + "doc/man7/life_cycle-cipher.pod" + ], + "doc/man/man7/life_cycle-digest.7" => [ + "doc/man7/life_cycle-digest.pod" + ], + "doc/man/man7/life_cycle-kdf.7" => [ + "doc/man7/life_cycle-kdf.pod" + ], + "doc/man/man7/life_cycle-mac.7" => [ + "doc/man7/life_cycle-mac.pod" + ], + "doc/man/man7/life_cycle-pkey.7" => [ + "doc/man7/life_cycle-pkey.pod" + ], + "doc/man/man7/life_cycle-rand.7" => [ + "doc/man7/life_cycle-rand.pod" + ], + "doc/man/man7/openssl-core.h.7" => [ + "doc/man7/openssl-core.h.pod" + ], + "doc/man/man7/openssl-core_dispatch.h.7" => [ + "doc/man7/openssl-core_dispatch.h.pod" + ], + "doc/man/man7/openssl-core_names.h.7" => [ + "doc/man7/openssl-core_names.h.pod" + ], + "doc/man/man7/openssl-env.7" => [ + "doc/man7/openssl-env.pod" + ], + "doc/man/man7/openssl-glossary.7" => [ + "doc/man7/openssl-glossary.pod" + ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], + "doc/man/man7/openssl-threads.7" => [ + "doc/man7/openssl-threads.pod" + ], + "doc/man/man7/openssl_user_macros.7" => [ + "doc/man7/openssl_user_macros.pod" + ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], + "doc/man/man7/ossl_store-file.7" => [ + "doc/man7/ossl_store-file.pod" + ], + "doc/man/man7/ossl_store.7" => [ + "doc/man7/ossl_store.pod" + ], + "doc/man/man7/passphrase-encoding.7" => [ + "doc/man7/passphrase-encoding.pod" + ], + "doc/man/man7/property.7" => [ + "doc/man7/property.pod" + ], + "doc/man/man7/provider-asym_cipher.7" => [ + "doc/man7/provider-asym_cipher.pod" + ], + "doc/man/man7/provider-base.7" => [ + "doc/man7/provider-base.pod" + ], + "doc/man/man7/provider-cipher.7" => [ + "doc/man7/provider-cipher.pod" + ], + "doc/man/man7/provider-decoder.7" => [ + "doc/man7/provider-decoder.pod" + ], + "doc/man/man7/provider-digest.7" => [ + "doc/man7/provider-digest.pod" + ], + "doc/man/man7/provider-encoder.7" => [ + "doc/man7/provider-encoder.pod" + ], + "doc/man/man7/provider-kdf.7" => [ + "doc/man7/provider-kdf.pod" + ], + "doc/man/man7/provider-kem.7" => [ + "doc/man7/provider-kem.pod" + ], + "doc/man/man7/provider-keyexch.7" => [ + "doc/man7/provider-keyexch.pod" + ], + "doc/man/man7/provider-keymgmt.7" => [ + "doc/man7/provider-keymgmt.pod" + ], + "doc/man/man7/provider-mac.7" => [ + "doc/man7/provider-mac.pod" + ], + "doc/man/man7/provider-object.7" => [ + "doc/man7/provider-object.pod" + ], + "doc/man/man7/provider-rand.7" => [ + "doc/man7/provider-rand.pod" + ], + "doc/man/man7/provider-signature.7" => [ + "doc/man7/provider-signature.pod" + ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], + "doc/man/man7/provider-storemgmt.7" => [ + "doc/man7/provider-storemgmt.pod" + ], + "doc/man/man7/provider.7" => [ + "doc/man7/provider.pod" + ], + "doc/man/man7/proxy-certificates.7" => [ + "doc/man7/proxy-certificates.pod" + ], + "doc/man/man7/x509.7" => [ + "doc/man7/x509.pod" + ], + "doc/man1/openssl-asn1parse.pod" => [ + "doc/man1/openssl-asn1parse.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-ca.pod" => [ + "doc/man1/openssl-ca.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-ciphers.pod" => [ + "doc/man1/openssl-ciphers.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-cmds.pod" => [ + "doc/man1/openssl-cmds.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-cmp.pod" => [ + "doc/man1/openssl-cmp.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-cms.pod" => [ + "doc/man1/openssl-cms.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-crl.pod" => [ + "doc/man1/openssl-crl.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-crl2pkcs7.pod" => [ + "doc/man1/openssl-crl2pkcs7.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-dgst.pod" => [ + "doc/man1/openssl-dgst.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-dhparam.pod" => [ + "doc/man1/openssl-dhparam.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-dsa.pod" => [ + "doc/man1/openssl-dsa.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-dsaparam.pod" => [ + "doc/man1/openssl-dsaparam.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-ec.pod" => [ + "doc/man1/openssl-ec.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-ecparam.pod" => [ + "doc/man1/openssl-ecparam.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-enc.pod" => [ + "doc/man1/openssl-enc.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-engine.pod" => [ + "doc/man1/openssl-engine.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-errstr.pod" => [ + "doc/man1/openssl-errstr.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-fipsinstall.pod" => [ + "doc/man1/openssl-fipsinstall.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-gendsa.pod" => [ + "doc/man1/openssl-gendsa.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-genpkey.pod" => [ + "doc/man1/openssl-genpkey.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-genrsa.pod" => [ + "doc/man1/openssl-genrsa.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-info.pod" => [ + "doc/man1/openssl-info.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-kdf.pod" => [ + "doc/man1/openssl-kdf.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-list.pod" => [ + "doc/man1/openssl-list.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-mac.pod" => [ + "doc/man1/openssl-mac.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-nseq.pod" => [ + "doc/man1/openssl-nseq.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-ocsp.pod" => [ + "doc/man1/openssl-ocsp.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-passwd.pod" => [ + "doc/man1/openssl-passwd.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-pkcs12.pod" => [ + "doc/man1/openssl-pkcs12.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-pkcs7.pod" => [ + "doc/man1/openssl-pkcs7.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-pkcs8.pod" => [ + "doc/man1/openssl-pkcs8.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-pkey.pod" => [ + "doc/man1/openssl-pkey.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-pkeyparam.pod" => [ + "doc/man1/openssl-pkeyparam.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-pkeyutl.pod" => [ + "doc/man1/openssl-pkeyutl.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-prime.pod" => [ + "doc/man1/openssl-prime.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-rand.pod" => [ + "doc/man1/openssl-rand.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-rehash.pod" => [ + "doc/man1/openssl-rehash.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-req.pod" => [ + "doc/man1/openssl-req.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-rsa.pod" => [ + "doc/man1/openssl-rsa.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-rsautl.pod" => [ + "doc/man1/openssl-rsautl.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-s_client.pod" => [ + "doc/man1/openssl-s_client.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-s_server.pod" => [ + "doc/man1/openssl-s_server.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-s_time.pod" => [ + "doc/man1/openssl-s_time.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-sess_id.pod" => [ + "doc/man1/openssl-sess_id.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-smime.pod" => [ + "doc/man1/openssl-smime.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-speed.pod" => [ + "doc/man1/openssl-speed.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-spkac.pod" => [ + "doc/man1/openssl-spkac.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-srp.pod" => [ + "doc/man1/openssl-srp.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-storeutl.pod" => [ + "doc/man1/openssl-storeutl.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-ts.pod" => [ + "doc/man1/openssl-ts.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-verify.pod" => [ + "doc/man1/openssl-verify.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-version.pod" => [ + "doc/man1/openssl-version.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-x509.pod" => [ + "doc/man1/openssl-x509.pod.in", + "doc/perlvars.pm" + ], + "doc/man7/openssl_user_macros.pod" => [ + "doc/man7/openssl_user_macros.pod.in" + ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "libcrypto.ld" => [ + "configdata.pm", + "util/perl/OpenSSL/Ordinals.pm" + ], + "libcrypto.pc" => [ + "builddata.pm" + ], + "libssl" => [ + "libcrypto" + ], + "libssl.ld" => [ + "configdata.pm", + "util/perl/OpenSSL/Ordinals.pm" + ], + "libssl.pc" => [ + "builddata.pm" + ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], + "providers/common/der/der_digests_gen.c" => [ + "providers/common/der/DIGESTS.asn1", + "providers/common/der/NIST.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_dsa_gen.c" => [ + "providers/common/der/DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_ec_gen.c" => [ + "providers/common/der/EC.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_ecx_gen.c" => [ + "providers/common/der/ECX.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_rsa_gen.c" => [ + "providers/common/der/NIST.asn1", + "providers/common/der/RSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_sm2_gen.c" => [ + "providers/common/der/SM2.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_wrap_gen.c" => [ + "providers/common/der/oids_to_c.pm", + "providers/common/der/wrap.asn1" + ], + "providers/common/der/libcommon-lib-der_digests_gen.o" => [ + "providers/common/include/prov/der_digests.h" + ], + "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ + "providers/common/include/prov/der_dsa.h" + ], + "providers/common/der/libcommon-lib-der_dsa_key.o" => [ + "providers/common/include/prov/der_digests.h", + "providers/common/include/prov/der_dsa.h" + ], + "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ + "providers/common/include/prov/der_digests.h", + "providers/common/include/prov/der_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ec_gen.o" => [ + "providers/common/include/prov/der_ec.h" + ], + "providers/common/der/libcommon-lib-der_ec_key.o" => [ + "providers/common/include/prov/der_digests.h", + "providers/common/include/prov/der_ec.h" + ], + "providers/common/der/libcommon-lib-der_ec_sig.o" => [ + "providers/common/include/prov/der_digests.h", + "providers/common/include/prov/der_ec.h" + ], + "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ + "providers/common/include/prov/der_ecx.h" + ], + "providers/common/der/libcommon-lib-der_ecx_key.o" => [ + "providers/common/include/prov/der_ecx.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ + "providers/common/include/prov/der_rsa.h" + ], + "providers/common/der/libcommon-lib-der_rsa_key.o" => [ + "providers/common/include/prov/der_digests.h", + "providers/common/include/prov/der_rsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ + "providers/common/include/prov/der_wrap.h" + ], + "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ + "providers/common/include/prov/der_digests.h", + "providers/common/include/prov/der_rsa.h" + ], + "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ + "providers/common/include/prov/der_sm2.h" + ], + "providers/common/der/libdefault-lib-der_sm2_key.o" => [ + "providers/common/include/prov/der_ec.h", + "providers/common/include/prov/der_sm2.h" + ], + "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ + "providers/common/include/prov/der_ec.h", + "providers/common/include/prov/der_sm2.h" + ], + "providers/common/der/libfips-lib-der_rsa_sig.o" => [ + "providers/common/include/prov/der_digests.h", + "providers/common/include/prov/der_rsa.h" + ], + "providers/common/include/prov/der_digests.h" => [ + "providers/common/der/DIGESTS.asn1", + "providers/common/der/NIST.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_dsa.h" => [ + "providers/common/der/DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_ec.h" => [ + "providers/common/der/EC.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_ecx.h" => [ + "providers/common/der/ECX.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_rsa.h" => [ + "providers/common/der/NIST.asn1", + "providers/common/der/RSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_sm2.h" => [ + "providers/common/der/SM2.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_wrap.h" => [ + "providers/common/der/oids_to_c.pm", + "providers/common/der/wrap.asn1" + ], + "providers/fips" => [ + "providers/libfips.a" + ], + "providers/fipsmodule.cnf" => [ + "providers/fips" + ], + "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ + "providers/common/include/prov/der_rsa.h" + ], + "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ + "providers/common/include/prov/der_wrap.h" + ], + "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ + "providers/common/include/prov/der_wrap.h" + ], + "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ + "providers/common/include/prov/der_dsa.h" + ], + "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ + "providers/common/include/prov/der_ec.h" + ], + "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ + "providers/common/include/prov/der_ecx.h" + ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ + "providers/common/include/prov/der_rsa.h" + ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ + "providers/common/include/prov/der_sm2.h" + ], + "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ + "providers/common/include/prov/der_dsa.h" + ], + "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ + "providers/common/include/prov/der_ec.h" + ], + "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ + "providers/common/include/prov/der_ecx.h" + ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ + "providers/common/include/prov/der_rsa.h" + ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/legacy" => [ + "libcrypto", + "providers/liblegacy.a" + ], + "providers/libcommon.a" => [ + "libcrypto" + ], + "providers/libdefault.a" => [ + "providers/libcommon.a" + ], + "providers/liblegacy.a" => [ + "providers/libcommon.a" + ], + "util/wrap.pl" => [ + "configdata.pm" + ] + }, + "dirinfo" => { + "apps" => { + "products" => { + "bin" => [ + "apps/openssl" + ], + "script" => [ + "apps/CA.pl", + "apps/tsget.pl" + ] + } + }, + "apps/lib" => { + "deps" => [ + "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/libapps-lib-app_libctx.o", + "apps/lib/libapps-lib-app_params.o", + "apps/lib/libapps-lib-app_provider.o", + "apps/lib/libapps-lib-app_rand.o", + "apps/lib/libapps-lib-app_x509.o", + "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", + "apps/lib/libapps-lib-apps_ui.o", + "apps/lib/libapps-lib-columns.o", + "apps/lib/libapps-lib-engine.o", + "apps/lib/libapps-lib-engine_loader.o", + "apps/lib/libapps-lib-fmt.o", + "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", + "apps/lib/libapps-lib-names.o", + "apps/lib/libapps-lib-opt.o", + "apps/lib/libapps-lib-s_cb.o", + "apps/lib/libapps-lib-s_socket.o", + "apps/lib/libapps-lib-tlssrp_depr.o" + ], + "products" => { + "bin" => [ + "apps/openssl" + ], + "lib" => [ + "apps/libapps.a" + ] + } + }, + "crypto" => { + "deps" => [ + "crypto/libcrypto-lib-asn1_dsa.o", + "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", + "crypto/libcrypto-lib-context.o", + "crypto/libcrypto-lib-core_algorithm.o", + "crypto/libcrypto-lib-core_fetch.o", + "crypto/libcrypto-lib-core_namemap.o", + "crypto/libcrypto-lib-cpt_err.o", + "crypto/libcrypto-lib-cpuid.o", + "crypto/libcrypto-lib-cryptlib.o", + "crypto/libcrypto-lib-ctype.o", + "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", + "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", + "crypto/libcrypto-lib-ebcdic.o", + "crypto/libcrypto-lib-ex_data.o", + "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", + "crypto/libcrypto-lib-info.o", + "crypto/libcrypto-lib-init.o", + "crypto/libcrypto-lib-initthread.o", + "crypto/libcrypto-lib-mem.o", + "crypto/libcrypto-lib-mem_sec.o", + "crypto/libcrypto-lib-o_dir.o", + "crypto/libcrypto-lib-o_fopen.o", + "crypto/libcrypto-lib-o_init.o", + "crypto/libcrypto-lib-o_str.o", + "crypto/libcrypto-lib-o_time.o", + "crypto/libcrypto-lib-packet.o", + "crypto/libcrypto-lib-param_build.o", + "crypto/libcrypto-lib-param_build_set.o", + "crypto/libcrypto-lib-params.o", + "crypto/libcrypto-lib-params_dup.o", + "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", + "crypto/libcrypto-lib-passphrase.o", + "crypto/libcrypto-lib-provider.o", + "crypto/libcrypto-lib-provider_child.o", + "crypto/libcrypto-lib-provider_conf.o", + "crypto/libcrypto-lib-provider_core.o", + "crypto/libcrypto-lib-provider_predefined.o", + "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", + "crypto/libcrypto-lib-riscv64cpuid.o", + "crypto/libcrypto-lib-riscvcap.o", + "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", + "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", + "crypto/libcrypto-lib-threads_lib.o", + "crypto/libcrypto-lib-threads_none.o", + "crypto/libcrypto-lib-threads_pthread.o", + "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", + "crypto/libcrypto-lib-trace.o", + "crypto/libcrypto-lib-uid.o", + "crypto/libfips-lib-asn1_dsa.o", + "crypto/libfips-lib-bsearch.o", + "crypto/libfips-lib-context.o", + "crypto/libfips-lib-core_algorithm.o", + "crypto/libfips-lib-core_fetch.o", + "crypto/libfips-lib-core_namemap.o", + "crypto/libfips-lib-cpuid.o", + "crypto/libfips-lib-cryptlib.o", + "crypto/libfips-lib-ctype.o", + "crypto/libfips-lib-der_writer.o", + "crypto/libfips-lib-ex_data.o", + "crypto/libfips-lib-initthread.o", + "crypto/libfips-lib-o_str.o", + "crypto/libfips-lib-packet.o", + "crypto/libfips-lib-param_build.o", + "crypto/libfips-lib-param_build_set.o", + "crypto/libfips-lib-params.o", + "crypto/libfips-lib-params_dup.o", + "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", + "crypto/libfips-lib-provider_core.o", + "crypto/libfips-lib-provider_predefined.o", + "crypto/libfips-lib-riscv64cpuid.o", + "crypto/libfips-lib-riscvcap.o", + "crypto/libfips-lib-self_test_core.o", + "crypto/libfips-lib-sparse_array.o", + "crypto/libfips-lib-threads_lib.o", + "crypto/libfips-lib-threads_none.o", + "crypto/libfips-lib-threads_pthread.o", + "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/aes" => { + "deps" => [ + "crypto/aes/libcrypto-lib-aes-riscv64-zkn.o", + "crypto/aes/libcrypto-lib-aes-riscv64-zvbb-zvkg-zvkned.o", + "crypto/aes/libcrypto-lib-aes-riscv64-zvkb-zvkned.o", + "crypto/aes/libcrypto-lib-aes-riscv64-zvkned.o", + "crypto/aes/libcrypto-lib-aes-riscv64.o", + "crypto/aes/libcrypto-lib-aes_cbc.o", + "crypto/aes/libcrypto-lib-aes_cfb.o", + "crypto/aes/libcrypto-lib-aes_ecb.o", + "crypto/aes/libcrypto-lib-aes_ige.o", + "crypto/aes/libcrypto-lib-aes_misc.o", + "crypto/aes/libcrypto-lib-aes_ofb.o", + "crypto/aes/libcrypto-lib-aes_wrap.o", + "crypto/aes/libfips-lib-aes-riscv64-zkn.o", + "crypto/aes/libfips-lib-aes-riscv64-zvbb-zvkg-zvkned.o", + "crypto/aes/libfips-lib-aes-riscv64-zvkb-zvkned.o", + "crypto/aes/libfips-lib-aes-riscv64-zvkned.o", + "crypto/aes/libfips-lib-aes-riscv64.o", + "crypto/aes/libfips-lib-aes_cbc.o", + "crypto/aes/libfips-lib-aes_ecb.o", + "crypto/aes/libfips-lib-aes_misc.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/aria" => { + "deps" => [ + "crypto/aria/libcrypto-lib-aria.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/asn1" => { + "deps" => [ + "crypto/asn1/libcrypto-lib-a_bitstr.o", + "crypto/asn1/libcrypto-lib-a_d2i_fp.o", + "crypto/asn1/libcrypto-lib-a_digest.o", + "crypto/asn1/libcrypto-lib-a_dup.o", + "crypto/asn1/libcrypto-lib-a_gentm.o", + "crypto/asn1/libcrypto-lib-a_i2d_fp.o", + "crypto/asn1/libcrypto-lib-a_int.o", + "crypto/asn1/libcrypto-lib-a_mbstr.o", + "crypto/asn1/libcrypto-lib-a_object.o", + "crypto/asn1/libcrypto-lib-a_octet.o", + "crypto/asn1/libcrypto-lib-a_print.o", + "crypto/asn1/libcrypto-lib-a_sign.o", + "crypto/asn1/libcrypto-lib-a_strex.o", + "crypto/asn1/libcrypto-lib-a_strnid.o", + "crypto/asn1/libcrypto-lib-a_time.o", + "crypto/asn1/libcrypto-lib-a_type.o", + "crypto/asn1/libcrypto-lib-a_utctm.o", + "crypto/asn1/libcrypto-lib-a_utf8.o", + "crypto/asn1/libcrypto-lib-a_verify.o", + "crypto/asn1/libcrypto-lib-ameth_lib.o", + "crypto/asn1/libcrypto-lib-asn1_err.o", + "crypto/asn1/libcrypto-lib-asn1_gen.o", + "crypto/asn1/libcrypto-lib-asn1_item_list.o", + "crypto/asn1/libcrypto-lib-asn1_lib.o", + "crypto/asn1/libcrypto-lib-asn1_parse.o", + "crypto/asn1/libcrypto-lib-asn_mime.o", + "crypto/asn1/libcrypto-lib-asn_moid.o", + "crypto/asn1/libcrypto-lib-asn_mstbl.o", + "crypto/asn1/libcrypto-lib-asn_pack.o", + "crypto/asn1/libcrypto-lib-bio_asn1.o", + "crypto/asn1/libcrypto-lib-bio_ndef.o", + "crypto/asn1/libcrypto-lib-d2i_param.o", + "crypto/asn1/libcrypto-lib-d2i_pr.o", + "crypto/asn1/libcrypto-lib-d2i_pu.o", + "crypto/asn1/libcrypto-lib-evp_asn1.o", + "crypto/asn1/libcrypto-lib-f_int.o", + "crypto/asn1/libcrypto-lib-f_string.o", + "crypto/asn1/libcrypto-lib-i2d_evp.o", + "crypto/asn1/libcrypto-lib-n_pkey.o", + "crypto/asn1/libcrypto-lib-nsseq.o", + "crypto/asn1/libcrypto-lib-p5_pbe.o", + "crypto/asn1/libcrypto-lib-p5_pbev2.o", + "crypto/asn1/libcrypto-lib-p5_scrypt.o", + "crypto/asn1/libcrypto-lib-p8_pkey.o", + "crypto/asn1/libcrypto-lib-t_bitst.o", + "crypto/asn1/libcrypto-lib-t_pkey.o", + "crypto/asn1/libcrypto-lib-t_spki.o", + "crypto/asn1/libcrypto-lib-tasn_dec.o", + "crypto/asn1/libcrypto-lib-tasn_enc.o", + "crypto/asn1/libcrypto-lib-tasn_fre.o", + "crypto/asn1/libcrypto-lib-tasn_new.o", + "crypto/asn1/libcrypto-lib-tasn_prn.o", + "crypto/asn1/libcrypto-lib-tasn_scn.o", + "crypto/asn1/libcrypto-lib-tasn_typ.o", + "crypto/asn1/libcrypto-lib-tasn_utl.o", + "crypto/asn1/libcrypto-lib-x_algor.o", + "crypto/asn1/libcrypto-lib-x_bignum.o", + "crypto/asn1/libcrypto-lib-x_info.o", + "crypto/asn1/libcrypto-lib-x_int64.o", + "crypto/asn1/libcrypto-lib-x_long.o", + "crypto/asn1/libcrypto-lib-x_pkey.o", + "crypto/asn1/libcrypto-lib-x_sig.o", + "crypto/asn1/libcrypto-lib-x_spki.o", + "crypto/asn1/libcrypto-lib-x_val.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/async" => { + "deps" => [ + "crypto/async/libcrypto-lib-async.o", + "crypto/async/libcrypto-lib-async_err.o", + "crypto/async/libcrypto-lib-async_wait.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/async/arch" => { + "deps" => [ + "crypto/async/arch/libcrypto-lib-async_null.o", + "crypto/async/arch/libcrypto-lib-async_posix.o", + "crypto/async/arch/libcrypto-lib-async_win.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/bf" => { + "deps" => [ + "crypto/bf/libcrypto-lib-bf_cfb64.o", + "crypto/bf/libcrypto-lib-bf_ecb.o", + "crypto/bf/libcrypto-lib-bf_enc.o", + "crypto/bf/libcrypto-lib-bf_ofb64.o", + "crypto/bf/libcrypto-lib-bf_skey.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/bio" => { + "deps" => [ + "crypto/bio/libcrypto-lib-bf_buff.o", + "crypto/bio/libcrypto-lib-bf_lbuf.o", + "crypto/bio/libcrypto-lib-bf_nbio.o", + "crypto/bio/libcrypto-lib-bf_null.o", + "crypto/bio/libcrypto-lib-bf_prefix.o", + "crypto/bio/libcrypto-lib-bf_readbuff.o", + "crypto/bio/libcrypto-lib-bio_addr.o", + "crypto/bio/libcrypto-lib-bio_cb.o", + "crypto/bio/libcrypto-lib-bio_dump.o", + "crypto/bio/libcrypto-lib-bio_err.o", + "crypto/bio/libcrypto-lib-bio_lib.o", + "crypto/bio/libcrypto-lib-bio_meth.o", + "crypto/bio/libcrypto-lib-bio_print.o", + "crypto/bio/libcrypto-lib-bio_sock.o", + "crypto/bio/libcrypto-lib-bio_sock2.o", + "crypto/bio/libcrypto-lib-bss_acpt.o", + "crypto/bio/libcrypto-lib-bss_bio.o", + "crypto/bio/libcrypto-lib-bss_conn.o", + "crypto/bio/libcrypto-lib-bss_core.o", + "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", + "crypto/bio/libcrypto-lib-bss_fd.o", + "crypto/bio/libcrypto-lib-bss_file.o", + "crypto/bio/libcrypto-lib-bss_log.o", + "crypto/bio/libcrypto-lib-bss_mem.o", + "crypto/bio/libcrypto-lib-bss_null.o", + "crypto/bio/libcrypto-lib-bss_sock.o", + "crypto/bio/libcrypto-lib-ossl_core_bio.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/bn" => { + "deps" => [ + "crypto/bn/libcrypto-lib-bn_add.o", + "crypto/bn/libcrypto-lib-bn_asm.o", + "crypto/bn/libcrypto-lib-bn_blind.o", + "crypto/bn/libcrypto-lib-bn_const.o", + "crypto/bn/libcrypto-lib-bn_conv.o", + "crypto/bn/libcrypto-lib-bn_ctx.o", + "crypto/bn/libcrypto-lib-bn_depr.o", + "crypto/bn/libcrypto-lib-bn_dh.o", + "crypto/bn/libcrypto-lib-bn_div.o", + "crypto/bn/libcrypto-lib-bn_err.o", + "crypto/bn/libcrypto-lib-bn_exp.o", + "crypto/bn/libcrypto-lib-bn_exp2.o", + "crypto/bn/libcrypto-lib-bn_gcd.o", + "crypto/bn/libcrypto-lib-bn_gf2m.o", + "crypto/bn/libcrypto-lib-bn_intern.o", + "crypto/bn/libcrypto-lib-bn_kron.o", + "crypto/bn/libcrypto-lib-bn_lib.o", + "crypto/bn/libcrypto-lib-bn_mod.o", + "crypto/bn/libcrypto-lib-bn_mont.o", + "crypto/bn/libcrypto-lib-bn_mpi.o", + "crypto/bn/libcrypto-lib-bn_mul.o", + "crypto/bn/libcrypto-lib-bn_nist.o", + "crypto/bn/libcrypto-lib-bn_prime.o", + "crypto/bn/libcrypto-lib-bn_print.o", + "crypto/bn/libcrypto-lib-bn_rand.o", + "crypto/bn/libcrypto-lib-bn_recp.o", + "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o", + "crypto/bn/libcrypto-lib-bn_shift.o", + "crypto/bn/libcrypto-lib-bn_sqr.o", + "crypto/bn/libcrypto-lib-bn_sqrt.o", + "crypto/bn/libcrypto-lib-bn_srp.o", + "crypto/bn/libcrypto-lib-bn_word.o", + "crypto/bn/libcrypto-lib-bn_x931p.o", + "crypto/bn/libfips-lib-bn_add.o", + "crypto/bn/libfips-lib-bn_asm.o", + "crypto/bn/libfips-lib-bn_blind.o", + "crypto/bn/libfips-lib-bn_const.o", + "crypto/bn/libfips-lib-bn_conv.o", + "crypto/bn/libfips-lib-bn_ctx.o", + "crypto/bn/libfips-lib-bn_dh.o", + "crypto/bn/libfips-lib-bn_div.o", + "crypto/bn/libfips-lib-bn_exp.o", + "crypto/bn/libfips-lib-bn_exp2.o", + "crypto/bn/libfips-lib-bn_gcd.o", + "crypto/bn/libfips-lib-bn_gf2m.o", + "crypto/bn/libfips-lib-bn_intern.o", + "crypto/bn/libfips-lib-bn_kron.o", + "crypto/bn/libfips-lib-bn_lib.o", + "crypto/bn/libfips-lib-bn_mod.o", + "crypto/bn/libfips-lib-bn_mont.o", + "crypto/bn/libfips-lib-bn_mpi.o", + "crypto/bn/libfips-lib-bn_mul.o", + "crypto/bn/libfips-lib-bn_nist.o", + "crypto/bn/libfips-lib-bn_prime.o", + "crypto/bn/libfips-lib-bn_rand.o", + "crypto/bn/libfips-lib-bn_recp.o", + "crypto/bn/libfips-lib-bn_rsa_fips186_4.o", + "crypto/bn/libfips-lib-bn_shift.o", + "crypto/bn/libfips-lib-bn_sqr.o", + "crypto/bn/libfips-lib-bn_sqrt.o", + "crypto/bn/libfips-lib-bn_word.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/buffer" => { + "deps" => [ + "crypto/buffer/libcrypto-lib-buf_err.o", + "crypto/buffer/libcrypto-lib-buffer.o", + "crypto/buffer/libfips-lib-buffer.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/camellia" => { + "deps" => [ + "crypto/camellia/libcrypto-lib-camellia.o", + "crypto/camellia/libcrypto-lib-cmll_cbc.o", + "crypto/camellia/libcrypto-lib-cmll_cfb.o", + "crypto/camellia/libcrypto-lib-cmll_ctr.o", + "crypto/camellia/libcrypto-lib-cmll_ecb.o", + "crypto/camellia/libcrypto-lib-cmll_misc.o", + "crypto/camellia/libcrypto-lib-cmll_ofb.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/cast" => { + "deps" => [ + "crypto/cast/libcrypto-lib-c_cfb64.o", + "crypto/cast/libcrypto-lib-c_ecb.o", + "crypto/cast/libcrypto-lib-c_enc.o", + "crypto/cast/libcrypto-lib-c_ofb64.o", + "crypto/cast/libcrypto-lib-c_skey.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/chacha" => { + "deps" => [ + "crypto/chacha/libcrypto-lib-chacha-riscv64-v-zbb-zvkb.o", + "crypto/chacha/libcrypto-lib-chacha-riscv64-v-zbb.o", + "crypto/chacha/libcrypto-lib-chacha_enc.o", + "crypto/chacha/libcrypto-lib-chacha_riscv.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/cmac" => { + "deps" => [ + "crypto/cmac/libcrypto-lib-cmac.o", + "crypto/cmac/libfips-lib-cmac.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/cmp" => { + "deps" => [ + "crypto/cmp/libcrypto-lib-cmp_asn.o", + "crypto/cmp/libcrypto-lib-cmp_client.o", + "crypto/cmp/libcrypto-lib-cmp_ctx.o", + "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", + "crypto/cmp/libcrypto-lib-cmp_hdr.o", + "crypto/cmp/libcrypto-lib-cmp_http.o", + "crypto/cmp/libcrypto-lib-cmp_msg.o", + "crypto/cmp/libcrypto-lib-cmp_protect.o", + "crypto/cmp/libcrypto-lib-cmp_server.o", + "crypto/cmp/libcrypto-lib-cmp_status.o", + "crypto/cmp/libcrypto-lib-cmp_util.o", + "crypto/cmp/libcrypto-lib-cmp_vfy.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/cms" => { + "deps" => [ + "crypto/cms/libcrypto-lib-cms_asn1.o", + "crypto/cms/libcrypto-lib-cms_att.o", + "crypto/cms/libcrypto-lib-cms_cd.o", + "crypto/cms/libcrypto-lib-cms_dd.o", + "crypto/cms/libcrypto-lib-cms_dh.o", + "crypto/cms/libcrypto-lib-cms_ec.o", + "crypto/cms/libcrypto-lib-cms_enc.o", + "crypto/cms/libcrypto-lib-cms_env.o", + "crypto/cms/libcrypto-lib-cms_err.o", + "crypto/cms/libcrypto-lib-cms_ess.o", + "crypto/cms/libcrypto-lib-cms_io.o", + "crypto/cms/libcrypto-lib-cms_kari.o", + "crypto/cms/libcrypto-lib-cms_lib.o", + "crypto/cms/libcrypto-lib-cms_pwri.o", + "crypto/cms/libcrypto-lib-cms_rsa.o", + "crypto/cms/libcrypto-lib-cms_sd.o", + "crypto/cms/libcrypto-lib-cms_smime.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/comp" => { + "deps" => [ + "crypto/comp/libcrypto-lib-c_brotli.o", + "crypto/comp/libcrypto-lib-c_zlib.o", + "crypto/comp/libcrypto-lib-c_zstd.o", + "crypto/comp/libcrypto-lib-comp_err.o", + "crypto/comp/libcrypto-lib-comp_lib.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/conf" => { + "deps" => [ + "crypto/conf/libcrypto-lib-conf_api.o", + "crypto/conf/libcrypto-lib-conf_def.o", + "crypto/conf/libcrypto-lib-conf_err.o", + "crypto/conf/libcrypto-lib-conf_lib.o", + "crypto/conf/libcrypto-lib-conf_mall.o", + "crypto/conf/libcrypto-lib-conf_mod.o", + "crypto/conf/libcrypto-lib-conf_sap.o", + "crypto/conf/libcrypto-lib-conf_ssl.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/crmf" => { + "deps" => [ + "crypto/crmf/libcrypto-lib-crmf_asn.o", + "crypto/crmf/libcrypto-lib-crmf_err.o", + "crypto/crmf/libcrypto-lib-crmf_lib.o", + "crypto/crmf/libcrypto-lib-crmf_pbm.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/ct" => { + "deps" => [ + "crypto/ct/libcrypto-lib-ct_b64.o", + "crypto/ct/libcrypto-lib-ct_err.o", + "crypto/ct/libcrypto-lib-ct_log.o", + "crypto/ct/libcrypto-lib-ct_oct.o", + "crypto/ct/libcrypto-lib-ct_policy.o", + "crypto/ct/libcrypto-lib-ct_prn.o", + "crypto/ct/libcrypto-lib-ct_sct.o", + "crypto/ct/libcrypto-lib-ct_sct_ctx.o", + "crypto/ct/libcrypto-lib-ct_vfy.o", + "crypto/ct/libcrypto-lib-ct_x509v3.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/des" => { + "deps" => [ + "crypto/des/libcrypto-lib-cbc_cksm.o", + "crypto/des/libcrypto-lib-cbc_enc.o", + "crypto/des/libcrypto-lib-cfb64ede.o", + "crypto/des/libcrypto-lib-cfb64enc.o", + "crypto/des/libcrypto-lib-cfb_enc.o", + "crypto/des/libcrypto-lib-des_enc.o", + "crypto/des/libcrypto-lib-ecb3_enc.o", + "crypto/des/libcrypto-lib-ecb_enc.o", + "crypto/des/libcrypto-lib-fcrypt.o", + "crypto/des/libcrypto-lib-fcrypt_b.o", + "crypto/des/libcrypto-lib-ofb64ede.o", + "crypto/des/libcrypto-lib-ofb64enc.o", + "crypto/des/libcrypto-lib-ofb_enc.o", + "crypto/des/libcrypto-lib-pcbc_enc.o", + "crypto/des/libcrypto-lib-qud_cksm.o", + "crypto/des/libcrypto-lib-rand_key.o", + "crypto/des/libcrypto-lib-set_key.o", + "crypto/des/libcrypto-lib-str2key.o", + "crypto/des/libcrypto-lib-xcbc_enc.o", + "crypto/des/libfips-lib-des_enc.o", + "crypto/des/libfips-lib-ecb3_enc.o", + "crypto/des/libfips-lib-fcrypt_b.o", + "crypto/des/libfips-lib-set_key.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/dh" => { + "deps" => [ + "crypto/dh/libcrypto-lib-dh_ameth.o", + "crypto/dh/libcrypto-lib-dh_asn1.o", + "crypto/dh/libcrypto-lib-dh_backend.o", + "crypto/dh/libcrypto-lib-dh_check.o", + "crypto/dh/libcrypto-lib-dh_depr.o", + "crypto/dh/libcrypto-lib-dh_err.o", + "crypto/dh/libcrypto-lib-dh_gen.o", + "crypto/dh/libcrypto-lib-dh_group_params.o", + "crypto/dh/libcrypto-lib-dh_kdf.o", + "crypto/dh/libcrypto-lib-dh_key.o", + "crypto/dh/libcrypto-lib-dh_lib.o", + "crypto/dh/libcrypto-lib-dh_meth.o", + "crypto/dh/libcrypto-lib-dh_pmeth.o", + "crypto/dh/libcrypto-lib-dh_prn.o", + "crypto/dh/libcrypto-lib-dh_rfc5114.o", + "crypto/dh/libfips-lib-dh_backend.o", + "crypto/dh/libfips-lib-dh_check.o", + "crypto/dh/libfips-lib-dh_gen.o", + "crypto/dh/libfips-lib-dh_group_params.o", + "crypto/dh/libfips-lib-dh_kdf.o", + "crypto/dh/libfips-lib-dh_key.o", + "crypto/dh/libfips-lib-dh_lib.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/dsa" => { + "deps" => [ + "crypto/dsa/libcrypto-lib-dsa_ameth.o", + "crypto/dsa/libcrypto-lib-dsa_asn1.o", + "crypto/dsa/libcrypto-lib-dsa_backend.o", + "crypto/dsa/libcrypto-lib-dsa_check.o", + "crypto/dsa/libcrypto-lib-dsa_depr.o", + "crypto/dsa/libcrypto-lib-dsa_err.o", + "crypto/dsa/libcrypto-lib-dsa_gen.o", + "crypto/dsa/libcrypto-lib-dsa_key.o", + "crypto/dsa/libcrypto-lib-dsa_lib.o", + "crypto/dsa/libcrypto-lib-dsa_meth.o", + "crypto/dsa/libcrypto-lib-dsa_ossl.o", + "crypto/dsa/libcrypto-lib-dsa_pmeth.o", + "crypto/dsa/libcrypto-lib-dsa_prn.o", + "crypto/dsa/libcrypto-lib-dsa_sign.o", + "crypto/dsa/libcrypto-lib-dsa_vrf.o", + "crypto/dsa/libfips-lib-dsa_backend.o", + "crypto/dsa/libfips-lib-dsa_check.o", + "crypto/dsa/libfips-lib-dsa_gen.o", + "crypto/dsa/libfips-lib-dsa_key.o", + "crypto/dsa/libfips-lib-dsa_lib.o", + "crypto/dsa/libfips-lib-dsa_ossl.o", + "crypto/dsa/libfips-lib-dsa_sign.o", + "crypto/dsa/libfips-lib-dsa_vrf.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/dso" => { + "deps" => [ + "crypto/dso/libcrypto-lib-dso_dl.o", + "crypto/dso/libcrypto-lib-dso_dlfcn.o", + "crypto/dso/libcrypto-lib-dso_err.o", + "crypto/dso/libcrypto-lib-dso_lib.o", + "crypto/dso/libcrypto-lib-dso_openssl.o", + "crypto/dso/libcrypto-lib-dso_vms.o", + "crypto/dso/libcrypto-lib-dso_win32.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/ec" => { + "deps" => [ + "crypto/ec/libcrypto-lib-curve25519.o", + "crypto/ec/libcrypto-lib-ec2_oct.o", + "crypto/ec/libcrypto-lib-ec2_smpl.o", + "crypto/ec/libcrypto-lib-ec_ameth.o", + "crypto/ec/libcrypto-lib-ec_asn1.o", + "crypto/ec/libcrypto-lib-ec_backend.o", + "crypto/ec/libcrypto-lib-ec_check.o", + "crypto/ec/libcrypto-lib-ec_curve.o", + "crypto/ec/libcrypto-lib-ec_cvt.o", + "crypto/ec/libcrypto-lib-ec_deprecated.o", + "crypto/ec/libcrypto-lib-ec_err.o", + "crypto/ec/libcrypto-lib-ec_key.o", + "crypto/ec/libcrypto-lib-ec_kmeth.o", + "crypto/ec/libcrypto-lib-ec_lib.o", + "crypto/ec/libcrypto-lib-ec_mult.o", + "crypto/ec/libcrypto-lib-ec_oct.o", + "crypto/ec/libcrypto-lib-ec_pmeth.o", + "crypto/ec/libcrypto-lib-ec_print.o", + "crypto/ec/libcrypto-lib-ecdh_kdf.o", + "crypto/ec/libcrypto-lib-ecdh_ossl.o", + "crypto/ec/libcrypto-lib-ecdsa_ossl.o", + "crypto/ec/libcrypto-lib-ecdsa_sign.o", + "crypto/ec/libcrypto-lib-ecdsa_vrf.o", + "crypto/ec/libcrypto-lib-eck_prn.o", + "crypto/ec/libcrypto-lib-ecp_mont.o", + "crypto/ec/libcrypto-lib-ecp_nist.o", + "crypto/ec/libcrypto-lib-ecp_oct.o", + "crypto/ec/libcrypto-lib-ecp_smpl.o", + "crypto/ec/libcrypto-lib-ecx_backend.o", + "crypto/ec/libcrypto-lib-ecx_key.o", + "crypto/ec/libcrypto-lib-ecx_meth.o", + "crypto/ec/libfips-lib-curve25519.o", + "crypto/ec/libfips-lib-ec2_oct.o", + "crypto/ec/libfips-lib-ec2_smpl.o", + "crypto/ec/libfips-lib-ec_asn1.o", + "crypto/ec/libfips-lib-ec_backend.o", + "crypto/ec/libfips-lib-ec_check.o", + "crypto/ec/libfips-lib-ec_curve.o", + "crypto/ec/libfips-lib-ec_cvt.o", + "crypto/ec/libfips-lib-ec_key.o", + "crypto/ec/libfips-lib-ec_kmeth.o", + "crypto/ec/libfips-lib-ec_lib.o", + "crypto/ec/libfips-lib-ec_mult.o", + "crypto/ec/libfips-lib-ec_oct.o", + "crypto/ec/libfips-lib-ecdh_kdf.o", + "crypto/ec/libfips-lib-ecdh_ossl.o", + "crypto/ec/libfips-lib-ecdsa_ossl.o", + "crypto/ec/libfips-lib-ecdsa_sign.o", + "crypto/ec/libfips-lib-ecdsa_vrf.o", + "crypto/ec/libfips-lib-ecp_mont.o", + "crypto/ec/libfips-lib-ecp_nist.o", + "crypto/ec/libfips-lib-ecp_oct.o", + "crypto/ec/libfips-lib-ecp_smpl.o", + "crypto/ec/libfips-lib-ecx_backend.o", + "crypto/ec/libfips-lib-ecx_key.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ec/curve448" => { + "deps" => [ + "crypto/ec/curve448/libcrypto-lib-curve448.o", + "crypto/ec/curve448/libcrypto-lib-curve448_tables.o", + "crypto/ec/curve448/libcrypto-lib-eddsa.o", + "crypto/ec/curve448/libcrypto-lib-f_generic.o", + "crypto/ec/curve448/libcrypto-lib-scalar.o", + "crypto/ec/curve448/libfips-lib-curve448.o", + "crypto/ec/curve448/libfips-lib-curve448_tables.o", + "crypto/ec/curve448/libfips-lib-eddsa.o", + "crypto/ec/curve448/libfips-lib-f_generic.o", + "crypto/ec/curve448/libfips-lib-scalar.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ec/curve448/arch_32" => { + "deps" => [ + "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o", + "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ec/curve448/arch_64" => { + "deps" => [ + "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o", + "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/encode_decode" => { + "deps" => [ + "crypto/encode_decode/libcrypto-lib-decoder_err.o", + "crypto/encode_decode/libcrypto-lib-decoder_lib.o", + "crypto/encode_decode/libcrypto-lib-decoder_meth.o", + "crypto/encode_decode/libcrypto-lib-decoder_pkey.o", + "crypto/encode_decode/libcrypto-lib-encoder_err.o", + "crypto/encode_decode/libcrypto-lib-encoder_lib.o", + "crypto/encode_decode/libcrypto-lib-encoder_meth.o", + "crypto/encode_decode/libcrypto-lib-encoder_pkey.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/engine" => { + "deps" => [ + "crypto/engine/libcrypto-lib-eng_all.o", + "crypto/engine/libcrypto-lib-eng_cnf.o", + "crypto/engine/libcrypto-lib-eng_ctrl.o", + "crypto/engine/libcrypto-lib-eng_dyn.o", + "crypto/engine/libcrypto-lib-eng_err.o", + "crypto/engine/libcrypto-lib-eng_fat.o", + "crypto/engine/libcrypto-lib-eng_init.o", + "crypto/engine/libcrypto-lib-eng_lib.o", + "crypto/engine/libcrypto-lib-eng_list.o", + "crypto/engine/libcrypto-lib-eng_openssl.o", + "crypto/engine/libcrypto-lib-eng_pkey.o", + "crypto/engine/libcrypto-lib-eng_rdrand.o", + "crypto/engine/libcrypto-lib-eng_table.o", + "crypto/engine/libcrypto-lib-tb_asnmth.o", + "crypto/engine/libcrypto-lib-tb_cipher.o", + "crypto/engine/libcrypto-lib-tb_dh.o", + "crypto/engine/libcrypto-lib-tb_digest.o", + "crypto/engine/libcrypto-lib-tb_dsa.o", + "crypto/engine/libcrypto-lib-tb_eckey.o", + "crypto/engine/libcrypto-lib-tb_pkmeth.o", + "crypto/engine/libcrypto-lib-tb_rand.o", + "crypto/engine/libcrypto-lib-tb_rsa.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/err" => { + "deps" => [ + "crypto/err/libcrypto-lib-err.o", + "crypto/err/libcrypto-lib-err_all.o", + "crypto/err/libcrypto-lib-err_all_legacy.o", + "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/ess" => { + "deps" => [ + "crypto/ess/libcrypto-lib-ess_asn1.o", + "crypto/ess/libcrypto-lib-ess_err.o", + "crypto/ess/libcrypto-lib-ess_lib.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/evp" => { + "deps" => [ + "crypto/evp/libcrypto-lib-asymcipher.o", + "crypto/evp/libcrypto-lib-bio_b64.o", + "crypto/evp/libcrypto-lib-bio_enc.o", + "crypto/evp/libcrypto-lib-bio_md.o", + "crypto/evp/libcrypto-lib-bio_ok.o", + "crypto/evp/libcrypto-lib-c_allc.o", + "crypto/evp/libcrypto-lib-c_alld.o", + "crypto/evp/libcrypto-lib-cmeth_lib.o", + "crypto/evp/libcrypto-lib-ctrl_params_translate.o", + "crypto/evp/libcrypto-lib-dh_ctrl.o", + "crypto/evp/libcrypto-lib-dh_support.o", + "crypto/evp/libcrypto-lib-digest.o", + "crypto/evp/libcrypto-lib-dsa_ctrl.o", + "crypto/evp/libcrypto-lib-e_aes.o", + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o", + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o", + "crypto/evp/libcrypto-lib-e_aria.o", + "crypto/evp/libcrypto-lib-e_bf.o", + "crypto/evp/libcrypto-lib-e_camellia.o", + "crypto/evp/libcrypto-lib-e_cast.o", + "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o", + "crypto/evp/libcrypto-lib-e_des.o", + "crypto/evp/libcrypto-lib-e_des3.o", + "crypto/evp/libcrypto-lib-e_idea.o", + "crypto/evp/libcrypto-lib-e_null.o", + "crypto/evp/libcrypto-lib-e_old.o", + "crypto/evp/libcrypto-lib-e_rc2.o", + "crypto/evp/libcrypto-lib-e_rc4.o", + "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o", + "crypto/evp/libcrypto-lib-e_rc5.o", + "crypto/evp/libcrypto-lib-e_seed.o", + "crypto/evp/libcrypto-lib-e_sm4.o", + "crypto/evp/libcrypto-lib-e_xcbc_d.o", + "crypto/evp/libcrypto-lib-ec_ctrl.o", + "crypto/evp/libcrypto-lib-ec_support.o", + "crypto/evp/libcrypto-lib-encode.o", + "crypto/evp/libcrypto-lib-evp_cnf.o", + "crypto/evp/libcrypto-lib-evp_enc.o", + "crypto/evp/libcrypto-lib-evp_err.o", + "crypto/evp/libcrypto-lib-evp_fetch.o", + "crypto/evp/libcrypto-lib-evp_key.o", + "crypto/evp/libcrypto-lib-evp_lib.o", + "crypto/evp/libcrypto-lib-evp_pbe.o", + "crypto/evp/libcrypto-lib-evp_pkey.o", + "crypto/evp/libcrypto-lib-evp_rand.o", + "crypto/evp/libcrypto-lib-evp_utils.o", + "crypto/evp/libcrypto-lib-exchange.o", + "crypto/evp/libcrypto-lib-kdf_lib.o", + "crypto/evp/libcrypto-lib-kdf_meth.o", + "crypto/evp/libcrypto-lib-kem.o", + "crypto/evp/libcrypto-lib-keymgmt_lib.o", + "crypto/evp/libcrypto-lib-keymgmt_meth.o", + "crypto/evp/libcrypto-lib-legacy_blake2.o", + "crypto/evp/libcrypto-lib-legacy_md4.o", + "crypto/evp/libcrypto-lib-legacy_md5.o", + "crypto/evp/libcrypto-lib-legacy_md5_sha1.o", + "crypto/evp/libcrypto-lib-legacy_mdc2.o", + "crypto/evp/libcrypto-lib-legacy_ripemd.o", + "crypto/evp/libcrypto-lib-legacy_sha.o", + "crypto/evp/libcrypto-lib-legacy_wp.o", + "crypto/evp/libcrypto-lib-m_null.o", + "crypto/evp/libcrypto-lib-m_sigver.o", + "crypto/evp/libcrypto-lib-mac_lib.o", + "crypto/evp/libcrypto-lib-mac_meth.o", + "crypto/evp/libcrypto-lib-names.o", + "crypto/evp/libcrypto-lib-p5_crpt.o", + "crypto/evp/libcrypto-lib-p5_crpt2.o", + "crypto/evp/libcrypto-lib-p_dec.o", + "crypto/evp/libcrypto-lib-p_enc.o", + "crypto/evp/libcrypto-lib-p_legacy.o", + "crypto/evp/libcrypto-lib-p_lib.o", + "crypto/evp/libcrypto-lib-p_open.o", + "crypto/evp/libcrypto-lib-p_seal.o", + "crypto/evp/libcrypto-lib-p_sign.o", + "crypto/evp/libcrypto-lib-p_verify.o", + "crypto/evp/libcrypto-lib-pbe_scrypt.o", + "crypto/evp/libcrypto-lib-pmeth_check.o", + "crypto/evp/libcrypto-lib-pmeth_gn.o", + "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", + "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", + "crypto/evp/libfips-lib-asymcipher.o", + "crypto/evp/libfips-lib-dh_support.o", + "crypto/evp/libfips-lib-digest.o", + "crypto/evp/libfips-lib-ec_support.o", + "crypto/evp/libfips-lib-evp_enc.o", + "crypto/evp/libfips-lib-evp_fetch.o", + "crypto/evp/libfips-lib-evp_lib.o", + "crypto/evp/libfips-lib-evp_rand.o", + "crypto/evp/libfips-lib-evp_utils.o", + "crypto/evp/libfips-lib-exchange.o", + "crypto/evp/libfips-lib-kdf_lib.o", + "crypto/evp/libfips-lib-kdf_meth.o", + "crypto/evp/libfips-lib-kem.o", + "crypto/evp/libfips-lib-keymgmt_lib.o", + "crypto/evp/libfips-lib-keymgmt_meth.o", + "crypto/evp/libfips-lib-mac_lib.o", + "crypto/evp/libfips-lib-mac_meth.o", + "crypto/evp/libfips-lib-p_lib.o", + "crypto/evp/libfips-lib-pmeth_check.o", + "crypto/evp/libfips-lib-pmeth_gn.o", + "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ffc" => { + "deps" => [ + "crypto/ffc/libcrypto-lib-ffc_backend.o", + "crypto/ffc/libcrypto-lib-ffc_dh.o", + "crypto/ffc/libcrypto-lib-ffc_key_generate.o", + "crypto/ffc/libcrypto-lib-ffc_key_validate.o", + "crypto/ffc/libcrypto-lib-ffc_params.o", + "crypto/ffc/libcrypto-lib-ffc_params_generate.o", + "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/ffc/libfips-lib-ffc_backend.o", + "crypto/ffc/libfips-lib-ffc_dh.o", + "crypto/ffc/libfips-lib-ffc_key_generate.o", + "crypto/ffc/libfips-lib-ffc_key_validate.o", + "crypto/ffc/libfips-lib-ffc_params.o", + "crypto/ffc/libfips-lib-ffc_params_generate.o", + "crypto/ffc/libfips-lib-ffc_params_validate.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/hmac" => { + "deps" => [ + "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hmac/libfips-lib-hmac.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/http" => { + "deps" => [ + "crypto/http/libcrypto-lib-http_client.o", + "crypto/http/libcrypto-lib-http_err.o", + "crypto/http/libcrypto-lib-http_lib.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/idea" => { + "deps" => [ + "crypto/idea/libcrypto-lib-i_cbc.o", + "crypto/idea/libcrypto-lib-i_cfb64.o", + "crypto/idea/libcrypto-lib-i_ecb.o", + "crypto/idea/libcrypto-lib-i_ofb64.o", + "crypto/idea/libcrypto-lib-i_skey.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/kdf" => { + "deps" => [ + "crypto/kdf/libcrypto-lib-kdf_err.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/lhash" => { + "deps" => [ + "crypto/lhash/libcrypto-lib-lh_stats.o", + "crypto/lhash/libcrypto-lib-lhash.o", + "crypto/lhash/libfips-lib-lhash.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/md4" => { + "deps" => [ + "crypto/md4/libcrypto-lib-md4_dgst.o", + "crypto/md4/libcrypto-lib-md4_one.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/md5" => { + "deps" => [ + "crypto/md5/libcrypto-lib-md5_dgst.o", + "crypto/md5/libcrypto-lib-md5_one.o", + "crypto/md5/libcrypto-lib-md5_sha1.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/mdc2" => { + "deps" => [ + "crypto/mdc2/libcrypto-lib-mdc2_one.o", + "crypto/mdc2/libcrypto-lib-mdc2dgst.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/modes" => { + "deps" => [ + "crypto/modes/libcrypto-lib-aes-gcm-riscv64-zvkb-zvkg-zvkned.o", + "crypto/modes/libcrypto-lib-cbc128.o", + "crypto/modes/libcrypto-lib-ccm128.o", + "crypto/modes/libcrypto-lib-cfb128.o", + "crypto/modes/libcrypto-lib-ctr128.o", + "crypto/modes/libcrypto-lib-cts128.o", + "crypto/modes/libcrypto-lib-gcm128.o", + "crypto/modes/libcrypto-lib-ghash-riscv64-zvkb-zvbc.o", + "crypto/modes/libcrypto-lib-ghash-riscv64-zvkg.o", + "crypto/modes/libcrypto-lib-ghash-riscv64.o", + "crypto/modes/libcrypto-lib-ocb128.o", + "crypto/modes/libcrypto-lib-ofb128.o", + "crypto/modes/libcrypto-lib-siv128.o", + "crypto/modes/libcrypto-lib-wrap128.o", + "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", + "crypto/modes/libfips-lib-aes-gcm-riscv64-zvkb-zvkg-zvkned.o", + "crypto/modes/libfips-lib-cbc128.o", + "crypto/modes/libfips-lib-ccm128.o", + "crypto/modes/libfips-lib-cfb128.o", + "crypto/modes/libfips-lib-ctr128.o", + "crypto/modes/libfips-lib-gcm128.o", + "crypto/modes/libfips-lib-ghash-riscv64-zvkb-zvbc.o", + "crypto/modes/libfips-lib-ghash-riscv64-zvkg.o", + "crypto/modes/libfips-lib-ghash-riscv64.o", + "crypto/modes/libfips-lib-ofb128.o", + "crypto/modes/libfips-lib-wrap128.o", + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/objects" => { + "deps" => [ + "crypto/objects/libcrypto-lib-o_names.o", + "crypto/objects/libcrypto-lib-obj_dat.o", + "crypto/objects/libcrypto-lib-obj_err.o", + "crypto/objects/libcrypto-lib-obj_lib.o", + "crypto/objects/libcrypto-lib-obj_xref.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/ocsp" => { + "deps" => [ + "crypto/ocsp/libcrypto-lib-ocsp_asn.o", + "crypto/ocsp/libcrypto-lib-ocsp_cl.o", + "crypto/ocsp/libcrypto-lib-ocsp_err.o", + "crypto/ocsp/libcrypto-lib-ocsp_ext.o", + "crypto/ocsp/libcrypto-lib-ocsp_http.o", + "crypto/ocsp/libcrypto-lib-ocsp_lib.o", + "crypto/ocsp/libcrypto-lib-ocsp_prn.o", + "crypto/ocsp/libcrypto-lib-ocsp_srv.o", + "crypto/ocsp/libcrypto-lib-ocsp_vfy.o", + "crypto/ocsp/libcrypto-lib-v3_ocsp.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/pem" => { + "deps" => [ + "crypto/pem/libcrypto-lib-pem_all.o", + "crypto/pem/libcrypto-lib-pem_err.o", + "crypto/pem/libcrypto-lib-pem_info.o", + "crypto/pem/libcrypto-lib-pem_lib.o", + "crypto/pem/libcrypto-lib-pem_oth.o", + "crypto/pem/libcrypto-lib-pem_pk8.o", + "crypto/pem/libcrypto-lib-pem_pkey.o", + "crypto/pem/libcrypto-lib-pem_sign.o", + "crypto/pem/libcrypto-lib-pem_x509.o", + "crypto/pem/libcrypto-lib-pem_xaux.o", + "crypto/pem/libcrypto-lib-pvkfmt.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/pkcs12" => { + "deps" => [ + "crypto/pkcs12/libcrypto-lib-p12_add.o", + "crypto/pkcs12/libcrypto-lib-p12_asn.o", + "crypto/pkcs12/libcrypto-lib-p12_attr.o", + "crypto/pkcs12/libcrypto-lib-p12_crpt.o", + "crypto/pkcs12/libcrypto-lib-p12_crt.o", + "crypto/pkcs12/libcrypto-lib-p12_decr.o", + "crypto/pkcs12/libcrypto-lib-p12_init.o", + "crypto/pkcs12/libcrypto-lib-p12_key.o", + "crypto/pkcs12/libcrypto-lib-p12_kiss.o", + "crypto/pkcs12/libcrypto-lib-p12_mutl.o", + "crypto/pkcs12/libcrypto-lib-p12_npas.o", + "crypto/pkcs12/libcrypto-lib-p12_p8d.o", + "crypto/pkcs12/libcrypto-lib-p12_p8e.o", + "crypto/pkcs12/libcrypto-lib-p12_sbag.o", + "crypto/pkcs12/libcrypto-lib-p12_utl.o", + "crypto/pkcs12/libcrypto-lib-pk12err.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/pkcs7" => { + "deps" => [ + "crypto/pkcs7/libcrypto-lib-bio_pk7.o", + "crypto/pkcs7/libcrypto-lib-pk7_asn1.o", + "crypto/pkcs7/libcrypto-lib-pk7_attr.o", + "crypto/pkcs7/libcrypto-lib-pk7_doit.o", + "crypto/pkcs7/libcrypto-lib-pk7_lib.o", + "crypto/pkcs7/libcrypto-lib-pk7_mime.o", + "crypto/pkcs7/libcrypto-lib-pk7_smime.o", + "crypto/pkcs7/libcrypto-lib-pkcs7err.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/poly1305" => { + "deps" => [ + "crypto/poly1305/libcrypto-lib-poly1305.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/property" => { + "deps" => [ + "crypto/property/libcrypto-lib-defn_cache.o", + "crypto/property/libcrypto-lib-property.o", + "crypto/property/libcrypto-lib-property_err.o", + "crypto/property/libcrypto-lib-property_parse.o", + "crypto/property/libcrypto-lib-property_query.o", + "crypto/property/libcrypto-lib-property_string.o", + "crypto/property/libfips-lib-defn_cache.o", + "crypto/property/libfips-lib-property.o", + "crypto/property/libfips-lib-property_parse.o", + "crypto/property/libfips-lib-property_query.o", + "crypto/property/libfips-lib-property_string.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/rand" => { + "deps" => [ + "crypto/rand/libcrypto-lib-prov_seed.o", + "crypto/rand/libcrypto-lib-rand_deprecated.o", + "crypto/rand/libcrypto-lib-rand_err.o", + "crypto/rand/libcrypto-lib-rand_lib.o", + "crypto/rand/libcrypto-lib-rand_meth.o", + "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", + "crypto/rand/libcrypto-lib-randfile.o", + "crypto/rand/libfips-lib-rand_lib.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/rc2" => { + "deps" => [ + "crypto/rc2/libcrypto-lib-rc2_cbc.o", + "crypto/rc2/libcrypto-lib-rc2_ecb.o", + "crypto/rc2/libcrypto-lib-rc2_skey.o", + "crypto/rc2/libcrypto-lib-rc2cfb64.o", + "crypto/rc2/libcrypto-lib-rc2ofb64.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/rc4" => { + "deps" => [ + "crypto/rc4/libcrypto-lib-rc4_enc.o", + "crypto/rc4/libcrypto-lib-rc4_skey.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/ripemd" => { + "deps" => [ + "crypto/ripemd/libcrypto-lib-rmd_dgst.o", + "crypto/ripemd/libcrypto-lib-rmd_one.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/rsa" => { + "deps" => [ + "crypto/rsa/libcrypto-lib-rsa_ameth.o", + "crypto/rsa/libcrypto-lib-rsa_asn1.o", + "crypto/rsa/libcrypto-lib-rsa_backend.o", + "crypto/rsa/libcrypto-lib-rsa_chk.o", + "crypto/rsa/libcrypto-lib-rsa_crpt.o", + "crypto/rsa/libcrypto-lib-rsa_depr.o", + "crypto/rsa/libcrypto-lib-rsa_err.o", + "crypto/rsa/libcrypto-lib-rsa_gen.o", + "crypto/rsa/libcrypto-lib-rsa_lib.o", + "crypto/rsa/libcrypto-lib-rsa_meth.o", + "crypto/rsa/libcrypto-lib-rsa_mp.o", + "crypto/rsa/libcrypto-lib-rsa_mp_names.o", + "crypto/rsa/libcrypto-lib-rsa_none.o", + "crypto/rsa/libcrypto-lib-rsa_oaep.o", + "crypto/rsa/libcrypto-lib-rsa_ossl.o", + "crypto/rsa/libcrypto-lib-rsa_pk1.o", + "crypto/rsa/libcrypto-lib-rsa_pmeth.o", + "crypto/rsa/libcrypto-lib-rsa_prn.o", + "crypto/rsa/libcrypto-lib-rsa_pss.o", + "crypto/rsa/libcrypto-lib-rsa_saos.o", + "crypto/rsa/libcrypto-lib-rsa_schemes.o", + "crypto/rsa/libcrypto-lib-rsa_sign.o", + "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o", + "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o", + "crypto/rsa/libcrypto-lib-rsa_x931.o", + "crypto/rsa/libcrypto-lib-rsa_x931g.o", + "crypto/rsa/libfips-lib-rsa_acvp_test_params.o", + "crypto/rsa/libfips-lib-rsa_backend.o", + "crypto/rsa/libfips-lib-rsa_chk.o", + "crypto/rsa/libfips-lib-rsa_crpt.o", + "crypto/rsa/libfips-lib-rsa_gen.o", + "crypto/rsa/libfips-lib-rsa_lib.o", + "crypto/rsa/libfips-lib-rsa_mp_names.o", + "crypto/rsa/libfips-lib-rsa_none.o", + "crypto/rsa/libfips-lib-rsa_oaep.o", + "crypto/rsa/libfips-lib-rsa_ossl.o", + "crypto/rsa/libfips-lib-rsa_pk1.o", + "crypto/rsa/libfips-lib-rsa_pss.o", + "crypto/rsa/libfips-lib-rsa_schemes.o", + "crypto/rsa/libfips-lib-rsa_sign.o", + "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o", + "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o", + "crypto/rsa/libfips-lib-rsa_x931.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/seed" => { + "deps" => [ + "crypto/seed/libcrypto-lib-seed.o", + "crypto/seed/libcrypto-lib-seed_cbc.o", + "crypto/seed/libcrypto-lib-seed_cfb.o", + "crypto/seed/libcrypto-lib-seed_ecb.o", + "crypto/seed/libcrypto-lib-seed_ofb.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/sha" => { + "deps" => [ + "crypto/sha/libcrypto-lib-keccak1600.o", + "crypto/sha/libcrypto-lib-sha1_one.o", + "crypto/sha/libcrypto-lib-sha1dgst.o", + "crypto/sha/libcrypto-lib-sha256-riscv64-zvkb-zvknha_or_zvknhb.o", + "crypto/sha/libcrypto-lib-sha256.o", + "crypto/sha/libcrypto-lib-sha3.o", + "crypto/sha/libcrypto-lib-sha512-riscv64-zvkb-zvknhb.o", + "crypto/sha/libcrypto-lib-sha512.o", + "crypto/sha/libcrypto-lib-sha_riscv.o", + "crypto/sha/libfips-lib-keccak1600.o", + "crypto/sha/libfips-lib-sha1dgst.o", + "crypto/sha/libfips-lib-sha256-riscv64-zvkb-zvknha_or_zvknhb.o", + "crypto/sha/libfips-lib-sha256.o", + "crypto/sha/libfips-lib-sha3.o", + "crypto/sha/libfips-lib-sha512-riscv64-zvkb-zvknhb.o", + "crypto/sha/libfips-lib-sha512.o", + "crypto/sha/libfips-lib-sha_riscv.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/siphash" => { + "deps" => [ + "crypto/siphash/libcrypto-lib-siphash.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/sm2" => { + "deps" => [ + "crypto/sm2/libcrypto-lib-sm2_crypt.o", + "crypto/sm2/libcrypto-lib-sm2_err.o", + "crypto/sm2/libcrypto-lib-sm2_key.o", + "crypto/sm2/libcrypto-lib-sm2_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/sm3" => { + "deps" => [ + "crypto/sm3/libcrypto-lib-legacy_sm3.o", + "crypto/sm3/libcrypto-lib-sm3-riscv64-zvksh.o", + "crypto/sm3/libcrypto-lib-sm3.o", + "crypto/sm3/libcrypto-lib-sm3_riscv.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/sm4" => { + "deps" => [ + "crypto/sm4/libcrypto-lib-sm4-riscv64-zvksed.o", + "crypto/sm4/libcrypto-lib-sm4.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/srp" => { + "deps" => [ + "crypto/srp/libcrypto-lib-srp_lib.o", + "crypto/srp/libcrypto-lib-srp_vfy.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/stack" => { + "deps" => [ + "crypto/stack/libcrypto-lib-stack.o", + "crypto/stack/libfips-lib-stack.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/store" => { + "deps" => [ + "crypto/store/libcrypto-lib-store_err.o", + "crypto/store/libcrypto-lib-store_init.o", + "crypto/store/libcrypto-lib-store_lib.o", + "crypto/store/libcrypto-lib-store_meth.o", + "crypto/store/libcrypto-lib-store_register.o", + "crypto/store/libcrypto-lib-store_result.o", + "crypto/store/libcrypto-lib-store_strings.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ts" => { + "deps" => [ + "crypto/ts/libcrypto-lib-ts_asn1.o", + "crypto/ts/libcrypto-lib-ts_conf.o", + "crypto/ts/libcrypto-lib-ts_err.o", + "crypto/ts/libcrypto-lib-ts_lib.o", + "crypto/ts/libcrypto-lib-ts_req_print.o", + "crypto/ts/libcrypto-lib-ts_req_utils.o", + "crypto/ts/libcrypto-lib-ts_rsp_print.o", + "crypto/ts/libcrypto-lib-ts_rsp_sign.o", + "crypto/ts/libcrypto-lib-ts_rsp_utils.o", + "crypto/ts/libcrypto-lib-ts_rsp_verify.o", + "crypto/ts/libcrypto-lib-ts_verify_ctx.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/txt_db" => { + "deps" => [ + "crypto/txt_db/libcrypto-lib-txt_db.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/ui" => { + "deps" => [ + "crypto/ui/libcrypto-lib-ui_err.o", + "crypto/ui/libcrypto-lib-ui_lib.o", + "crypto/ui/libcrypto-lib-ui_null.o", + "crypto/ui/libcrypto-lib-ui_openssl.o", + "crypto/ui/libcrypto-lib-ui_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/whrlpool" => { + "deps" => [ + "crypto/whrlpool/libcrypto-lib-wp_block.o", + "crypto/whrlpool/libcrypto-lib-wp_dgst.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/x509" => { + "deps" => [ + "crypto/x509/libcrypto-lib-by_dir.o", + "crypto/x509/libcrypto-lib-by_file.o", + "crypto/x509/libcrypto-lib-by_store.o", + "crypto/x509/libcrypto-lib-pcy_cache.o", + "crypto/x509/libcrypto-lib-pcy_data.o", + "crypto/x509/libcrypto-lib-pcy_lib.o", + "crypto/x509/libcrypto-lib-pcy_map.o", + "crypto/x509/libcrypto-lib-pcy_node.o", + "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", + "crypto/x509/libcrypto-lib-t_crl.o", + "crypto/x509/libcrypto-lib-t_req.o", + "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", + "crypto/x509/libcrypto-lib-v3_addr.o", + "crypto/x509/libcrypto-lib-v3_admis.o", + "crypto/x509/libcrypto-lib-v3_akeya.o", + "crypto/x509/libcrypto-lib-v3_akid.o", + "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", + "crypto/x509/libcrypto-lib-v3_bcons.o", + "crypto/x509/libcrypto-lib-v3_bitst.o", + "crypto/x509/libcrypto-lib-v3_conf.o", + "crypto/x509/libcrypto-lib-v3_cpols.o", + "crypto/x509/libcrypto-lib-v3_crld.o", + "crypto/x509/libcrypto-lib-v3_enum.o", + "crypto/x509/libcrypto-lib-v3_extku.o", + "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", + "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", + "crypto/x509/libcrypto-lib-v3_info.o", + "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", + "crypto/x509/libcrypto-lib-v3_ist.o", + "crypto/x509/libcrypto-lib-v3_lib.o", + "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", + "crypto/x509/libcrypto-lib-v3_pci.o", + "crypto/x509/libcrypto-lib-v3_pcia.o", + "crypto/x509/libcrypto-lib-v3_pcons.o", + "crypto/x509/libcrypto-lib-v3_pku.o", + "crypto/x509/libcrypto-lib-v3_pmaps.o", + "crypto/x509/libcrypto-lib-v3_prn.o", + "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", + "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", + "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", + "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", + "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", + "crypto/x509/libcrypto-lib-v3_utf8.o", + "crypto/x509/libcrypto-lib-v3_utl.o", + "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", + "crypto/x509/libcrypto-lib-x509_att.o", + "crypto/x509/libcrypto-lib-x509_cmp.o", + "crypto/x509/libcrypto-lib-x509_d2.o", + "crypto/x509/libcrypto-lib-x509_def.o", + "crypto/x509/libcrypto-lib-x509_err.o", + "crypto/x509/libcrypto-lib-x509_ext.o", + "crypto/x509/libcrypto-lib-x509_lu.o", + "crypto/x509/libcrypto-lib-x509_meth.o", + "crypto/x509/libcrypto-lib-x509_obj.o", + "crypto/x509/libcrypto-lib-x509_r2x.o", + "crypto/x509/libcrypto-lib-x509_req.o", + "crypto/x509/libcrypto-lib-x509_set.o", + "crypto/x509/libcrypto-lib-x509_trust.o", + "crypto/x509/libcrypto-lib-x509_txt.o", + "crypto/x509/libcrypto-lib-x509_v3.o", + "crypto/x509/libcrypto-lib-x509_vfy.o", + "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", + "crypto/x509/libcrypto-lib-x509cset.o", + "crypto/x509/libcrypto-lib-x509name.o", + "crypto/x509/libcrypto-lib-x509rset.o", + "crypto/x509/libcrypto-lib-x509spki.o", + "crypto/x509/libcrypto-lib-x509type.o", + "crypto/x509/libcrypto-lib-x_all.o", + "crypto/x509/libcrypto-lib-x_attrib.o", + "crypto/x509/libcrypto-lib-x_crl.o", + "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", + "crypto/x509/libcrypto-lib-x_name.o", + "crypto/x509/libcrypto-lib-x_pubkey.o", + "crypto/x509/libcrypto-lib-x_req.o", + "crypto/x509/libcrypto-lib-x_x509.o", + "crypto/x509/libcrypto-lib-x_x509a.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "engines" => { + "deps" => [ + "engines/libcrypto-lib-e_capi.o", + "engines/libcrypto-lib-e_padlock.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "providers" => { + "deps" => [ + "providers/libcrypto-lib-baseprov.o", + "providers/libcrypto-lib-defltprov.o", + "providers/libcrypto-lib-nullprov.o", + "providers/libcrypto-lib-prov_running.o", + "providers/libdefault.a" + ], + "products" => { + "dso" => [ + "providers/fips", + "providers/legacy" + ], + "lib" => [ + "libcrypto", + "providers/libfips.a", + "providers/liblegacy.a" + ] + } + }, + "providers/common" => { + "deps" => [ + "providers/common/libcommon-lib-provider_ctx.o", + "providers/common/libcommon-lib-provider_err.o", + "providers/common/libdefault-lib-bio_prov.o", + "providers/common/libdefault-lib-capabilities.o", + "providers/common/libdefault-lib-digest_to_nid.o", + "providers/common/libdefault-lib-provider_seeding.o", + "providers/common/libdefault-lib-provider_util.o", + "providers/common/libdefault-lib-securitycheck.o", + "providers/common/libdefault-lib-securitycheck_default.o", + "providers/common/libfips-lib-bio_prov.o", + "providers/common/libfips-lib-capabilities.o", + "providers/common/libfips-lib-digest_to_nid.o", + "providers/common/libfips-lib-provider_seeding.o", + "providers/common/libfips-lib-provider_util.o", + "providers/common/libfips-lib-securitycheck.o", + "providers/common/libfips-lib-securitycheck_fips.o" + ], + "products" => { + "lib" => [ + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/common/der" => { + "deps" => [ + "providers/common/der/libcommon-lib-der_digests_gen.o", + "providers/common/der/libcommon-lib-der_dsa_gen.o", + "providers/common/der/libcommon-lib-der_dsa_key.o", + "providers/common/der/libcommon-lib-der_dsa_sig.o", + "providers/common/der/libcommon-lib-der_ec_gen.o", + "providers/common/der/libcommon-lib-der_ec_key.o", + "providers/common/der/libcommon-lib-der_ec_sig.o", + "providers/common/der/libcommon-lib-der_ecx_gen.o", + "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", + "providers/common/der/libcommon-lib-der_rsa_gen.o", + "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", + "providers/common/der/libcommon-lib-der_wrap_gen.o", + "providers/common/der/libdefault-lib-der_rsa_sig.o", + "providers/common/der/libdefault-lib-der_sm2_gen.o", + "providers/common/der/libdefault-lib-der_sm2_key.o", + "providers/common/der/libdefault-lib-der_sm2_sig.o", + "providers/common/der/libfips-lib-der_rsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/fips" => { + "deps" => [ + "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", + "providers/fips/libfips-lib-fipsprov.o", + "providers/fips/libfips-lib-self_test.o", + "providers/fips/libfips-lib-self_test_kats.o" + ], + "products" => { + "dso" => [ + "providers/fips" + ], + "lib" => [ + "providers/libfips.a" + ] + } + }, + "providers/implementations/asymciphers" => { + "deps" => [ + "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o", + "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o", + "providers/implementations/asymciphers/libfips-lib-rsa_enc.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/ciphers" => { + "deps" => [ + "providers/implementations/ciphers/libcommon-lib-ciphercommon.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o", + "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_null.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_cts.o", + "providers/implementations/ciphers/libfips-lib-cipher_tdes.o", + "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o", + "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_des.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o" + ], + "products" => { + "lib" => [ + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a", + "providers/liblegacy.a" + ] + } + }, + "providers/implementations/digests" => { + "deps" => [ + "providers/implementations/digests/libcommon-lib-digestcommon.o", + "providers/implementations/digests/libdefault-lib-blake2_prov.o", + "providers/implementations/digests/libdefault-lib-blake2b_prov.o", + "providers/implementations/digests/libdefault-lib-blake2s_prov.o", + "providers/implementations/digests/libdefault-lib-md5_prov.o", + "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o", + "providers/implementations/digests/libdefault-lib-null_prov.o", + "providers/implementations/digests/libdefault-lib-ripemd_prov.o", + "providers/implementations/digests/libdefault-lib-sha2_prov.o", + "providers/implementations/digests/libdefault-lib-sha3_prov.o", + "providers/implementations/digests/libdefault-lib-sm3_prov.o", + "providers/implementations/digests/libfips-lib-sha2_prov.o", + "providers/implementations/digests/libfips-lib-sha3_prov.o", + "providers/implementations/digests/liblegacy-lib-md4_prov.o", + "providers/implementations/digests/liblegacy-lib-mdc2_prov.o", + "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", + "providers/implementations/digests/liblegacy-lib-wp_prov.o" + ], + "products" => { + "lib" => [ + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a", + "providers/liblegacy.a" + ] + } + }, + "providers/implementations/encode_decode" => { + "deps" => [ + "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o", + "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o", + "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o", + "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o", + "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o", + "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a" + ] + } + }, + "providers/implementations/exchange" => { + "deps" => [ + "providers/implementations/exchange/libdefault-lib-dh_exch.o", + "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", + "providers/implementations/exchange/libdefault-lib-ecx_exch.o", + "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/exchange/libfips-lib-dh_exch.o", + "providers/implementations/exchange/libfips-lib-ecdh_exch.o", + "providers/implementations/exchange/libfips-lib-ecx_exch.o", + "providers/implementations/exchange/libfips-lib-kdf_exch.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/kdfs" => { + "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", + "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", + "providers/implementations/kdfs/libdefault-lib-kbkdf.o", + "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", + "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", + "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o", + "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o", + "providers/implementations/kdfs/libdefault-lib-scrypt.o", + "providers/implementations/kdfs/libdefault-lib-sshkdf.o", + "providers/implementations/kdfs/libdefault-lib-sskdf.o", + "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", + "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kdfs/libfips-lib-hkdf.o", + "providers/implementations/kdfs/libfips-lib-kbkdf.o", + "providers/implementations/kdfs/libfips-lib-pbkdf2.o", + "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o", + "providers/implementations/kdfs/libfips-lib-sshkdf.o", + "providers/implementations/kdfs/libfips-lib-sskdf.o", + "providers/implementations/kdfs/libfips-lib-tls1_prf.o", + "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a", + "providers/liblegacy.a" + ] + } + }, + "providers/implementations/kem" => { + "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", + "providers/implementations/kem/libdefault-lib-rsa_kem.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a", + "providers/libtemplate.a" + ] + } + }, + "providers/implementations/keymgmt" => { + "deps" => [ + "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a", + "providers/libtemplate.a" + ] + } + }, + "providers/implementations/macs" => { + "deps" => [ + "providers/implementations/macs/libdefault-lib-blake2b_mac.o", + "providers/implementations/macs/libdefault-lib-blake2s_mac.o", + "providers/implementations/macs/libdefault-lib-cmac_prov.o", + "providers/implementations/macs/libdefault-lib-gmac_prov.o", + "providers/implementations/macs/libdefault-lib-hmac_prov.o", + "providers/implementations/macs/libdefault-lib-kmac_prov.o", + "providers/implementations/macs/libdefault-lib-poly1305_prov.o", + "providers/implementations/macs/libdefault-lib-siphash_prov.o", + "providers/implementations/macs/libfips-lib-cmac_prov.o", + "providers/implementations/macs/libfips-lib-gmac_prov.o", + "providers/implementations/macs/libfips-lib-hmac_prov.o", + "providers/implementations/macs/libfips-lib-kmac_prov.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/rands" => { + "deps" => [ + "providers/implementations/rands/libdefault-lib-drbg.o", + "providers/implementations/rands/libdefault-lib-drbg_ctr.o", + "providers/implementations/rands/libdefault-lib-drbg_hash.o", + "providers/implementations/rands/libdefault-lib-drbg_hmac.o", + "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", + "providers/implementations/rands/libdefault-lib-test_rng.o", + "providers/implementations/rands/libfips-lib-drbg.o", + "providers/implementations/rands/libfips-lib-drbg_ctr.o", + "providers/implementations/rands/libfips-lib-drbg_hash.o", + "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", + "providers/implementations/rands/libfips-lib-test_rng.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/rands/seeding" => { + "deps" => [ + "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", + "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", + "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o", + "providers/implementations/rands/seeding/libdefault-lib-rand_win.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a" + ] + } + }, + "providers/implementations/signature" => { + "deps" => [ + "providers/implementations/signature/libdefault-lib-dsa_sig.o", + "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", + "providers/implementations/signature/libdefault-lib-eddsa_sig.o", + "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", + "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", + "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/signature/libfips-lib-dsa_sig.o", + "providers/implementations/signature/libfips-lib-ecdsa_sig.o", + "providers/implementations/signature/libfips-lib-eddsa_sig.o", + "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/storemgmt" => { + "deps" => [ + "providers/implementations/storemgmt/libdefault-lib-file_store.o", + "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a" + ] + } + }, + "ssl" => { + "deps" => [ + "ssl/libssl-lib-bio_ssl.o", + "ssl/libssl-lib-d1_lib.o", + "ssl/libssl-lib-d1_msg.o", + "ssl/libssl-lib-d1_srtp.o", + "ssl/libssl-lib-methods.o", + "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", + "ssl/libssl-lib-s3_enc.o", + "ssl/libssl-lib-s3_lib.o", + "ssl/libssl-lib-s3_msg.o", + "ssl/libssl-lib-ssl_asn1.o", + "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", + "ssl/libssl-lib-ssl_ciph.o", + "ssl/libssl-lib-ssl_conf.o", + "ssl/libssl-lib-ssl_err_legacy.o", + "ssl/libssl-lib-ssl_init.o", + "ssl/libssl-lib-ssl_lib.o", + "ssl/libssl-lib-ssl_mcnf.o", + "ssl/libssl-lib-ssl_rsa.o", + "ssl/libssl-lib-ssl_rsa_legacy.o", + "ssl/libssl-lib-ssl_sess.o", + "ssl/libssl-lib-ssl_stat.o", + "ssl/libssl-lib-ssl_txt.o", + "ssl/libssl-lib-ssl_utst.o", + "ssl/libssl-lib-t1_enc.o", + "ssl/libssl-lib-t1_lib.o", + "ssl/libssl-lib-t1_trce.o", + "ssl/libssl-lib-tls13_enc.o", + "ssl/libssl-lib-tls_depr.o", + "ssl/libssl-lib-tls_srp.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record" => { + "deps" => [ + "ssl/record/libssl-lib-rec_layer_d1.o", + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" + ], + "products" => { + "lib" => [ + "libssl", + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/statem" => { + "deps" => [ + "ssl/statem/libssl-lib-extensions.o", + "ssl/statem/libssl-lib-extensions_clnt.o", + "ssl/statem/libssl-lib-extensions_cust.o", + "ssl/statem/libssl-lib-extensions_srvr.o", + "ssl/statem/libssl-lib-statem.o", + "ssl/statem/libssl-lib-statem_clnt.o", + "ssl/statem/libssl-lib-statem_dtls.o", + "ssl/statem/libssl-lib-statem_lib.o", + "ssl/statem/libssl-lib-statem_srvr.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "tools" => { + "products" => { + "script" => [ + "tools/c_rehash" + ] + } + }, + "util" => { + "products" => { + "script" => [ + "util/shlib_wrap.sh", + "util/wrap.pl" + ] + } + } + }, + "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "apps/progs.c" => [ + "apps/progs.pl", + "\"-C\"", + "\$(APPS_OPENSSL)" + ], + "apps/progs.h" => [ + "apps/progs.pl", + "\"-H\"", + "\$(APPS_OPENSSL)" + ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], + "crypto/aes/aes-586.S" => [ + "crypto/aes/asm/aes-586.pl" + ], + "crypto/aes/aes-armv4.S" => [ + "crypto/aes/asm/aes-armv4.pl" + ], + "crypto/aes/aes-c64xplus.S" => [ + "crypto/aes/asm/aes-c64xplus.pl" + ], + "crypto/aes/aes-ia64.s" => [ + "crypto/aes/asm/aes-ia64.S" + ], + "crypto/aes/aes-mips.S" => [ + "crypto/aes/asm/aes-mips.pl" + ], + "crypto/aes/aes-parisc.s" => [ + "crypto/aes/asm/aes-parisc.pl" + ], + "crypto/aes/aes-ppc.s" => [ + "crypto/aes/asm/aes-ppc.pl" + ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], + "crypto/aes/aes-s390x.S" => [ + "crypto/aes/asm/aes-s390x.pl" + ], + "crypto/aes/aes-sparcv9.S" => [ + "crypto/aes/asm/aes-sparcv9.pl" + ], + "crypto/aes/aes-x86_64.s" => [ + "crypto/aes/asm/aes-x86_64.pl" + ], + "crypto/aes/aesfx-sparcv9.S" => [ + "crypto/aes/asm/aesfx-sparcv9.pl" + ], + "crypto/aes/aesni-mb-x86_64.s" => [ + "crypto/aes/asm/aesni-mb-x86_64.pl" + ], + "crypto/aes/aesni-sha1-x86_64.s" => [ + "crypto/aes/asm/aesni-sha1-x86_64.pl" + ], + "crypto/aes/aesni-sha256-x86_64.s" => [ + "crypto/aes/asm/aesni-sha256-x86_64.pl" + ], + "crypto/aes/aesni-x86.S" => [ + "crypto/aes/asm/aesni-x86.pl" + ], + "crypto/aes/aesni-x86_64.s" => [ + "crypto/aes/asm/aesni-x86_64.pl" + ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], + "crypto/aes/aesp8-ppc.s" => [ + "crypto/aes/asm/aesp8-ppc.pl" + ], + "crypto/aes/aest4-sparcv9.S" => [ + "crypto/aes/asm/aest4-sparcv9.pl" + ], + "crypto/aes/aesv8-armx.S" => [ + "crypto/aes/asm/aesv8-armx.pl" + ], + "crypto/aes/bsaes-armv7.S" => [ + "crypto/aes/asm/bsaes-armv7.pl" + ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], + "crypto/aes/bsaes-x86_64.s" => [ + "crypto/aes/asm/bsaes-x86_64.pl" + ], + "crypto/aes/vpaes-armv8.S" => [ + "crypto/aes/asm/vpaes-armv8.pl" + ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], + "crypto/aes/vpaes-ppc.s" => [ + "crypto/aes/asm/vpaes-ppc.pl" + ], + "crypto/aes/vpaes-x86.S" => [ + "crypto/aes/asm/vpaes-x86.pl" + ], + "crypto/aes/vpaes-x86_64.s" => [ + "crypto/aes/asm/vpaes-x86_64.pl" + ], + "crypto/alphacpuid.s" => [ + "crypto/alphacpuid.pl" + ], + "crypto/arm64cpuid.S" => [ + "crypto/arm64cpuid.pl" + ], + "crypto/armv4cpuid.S" => [ + "crypto/armv4cpuid.pl" + ], + "crypto/bf/bf-586.S" => [ + "crypto/bf/asm/bf-586.pl" + ], + "crypto/bn/alpha-mont.S" => [ + "crypto/bn/asm/alpha-mont.pl" + ], + "crypto/bn/armv4-gf2m.S" => [ + "crypto/bn/asm/armv4-gf2m.pl" + ], + "crypto/bn/armv4-mont.S" => [ + "crypto/bn/asm/armv4-mont.pl" + ], + "crypto/bn/armv8-mont.S" => [ + "crypto/bn/asm/armv8-mont.pl" + ], + "crypto/bn/bn-586.S" => [ + "crypto/bn/asm/bn-586.pl" + ], + "crypto/bn/bn-ia64.s" => [ + "crypto/bn/asm/ia64.S" + ], + "crypto/bn/bn-mips.S" => [ + "crypto/bn/asm/mips.pl" + ], + "crypto/bn/bn-ppc.s" => [ + "crypto/bn/asm/ppc.pl" + ], + "crypto/bn/co-586.S" => [ + "crypto/bn/asm/co-586.pl" + ], + "crypto/bn/ia64-mont.s" => [ + "crypto/bn/asm/ia64-mont.pl" + ], + "crypto/bn/mips-mont.S" => [ + "crypto/bn/asm/mips-mont.pl" + ], + "crypto/bn/parisc-mont.s" => [ + "crypto/bn/asm/parisc-mont.pl" + ], + "crypto/bn/ppc-mont.s" => [ + "crypto/bn/asm/ppc-mont.pl" + ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], + "crypto/bn/ppc64-mont.s" => [ + "crypto/bn/asm/ppc64-mont.pl" + ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], + "crypto/bn/rsaz-avx2.s" => [ + "crypto/bn/asm/rsaz-avx2.pl" + ], + "crypto/bn/rsaz-x86_64.s" => [ + "crypto/bn/asm/rsaz-x86_64.pl" + ], + "crypto/bn/s390x-gf2m.s" => [ + "crypto/bn/asm/s390x-gf2m.pl" + ], + "crypto/bn/s390x-mont.S" => [ + "crypto/bn/asm/s390x-mont.pl" + ], + "crypto/bn/sparct4-mont.S" => [ + "crypto/bn/asm/sparct4-mont.pl" + ], + "crypto/bn/sparcv9-gf2m.S" => [ + "crypto/bn/asm/sparcv9-gf2m.pl" + ], + "crypto/bn/sparcv9-mont.S" => [ + "crypto/bn/asm/sparcv9-mont.pl" + ], + "crypto/bn/sparcv9a-mont.S" => [ + "crypto/bn/asm/sparcv9a-mont.pl" + ], + "crypto/bn/vis3-mont.S" => [ + "crypto/bn/asm/vis3-mont.pl" + ], + "crypto/bn/x86-gf2m.S" => [ + "crypto/bn/asm/x86-gf2m.pl" + ], + "crypto/bn/x86-mont.S" => [ + "crypto/bn/asm/x86-mont.pl" + ], + "crypto/bn/x86_64-gf2m.s" => [ + "crypto/bn/asm/x86_64-gf2m.pl" + ], + "crypto/bn/x86_64-mont.s" => [ + "crypto/bn/asm/x86_64-mont.pl" + ], + "crypto/bn/x86_64-mont5.s" => [ + "crypto/bn/asm/x86_64-mont5.pl" + ], + "crypto/buildinf.h" => [ + "util/mkbuildinf.pl", + "\"\$(CC)", + "\$(LIB_CFLAGS)", + "\$(CPPFLAGS_Q)\"", + "\"\$(PLATFORM)\"" + ], + "crypto/camellia/cmll-x86.S" => [ + "crypto/camellia/asm/cmll-x86.pl" + ], + "crypto/camellia/cmll-x86_64.s" => [ + "crypto/camellia/asm/cmll-x86_64.pl" + ], + "crypto/camellia/cmllt4-sparcv9.S" => [ + "crypto/camellia/asm/cmllt4-sparcv9.pl" + ], + "crypto/cast/cast-586.S" => [ + "crypto/cast/asm/cast-586.pl" + ], + "crypto/chacha/chacha-armv4.S" => [ + "crypto/chacha/asm/chacha-armv4.pl" + ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], + "crypto/chacha/chacha-armv8.S" => [ + "crypto/chacha/asm/chacha-armv8.pl" + ], + "crypto/chacha/chacha-c64xplus.S" => [ + "crypto/chacha/asm/chacha-c64xplus.pl" + ], + "crypto/chacha/chacha-ia64.S" => [ + "crypto/chacha/asm/chacha-ia64.pl" + ], + "crypto/chacha/chacha-ia64.s" => [ + "crypto/chacha/chacha-ia64.S" + ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], + "crypto/chacha/chacha-ppc.s" => [ + "crypto/chacha/asm/chacha-ppc.pl" + ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], + "crypto/chacha/chacha-s390x.S" => [ + "crypto/chacha/asm/chacha-s390x.pl" + ], + "crypto/chacha/chacha-x86.S" => [ + "crypto/chacha/asm/chacha-x86.pl" + ], + "crypto/chacha/chacha-x86_64.s" => [ + "crypto/chacha/asm/chacha-x86_64.pl" + ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], + "crypto/des/crypt586.S" => [ + "crypto/des/asm/crypt586.pl" + ], + "crypto/des/des-586.S" => [ + "crypto/des/asm/des-586.pl" + ], + "crypto/des/des_enc-sparc.S" => [ + "crypto/des/asm/des_enc.m4" + ], + "crypto/des/dest4-sparcv9.S" => [ + "crypto/des/asm/dest4-sparcv9.pl" + ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], + "crypto/ec/ecp_nistp521-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp521-ppc64.pl" + ], + "crypto/ec/ecp_nistz256-armv4.S" => [ + "crypto/ec/asm/ecp_nistz256-armv4.pl" + ], + "crypto/ec/ecp_nistz256-armv8.S" => [ + "crypto/ec/asm/ecp_nistz256-armv8.pl" + ], + "crypto/ec/ecp_nistz256-avx2.s" => [ + "crypto/ec/asm/ecp_nistz256-avx2.pl" + ], + "crypto/ec/ecp_nistz256-ppc64.s" => [ + "crypto/ec/asm/ecp_nistz256-ppc64.pl" + ], + "crypto/ec/ecp_nistz256-sparcv9.S" => [ + "crypto/ec/asm/ecp_nistz256-sparcv9.pl" + ], + "crypto/ec/ecp_nistz256-x86.S" => [ + "crypto/ec/asm/ecp_nistz256-x86.pl" + ], + "crypto/ec/ecp_nistz256-x86_64.s" => [ + "crypto/ec/asm/ecp_nistz256-x86_64.pl" + ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], + "crypto/ec/x25519-ppc64.s" => [ + "crypto/ec/asm/x25519-ppc64.pl" + ], + "crypto/ec/x25519-x86_64.s" => [ + "crypto/ec/asm/x25519-x86_64.pl" + ], + "crypto/ia64cpuid.s" => [ + "crypto/ia64cpuid.S" + ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], + "crypto/md5/md5-586.S" => [ + "crypto/md5/asm/md5-586.pl" + ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], + "crypto/md5/md5-sparcv9.S" => [ + "crypto/md5/asm/md5-sparcv9.pl" + ], + "crypto/md5/md5-x86_64.s" => [ + "crypto/md5/asm/md5-x86_64.pl" + ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], + "crypto/modes/aes-gcm-armv8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8_64.pl" + ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], + "crypto/modes/aesni-gcm-x86_64.s" => [ + "crypto/modes/asm/aesni-gcm-x86_64.pl" + ], + "crypto/modes/ghash-alpha.S" => [ + "crypto/modes/asm/ghash-alpha.pl" + ], + "crypto/modes/ghash-armv4.S" => [ + "crypto/modes/asm/ghash-armv4.pl" + ], + "crypto/modes/ghash-c64xplus.S" => [ + "crypto/modes/asm/ghash-c64xplus.pl" + ], + "crypto/modes/ghash-ia64.s" => [ + "crypto/modes/asm/ghash-ia64.pl" + ], + "crypto/modes/ghash-parisc.s" => [ + "crypto/modes/asm/ghash-parisc.pl" + ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], + "crypto/modes/ghash-s390x.S" => [ + "crypto/modes/asm/ghash-s390x.pl" + ], + "crypto/modes/ghash-sparcv9.S" => [ + "crypto/modes/asm/ghash-sparcv9.pl" + ], + "crypto/modes/ghash-x86.S" => [ + "crypto/modes/asm/ghash-x86.pl" + ], + "crypto/modes/ghash-x86_64.s" => [ + "crypto/modes/asm/ghash-x86_64.pl" + ], + "crypto/modes/ghashp8-ppc.s" => [ + "crypto/modes/asm/ghashp8-ppc.pl" + ], + "crypto/modes/ghashv8-armx.S" => [ + "crypto/modes/asm/ghashv8-armx.pl" + ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], + "crypto/pariscid.s" => [ + "crypto/pariscid.pl" + ], + "crypto/poly1305/poly1305-armv4.S" => [ + "crypto/poly1305/asm/poly1305-armv4.pl" + ], + "crypto/poly1305/poly1305-armv8.S" => [ + "crypto/poly1305/asm/poly1305-armv8.pl" + ], + "crypto/poly1305/poly1305-c64xplus.S" => [ + "crypto/poly1305/asm/poly1305-c64xplus.pl" + ], + "crypto/poly1305/poly1305-ia64.s" => [ + "crypto/poly1305/asm/poly1305-ia64.S" + ], + "crypto/poly1305/poly1305-mips.S" => [ + "crypto/poly1305/asm/poly1305-mips.pl" + ], + "crypto/poly1305/poly1305-ppc.s" => [ + "crypto/poly1305/asm/poly1305-ppc.pl" + ], + "crypto/poly1305/poly1305-ppcfp.s" => [ + "crypto/poly1305/asm/poly1305-ppcfp.pl" + ], + "crypto/poly1305/poly1305-s390x.S" => [ + "crypto/poly1305/asm/poly1305-s390x.pl" + ], + "crypto/poly1305/poly1305-sparcv9.S" => [ + "crypto/poly1305/asm/poly1305-sparcv9.pl" + ], + "crypto/poly1305/poly1305-x86.S" => [ + "crypto/poly1305/asm/poly1305-x86.pl" + ], + "crypto/poly1305/poly1305-x86_64.s" => [ + "crypto/poly1305/asm/poly1305-x86_64.pl" + ], + "crypto/ppccpuid.s" => [ + "crypto/ppccpuid.pl" + ], + "crypto/rc4/rc4-586.S" => [ + "crypto/rc4/asm/rc4-586.pl" + ], + "crypto/rc4/rc4-c64xplus.s" => [ + "crypto/rc4/asm/rc4-c64xplus.pl" + ], + "crypto/rc4/rc4-md5-x86_64.s" => [ + "crypto/rc4/asm/rc4-md5-x86_64.pl" + ], + "crypto/rc4/rc4-parisc.s" => [ + "crypto/rc4/asm/rc4-parisc.pl" + ], + "crypto/rc4/rc4-s390x.s" => [ + "crypto/rc4/asm/rc4-s390x.pl" + ], + "crypto/rc4/rc4-x86_64.s" => [ + "crypto/rc4/asm/rc4-x86_64.pl" + ], + "crypto/ripemd/rmd-586.S" => [ + "crypto/ripemd/asm/rmd-586.pl" + ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], + "crypto/s390xcpuid.S" => [ + "crypto/s390xcpuid.pl" + ], + "crypto/sha/keccak1600-armv4.S" => [ + "crypto/sha/asm/keccak1600-armv4.pl" + ], + "crypto/sha/keccak1600-armv8.S" => [ + "crypto/sha/asm/keccak1600-armv8.pl" + ], + "crypto/sha/keccak1600-avx2.S" => [ + "crypto/sha/asm/keccak1600-avx2.pl" + ], + "crypto/sha/keccak1600-avx512.S" => [ + "crypto/sha/asm/keccak1600-avx512.pl" + ], + "crypto/sha/keccak1600-avx512vl.S" => [ + "crypto/sha/asm/keccak1600-avx512vl.pl" + ], + "crypto/sha/keccak1600-c64x.S" => [ + "crypto/sha/asm/keccak1600-c64x.pl" + ], + "crypto/sha/keccak1600-mmx.S" => [ + "crypto/sha/asm/keccak1600-mmx.pl" + ], + "crypto/sha/keccak1600-ppc64.s" => [ + "crypto/sha/asm/keccak1600-ppc64.pl" + ], + "crypto/sha/keccak1600-s390x.S" => [ + "crypto/sha/asm/keccak1600-s390x.pl" + ], + "crypto/sha/keccak1600-x86_64.s" => [ + "crypto/sha/asm/keccak1600-x86_64.pl" + ], + "crypto/sha/keccak1600p8-ppc.S" => [ + "crypto/sha/asm/keccak1600p8-ppc.pl" + ], + "crypto/sha/sha1-586.S" => [ + "crypto/sha/asm/sha1-586.pl" + ], + "crypto/sha/sha1-alpha.S" => [ + "crypto/sha/asm/sha1-alpha.pl" + ], + "crypto/sha/sha1-armv4-large.S" => [ + "crypto/sha/asm/sha1-armv4-large.pl" + ], + "crypto/sha/sha1-armv8.S" => [ + "crypto/sha/asm/sha1-armv8.pl" + ], + "crypto/sha/sha1-c64xplus.S" => [ + "crypto/sha/asm/sha1-c64xplus.pl" + ], + "crypto/sha/sha1-ia64.s" => [ + "crypto/sha/asm/sha1-ia64.pl" + ], + "crypto/sha/sha1-mb-x86_64.s" => [ + "crypto/sha/asm/sha1-mb-x86_64.pl" + ], + "crypto/sha/sha1-mips.S" => [ + "crypto/sha/asm/sha1-mips.pl" + ], + "crypto/sha/sha1-parisc.s" => [ + "crypto/sha/asm/sha1-parisc.pl" + ], + "crypto/sha/sha1-ppc.s" => [ + "crypto/sha/asm/sha1-ppc.pl" + ], + "crypto/sha/sha1-s390x.S" => [ + "crypto/sha/asm/sha1-s390x.pl" + ], + "crypto/sha/sha1-sparcv9.S" => [ + "crypto/sha/asm/sha1-sparcv9.pl" + ], + "crypto/sha/sha1-sparcv9a.S" => [ + "crypto/sha/asm/sha1-sparcv9a.pl" + ], + "crypto/sha/sha1-thumb.S" => [ + "crypto/sha/asm/sha1-thumb.pl" + ], + "crypto/sha/sha1-x86_64.s" => [ + "crypto/sha/asm/sha1-x86_64.pl" + ], + "crypto/sha/sha256-586.S" => [ + "crypto/sha/asm/sha256-586.pl" + ], + "crypto/sha/sha256-armv4.S" => [ + "crypto/sha/asm/sha256-armv4.pl" + ], + "crypto/sha/sha256-armv8.S" => [ + "crypto/sha/asm/sha512-armv8.pl" + ], + "crypto/sha/sha256-c64xplus.S" => [ + "crypto/sha/asm/sha256-c64xplus.pl" + ], + "crypto/sha/sha256-ia64.s" => [ + "crypto/sha/asm/sha512-ia64.pl" + ], + "crypto/sha/sha256-mb-x86_64.s" => [ + "crypto/sha/asm/sha256-mb-x86_64.pl" + ], + "crypto/sha/sha256-mips.S" => [ + "crypto/sha/asm/sha512-mips.pl" + ], + "crypto/sha/sha256-parisc.s" => [ + "crypto/sha/asm/sha512-parisc.pl" + ], + "crypto/sha/sha256-ppc.s" => [ + "crypto/sha/asm/sha512-ppc.pl" + ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], + "crypto/sha/sha256-s390x.S" => [ + "crypto/sha/asm/sha512-s390x.pl" + ], + "crypto/sha/sha256-sparcv9.S" => [ + "crypto/sha/asm/sha512-sparcv9.pl" + ], + "crypto/sha/sha256-x86_64.s" => [ + "crypto/sha/asm/sha512-x86_64.pl" + ], + "crypto/sha/sha256p8-ppc.s" => [ + "crypto/sha/asm/sha512p8-ppc.pl" + ], + "crypto/sha/sha512-586.S" => [ + "crypto/sha/asm/sha512-586.pl" + ], + "crypto/sha/sha512-armv4.S" => [ + "crypto/sha/asm/sha512-armv4.pl" + ], + "crypto/sha/sha512-armv8.S" => [ + "crypto/sha/asm/sha512-armv8.pl" + ], + "crypto/sha/sha512-c64xplus.S" => [ + "crypto/sha/asm/sha512-c64xplus.pl" + ], + "crypto/sha/sha512-ia64.s" => [ + "crypto/sha/asm/sha512-ia64.pl" + ], + "crypto/sha/sha512-mips.S" => [ + "crypto/sha/asm/sha512-mips.pl" + ], + "crypto/sha/sha512-parisc.s" => [ + "crypto/sha/asm/sha512-parisc.pl" + ], + "crypto/sha/sha512-ppc.s" => [ + "crypto/sha/asm/sha512-ppc.pl" + ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], + "crypto/sha/sha512-s390x.S" => [ + "crypto/sha/asm/sha512-s390x.pl" + ], + "crypto/sha/sha512-sparcv9.S" => [ + "crypto/sha/asm/sha512-sparcv9.pl" + ], + "crypto/sha/sha512-x86_64.s" => [ + "crypto/sha/asm/sha512-x86_64.pl" + ], + "crypto/sha/sha512p8-ppc.s" => [ + "crypto/sha/asm/sha512p8-ppc.pl" + ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], + "crypto/uplink-ia64.s" => [ + "ms/uplink-ia64.pl" + ], + "crypto/uplink-x86.S" => [ + "ms/uplink-x86.pl" + ], + "crypto/uplink-x86_64.s" => [ + "ms/uplink-x86_64.pl" + ], + "crypto/whrlpool/wp-mmx.S" => [ + "crypto/whrlpool/asm/wp-mmx.pl" + ], + "crypto/whrlpool/wp-x86_64.s" => [ + "crypto/whrlpool/asm/wp-x86_64.pl" + ], + "crypto/x86_64cpuid.s" => [ + "crypto/x86_64cpuid.pl" + ], + "crypto/x86cpuid.S" => [ + "crypto/x86cpuid.pl" + ], + "doc/html/man1/CA.pl.html" => [ + "doc/man1/CA.pl.pod" + ], + "doc/html/man1/openssl-asn1parse.html" => [ + "doc/man1/openssl-asn1parse.pod" + ], + "doc/html/man1/openssl-ca.html" => [ + "doc/man1/openssl-ca.pod" + ], + "doc/html/man1/openssl-ciphers.html" => [ + "doc/man1/openssl-ciphers.pod" + ], + "doc/html/man1/openssl-cmds.html" => [ + "doc/man1/openssl-cmds.pod" + ], + "doc/html/man1/openssl-cmp.html" => [ + "doc/man1/openssl-cmp.pod" + ], + "doc/html/man1/openssl-cms.html" => [ + "doc/man1/openssl-cms.pod" + ], + "doc/html/man1/openssl-crl.html" => [ + "doc/man1/openssl-crl.pod" + ], + "doc/html/man1/openssl-crl2pkcs7.html" => [ + "doc/man1/openssl-crl2pkcs7.pod" + ], + "doc/html/man1/openssl-dgst.html" => [ + "doc/man1/openssl-dgst.pod" + ], + "doc/html/man1/openssl-dhparam.html" => [ + "doc/man1/openssl-dhparam.pod" + ], + "doc/html/man1/openssl-dsa.html" => [ + "doc/man1/openssl-dsa.pod" + ], + "doc/html/man1/openssl-dsaparam.html" => [ + "doc/man1/openssl-dsaparam.pod" + ], + "doc/html/man1/openssl-ec.html" => [ + "doc/man1/openssl-ec.pod" + ], + "doc/html/man1/openssl-ecparam.html" => [ + "doc/man1/openssl-ecparam.pod" + ], + "doc/html/man1/openssl-enc.html" => [ + "doc/man1/openssl-enc.pod" + ], + "doc/html/man1/openssl-engine.html" => [ + "doc/man1/openssl-engine.pod" + ], + "doc/html/man1/openssl-errstr.html" => [ + "doc/man1/openssl-errstr.pod" + ], + "doc/html/man1/openssl-fipsinstall.html" => [ + "doc/man1/openssl-fipsinstall.pod" + ], + "doc/html/man1/openssl-format-options.html" => [ + "doc/man1/openssl-format-options.pod" + ], + "doc/html/man1/openssl-gendsa.html" => [ + "doc/man1/openssl-gendsa.pod" + ], + "doc/html/man1/openssl-genpkey.html" => [ + "doc/man1/openssl-genpkey.pod" + ], + "doc/html/man1/openssl-genrsa.html" => [ + "doc/man1/openssl-genrsa.pod" + ], + "doc/html/man1/openssl-info.html" => [ + "doc/man1/openssl-info.pod" + ], + "doc/html/man1/openssl-kdf.html" => [ + "doc/man1/openssl-kdf.pod" + ], + "doc/html/man1/openssl-list.html" => [ + "doc/man1/openssl-list.pod" + ], + "doc/html/man1/openssl-mac.html" => [ + "doc/man1/openssl-mac.pod" + ], + "doc/html/man1/openssl-namedisplay-options.html" => [ + "doc/man1/openssl-namedisplay-options.pod" + ], + "doc/html/man1/openssl-nseq.html" => [ + "doc/man1/openssl-nseq.pod" + ], + "doc/html/man1/openssl-ocsp.html" => [ + "doc/man1/openssl-ocsp.pod" + ], + "doc/html/man1/openssl-passphrase-options.html" => [ + "doc/man1/openssl-passphrase-options.pod" + ], + "doc/html/man1/openssl-passwd.html" => [ + "doc/man1/openssl-passwd.pod" + ], + "doc/html/man1/openssl-pkcs12.html" => [ + "doc/man1/openssl-pkcs12.pod" + ], + "doc/html/man1/openssl-pkcs7.html" => [ + "doc/man1/openssl-pkcs7.pod" + ], + "doc/html/man1/openssl-pkcs8.html" => [ + "doc/man1/openssl-pkcs8.pod" + ], + "doc/html/man1/openssl-pkey.html" => [ + "doc/man1/openssl-pkey.pod" + ], + "doc/html/man1/openssl-pkeyparam.html" => [ + "doc/man1/openssl-pkeyparam.pod" + ], + "doc/html/man1/openssl-pkeyutl.html" => [ + "doc/man1/openssl-pkeyutl.pod" + ], + "doc/html/man1/openssl-prime.html" => [ + "doc/man1/openssl-prime.pod" + ], + "doc/html/man1/openssl-rand.html" => [ + "doc/man1/openssl-rand.pod" + ], + "doc/html/man1/openssl-rehash.html" => [ + "doc/man1/openssl-rehash.pod" + ], + "doc/html/man1/openssl-req.html" => [ + "doc/man1/openssl-req.pod" + ], + "doc/html/man1/openssl-rsa.html" => [ + "doc/man1/openssl-rsa.pod" + ], + "doc/html/man1/openssl-rsautl.html" => [ + "doc/man1/openssl-rsautl.pod" + ], + "doc/html/man1/openssl-s_client.html" => [ + "doc/man1/openssl-s_client.pod" + ], + "doc/html/man1/openssl-s_server.html" => [ + "doc/man1/openssl-s_server.pod" + ], + "doc/html/man1/openssl-s_time.html" => [ + "doc/man1/openssl-s_time.pod" + ], + "doc/html/man1/openssl-sess_id.html" => [ + "doc/man1/openssl-sess_id.pod" + ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], + "doc/html/man1/openssl-smime.html" => [ + "doc/man1/openssl-smime.pod" + ], + "doc/html/man1/openssl-speed.html" => [ + "doc/man1/openssl-speed.pod" + ], + "doc/html/man1/openssl-spkac.html" => [ + "doc/man1/openssl-spkac.pod" + ], + "doc/html/man1/openssl-srp.html" => [ + "doc/man1/openssl-srp.pod" + ], + "doc/html/man1/openssl-storeutl.html" => [ + "doc/man1/openssl-storeutl.pod" + ], + "doc/html/man1/openssl-ts.html" => [ + "doc/man1/openssl-ts.pod" + ], + "doc/html/man1/openssl-verification-options.html" => [ + "doc/man1/openssl-verification-options.pod" + ], + "doc/html/man1/openssl-verify.html" => [ + "doc/man1/openssl-verify.pod" + ], + "doc/html/man1/openssl-version.html" => [ + "doc/man1/openssl-version.pod" + ], + "doc/html/man1/openssl-x509.html" => [ + "doc/man1/openssl-x509.pod" + ], + "doc/html/man1/openssl.html" => [ + "doc/man1/openssl.pod" + ], + "doc/html/man1/tsget.html" => [ + "doc/man1/tsget.pod" + ], + "doc/html/man3/ADMISSIONS.html" => [ + "doc/man3/ADMISSIONS.pod" + ], + "doc/html/man3/ASN1_EXTERN_FUNCS.html" => [ + "doc/man3/ASN1_EXTERN_FUNCS.pod" + ], + "doc/html/man3/ASN1_INTEGER_get_int64.html" => [ + "doc/man3/ASN1_INTEGER_get_int64.pod" + ], + "doc/html/man3/ASN1_INTEGER_new.html" => [ + "doc/man3/ASN1_INTEGER_new.pod" + ], + "doc/html/man3/ASN1_ITEM_lookup.html" => [ + "doc/man3/ASN1_ITEM_lookup.pod" + ], + "doc/html/man3/ASN1_OBJECT_new.html" => [ + "doc/man3/ASN1_OBJECT_new.pod" + ], + "doc/html/man3/ASN1_STRING_TABLE_add.html" => [ + "doc/man3/ASN1_STRING_TABLE_add.pod" + ], + "doc/html/man3/ASN1_STRING_length.html" => [ + "doc/man3/ASN1_STRING_length.pod" + ], + "doc/html/man3/ASN1_STRING_new.html" => [ + "doc/man3/ASN1_STRING_new.pod" + ], + "doc/html/man3/ASN1_STRING_print_ex.html" => [ + "doc/man3/ASN1_STRING_print_ex.pod" + ], + "doc/html/man3/ASN1_TIME_set.html" => [ + "doc/man3/ASN1_TIME_set.pod" + ], + "doc/html/man3/ASN1_TYPE_get.html" => [ + "doc/man3/ASN1_TYPE_get.pod" + ], + "doc/html/man3/ASN1_aux_cb.html" => [ + "doc/man3/ASN1_aux_cb.pod" + ], + "doc/html/man3/ASN1_generate_nconf.html" => [ + "doc/man3/ASN1_generate_nconf.pod" + ], + "doc/html/man3/ASN1_item_d2i_bio.html" => [ + "doc/man3/ASN1_item_d2i_bio.pod" + ], + "doc/html/man3/ASN1_item_new.html" => [ + "doc/man3/ASN1_item_new.pod" + ], + "doc/html/man3/ASN1_item_sign.html" => [ + "doc/man3/ASN1_item_sign.pod" + ], + "doc/html/man3/ASYNC_WAIT_CTX_new.html" => [ + "doc/man3/ASYNC_WAIT_CTX_new.pod" + ], + "doc/html/man3/ASYNC_start_job.html" => [ + "doc/man3/ASYNC_start_job.pod" + ], + "doc/html/man3/BF_encrypt.html" => [ + "doc/man3/BF_encrypt.pod" + ], + "doc/html/man3/BIO_ADDR.html" => [ + "doc/man3/BIO_ADDR.pod" + ], + "doc/html/man3/BIO_ADDRINFO.html" => [ + "doc/man3/BIO_ADDRINFO.pod" + ], + "doc/html/man3/BIO_connect.html" => [ + "doc/man3/BIO_connect.pod" + ], + "doc/html/man3/BIO_ctrl.html" => [ + "doc/man3/BIO_ctrl.pod" + ], + "doc/html/man3/BIO_f_base64.html" => [ + "doc/man3/BIO_f_base64.pod" + ], + "doc/html/man3/BIO_f_buffer.html" => [ + "doc/man3/BIO_f_buffer.pod" + ], + "doc/html/man3/BIO_f_cipher.html" => [ + "doc/man3/BIO_f_cipher.pod" + ], + "doc/html/man3/BIO_f_md.html" => [ + "doc/man3/BIO_f_md.pod" + ], + "doc/html/man3/BIO_f_null.html" => [ + "doc/man3/BIO_f_null.pod" + ], + "doc/html/man3/BIO_f_prefix.html" => [ + "doc/man3/BIO_f_prefix.pod" + ], + "doc/html/man3/BIO_f_readbuffer.html" => [ + "doc/man3/BIO_f_readbuffer.pod" + ], + "doc/html/man3/BIO_f_ssl.html" => [ + "doc/man3/BIO_f_ssl.pod" + ], + "doc/html/man3/BIO_find_type.html" => [ + "doc/man3/BIO_find_type.pod" + ], + "doc/html/man3/BIO_get_data.html" => [ + "doc/man3/BIO_get_data.pod" + ], + "doc/html/man3/BIO_get_ex_new_index.html" => [ + "doc/man3/BIO_get_ex_new_index.pod" + ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], + "doc/html/man3/BIO_meth_new.html" => [ + "doc/man3/BIO_meth_new.pod" + ], + "doc/html/man3/BIO_new.html" => [ + "doc/man3/BIO_new.pod" + ], + "doc/html/man3/BIO_new_CMS.html" => [ + "doc/man3/BIO_new_CMS.pod" + ], + "doc/html/man3/BIO_parse_hostserv.html" => [ + "doc/man3/BIO_parse_hostserv.pod" + ], + "doc/html/man3/BIO_printf.html" => [ + "doc/man3/BIO_printf.pod" + ], + "doc/html/man3/BIO_push.html" => [ + "doc/man3/BIO_push.pod" + ], + "doc/html/man3/BIO_read.html" => [ + "doc/man3/BIO_read.pod" + ], + "doc/html/man3/BIO_s_accept.html" => [ + "doc/man3/BIO_s_accept.pod" + ], + "doc/html/man3/BIO_s_bio.html" => [ + "doc/man3/BIO_s_bio.pod" + ], + "doc/html/man3/BIO_s_connect.html" => [ + "doc/man3/BIO_s_connect.pod" + ], + "doc/html/man3/BIO_s_core.html" => [ + "doc/man3/BIO_s_core.pod" + ], + "doc/html/man3/BIO_s_datagram.html" => [ + "doc/man3/BIO_s_datagram.pod" + ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], + "doc/html/man3/BIO_s_fd.html" => [ + "doc/man3/BIO_s_fd.pod" + ], + "doc/html/man3/BIO_s_file.html" => [ + "doc/man3/BIO_s_file.pod" + ], + "doc/html/man3/BIO_s_mem.html" => [ + "doc/man3/BIO_s_mem.pod" + ], + "doc/html/man3/BIO_s_null.html" => [ + "doc/man3/BIO_s_null.pod" + ], + "doc/html/man3/BIO_s_socket.html" => [ + "doc/man3/BIO_s_socket.pod" + ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], + "doc/html/man3/BIO_set_callback.html" => [ + "doc/man3/BIO_set_callback.pod" + ], + "doc/html/man3/BIO_set_flags.html" => [ + "doc/man3/BIO_set_flags.pod" + ], + "doc/html/man3/BIO_should_retry.html" => [ + "doc/man3/BIO_should_retry.pod" + ], + "doc/html/man3/BIO_socket_wait.html" => [ + "doc/man3/BIO_socket_wait.pod" + ], + "doc/html/man3/BN_BLINDING_new.html" => [ + "doc/man3/BN_BLINDING_new.pod" + ], + "doc/html/man3/BN_CTX_new.html" => [ + "doc/man3/BN_CTX_new.pod" + ], + "doc/html/man3/BN_CTX_start.html" => [ + "doc/man3/BN_CTX_start.pod" + ], + "doc/html/man3/BN_add.html" => [ + "doc/man3/BN_add.pod" + ], + "doc/html/man3/BN_add_word.html" => [ + "doc/man3/BN_add_word.pod" + ], + "doc/html/man3/BN_bn2bin.html" => [ + "doc/man3/BN_bn2bin.pod" + ], + "doc/html/man3/BN_cmp.html" => [ + "doc/man3/BN_cmp.pod" + ], + "doc/html/man3/BN_copy.html" => [ + "doc/man3/BN_copy.pod" + ], + "doc/html/man3/BN_generate_prime.html" => [ + "doc/man3/BN_generate_prime.pod" + ], + "doc/html/man3/BN_mod_exp_mont.html" => [ + "doc/man3/BN_mod_exp_mont.pod" + ], + "doc/html/man3/BN_mod_inverse.html" => [ + "doc/man3/BN_mod_inverse.pod" + ], + "doc/html/man3/BN_mod_mul_montgomery.html" => [ + "doc/man3/BN_mod_mul_montgomery.pod" + ], + "doc/html/man3/BN_mod_mul_reciprocal.html" => [ + "doc/man3/BN_mod_mul_reciprocal.pod" + ], + "doc/html/man3/BN_new.html" => [ + "doc/man3/BN_new.pod" + ], + "doc/html/man3/BN_num_bytes.html" => [ + "doc/man3/BN_num_bytes.pod" + ], + "doc/html/man3/BN_rand.html" => [ + "doc/man3/BN_rand.pod" + ], + "doc/html/man3/BN_security_bits.html" => [ + "doc/man3/BN_security_bits.pod" + ], + "doc/html/man3/BN_set_bit.html" => [ + "doc/man3/BN_set_bit.pod" + ], + "doc/html/man3/BN_swap.html" => [ + "doc/man3/BN_swap.pod" + ], + "doc/html/man3/BN_zero.html" => [ + "doc/man3/BN_zero.pod" + ], + "doc/html/man3/BUF_MEM_new.html" => [ + "doc/man3/BUF_MEM_new.pod" + ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], + "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ + "doc/man3/CMS_EncryptedData_decrypt.pod" + ], + "doc/html/man3/CMS_EncryptedData_encrypt.html" => [ + "doc/man3/CMS_EncryptedData_encrypt.pod" + ], + "doc/html/man3/CMS_EncryptedData_set1_key.html" => [ + "doc/man3/CMS_EncryptedData_set1_key.pod" + ], + "doc/html/man3/CMS_EnvelopedData_create.html" => [ + "doc/man3/CMS_EnvelopedData_create.pod" + ], + "doc/html/man3/CMS_add0_cert.html" => [ + "doc/man3/CMS_add0_cert.pod" + ], + "doc/html/man3/CMS_add1_recipient_cert.html" => [ + "doc/man3/CMS_add1_recipient_cert.pod" + ], + "doc/html/man3/CMS_add1_signer.html" => [ + "doc/man3/CMS_add1_signer.pod" + ], + "doc/html/man3/CMS_compress.html" => [ + "doc/man3/CMS_compress.pod" + ], + "doc/html/man3/CMS_data_create.html" => [ + "doc/man3/CMS_data_create.pod" + ], + "doc/html/man3/CMS_decrypt.html" => [ + "doc/man3/CMS_decrypt.pod" + ], + "doc/html/man3/CMS_digest_create.html" => [ + "doc/man3/CMS_digest_create.pod" + ], + "doc/html/man3/CMS_encrypt.html" => [ + "doc/man3/CMS_encrypt.pod" + ], + "doc/html/man3/CMS_final.html" => [ + "doc/man3/CMS_final.pod" + ], + "doc/html/man3/CMS_get0_RecipientInfos.html" => [ + "doc/man3/CMS_get0_RecipientInfos.pod" + ], + "doc/html/man3/CMS_get0_SignerInfos.html" => [ + "doc/man3/CMS_get0_SignerInfos.pod" + ], + "doc/html/man3/CMS_get0_type.html" => [ + "doc/man3/CMS_get0_type.pod" + ], + "doc/html/man3/CMS_get1_ReceiptRequest.html" => [ + "doc/man3/CMS_get1_ReceiptRequest.pod" + ], + "doc/html/man3/CMS_sign.html" => [ + "doc/man3/CMS_sign.pod" + ], + "doc/html/man3/CMS_sign_receipt.html" => [ + "doc/man3/CMS_sign_receipt.pod" + ], + "doc/html/man3/CMS_signed_get_attr.html" => [ + "doc/man3/CMS_signed_get_attr.pod" + ], + "doc/html/man3/CMS_uncompress.html" => [ + "doc/man3/CMS_uncompress.pod" + ], + "doc/html/man3/CMS_verify.html" => [ + "doc/man3/CMS_verify.pod" + ], + "doc/html/man3/CMS_verify_receipt.html" => [ + "doc/man3/CMS_verify_receipt.pod" + ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], + "doc/html/man3/CONF_modules_free.html" => [ + "doc/man3/CONF_modules_free.pod" + ], + "doc/html/man3/CONF_modules_load_file.html" => [ + "doc/man3/CONF_modules_load_file.pod" + ], + "doc/html/man3/CRYPTO_THREAD_run_once.html" => [ + "doc/man3/CRYPTO_THREAD_run_once.pod" + ], + "doc/html/man3/CRYPTO_get_ex_new_index.html" => [ + "doc/man3/CRYPTO_get_ex_new_index.pod" + ], + "doc/html/man3/CRYPTO_memcmp.html" => [ + "doc/man3/CRYPTO_memcmp.pod" + ], + "doc/html/man3/CTLOG_STORE_get0_log_by_id.html" => [ + "doc/man3/CTLOG_STORE_get0_log_by_id.pod" + ], + "doc/html/man3/CTLOG_STORE_new.html" => [ + "doc/man3/CTLOG_STORE_new.pod" + ], + "doc/html/man3/CTLOG_new.html" => [ + "doc/man3/CTLOG_new.pod" + ], + "doc/html/man3/CT_POLICY_EVAL_CTX_new.html" => [ + "doc/man3/CT_POLICY_EVAL_CTX_new.pod" + ], + "doc/html/man3/DEFINE_STACK_OF.html" => [ + "doc/man3/DEFINE_STACK_OF.pod" + ], + "doc/html/man3/DES_random_key.html" => [ + "doc/man3/DES_random_key.pod" + ], + "doc/html/man3/DH_generate_key.html" => [ + "doc/man3/DH_generate_key.pod" + ], + "doc/html/man3/DH_generate_parameters.html" => [ + "doc/man3/DH_generate_parameters.pod" + ], + "doc/html/man3/DH_get0_pqg.html" => [ + "doc/man3/DH_get0_pqg.pod" + ], + "doc/html/man3/DH_get_1024_160.html" => [ + "doc/man3/DH_get_1024_160.pod" + ], + "doc/html/man3/DH_meth_new.html" => [ + "doc/man3/DH_meth_new.pod" + ], + "doc/html/man3/DH_new.html" => [ + "doc/man3/DH_new.pod" + ], + "doc/html/man3/DH_new_by_nid.html" => [ + "doc/man3/DH_new_by_nid.pod" + ], + "doc/html/man3/DH_set_method.html" => [ + "doc/man3/DH_set_method.pod" + ], + "doc/html/man3/DH_size.html" => [ + "doc/man3/DH_size.pod" + ], + "doc/html/man3/DSA_SIG_new.html" => [ + "doc/man3/DSA_SIG_new.pod" + ], + "doc/html/man3/DSA_do_sign.html" => [ + "doc/man3/DSA_do_sign.pod" + ], + "doc/html/man3/DSA_dup_DH.html" => [ + "doc/man3/DSA_dup_DH.pod" + ], + "doc/html/man3/DSA_generate_key.html" => [ + "doc/man3/DSA_generate_key.pod" + ], + "doc/html/man3/DSA_generate_parameters.html" => [ + "doc/man3/DSA_generate_parameters.pod" + ], + "doc/html/man3/DSA_get0_pqg.html" => [ + "doc/man3/DSA_get0_pqg.pod" + ], + "doc/html/man3/DSA_meth_new.html" => [ + "doc/man3/DSA_meth_new.pod" + ], + "doc/html/man3/DSA_new.html" => [ + "doc/man3/DSA_new.pod" + ], + "doc/html/man3/DSA_set_method.html" => [ + "doc/man3/DSA_set_method.pod" + ], + "doc/html/man3/DSA_sign.html" => [ + "doc/man3/DSA_sign.pod" + ], + "doc/html/man3/DSA_size.html" => [ + "doc/man3/DSA_size.pod" + ], + "doc/html/man3/DTLS_get_data_mtu.html" => [ + "doc/man3/DTLS_get_data_mtu.pod" + ], + "doc/html/man3/DTLS_set_timer_cb.html" => [ + "doc/man3/DTLS_set_timer_cb.pod" + ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], + "doc/html/man3/DTLSv1_listen.html" => [ + "doc/man3/DTLSv1_listen.pod" + ], + "doc/html/man3/ECDSA_SIG_new.html" => [ + "doc/man3/ECDSA_SIG_new.pod" + ], + "doc/html/man3/ECDSA_sign.html" => [ + "doc/man3/ECDSA_sign.pod" + ], + "doc/html/man3/ECPKParameters_print.html" => [ + "doc/man3/ECPKParameters_print.pod" + ], + "doc/html/man3/EC_GFp_simple_method.html" => [ + "doc/man3/EC_GFp_simple_method.pod" + ], + "doc/html/man3/EC_GROUP_copy.html" => [ + "doc/man3/EC_GROUP_copy.pod" + ], + "doc/html/man3/EC_GROUP_new.html" => [ + "doc/man3/EC_GROUP_new.pod" + ], + "doc/html/man3/EC_KEY_get_enc_flags.html" => [ + "doc/man3/EC_KEY_get_enc_flags.pod" + ], + "doc/html/man3/EC_KEY_new.html" => [ + "doc/man3/EC_KEY_new.pod" + ], + "doc/html/man3/EC_POINT_add.html" => [ + "doc/man3/EC_POINT_add.pod" + ], + "doc/html/man3/EC_POINT_new.html" => [ + "doc/man3/EC_POINT_new.pod" + ], + "doc/html/man3/ENGINE_add.html" => [ + "doc/man3/ENGINE_add.pod" + ], + "doc/html/man3/ERR_GET_LIB.html" => [ + "doc/man3/ERR_GET_LIB.pod" + ], + "doc/html/man3/ERR_clear_error.html" => [ + "doc/man3/ERR_clear_error.pod" + ], + "doc/html/man3/ERR_error_string.html" => [ + "doc/man3/ERR_error_string.pod" + ], + "doc/html/man3/ERR_get_error.html" => [ + "doc/man3/ERR_get_error.pod" + ], + "doc/html/man3/ERR_load_crypto_strings.html" => [ + "doc/man3/ERR_load_crypto_strings.pod" + ], + "doc/html/man3/ERR_load_strings.html" => [ + "doc/man3/ERR_load_strings.pod" + ], + "doc/html/man3/ERR_new.html" => [ + "doc/man3/ERR_new.pod" + ], + "doc/html/man3/ERR_print_errors.html" => [ + "doc/man3/ERR_print_errors.pod" + ], + "doc/html/man3/ERR_put_error.html" => [ + "doc/man3/ERR_put_error.pod" + ], + "doc/html/man3/ERR_remove_state.html" => [ + "doc/man3/ERR_remove_state.pod" + ], + "doc/html/man3/ERR_set_mark.html" => [ + "doc/man3/ERR_set_mark.pod" + ], + "doc/html/man3/EVP_ASYM_CIPHER_free.html" => [ + "doc/man3/EVP_ASYM_CIPHER_free.pod" + ], + "doc/html/man3/EVP_BytesToKey.html" => [ + "doc/man3/EVP_BytesToKey.pod" + ], + "doc/html/man3/EVP_CIPHER_CTX_get_app_data.html" => [ + "doc/man3/EVP_CIPHER_CTX_get_app_data.pod" + ], + "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html" => [ + "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" + ], + "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html" => [ + "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" + ], + "doc/html/man3/EVP_CIPHER_meth_new.html" => [ + "doc/man3/EVP_CIPHER_meth_new.pod" + ], + "doc/html/man3/EVP_DigestInit.html" => [ + "doc/man3/EVP_DigestInit.pod" + ], + "doc/html/man3/EVP_DigestSignInit.html" => [ + "doc/man3/EVP_DigestSignInit.pod" + ], + "doc/html/man3/EVP_DigestVerifyInit.html" => [ + "doc/man3/EVP_DigestVerifyInit.pod" + ], + "doc/html/man3/EVP_EncodeInit.html" => [ + "doc/man3/EVP_EncodeInit.pod" + ], + "doc/html/man3/EVP_EncryptInit.html" => [ + "doc/man3/EVP_EncryptInit.pod" + ], + "doc/html/man3/EVP_KDF.html" => [ + "doc/man3/EVP_KDF.pod" + ], + "doc/html/man3/EVP_KEM_free.html" => [ + "doc/man3/EVP_KEM_free.pod" + ], + "doc/html/man3/EVP_KEYEXCH_free.html" => [ + "doc/man3/EVP_KEYEXCH_free.pod" + ], + "doc/html/man3/EVP_KEYMGMT.html" => [ + "doc/man3/EVP_KEYMGMT.pod" + ], + "doc/html/man3/EVP_MAC.html" => [ + "doc/man3/EVP_MAC.pod" + ], + "doc/html/man3/EVP_MD_meth_new.html" => [ + "doc/man3/EVP_MD_meth_new.pod" + ], + "doc/html/man3/EVP_OpenInit.html" => [ + "doc/man3/EVP_OpenInit.pod" + ], + "doc/html/man3/EVP_PBE_CipherInit.html" => [ + "doc/man3/EVP_PBE_CipherInit.pod" + ], + "doc/html/man3/EVP_PKEY2PKCS8.html" => [ + "doc/man3/EVP_PKEY2PKCS8.pod" + ], + "doc/html/man3/EVP_PKEY_ASN1_METHOD.html" => [ + "doc/man3/EVP_PKEY_ASN1_METHOD.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_ctrl.html" => [ + "doc/man3/EVP_PKEY_CTX_ctrl.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html" => [ + "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ + "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_new.html" => [ + "doc/man3/EVP_PKEY_CTX_new.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html" => [ + "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html" => [ + "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_params.html" => [ + "doc/man3/EVP_PKEY_CTX_set_params.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html" => [ + "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html" => [ + "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html" => [ + "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" + ], + "doc/html/man3/EVP_PKEY_asn1_get_count.html" => [ + "doc/man3/EVP_PKEY_asn1_get_count.pod" + ], + "doc/html/man3/EVP_PKEY_check.html" => [ + "doc/man3/EVP_PKEY_check.pod" + ], + "doc/html/man3/EVP_PKEY_copy_parameters.html" => [ + "doc/man3/EVP_PKEY_copy_parameters.pod" + ], + "doc/html/man3/EVP_PKEY_decapsulate.html" => [ + "doc/man3/EVP_PKEY_decapsulate.pod" + ], + "doc/html/man3/EVP_PKEY_decrypt.html" => [ + "doc/man3/EVP_PKEY_decrypt.pod" + ], + "doc/html/man3/EVP_PKEY_derive.html" => [ + "doc/man3/EVP_PKEY_derive.pod" + ], + "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html" => [ + "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" + ], + "doc/html/man3/EVP_PKEY_encapsulate.html" => [ + "doc/man3/EVP_PKEY_encapsulate.pod" + ], + "doc/html/man3/EVP_PKEY_encrypt.html" => [ + "doc/man3/EVP_PKEY_encrypt.pod" + ], + "doc/html/man3/EVP_PKEY_fromdata.html" => [ + "doc/man3/EVP_PKEY_fromdata.pod" + ], + "doc/html/man3/EVP_PKEY_get_attr.html" => [ + "doc/man3/EVP_PKEY_get_attr.pod" + ], + "doc/html/man3/EVP_PKEY_get_default_digest_nid.html" => [ + "doc/man3/EVP_PKEY_get_default_digest_nid.pod" + ], + "doc/html/man3/EVP_PKEY_get_field_type.html" => [ + "doc/man3/EVP_PKEY_get_field_type.pod" + ], + "doc/html/man3/EVP_PKEY_get_group_name.html" => [ + "doc/man3/EVP_PKEY_get_group_name.pod" + ], + "doc/html/man3/EVP_PKEY_get_size.html" => [ + "doc/man3/EVP_PKEY_get_size.pod" + ], + "doc/html/man3/EVP_PKEY_gettable_params.html" => [ + "doc/man3/EVP_PKEY_gettable_params.pod" + ], + "doc/html/man3/EVP_PKEY_is_a.html" => [ + "doc/man3/EVP_PKEY_is_a.pod" + ], + "doc/html/man3/EVP_PKEY_keygen.html" => [ + "doc/man3/EVP_PKEY_keygen.pod" + ], + "doc/html/man3/EVP_PKEY_meth_get_count.html" => [ + "doc/man3/EVP_PKEY_meth_get_count.pod" + ], + "doc/html/man3/EVP_PKEY_meth_new.html" => [ + "doc/man3/EVP_PKEY_meth_new.pod" + ], + "doc/html/man3/EVP_PKEY_new.html" => [ + "doc/man3/EVP_PKEY_new.pod" + ], + "doc/html/man3/EVP_PKEY_print_private.html" => [ + "doc/man3/EVP_PKEY_print_private.pod" + ], + "doc/html/man3/EVP_PKEY_set1_RSA.html" => [ + "doc/man3/EVP_PKEY_set1_RSA.pod" + ], + "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html" => [ + "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" + ], + "doc/html/man3/EVP_PKEY_set_type.html" => [ + "doc/man3/EVP_PKEY_set_type.pod" + ], + "doc/html/man3/EVP_PKEY_settable_params.html" => [ + "doc/man3/EVP_PKEY_settable_params.pod" + ], + "doc/html/man3/EVP_PKEY_sign.html" => [ + "doc/man3/EVP_PKEY_sign.pod" + ], + "doc/html/man3/EVP_PKEY_todata.html" => [ + "doc/man3/EVP_PKEY_todata.pod" + ], + "doc/html/man3/EVP_PKEY_verify.html" => [ + "doc/man3/EVP_PKEY_verify.pod" + ], + "doc/html/man3/EVP_PKEY_verify_recover.html" => [ + "doc/man3/EVP_PKEY_verify_recover.pod" + ], + "doc/html/man3/EVP_RAND.html" => [ + "doc/man3/EVP_RAND.pod" + ], + "doc/html/man3/EVP_SIGNATURE.html" => [ + "doc/man3/EVP_SIGNATURE.pod" + ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], + "doc/html/man3/EVP_SealInit.html" => [ + "doc/man3/EVP_SealInit.pod" + ], + "doc/html/man3/EVP_SignInit.html" => [ + "doc/man3/EVP_SignInit.pod" + ], + "doc/html/man3/EVP_VerifyInit.html" => [ + "doc/man3/EVP_VerifyInit.pod" + ], + "doc/html/man3/EVP_aes_128_gcm.html" => [ + "doc/man3/EVP_aes_128_gcm.pod" + ], + "doc/html/man3/EVP_aria_128_gcm.html" => [ + "doc/man3/EVP_aria_128_gcm.pod" + ], + "doc/html/man3/EVP_bf_cbc.html" => [ + "doc/man3/EVP_bf_cbc.pod" + ], + "doc/html/man3/EVP_blake2b512.html" => [ + "doc/man3/EVP_blake2b512.pod" + ], + "doc/html/man3/EVP_camellia_128_ecb.html" => [ + "doc/man3/EVP_camellia_128_ecb.pod" + ], + "doc/html/man3/EVP_cast5_cbc.html" => [ + "doc/man3/EVP_cast5_cbc.pod" + ], + "doc/html/man3/EVP_chacha20.html" => [ + "doc/man3/EVP_chacha20.pod" + ], + "doc/html/man3/EVP_des_cbc.html" => [ + "doc/man3/EVP_des_cbc.pod" + ], + "doc/html/man3/EVP_desx_cbc.html" => [ + "doc/man3/EVP_desx_cbc.pod" + ], + "doc/html/man3/EVP_idea_cbc.html" => [ + "doc/man3/EVP_idea_cbc.pod" + ], + "doc/html/man3/EVP_md2.html" => [ + "doc/man3/EVP_md2.pod" + ], + "doc/html/man3/EVP_md4.html" => [ + "doc/man3/EVP_md4.pod" + ], + "doc/html/man3/EVP_md5.html" => [ + "doc/man3/EVP_md5.pod" + ], + "doc/html/man3/EVP_mdc2.html" => [ + "doc/man3/EVP_mdc2.pod" + ], + "doc/html/man3/EVP_rc2_cbc.html" => [ + "doc/man3/EVP_rc2_cbc.pod" + ], + "doc/html/man3/EVP_rc4.html" => [ + "doc/man3/EVP_rc4.pod" + ], + "doc/html/man3/EVP_rc5_32_12_16_cbc.html" => [ + "doc/man3/EVP_rc5_32_12_16_cbc.pod" + ], + "doc/html/man3/EVP_ripemd160.html" => [ + "doc/man3/EVP_ripemd160.pod" + ], + "doc/html/man3/EVP_seed_cbc.html" => [ + "doc/man3/EVP_seed_cbc.pod" + ], + "doc/html/man3/EVP_set_default_properties.html" => [ + "doc/man3/EVP_set_default_properties.pod" + ], + "doc/html/man3/EVP_sha1.html" => [ + "doc/man3/EVP_sha1.pod" + ], + "doc/html/man3/EVP_sha224.html" => [ + "doc/man3/EVP_sha224.pod" + ], + "doc/html/man3/EVP_sha3_224.html" => [ + "doc/man3/EVP_sha3_224.pod" + ], + "doc/html/man3/EVP_sm3.html" => [ + "doc/man3/EVP_sm3.pod" + ], + "doc/html/man3/EVP_sm4_cbc.html" => [ + "doc/man3/EVP_sm4_cbc.pod" + ], + "doc/html/man3/EVP_whirlpool.html" => [ + "doc/man3/EVP_whirlpool.pod" + ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], + "doc/html/man3/HMAC.html" => [ + "doc/man3/HMAC.pod" + ], + "doc/html/man3/MD5.html" => [ + "doc/man3/MD5.pod" + ], + "doc/html/man3/MDC2_Init.html" => [ + "doc/man3/MDC2_Init.pod" + ], + "doc/html/man3/NCONF_new_ex.html" => [ + "doc/man3/NCONF_new_ex.pod" + ], + "doc/html/man3/OBJ_nid2obj.html" => [ + "doc/man3/OBJ_nid2obj.pod" + ], + "doc/html/man3/OCSP_REQUEST_new.html" => [ + "doc/man3/OCSP_REQUEST_new.pod" + ], + "doc/html/man3/OCSP_cert_to_id.html" => [ + "doc/man3/OCSP_cert_to_id.pod" + ], + "doc/html/man3/OCSP_request_add1_nonce.html" => [ + "doc/man3/OCSP_request_add1_nonce.pod" + ], + "doc/html/man3/OCSP_resp_find_status.html" => [ + "doc/man3/OCSP_resp_find_status.pod" + ], + "doc/html/man3/OCSP_response_status.html" => [ + "doc/man3/OCSP_response_status.pod" + ], + "doc/html/man3/OCSP_sendreq_new.html" => [ + "doc/man3/OCSP_sendreq_new.pod" + ], + "doc/html/man3/OPENSSL_Applink.html" => [ + "doc/man3/OPENSSL_Applink.pod" + ], + "doc/html/man3/OPENSSL_FILE.html" => [ + "doc/man3/OPENSSL_FILE.pod" + ], + "doc/html/man3/OPENSSL_LH_COMPFUNC.html" => [ + "doc/man3/OPENSSL_LH_COMPFUNC.pod" + ], + "doc/html/man3/OPENSSL_LH_stats.html" => [ + "doc/man3/OPENSSL_LH_stats.pod" + ], + "doc/html/man3/OPENSSL_config.html" => [ + "doc/man3/OPENSSL_config.pod" + ], + "doc/html/man3/OPENSSL_fork_prepare.html" => [ + "doc/man3/OPENSSL_fork_prepare.pod" + ], + "doc/html/man3/OPENSSL_gmtime.html" => [ + "doc/man3/OPENSSL_gmtime.pod" + ], + "doc/html/man3/OPENSSL_hexchar2int.html" => [ + "doc/man3/OPENSSL_hexchar2int.pod" + ], + "doc/html/man3/OPENSSL_ia32cap.html" => [ + "doc/man3/OPENSSL_ia32cap.pod" + ], + "doc/html/man3/OPENSSL_init_crypto.html" => [ + "doc/man3/OPENSSL_init_crypto.pod" + ], + "doc/html/man3/OPENSSL_init_ssl.html" => [ + "doc/man3/OPENSSL_init_ssl.pod" + ], + "doc/html/man3/OPENSSL_instrument_bus.html" => [ + "doc/man3/OPENSSL_instrument_bus.pod" + ], + "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ + "doc/man3/OPENSSL_load_builtin_modules.pod" + ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], + "doc/html/man3/OPENSSL_malloc.html" => [ + "doc/man3/OPENSSL_malloc.pod" + ], + "doc/html/man3/OPENSSL_ppccap.html" => [ + "doc/man3/OPENSSL_ppccap.pod" + ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], + "doc/html/man3/OPENSSL_s390xcap.html" => [ + "doc/man3/OPENSSL_s390xcap.pod" + ], + "doc/html/man3/OPENSSL_secure_malloc.html" => [ + "doc/man3/OPENSSL_secure_malloc.pod" + ], + "doc/html/man3/OPENSSL_strcasecmp.html" => [ + "doc/man3/OPENSSL_strcasecmp.pod" + ], + "doc/html/man3/OSSL_ALGORITHM.html" => [ + "doc/man3/OSSL_ALGORITHM.pod" + ], + "doc/html/man3/OSSL_CALLBACK.html" => [ + "doc/man3/OSSL_CALLBACK.pod" + ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], + "doc/html/man3/OSSL_CMP_CTX_new.html" => [ + "doc/man3/OSSL_CMP_CTX_new.pod" + ], + "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ + "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" + ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], + "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ + "doc/man3/OSSL_CMP_ITAV_set0.pod" + ], + "doc/html/man3/OSSL_CMP_MSG_get0_header.html" => [ + "doc/man3/OSSL_CMP_MSG_get0_header.pod" + ], + "doc/html/man3/OSSL_CMP_MSG_http_perform.html" => [ + "doc/man3/OSSL_CMP_MSG_http_perform.pod" + ], + "doc/html/man3/OSSL_CMP_SRV_CTX_new.html" => [ + "doc/man3/OSSL_CMP_SRV_CTX_new.pod" + ], + "doc/html/man3/OSSL_CMP_STATUSINFO_new.html" => [ + "doc/man3/OSSL_CMP_STATUSINFO_new.pod" + ], + "doc/html/man3/OSSL_CMP_exec_certreq.html" => [ + "doc/man3/OSSL_CMP_exec_certreq.pod" + ], + "doc/html/man3/OSSL_CMP_log_open.html" => [ + "doc/man3/OSSL_CMP_log_open.pod" + ], + "doc/html/man3/OSSL_CMP_validate_msg.html" => [ + "doc/man3/OSSL_CMP_validate_msg.pod" + ], + "doc/html/man3/OSSL_CORE_MAKE_FUNC.html" => [ + "doc/man3/OSSL_CORE_MAKE_FUNC.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html" => [ + "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html" => [ + "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" + ], + "doc/html/man3/OSSL_CRMF_pbmp_new.html" => [ + "doc/man3/OSSL_CRMF_pbmp_new.pod" + ], + "doc/html/man3/OSSL_DECODER.html" => [ + "doc/man3/OSSL_DECODER.pod" + ], + "doc/html/man3/OSSL_DECODER_CTX.html" => [ + "doc/man3/OSSL_DECODER_CTX.pod" + ], + "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html" => [ + "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" + ], + "doc/html/man3/OSSL_DECODER_from_bio.html" => [ + "doc/man3/OSSL_DECODER_from_bio.pod" + ], + "doc/html/man3/OSSL_DISPATCH.html" => [ + "doc/man3/OSSL_DISPATCH.pod" + ], + "doc/html/man3/OSSL_ENCODER.html" => [ + "doc/man3/OSSL_ENCODER.pod" + ], + "doc/html/man3/OSSL_ENCODER_CTX.html" => [ + "doc/man3/OSSL_ENCODER_CTX.pod" + ], + "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html" => [ + "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" + ], + "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ + "doc/man3/OSSL_ENCODER_to_bio.pod" + ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], + "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ + "doc/man3/OSSL_ESS_check_signing_certs.pod" + ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], + "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ + "doc/man3/OSSL_HTTP_REQ_CTX.pod" + ], + "doc/html/man3/OSSL_HTTP_parse_url.html" => [ + "doc/man3/OSSL_HTTP_parse_url.pod" + ], + "doc/html/man3/OSSL_HTTP_transfer.html" => [ + "doc/man3/OSSL_HTTP_transfer.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], + "doc/html/man3/OSSL_ITEM.html" => [ + "doc/man3/OSSL_ITEM.pod" + ], + "doc/html/man3/OSSL_LIB_CTX.html" => [ + "doc/man3/OSSL_LIB_CTX.pod" + ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], + "doc/html/man3/OSSL_PARAM.html" => [ + "doc/man3/OSSL_PARAM.pod" + ], + "doc/html/man3/OSSL_PARAM_BLD.html" => [ + "doc/man3/OSSL_PARAM_BLD.pod" + ], + "doc/html/man3/OSSL_PARAM_allocate_from_text.html" => [ + "doc/man3/OSSL_PARAM_allocate_from_text.pod" + ], + "doc/html/man3/OSSL_PARAM_dup.html" => [ + "doc/man3/OSSL_PARAM_dup.pod" + ], + "doc/html/man3/OSSL_PARAM_int.html" => [ + "doc/man3/OSSL_PARAM_int.pod" + ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], + "doc/html/man3/OSSL_PROVIDER.html" => [ + "doc/man3/OSSL_PROVIDER.pod" + ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], + "doc/html/man3/OSSL_SELF_TEST_new.html" => [ + "doc/man3/OSSL_SELF_TEST_new.pod" + ], + "doc/html/man3/OSSL_SELF_TEST_set_callback.html" => [ + "doc/man3/OSSL_SELF_TEST_set_callback.pod" + ], + "doc/html/man3/OSSL_STORE_INFO.html" => [ + "doc/man3/OSSL_STORE_INFO.pod" + ], + "doc/html/man3/OSSL_STORE_LOADER.html" => [ + "doc/man3/OSSL_STORE_LOADER.pod" + ], + "doc/html/man3/OSSL_STORE_SEARCH.html" => [ + "doc/man3/OSSL_STORE_SEARCH.pod" + ], + "doc/html/man3/OSSL_STORE_attach.html" => [ + "doc/man3/OSSL_STORE_attach.pod" + ], + "doc/html/man3/OSSL_STORE_expect.html" => [ + "doc/man3/OSSL_STORE_expect.pod" + ], + "doc/html/man3/OSSL_STORE_open.html" => [ + "doc/man3/OSSL_STORE_open.pod" + ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], + "doc/html/man3/OSSL_trace_enabled.html" => [ + "doc/man3/OSSL_trace_enabled.pod" + ], + "doc/html/man3/OSSL_trace_get_category_num.html" => [ + "doc/man3/OSSL_trace_get_category_num.pod" + ], + "doc/html/man3/OSSL_trace_set_channel.html" => [ + "doc/man3/OSSL_trace_set_channel.pod" + ], + "doc/html/man3/OpenSSL_add_all_algorithms.html" => [ + "doc/man3/OpenSSL_add_all_algorithms.pod" + ], + "doc/html/man3/OpenSSL_version.html" => [ + "doc/man3/OpenSSL_version.pod" + ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], + "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ + "doc/man3/PEM_X509_INFO_read_bio_ex.pod" + ], + "doc/html/man3/PEM_bytes_read_bio.html" => [ + "doc/man3/PEM_bytes_read_bio.pod" + ], + "doc/html/man3/PEM_read.html" => [ + "doc/man3/PEM_read.pod" + ], + "doc/html/man3/PEM_read_CMS.html" => [ + "doc/man3/PEM_read_CMS.pod" + ], + "doc/html/man3/PEM_read_bio_PrivateKey.html" => [ + "doc/man3/PEM_read_bio_PrivateKey.pod" + ], + "doc/html/man3/PEM_read_bio_ex.html" => [ + "doc/man3/PEM_read_bio_ex.pod" + ], + "doc/html/man3/PEM_write_bio_CMS_stream.html" => [ + "doc/man3/PEM_write_bio_CMS_stream.pod" + ], + "doc/html/man3/PEM_write_bio_PKCS7_stream.html" => [ + "doc/man3/PEM_write_bio_PKCS7_stream.pod" + ], + "doc/html/man3/PKCS12_PBE_keyivgen.html" => [ + "doc/man3/PKCS12_PBE_keyivgen.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_create_cert.html" => [ + "doc/man3/PKCS12_SAFEBAG_create_cert.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ + "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], + "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ + "doc/man3/PKCS12_add1_attr_by_NID.pod" + ], + "doc/html/man3/PKCS12_add_CSPName_asc.html" => [ + "doc/man3/PKCS12_add_CSPName_asc.pod" + ], + "doc/html/man3/PKCS12_add_cert.html" => [ + "doc/man3/PKCS12_add_cert.pod" + ], + "doc/html/man3/PKCS12_add_friendlyname_asc.html" => [ + "doc/man3/PKCS12_add_friendlyname_asc.pod" + ], + "doc/html/man3/PKCS12_add_localkeyid.html" => [ + "doc/man3/PKCS12_add_localkeyid.pod" + ], + "doc/html/man3/PKCS12_add_safe.html" => [ + "doc/man3/PKCS12_add_safe.pod" + ], + "doc/html/man3/PKCS12_create.html" => [ + "doc/man3/PKCS12_create.pod" + ], + "doc/html/man3/PKCS12_decrypt_skey.html" => [ + "doc/man3/PKCS12_decrypt_skey.pod" + ], + "doc/html/man3/PKCS12_gen_mac.html" => [ + "doc/man3/PKCS12_gen_mac.pod" + ], + "doc/html/man3/PKCS12_get_friendlyname.html" => [ + "doc/man3/PKCS12_get_friendlyname.pod" + ], + "doc/html/man3/PKCS12_init.html" => [ + "doc/man3/PKCS12_init.pod" + ], + "doc/html/man3/PKCS12_item_decrypt_d2i.html" => [ + "doc/man3/PKCS12_item_decrypt_d2i.pod" + ], + "doc/html/man3/PKCS12_key_gen_utf8_ex.html" => [ + "doc/man3/PKCS12_key_gen_utf8_ex.pod" + ], + "doc/html/man3/PKCS12_newpass.html" => [ + "doc/man3/PKCS12_newpass.pod" + ], + "doc/html/man3/PKCS12_pack_p7encdata.html" => [ + "doc/man3/PKCS12_pack_p7encdata.pod" + ], + "doc/html/man3/PKCS12_parse.html" => [ + "doc/man3/PKCS12_parse.pod" + ], + "doc/html/man3/PKCS5_PBE_keyivgen.html" => [ + "doc/man3/PKCS5_PBE_keyivgen.pod" + ], + "doc/html/man3/PKCS5_PBKDF2_HMAC.html" => [ + "doc/man3/PKCS5_PBKDF2_HMAC.pod" + ], + "doc/html/man3/PKCS7_decrypt.html" => [ + "doc/man3/PKCS7_decrypt.pod" + ], + "doc/html/man3/PKCS7_encrypt.html" => [ + "doc/man3/PKCS7_encrypt.pod" + ], + "doc/html/man3/PKCS7_get_octet_string.html" => [ + "doc/man3/PKCS7_get_octet_string.pod" + ], + "doc/html/man3/PKCS7_sign.html" => [ + "doc/man3/PKCS7_sign.pod" + ], + "doc/html/man3/PKCS7_sign_add_signer.html" => [ + "doc/man3/PKCS7_sign_add_signer.pod" + ], + "doc/html/man3/PKCS7_type_is_other.html" => [ + "doc/man3/PKCS7_type_is_other.pod" + ], + "doc/html/man3/PKCS7_verify.html" => [ + "doc/man3/PKCS7_verify.pod" + ], + "doc/html/man3/PKCS8_encrypt.html" => [ + "doc/man3/PKCS8_encrypt.pod" + ], + "doc/html/man3/PKCS8_pkey_add1_attr.html" => [ + "doc/man3/PKCS8_pkey_add1_attr.pod" + ], + "doc/html/man3/RAND_add.html" => [ + "doc/man3/RAND_add.pod" + ], + "doc/html/man3/RAND_bytes.html" => [ + "doc/man3/RAND_bytes.pod" + ], + "doc/html/man3/RAND_cleanup.html" => [ + "doc/man3/RAND_cleanup.pod" + ], + "doc/html/man3/RAND_egd.html" => [ + "doc/man3/RAND_egd.pod" + ], + "doc/html/man3/RAND_get0_primary.html" => [ + "doc/man3/RAND_get0_primary.pod" + ], + "doc/html/man3/RAND_load_file.html" => [ + "doc/man3/RAND_load_file.pod" + ], + "doc/html/man3/RAND_set_DRBG_type.html" => [ + "doc/man3/RAND_set_DRBG_type.pod" + ], + "doc/html/man3/RAND_set_rand_method.html" => [ + "doc/man3/RAND_set_rand_method.pod" + ], + "doc/html/man3/RC4_set_key.html" => [ + "doc/man3/RC4_set_key.pod" + ], + "doc/html/man3/RIPEMD160_Init.html" => [ + "doc/man3/RIPEMD160_Init.pod" + ], + "doc/html/man3/RSA_blinding_on.html" => [ + "doc/man3/RSA_blinding_on.pod" + ], + "doc/html/man3/RSA_check_key.html" => [ + "doc/man3/RSA_check_key.pod" + ], + "doc/html/man3/RSA_generate_key.html" => [ + "doc/man3/RSA_generate_key.pod" + ], + "doc/html/man3/RSA_get0_key.html" => [ + "doc/man3/RSA_get0_key.pod" + ], + "doc/html/man3/RSA_meth_new.html" => [ + "doc/man3/RSA_meth_new.pod" + ], + "doc/html/man3/RSA_new.html" => [ + "doc/man3/RSA_new.pod" + ], + "doc/html/man3/RSA_padding_add_PKCS1_type_1.html" => [ + "doc/man3/RSA_padding_add_PKCS1_type_1.pod" + ], + "doc/html/man3/RSA_print.html" => [ + "doc/man3/RSA_print.pod" + ], + "doc/html/man3/RSA_private_encrypt.html" => [ + "doc/man3/RSA_private_encrypt.pod" + ], + "doc/html/man3/RSA_public_encrypt.html" => [ + "doc/man3/RSA_public_encrypt.pod" + ], + "doc/html/man3/RSA_set_method.html" => [ + "doc/man3/RSA_set_method.pod" + ], + "doc/html/man3/RSA_sign.html" => [ + "doc/man3/RSA_sign.pod" + ], + "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html" => [ + "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" + ], + "doc/html/man3/RSA_size.html" => [ + "doc/man3/RSA_size.pod" + ], + "doc/html/man3/SCT_new.html" => [ + "doc/man3/SCT_new.pod" + ], + "doc/html/man3/SCT_print.html" => [ + "doc/man3/SCT_print.pod" + ], + "doc/html/man3/SCT_validate.html" => [ + "doc/man3/SCT_validate.pod" + ], + "doc/html/man3/SHA256_Init.html" => [ + "doc/man3/SHA256_Init.pod" + ], + "doc/html/man3/SMIME_read_ASN1.html" => [ + "doc/man3/SMIME_read_ASN1.pod" + ], + "doc/html/man3/SMIME_read_CMS.html" => [ + "doc/man3/SMIME_read_CMS.pod" + ], + "doc/html/man3/SMIME_read_PKCS7.html" => [ + "doc/man3/SMIME_read_PKCS7.pod" + ], + "doc/html/man3/SMIME_write_ASN1.html" => [ + "doc/man3/SMIME_write_ASN1.pod" + ], + "doc/html/man3/SMIME_write_CMS.html" => [ + "doc/man3/SMIME_write_CMS.pod" + ], + "doc/html/man3/SMIME_write_PKCS7.html" => [ + "doc/man3/SMIME_write_PKCS7.pod" + ], + "doc/html/man3/SRP_Calc_B.html" => [ + "doc/man3/SRP_Calc_B.pod" + ], + "doc/html/man3/SRP_VBASE_new.html" => [ + "doc/man3/SRP_VBASE_new.pod" + ], + "doc/html/man3/SRP_create_verifier.html" => [ + "doc/man3/SRP_create_verifier.pod" + ], + "doc/html/man3/SRP_user_pwd_new.html" => [ + "doc/man3/SRP_user_pwd_new.pod" + ], + "doc/html/man3/SSL_CIPHER_get_name.html" => [ + "doc/man3/SSL_CIPHER_get_name.pod" + ], + "doc/html/man3/SSL_COMP_add_compression_method.html" => [ + "doc/man3/SSL_COMP_add_compression_method.pod" + ], + "doc/html/man3/SSL_CONF_CTX_new.html" => [ + "doc/man3/SSL_CONF_CTX_new.pod" + ], + "doc/html/man3/SSL_CONF_CTX_set1_prefix.html" => [ + "doc/man3/SSL_CONF_CTX_set1_prefix.pod" + ], + "doc/html/man3/SSL_CONF_CTX_set_flags.html" => [ + "doc/man3/SSL_CONF_CTX_set_flags.pod" + ], + "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html" => [ + "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" + ], + "doc/html/man3/SSL_CONF_cmd.html" => [ + "doc/man3/SSL_CONF_cmd.pod" + ], + "doc/html/man3/SSL_CONF_cmd_argv.html" => [ + "doc/man3/SSL_CONF_cmd_argv.pod" + ], + "doc/html/man3/SSL_CTX_add1_chain_cert.html" => [ + "doc/man3/SSL_CTX_add1_chain_cert.pod" + ], + "doc/html/man3/SSL_CTX_add_extra_chain_cert.html" => [ + "doc/man3/SSL_CTX_add_extra_chain_cert.pod" + ], + "doc/html/man3/SSL_CTX_add_session.html" => [ + "doc/man3/SSL_CTX_add_session.pod" + ], + "doc/html/man3/SSL_CTX_config.html" => [ + "doc/man3/SSL_CTX_config.pod" + ], + "doc/html/man3/SSL_CTX_ctrl.html" => [ + "doc/man3/SSL_CTX_ctrl.pod" + ], + "doc/html/man3/SSL_CTX_dane_enable.html" => [ + "doc/man3/SSL_CTX_dane_enable.pod" + ], + "doc/html/man3/SSL_CTX_flush_sessions.html" => [ + "doc/man3/SSL_CTX_flush_sessions.pod" + ], + "doc/html/man3/SSL_CTX_free.html" => [ + "doc/man3/SSL_CTX_free.pod" + ], + "doc/html/man3/SSL_CTX_get0_param.html" => [ + "doc/man3/SSL_CTX_get0_param.pod" + ], + "doc/html/man3/SSL_CTX_get_verify_mode.html" => [ + "doc/man3/SSL_CTX_get_verify_mode.pod" + ], + "doc/html/man3/SSL_CTX_has_client_custom_ext.html" => [ + "doc/man3/SSL_CTX_has_client_custom_ext.pod" + ], + "doc/html/man3/SSL_CTX_load_verify_locations.html" => [ + "doc/man3/SSL_CTX_load_verify_locations.pod" + ], + "doc/html/man3/SSL_CTX_new.html" => [ + "doc/man3/SSL_CTX_new.pod" + ], + "doc/html/man3/SSL_CTX_sess_number.html" => [ + "doc/man3/SSL_CTX_sess_number.pod" + ], + "doc/html/man3/SSL_CTX_sess_set_cache_size.html" => [ + "doc/man3/SSL_CTX_sess_set_cache_size.pod" + ], + "doc/html/man3/SSL_CTX_sess_set_get_cb.html" => [ + "doc/man3/SSL_CTX_sess_set_get_cb.pod" + ], + "doc/html/man3/SSL_CTX_sessions.html" => [ + "doc/man3/SSL_CTX_sessions.pod" + ], + "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ + "doc/man3/SSL_CTX_set0_CA_list.pod" + ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], + "doc/html/man3/SSL_CTX_set1_curves.html" => [ + "doc/man3/SSL_CTX_set1_curves.pod" + ], + "doc/html/man3/SSL_CTX_set1_sigalgs.html" => [ + "doc/man3/SSL_CTX_set1_sigalgs.pod" + ], + "doc/html/man3/SSL_CTX_set1_verify_cert_store.html" => [ + "doc/man3/SSL_CTX_set1_verify_cert_store.pod" + ], + "doc/html/man3/SSL_CTX_set_alpn_select_cb.html" => [ + "doc/man3/SSL_CTX_set_alpn_select_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_cert_cb.html" => [ + "doc/man3/SSL_CTX_set_cert_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_cert_store.html" => [ + "doc/man3/SSL_CTX_set_cert_store.pod" + ], + "doc/html/man3/SSL_CTX_set_cert_verify_callback.html" => [ + "doc/man3/SSL_CTX_set_cert_verify_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_cipher_list.html" => [ + "doc/man3/SSL_CTX_set_cipher_list.pod" + ], + "doc/html/man3/SSL_CTX_set_client_cert_cb.html" => [ + "doc/man3/SSL_CTX_set_client_cert_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_client_hello_cb.html" => [ + "doc/man3/SSL_CTX_set_client_hello_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_ct_validation_callback.html" => [ + "doc/man3/SSL_CTX_set_ct_validation_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_ctlog_list_file.html" => [ + "doc/man3/SSL_CTX_set_ctlog_list_file.pod" + ], + "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ + "doc/man3/SSL_CTX_set_default_passwd_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], + "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ + "doc/man3/SSL_CTX_set_generate_session_id.pod" + ], + "doc/html/man3/SSL_CTX_set_info_callback.html" => [ + "doc/man3/SSL_CTX_set_info_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_keylog_callback.html" => [ + "doc/man3/SSL_CTX_set_keylog_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_max_cert_list.html" => [ + "doc/man3/SSL_CTX_set_max_cert_list.pod" + ], + "doc/html/man3/SSL_CTX_set_min_proto_version.html" => [ + "doc/man3/SSL_CTX_set_min_proto_version.pod" + ], + "doc/html/man3/SSL_CTX_set_mode.html" => [ + "doc/man3/SSL_CTX_set_mode.pod" + ], + "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ + "doc/man3/SSL_CTX_set_msg_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ + "doc/man3/SSL_CTX_set_num_tickets.pod" + ], + "doc/html/man3/SSL_CTX_set_options.html" => [ + "doc/man3/SSL_CTX_set_options.pod" + ], + "doc/html/man3/SSL_CTX_set_psk_client_callback.html" => [ + "doc/man3/SSL_CTX_set_psk_client_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_quiet_shutdown.html" => [ + "doc/man3/SSL_CTX_set_quiet_shutdown.pod" + ], + "doc/html/man3/SSL_CTX_set_read_ahead.html" => [ + "doc/man3/SSL_CTX_set_read_ahead.pod" + ], + "doc/html/man3/SSL_CTX_set_record_padding_callback.html" => [ + "doc/man3/SSL_CTX_set_record_padding_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_security_level.html" => [ + "doc/man3/SSL_CTX_set_security_level.pod" + ], + "doc/html/man3/SSL_CTX_set_session_cache_mode.html" => [ + "doc/man3/SSL_CTX_set_session_cache_mode.pod" + ], + "doc/html/man3/SSL_CTX_set_session_id_context.html" => [ + "doc/man3/SSL_CTX_set_session_id_context.pod" + ], + "doc/html/man3/SSL_CTX_set_session_ticket_cb.html" => [ + "doc/man3/SSL_CTX_set_session_ticket_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_split_send_fragment.html" => [ + "doc/man3/SSL_CTX_set_split_send_fragment.pod" + ], + "doc/html/man3/SSL_CTX_set_srp_password.html" => [ + "doc/man3/SSL_CTX_set_srp_password.pod" + ], + "doc/html/man3/SSL_CTX_set_ssl_version.html" => [ + "doc/man3/SSL_CTX_set_ssl_version.pod" + ], + "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html" => [ + "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_timeout.html" => [ + "doc/man3/SSL_CTX_set_timeout.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html" => [ + "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html" => [ + "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html" => [ + "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html" => [ + "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" + ], + "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html" => [ + "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_tmp_ecdh.html" => [ + "doc/man3/SSL_CTX_set_tmp_ecdh.pod" + ], + "doc/html/man3/SSL_CTX_set_verify.html" => [ + "doc/man3/SSL_CTX_set_verify.pod" + ], + "doc/html/man3/SSL_CTX_use_certificate.html" => [ + "doc/man3/SSL_CTX_use_certificate.pod" + ], + "doc/html/man3/SSL_CTX_use_psk_identity_hint.html" => [ + "doc/man3/SSL_CTX_use_psk_identity_hint.pod" + ], + "doc/html/man3/SSL_CTX_use_serverinfo.html" => [ + "doc/man3/SSL_CTX_use_serverinfo.pod" + ], + "doc/html/man3/SSL_SESSION_free.html" => [ + "doc/man3/SSL_SESSION_free.pod" + ], + "doc/html/man3/SSL_SESSION_get0_cipher.html" => [ + "doc/man3/SSL_SESSION_get0_cipher.pod" + ], + "doc/html/man3/SSL_SESSION_get0_hostname.html" => [ + "doc/man3/SSL_SESSION_get0_hostname.pod" + ], + "doc/html/man3/SSL_SESSION_get0_id_context.html" => [ + "doc/man3/SSL_SESSION_get0_id_context.pod" + ], + "doc/html/man3/SSL_SESSION_get0_peer.html" => [ + "doc/man3/SSL_SESSION_get0_peer.pod" + ], + "doc/html/man3/SSL_SESSION_get_compress_id.html" => [ + "doc/man3/SSL_SESSION_get_compress_id.pod" + ], + "doc/html/man3/SSL_SESSION_get_protocol_version.html" => [ + "doc/man3/SSL_SESSION_get_protocol_version.pod" + ], + "doc/html/man3/SSL_SESSION_get_time.html" => [ + "doc/man3/SSL_SESSION_get_time.pod" + ], + "doc/html/man3/SSL_SESSION_has_ticket.html" => [ + "doc/man3/SSL_SESSION_has_ticket.pod" + ], + "doc/html/man3/SSL_SESSION_is_resumable.html" => [ + "doc/man3/SSL_SESSION_is_resumable.pod" + ], + "doc/html/man3/SSL_SESSION_print.html" => [ + "doc/man3/SSL_SESSION_print.pod" + ], + "doc/html/man3/SSL_SESSION_set1_id.html" => [ + "doc/man3/SSL_SESSION_set1_id.pod" + ], + "doc/html/man3/SSL_accept.html" => [ + "doc/man3/SSL_accept.pod" + ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], + "doc/html/man3/SSL_alert_type_string.html" => [ + "doc/man3/SSL_alert_type_string.pod" + ], + "doc/html/man3/SSL_alloc_buffers.html" => [ + "doc/man3/SSL_alloc_buffers.pod" + ], + "doc/html/man3/SSL_check_chain.html" => [ + "doc/man3/SSL_check_chain.pod" + ], + "doc/html/man3/SSL_clear.html" => [ + "doc/man3/SSL_clear.pod" + ], + "doc/html/man3/SSL_connect.html" => [ + "doc/man3/SSL_connect.pod" + ], + "doc/html/man3/SSL_do_handshake.html" => [ + "doc/man3/SSL_do_handshake.pod" + ], + "doc/html/man3/SSL_export_keying_material.html" => [ + "doc/man3/SSL_export_keying_material.pod" + ], + "doc/html/man3/SSL_extension_supported.html" => [ + "doc/man3/SSL_extension_supported.pod" + ], + "doc/html/man3/SSL_free.html" => [ + "doc/man3/SSL_free.pod" + ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], + "doc/html/man3/SSL_get0_peer_scts.html" => [ + "doc/man3/SSL_get0_peer_scts.pod" + ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], + "doc/html/man3/SSL_get_SSL_CTX.html" => [ + "doc/man3/SSL_get_SSL_CTX.pod" + ], + "doc/html/man3/SSL_get_all_async_fds.html" => [ + "doc/man3/SSL_get_all_async_fds.pod" + ], + "doc/html/man3/SSL_get_certificate.html" => [ + "doc/man3/SSL_get_certificate.pod" + ], + "doc/html/man3/SSL_get_ciphers.html" => [ + "doc/man3/SSL_get_ciphers.pod" + ], + "doc/html/man3/SSL_get_client_random.html" => [ + "doc/man3/SSL_get_client_random.pod" + ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], + "doc/html/man3/SSL_get_current_cipher.html" => [ + "doc/man3/SSL_get_current_cipher.pod" + ], + "doc/html/man3/SSL_get_default_timeout.html" => [ + "doc/man3/SSL_get_default_timeout.pod" + ], + "doc/html/man3/SSL_get_error.html" => [ + "doc/man3/SSL_get_error.pod" + ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], + "doc/html/man3/SSL_get_extms_support.html" => [ + "doc/man3/SSL_get_extms_support.pod" + ], + "doc/html/man3/SSL_get_fd.html" => [ + "doc/man3/SSL_get_fd.pod" + ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], + "doc/html/man3/SSL_get_peer_cert_chain.html" => [ + "doc/man3/SSL_get_peer_cert_chain.pod" + ], + "doc/html/man3/SSL_get_peer_certificate.html" => [ + "doc/man3/SSL_get_peer_certificate.pod" + ], + "doc/html/man3/SSL_get_peer_signature_nid.html" => [ + "doc/man3/SSL_get_peer_signature_nid.pod" + ], + "doc/html/man3/SSL_get_peer_tmp_key.html" => [ + "doc/man3/SSL_get_peer_tmp_key.pod" + ], + "doc/html/man3/SSL_get_psk_identity.html" => [ + "doc/man3/SSL_get_psk_identity.pod" + ], + "doc/html/man3/SSL_get_rbio.html" => [ + "doc/man3/SSL_get_rbio.pod" + ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], + "doc/html/man3/SSL_get_session.html" => [ + "doc/man3/SSL_get_session.pod" + ], + "doc/html/man3/SSL_get_shared_sigalgs.html" => [ + "doc/man3/SSL_get_shared_sigalgs.pod" + ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], + "doc/html/man3/SSL_get_verify_result.html" => [ + "doc/man3/SSL_get_verify_result.pod" + ], + "doc/html/man3/SSL_get_version.html" => [ + "doc/man3/SSL_get_version.pod" + ], + "doc/html/man3/SSL_group_to_name.html" => [ + "doc/man3/SSL_group_to_name.pod" + ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], + "doc/html/man3/SSL_in_init.html" => [ + "doc/man3/SSL_in_init.pod" + ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], + "doc/html/man3/SSL_key_update.html" => [ + "doc/man3/SSL_key_update.pod" + ], + "doc/html/man3/SSL_library_init.html" => [ + "doc/man3/SSL_library_init.pod" + ], + "doc/html/man3/SSL_load_client_CA_file.html" => [ + "doc/man3/SSL_load_client_CA_file.pod" + ], + "doc/html/man3/SSL_new.html" => [ + "doc/man3/SSL_new.pod" + ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], + "doc/html/man3/SSL_pending.html" => [ + "doc/man3/SSL_pending.pod" + ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], + "doc/html/man3/SSL_read.html" => [ + "doc/man3/SSL_read.pod" + ], + "doc/html/man3/SSL_read_early_data.html" => [ + "doc/man3/SSL_read_early_data.pod" + ], + "doc/html/man3/SSL_rstate_string.html" => [ + "doc/man3/SSL_rstate_string.pod" + ], + "doc/html/man3/SSL_session_reused.html" => [ + "doc/man3/SSL_session_reused.pod" + ], + "doc/html/man3/SSL_set1_host.html" => [ + "doc/man3/SSL_set1_host.pod" + ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], + "doc/html/man3/SSL_set_async_callback.html" => [ + "doc/man3/SSL_set_async_callback.pod" + ], + "doc/html/man3/SSL_set_bio.html" => [ + "doc/man3/SSL_set_bio.pod" + ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], + "doc/html/man3/SSL_set_connect_state.html" => [ + "doc/man3/SSL_set_connect_state.pod" + ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], + "doc/html/man3/SSL_set_fd.html" => [ + "doc/man3/SSL_set_fd.pod" + ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], + "doc/html/man3/SSL_set_retry_verify.html" => [ + "doc/man3/SSL_set_retry_verify.pod" + ], + "doc/html/man3/SSL_set_session.html" => [ + "doc/man3/SSL_set_session.pod" + ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], + "doc/html/man3/SSL_set_shutdown.html" => [ + "doc/man3/SSL_set_shutdown.pod" + ], + "doc/html/man3/SSL_set_verify_result.html" => [ + "doc/man3/SSL_set_verify_result.pod" + ], + "doc/html/man3/SSL_shutdown.html" => [ + "doc/man3/SSL_shutdown.pod" + ], + "doc/html/man3/SSL_state_string.html" => [ + "doc/man3/SSL_state_string.pod" + ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], + "doc/html/man3/SSL_want.html" => [ + "doc/man3/SSL_want.pod" + ], + "doc/html/man3/SSL_write.html" => [ + "doc/man3/SSL_write.pod" + ], + "doc/html/man3/TS_RESP_CTX_new.html" => [ + "doc/man3/TS_RESP_CTX_new.pod" + ], + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" + ], + "doc/html/man3/UI_STRING.html" => [ + "doc/man3/UI_STRING.pod" + ], + "doc/html/man3/UI_UTIL_read_pw.html" => [ + "doc/man3/UI_UTIL_read_pw.pod" + ], + "doc/html/man3/UI_create_method.html" => [ + "doc/man3/UI_create_method.pod" + ], + "doc/html/man3/UI_new.html" => [ + "doc/man3/UI_new.pod" + ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], + "doc/html/man3/X509V3_get_d2i.html" => [ + "doc/man3/X509V3_get_d2i.pod" + ], + "doc/html/man3/X509V3_set_ctx.html" => [ + "doc/man3/X509V3_set_ctx.pod" + ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], + "doc/html/man3/X509_ALGOR_dup.html" => [ + "doc/man3/X509_ALGOR_dup.pod" + ], + "doc/html/man3/X509_ATTRIBUTE.html" => [ + "doc/man3/X509_ATTRIBUTE.pod" + ], + "doc/html/man3/X509_CRL_get0_by_serial.html" => [ + "doc/man3/X509_CRL_get0_by_serial.pod" + ], + "doc/html/man3/X509_EXTENSION_set_object.html" => [ + "doc/man3/X509_EXTENSION_set_object.pod" + ], + "doc/html/man3/X509_LOOKUP.html" => [ + "doc/man3/X509_LOOKUP.pod" + ], + "doc/html/man3/X509_LOOKUP_hash_dir.html" => [ + "doc/man3/X509_LOOKUP_hash_dir.pod" + ], + "doc/html/man3/X509_LOOKUP_meth_new.html" => [ + "doc/man3/X509_LOOKUP_meth_new.pod" + ], + "doc/html/man3/X509_NAME_ENTRY_get_object.html" => [ + "doc/man3/X509_NAME_ENTRY_get_object.pod" + ], + "doc/html/man3/X509_NAME_add_entry_by_txt.html" => [ + "doc/man3/X509_NAME_add_entry_by_txt.pod" + ], + "doc/html/man3/X509_NAME_get0_der.html" => [ + "doc/man3/X509_NAME_get0_der.pod" + ], + "doc/html/man3/X509_NAME_get_index_by_NID.html" => [ + "doc/man3/X509_NAME_get_index_by_NID.pod" + ], + "doc/html/man3/X509_NAME_print_ex.html" => [ + "doc/man3/X509_NAME_print_ex.pod" + ], + "doc/html/man3/X509_PUBKEY_new.html" => [ + "doc/man3/X509_PUBKEY_new.pod" + ], + "doc/html/man3/X509_REQ_get_attr.html" => [ + "doc/man3/X509_REQ_get_attr.pod" + ], + "doc/html/man3/X509_REQ_get_extensions.html" => [ + "doc/man3/X509_REQ_get_extensions.pod" + ], + "doc/html/man3/X509_SIG_get0.html" => [ + "doc/man3/X509_SIG_get0.pod" + ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], + "doc/html/man3/X509_STORE_CTX_get_error.html" => [ + "doc/man3/X509_STORE_CTX_get_error.pod" + ], + "doc/html/man3/X509_STORE_CTX_new.html" => [ + "doc/man3/X509_STORE_CTX_new.pod" + ], + "doc/html/man3/X509_STORE_CTX_set_verify_cb.html" => [ + "doc/man3/X509_STORE_CTX_set_verify_cb.pod" + ], + "doc/html/man3/X509_STORE_add_cert.html" => [ + "doc/man3/X509_STORE_add_cert.pod" + ], + "doc/html/man3/X509_STORE_get0_param.html" => [ + "doc/man3/X509_STORE_get0_param.pod" + ], + "doc/html/man3/X509_STORE_new.html" => [ + "doc/man3/X509_STORE_new.pod" + ], + "doc/html/man3/X509_STORE_set_verify_cb_func.html" => [ + "doc/man3/X509_STORE_set_verify_cb_func.pod" + ], + "doc/html/man3/X509_VERIFY_PARAM_set_flags.html" => [ + "doc/man3/X509_VERIFY_PARAM_set_flags.pod" + ], + "doc/html/man3/X509_add_cert.html" => [ + "doc/man3/X509_add_cert.pod" + ], + "doc/html/man3/X509_check_ca.html" => [ + "doc/man3/X509_check_ca.pod" + ], + "doc/html/man3/X509_check_host.html" => [ + "doc/man3/X509_check_host.pod" + ], + "doc/html/man3/X509_check_issued.html" => [ + "doc/man3/X509_check_issued.pod" + ], + "doc/html/man3/X509_check_private_key.html" => [ + "doc/man3/X509_check_private_key.pod" + ], + "doc/html/man3/X509_check_purpose.html" => [ + "doc/man3/X509_check_purpose.pod" + ], + "doc/html/man3/X509_cmp.html" => [ + "doc/man3/X509_cmp.pod" + ], + "doc/html/man3/X509_cmp_time.html" => [ + "doc/man3/X509_cmp_time.pod" + ], + "doc/html/man3/X509_digest.html" => [ + "doc/man3/X509_digest.pod" + ], + "doc/html/man3/X509_dup.html" => [ + "doc/man3/X509_dup.pod" + ], + "doc/html/man3/X509_get0_distinguishing_id.html" => [ + "doc/man3/X509_get0_distinguishing_id.pod" + ], + "doc/html/man3/X509_get0_notBefore.html" => [ + "doc/man3/X509_get0_notBefore.pod" + ], + "doc/html/man3/X509_get0_signature.html" => [ + "doc/man3/X509_get0_signature.pod" + ], + "doc/html/man3/X509_get0_uids.html" => [ + "doc/man3/X509_get0_uids.pod" + ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], + "doc/html/man3/X509_get_extension_flags.html" => [ + "doc/man3/X509_get_extension_flags.pod" + ], + "doc/html/man3/X509_get_pubkey.html" => [ + "doc/man3/X509_get_pubkey.pod" + ], + "doc/html/man3/X509_get_serialNumber.html" => [ + "doc/man3/X509_get_serialNumber.pod" + ], + "doc/html/man3/X509_get_subject_name.html" => [ + "doc/man3/X509_get_subject_name.pod" + ], + "doc/html/man3/X509_get_version.html" => [ + "doc/man3/X509_get_version.pod" + ], + "doc/html/man3/X509_load_http.html" => [ + "doc/man3/X509_load_http.pod" + ], + "doc/html/man3/X509_new.html" => [ + "doc/man3/X509_new.pod" + ], + "doc/html/man3/X509_sign.html" => [ + "doc/man3/X509_sign.pod" + ], + "doc/html/man3/X509_verify.html" => [ + "doc/man3/X509_verify.pod" + ], + "doc/html/man3/X509_verify_cert.html" => [ + "doc/man3/X509_verify_cert.pod" + ], + "doc/html/man3/X509v3_get_ext_by_NID.html" => [ + "doc/man3/X509v3_get_ext_by_NID.pod" + ], + "doc/html/man3/b2i_PVK_bio_ex.html" => [ + "doc/man3/b2i_PVK_bio_ex.pod" + ], + "doc/html/man3/d2i_PKCS8PrivateKey_bio.html" => [ + "doc/man3/d2i_PKCS8PrivateKey_bio.pod" + ], + "doc/html/man3/d2i_PrivateKey.html" => [ + "doc/man3/d2i_PrivateKey.pod" + ], + "doc/html/man3/d2i_RSAPrivateKey.html" => [ + "doc/man3/d2i_RSAPrivateKey.pod" + ], + "doc/html/man3/d2i_SSL_SESSION.html" => [ + "doc/man3/d2i_SSL_SESSION.pod" + ], + "doc/html/man3/d2i_X509.html" => [ + "doc/man3/d2i_X509.pod" + ], + "doc/html/man3/i2d_CMS_bio_stream.html" => [ + "doc/man3/i2d_CMS_bio_stream.pod" + ], + "doc/html/man3/i2d_PKCS7_bio_stream.html" => [ + "doc/man3/i2d_PKCS7_bio_stream.pod" + ], + "doc/html/man3/i2d_re_X509_tbs.html" => [ + "doc/man3/i2d_re_X509_tbs.pod" + ], + "doc/html/man3/o2i_SCT_LIST.html" => [ + "doc/man3/o2i_SCT_LIST.pod" + ], + "doc/html/man3/s2i_ASN1_IA5STRING.html" => [ + "doc/man3/s2i_ASN1_IA5STRING.pod" + ], + "doc/html/man5/config.html" => [ + "doc/man5/config.pod" + ], + "doc/html/man5/fips_config.html" => [ + "doc/man5/fips_config.pod" + ], + "doc/html/man5/x509v3_config.html" => [ + "doc/man5/x509v3_config.pod" + ], + "doc/html/man7/EVP_ASYM_CIPHER-RSA.html" => [ + "doc/man7/EVP_ASYM_CIPHER-RSA.pod" + ], + "doc/html/man7/EVP_ASYM_CIPHER-SM2.html" => [ + "doc/man7/EVP_ASYM_CIPHER-SM2.pod" + ], + "doc/html/man7/EVP_CIPHER-AES.html" => [ + "doc/man7/EVP_CIPHER-AES.pod" + ], + "doc/html/man7/EVP_CIPHER-ARIA.html" => [ + "doc/man7/EVP_CIPHER-ARIA.pod" + ], + "doc/html/man7/EVP_CIPHER-BLOWFISH.html" => [ + "doc/man7/EVP_CIPHER-BLOWFISH.pod" + ], + "doc/html/man7/EVP_CIPHER-CAMELLIA.html" => [ + "doc/man7/EVP_CIPHER-CAMELLIA.pod" + ], + "doc/html/man7/EVP_CIPHER-CAST.html" => [ + "doc/man7/EVP_CIPHER-CAST.pod" + ], + "doc/html/man7/EVP_CIPHER-CHACHA.html" => [ + "doc/man7/EVP_CIPHER-CHACHA.pod" + ], + "doc/html/man7/EVP_CIPHER-DES.html" => [ + "doc/man7/EVP_CIPHER-DES.pod" + ], + "doc/html/man7/EVP_CIPHER-IDEA.html" => [ + "doc/man7/EVP_CIPHER-IDEA.pod" + ], + "doc/html/man7/EVP_CIPHER-NULL.html" => [ + "doc/man7/EVP_CIPHER-NULL.pod" + ], + "doc/html/man7/EVP_CIPHER-RC2.html" => [ + "doc/man7/EVP_CIPHER-RC2.pod" + ], + "doc/html/man7/EVP_CIPHER-RC4.html" => [ + "doc/man7/EVP_CIPHER-RC4.pod" + ], + "doc/html/man7/EVP_CIPHER-RC5.html" => [ + "doc/man7/EVP_CIPHER-RC5.pod" + ], + "doc/html/man7/EVP_CIPHER-SEED.html" => [ + "doc/man7/EVP_CIPHER-SEED.pod" + ], + "doc/html/man7/EVP_CIPHER-SM4.html" => [ + "doc/man7/EVP_CIPHER-SM4.pod" + ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], + "doc/html/man7/EVP_KDF-HKDF.html" => [ + "doc/man7/EVP_KDF-HKDF.pod" + ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], + "doc/html/man7/EVP_KDF-KB.html" => [ + "doc/man7/EVP_KDF-KB.pod" + ], + "doc/html/man7/EVP_KDF-KRB5KDF.html" => [ + "doc/man7/EVP_KDF-KRB5KDF.pod" + ], + "doc/html/man7/EVP_KDF-PBKDF1.html" => [ + "doc/man7/EVP_KDF-PBKDF1.pod" + ], + "doc/html/man7/EVP_KDF-PBKDF2.html" => [ + "doc/man7/EVP_KDF-PBKDF2.pod" + ], + "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ + "doc/man7/EVP_KDF-PKCS12KDF.pod" + ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], + "doc/html/man7/EVP_KDF-SCRYPT.html" => [ + "doc/man7/EVP_KDF-SCRYPT.pod" + ], + "doc/html/man7/EVP_KDF-SS.html" => [ + "doc/man7/EVP_KDF-SS.pod" + ], + "doc/html/man7/EVP_KDF-SSHKDF.html" => [ + "doc/man7/EVP_KDF-SSHKDF.pod" + ], + "doc/html/man7/EVP_KDF-TLS13_KDF.html" => [ + "doc/man7/EVP_KDF-TLS13_KDF.pod" + ], + "doc/html/man7/EVP_KDF-TLS1_PRF.html" => [ + "doc/man7/EVP_KDF-TLS1_PRF.pod" + ], + "doc/html/man7/EVP_KDF-X942-ASN1.html" => [ + "doc/man7/EVP_KDF-X942-ASN1.pod" + ], + "doc/html/man7/EVP_KDF-X942-CONCAT.html" => [ + "doc/man7/EVP_KDF-X942-CONCAT.pod" + ], + "doc/html/man7/EVP_KDF-X963.html" => [ + "doc/man7/EVP_KDF-X963.pod" + ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], + "doc/html/man7/EVP_KEM-RSA.html" => [ + "doc/man7/EVP_KEM-RSA.pod" + ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], + "doc/html/man7/EVP_KEYEXCH-DH.html" => [ + "doc/man7/EVP_KEYEXCH-DH.pod" + ], + "doc/html/man7/EVP_KEYEXCH-ECDH.html" => [ + "doc/man7/EVP_KEYEXCH-ECDH.pod" + ], + "doc/html/man7/EVP_KEYEXCH-X25519.html" => [ + "doc/man7/EVP_KEYEXCH-X25519.pod" + ], + "doc/html/man7/EVP_MAC-BLAKE2.html" => [ + "doc/man7/EVP_MAC-BLAKE2.pod" + ], + "doc/html/man7/EVP_MAC-CMAC.html" => [ + "doc/man7/EVP_MAC-CMAC.pod" + ], + "doc/html/man7/EVP_MAC-GMAC.html" => [ + "doc/man7/EVP_MAC-GMAC.pod" + ], + "doc/html/man7/EVP_MAC-HMAC.html" => [ + "doc/man7/EVP_MAC-HMAC.pod" + ], + "doc/html/man7/EVP_MAC-KMAC.html" => [ + "doc/man7/EVP_MAC-KMAC.pod" + ], + "doc/html/man7/EVP_MAC-Poly1305.html" => [ + "doc/man7/EVP_MAC-Poly1305.pod" + ], + "doc/html/man7/EVP_MAC-Siphash.html" => [ + "doc/man7/EVP_MAC-Siphash.pod" + ], + "doc/html/man7/EVP_MD-BLAKE2.html" => [ + "doc/man7/EVP_MD-BLAKE2.pod" + ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], + "doc/html/man7/EVP_MD-MD2.html" => [ + "doc/man7/EVP_MD-MD2.pod" + ], + "doc/html/man7/EVP_MD-MD4.html" => [ + "doc/man7/EVP_MD-MD4.pod" + ], + "doc/html/man7/EVP_MD-MD5-SHA1.html" => [ + "doc/man7/EVP_MD-MD5-SHA1.pod" + ], + "doc/html/man7/EVP_MD-MD5.html" => [ + "doc/man7/EVP_MD-MD5.pod" + ], + "doc/html/man7/EVP_MD-MDC2.html" => [ + "doc/man7/EVP_MD-MDC2.pod" + ], + "doc/html/man7/EVP_MD-NULL.html" => [ + "doc/man7/EVP_MD-NULL.pod" + ], + "doc/html/man7/EVP_MD-RIPEMD160.html" => [ + "doc/man7/EVP_MD-RIPEMD160.pod" + ], + "doc/html/man7/EVP_MD-SHA1.html" => [ + "doc/man7/EVP_MD-SHA1.pod" + ], + "doc/html/man7/EVP_MD-SHA2.html" => [ + "doc/man7/EVP_MD-SHA2.pod" + ], + "doc/html/man7/EVP_MD-SHA3.html" => [ + "doc/man7/EVP_MD-SHA3.pod" + ], + "doc/html/man7/EVP_MD-SHAKE.html" => [ + "doc/man7/EVP_MD-SHAKE.pod" + ], + "doc/html/man7/EVP_MD-SM3.html" => [ + "doc/man7/EVP_MD-SM3.pod" + ], + "doc/html/man7/EVP_MD-WHIRLPOOL.html" => [ + "doc/man7/EVP_MD-WHIRLPOOL.pod" + ], + "doc/html/man7/EVP_MD-common.html" => [ + "doc/man7/EVP_MD-common.pod" + ], + "doc/html/man7/EVP_PKEY-DH.html" => [ + "doc/man7/EVP_PKEY-DH.pod" + ], + "doc/html/man7/EVP_PKEY-DSA.html" => [ + "doc/man7/EVP_PKEY-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-EC.html" => [ + "doc/man7/EVP_PKEY-EC.pod" + ], + "doc/html/man7/EVP_PKEY-FFC.html" => [ + "doc/man7/EVP_PKEY-FFC.pod" + ], + "doc/html/man7/EVP_PKEY-HMAC.html" => [ + "doc/man7/EVP_PKEY-HMAC.pod" + ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], + "doc/html/man7/EVP_PKEY-RSA.html" => [ + "doc/man7/EVP_PKEY-RSA.pod" + ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-SM2.html" => [ + "doc/man7/EVP_PKEY-SM2.pod" + ], + "doc/html/man7/EVP_PKEY-X25519.html" => [ + "doc/man7/EVP_PKEY-X25519.pod" + ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], + "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ + "doc/man7/EVP_RAND-CTR-DRBG.pod" + ], + "doc/html/man7/EVP_RAND-HASH-DRBG.html" => [ + "doc/man7/EVP_RAND-HASH-DRBG.pod" + ], + "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ + "doc/man7/EVP_RAND-HMAC-DRBG.pod" + ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], + "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ + "doc/man7/EVP_RAND-SEED-SRC.pod" + ], + "doc/html/man7/EVP_RAND-TEST-RAND.html" => [ + "doc/man7/EVP_RAND-TEST-RAND.pod" + ], + "doc/html/man7/EVP_RAND.html" => [ + "doc/man7/EVP_RAND.pod" + ], + "doc/html/man7/EVP_SIGNATURE-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-DSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-ECDSA.html" => [ + "doc/man7/EVP_SIGNATURE-ECDSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-ED25519.html" => [ + "doc/man7/EVP_SIGNATURE-ED25519.pod" + ], + "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ + "doc/man7/EVP_SIGNATURE-HMAC.pod" + ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ + "doc/man7/EVP_SIGNATURE-RSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], + "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ + "doc/man7/OSSL_PROVIDER-FIPS.pod" + ], + "doc/html/man7/OSSL_PROVIDER-base.html" => [ + "doc/man7/OSSL_PROVIDER-base.pod" + ], + "doc/html/man7/OSSL_PROVIDER-default.html" => [ + "doc/man7/OSSL_PROVIDER-default.pod" + ], + "doc/html/man7/OSSL_PROVIDER-legacy.html" => [ + "doc/man7/OSSL_PROVIDER-legacy.pod" + ], + "doc/html/man7/OSSL_PROVIDER-null.html" => [ + "doc/man7/OSSL_PROVIDER-null.pod" + ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], + "doc/html/man7/RAND.html" => [ + "doc/man7/RAND.pod" + ], + "doc/html/man7/RSA-PSS.html" => [ + "doc/man7/RSA-PSS.pod" + ], + "doc/html/man7/X25519.html" => [ + "doc/man7/X25519.pod" + ], + "doc/html/man7/bio.html" => [ + "doc/man7/bio.pod" + ], + "doc/html/man7/ct.html" => [ + "doc/man7/ct.pod" + ], + "doc/html/man7/des_modes.html" => [ + "doc/man7/des_modes.pod" + ], + "doc/html/man7/evp.html" => [ + "doc/man7/evp.pod" + ], + "doc/html/man7/fips_module.html" => [ + "doc/man7/fips_module.pod" + ], + "doc/html/man7/life_cycle-cipher.html" => [ + "doc/man7/life_cycle-cipher.pod" + ], + "doc/html/man7/life_cycle-digest.html" => [ + "doc/man7/life_cycle-digest.pod" + ], + "doc/html/man7/life_cycle-kdf.html" => [ + "doc/man7/life_cycle-kdf.pod" + ], + "doc/html/man7/life_cycle-mac.html" => [ + "doc/man7/life_cycle-mac.pod" + ], + "doc/html/man7/life_cycle-pkey.html" => [ + "doc/man7/life_cycle-pkey.pod" + ], + "doc/html/man7/life_cycle-rand.html" => [ + "doc/man7/life_cycle-rand.pod" + ], + "doc/html/man7/openssl-core.h.html" => [ + "doc/man7/openssl-core.h.pod" + ], + "doc/html/man7/openssl-core_dispatch.h.html" => [ + "doc/man7/openssl-core_dispatch.h.pod" + ], + "doc/html/man7/openssl-core_names.h.html" => [ + "doc/man7/openssl-core_names.h.pod" + ], + "doc/html/man7/openssl-env.html" => [ + "doc/man7/openssl-env.pod" + ], + "doc/html/man7/openssl-glossary.html" => [ + "doc/man7/openssl-glossary.pod" + ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], + "doc/html/man7/openssl-threads.html" => [ + "doc/man7/openssl-threads.pod" + ], + "doc/html/man7/openssl_user_macros.html" => [ + "doc/man7/openssl_user_macros.pod" + ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], + "doc/html/man7/ossl_store-file.html" => [ + "doc/man7/ossl_store-file.pod" + ], + "doc/html/man7/ossl_store.html" => [ + "doc/man7/ossl_store.pod" + ], + "doc/html/man7/passphrase-encoding.html" => [ + "doc/man7/passphrase-encoding.pod" + ], + "doc/html/man7/property.html" => [ + "doc/man7/property.pod" + ], + "doc/html/man7/provider-asym_cipher.html" => [ + "doc/man7/provider-asym_cipher.pod" + ], + "doc/html/man7/provider-base.html" => [ + "doc/man7/provider-base.pod" + ], + "doc/html/man7/provider-cipher.html" => [ + "doc/man7/provider-cipher.pod" + ], + "doc/html/man7/provider-decoder.html" => [ + "doc/man7/provider-decoder.pod" + ], + "doc/html/man7/provider-digest.html" => [ + "doc/man7/provider-digest.pod" + ], + "doc/html/man7/provider-encoder.html" => [ + "doc/man7/provider-encoder.pod" + ], + "doc/html/man7/provider-kdf.html" => [ + "doc/man7/provider-kdf.pod" + ], + "doc/html/man7/provider-kem.html" => [ + "doc/man7/provider-kem.pod" + ], + "doc/html/man7/provider-keyexch.html" => [ + "doc/man7/provider-keyexch.pod" + ], + "doc/html/man7/provider-keymgmt.html" => [ + "doc/man7/provider-keymgmt.pod" + ], + "doc/html/man7/provider-mac.html" => [ + "doc/man7/provider-mac.pod" + ], + "doc/html/man7/provider-object.html" => [ + "doc/man7/provider-object.pod" + ], + "doc/html/man7/provider-rand.html" => [ + "doc/man7/provider-rand.pod" + ], + "doc/html/man7/provider-signature.html" => [ + "doc/man7/provider-signature.pod" + ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], + "doc/html/man7/provider-storemgmt.html" => [ + "doc/man7/provider-storemgmt.pod" + ], + "doc/html/man7/provider.html" => [ + "doc/man7/provider.pod" + ], + "doc/html/man7/proxy-certificates.html" => [ + "doc/man7/proxy-certificates.pod" + ], + "doc/html/man7/x509.html" => [ + "doc/man7/x509.pod" + ], + "doc/man/man1/CA.pl.1" => [ + "doc/man1/CA.pl.pod" + ], + "doc/man/man1/openssl-asn1parse.1" => [ + "doc/man1/openssl-asn1parse.pod" + ], + "doc/man/man1/openssl-ca.1" => [ + "doc/man1/openssl-ca.pod" + ], + "doc/man/man1/openssl-ciphers.1" => [ + "doc/man1/openssl-ciphers.pod" + ], + "doc/man/man1/openssl-cmds.1" => [ + "doc/man1/openssl-cmds.pod" + ], + "doc/man/man1/openssl-cmp.1" => [ + "doc/man1/openssl-cmp.pod" + ], + "doc/man/man1/openssl-cms.1" => [ + "doc/man1/openssl-cms.pod" + ], + "doc/man/man1/openssl-crl.1" => [ + "doc/man1/openssl-crl.pod" + ], + "doc/man/man1/openssl-crl2pkcs7.1" => [ + "doc/man1/openssl-crl2pkcs7.pod" + ], + "doc/man/man1/openssl-dgst.1" => [ + "doc/man1/openssl-dgst.pod" + ], + "doc/man/man1/openssl-dhparam.1" => [ + "doc/man1/openssl-dhparam.pod" + ], + "doc/man/man1/openssl-dsa.1" => [ + "doc/man1/openssl-dsa.pod" + ], + "doc/man/man1/openssl-dsaparam.1" => [ + "doc/man1/openssl-dsaparam.pod" + ], + "doc/man/man1/openssl-ec.1" => [ + "doc/man1/openssl-ec.pod" + ], + "doc/man/man1/openssl-ecparam.1" => [ + "doc/man1/openssl-ecparam.pod" + ], + "doc/man/man1/openssl-enc.1" => [ + "doc/man1/openssl-enc.pod" + ], + "doc/man/man1/openssl-engine.1" => [ + "doc/man1/openssl-engine.pod" + ], + "doc/man/man1/openssl-errstr.1" => [ + "doc/man1/openssl-errstr.pod" + ], + "doc/man/man1/openssl-fipsinstall.1" => [ + "doc/man1/openssl-fipsinstall.pod" + ], + "doc/man/man1/openssl-format-options.1" => [ + "doc/man1/openssl-format-options.pod" + ], + "doc/man/man1/openssl-gendsa.1" => [ + "doc/man1/openssl-gendsa.pod" + ], + "doc/man/man1/openssl-genpkey.1" => [ + "doc/man1/openssl-genpkey.pod" + ], + "doc/man/man1/openssl-genrsa.1" => [ + "doc/man1/openssl-genrsa.pod" + ], + "doc/man/man1/openssl-info.1" => [ + "doc/man1/openssl-info.pod" + ], + "doc/man/man1/openssl-kdf.1" => [ + "doc/man1/openssl-kdf.pod" + ], + "doc/man/man1/openssl-list.1" => [ + "doc/man1/openssl-list.pod" + ], + "doc/man/man1/openssl-mac.1" => [ + "doc/man1/openssl-mac.pod" + ], + "doc/man/man1/openssl-namedisplay-options.1" => [ + "doc/man1/openssl-namedisplay-options.pod" + ], + "doc/man/man1/openssl-nseq.1" => [ + "doc/man1/openssl-nseq.pod" + ], + "doc/man/man1/openssl-ocsp.1" => [ + "doc/man1/openssl-ocsp.pod" + ], + "doc/man/man1/openssl-passphrase-options.1" => [ + "doc/man1/openssl-passphrase-options.pod" + ], + "doc/man/man1/openssl-passwd.1" => [ + "doc/man1/openssl-passwd.pod" + ], + "doc/man/man1/openssl-pkcs12.1" => [ + "doc/man1/openssl-pkcs12.pod" + ], + "doc/man/man1/openssl-pkcs7.1" => [ + "doc/man1/openssl-pkcs7.pod" + ], + "doc/man/man1/openssl-pkcs8.1" => [ + "doc/man1/openssl-pkcs8.pod" + ], + "doc/man/man1/openssl-pkey.1" => [ + "doc/man1/openssl-pkey.pod" + ], + "doc/man/man1/openssl-pkeyparam.1" => [ + "doc/man1/openssl-pkeyparam.pod" + ], + "doc/man/man1/openssl-pkeyutl.1" => [ + "doc/man1/openssl-pkeyutl.pod" + ], + "doc/man/man1/openssl-prime.1" => [ + "doc/man1/openssl-prime.pod" + ], + "doc/man/man1/openssl-rand.1" => [ + "doc/man1/openssl-rand.pod" + ], + "doc/man/man1/openssl-rehash.1" => [ + "doc/man1/openssl-rehash.pod" + ], + "doc/man/man1/openssl-req.1" => [ + "doc/man1/openssl-req.pod" + ], + "doc/man/man1/openssl-rsa.1" => [ + "doc/man1/openssl-rsa.pod" + ], + "doc/man/man1/openssl-rsautl.1" => [ + "doc/man1/openssl-rsautl.pod" + ], + "doc/man/man1/openssl-s_client.1" => [ + "doc/man1/openssl-s_client.pod" + ], + "doc/man/man1/openssl-s_server.1" => [ + "doc/man1/openssl-s_server.pod" + ], + "doc/man/man1/openssl-s_time.1" => [ + "doc/man1/openssl-s_time.pod" + ], + "doc/man/man1/openssl-sess_id.1" => [ + "doc/man1/openssl-sess_id.pod" + ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], + "doc/man/man1/openssl-smime.1" => [ + "doc/man1/openssl-smime.pod" + ], + "doc/man/man1/openssl-speed.1" => [ + "doc/man1/openssl-speed.pod" + ], + "doc/man/man1/openssl-spkac.1" => [ + "doc/man1/openssl-spkac.pod" + ], + "doc/man/man1/openssl-srp.1" => [ + "doc/man1/openssl-srp.pod" + ], + "doc/man/man1/openssl-storeutl.1" => [ + "doc/man1/openssl-storeutl.pod" + ], + "doc/man/man1/openssl-ts.1" => [ + "doc/man1/openssl-ts.pod" + ], + "doc/man/man1/openssl-verification-options.1" => [ + "doc/man1/openssl-verification-options.pod" + ], + "doc/man/man1/openssl-verify.1" => [ + "doc/man1/openssl-verify.pod" + ], + "doc/man/man1/openssl-version.1" => [ + "doc/man1/openssl-version.pod" + ], + "doc/man/man1/openssl-x509.1" => [ + "doc/man1/openssl-x509.pod" + ], + "doc/man/man1/openssl.1" => [ + "doc/man1/openssl.pod" + ], + "doc/man/man1/tsget.1" => [ + "doc/man1/tsget.pod" + ], + "doc/man/man3/ADMISSIONS.3" => [ + "doc/man3/ADMISSIONS.pod" + ], + "doc/man/man3/ASN1_EXTERN_FUNCS.3" => [ + "doc/man3/ASN1_EXTERN_FUNCS.pod" + ], + "doc/man/man3/ASN1_INTEGER_get_int64.3" => [ + "doc/man3/ASN1_INTEGER_get_int64.pod" + ], + "doc/man/man3/ASN1_INTEGER_new.3" => [ + "doc/man3/ASN1_INTEGER_new.pod" + ], + "doc/man/man3/ASN1_ITEM_lookup.3" => [ + "doc/man3/ASN1_ITEM_lookup.pod" + ], + "doc/man/man3/ASN1_OBJECT_new.3" => [ + "doc/man3/ASN1_OBJECT_new.pod" + ], + "doc/man/man3/ASN1_STRING_TABLE_add.3" => [ + "doc/man3/ASN1_STRING_TABLE_add.pod" + ], + "doc/man/man3/ASN1_STRING_length.3" => [ + "doc/man3/ASN1_STRING_length.pod" + ], + "doc/man/man3/ASN1_STRING_new.3" => [ + "doc/man3/ASN1_STRING_new.pod" + ], + "doc/man/man3/ASN1_STRING_print_ex.3" => [ + "doc/man3/ASN1_STRING_print_ex.pod" + ], + "doc/man/man3/ASN1_TIME_set.3" => [ + "doc/man3/ASN1_TIME_set.pod" + ], + "doc/man/man3/ASN1_TYPE_get.3" => [ + "doc/man3/ASN1_TYPE_get.pod" + ], + "doc/man/man3/ASN1_aux_cb.3" => [ + "doc/man3/ASN1_aux_cb.pod" + ], + "doc/man/man3/ASN1_generate_nconf.3" => [ + "doc/man3/ASN1_generate_nconf.pod" + ], + "doc/man/man3/ASN1_item_d2i_bio.3" => [ + "doc/man3/ASN1_item_d2i_bio.pod" + ], + "doc/man/man3/ASN1_item_new.3" => [ + "doc/man3/ASN1_item_new.pod" + ], + "doc/man/man3/ASN1_item_sign.3" => [ + "doc/man3/ASN1_item_sign.pod" + ], + "doc/man/man3/ASYNC_WAIT_CTX_new.3" => [ + "doc/man3/ASYNC_WAIT_CTX_new.pod" + ], + "doc/man/man3/ASYNC_start_job.3" => [ + "doc/man3/ASYNC_start_job.pod" + ], + "doc/man/man3/BF_encrypt.3" => [ + "doc/man3/BF_encrypt.pod" + ], + "doc/man/man3/BIO_ADDR.3" => [ + "doc/man3/BIO_ADDR.pod" + ], + "doc/man/man3/BIO_ADDRINFO.3" => [ + "doc/man3/BIO_ADDRINFO.pod" + ], + "doc/man/man3/BIO_connect.3" => [ + "doc/man3/BIO_connect.pod" + ], + "doc/man/man3/BIO_ctrl.3" => [ + "doc/man3/BIO_ctrl.pod" + ], + "doc/man/man3/BIO_f_base64.3" => [ + "doc/man3/BIO_f_base64.pod" + ], + "doc/man/man3/BIO_f_buffer.3" => [ + "doc/man3/BIO_f_buffer.pod" + ], + "doc/man/man3/BIO_f_cipher.3" => [ + "doc/man3/BIO_f_cipher.pod" + ], + "doc/man/man3/BIO_f_md.3" => [ + "doc/man3/BIO_f_md.pod" + ], + "doc/man/man3/BIO_f_null.3" => [ + "doc/man3/BIO_f_null.pod" + ], + "doc/man/man3/BIO_f_prefix.3" => [ + "doc/man3/BIO_f_prefix.pod" + ], + "doc/man/man3/BIO_f_readbuffer.3" => [ + "doc/man3/BIO_f_readbuffer.pod" + ], + "doc/man/man3/BIO_f_ssl.3" => [ + "doc/man3/BIO_f_ssl.pod" + ], + "doc/man/man3/BIO_find_type.3" => [ + "doc/man3/BIO_find_type.pod" + ], + "doc/man/man3/BIO_get_data.3" => [ + "doc/man3/BIO_get_data.pod" + ], + "doc/man/man3/BIO_get_ex_new_index.3" => [ + "doc/man3/BIO_get_ex_new_index.pod" + ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], + "doc/man/man3/BIO_meth_new.3" => [ + "doc/man3/BIO_meth_new.pod" + ], + "doc/man/man3/BIO_new.3" => [ + "doc/man3/BIO_new.pod" + ], + "doc/man/man3/BIO_new_CMS.3" => [ + "doc/man3/BIO_new_CMS.pod" + ], + "doc/man/man3/BIO_parse_hostserv.3" => [ + "doc/man3/BIO_parse_hostserv.pod" + ], + "doc/man/man3/BIO_printf.3" => [ + "doc/man3/BIO_printf.pod" + ], + "doc/man/man3/BIO_push.3" => [ + "doc/man3/BIO_push.pod" + ], + "doc/man/man3/BIO_read.3" => [ + "doc/man3/BIO_read.pod" + ], + "doc/man/man3/BIO_s_accept.3" => [ + "doc/man3/BIO_s_accept.pod" + ], + "doc/man/man3/BIO_s_bio.3" => [ + "doc/man3/BIO_s_bio.pod" + ], + "doc/man/man3/BIO_s_connect.3" => [ + "doc/man3/BIO_s_connect.pod" + ], + "doc/man/man3/BIO_s_core.3" => [ + "doc/man3/BIO_s_core.pod" + ], + "doc/man/man3/BIO_s_datagram.3" => [ + "doc/man3/BIO_s_datagram.pod" + ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], + "doc/man/man3/BIO_s_fd.3" => [ + "doc/man3/BIO_s_fd.pod" + ], + "doc/man/man3/BIO_s_file.3" => [ + "doc/man3/BIO_s_file.pod" + ], + "doc/man/man3/BIO_s_mem.3" => [ + "doc/man3/BIO_s_mem.pod" + ], + "doc/man/man3/BIO_s_null.3" => [ + "doc/man3/BIO_s_null.pod" + ], + "doc/man/man3/BIO_s_socket.3" => [ + "doc/man3/BIO_s_socket.pod" + ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], + "doc/man/man3/BIO_set_callback.3" => [ + "doc/man3/BIO_set_callback.pod" + ], + "doc/man/man3/BIO_set_flags.3" => [ + "doc/man3/BIO_set_flags.pod" + ], + "doc/man/man3/BIO_should_retry.3" => [ + "doc/man3/BIO_should_retry.pod" + ], + "doc/man/man3/BIO_socket_wait.3" => [ + "doc/man3/BIO_socket_wait.pod" + ], + "doc/man/man3/BN_BLINDING_new.3" => [ + "doc/man3/BN_BLINDING_new.pod" + ], + "doc/man/man3/BN_CTX_new.3" => [ + "doc/man3/BN_CTX_new.pod" + ], + "doc/man/man3/BN_CTX_start.3" => [ + "doc/man3/BN_CTX_start.pod" + ], + "doc/man/man3/BN_add.3" => [ + "doc/man3/BN_add.pod" + ], + "doc/man/man3/BN_add_word.3" => [ + "doc/man3/BN_add_word.pod" + ], + "doc/man/man3/BN_bn2bin.3" => [ + "doc/man3/BN_bn2bin.pod" + ], + "doc/man/man3/BN_cmp.3" => [ + "doc/man3/BN_cmp.pod" + ], + "doc/man/man3/BN_copy.3" => [ + "doc/man3/BN_copy.pod" + ], + "doc/man/man3/BN_generate_prime.3" => [ + "doc/man3/BN_generate_prime.pod" + ], + "doc/man/man3/BN_mod_exp_mont.3" => [ + "doc/man3/BN_mod_exp_mont.pod" + ], + "doc/man/man3/BN_mod_inverse.3" => [ + "doc/man3/BN_mod_inverse.pod" + ], + "doc/man/man3/BN_mod_mul_montgomery.3" => [ + "doc/man3/BN_mod_mul_montgomery.pod" + ], + "doc/man/man3/BN_mod_mul_reciprocal.3" => [ + "doc/man3/BN_mod_mul_reciprocal.pod" + ], + "doc/man/man3/BN_new.3" => [ + "doc/man3/BN_new.pod" + ], + "doc/man/man3/BN_num_bytes.3" => [ + "doc/man3/BN_num_bytes.pod" + ], + "doc/man/man3/BN_rand.3" => [ + "doc/man3/BN_rand.pod" + ], + "doc/man/man3/BN_security_bits.3" => [ + "doc/man3/BN_security_bits.pod" + ], + "doc/man/man3/BN_set_bit.3" => [ + "doc/man3/BN_set_bit.pod" + ], + "doc/man/man3/BN_swap.3" => [ + "doc/man3/BN_swap.pod" + ], + "doc/man/man3/BN_zero.3" => [ + "doc/man3/BN_zero.pod" + ], + "doc/man/man3/BUF_MEM_new.3" => [ + "doc/man3/BUF_MEM_new.pod" + ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], + "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ + "doc/man3/CMS_EncryptedData_decrypt.pod" + ], + "doc/man/man3/CMS_EncryptedData_encrypt.3" => [ + "doc/man3/CMS_EncryptedData_encrypt.pod" + ], + "doc/man/man3/CMS_EncryptedData_set1_key.3" => [ + "doc/man3/CMS_EncryptedData_set1_key.pod" + ], + "doc/man/man3/CMS_EnvelopedData_create.3" => [ + "doc/man3/CMS_EnvelopedData_create.pod" + ], + "doc/man/man3/CMS_add0_cert.3" => [ + "doc/man3/CMS_add0_cert.pod" + ], + "doc/man/man3/CMS_add1_recipient_cert.3" => [ + "doc/man3/CMS_add1_recipient_cert.pod" + ], + "doc/man/man3/CMS_add1_signer.3" => [ + "doc/man3/CMS_add1_signer.pod" + ], + "doc/man/man3/CMS_compress.3" => [ + "doc/man3/CMS_compress.pod" + ], + "doc/man/man3/CMS_data_create.3" => [ + "doc/man3/CMS_data_create.pod" + ], + "doc/man/man3/CMS_decrypt.3" => [ + "doc/man3/CMS_decrypt.pod" + ], + "doc/man/man3/CMS_digest_create.3" => [ + "doc/man3/CMS_digest_create.pod" + ], + "doc/man/man3/CMS_encrypt.3" => [ + "doc/man3/CMS_encrypt.pod" + ], + "doc/man/man3/CMS_final.3" => [ + "doc/man3/CMS_final.pod" + ], + "doc/man/man3/CMS_get0_RecipientInfos.3" => [ + "doc/man3/CMS_get0_RecipientInfos.pod" + ], + "doc/man/man3/CMS_get0_SignerInfos.3" => [ + "doc/man3/CMS_get0_SignerInfos.pod" + ], + "doc/man/man3/CMS_get0_type.3" => [ + "doc/man3/CMS_get0_type.pod" + ], + "doc/man/man3/CMS_get1_ReceiptRequest.3" => [ + "doc/man3/CMS_get1_ReceiptRequest.pod" + ], + "doc/man/man3/CMS_sign.3" => [ + "doc/man3/CMS_sign.pod" + ], + "doc/man/man3/CMS_sign_receipt.3" => [ + "doc/man3/CMS_sign_receipt.pod" + ], + "doc/man/man3/CMS_signed_get_attr.3" => [ + "doc/man3/CMS_signed_get_attr.pod" + ], + "doc/man/man3/CMS_uncompress.3" => [ + "doc/man3/CMS_uncompress.pod" + ], + "doc/man/man3/CMS_verify.3" => [ + "doc/man3/CMS_verify.pod" + ], + "doc/man/man3/CMS_verify_receipt.3" => [ + "doc/man3/CMS_verify_receipt.pod" + ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], + "doc/man/man3/CONF_modules_free.3" => [ + "doc/man3/CONF_modules_free.pod" + ], + "doc/man/man3/CONF_modules_load_file.3" => [ + "doc/man3/CONF_modules_load_file.pod" + ], + "doc/man/man3/CRYPTO_THREAD_run_once.3" => [ + "doc/man3/CRYPTO_THREAD_run_once.pod" + ], + "doc/man/man3/CRYPTO_get_ex_new_index.3" => [ + "doc/man3/CRYPTO_get_ex_new_index.pod" + ], + "doc/man/man3/CRYPTO_memcmp.3" => [ + "doc/man3/CRYPTO_memcmp.pod" + ], + "doc/man/man3/CTLOG_STORE_get0_log_by_id.3" => [ + "doc/man3/CTLOG_STORE_get0_log_by_id.pod" + ], + "doc/man/man3/CTLOG_STORE_new.3" => [ + "doc/man3/CTLOG_STORE_new.pod" + ], + "doc/man/man3/CTLOG_new.3" => [ + "doc/man3/CTLOG_new.pod" + ], + "doc/man/man3/CT_POLICY_EVAL_CTX_new.3" => [ + "doc/man3/CT_POLICY_EVAL_CTX_new.pod" + ], + "doc/man/man3/DEFINE_STACK_OF.3" => [ + "doc/man3/DEFINE_STACK_OF.pod" + ], + "doc/man/man3/DES_random_key.3" => [ + "doc/man3/DES_random_key.pod" + ], + "doc/man/man3/DH_generate_key.3" => [ + "doc/man3/DH_generate_key.pod" + ], + "doc/man/man3/DH_generate_parameters.3" => [ + "doc/man3/DH_generate_parameters.pod" + ], + "doc/man/man3/DH_get0_pqg.3" => [ + "doc/man3/DH_get0_pqg.pod" + ], + "doc/man/man3/DH_get_1024_160.3" => [ + "doc/man3/DH_get_1024_160.pod" + ], + "doc/man/man3/DH_meth_new.3" => [ + "doc/man3/DH_meth_new.pod" + ], + "doc/man/man3/DH_new.3" => [ + "doc/man3/DH_new.pod" + ], + "doc/man/man3/DH_new_by_nid.3" => [ + "doc/man3/DH_new_by_nid.pod" + ], + "doc/man/man3/DH_set_method.3" => [ + "doc/man3/DH_set_method.pod" + ], + "doc/man/man3/DH_size.3" => [ + "doc/man3/DH_size.pod" + ], + "doc/man/man3/DSA_SIG_new.3" => [ + "doc/man3/DSA_SIG_new.pod" + ], + "doc/man/man3/DSA_do_sign.3" => [ + "doc/man3/DSA_do_sign.pod" + ], + "doc/man/man3/DSA_dup_DH.3" => [ + "doc/man3/DSA_dup_DH.pod" + ], + "doc/man/man3/DSA_generate_key.3" => [ + "doc/man3/DSA_generate_key.pod" + ], + "doc/man/man3/DSA_generate_parameters.3" => [ + "doc/man3/DSA_generate_parameters.pod" + ], + "doc/man/man3/DSA_get0_pqg.3" => [ + "doc/man3/DSA_get0_pqg.pod" + ], + "doc/man/man3/DSA_meth_new.3" => [ + "doc/man3/DSA_meth_new.pod" + ], + "doc/man/man3/DSA_new.3" => [ + "doc/man3/DSA_new.pod" + ], + "doc/man/man3/DSA_set_method.3" => [ + "doc/man3/DSA_set_method.pod" + ], + "doc/man/man3/DSA_sign.3" => [ + "doc/man3/DSA_sign.pod" + ], + "doc/man/man3/DSA_size.3" => [ + "doc/man3/DSA_size.pod" + ], + "doc/man/man3/DTLS_get_data_mtu.3" => [ + "doc/man3/DTLS_get_data_mtu.pod" + ], + "doc/man/man3/DTLS_set_timer_cb.3" => [ + "doc/man3/DTLS_set_timer_cb.pod" + ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], + "doc/man/man3/DTLSv1_listen.3" => [ + "doc/man3/DTLSv1_listen.pod" + ], + "doc/man/man3/ECDSA_SIG_new.3" => [ + "doc/man3/ECDSA_SIG_new.pod" + ], + "doc/man/man3/ECDSA_sign.3" => [ + "doc/man3/ECDSA_sign.pod" + ], + "doc/man/man3/ECPKParameters_print.3" => [ + "doc/man3/ECPKParameters_print.pod" + ], + "doc/man/man3/EC_GFp_simple_method.3" => [ + "doc/man3/EC_GFp_simple_method.pod" + ], + "doc/man/man3/EC_GROUP_copy.3" => [ + "doc/man3/EC_GROUP_copy.pod" + ], + "doc/man/man3/EC_GROUP_new.3" => [ + "doc/man3/EC_GROUP_new.pod" + ], + "doc/man/man3/EC_KEY_get_enc_flags.3" => [ + "doc/man3/EC_KEY_get_enc_flags.pod" + ], + "doc/man/man3/EC_KEY_new.3" => [ + "doc/man3/EC_KEY_new.pod" + ], + "doc/man/man3/EC_POINT_add.3" => [ + "doc/man3/EC_POINT_add.pod" + ], + "doc/man/man3/EC_POINT_new.3" => [ + "doc/man3/EC_POINT_new.pod" + ], + "doc/man/man3/ENGINE_add.3" => [ + "doc/man3/ENGINE_add.pod" + ], + "doc/man/man3/ERR_GET_LIB.3" => [ + "doc/man3/ERR_GET_LIB.pod" + ], + "doc/man/man3/ERR_clear_error.3" => [ + "doc/man3/ERR_clear_error.pod" + ], + "doc/man/man3/ERR_error_string.3" => [ + "doc/man3/ERR_error_string.pod" + ], + "doc/man/man3/ERR_get_error.3" => [ + "doc/man3/ERR_get_error.pod" + ], + "doc/man/man3/ERR_load_crypto_strings.3" => [ + "doc/man3/ERR_load_crypto_strings.pod" + ], + "doc/man/man3/ERR_load_strings.3" => [ + "doc/man3/ERR_load_strings.pod" + ], + "doc/man/man3/ERR_new.3" => [ + "doc/man3/ERR_new.pod" + ], + "doc/man/man3/ERR_print_errors.3" => [ + "doc/man3/ERR_print_errors.pod" + ], + "doc/man/man3/ERR_put_error.3" => [ + "doc/man3/ERR_put_error.pod" + ], + "doc/man/man3/ERR_remove_state.3" => [ + "doc/man3/ERR_remove_state.pod" + ], + "doc/man/man3/ERR_set_mark.3" => [ + "doc/man3/ERR_set_mark.pod" + ], + "doc/man/man3/EVP_ASYM_CIPHER_free.3" => [ + "doc/man3/EVP_ASYM_CIPHER_free.pod" + ], + "doc/man/man3/EVP_BytesToKey.3" => [ + "doc/man3/EVP_BytesToKey.pod" + ], + "doc/man/man3/EVP_CIPHER_CTX_get_app_data.3" => [ + "doc/man3/EVP_CIPHER_CTX_get_app_data.pod" + ], + "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3" => [ + "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" + ], + "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3" => [ + "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" + ], + "doc/man/man3/EVP_CIPHER_meth_new.3" => [ + "doc/man3/EVP_CIPHER_meth_new.pod" + ], + "doc/man/man3/EVP_DigestInit.3" => [ + "doc/man3/EVP_DigestInit.pod" + ], + "doc/man/man3/EVP_DigestSignInit.3" => [ + "doc/man3/EVP_DigestSignInit.pod" + ], + "doc/man/man3/EVP_DigestVerifyInit.3" => [ + "doc/man3/EVP_DigestVerifyInit.pod" + ], + "doc/man/man3/EVP_EncodeInit.3" => [ + "doc/man3/EVP_EncodeInit.pod" + ], + "doc/man/man3/EVP_EncryptInit.3" => [ + "doc/man3/EVP_EncryptInit.pod" + ], + "doc/man/man3/EVP_KDF.3" => [ + "doc/man3/EVP_KDF.pod" + ], + "doc/man/man3/EVP_KEM_free.3" => [ + "doc/man3/EVP_KEM_free.pod" + ], + "doc/man/man3/EVP_KEYEXCH_free.3" => [ + "doc/man3/EVP_KEYEXCH_free.pod" + ], + "doc/man/man3/EVP_KEYMGMT.3" => [ + "doc/man3/EVP_KEYMGMT.pod" + ], + "doc/man/man3/EVP_MAC.3" => [ + "doc/man3/EVP_MAC.pod" + ], + "doc/man/man3/EVP_MD_meth_new.3" => [ + "doc/man3/EVP_MD_meth_new.pod" + ], + "doc/man/man3/EVP_OpenInit.3" => [ + "doc/man3/EVP_OpenInit.pod" + ], + "doc/man/man3/EVP_PBE_CipherInit.3" => [ + "doc/man3/EVP_PBE_CipherInit.pod" + ], + "doc/man/man3/EVP_PKEY2PKCS8.3" => [ + "doc/man3/EVP_PKEY2PKCS8.pod" + ], + "doc/man/man3/EVP_PKEY_ASN1_METHOD.3" => [ + "doc/man3/EVP_PKEY_ASN1_METHOD.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_ctrl.3" => [ + "doc/man3/EVP_PKEY_CTX_ctrl.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3" => [ + "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ + "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_new.3" => [ + "doc/man3/EVP_PKEY_CTX_new.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3" => [ + "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3" => [ + "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_params.3" => [ + "doc/man3/EVP_PKEY_CTX_set_params.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3" => [ + "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3" => [ + "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3" => [ + "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" + ], + "doc/man/man3/EVP_PKEY_asn1_get_count.3" => [ + "doc/man3/EVP_PKEY_asn1_get_count.pod" + ], + "doc/man/man3/EVP_PKEY_check.3" => [ + "doc/man3/EVP_PKEY_check.pod" + ], + "doc/man/man3/EVP_PKEY_copy_parameters.3" => [ + "doc/man3/EVP_PKEY_copy_parameters.pod" + ], + "doc/man/man3/EVP_PKEY_decapsulate.3" => [ + "doc/man3/EVP_PKEY_decapsulate.pod" + ], + "doc/man/man3/EVP_PKEY_decrypt.3" => [ + "doc/man3/EVP_PKEY_decrypt.pod" + ], + "doc/man/man3/EVP_PKEY_derive.3" => [ + "doc/man3/EVP_PKEY_derive.pod" + ], + "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3" => [ + "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" + ], + "doc/man/man3/EVP_PKEY_encapsulate.3" => [ + "doc/man3/EVP_PKEY_encapsulate.pod" + ], + "doc/man/man3/EVP_PKEY_encrypt.3" => [ + "doc/man3/EVP_PKEY_encrypt.pod" + ], + "doc/man/man3/EVP_PKEY_fromdata.3" => [ + "doc/man3/EVP_PKEY_fromdata.pod" + ], + "doc/man/man3/EVP_PKEY_get_attr.3" => [ + "doc/man3/EVP_PKEY_get_attr.pod" + ], + "doc/man/man3/EVP_PKEY_get_default_digest_nid.3" => [ + "doc/man3/EVP_PKEY_get_default_digest_nid.pod" + ], + "doc/man/man3/EVP_PKEY_get_field_type.3" => [ + "doc/man3/EVP_PKEY_get_field_type.pod" + ], + "doc/man/man3/EVP_PKEY_get_group_name.3" => [ + "doc/man3/EVP_PKEY_get_group_name.pod" + ], + "doc/man/man3/EVP_PKEY_get_size.3" => [ + "doc/man3/EVP_PKEY_get_size.pod" + ], + "doc/man/man3/EVP_PKEY_gettable_params.3" => [ + "doc/man3/EVP_PKEY_gettable_params.pod" + ], + "doc/man/man3/EVP_PKEY_is_a.3" => [ + "doc/man3/EVP_PKEY_is_a.pod" + ], + "doc/man/man3/EVP_PKEY_keygen.3" => [ + "doc/man3/EVP_PKEY_keygen.pod" + ], + "doc/man/man3/EVP_PKEY_meth_get_count.3" => [ + "doc/man3/EVP_PKEY_meth_get_count.pod" + ], + "doc/man/man3/EVP_PKEY_meth_new.3" => [ + "doc/man3/EVP_PKEY_meth_new.pod" + ], + "doc/man/man3/EVP_PKEY_new.3" => [ + "doc/man3/EVP_PKEY_new.pod" + ], + "doc/man/man3/EVP_PKEY_print_private.3" => [ + "doc/man3/EVP_PKEY_print_private.pod" + ], + "doc/man/man3/EVP_PKEY_set1_RSA.3" => [ + "doc/man3/EVP_PKEY_set1_RSA.pod" + ], + "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3" => [ + "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" + ], + "doc/man/man3/EVP_PKEY_set_type.3" => [ + "doc/man3/EVP_PKEY_set_type.pod" + ], + "doc/man/man3/EVP_PKEY_settable_params.3" => [ + "doc/man3/EVP_PKEY_settable_params.pod" + ], + "doc/man/man3/EVP_PKEY_sign.3" => [ + "doc/man3/EVP_PKEY_sign.pod" + ], + "doc/man/man3/EVP_PKEY_todata.3" => [ + "doc/man3/EVP_PKEY_todata.pod" + ], + "doc/man/man3/EVP_PKEY_verify.3" => [ + "doc/man3/EVP_PKEY_verify.pod" + ], + "doc/man/man3/EVP_PKEY_verify_recover.3" => [ + "doc/man3/EVP_PKEY_verify_recover.pod" + ], + "doc/man/man3/EVP_RAND.3" => [ + "doc/man3/EVP_RAND.pod" + ], + "doc/man/man3/EVP_SIGNATURE.3" => [ + "doc/man3/EVP_SIGNATURE.pod" + ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], + "doc/man/man3/EVP_SealInit.3" => [ + "doc/man3/EVP_SealInit.pod" + ], + "doc/man/man3/EVP_SignInit.3" => [ + "doc/man3/EVP_SignInit.pod" + ], + "doc/man/man3/EVP_VerifyInit.3" => [ + "doc/man3/EVP_VerifyInit.pod" + ], + "doc/man/man3/EVP_aes_128_gcm.3" => [ + "doc/man3/EVP_aes_128_gcm.pod" + ], + "doc/man/man3/EVP_aria_128_gcm.3" => [ + "doc/man3/EVP_aria_128_gcm.pod" + ], + "doc/man/man3/EVP_bf_cbc.3" => [ + "doc/man3/EVP_bf_cbc.pod" + ], + "doc/man/man3/EVP_blake2b512.3" => [ + "doc/man3/EVP_blake2b512.pod" + ], + "doc/man/man3/EVP_camellia_128_ecb.3" => [ + "doc/man3/EVP_camellia_128_ecb.pod" + ], + "doc/man/man3/EVP_cast5_cbc.3" => [ + "doc/man3/EVP_cast5_cbc.pod" + ], + "doc/man/man3/EVP_chacha20.3" => [ + "doc/man3/EVP_chacha20.pod" + ], + "doc/man/man3/EVP_des_cbc.3" => [ + "doc/man3/EVP_des_cbc.pod" + ], + "doc/man/man3/EVP_desx_cbc.3" => [ + "doc/man3/EVP_desx_cbc.pod" + ], + "doc/man/man3/EVP_idea_cbc.3" => [ + "doc/man3/EVP_idea_cbc.pod" + ], + "doc/man/man3/EVP_md2.3" => [ + "doc/man3/EVP_md2.pod" + ], + "doc/man/man3/EVP_md4.3" => [ + "doc/man3/EVP_md4.pod" + ], + "doc/man/man3/EVP_md5.3" => [ + "doc/man3/EVP_md5.pod" + ], + "doc/man/man3/EVP_mdc2.3" => [ + "doc/man3/EVP_mdc2.pod" + ], + "doc/man/man3/EVP_rc2_cbc.3" => [ + "doc/man3/EVP_rc2_cbc.pod" + ], + "doc/man/man3/EVP_rc4.3" => [ + "doc/man3/EVP_rc4.pod" + ], + "doc/man/man3/EVP_rc5_32_12_16_cbc.3" => [ + "doc/man3/EVP_rc5_32_12_16_cbc.pod" + ], + "doc/man/man3/EVP_ripemd160.3" => [ + "doc/man3/EVP_ripemd160.pod" + ], + "doc/man/man3/EVP_seed_cbc.3" => [ + "doc/man3/EVP_seed_cbc.pod" + ], + "doc/man/man3/EVP_set_default_properties.3" => [ + "doc/man3/EVP_set_default_properties.pod" + ], + "doc/man/man3/EVP_sha1.3" => [ + "doc/man3/EVP_sha1.pod" + ], + "doc/man/man3/EVP_sha224.3" => [ + "doc/man3/EVP_sha224.pod" + ], + "doc/man/man3/EVP_sha3_224.3" => [ + "doc/man3/EVP_sha3_224.pod" + ], + "doc/man/man3/EVP_sm3.3" => [ + "doc/man3/EVP_sm3.pod" + ], + "doc/man/man3/EVP_sm4_cbc.3" => [ + "doc/man3/EVP_sm4_cbc.pod" + ], + "doc/man/man3/EVP_whirlpool.3" => [ + "doc/man3/EVP_whirlpool.pod" + ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], + "doc/man/man3/HMAC.3" => [ + "doc/man3/HMAC.pod" + ], + "doc/man/man3/MD5.3" => [ + "doc/man3/MD5.pod" + ], + "doc/man/man3/MDC2_Init.3" => [ + "doc/man3/MDC2_Init.pod" + ], + "doc/man/man3/NCONF_new_ex.3" => [ + "doc/man3/NCONF_new_ex.pod" + ], + "doc/man/man3/OBJ_nid2obj.3" => [ + "doc/man3/OBJ_nid2obj.pod" + ], + "doc/man/man3/OCSP_REQUEST_new.3" => [ + "doc/man3/OCSP_REQUEST_new.pod" + ], + "doc/man/man3/OCSP_cert_to_id.3" => [ + "doc/man3/OCSP_cert_to_id.pod" + ], + "doc/man/man3/OCSP_request_add1_nonce.3" => [ + "doc/man3/OCSP_request_add1_nonce.pod" + ], + "doc/man/man3/OCSP_resp_find_status.3" => [ + "doc/man3/OCSP_resp_find_status.pod" + ], + "doc/man/man3/OCSP_response_status.3" => [ + "doc/man3/OCSP_response_status.pod" + ], + "doc/man/man3/OCSP_sendreq_new.3" => [ + "doc/man3/OCSP_sendreq_new.pod" + ], + "doc/man/man3/OPENSSL_Applink.3" => [ + "doc/man3/OPENSSL_Applink.pod" + ], + "doc/man/man3/OPENSSL_FILE.3" => [ + "doc/man3/OPENSSL_FILE.pod" + ], + "doc/man/man3/OPENSSL_LH_COMPFUNC.3" => [ + "doc/man3/OPENSSL_LH_COMPFUNC.pod" + ], + "doc/man/man3/OPENSSL_LH_stats.3" => [ + "doc/man3/OPENSSL_LH_stats.pod" + ], + "doc/man/man3/OPENSSL_config.3" => [ + "doc/man3/OPENSSL_config.pod" + ], + "doc/man/man3/OPENSSL_fork_prepare.3" => [ + "doc/man3/OPENSSL_fork_prepare.pod" + ], + "doc/man/man3/OPENSSL_gmtime.3" => [ + "doc/man3/OPENSSL_gmtime.pod" + ], + "doc/man/man3/OPENSSL_hexchar2int.3" => [ + "doc/man3/OPENSSL_hexchar2int.pod" + ], + "doc/man/man3/OPENSSL_ia32cap.3" => [ + "doc/man3/OPENSSL_ia32cap.pod" + ], + "doc/man/man3/OPENSSL_init_crypto.3" => [ + "doc/man3/OPENSSL_init_crypto.pod" + ], + "doc/man/man3/OPENSSL_init_ssl.3" => [ + "doc/man3/OPENSSL_init_ssl.pod" + ], + "doc/man/man3/OPENSSL_instrument_bus.3" => [ + "doc/man3/OPENSSL_instrument_bus.pod" + ], + "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ + "doc/man3/OPENSSL_load_builtin_modules.pod" + ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], + "doc/man/man3/OPENSSL_malloc.3" => [ + "doc/man3/OPENSSL_malloc.pod" + ], + "doc/man/man3/OPENSSL_ppccap.3" => [ + "doc/man3/OPENSSL_ppccap.pod" + ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], + "doc/man/man3/OPENSSL_s390xcap.3" => [ + "doc/man3/OPENSSL_s390xcap.pod" + ], + "doc/man/man3/OPENSSL_secure_malloc.3" => [ + "doc/man3/OPENSSL_secure_malloc.pod" + ], + "doc/man/man3/OPENSSL_strcasecmp.3" => [ + "doc/man3/OPENSSL_strcasecmp.pod" + ], + "doc/man/man3/OSSL_ALGORITHM.3" => [ + "doc/man3/OSSL_ALGORITHM.pod" + ], + "doc/man/man3/OSSL_CALLBACK.3" => [ + "doc/man3/OSSL_CALLBACK.pod" + ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], + "doc/man/man3/OSSL_CMP_CTX_new.3" => [ + "doc/man3/OSSL_CMP_CTX_new.pod" + ], + "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ + "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" + ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], + "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ + "doc/man3/OSSL_CMP_ITAV_set0.pod" + ], + "doc/man/man3/OSSL_CMP_MSG_get0_header.3" => [ + "doc/man3/OSSL_CMP_MSG_get0_header.pod" + ], + "doc/man/man3/OSSL_CMP_MSG_http_perform.3" => [ + "doc/man3/OSSL_CMP_MSG_http_perform.pod" + ], + "doc/man/man3/OSSL_CMP_SRV_CTX_new.3" => [ + "doc/man3/OSSL_CMP_SRV_CTX_new.pod" + ], + "doc/man/man3/OSSL_CMP_STATUSINFO_new.3" => [ + "doc/man3/OSSL_CMP_STATUSINFO_new.pod" + ], + "doc/man/man3/OSSL_CMP_exec_certreq.3" => [ + "doc/man3/OSSL_CMP_exec_certreq.pod" + ], + "doc/man/man3/OSSL_CMP_log_open.3" => [ + "doc/man3/OSSL_CMP_log_open.pod" + ], + "doc/man/man3/OSSL_CMP_validate_msg.3" => [ + "doc/man3/OSSL_CMP_validate_msg.pod" + ], + "doc/man/man3/OSSL_CORE_MAKE_FUNC.3" => [ + "doc/man3/OSSL_CORE_MAKE_FUNC.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3" => [ + "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3" => [ + "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" + ], + "doc/man/man3/OSSL_CRMF_pbmp_new.3" => [ + "doc/man3/OSSL_CRMF_pbmp_new.pod" + ], + "doc/man/man3/OSSL_DECODER.3" => [ + "doc/man3/OSSL_DECODER.pod" + ], + "doc/man/man3/OSSL_DECODER_CTX.3" => [ + "doc/man3/OSSL_DECODER_CTX.pod" + ], + "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3" => [ + "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" + ], + "doc/man/man3/OSSL_DECODER_from_bio.3" => [ + "doc/man3/OSSL_DECODER_from_bio.pod" + ], + "doc/man/man3/OSSL_DISPATCH.3" => [ + "doc/man3/OSSL_DISPATCH.pod" + ], + "doc/man/man3/OSSL_ENCODER.3" => [ + "doc/man3/OSSL_ENCODER.pod" + ], + "doc/man/man3/OSSL_ENCODER_CTX.3" => [ + "doc/man3/OSSL_ENCODER_CTX.pod" + ], + "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3" => [ + "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" + ], + "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ + "doc/man3/OSSL_ENCODER_to_bio.pod" + ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], + "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ + "doc/man3/OSSL_ESS_check_signing_certs.pod" + ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], + "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ + "doc/man3/OSSL_HTTP_REQ_CTX.pod" + ], + "doc/man/man3/OSSL_HTTP_parse_url.3" => [ + "doc/man3/OSSL_HTTP_parse_url.pod" + ], + "doc/man/man3/OSSL_HTTP_transfer.3" => [ + "doc/man3/OSSL_HTTP_transfer.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], + "doc/man/man3/OSSL_ITEM.3" => [ + "doc/man3/OSSL_ITEM.pod" + ], + "doc/man/man3/OSSL_LIB_CTX.3" => [ + "doc/man3/OSSL_LIB_CTX.pod" + ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], + "doc/man/man3/OSSL_PARAM.3" => [ + "doc/man3/OSSL_PARAM.pod" + ], + "doc/man/man3/OSSL_PARAM_BLD.3" => [ + "doc/man3/OSSL_PARAM_BLD.pod" + ], + "doc/man/man3/OSSL_PARAM_allocate_from_text.3" => [ + "doc/man3/OSSL_PARAM_allocate_from_text.pod" + ], + "doc/man/man3/OSSL_PARAM_dup.3" => [ + "doc/man3/OSSL_PARAM_dup.pod" + ], + "doc/man/man3/OSSL_PARAM_int.3" => [ + "doc/man3/OSSL_PARAM_int.pod" + ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], + "doc/man/man3/OSSL_PROVIDER.3" => [ + "doc/man3/OSSL_PROVIDER.pod" + ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], + "doc/man/man3/OSSL_SELF_TEST_new.3" => [ + "doc/man3/OSSL_SELF_TEST_new.pod" + ], + "doc/man/man3/OSSL_SELF_TEST_set_callback.3" => [ + "doc/man3/OSSL_SELF_TEST_set_callback.pod" + ], + "doc/man/man3/OSSL_STORE_INFO.3" => [ + "doc/man3/OSSL_STORE_INFO.pod" + ], + "doc/man/man3/OSSL_STORE_LOADER.3" => [ + "doc/man3/OSSL_STORE_LOADER.pod" + ], + "doc/man/man3/OSSL_STORE_SEARCH.3" => [ + "doc/man3/OSSL_STORE_SEARCH.pod" + ], + "doc/man/man3/OSSL_STORE_attach.3" => [ + "doc/man3/OSSL_STORE_attach.pod" + ], + "doc/man/man3/OSSL_STORE_expect.3" => [ + "doc/man3/OSSL_STORE_expect.pod" + ], + "doc/man/man3/OSSL_STORE_open.3" => [ + "doc/man3/OSSL_STORE_open.pod" + ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], + "doc/man/man3/OSSL_trace_enabled.3" => [ + "doc/man3/OSSL_trace_enabled.pod" + ], + "doc/man/man3/OSSL_trace_get_category_num.3" => [ + "doc/man3/OSSL_trace_get_category_num.pod" + ], + "doc/man/man3/OSSL_trace_set_channel.3" => [ + "doc/man3/OSSL_trace_set_channel.pod" + ], + "doc/man/man3/OpenSSL_add_all_algorithms.3" => [ + "doc/man3/OpenSSL_add_all_algorithms.pod" + ], + "doc/man/man3/OpenSSL_version.3" => [ + "doc/man3/OpenSSL_version.pod" + ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], + "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ + "doc/man3/PEM_X509_INFO_read_bio_ex.pod" + ], + "doc/man/man3/PEM_bytes_read_bio.3" => [ + "doc/man3/PEM_bytes_read_bio.pod" + ], + "doc/man/man3/PEM_read.3" => [ + "doc/man3/PEM_read.pod" + ], + "doc/man/man3/PEM_read_CMS.3" => [ + "doc/man3/PEM_read_CMS.pod" + ], + "doc/man/man3/PEM_read_bio_PrivateKey.3" => [ + "doc/man3/PEM_read_bio_PrivateKey.pod" + ], + "doc/man/man3/PEM_read_bio_ex.3" => [ + "doc/man3/PEM_read_bio_ex.pod" + ], + "doc/man/man3/PEM_write_bio_CMS_stream.3" => [ + "doc/man3/PEM_write_bio_CMS_stream.pod" + ], + "doc/man/man3/PEM_write_bio_PKCS7_stream.3" => [ + "doc/man3/PEM_write_bio_PKCS7_stream.pod" + ], + "doc/man/man3/PKCS12_PBE_keyivgen.3" => [ + "doc/man3/PKCS12_PBE_keyivgen.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_create_cert.3" => [ + "doc/man3/PKCS12_SAFEBAG_create_cert.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ + "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], + "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ + "doc/man3/PKCS12_add1_attr_by_NID.pod" + ], + "doc/man/man3/PKCS12_add_CSPName_asc.3" => [ + "doc/man3/PKCS12_add_CSPName_asc.pod" + ], + "doc/man/man3/PKCS12_add_cert.3" => [ + "doc/man3/PKCS12_add_cert.pod" + ], + "doc/man/man3/PKCS12_add_friendlyname_asc.3" => [ + "doc/man3/PKCS12_add_friendlyname_asc.pod" + ], + "doc/man/man3/PKCS12_add_localkeyid.3" => [ + "doc/man3/PKCS12_add_localkeyid.pod" + ], + "doc/man/man3/PKCS12_add_safe.3" => [ + "doc/man3/PKCS12_add_safe.pod" + ], + "doc/man/man3/PKCS12_create.3" => [ + "doc/man3/PKCS12_create.pod" + ], + "doc/man/man3/PKCS12_decrypt_skey.3" => [ + "doc/man3/PKCS12_decrypt_skey.pod" + ], + "doc/man/man3/PKCS12_gen_mac.3" => [ + "doc/man3/PKCS12_gen_mac.pod" + ], + "doc/man/man3/PKCS12_get_friendlyname.3" => [ + "doc/man3/PKCS12_get_friendlyname.pod" + ], + "doc/man/man3/PKCS12_init.3" => [ + "doc/man3/PKCS12_init.pod" + ], + "doc/man/man3/PKCS12_item_decrypt_d2i.3" => [ + "doc/man3/PKCS12_item_decrypt_d2i.pod" + ], + "doc/man/man3/PKCS12_key_gen_utf8_ex.3" => [ + "doc/man3/PKCS12_key_gen_utf8_ex.pod" + ], + "doc/man/man3/PKCS12_newpass.3" => [ + "doc/man3/PKCS12_newpass.pod" + ], + "doc/man/man3/PKCS12_pack_p7encdata.3" => [ + "doc/man3/PKCS12_pack_p7encdata.pod" + ], + "doc/man/man3/PKCS12_parse.3" => [ + "doc/man3/PKCS12_parse.pod" + ], + "doc/man/man3/PKCS5_PBE_keyivgen.3" => [ + "doc/man3/PKCS5_PBE_keyivgen.pod" + ], + "doc/man/man3/PKCS5_PBKDF2_HMAC.3" => [ + "doc/man3/PKCS5_PBKDF2_HMAC.pod" + ], + "doc/man/man3/PKCS7_decrypt.3" => [ + "doc/man3/PKCS7_decrypt.pod" + ], + "doc/man/man3/PKCS7_encrypt.3" => [ + "doc/man3/PKCS7_encrypt.pod" + ], + "doc/man/man3/PKCS7_get_octet_string.3" => [ + "doc/man3/PKCS7_get_octet_string.pod" + ], + "doc/man/man3/PKCS7_sign.3" => [ + "doc/man3/PKCS7_sign.pod" + ], + "doc/man/man3/PKCS7_sign_add_signer.3" => [ + "doc/man3/PKCS7_sign_add_signer.pod" + ], + "doc/man/man3/PKCS7_type_is_other.3" => [ + "doc/man3/PKCS7_type_is_other.pod" + ], + "doc/man/man3/PKCS7_verify.3" => [ + "doc/man3/PKCS7_verify.pod" + ], + "doc/man/man3/PKCS8_encrypt.3" => [ + "doc/man3/PKCS8_encrypt.pod" + ], + "doc/man/man3/PKCS8_pkey_add1_attr.3" => [ + "doc/man3/PKCS8_pkey_add1_attr.pod" + ], + "doc/man/man3/RAND_add.3" => [ + "doc/man3/RAND_add.pod" + ], + "doc/man/man3/RAND_bytes.3" => [ + "doc/man3/RAND_bytes.pod" + ], + "doc/man/man3/RAND_cleanup.3" => [ + "doc/man3/RAND_cleanup.pod" + ], + "doc/man/man3/RAND_egd.3" => [ + "doc/man3/RAND_egd.pod" + ], + "doc/man/man3/RAND_get0_primary.3" => [ + "doc/man3/RAND_get0_primary.pod" + ], + "doc/man/man3/RAND_load_file.3" => [ + "doc/man3/RAND_load_file.pod" + ], + "doc/man/man3/RAND_set_DRBG_type.3" => [ + "doc/man3/RAND_set_DRBG_type.pod" + ], + "doc/man/man3/RAND_set_rand_method.3" => [ + "doc/man3/RAND_set_rand_method.pod" + ], + "doc/man/man3/RC4_set_key.3" => [ + "doc/man3/RC4_set_key.pod" + ], + "doc/man/man3/RIPEMD160_Init.3" => [ + "doc/man3/RIPEMD160_Init.pod" + ], + "doc/man/man3/RSA_blinding_on.3" => [ + "doc/man3/RSA_blinding_on.pod" + ], + "doc/man/man3/RSA_check_key.3" => [ + "doc/man3/RSA_check_key.pod" + ], + "doc/man/man3/RSA_generate_key.3" => [ + "doc/man3/RSA_generate_key.pod" + ], + "doc/man/man3/RSA_get0_key.3" => [ + "doc/man3/RSA_get0_key.pod" + ], + "doc/man/man3/RSA_meth_new.3" => [ + "doc/man3/RSA_meth_new.pod" + ], + "doc/man/man3/RSA_new.3" => [ + "doc/man3/RSA_new.pod" + ], + "doc/man/man3/RSA_padding_add_PKCS1_type_1.3" => [ + "doc/man3/RSA_padding_add_PKCS1_type_1.pod" + ], + "doc/man/man3/RSA_print.3" => [ + "doc/man3/RSA_print.pod" + ], + "doc/man/man3/RSA_private_encrypt.3" => [ + "doc/man3/RSA_private_encrypt.pod" + ], + "doc/man/man3/RSA_public_encrypt.3" => [ + "doc/man3/RSA_public_encrypt.pod" + ], + "doc/man/man3/RSA_set_method.3" => [ + "doc/man3/RSA_set_method.pod" + ], + "doc/man/man3/RSA_sign.3" => [ + "doc/man3/RSA_sign.pod" + ], + "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3" => [ + "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" + ], + "doc/man/man3/RSA_size.3" => [ + "doc/man3/RSA_size.pod" + ], + "doc/man/man3/SCT_new.3" => [ + "doc/man3/SCT_new.pod" + ], + "doc/man/man3/SCT_print.3" => [ + "doc/man3/SCT_print.pod" + ], + "doc/man/man3/SCT_validate.3" => [ + "doc/man3/SCT_validate.pod" + ], + "doc/man/man3/SHA256_Init.3" => [ + "doc/man3/SHA256_Init.pod" + ], + "doc/man/man3/SMIME_read_ASN1.3" => [ + "doc/man3/SMIME_read_ASN1.pod" + ], + "doc/man/man3/SMIME_read_CMS.3" => [ + "doc/man3/SMIME_read_CMS.pod" + ], + "doc/man/man3/SMIME_read_PKCS7.3" => [ + "doc/man3/SMIME_read_PKCS7.pod" + ], + "doc/man/man3/SMIME_write_ASN1.3" => [ + "doc/man3/SMIME_write_ASN1.pod" + ], + "doc/man/man3/SMIME_write_CMS.3" => [ + "doc/man3/SMIME_write_CMS.pod" + ], + "doc/man/man3/SMIME_write_PKCS7.3" => [ + "doc/man3/SMIME_write_PKCS7.pod" + ], + "doc/man/man3/SRP_Calc_B.3" => [ + "doc/man3/SRP_Calc_B.pod" + ], + "doc/man/man3/SRP_VBASE_new.3" => [ + "doc/man3/SRP_VBASE_new.pod" + ], + "doc/man/man3/SRP_create_verifier.3" => [ + "doc/man3/SRP_create_verifier.pod" + ], + "doc/man/man3/SRP_user_pwd_new.3" => [ + "doc/man3/SRP_user_pwd_new.pod" + ], + "doc/man/man3/SSL_CIPHER_get_name.3" => [ + "doc/man3/SSL_CIPHER_get_name.pod" + ], + "doc/man/man3/SSL_COMP_add_compression_method.3" => [ + "doc/man3/SSL_COMP_add_compression_method.pod" + ], + "doc/man/man3/SSL_CONF_CTX_new.3" => [ + "doc/man3/SSL_CONF_CTX_new.pod" + ], + "doc/man/man3/SSL_CONF_CTX_set1_prefix.3" => [ + "doc/man3/SSL_CONF_CTX_set1_prefix.pod" + ], + "doc/man/man3/SSL_CONF_CTX_set_flags.3" => [ + "doc/man3/SSL_CONF_CTX_set_flags.pod" + ], + "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3" => [ + "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" + ], + "doc/man/man3/SSL_CONF_cmd.3" => [ + "doc/man3/SSL_CONF_cmd.pod" + ], + "doc/man/man3/SSL_CONF_cmd_argv.3" => [ + "doc/man3/SSL_CONF_cmd_argv.pod" + ], + "doc/man/man3/SSL_CTX_add1_chain_cert.3" => [ + "doc/man3/SSL_CTX_add1_chain_cert.pod" + ], + "doc/man/man3/SSL_CTX_add_extra_chain_cert.3" => [ + "doc/man3/SSL_CTX_add_extra_chain_cert.pod" + ], + "doc/man/man3/SSL_CTX_add_session.3" => [ + "doc/man3/SSL_CTX_add_session.pod" + ], + "doc/man/man3/SSL_CTX_config.3" => [ + "doc/man3/SSL_CTX_config.pod" + ], + "doc/man/man3/SSL_CTX_ctrl.3" => [ + "doc/man3/SSL_CTX_ctrl.pod" + ], + "doc/man/man3/SSL_CTX_dane_enable.3" => [ + "doc/man3/SSL_CTX_dane_enable.pod" + ], + "doc/man/man3/SSL_CTX_flush_sessions.3" => [ + "doc/man3/SSL_CTX_flush_sessions.pod" + ], + "doc/man/man3/SSL_CTX_free.3" => [ + "doc/man3/SSL_CTX_free.pod" + ], + "doc/man/man3/SSL_CTX_get0_param.3" => [ + "doc/man3/SSL_CTX_get0_param.pod" + ], + "doc/man/man3/SSL_CTX_get_verify_mode.3" => [ + "doc/man3/SSL_CTX_get_verify_mode.pod" + ], + "doc/man/man3/SSL_CTX_has_client_custom_ext.3" => [ + "doc/man3/SSL_CTX_has_client_custom_ext.pod" + ], + "doc/man/man3/SSL_CTX_load_verify_locations.3" => [ + "doc/man3/SSL_CTX_load_verify_locations.pod" + ], + "doc/man/man3/SSL_CTX_new.3" => [ + "doc/man3/SSL_CTX_new.pod" + ], + "doc/man/man3/SSL_CTX_sess_number.3" => [ + "doc/man3/SSL_CTX_sess_number.pod" + ], + "doc/man/man3/SSL_CTX_sess_set_cache_size.3" => [ + "doc/man3/SSL_CTX_sess_set_cache_size.pod" + ], + "doc/man/man3/SSL_CTX_sess_set_get_cb.3" => [ + "doc/man3/SSL_CTX_sess_set_get_cb.pod" + ], + "doc/man/man3/SSL_CTX_sessions.3" => [ + "doc/man3/SSL_CTX_sessions.pod" + ], + "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ + "doc/man3/SSL_CTX_set0_CA_list.pod" + ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], + "doc/man/man3/SSL_CTX_set1_curves.3" => [ + "doc/man3/SSL_CTX_set1_curves.pod" + ], + "doc/man/man3/SSL_CTX_set1_sigalgs.3" => [ + "doc/man3/SSL_CTX_set1_sigalgs.pod" + ], + "doc/man/man3/SSL_CTX_set1_verify_cert_store.3" => [ + "doc/man3/SSL_CTX_set1_verify_cert_store.pod" + ], + "doc/man/man3/SSL_CTX_set_alpn_select_cb.3" => [ + "doc/man3/SSL_CTX_set_alpn_select_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_cert_cb.3" => [ + "doc/man3/SSL_CTX_set_cert_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_cert_store.3" => [ + "doc/man3/SSL_CTX_set_cert_store.pod" + ], + "doc/man/man3/SSL_CTX_set_cert_verify_callback.3" => [ + "doc/man3/SSL_CTX_set_cert_verify_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_cipher_list.3" => [ + "doc/man3/SSL_CTX_set_cipher_list.pod" + ], + "doc/man/man3/SSL_CTX_set_client_cert_cb.3" => [ + "doc/man3/SSL_CTX_set_client_cert_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_client_hello_cb.3" => [ + "doc/man3/SSL_CTX_set_client_hello_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_ct_validation_callback.3" => [ + "doc/man3/SSL_CTX_set_ct_validation_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_ctlog_list_file.3" => [ + "doc/man3/SSL_CTX_set_ctlog_list_file.pod" + ], + "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ + "doc/man3/SSL_CTX_set_default_passwd_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], + "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ + "doc/man3/SSL_CTX_set_generate_session_id.pod" + ], + "doc/man/man3/SSL_CTX_set_info_callback.3" => [ + "doc/man3/SSL_CTX_set_info_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_keylog_callback.3" => [ + "doc/man3/SSL_CTX_set_keylog_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_max_cert_list.3" => [ + "doc/man3/SSL_CTX_set_max_cert_list.pod" + ], + "doc/man/man3/SSL_CTX_set_min_proto_version.3" => [ + "doc/man3/SSL_CTX_set_min_proto_version.pod" + ], + "doc/man/man3/SSL_CTX_set_mode.3" => [ + "doc/man3/SSL_CTX_set_mode.pod" + ], + "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ + "doc/man3/SSL_CTX_set_msg_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ + "doc/man3/SSL_CTX_set_num_tickets.pod" + ], + "doc/man/man3/SSL_CTX_set_options.3" => [ + "doc/man3/SSL_CTX_set_options.pod" + ], + "doc/man/man3/SSL_CTX_set_psk_client_callback.3" => [ + "doc/man3/SSL_CTX_set_psk_client_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_quiet_shutdown.3" => [ + "doc/man3/SSL_CTX_set_quiet_shutdown.pod" + ], + "doc/man/man3/SSL_CTX_set_read_ahead.3" => [ + "doc/man3/SSL_CTX_set_read_ahead.pod" + ], + "doc/man/man3/SSL_CTX_set_record_padding_callback.3" => [ + "doc/man3/SSL_CTX_set_record_padding_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_security_level.3" => [ + "doc/man3/SSL_CTX_set_security_level.pod" + ], + "doc/man/man3/SSL_CTX_set_session_cache_mode.3" => [ + "doc/man3/SSL_CTX_set_session_cache_mode.pod" + ], + "doc/man/man3/SSL_CTX_set_session_id_context.3" => [ + "doc/man3/SSL_CTX_set_session_id_context.pod" + ], + "doc/man/man3/SSL_CTX_set_session_ticket_cb.3" => [ + "doc/man3/SSL_CTX_set_session_ticket_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_split_send_fragment.3" => [ + "doc/man3/SSL_CTX_set_split_send_fragment.pod" + ], + "doc/man/man3/SSL_CTX_set_srp_password.3" => [ + "doc/man3/SSL_CTX_set_srp_password.pod" + ], + "doc/man/man3/SSL_CTX_set_ssl_version.3" => [ + "doc/man3/SSL_CTX_set_ssl_version.pod" + ], + "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3" => [ + "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_timeout.3" => [ + "doc/man3/SSL_CTX_set_timeout.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3" => [ + "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3" => [ + "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3" => [ + "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3" => [ + "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" + ], + "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3" => [ + "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_tmp_ecdh.3" => [ + "doc/man3/SSL_CTX_set_tmp_ecdh.pod" + ], + "doc/man/man3/SSL_CTX_set_verify.3" => [ + "doc/man3/SSL_CTX_set_verify.pod" + ], + "doc/man/man3/SSL_CTX_use_certificate.3" => [ + "doc/man3/SSL_CTX_use_certificate.pod" + ], + "doc/man/man3/SSL_CTX_use_psk_identity_hint.3" => [ + "doc/man3/SSL_CTX_use_psk_identity_hint.pod" + ], + "doc/man/man3/SSL_CTX_use_serverinfo.3" => [ + "doc/man3/SSL_CTX_use_serverinfo.pod" + ], + "doc/man/man3/SSL_SESSION_free.3" => [ + "doc/man3/SSL_SESSION_free.pod" + ], + "doc/man/man3/SSL_SESSION_get0_cipher.3" => [ + "doc/man3/SSL_SESSION_get0_cipher.pod" + ], + "doc/man/man3/SSL_SESSION_get0_hostname.3" => [ + "doc/man3/SSL_SESSION_get0_hostname.pod" + ], + "doc/man/man3/SSL_SESSION_get0_id_context.3" => [ + "doc/man3/SSL_SESSION_get0_id_context.pod" + ], + "doc/man/man3/SSL_SESSION_get0_peer.3" => [ + "doc/man3/SSL_SESSION_get0_peer.pod" + ], + "doc/man/man3/SSL_SESSION_get_compress_id.3" => [ + "doc/man3/SSL_SESSION_get_compress_id.pod" + ], + "doc/man/man3/SSL_SESSION_get_protocol_version.3" => [ + "doc/man3/SSL_SESSION_get_protocol_version.pod" + ], + "doc/man/man3/SSL_SESSION_get_time.3" => [ + "doc/man3/SSL_SESSION_get_time.pod" + ], + "doc/man/man3/SSL_SESSION_has_ticket.3" => [ + "doc/man3/SSL_SESSION_has_ticket.pod" + ], + "doc/man/man3/SSL_SESSION_is_resumable.3" => [ + "doc/man3/SSL_SESSION_is_resumable.pod" + ], + "doc/man/man3/SSL_SESSION_print.3" => [ + "doc/man3/SSL_SESSION_print.pod" + ], + "doc/man/man3/SSL_SESSION_set1_id.3" => [ + "doc/man3/SSL_SESSION_set1_id.pod" + ], + "doc/man/man3/SSL_accept.3" => [ + "doc/man3/SSL_accept.pod" + ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], + "doc/man/man3/SSL_alert_type_string.3" => [ + "doc/man3/SSL_alert_type_string.pod" + ], + "doc/man/man3/SSL_alloc_buffers.3" => [ + "doc/man3/SSL_alloc_buffers.pod" + ], + "doc/man/man3/SSL_check_chain.3" => [ + "doc/man3/SSL_check_chain.pod" + ], + "doc/man/man3/SSL_clear.3" => [ + "doc/man3/SSL_clear.pod" + ], + "doc/man/man3/SSL_connect.3" => [ + "doc/man3/SSL_connect.pod" + ], + "doc/man/man3/SSL_do_handshake.3" => [ + "doc/man3/SSL_do_handshake.pod" + ], + "doc/man/man3/SSL_export_keying_material.3" => [ + "doc/man3/SSL_export_keying_material.pod" + ], + "doc/man/man3/SSL_extension_supported.3" => [ + "doc/man3/SSL_extension_supported.pod" + ], + "doc/man/man3/SSL_free.3" => [ + "doc/man3/SSL_free.pod" + ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], + "doc/man/man3/SSL_get0_peer_scts.3" => [ + "doc/man3/SSL_get0_peer_scts.pod" + ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], + "doc/man/man3/SSL_get_SSL_CTX.3" => [ + "doc/man3/SSL_get_SSL_CTX.pod" + ], + "doc/man/man3/SSL_get_all_async_fds.3" => [ + "doc/man3/SSL_get_all_async_fds.pod" + ], + "doc/man/man3/SSL_get_certificate.3" => [ + "doc/man3/SSL_get_certificate.pod" + ], + "doc/man/man3/SSL_get_ciphers.3" => [ + "doc/man3/SSL_get_ciphers.pod" + ], + "doc/man/man3/SSL_get_client_random.3" => [ + "doc/man3/SSL_get_client_random.pod" + ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], + "doc/man/man3/SSL_get_current_cipher.3" => [ + "doc/man3/SSL_get_current_cipher.pod" + ], + "doc/man/man3/SSL_get_default_timeout.3" => [ + "doc/man3/SSL_get_default_timeout.pod" + ], + "doc/man/man3/SSL_get_error.3" => [ + "doc/man3/SSL_get_error.pod" + ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], + "doc/man/man3/SSL_get_extms_support.3" => [ + "doc/man3/SSL_get_extms_support.pod" + ], + "doc/man/man3/SSL_get_fd.3" => [ + "doc/man3/SSL_get_fd.pod" + ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], + "doc/man/man3/SSL_get_peer_cert_chain.3" => [ + "doc/man3/SSL_get_peer_cert_chain.pod" + ], + "doc/man/man3/SSL_get_peer_certificate.3" => [ + "doc/man3/SSL_get_peer_certificate.pod" + ], + "doc/man/man3/SSL_get_peer_signature_nid.3" => [ + "doc/man3/SSL_get_peer_signature_nid.pod" + ], + "doc/man/man3/SSL_get_peer_tmp_key.3" => [ + "doc/man3/SSL_get_peer_tmp_key.pod" + ], + "doc/man/man3/SSL_get_psk_identity.3" => [ + "doc/man3/SSL_get_psk_identity.pod" + ], + "doc/man/man3/SSL_get_rbio.3" => [ + "doc/man3/SSL_get_rbio.pod" + ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], + "doc/man/man3/SSL_get_session.3" => [ + "doc/man3/SSL_get_session.pod" + ], + "doc/man/man3/SSL_get_shared_sigalgs.3" => [ + "doc/man3/SSL_get_shared_sigalgs.pod" + ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], + "doc/man/man3/SSL_get_verify_result.3" => [ + "doc/man3/SSL_get_verify_result.pod" + ], + "doc/man/man3/SSL_get_version.3" => [ + "doc/man3/SSL_get_version.pod" + ], + "doc/man/man3/SSL_group_to_name.3" => [ + "doc/man3/SSL_group_to_name.pod" + ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], + "doc/man/man3/SSL_in_init.3" => [ + "doc/man3/SSL_in_init.pod" + ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], + "doc/man/man3/SSL_key_update.3" => [ + "doc/man3/SSL_key_update.pod" + ], + "doc/man/man3/SSL_library_init.3" => [ + "doc/man3/SSL_library_init.pod" + ], + "doc/man/man3/SSL_load_client_CA_file.3" => [ + "doc/man3/SSL_load_client_CA_file.pod" + ], + "doc/man/man3/SSL_new.3" => [ + "doc/man3/SSL_new.pod" + ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], + "doc/man/man3/SSL_pending.3" => [ + "doc/man3/SSL_pending.pod" + ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], + "doc/man/man3/SSL_read.3" => [ + "doc/man3/SSL_read.pod" + ], + "doc/man/man3/SSL_read_early_data.3" => [ + "doc/man3/SSL_read_early_data.pod" + ], + "doc/man/man3/SSL_rstate_string.3" => [ + "doc/man3/SSL_rstate_string.pod" + ], + "doc/man/man3/SSL_session_reused.3" => [ + "doc/man3/SSL_session_reused.pod" + ], + "doc/man/man3/SSL_set1_host.3" => [ + "doc/man3/SSL_set1_host.pod" + ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], + "doc/man/man3/SSL_set_async_callback.3" => [ + "doc/man3/SSL_set_async_callback.pod" + ], + "doc/man/man3/SSL_set_bio.3" => [ + "doc/man3/SSL_set_bio.pod" + ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], + "doc/man/man3/SSL_set_connect_state.3" => [ + "doc/man3/SSL_set_connect_state.pod" + ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], + "doc/man/man3/SSL_set_fd.3" => [ + "doc/man3/SSL_set_fd.pod" + ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], + "doc/man/man3/SSL_set_retry_verify.3" => [ + "doc/man3/SSL_set_retry_verify.pod" + ], + "doc/man/man3/SSL_set_session.3" => [ + "doc/man3/SSL_set_session.pod" + ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], + "doc/man/man3/SSL_set_shutdown.3" => [ + "doc/man3/SSL_set_shutdown.pod" + ], + "doc/man/man3/SSL_set_verify_result.3" => [ + "doc/man3/SSL_set_verify_result.pod" + ], + "doc/man/man3/SSL_shutdown.3" => [ + "doc/man3/SSL_shutdown.pod" + ], + "doc/man/man3/SSL_state_string.3" => [ + "doc/man3/SSL_state_string.pod" + ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], + "doc/man/man3/SSL_want.3" => [ + "doc/man3/SSL_want.pod" + ], + "doc/man/man3/SSL_write.3" => [ + "doc/man3/SSL_write.pod" + ], + "doc/man/man3/TS_RESP_CTX_new.3" => [ + "doc/man3/TS_RESP_CTX_new.pod" + ], + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" + ], + "doc/man/man3/UI_STRING.3" => [ + "doc/man3/UI_STRING.pod" + ], + "doc/man/man3/UI_UTIL_read_pw.3" => [ + "doc/man3/UI_UTIL_read_pw.pod" + ], + "doc/man/man3/UI_create_method.3" => [ + "doc/man3/UI_create_method.pod" + ], + "doc/man/man3/UI_new.3" => [ + "doc/man3/UI_new.pod" + ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], + "doc/man/man3/X509V3_get_d2i.3" => [ + "doc/man3/X509V3_get_d2i.pod" + ], + "doc/man/man3/X509V3_set_ctx.3" => [ + "doc/man3/X509V3_set_ctx.pod" + ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], + "doc/man/man3/X509_ALGOR_dup.3" => [ + "doc/man3/X509_ALGOR_dup.pod" + ], + "doc/man/man3/X509_ATTRIBUTE.3" => [ + "doc/man3/X509_ATTRIBUTE.pod" + ], + "doc/man/man3/X509_CRL_get0_by_serial.3" => [ + "doc/man3/X509_CRL_get0_by_serial.pod" + ], + "doc/man/man3/X509_EXTENSION_set_object.3" => [ + "doc/man3/X509_EXTENSION_set_object.pod" + ], + "doc/man/man3/X509_LOOKUP.3" => [ + "doc/man3/X509_LOOKUP.pod" + ], + "doc/man/man3/X509_LOOKUP_hash_dir.3" => [ + "doc/man3/X509_LOOKUP_hash_dir.pod" + ], + "doc/man/man3/X509_LOOKUP_meth_new.3" => [ + "doc/man3/X509_LOOKUP_meth_new.pod" + ], + "doc/man/man3/X509_NAME_ENTRY_get_object.3" => [ + "doc/man3/X509_NAME_ENTRY_get_object.pod" + ], + "doc/man/man3/X509_NAME_add_entry_by_txt.3" => [ + "doc/man3/X509_NAME_add_entry_by_txt.pod" + ], + "doc/man/man3/X509_NAME_get0_der.3" => [ + "doc/man3/X509_NAME_get0_der.pod" + ], + "doc/man/man3/X509_NAME_get_index_by_NID.3" => [ + "doc/man3/X509_NAME_get_index_by_NID.pod" + ], + "doc/man/man3/X509_NAME_print_ex.3" => [ + "doc/man3/X509_NAME_print_ex.pod" + ], + "doc/man/man3/X509_PUBKEY_new.3" => [ + "doc/man3/X509_PUBKEY_new.pod" + ], + "doc/man/man3/X509_REQ_get_attr.3" => [ + "doc/man3/X509_REQ_get_attr.pod" + ], + "doc/man/man3/X509_REQ_get_extensions.3" => [ + "doc/man3/X509_REQ_get_extensions.pod" + ], + "doc/man/man3/X509_SIG_get0.3" => [ + "doc/man3/X509_SIG_get0.pod" + ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], + "doc/man/man3/X509_STORE_CTX_get_error.3" => [ + "doc/man3/X509_STORE_CTX_get_error.pod" + ], + "doc/man/man3/X509_STORE_CTX_new.3" => [ + "doc/man3/X509_STORE_CTX_new.pod" + ], + "doc/man/man3/X509_STORE_CTX_set_verify_cb.3" => [ + "doc/man3/X509_STORE_CTX_set_verify_cb.pod" + ], + "doc/man/man3/X509_STORE_add_cert.3" => [ + "doc/man3/X509_STORE_add_cert.pod" + ], + "doc/man/man3/X509_STORE_get0_param.3" => [ + "doc/man3/X509_STORE_get0_param.pod" + ], + "doc/man/man3/X509_STORE_new.3" => [ + "doc/man3/X509_STORE_new.pod" + ], + "doc/man/man3/X509_STORE_set_verify_cb_func.3" => [ + "doc/man3/X509_STORE_set_verify_cb_func.pod" + ], + "doc/man/man3/X509_VERIFY_PARAM_set_flags.3" => [ + "doc/man3/X509_VERIFY_PARAM_set_flags.pod" + ], + "doc/man/man3/X509_add_cert.3" => [ + "doc/man3/X509_add_cert.pod" + ], + "doc/man/man3/X509_check_ca.3" => [ + "doc/man3/X509_check_ca.pod" + ], + "doc/man/man3/X509_check_host.3" => [ + "doc/man3/X509_check_host.pod" + ], + "doc/man/man3/X509_check_issued.3" => [ + "doc/man3/X509_check_issued.pod" + ], + "doc/man/man3/X509_check_private_key.3" => [ + "doc/man3/X509_check_private_key.pod" + ], + "doc/man/man3/X509_check_purpose.3" => [ + "doc/man3/X509_check_purpose.pod" + ], + "doc/man/man3/X509_cmp.3" => [ + "doc/man3/X509_cmp.pod" + ], + "doc/man/man3/X509_cmp_time.3" => [ + "doc/man3/X509_cmp_time.pod" + ], + "doc/man/man3/X509_digest.3" => [ + "doc/man3/X509_digest.pod" + ], + "doc/man/man3/X509_dup.3" => [ + "doc/man3/X509_dup.pod" + ], + "doc/man/man3/X509_get0_distinguishing_id.3" => [ + "doc/man3/X509_get0_distinguishing_id.pod" + ], + "doc/man/man3/X509_get0_notBefore.3" => [ + "doc/man3/X509_get0_notBefore.pod" + ], + "doc/man/man3/X509_get0_signature.3" => [ + "doc/man3/X509_get0_signature.pod" + ], + "doc/man/man3/X509_get0_uids.3" => [ + "doc/man3/X509_get0_uids.pod" + ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], + "doc/man/man3/X509_get_extension_flags.3" => [ + "doc/man3/X509_get_extension_flags.pod" + ], + "doc/man/man3/X509_get_pubkey.3" => [ + "doc/man3/X509_get_pubkey.pod" + ], + "doc/man/man3/X509_get_serialNumber.3" => [ + "doc/man3/X509_get_serialNumber.pod" + ], + "doc/man/man3/X509_get_subject_name.3" => [ + "doc/man3/X509_get_subject_name.pod" + ], + "doc/man/man3/X509_get_version.3" => [ + "doc/man3/X509_get_version.pod" + ], + "doc/man/man3/X509_load_http.3" => [ + "doc/man3/X509_load_http.pod" + ], + "doc/man/man3/X509_new.3" => [ + "doc/man3/X509_new.pod" + ], + "doc/man/man3/X509_sign.3" => [ + "doc/man3/X509_sign.pod" + ], + "doc/man/man3/X509_verify.3" => [ + "doc/man3/X509_verify.pod" + ], + "doc/man/man3/X509_verify_cert.3" => [ + "doc/man3/X509_verify_cert.pod" + ], + "doc/man/man3/X509v3_get_ext_by_NID.3" => [ + "doc/man3/X509v3_get_ext_by_NID.pod" + ], + "doc/man/man3/b2i_PVK_bio_ex.3" => [ + "doc/man3/b2i_PVK_bio_ex.pod" + ], + "doc/man/man3/d2i_PKCS8PrivateKey_bio.3" => [ + "doc/man3/d2i_PKCS8PrivateKey_bio.pod" + ], + "doc/man/man3/d2i_PrivateKey.3" => [ + "doc/man3/d2i_PrivateKey.pod" + ], + "doc/man/man3/d2i_RSAPrivateKey.3" => [ + "doc/man3/d2i_RSAPrivateKey.pod" + ], + "doc/man/man3/d2i_SSL_SESSION.3" => [ + "doc/man3/d2i_SSL_SESSION.pod" + ], + "doc/man/man3/d2i_X509.3" => [ + "doc/man3/d2i_X509.pod" + ], + "doc/man/man3/i2d_CMS_bio_stream.3" => [ + "doc/man3/i2d_CMS_bio_stream.pod" + ], + "doc/man/man3/i2d_PKCS7_bio_stream.3" => [ + "doc/man3/i2d_PKCS7_bio_stream.pod" + ], + "doc/man/man3/i2d_re_X509_tbs.3" => [ + "doc/man3/i2d_re_X509_tbs.pod" + ], + "doc/man/man3/o2i_SCT_LIST.3" => [ + "doc/man3/o2i_SCT_LIST.pod" + ], + "doc/man/man3/s2i_ASN1_IA5STRING.3" => [ + "doc/man3/s2i_ASN1_IA5STRING.pod" + ], + "doc/man/man5/config.5" => [ + "doc/man5/config.pod" + ], + "doc/man/man5/fips_config.5" => [ + "doc/man5/fips_config.pod" + ], + "doc/man/man5/x509v3_config.5" => [ + "doc/man5/x509v3_config.pod" + ], + "doc/man/man7/EVP_ASYM_CIPHER-RSA.7" => [ + "doc/man7/EVP_ASYM_CIPHER-RSA.pod" + ], + "doc/man/man7/EVP_ASYM_CIPHER-SM2.7" => [ + "doc/man7/EVP_ASYM_CIPHER-SM2.pod" + ], + "doc/man/man7/EVP_CIPHER-AES.7" => [ + "doc/man7/EVP_CIPHER-AES.pod" + ], + "doc/man/man7/EVP_CIPHER-ARIA.7" => [ + "doc/man7/EVP_CIPHER-ARIA.pod" + ], + "doc/man/man7/EVP_CIPHER-BLOWFISH.7" => [ + "doc/man7/EVP_CIPHER-BLOWFISH.pod" + ], + "doc/man/man7/EVP_CIPHER-CAMELLIA.7" => [ + "doc/man7/EVP_CIPHER-CAMELLIA.pod" + ], + "doc/man/man7/EVP_CIPHER-CAST.7" => [ + "doc/man7/EVP_CIPHER-CAST.pod" + ], + "doc/man/man7/EVP_CIPHER-CHACHA.7" => [ + "doc/man7/EVP_CIPHER-CHACHA.pod" + ], + "doc/man/man7/EVP_CIPHER-DES.7" => [ + "doc/man7/EVP_CIPHER-DES.pod" + ], + "doc/man/man7/EVP_CIPHER-IDEA.7" => [ + "doc/man7/EVP_CIPHER-IDEA.pod" + ], + "doc/man/man7/EVP_CIPHER-NULL.7" => [ + "doc/man7/EVP_CIPHER-NULL.pod" + ], + "doc/man/man7/EVP_CIPHER-RC2.7" => [ + "doc/man7/EVP_CIPHER-RC2.pod" + ], + "doc/man/man7/EVP_CIPHER-RC4.7" => [ + "doc/man7/EVP_CIPHER-RC4.pod" + ], + "doc/man/man7/EVP_CIPHER-RC5.7" => [ + "doc/man7/EVP_CIPHER-RC5.pod" + ], + "doc/man/man7/EVP_CIPHER-SEED.7" => [ + "doc/man7/EVP_CIPHER-SEED.pod" + ], + "doc/man/man7/EVP_CIPHER-SM4.7" => [ + "doc/man7/EVP_CIPHER-SM4.pod" + ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], + "doc/man/man7/EVP_KDF-HKDF.7" => [ + "doc/man7/EVP_KDF-HKDF.pod" + ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], + "doc/man/man7/EVP_KDF-KB.7" => [ + "doc/man7/EVP_KDF-KB.pod" + ], + "doc/man/man7/EVP_KDF-KRB5KDF.7" => [ + "doc/man7/EVP_KDF-KRB5KDF.pod" + ], + "doc/man/man7/EVP_KDF-PBKDF1.7" => [ + "doc/man7/EVP_KDF-PBKDF1.pod" + ], + "doc/man/man7/EVP_KDF-PBKDF2.7" => [ + "doc/man7/EVP_KDF-PBKDF2.pod" + ], + "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ + "doc/man7/EVP_KDF-PKCS12KDF.pod" + ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], + "doc/man/man7/EVP_KDF-SCRYPT.7" => [ + "doc/man7/EVP_KDF-SCRYPT.pod" + ], + "doc/man/man7/EVP_KDF-SS.7" => [ + "doc/man7/EVP_KDF-SS.pod" + ], + "doc/man/man7/EVP_KDF-SSHKDF.7" => [ + "doc/man7/EVP_KDF-SSHKDF.pod" + ], + "doc/man/man7/EVP_KDF-TLS13_KDF.7" => [ + "doc/man7/EVP_KDF-TLS13_KDF.pod" + ], + "doc/man/man7/EVP_KDF-TLS1_PRF.7" => [ + "doc/man7/EVP_KDF-TLS1_PRF.pod" + ], + "doc/man/man7/EVP_KDF-X942-ASN1.7" => [ + "doc/man7/EVP_KDF-X942-ASN1.pod" + ], + "doc/man/man7/EVP_KDF-X942-CONCAT.7" => [ + "doc/man7/EVP_KDF-X942-CONCAT.pod" + ], + "doc/man/man7/EVP_KDF-X963.7" => [ + "doc/man7/EVP_KDF-X963.pod" + ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], + "doc/man/man7/EVP_KEM-RSA.7" => [ + "doc/man7/EVP_KEM-RSA.pod" + ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], + "doc/man/man7/EVP_KEYEXCH-DH.7" => [ + "doc/man7/EVP_KEYEXCH-DH.pod" + ], + "doc/man/man7/EVP_KEYEXCH-ECDH.7" => [ + "doc/man7/EVP_KEYEXCH-ECDH.pod" + ], + "doc/man/man7/EVP_KEYEXCH-X25519.7" => [ + "doc/man7/EVP_KEYEXCH-X25519.pod" + ], + "doc/man/man7/EVP_MAC-BLAKE2.7" => [ + "doc/man7/EVP_MAC-BLAKE2.pod" + ], + "doc/man/man7/EVP_MAC-CMAC.7" => [ + "doc/man7/EVP_MAC-CMAC.pod" + ], + "doc/man/man7/EVP_MAC-GMAC.7" => [ + "doc/man7/EVP_MAC-GMAC.pod" + ], + "doc/man/man7/EVP_MAC-HMAC.7" => [ + "doc/man7/EVP_MAC-HMAC.pod" + ], + "doc/man/man7/EVP_MAC-KMAC.7" => [ + "doc/man7/EVP_MAC-KMAC.pod" + ], + "doc/man/man7/EVP_MAC-Poly1305.7" => [ + "doc/man7/EVP_MAC-Poly1305.pod" + ], + "doc/man/man7/EVP_MAC-Siphash.7" => [ + "doc/man7/EVP_MAC-Siphash.pod" + ], + "doc/man/man7/EVP_MD-BLAKE2.7" => [ + "doc/man7/EVP_MD-BLAKE2.pod" + ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], + "doc/man/man7/EVP_MD-MD2.7" => [ + "doc/man7/EVP_MD-MD2.pod" + ], + "doc/man/man7/EVP_MD-MD4.7" => [ + "doc/man7/EVP_MD-MD4.pod" + ], + "doc/man/man7/EVP_MD-MD5-SHA1.7" => [ + "doc/man7/EVP_MD-MD5-SHA1.pod" + ], + "doc/man/man7/EVP_MD-MD5.7" => [ + "doc/man7/EVP_MD-MD5.pod" + ], + "doc/man/man7/EVP_MD-MDC2.7" => [ + "doc/man7/EVP_MD-MDC2.pod" + ], + "doc/man/man7/EVP_MD-NULL.7" => [ + "doc/man7/EVP_MD-NULL.pod" + ], + "doc/man/man7/EVP_MD-RIPEMD160.7" => [ + "doc/man7/EVP_MD-RIPEMD160.pod" + ], + "doc/man/man7/EVP_MD-SHA1.7" => [ + "doc/man7/EVP_MD-SHA1.pod" + ], + "doc/man/man7/EVP_MD-SHA2.7" => [ + "doc/man7/EVP_MD-SHA2.pod" + ], + "doc/man/man7/EVP_MD-SHA3.7" => [ + "doc/man7/EVP_MD-SHA3.pod" + ], + "doc/man/man7/EVP_MD-SHAKE.7" => [ + "doc/man7/EVP_MD-SHAKE.pod" + ], + "doc/man/man7/EVP_MD-SM3.7" => [ + "doc/man7/EVP_MD-SM3.pod" + ], + "doc/man/man7/EVP_MD-WHIRLPOOL.7" => [ + "doc/man7/EVP_MD-WHIRLPOOL.pod" + ], + "doc/man/man7/EVP_MD-common.7" => [ + "doc/man7/EVP_MD-common.pod" + ], + "doc/man/man7/EVP_PKEY-DH.7" => [ + "doc/man7/EVP_PKEY-DH.pod" + ], + "doc/man/man7/EVP_PKEY-DSA.7" => [ + "doc/man7/EVP_PKEY-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-EC.7" => [ + "doc/man7/EVP_PKEY-EC.pod" + ], + "doc/man/man7/EVP_PKEY-FFC.7" => [ + "doc/man7/EVP_PKEY-FFC.pod" + ], + "doc/man/man7/EVP_PKEY-HMAC.7" => [ + "doc/man7/EVP_PKEY-HMAC.pod" + ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], + "doc/man/man7/EVP_PKEY-RSA.7" => [ + "doc/man7/EVP_PKEY-RSA.pod" + ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-SM2.7" => [ + "doc/man7/EVP_PKEY-SM2.pod" + ], + "doc/man/man7/EVP_PKEY-X25519.7" => [ + "doc/man7/EVP_PKEY-X25519.pod" + ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], + "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ + "doc/man7/EVP_RAND-CTR-DRBG.pod" + ], + "doc/man/man7/EVP_RAND-HASH-DRBG.7" => [ + "doc/man7/EVP_RAND-HASH-DRBG.pod" + ], + "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ + "doc/man7/EVP_RAND-HMAC-DRBG.pod" + ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], + "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ + "doc/man7/EVP_RAND-SEED-SRC.pod" + ], + "doc/man/man7/EVP_RAND-TEST-RAND.7" => [ + "doc/man7/EVP_RAND-TEST-RAND.pod" + ], + "doc/man/man7/EVP_RAND.7" => [ + "doc/man7/EVP_RAND.pod" + ], + "doc/man/man7/EVP_SIGNATURE-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-DSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-ECDSA.7" => [ + "doc/man7/EVP_SIGNATURE-ECDSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-ED25519.7" => [ + "doc/man7/EVP_SIGNATURE-ED25519.pod" + ], + "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ + "doc/man7/EVP_SIGNATURE-HMAC.pod" + ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ + "doc/man7/EVP_SIGNATURE-RSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], + "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ + "doc/man7/OSSL_PROVIDER-FIPS.pod" + ], + "doc/man/man7/OSSL_PROVIDER-base.7" => [ + "doc/man7/OSSL_PROVIDER-base.pod" + ], + "doc/man/man7/OSSL_PROVIDER-default.7" => [ + "doc/man7/OSSL_PROVIDER-default.pod" + ], + "doc/man/man7/OSSL_PROVIDER-legacy.7" => [ + "doc/man7/OSSL_PROVIDER-legacy.pod" + ], + "doc/man/man7/OSSL_PROVIDER-null.7" => [ + "doc/man7/OSSL_PROVIDER-null.pod" + ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], + "doc/man/man7/RAND.7" => [ + "doc/man7/RAND.pod" + ], + "doc/man/man7/RSA-PSS.7" => [ + "doc/man7/RSA-PSS.pod" + ], + "doc/man/man7/X25519.7" => [ + "doc/man7/X25519.pod" + ], + "doc/man/man7/bio.7" => [ + "doc/man7/bio.pod" + ], + "doc/man/man7/ct.7" => [ + "doc/man7/ct.pod" + ], + "doc/man/man7/des_modes.7" => [ + "doc/man7/des_modes.pod" + ], + "doc/man/man7/evp.7" => [ + "doc/man7/evp.pod" + ], + "doc/man/man7/fips_module.7" => [ + "doc/man7/fips_module.pod" + ], + "doc/man/man7/life_cycle-cipher.7" => [ + "doc/man7/life_cycle-cipher.pod" + ], + "doc/man/man7/life_cycle-digest.7" => [ + "doc/man7/life_cycle-digest.pod" + ], + "doc/man/man7/life_cycle-kdf.7" => [ + "doc/man7/life_cycle-kdf.pod" + ], + "doc/man/man7/life_cycle-mac.7" => [ + "doc/man7/life_cycle-mac.pod" + ], + "doc/man/man7/life_cycle-pkey.7" => [ + "doc/man7/life_cycle-pkey.pod" + ], + "doc/man/man7/life_cycle-rand.7" => [ + "doc/man7/life_cycle-rand.pod" + ], + "doc/man/man7/openssl-core.h.7" => [ + "doc/man7/openssl-core.h.pod" + ], + "doc/man/man7/openssl-core_dispatch.h.7" => [ + "doc/man7/openssl-core_dispatch.h.pod" + ], + "doc/man/man7/openssl-core_names.h.7" => [ + "doc/man7/openssl-core_names.h.pod" + ], + "doc/man/man7/openssl-env.7" => [ + "doc/man7/openssl-env.pod" + ], + "doc/man/man7/openssl-glossary.7" => [ + "doc/man7/openssl-glossary.pod" + ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], + "doc/man/man7/openssl-threads.7" => [ + "doc/man7/openssl-threads.pod" + ], + "doc/man/man7/openssl_user_macros.7" => [ + "doc/man7/openssl_user_macros.pod" + ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], + "doc/man/man7/ossl_store-file.7" => [ + "doc/man7/ossl_store-file.pod" + ], + "doc/man/man7/ossl_store.7" => [ + "doc/man7/ossl_store.pod" + ], + "doc/man/man7/passphrase-encoding.7" => [ + "doc/man7/passphrase-encoding.pod" + ], + "doc/man/man7/property.7" => [ + "doc/man7/property.pod" + ], + "doc/man/man7/provider-asym_cipher.7" => [ + "doc/man7/provider-asym_cipher.pod" + ], + "doc/man/man7/provider-base.7" => [ + "doc/man7/provider-base.pod" + ], + "doc/man/man7/provider-cipher.7" => [ + "doc/man7/provider-cipher.pod" + ], + "doc/man/man7/provider-decoder.7" => [ + "doc/man7/provider-decoder.pod" + ], + "doc/man/man7/provider-digest.7" => [ + "doc/man7/provider-digest.pod" + ], + "doc/man/man7/provider-encoder.7" => [ + "doc/man7/provider-encoder.pod" + ], + "doc/man/man7/provider-kdf.7" => [ + "doc/man7/provider-kdf.pod" + ], + "doc/man/man7/provider-kem.7" => [ + "doc/man7/provider-kem.pod" + ], + "doc/man/man7/provider-keyexch.7" => [ + "doc/man7/provider-keyexch.pod" + ], + "doc/man/man7/provider-keymgmt.7" => [ + "doc/man7/provider-keymgmt.pod" + ], + "doc/man/man7/provider-mac.7" => [ + "doc/man7/provider-mac.pod" + ], + "doc/man/man7/provider-object.7" => [ + "doc/man7/provider-object.pod" + ], + "doc/man/man7/provider-rand.7" => [ + "doc/man7/provider-rand.pod" + ], + "doc/man/man7/provider-signature.7" => [ + "doc/man7/provider-signature.pod" + ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], + "doc/man/man7/provider-storemgmt.7" => [ + "doc/man7/provider-storemgmt.pod" + ], + "doc/man/man7/provider.7" => [ + "doc/man7/provider.pod" + ], + "doc/man/man7/proxy-certificates.7" => [ + "doc/man7/proxy-certificates.pod" + ], + "doc/man/man7/x509.7" => [ + "doc/man7/x509.pod" + ], + "doc/man1/openssl-asn1parse.pod" => [ + "doc/man1/openssl-asn1parse.pod.in" + ], + "doc/man1/openssl-ca.pod" => [ + "doc/man1/openssl-ca.pod.in" + ], + "doc/man1/openssl-ciphers.pod" => [ + "doc/man1/openssl-ciphers.pod.in" + ], + "doc/man1/openssl-cmds.pod" => [ + "doc/man1/openssl-cmds.pod.in" + ], + "doc/man1/openssl-cmp.pod" => [ + "doc/man1/openssl-cmp.pod.in" + ], + "doc/man1/openssl-cms.pod" => [ + "doc/man1/openssl-cms.pod.in" + ], + "doc/man1/openssl-crl.pod" => [ + "doc/man1/openssl-crl.pod.in" + ], + "doc/man1/openssl-crl2pkcs7.pod" => [ + "doc/man1/openssl-crl2pkcs7.pod.in" + ], + "doc/man1/openssl-dgst.pod" => [ + "doc/man1/openssl-dgst.pod.in" + ], + "doc/man1/openssl-dhparam.pod" => [ + "doc/man1/openssl-dhparam.pod.in" + ], + "doc/man1/openssl-dsa.pod" => [ + "doc/man1/openssl-dsa.pod.in" + ], + "doc/man1/openssl-dsaparam.pod" => [ + "doc/man1/openssl-dsaparam.pod.in" + ], + "doc/man1/openssl-ec.pod" => [ + "doc/man1/openssl-ec.pod.in" + ], + "doc/man1/openssl-ecparam.pod" => [ + "doc/man1/openssl-ecparam.pod.in" + ], + "doc/man1/openssl-enc.pod" => [ + "doc/man1/openssl-enc.pod.in" + ], + "doc/man1/openssl-engine.pod" => [ + "doc/man1/openssl-engine.pod.in" + ], + "doc/man1/openssl-errstr.pod" => [ + "doc/man1/openssl-errstr.pod.in" + ], + "doc/man1/openssl-fipsinstall.pod" => [ + "doc/man1/openssl-fipsinstall.pod.in" + ], + "doc/man1/openssl-gendsa.pod" => [ + "doc/man1/openssl-gendsa.pod.in" + ], + "doc/man1/openssl-genpkey.pod" => [ + "doc/man1/openssl-genpkey.pod.in" + ], + "doc/man1/openssl-genrsa.pod" => [ + "doc/man1/openssl-genrsa.pod.in" + ], + "doc/man1/openssl-info.pod" => [ + "doc/man1/openssl-info.pod.in" + ], + "doc/man1/openssl-kdf.pod" => [ + "doc/man1/openssl-kdf.pod.in" + ], + "doc/man1/openssl-list.pod" => [ + "doc/man1/openssl-list.pod.in" + ], + "doc/man1/openssl-mac.pod" => [ + "doc/man1/openssl-mac.pod.in" + ], + "doc/man1/openssl-nseq.pod" => [ + "doc/man1/openssl-nseq.pod.in" + ], + "doc/man1/openssl-ocsp.pod" => [ + "doc/man1/openssl-ocsp.pod.in" + ], + "doc/man1/openssl-passwd.pod" => [ + "doc/man1/openssl-passwd.pod.in" + ], + "doc/man1/openssl-pkcs12.pod" => [ + "doc/man1/openssl-pkcs12.pod.in" + ], + "doc/man1/openssl-pkcs7.pod" => [ + "doc/man1/openssl-pkcs7.pod.in" + ], + "doc/man1/openssl-pkcs8.pod" => [ + "doc/man1/openssl-pkcs8.pod.in" + ], + "doc/man1/openssl-pkey.pod" => [ + "doc/man1/openssl-pkey.pod.in" + ], + "doc/man1/openssl-pkeyparam.pod" => [ + "doc/man1/openssl-pkeyparam.pod.in" + ], + "doc/man1/openssl-pkeyutl.pod" => [ + "doc/man1/openssl-pkeyutl.pod.in" + ], + "doc/man1/openssl-prime.pod" => [ + "doc/man1/openssl-prime.pod.in" + ], + "doc/man1/openssl-rand.pod" => [ + "doc/man1/openssl-rand.pod.in" + ], + "doc/man1/openssl-rehash.pod" => [ + "doc/man1/openssl-rehash.pod.in" + ], + "doc/man1/openssl-req.pod" => [ + "doc/man1/openssl-req.pod.in" + ], + "doc/man1/openssl-rsa.pod" => [ + "doc/man1/openssl-rsa.pod.in" + ], + "doc/man1/openssl-rsautl.pod" => [ + "doc/man1/openssl-rsautl.pod.in" + ], + "doc/man1/openssl-s_client.pod" => [ + "doc/man1/openssl-s_client.pod.in" + ], + "doc/man1/openssl-s_server.pod" => [ + "doc/man1/openssl-s_server.pod.in" + ], + "doc/man1/openssl-s_time.pod" => [ + "doc/man1/openssl-s_time.pod.in" + ], + "doc/man1/openssl-sess_id.pod" => [ + "doc/man1/openssl-sess_id.pod.in" + ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], + "doc/man1/openssl-smime.pod" => [ + "doc/man1/openssl-smime.pod.in" + ], + "doc/man1/openssl-speed.pod" => [ + "doc/man1/openssl-speed.pod.in" + ], + "doc/man1/openssl-spkac.pod" => [ + "doc/man1/openssl-spkac.pod.in" + ], + "doc/man1/openssl-srp.pod" => [ + "doc/man1/openssl-srp.pod.in" + ], + "doc/man1/openssl-storeutl.pod" => [ + "doc/man1/openssl-storeutl.pod.in" + ], + "doc/man1/openssl-ts.pod" => [ + "doc/man1/openssl-ts.pod.in" + ], + "doc/man1/openssl-verify.pod" => [ + "doc/man1/openssl-verify.pod.in" + ], + "doc/man1/openssl-version.pod" => [ + "doc/man1/openssl-version.pod.in" + ], + "doc/man1/openssl-x509.pod" => [ + "doc/man1/openssl-x509.pod.in" + ], + "doc/man7/openssl_user_macros.pod" => [ + "doc/man7/openssl_user_macros.pod.in" + ], + "engines/e_padlock-x86.S" => [ + "engines/asm/e_padlock-x86.pl" + ], + "engines/e_padlock-x86_64.s" => [ + "engines/asm/e_padlock-x86_64.pl" + ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], + "include/crypto/bn_conf.h" => [ + "include/crypto/bn_conf.h.in" + ], + "include/crypto/dso_conf.h" => [ + "include/crypto/dso_conf.h.in" + ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], + "include/openssl/asn1.h" => [ + "include/openssl/asn1.h.in" + ], + "include/openssl/asn1t.h" => [ + "include/openssl/asn1t.h.in" + ], + "include/openssl/bio.h" => [ + "include/openssl/bio.h.in" + ], + "include/openssl/cmp.h" => [ + "include/openssl/cmp.h.in" + ], + "include/openssl/cms.h" => [ + "include/openssl/cms.h.in" + ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], + "include/openssl/conf.h" => [ + "include/openssl/conf.h.in" + ], + "include/openssl/configuration.h" => [ + "include/openssl/configuration.h.in" + ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], + "include/openssl/crmf.h" => [ + "include/openssl/crmf.h.in" + ], + "include/openssl/crypto.h" => [ + "include/openssl/crypto.h.in" + ], + "include/openssl/ct.h" => [ + "include/openssl/ct.h.in" + ], + "include/openssl/err.h" => [ + "include/openssl/err.h.in" + ], + "include/openssl/ess.h" => [ + "include/openssl/ess.h.in" + ], + "include/openssl/fipskey.h" => [ + "include/openssl/fipskey.h.in" + ], + "include/openssl/lhash.h" => [ + "include/openssl/lhash.h.in" + ], + "include/openssl/ocsp.h" => [ + "include/openssl/ocsp.h.in" + ], + "include/openssl/opensslv.h" => [ + "include/openssl/opensslv.h.in" + ], + "include/openssl/pkcs12.h" => [ + "include/openssl/pkcs12.h.in" + ], + "include/openssl/pkcs7.h" => [ + "include/openssl/pkcs7.h.in" + ], + "include/openssl/safestack.h" => [ + "include/openssl/safestack.h.in" + ], + "include/openssl/srp.h" => [ + "include/openssl/srp.h.in" + ], + "include/openssl/ssl.h" => [ + "include/openssl/ssl.h.in" + ], + "include/openssl/ui.h" => [ + "include/openssl/ui.h.in" + ], + "include/openssl/x509.h" => [ + "include/openssl/x509.h.in" + ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], + "include/openssl/x509_vfy.h" => [ + "include/openssl/x509_vfy.h.in" + ], + "include/openssl/x509v3.h" => [ + "include/openssl/x509v3.h.in" + ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], + "libcrypto.ld" => [ + "util/libcrypto.num", + "libcrypto" + ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "libssl.ld" => [ + "util/libssl.num", + "libssl" + ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], + "providers/common/der/der_digests_gen.c" => [ + "providers/common/der/der_digests_gen.c.in" + ], + "providers/common/der/der_dsa_gen.c" => [ + "providers/common/der/der_dsa_gen.c.in" + ], + "providers/common/der/der_ec_gen.c" => [ + "providers/common/der/der_ec_gen.c.in" + ], + "providers/common/der/der_ecx_gen.c" => [ + "providers/common/der/der_ecx_gen.c.in" + ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], + "providers/common/der/der_rsa_gen.c" => [ + "providers/common/der/der_rsa_gen.c.in" + ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], + "providers/common/der/der_sm2_gen.c" => [ + "providers/common/der/der_sm2_gen.c.in" + ], + "providers/common/der/der_wrap_gen.c" => [ + "providers/common/der/der_wrap_gen.c.in" + ], + "providers/common/include/prov/der_digests.h" => [ + "providers/common/include/prov/der_digests.h.in" + ], + "providers/common/include/prov/der_dsa.h" => [ + "providers/common/include/prov/der_dsa.h.in" + ], + "providers/common/include/prov/der_ec.h" => [ + "providers/common/include/prov/der_ec.h.in" + ], + "providers/common/include/prov/der_ecx.h" => [ + "providers/common/include/prov/der_ecx.h.in" + ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], + "providers/common/include/prov/der_rsa.h" => [ + "providers/common/include/prov/der_rsa.h.in" + ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], + "providers/common/include/prov/der_sm2.h" => [ + "providers/common/include/prov/der_sm2.h.in" + ], + "providers/common/include/prov/der_wrap.h" => [ + "providers/common/include/prov/der_wrap.h.in" + ], + "providers/fips.ld" => [ + "util/providers.num" + ], + "providers/fipsmodule.cnf" => [ + "util/mk-fipsmodule-cnf.pl", + "-module", + "\$(FIPSMODULE)", + "-section_name", + "fips_sect", + "-key", + "\$(FIPSKEY)" + ], + "providers/legacy.ld" => [ + "util/providers.num" + ] + }, + "htmldocs" => { + "man1" => [ + "doc/html/man1/CA.pl.html", + "doc/html/man1/openssl-asn1parse.html", + "doc/html/man1/openssl-ca.html", + "doc/html/man1/openssl-ciphers.html", + "doc/html/man1/openssl-cmds.html", + "doc/html/man1/openssl-cmp.html", + "doc/html/man1/openssl-cms.html", + "doc/html/man1/openssl-crl.html", + "doc/html/man1/openssl-crl2pkcs7.html", + "doc/html/man1/openssl-dgst.html", + "doc/html/man1/openssl-dhparam.html", + "doc/html/man1/openssl-dsa.html", + "doc/html/man1/openssl-dsaparam.html", + "doc/html/man1/openssl-ec.html", + "doc/html/man1/openssl-ecparam.html", + "doc/html/man1/openssl-enc.html", + "doc/html/man1/openssl-engine.html", + "doc/html/man1/openssl-errstr.html", + "doc/html/man1/openssl-fipsinstall.html", + "doc/html/man1/openssl-format-options.html", + "doc/html/man1/openssl-gendsa.html", + "doc/html/man1/openssl-genpkey.html", + "doc/html/man1/openssl-genrsa.html", + "doc/html/man1/openssl-info.html", + "doc/html/man1/openssl-kdf.html", + "doc/html/man1/openssl-list.html", + "doc/html/man1/openssl-mac.html", + "doc/html/man1/openssl-namedisplay-options.html", + "doc/html/man1/openssl-nseq.html", + "doc/html/man1/openssl-ocsp.html", + "doc/html/man1/openssl-passphrase-options.html", + "doc/html/man1/openssl-passwd.html", + "doc/html/man1/openssl-pkcs12.html", + "doc/html/man1/openssl-pkcs7.html", + "doc/html/man1/openssl-pkcs8.html", + "doc/html/man1/openssl-pkey.html", + "doc/html/man1/openssl-pkeyparam.html", + "doc/html/man1/openssl-pkeyutl.html", + "doc/html/man1/openssl-prime.html", + "doc/html/man1/openssl-rand.html", + "doc/html/man1/openssl-rehash.html", + "doc/html/man1/openssl-req.html", + "doc/html/man1/openssl-rsa.html", + "doc/html/man1/openssl-rsautl.html", + "doc/html/man1/openssl-s_client.html", + "doc/html/man1/openssl-s_server.html", + "doc/html/man1/openssl-s_time.html", + "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", + "doc/html/man1/openssl-smime.html", + "doc/html/man1/openssl-speed.html", + "doc/html/man1/openssl-spkac.html", + "doc/html/man1/openssl-srp.html", + "doc/html/man1/openssl-storeutl.html", + "doc/html/man1/openssl-ts.html", + "doc/html/man1/openssl-verification-options.html", + "doc/html/man1/openssl-verify.html", + "doc/html/man1/openssl-version.html", + "doc/html/man1/openssl-x509.html", + "doc/html/man1/openssl.html", + "doc/html/man1/tsget.html" + ], + "man3" => [ + "doc/html/man3/ADMISSIONS.html", + "doc/html/man3/ASN1_EXTERN_FUNCS.html", + "doc/html/man3/ASN1_INTEGER_get_int64.html", + "doc/html/man3/ASN1_INTEGER_new.html", + "doc/html/man3/ASN1_ITEM_lookup.html", + "doc/html/man3/ASN1_OBJECT_new.html", + "doc/html/man3/ASN1_STRING_TABLE_add.html", + "doc/html/man3/ASN1_STRING_length.html", + "doc/html/man3/ASN1_STRING_new.html", + "doc/html/man3/ASN1_STRING_print_ex.html", + "doc/html/man3/ASN1_TIME_set.html", + "doc/html/man3/ASN1_TYPE_get.html", + "doc/html/man3/ASN1_aux_cb.html", + "doc/html/man3/ASN1_generate_nconf.html", + "doc/html/man3/ASN1_item_d2i_bio.html", + "doc/html/man3/ASN1_item_new.html", + "doc/html/man3/ASN1_item_sign.html", + "doc/html/man3/ASYNC_WAIT_CTX_new.html", + "doc/html/man3/ASYNC_start_job.html", + "doc/html/man3/BF_encrypt.html", + "doc/html/man3/BIO_ADDR.html", + "doc/html/man3/BIO_ADDRINFO.html", + "doc/html/man3/BIO_connect.html", + "doc/html/man3/BIO_ctrl.html", + "doc/html/man3/BIO_f_base64.html", + "doc/html/man3/BIO_f_buffer.html", + "doc/html/man3/BIO_f_cipher.html", + "doc/html/man3/BIO_f_md.html", + "doc/html/man3/BIO_f_null.html", + "doc/html/man3/BIO_f_prefix.html", + "doc/html/man3/BIO_f_readbuffer.html", + "doc/html/man3/BIO_f_ssl.html", + "doc/html/man3/BIO_find_type.html", + "doc/html/man3/BIO_get_data.html", + "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", + "doc/html/man3/BIO_meth_new.html", + "doc/html/man3/BIO_new.html", + "doc/html/man3/BIO_new_CMS.html", + "doc/html/man3/BIO_parse_hostserv.html", + "doc/html/man3/BIO_printf.html", + "doc/html/man3/BIO_push.html", + "doc/html/man3/BIO_read.html", + "doc/html/man3/BIO_s_accept.html", + "doc/html/man3/BIO_s_bio.html", + "doc/html/man3/BIO_s_connect.html", + "doc/html/man3/BIO_s_core.html", + "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", + "doc/html/man3/BIO_s_fd.html", + "doc/html/man3/BIO_s_file.html", + "doc/html/man3/BIO_s_mem.html", + "doc/html/man3/BIO_s_null.html", + "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", + "doc/html/man3/BIO_set_callback.html", + "doc/html/man3/BIO_set_flags.html", + "doc/html/man3/BIO_should_retry.html", + "doc/html/man3/BIO_socket_wait.html", + "doc/html/man3/BN_BLINDING_new.html", + "doc/html/man3/BN_CTX_new.html", + "doc/html/man3/BN_CTX_start.html", + "doc/html/man3/BN_add.html", + "doc/html/man3/BN_add_word.html", + "doc/html/man3/BN_bn2bin.html", + "doc/html/man3/BN_cmp.html", + "doc/html/man3/BN_copy.html", + "doc/html/man3/BN_generate_prime.html", + "doc/html/man3/BN_mod_exp_mont.html", + "doc/html/man3/BN_mod_inverse.html", + "doc/html/man3/BN_mod_mul_montgomery.html", + "doc/html/man3/BN_mod_mul_reciprocal.html", + "doc/html/man3/BN_new.html", + "doc/html/man3/BN_num_bytes.html", + "doc/html/man3/BN_rand.html", + "doc/html/man3/BN_security_bits.html", + "doc/html/man3/BN_set_bit.html", + "doc/html/man3/BN_swap.html", + "doc/html/man3/BN_zero.html", + "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", + "doc/html/man3/CMS_EncryptedData_decrypt.html", + "doc/html/man3/CMS_EncryptedData_encrypt.html", + "doc/html/man3/CMS_EncryptedData_set1_key.html", + "doc/html/man3/CMS_EnvelopedData_create.html", + "doc/html/man3/CMS_add0_cert.html", + "doc/html/man3/CMS_add1_recipient_cert.html", + "doc/html/man3/CMS_add1_signer.html", + "doc/html/man3/CMS_compress.html", + "doc/html/man3/CMS_data_create.html", + "doc/html/man3/CMS_decrypt.html", + "doc/html/man3/CMS_digest_create.html", + "doc/html/man3/CMS_encrypt.html", + "doc/html/man3/CMS_final.html", + "doc/html/man3/CMS_get0_RecipientInfos.html", + "doc/html/man3/CMS_get0_SignerInfos.html", + "doc/html/man3/CMS_get0_type.html", + "doc/html/man3/CMS_get1_ReceiptRequest.html", + "doc/html/man3/CMS_sign.html", + "doc/html/man3/CMS_sign_receipt.html", + "doc/html/man3/CMS_signed_get_attr.html", + "doc/html/man3/CMS_uncompress.html", + "doc/html/man3/CMS_verify.html", + "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", + "doc/html/man3/CONF_modules_free.html", + "doc/html/man3/CONF_modules_load_file.html", + "doc/html/man3/CRYPTO_THREAD_run_once.html", + "doc/html/man3/CRYPTO_get_ex_new_index.html", + "doc/html/man3/CRYPTO_memcmp.html", + "doc/html/man3/CTLOG_STORE_get0_log_by_id.html", + "doc/html/man3/CTLOG_STORE_new.html", + "doc/html/man3/CTLOG_new.html", + "doc/html/man3/CT_POLICY_EVAL_CTX_new.html", + "doc/html/man3/DEFINE_STACK_OF.html", + "doc/html/man3/DES_random_key.html", + "doc/html/man3/DH_generate_key.html", + "doc/html/man3/DH_generate_parameters.html", + "doc/html/man3/DH_get0_pqg.html", + "doc/html/man3/DH_get_1024_160.html", + "doc/html/man3/DH_meth_new.html", + "doc/html/man3/DH_new.html", + "doc/html/man3/DH_new_by_nid.html", + "doc/html/man3/DH_set_method.html", + "doc/html/man3/DH_size.html", + "doc/html/man3/DSA_SIG_new.html", + "doc/html/man3/DSA_do_sign.html", + "doc/html/man3/DSA_dup_DH.html", + "doc/html/man3/DSA_generate_key.html", + "doc/html/man3/DSA_generate_parameters.html", + "doc/html/man3/DSA_get0_pqg.html", + "doc/html/man3/DSA_meth_new.html", + "doc/html/man3/DSA_new.html", + "doc/html/man3/DSA_set_method.html", + "doc/html/man3/DSA_sign.html", + "doc/html/man3/DSA_size.html", + "doc/html/man3/DTLS_get_data_mtu.html", + "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", + "doc/html/man3/DTLSv1_listen.html", + "doc/html/man3/ECDSA_SIG_new.html", + "doc/html/man3/ECDSA_sign.html", + "doc/html/man3/ECPKParameters_print.html", + "doc/html/man3/EC_GFp_simple_method.html", + "doc/html/man3/EC_GROUP_copy.html", + "doc/html/man3/EC_GROUP_new.html", + "doc/html/man3/EC_KEY_get_enc_flags.html", + "doc/html/man3/EC_KEY_new.html", + "doc/html/man3/EC_POINT_add.html", + "doc/html/man3/EC_POINT_new.html", + "doc/html/man3/ENGINE_add.html", + "doc/html/man3/ERR_GET_LIB.html", + "doc/html/man3/ERR_clear_error.html", + "doc/html/man3/ERR_error_string.html", + "doc/html/man3/ERR_get_error.html", + "doc/html/man3/ERR_load_crypto_strings.html", + "doc/html/man3/ERR_load_strings.html", + "doc/html/man3/ERR_new.html", + "doc/html/man3/ERR_print_errors.html", + "doc/html/man3/ERR_put_error.html", + "doc/html/man3/ERR_remove_state.html", + "doc/html/man3/ERR_set_mark.html", + "doc/html/man3/EVP_ASYM_CIPHER_free.html", + "doc/html/man3/EVP_BytesToKey.html", + "doc/html/man3/EVP_CIPHER_CTX_get_app_data.html", + "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html", + "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html", + "doc/html/man3/EVP_CIPHER_meth_new.html", + "doc/html/man3/EVP_DigestInit.html", + "doc/html/man3/EVP_DigestSignInit.html", + "doc/html/man3/EVP_DigestVerifyInit.html", + "doc/html/man3/EVP_EncodeInit.html", + "doc/html/man3/EVP_EncryptInit.html", + "doc/html/man3/EVP_KDF.html", + "doc/html/man3/EVP_KEM_free.html", + "doc/html/man3/EVP_KEYEXCH_free.html", + "doc/html/man3/EVP_KEYMGMT.html", + "doc/html/man3/EVP_MAC.html", + "doc/html/man3/EVP_MD_meth_new.html", + "doc/html/man3/EVP_OpenInit.html", + "doc/html/man3/EVP_PBE_CipherInit.html", + "doc/html/man3/EVP_PKEY2PKCS8.html", + "doc/html/man3/EVP_PKEY_ASN1_METHOD.html", + "doc/html/man3/EVP_PKEY_CTX_ctrl.html", + "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", + "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", + "doc/html/man3/EVP_PKEY_CTX_new.html", + "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", + "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", + "doc/html/man3/EVP_PKEY_CTX_set_params.html", + "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html", + "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html", + "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html", + "doc/html/man3/EVP_PKEY_asn1_get_count.html", + "doc/html/man3/EVP_PKEY_check.html", + "doc/html/man3/EVP_PKEY_copy_parameters.html", + "doc/html/man3/EVP_PKEY_decapsulate.html", + "doc/html/man3/EVP_PKEY_decrypt.html", + "doc/html/man3/EVP_PKEY_derive.html", + "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html", + "doc/html/man3/EVP_PKEY_encapsulate.html", + "doc/html/man3/EVP_PKEY_encrypt.html", + "doc/html/man3/EVP_PKEY_fromdata.html", + "doc/html/man3/EVP_PKEY_get_attr.html", + "doc/html/man3/EVP_PKEY_get_default_digest_nid.html", + "doc/html/man3/EVP_PKEY_get_field_type.html", + "doc/html/man3/EVP_PKEY_get_group_name.html", + "doc/html/man3/EVP_PKEY_get_size.html", + "doc/html/man3/EVP_PKEY_gettable_params.html", + "doc/html/man3/EVP_PKEY_is_a.html", + "doc/html/man3/EVP_PKEY_keygen.html", + "doc/html/man3/EVP_PKEY_meth_get_count.html", + "doc/html/man3/EVP_PKEY_meth_new.html", + "doc/html/man3/EVP_PKEY_new.html", + "doc/html/man3/EVP_PKEY_print_private.html", + "doc/html/man3/EVP_PKEY_set1_RSA.html", + "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html", + "doc/html/man3/EVP_PKEY_set_type.html", + "doc/html/man3/EVP_PKEY_settable_params.html", + "doc/html/man3/EVP_PKEY_sign.html", + "doc/html/man3/EVP_PKEY_todata.html", + "doc/html/man3/EVP_PKEY_verify.html", + "doc/html/man3/EVP_PKEY_verify_recover.html", + "doc/html/man3/EVP_RAND.html", + "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", + "doc/html/man3/EVP_SealInit.html", + "doc/html/man3/EVP_SignInit.html", + "doc/html/man3/EVP_VerifyInit.html", + "doc/html/man3/EVP_aes_128_gcm.html", + "doc/html/man3/EVP_aria_128_gcm.html", + "doc/html/man3/EVP_bf_cbc.html", + "doc/html/man3/EVP_blake2b512.html", + "doc/html/man3/EVP_camellia_128_ecb.html", + "doc/html/man3/EVP_cast5_cbc.html", + "doc/html/man3/EVP_chacha20.html", + "doc/html/man3/EVP_des_cbc.html", + "doc/html/man3/EVP_desx_cbc.html", + "doc/html/man3/EVP_idea_cbc.html", + "doc/html/man3/EVP_md2.html", + "doc/html/man3/EVP_md4.html", + "doc/html/man3/EVP_md5.html", + "doc/html/man3/EVP_mdc2.html", + "doc/html/man3/EVP_rc2_cbc.html", + "doc/html/man3/EVP_rc4.html", + "doc/html/man3/EVP_rc5_32_12_16_cbc.html", + "doc/html/man3/EVP_ripemd160.html", + "doc/html/man3/EVP_seed_cbc.html", + "doc/html/man3/EVP_set_default_properties.html", + "doc/html/man3/EVP_sha1.html", + "doc/html/man3/EVP_sha224.html", + "doc/html/man3/EVP_sha3_224.html", + "doc/html/man3/EVP_sm3.html", + "doc/html/man3/EVP_sm4_cbc.html", + "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", + "doc/html/man3/HMAC.html", + "doc/html/man3/MD5.html", + "doc/html/man3/MDC2_Init.html", + "doc/html/man3/NCONF_new_ex.html", + "doc/html/man3/OBJ_nid2obj.html", + "doc/html/man3/OCSP_REQUEST_new.html", + "doc/html/man3/OCSP_cert_to_id.html", + "doc/html/man3/OCSP_request_add1_nonce.html", + "doc/html/man3/OCSP_resp_find_status.html", + "doc/html/man3/OCSP_response_status.html", + "doc/html/man3/OCSP_sendreq_new.html", + "doc/html/man3/OPENSSL_Applink.html", + "doc/html/man3/OPENSSL_FILE.html", + "doc/html/man3/OPENSSL_LH_COMPFUNC.html", + "doc/html/man3/OPENSSL_LH_stats.html", + "doc/html/man3/OPENSSL_config.html", + "doc/html/man3/OPENSSL_fork_prepare.html", + "doc/html/man3/OPENSSL_gmtime.html", + "doc/html/man3/OPENSSL_hexchar2int.html", + "doc/html/man3/OPENSSL_ia32cap.html", + "doc/html/man3/OPENSSL_init_crypto.html", + "doc/html/man3/OPENSSL_init_ssl.html", + "doc/html/man3/OPENSSL_instrument_bus.html", + "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", + "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_ppccap.html", + "doc/html/man3/OPENSSL_riscvcap.html", + "doc/html/man3/OPENSSL_s390xcap.html", + "doc/html/man3/OPENSSL_secure_malloc.html", + "doc/html/man3/OPENSSL_strcasecmp.html", + "doc/html/man3/OSSL_ALGORITHM.html", + "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", + "doc/html/man3/OSSL_CMP_CTX_new.html", + "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", + "doc/html/man3/OSSL_CMP_ITAV_set0.html", + "doc/html/man3/OSSL_CMP_MSG_get0_header.html", + "doc/html/man3/OSSL_CMP_MSG_http_perform.html", + "doc/html/man3/OSSL_CMP_SRV_CTX_new.html", + "doc/html/man3/OSSL_CMP_STATUSINFO_new.html", + "doc/html/man3/OSSL_CMP_exec_certreq.html", + "doc/html/man3/OSSL_CMP_log_open.html", + "doc/html/man3/OSSL_CMP_validate_msg.html", + "doc/html/man3/OSSL_CORE_MAKE_FUNC.html", + "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html", + "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html", + "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html", + "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html", + "doc/html/man3/OSSL_CRMF_pbmp_new.html", + "doc/html/man3/OSSL_DECODER.html", + "doc/html/man3/OSSL_DECODER_CTX.html", + "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html", + "doc/html/man3/OSSL_DECODER_from_bio.html", + "doc/html/man3/OSSL_DISPATCH.html", + "doc/html/man3/OSSL_ENCODER.html", + "doc/html/man3/OSSL_ENCODER_CTX.html", + "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", + "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", + "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", + "doc/html/man3/OSSL_HTTP_REQ_CTX.html", + "doc/html/man3/OSSL_HTTP_parse_url.html", + "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", + "doc/html/man3/OSSL_ITEM.html", + "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", + "doc/html/man3/OSSL_PARAM.html", + "doc/html/man3/OSSL_PARAM_BLD.html", + "doc/html/man3/OSSL_PARAM_allocate_from_text.html", + "doc/html/man3/OSSL_PARAM_dup.html", + "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", + "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", + "doc/html/man3/OSSL_SELF_TEST_new.html", + "doc/html/man3/OSSL_SELF_TEST_set_callback.html", + "doc/html/man3/OSSL_STORE_INFO.html", + "doc/html/man3/OSSL_STORE_LOADER.html", + "doc/html/man3/OSSL_STORE_SEARCH.html", + "doc/html/man3/OSSL_STORE_attach.html", + "doc/html/man3/OSSL_STORE_expect.html", + "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", + "doc/html/man3/OSSL_trace_enabled.html", + "doc/html/man3/OSSL_trace_get_category_num.html", + "doc/html/man3/OSSL_trace_set_channel.html", + "doc/html/man3/OpenSSL_add_all_algorithms.html", + "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", + "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", + "doc/html/man3/PEM_bytes_read_bio.html", + "doc/html/man3/PEM_read.html", + "doc/html/man3/PEM_read_CMS.html", + "doc/html/man3/PEM_read_bio_PrivateKey.html", + "doc/html/man3/PEM_read_bio_ex.html", + "doc/html/man3/PEM_write_bio_CMS_stream.html", + "doc/html/man3/PEM_write_bio_PKCS7_stream.html", + "doc/html/man3/PKCS12_PBE_keyivgen.html", + "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", + "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", + "doc/html/man3/PKCS12_add1_attr_by_NID.html", + "doc/html/man3/PKCS12_add_CSPName_asc.html", + "doc/html/man3/PKCS12_add_cert.html", + "doc/html/man3/PKCS12_add_friendlyname_asc.html", + "doc/html/man3/PKCS12_add_localkeyid.html", + "doc/html/man3/PKCS12_add_safe.html", + "doc/html/man3/PKCS12_create.html", + "doc/html/man3/PKCS12_decrypt_skey.html", + "doc/html/man3/PKCS12_gen_mac.html", + "doc/html/man3/PKCS12_get_friendlyname.html", + "doc/html/man3/PKCS12_init.html", + "doc/html/man3/PKCS12_item_decrypt_d2i.html", + "doc/html/man3/PKCS12_key_gen_utf8_ex.html", + "doc/html/man3/PKCS12_newpass.html", + "doc/html/man3/PKCS12_pack_p7encdata.html", + "doc/html/man3/PKCS12_parse.html", + "doc/html/man3/PKCS5_PBE_keyivgen.html", + "doc/html/man3/PKCS5_PBKDF2_HMAC.html", + "doc/html/man3/PKCS7_decrypt.html", + "doc/html/man3/PKCS7_encrypt.html", + "doc/html/man3/PKCS7_get_octet_string.html", + "doc/html/man3/PKCS7_sign.html", + "doc/html/man3/PKCS7_sign_add_signer.html", + "doc/html/man3/PKCS7_type_is_other.html", + "doc/html/man3/PKCS7_verify.html", + "doc/html/man3/PKCS8_encrypt.html", + "doc/html/man3/PKCS8_pkey_add1_attr.html", + "doc/html/man3/RAND_add.html", + "doc/html/man3/RAND_bytes.html", + "doc/html/man3/RAND_cleanup.html", + "doc/html/man3/RAND_egd.html", + "doc/html/man3/RAND_get0_primary.html", + "doc/html/man3/RAND_load_file.html", + "doc/html/man3/RAND_set_DRBG_type.html", + "doc/html/man3/RAND_set_rand_method.html", + "doc/html/man3/RC4_set_key.html", + "doc/html/man3/RIPEMD160_Init.html", + "doc/html/man3/RSA_blinding_on.html", + "doc/html/man3/RSA_check_key.html", + "doc/html/man3/RSA_generate_key.html", + "doc/html/man3/RSA_get0_key.html", + "doc/html/man3/RSA_meth_new.html", + "doc/html/man3/RSA_new.html", + "doc/html/man3/RSA_padding_add_PKCS1_type_1.html", + "doc/html/man3/RSA_print.html", + "doc/html/man3/RSA_private_encrypt.html", + "doc/html/man3/RSA_public_encrypt.html", + "doc/html/man3/RSA_set_method.html", + "doc/html/man3/RSA_sign.html", + "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html", + "doc/html/man3/RSA_size.html", + "doc/html/man3/SCT_new.html", + "doc/html/man3/SCT_print.html", + "doc/html/man3/SCT_validate.html", + "doc/html/man3/SHA256_Init.html", + "doc/html/man3/SMIME_read_ASN1.html", + "doc/html/man3/SMIME_read_CMS.html", + "doc/html/man3/SMIME_read_PKCS7.html", + "doc/html/man3/SMIME_write_ASN1.html", + "doc/html/man3/SMIME_write_CMS.html", + "doc/html/man3/SMIME_write_PKCS7.html", + "doc/html/man3/SRP_Calc_B.html", + "doc/html/man3/SRP_VBASE_new.html", + "doc/html/man3/SRP_create_verifier.html", + "doc/html/man3/SRP_user_pwd_new.html", + "doc/html/man3/SSL_CIPHER_get_name.html", + "doc/html/man3/SSL_COMP_add_compression_method.html", + "doc/html/man3/SSL_CONF_CTX_new.html", + "doc/html/man3/SSL_CONF_CTX_set1_prefix.html", + "doc/html/man3/SSL_CONF_CTX_set_flags.html", + "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html", + "doc/html/man3/SSL_CONF_cmd.html", + "doc/html/man3/SSL_CONF_cmd_argv.html", + "doc/html/man3/SSL_CTX_add1_chain_cert.html", + "doc/html/man3/SSL_CTX_add_extra_chain_cert.html", + "doc/html/man3/SSL_CTX_add_session.html", + "doc/html/man3/SSL_CTX_config.html", + "doc/html/man3/SSL_CTX_ctrl.html", + "doc/html/man3/SSL_CTX_dane_enable.html", + "doc/html/man3/SSL_CTX_flush_sessions.html", + "doc/html/man3/SSL_CTX_free.html", + "doc/html/man3/SSL_CTX_get0_param.html", + "doc/html/man3/SSL_CTX_get_verify_mode.html", + "doc/html/man3/SSL_CTX_has_client_custom_ext.html", + "doc/html/man3/SSL_CTX_load_verify_locations.html", + "doc/html/man3/SSL_CTX_new.html", + "doc/html/man3/SSL_CTX_sess_number.html", + "doc/html/man3/SSL_CTX_sess_set_cache_size.html", + "doc/html/man3/SSL_CTX_sess_set_get_cb.html", + "doc/html/man3/SSL_CTX_sessions.html", + "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", + "doc/html/man3/SSL_CTX_set1_curves.html", + "doc/html/man3/SSL_CTX_set1_sigalgs.html", + "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", + "doc/html/man3/SSL_CTX_set_alpn_select_cb.html", + "doc/html/man3/SSL_CTX_set_cert_cb.html", + "doc/html/man3/SSL_CTX_set_cert_store.html", + "doc/html/man3/SSL_CTX_set_cert_verify_callback.html", + "doc/html/man3/SSL_CTX_set_cipher_list.html", + "doc/html/man3/SSL_CTX_set_client_cert_cb.html", + "doc/html/man3/SSL_CTX_set_client_hello_cb.html", + "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", + "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", + "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", + "doc/html/man3/SSL_CTX_set_generate_session_id.html", + "doc/html/man3/SSL_CTX_set_info_callback.html", + "doc/html/man3/SSL_CTX_set_keylog_callback.html", + "doc/html/man3/SSL_CTX_set_max_cert_list.html", + "doc/html/man3/SSL_CTX_set_min_proto_version.html", + "doc/html/man3/SSL_CTX_set_mode.html", + "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", + "doc/html/man3/SSL_CTX_set_num_tickets.html", + "doc/html/man3/SSL_CTX_set_options.html", + "doc/html/man3/SSL_CTX_set_psk_client_callback.html", + "doc/html/man3/SSL_CTX_set_quiet_shutdown.html", + "doc/html/man3/SSL_CTX_set_read_ahead.html", + "doc/html/man3/SSL_CTX_set_record_padding_callback.html", + "doc/html/man3/SSL_CTX_set_security_level.html", + "doc/html/man3/SSL_CTX_set_session_cache_mode.html", + "doc/html/man3/SSL_CTX_set_session_id_context.html", + "doc/html/man3/SSL_CTX_set_session_ticket_cb.html", + "doc/html/man3/SSL_CTX_set_split_send_fragment.html", + "doc/html/man3/SSL_CTX_set_srp_password.html", + "doc/html/man3/SSL_CTX_set_ssl_version.html", + "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html", + "doc/html/man3/SSL_CTX_set_timeout.html", + "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html", + "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html", + "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html", + "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html", + "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html", + "doc/html/man3/SSL_CTX_set_tmp_ecdh.html", + "doc/html/man3/SSL_CTX_set_verify.html", + "doc/html/man3/SSL_CTX_use_certificate.html", + "doc/html/man3/SSL_CTX_use_psk_identity_hint.html", + "doc/html/man3/SSL_CTX_use_serverinfo.html", + "doc/html/man3/SSL_SESSION_free.html", + "doc/html/man3/SSL_SESSION_get0_cipher.html", + "doc/html/man3/SSL_SESSION_get0_hostname.html", + "doc/html/man3/SSL_SESSION_get0_id_context.html", + "doc/html/man3/SSL_SESSION_get0_peer.html", + "doc/html/man3/SSL_SESSION_get_compress_id.html", + "doc/html/man3/SSL_SESSION_get_protocol_version.html", + "doc/html/man3/SSL_SESSION_get_time.html", + "doc/html/man3/SSL_SESSION_has_ticket.html", + "doc/html/man3/SSL_SESSION_is_resumable.html", + "doc/html/man3/SSL_SESSION_print.html", + "doc/html/man3/SSL_SESSION_set1_id.html", + "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", + "doc/html/man3/SSL_alert_type_string.html", + "doc/html/man3/SSL_alloc_buffers.html", + "doc/html/man3/SSL_check_chain.html", + "doc/html/man3/SSL_clear.html", + "doc/html/man3/SSL_connect.html", + "doc/html/man3/SSL_do_handshake.html", + "doc/html/man3/SSL_export_keying_material.html", + "doc/html/man3/SSL_extension_supported.html", + "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", + "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", + "doc/html/man3/SSL_get_SSL_CTX.html", + "doc/html/man3/SSL_get_all_async_fds.html", + "doc/html/man3/SSL_get_certificate.html", + "doc/html/man3/SSL_get_ciphers.html", + "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", + "doc/html/man3/SSL_get_current_cipher.html", + "doc/html/man3/SSL_get_default_timeout.html", + "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", + "doc/html/man3/SSL_get_extms_support.html", + "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", + "doc/html/man3/SSL_get_peer_cert_chain.html", + "doc/html/man3/SSL_get_peer_certificate.html", + "doc/html/man3/SSL_get_peer_signature_nid.html", + "doc/html/man3/SSL_get_peer_tmp_key.html", + "doc/html/man3/SSL_get_psk_identity.html", + "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", + "doc/html/man3/SSL_get_session.html", + "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", + "doc/html/man3/SSL_get_verify_result.html", + "doc/html/man3/SSL_get_version.html", + "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", + "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", + "doc/html/man3/SSL_key_update.html", + "doc/html/man3/SSL_library_init.html", + "doc/html/man3/SSL_load_client_CA_file.html", + "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", + "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", + "doc/html/man3/SSL_read.html", + "doc/html/man3/SSL_read_early_data.html", + "doc/html/man3/SSL_rstate_string.html", + "doc/html/man3/SSL_session_reused.html", + "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", + "doc/html/man3/SSL_set_async_callback.html", + "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", + "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", + "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", + "doc/html/man3/SSL_set_retry_verify.html", + "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", + "doc/html/man3/SSL_set_shutdown.html", + "doc/html/man3/SSL_set_verify_result.html", + "doc/html/man3/SSL_shutdown.html", + "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", + "doc/html/man3/SSL_want.html", + "doc/html/man3/SSL_write.html", + "doc/html/man3/TS_RESP_CTX_new.html", + "doc/html/man3/TS_VERIFY_CTX.html", + "doc/html/man3/UI_STRING.html", + "doc/html/man3/UI_UTIL_read_pw.html", + "doc/html/man3/UI_create_method.html", + "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", + "doc/html/man3/X509V3_get_d2i.html", + "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", + "doc/html/man3/X509_ALGOR_dup.html", + "doc/html/man3/X509_ATTRIBUTE.html", + "doc/html/man3/X509_CRL_get0_by_serial.html", + "doc/html/man3/X509_EXTENSION_set_object.html", + "doc/html/man3/X509_LOOKUP.html", + "doc/html/man3/X509_LOOKUP_hash_dir.html", + "doc/html/man3/X509_LOOKUP_meth_new.html", + "doc/html/man3/X509_NAME_ENTRY_get_object.html", + "doc/html/man3/X509_NAME_add_entry_by_txt.html", + "doc/html/man3/X509_NAME_get0_der.html", + "doc/html/man3/X509_NAME_get_index_by_NID.html", + "doc/html/man3/X509_NAME_print_ex.html", + "doc/html/man3/X509_PUBKEY_new.html", + "doc/html/man3/X509_REQ_get_attr.html", + "doc/html/man3/X509_REQ_get_extensions.html", + "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", + "doc/html/man3/X509_STORE_CTX_get_error.html", + "doc/html/man3/X509_STORE_CTX_new.html", + "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", + "doc/html/man3/X509_STORE_add_cert.html", + "doc/html/man3/X509_STORE_get0_param.html", + "doc/html/man3/X509_STORE_new.html", + "doc/html/man3/X509_STORE_set_verify_cb_func.html", + "doc/html/man3/X509_VERIFY_PARAM_set_flags.html", + "doc/html/man3/X509_add_cert.html", + "doc/html/man3/X509_check_ca.html", + "doc/html/man3/X509_check_host.html", + "doc/html/man3/X509_check_issued.html", + "doc/html/man3/X509_check_private_key.html", + "doc/html/man3/X509_check_purpose.html", + "doc/html/man3/X509_cmp.html", + "doc/html/man3/X509_cmp_time.html", + "doc/html/man3/X509_digest.html", + "doc/html/man3/X509_dup.html", + "doc/html/man3/X509_get0_distinguishing_id.html", + "doc/html/man3/X509_get0_notBefore.html", + "doc/html/man3/X509_get0_signature.html", + "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", + "doc/html/man3/X509_get_extension_flags.html", + "doc/html/man3/X509_get_pubkey.html", + "doc/html/man3/X509_get_serialNumber.html", + "doc/html/man3/X509_get_subject_name.html", + "doc/html/man3/X509_get_version.html", + "doc/html/man3/X509_load_http.html", + "doc/html/man3/X509_new.html", + "doc/html/man3/X509_sign.html", + "doc/html/man3/X509_verify.html", + "doc/html/man3/X509_verify_cert.html", + "doc/html/man3/X509v3_get_ext_by_NID.html", + "doc/html/man3/b2i_PVK_bio_ex.html", + "doc/html/man3/d2i_PKCS8PrivateKey_bio.html", + "doc/html/man3/d2i_PrivateKey.html", + "doc/html/man3/d2i_RSAPrivateKey.html", + "doc/html/man3/d2i_SSL_SESSION.html", + "doc/html/man3/d2i_X509.html", + "doc/html/man3/i2d_CMS_bio_stream.html", + "doc/html/man3/i2d_PKCS7_bio_stream.html", + "doc/html/man3/i2d_re_X509_tbs.html", + "doc/html/man3/o2i_SCT_LIST.html", + "doc/html/man3/s2i_ASN1_IA5STRING.html" + ], + "man5" => [ + "doc/html/man5/config.html", + "doc/html/man5/fips_config.html", + "doc/html/man5/x509v3_config.html" + ], + "man7" => [ + "doc/html/man7/EVP_ASYM_CIPHER-RSA.html", + "doc/html/man7/EVP_ASYM_CIPHER-SM2.html", + "doc/html/man7/EVP_CIPHER-AES.html", + "doc/html/man7/EVP_CIPHER-ARIA.html", + "doc/html/man7/EVP_CIPHER-BLOWFISH.html", + "doc/html/man7/EVP_CIPHER-CAMELLIA.html", + "doc/html/man7/EVP_CIPHER-CAST.html", + "doc/html/man7/EVP_CIPHER-CHACHA.html", + "doc/html/man7/EVP_CIPHER-DES.html", + "doc/html/man7/EVP_CIPHER-IDEA.html", + "doc/html/man7/EVP_CIPHER-NULL.html", + "doc/html/man7/EVP_CIPHER-RC2.html", + "doc/html/man7/EVP_CIPHER-RC4.html", + "doc/html/man7/EVP_CIPHER-RC5.html", + "doc/html/man7/EVP_CIPHER-SEED.html", + "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", + "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", + "doc/html/man7/EVP_KDF-KB.html", + "doc/html/man7/EVP_KDF-KRB5KDF.html", + "doc/html/man7/EVP_KDF-PBKDF1.html", + "doc/html/man7/EVP_KDF-PBKDF2.html", + "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", + "doc/html/man7/EVP_KDF-SCRYPT.html", + "doc/html/man7/EVP_KDF-SS.html", + "doc/html/man7/EVP_KDF-SSHKDF.html", + "doc/html/man7/EVP_KDF-TLS13_KDF.html", + "doc/html/man7/EVP_KDF-TLS1_PRF.html", + "doc/html/man7/EVP_KDF-X942-ASN1.html", + "doc/html/man7/EVP_KDF-X942-CONCAT.html", + "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", + "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", + "doc/html/man7/EVP_KEYEXCH-DH.html", + "doc/html/man7/EVP_KEYEXCH-ECDH.html", + "doc/html/man7/EVP_KEYEXCH-X25519.html", + "doc/html/man7/EVP_MAC-BLAKE2.html", + "doc/html/man7/EVP_MAC-CMAC.html", + "doc/html/man7/EVP_MAC-GMAC.html", + "doc/html/man7/EVP_MAC-HMAC.html", + "doc/html/man7/EVP_MAC-KMAC.html", + "doc/html/man7/EVP_MAC-Poly1305.html", + "doc/html/man7/EVP_MAC-Siphash.html", + "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", + "doc/html/man7/EVP_MD-MD2.html", + "doc/html/man7/EVP_MD-MD4.html", + "doc/html/man7/EVP_MD-MD5-SHA1.html", + "doc/html/man7/EVP_MD-MD5.html", + "doc/html/man7/EVP_MD-MDC2.html", + "doc/html/man7/EVP_MD-NULL.html", + "doc/html/man7/EVP_MD-RIPEMD160.html", + "doc/html/man7/EVP_MD-SHA1.html", + "doc/html/man7/EVP_MD-SHA2.html", + "doc/html/man7/EVP_MD-SHA3.html", + "doc/html/man7/EVP_MD-SHAKE.html", + "doc/html/man7/EVP_MD-SM3.html", + "doc/html/man7/EVP_MD-WHIRLPOOL.html", + "doc/html/man7/EVP_MD-common.html", + "doc/html/man7/EVP_PKEY-DH.html", + "doc/html/man7/EVP_PKEY-DSA.html", + "doc/html/man7/EVP_PKEY-EC.html", + "doc/html/man7/EVP_PKEY-FFC.html", + "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", + "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", + "doc/html/man7/EVP_PKEY-SM2.html", + "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", + "doc/html/man7/EVP_RAND-CTR-DRBG.html", + "doc/html/man7/EVP_RAND-HASH-DRBG.html", + "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", + "doc/html/man7/EVP_RAND-SEED-SRC.html", + "doc/html/man7/EVP_RAND-TEST-RAND.html", + "doc/html/man7/EVP_RAND.html", + "doc/html/man7/EVP_SIGNATURE-DSA.html", + "doc/html/man7/EVP_SIGNATURE-ECDSA.html", + "doc/html/man7/EVP_SIGNATURE-ED25519.html", + "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", + "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", + "doc/html/man7/OSSL_PROVIDER-FIPS.html", + "doc/html/man7/OSSL_PROVIDER-base.html", + "doc/html/man7/OSSL_PROVIDER-default.html", + "doc/html/man7/OSSL_PROVIDER-legacy.html", + "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", + "doc/html/man7/RAND.html", + "doc/html/man7/RSA-PSS.html", + "doc/html/man7/X25519.html", + "doc/html/man7/bio.html", + "doc/html/man7/ct.html", + "doc/html/man7/des_modes.html", + "doc/html/man7/evp.html", + "doc/html/man7/fips_module.html", + "doc/html/man7/life_cycle-cipher.html", + "doc/html/man7/life_cycle-digest.html", + "doc/html/man7/life_cycle-kdf.html", + "doc/html/man7/life_cycle-mac.html", + "doc/html/man7/life_cycle-pkey.html", + "doc/html/man7/life_cycle-rand.html", + "doc/html/man7/openssl-core.h.html", + "doc/html/man7/openssl-core_dispatch.h.html", + "doc/html/man7/openssl-core_names.h.html", + "doc/html/man7/openssl-env.html", + "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", + "doc/html/man7/openssl-threads.html", + "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", + "doc/html/man7/ossl_store-file.html", + "doc/html/man7/ossl_store.html", + "doc/html/man7/passphrase-encoding.html", + "doc/html/man7/property.html", + "doc/html/man7/provider-asym_cipher.html", + "doc/html/man7/provider-base.html", + "doc/html/man7/provider-cipher.html", + "doc/html/man7/provider-decoder.html", + "doc/html/man7/provider-digest.html", + "doc/html/man7/provider-encoder.html", + "doc/html/man7/provider-kdf.html", + "doc/html/man7/provider-kem.html", + "doc/html/man7/provider-keyexch.html", + "doc/html/man7/provider-keymgmt.html", + "doc/html/man7/provider-mac.html", + "doc/html/man7/provider-object.html", + "doc/html/man7/provider-rand.html", + "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", + "doc/html/man7/provider-storemgmt.html", + "doc/html/man7/provider.html", + "doc/html/man7/proxy-certificates.html", + "doc/html/man7/x509.html" + ] + }, + "imagedocs" => { + "man7" => [ + "doc/man7/img/cipher.png", + "doc/man7/img/digest.png", + "doc/man7/img/kdf.png", + "doc/man7/img/mac.png", + "doc/man7/img/pkey.png", + "doc/man7/img/rand.png" + ] + }, + "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], + "apps/asn1parse.o" => [ + "apps" + ], + "apps/ca.o" => [ + "apps" + ], + "apps/ciphers.o" => [ + "apps" + ], + "apps/cmp.o" => [ + "apps" + ], + "apps/cms.o" => [ + "apps" + ], + "apps/crl.o" => [ + "apps" + ], + "apps/crl2pkcs7.o" => [ + "apps" + ], + "apps/dgst.o" => [ + "apps" + ], + "apps/dhparam.o" => [ + "apps" + ], + "apps/dsa.o" => [ + "apps" + ], + "apps/dsaparam.o" => [ + "apps" + ], + "apps/ec.o" => [ + "apps" + ], + "apps/ecparam.o" => [ + "apps" + ], + "apps/enc.o" => [ + "apps" + ], + "apps/engine.o" => [ + "apps" + ], + "apps/errstr.o" => [ + "apps" + ], + "apps/fipsinstall.o" => [ + "apps" + ], + "apps/gendsa.o" => [ + "apps" + ], + "apps/genpkey.o" => [ + "apps" + ], + "apps/genrsa.o" => [ + "apps" + ], + "apps/info.o" => [ + "apps" + ], + "apps/kdf.o" => [ + "apps" + ], + "apps/lib/cmp_mock_srv.o" => [ + "apps" + ], + "apps/lib/openssl-bin-cmp_mock_srv.o" => [ + "apps" + ], + "apps/libapps.a" => [ + ".", + "include", + "apps/include" + ], + "apps/list.o" => [ + "apps" + ], + "apps/mac.o" => [ + "apps" + ], + "apps/nseq.o" => [ + "apps" + ], + "apps/ocsp.o" => [ + "apps" + ], + "apps/openssl" => [ + ".", + "include", + "apps/include" + ], + "apps/openssl-bin-asn1parse.o" => [ + "apps" + ], + "apps/openssl-bin-ca.o" => [ + "apps" + ], + "apps/openssl-bin-ciphers.o" => [ + "apps" + ], + "apps/openssl-bin-cmp.o" => [ + "apps" + ], + "apps/openssl-bin-cms.o" => [ + "apps" + ], + "apps/openssl-bin-crl.o" => [ + "apps" + ], + "apps/openssl-bin-crl2pkcs7.o" => [ + "apps" + ], + "apps/openssl-bin-dgst.o" => [ + "apps" + ], + "apps/openssl-bin-dhparam.o" => [ + "apps" + ], + "apps/openssl-bin-dsa.o" => [ + "apps" + ], + "apps/openssl-bin-dsaparam.o" => [ + "apps" + ], + "apps/openssl-bin-ec.o" => [ + "apps" + ], + "apps/openssl-bin-ecparam.o" => [ + "apps" + ], + "apps/openssl-bin-enc.o" => [ + "apps" + ], + "apps/openssl-bin-engine.o" => [ + "apps" + ], + "apps/openssl-bin-errstr.o" => [ + "apps" + ], + "apps/openssl-bin-fipsinstall.o" => [ + "apps" + ], + "apps/openssl-bin-gendsa.o" => [ + "apps" + ], + "apps/openssl-bin-genpkey.o" => [ + "apps" + ], + "apps/openssl-bin-genrsa.o" => [ + "apps" + ], + "apps/openssl-bin-info.o" => [ + "apps" + ], + "apps/openssl-bin-kdf.o" => [ + "apps" + ], + "apps/openssl-bin-list.o" => [ + "apps" + ], + "apps/openssl-bin-mac.o" => [ + "apps" + ], + "apps/openssl-bin-nseq.o" => [ + "apps" + ], + "apps/openssl-bin-ocsp.o" => [ + "apps" + ], + "apps/openssl-bin-openssl.o" => [ + "apps" + ], + "apps/openssl-bin-passwd.o" => [ + "apps" + ], + "apps/openssl-bin-pkcs12.o" => [ + "apps" + ], + "apps/openssl-bin-pkcs7.o" => [ + "apps" + ], + "apps/openssl-bin-pkcs8.o" => [ + "apps" + ], + "apps/openssl-bin-pkey.o" => [ + "apps" + ], + "apps/openssl-bin-pkeyparam.o" => [ + "apps" + ], + "apps/openssl-bin-pkeyutl.o" => [ + "apps" + ], + "apps/openssl-bin-prime.o" => [ + "apps" + ], + "apps/openssl-bin-progs.o" => [ + "apps" + ], + "apps/openssl-bin-rand.o" => [ + "apps" + ], + "apps/openssl-bin-rehash.o" => [ + "apps" + ], + "apps/openssl-bin-req.o" => [ + "apps" + ], + "apps/openssl-bin-rsa.o" => [ + "apps" + ], + "apps/openssl-bin-rsautl.o" => [ + "apps" + ], + "apps/openssl-bin-s_client.o" => [ + "apps" + ], + "apps/openssl-bin-s_server.o" => [ + "apps" + ], + "apps/openssl-bin-s_time.o" => [ + "apps" + ], + "apps/openssl-bin-sess_id.o" => [ + "apps" + ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], + "apps/openssl-bin-smime.o" => [ + "apps" + ], + "apps/openssl-bin-speed.o" => [ + "apps" + ], + "apps/openssl-bin-spkac.o" => [ + "apps" + ], + "apps/openssl-bin-srp.o" => [ + "apps" + ], + "apps/openssl-bin-storeutl.o" => [ + "apps" + ], + "apps/openssl-bin-ts.o" => [ + "apps" + ], + "apps/openssl-bin-verify.o" => [ + "apps" + ], + "apps/openssl-bin-version.o" => [ + "apps" + ], + "apps/openssl-bin-x509.o" => [ + "apps" + ], + "apps/openssl.o" => [ + "apps" + ], + "apps/passwd.o" => [ + "apps" + ], + "apps/pkcs12.o" => [ + "apps" + ], + "apps/pkcs7.o" => [ + "apps" + ], + "apps/pkcs8.o" => [ + "apps" + ], + "apps/pkey.o" => [ + "apps" + ], + "apps/pkeyparam.o" => [ + "apps" + ], + "apps/pkeyutl.o" => [ + "apps" + ], + "apps/prime.o" => [ + "apps" + ], + "apps/progs.c" => [ + "." + ], + "apps/progs.o" => [ + "apps" + ], + "apps/rand.o" => [ + "apps" + ], + "apps/rehash.o" => [ + "apps" + ], + "apps/req.o" => [ + "apps" + ], + "apps/rsa.o" => [ + "apps" + ], + "apps/rsautl.o" => [ + "apps" + ], + "apps/s_client.o" => [ + "apps" + ], + "apps/s_server.o" => [ + "apps" + ], + "apps/s_time.o" => [ + "apps" + ], + "apps/sess_id.o" => [ + "apps" + ], + "apps/skeyutl.o" => [ + "apps" + ], + "apps/smime.o" => [ + "apps" + ], + "apps/speed.o" => [ + "apps" + ], + "apps/spkac.o" => [ + "apps" + ], + "apps/srp.o" => [ + "apps" + ], + "apps/storeutl.o" => [ + "apps" + ], + "apps/ts.o" => [ + "apps" + ], + "apps/verify.o" => [ + "apps" + ], + "apps/version.o" => [ + "apps" + ], + "apps/x509.o" => [ + "apps" + ], + "crypto/aes/aes-armv4.o" => [ + "crypto" + ], + "crypto/aes/aes-mips.o" => [ + "crypto" + ], + "crypto/aes/aes-s390x.o" => [ + "crypto" + ], + "crypto/aes/aes-sparcv9.o" => [ + "crypto" + ], + "crypto/aes/aesfx-sparcv9.o" => [ + "crypto" + ], + "crypto/aes/aest4-sparcv9.o" => [ + "crypto" + ], + "crypto/aes/aesv8-armx.o" => [ + "crypto" + ], + "crypto/aes/bsaes-armv7.o" => [ + "crypto" + ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], + "crypto/arm64cpuid.o" => [ + "crypto" + ], + "crypto/armv4cpuid.o" => [ + "crypto" + ], + "crypto/bn/armv4-gf2m.o" => [ + "crypto" + ], + "crypto/bn/armv4-mont.o" => [ + "crypto" + ], + "crypto/bn/armv8-mont.o" => [ + "crypto" + ], + "crypto/bn/bn-mips.o" => [ + "crypto" + ], + "crypto/bn/bn_exp.o" => [ + "crypto" + ], + "crypto/bn/libcrypto-lib-bn_exp.o" => [ + "crypto" + ], + "crypto/bn/libfips-lib-bn_exp.o" => [ + "crypto" + ], + "crypto/bn/mips-mont.o" => [ + "crypto" + ], + "crypto/bn/sparct4-mont.o" => [ + "crypto" + ], + "crypto/bn/sparcv9-gf2m.o" => [ + "crypto" + ], + "crypto/bn/sparcv9-mont.o" => [ + "crypto" + ], + "crypto/bn/sparcv9a-mont.o" => [ + "crypto" + ], + "crypto/bn/vis3-mont.o" => [ + "crypto" + ], + "crypto/camellia/cmllt4-sparcv9.o" => [ + "crypto" + ], + "crypto/chacha/chacha-armv4.o" => [ + "crypto" + ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], + "crypto/chacha/chacha-armv8.o" => [ + "crypto" + ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], + "crypto/chacha/chacha-s390x.o" => [ + "crypto" + ], + "crypto/cpuid.o" => [ + "." + ], + "crypto/cversion.o" => [ + "crypto" + ], + "crypto/des/dest4-sparcv9.o" => [ + "crypto" + ], + "crypto/ec/ecp_nistz256-armv4.o" => [ + "crypto" + ], + "crypto/ec/ecp_nistz256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecp_nistz256-sparcv9.o" => [ + "crypto" + ], + "crypto/ec/ecp_s390x_nistp.o" => [ + "crypto" + ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], + "crypto/ec/ecx_meth.o" => [ + "crypto" + ], + "crypto/ec/ecx_s390x.o" => [ + "crypto" + ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto" + ], + "crypto/ec/libcrypto-lib-ecx_meth.o" => [ + "crypto" + ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], + "crypto/evp/e_aes.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/evp/e_aes_cbc_hmac_sha1.o" => [ + "crypto/modes" + ], + "crypto/evp/e_aes_cbc_hmac_sha256.o" => [ + "crypto/modes" + ], + "crypto/evp/e_aria.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/evp/e_camellia.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/evp/e_des.o" => [ + "crypto" + ], + "crypto/evp/e_des3.o" => [ + "crypto" + ], + "crypto/evp/e_sm4.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/evp/libcrypto-lib-e_aes.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o" => [ + "crypto/modes" + ], + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o" => [ + "crypto/modes" + ], + "crypto/evp/libcrypto-lib-e_aria.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/evp/libcrypto-lib-e_camellia.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/evp/libcrypto-lib-e_des.o" => [ + "crypto" + ], + "crypto/evp/libcrypto-lib-e_des3.o" => [ + "crypto" + ], + "crypto/evp/libcrypto-lib-e_sm4.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/info.o" => [ + "crypto" + ], + "crypto/libcrypto-lib-cpuid.o" => [ + "." + ], + "crypto/libcrypto-lib-cversion.o" => [ + "crypto" + ], + "crypto/libcrypto-lib-info.o" => [ + "crypto" + ], + "crypto/libfips-lib-cpuid.o" => [ + "." + ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-sparcv9.o" => [ + "crypto" + ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], + "crypto/modes/aes-gcm-armv8_64.o" => [ + "crypto" + ], + "crypto/modes/gcm128.o" => [ + "crypto" + ], + "crypto/modes/ghash-armv4.o" => [ + "crypto" + ], + "crypto/modes/ghash-s390x.o" => [ + "crypto" + ], + "crypto/modes/ghash-sparcv9.o" => [ + "crypto" + ], + "crypto/modes/ghashv8-armx.o" => [ + "crypto" + ], + "crypto/modes/libcrypto-lib-gcm128.o" => [ + "crypto" + ], + "crypto/modes/libfips-lib-gcm128.o" => [ + "crypto" + ], + "crypto/params_idx.c" => [ + "util/perl" + ], + "crypto/poly1305/poly1305-armv4.o" => [ + "crypto" + ], + "crypto/poly1305/poly1305-armv8.o" => [ + "crypto" + ], + "crypto/poly1305/poly1305-mips.o" => [ + "crypto" + ], + "crypto/poly1305/poly1305-s390x.o" => [ + "crypto" + ], + "crypto/poly1305/poly1305-sparcv9.o" => [ + "crypto" + ], + "crypto/s390xcpuid.o" => [ + "crypto" + ], + "crypto/sha/keccak1600-armv4.o" => [ + "crypto" + ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], + "crypto/sha/sha1-armv4-large.o" => [ + "crypto" + ], + "crypto/sha/sha1-armv8.o" => [ + "crypto" + ], + "crypto/sha/sha1-mips.o" => [ + "crypto" + ], + "crypto/sha/sha1-s390x.o" => [ + "crypto" + ], + "crypto/sha/sha1-sparcv9.o" => [ + "crypto" + ], + "crypto/sha/sha256-armv4.o" => [ + "crypto" + ], + "crypto/sha/sha256-armv8.o" => [ + "crypto" + ], + "crypto/sha/sha256-mips.o" => [ + "crypto" + ], + "crypto/sha/sha256-s390x.o" => [ + "crypto" + ], + "crypto/sha/sha256-sparcv9.o" => [ + "crypto" + ], + "crypto/sha/sha512-armv4.o" => [ + "crypto" + ], + "crypto/sha/sha512-armv8.o" => [ + "crypto" + ], + "crypto/sha/sha512-mips.o" => [ + "crypto" + ], + "crypto/sha/sha512-s390x.o" => [ + "crypto" + ], + "crypto/sha/sha512-sparcv9.o" => [ + "crypto" + ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], + "doc/man1/openssl-asn1parse.pod" => [ + "doc" + ], + "doc/man1/openssl-ca.pod" => [ + "doc" + ], + "doc/man1/openssl-ciphers.pod" => [ + "doc" + ], + "doc/man1/openssl-cmds.pod" => [ + "doc" + ], + "doc/man1/openssl-cmp.pod" => [ + "doc" + ], + "doc/man1/openssl-cms.pod" => [ + "doc" + ], + "doc/man1/openssl-crl.pod" => [ + "doc" + ], + "doc/man1/openssl-crl2pkcs7.pod" => [ + "doc" + ], + "doc/man1/openssl-dgst.pod" => [ + "doc" + ], + "doc/man1/openssl-dhparam.pod" => [ + "doc" + ], + "doc/man1/openssl-dsa.pod" => [ + "doc" + ], + "doc/man1/openssl-dsaparam.pod" => [ + "doc" + ], + "doc/man1/openssl-ec.pod" => [ + "doc" + ], + "doc/man1/openssl-ecparam.pod" => [ + "doc" + ], + "doc/man1/openssl-enc.pod" => [ + "doc" + ], + "doc/man1/openssl-engine.pod" => [ + "doc" + ], + "doc/man1/openssl-errstr.pod" => [ + "doc" + ], + "doc/man1/openssl-fipsinstall.pod" => [ + "doc" + ], + "doc/man1/openssl-gendsa.pod" => [ + "doc" + ], + "doc/man1/openssl-genpkey.pod" => [ + "doc" + ], + "doc/man1/openssl-genrsa.pod" => [ + "doc" + ], + "doc/man1/openssl-info.pod" => [ + "doc" + ], + "doc/man1/openssl-kdf.pod" => [ + "doc" + ], + "doc/man1/openssl-list.pod" => [ + "doc" + ], + "doc/man1/openssl-mac.pod" => [ + "doc" + ], + "doc/man1/openssl-nseq.pod" => [ + "doc" + ], + "doc/man1/openssl-ocsp.pod" => [ + "doc" + ], + "doc/man1/openssl-passwd.pod" => [ + "doc" + ], + "doc/man1/openssl-pkcs12.pod" => [ + "doc" + ], + "doc/man1/openssl-pkcs7.pod" => [ + "doc" + ], + "doc/man1/openssl-pkcs8.pod" => [ + "doc" + ], + "doc/man1/openssl-pkey.pod" => [ + "doc" + ], + "doc/man1/openssl-pkeyparam.pod" => [ + "doc" + ], + "doc/man1/openssl-pkeyutl.pod" => [ + "doc" + ], + "doc/man1/openssl-prime.pod" => [ + "doc" + ], + "doc/man1/openssl-rand.pod" => [ + "doc" + ], + "doc/man1/openssl-rehash.pod" => [ + "doc" + ], + "doc/man1/openssl-req.pod" => [ + "doc" + ], + "doc/man1/openssl-rsa.pod" => [ + "doc" + ], + "doc/man1/openssl-rsautl.pod" => [ + "doc" + ], + "doc/man1/openssl-s_client.pod" => [ + "doc" + ], + "doc/man1/openssl-s_server.pod" => [ + "doc" + ], + "doc/man1/openssl-s_time.pod" => [ + "doc" + ], + "doc/man1/openssl-sess_id.pod" => [ + "doc" + ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], + "doc/man1/openssl-smime.pod" => [ + "doc" + ], + "doc/man1/openssl-speed.pod" => [ + "doc" + ], + "doc/man1/openssl-spkac.pod" => [ + "doc" + ], + "doc/man1/openssl-srp.pod" => [ + "doc" + ], + "doc/man1/openssl-storeutl.pod" => [ + "doc" + ], + "doc/man1/openssl-ts.pod" => [ + "doc" + ], + "doc/man1/openssl-verify.pod" => [ + "doc" + ], + "doc/man1/openssl-version.pod" => [ + "doc" + ], + "doc/man1/openssl-x509.pod" => [ + "doc" + ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], + "libcrypto" => [ + ".", + "include", + "providers/common/include", + "providers/implementations/include" + ], + "libcrypto.ld" => [ + ".", + "util/perl/OpenSSL" + ], + "libcrypto.pc" => [ + "." + ], + "libssl" => [ + ".", + "include" + ], + "libssl.ld" => [ + ".", + "util/perl/OpenSSL" + ], + "libssl.pc" => [ + "." + ], + "openssl.pc" => [ + "." + ], + "providers/common/der/der_digests_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_digests_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_dsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ec_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ec_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ec_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ec_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ecx_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ecx_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ecx_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_rsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_rsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_rsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_rsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_sm2_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_sm2_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_sm2_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_sm2_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_wrap_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_wrap_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_digests_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_dsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ec_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ec_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ec_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ecx_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_rsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libdefault-lib-der_sm2_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libfips-lib-der_rsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/include/prov/der_digests.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_dsa.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_ec.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_ecx.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_rsa.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_sm2.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_wrap.h" => [ + "providers/common/der" + ], + "providers/fips" => [ + "include" + ], + "providers/implementations/encode_decode/encode_key2any.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/kdfs/x942kdf.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ecdsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/eddsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/rsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/sm2_sig.o" => [ + "providers/common/include/prov" + ], + "providers/legacy" => [ + "include", + "providers/implementations/include", + "providers/common/include" + ], + "providers/libcommon.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" + ], + "providers/libdefault.a" => [ + ".", + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" + ], + "providers/libfips.a" => [ + ".", + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" + ], + "providers/liblegacy.a" => [ + ".", + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" + ], + "util/wrap.pl" => [ + "." + ] + }, + "ldadd" => {}, + "libraries" => [ + "apps/libapps.a", + "libcrypto", + "libssl", + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a", + "providers/liblegacy.a", + "providers/libtemplate.a" + ], + "mandocs" => { + "man1" => [ + "doc/man/man1/CA.pl.1", + "doc/man/man1/openssl-asn1parse.1", + "doc/man/man1/openssl-ca.1", + "doc/man/man1/openssl-ciphers.1", + "doc/man/man1/openssl-cmds.1", + "doc/man/man1/openssl-cmp.1", + "doc/man/man1/openssl-cms.1", + "doc/man/man1/openssl-crl.1", + "doc/man/man1/openssl-crl2pkcs7.1", + "doc/man/man1/openssl-dgst.1", + "doc/man/man1/openssl-dhparam.1", + "doc/man/man1/openssl-dsa.1", + "doc/man/man1/openssl-dsaparam.1", + "doc/man/man1/openssl-ec.1", + "doc/man/man1/openssl-ecparam.1", + "doc/man/man1/openssl-enc.1", + "doc/man/man1/openssl-engine.1", + "doc/man/man1/openssl-errstr.1", + "doc/man/man1/openssl-fipsinstall.1", + "doc/man/man1/openssl-format-options.1", + "doc/man/man1/openssl-gendsa.1", + "doc/man/man1/openssl-genpkey.1", + "doc/man/man1/openssl-genrsa.1", + "doc/man/man1/openssl-info.1", + "doc/man/man1/openssl-kdf.1", + "doc/man/man1/openssl-list.1", + "doc/man/man1/openssl-mac.1", + "doc/man/man1/openssl-namedisplay-options.1", + "doc/man/man1/openssl-nseq.1", + "doc/man/man1/openssl-ocsp.1", + "doc/man/man1/openssl-passphrase-options.1", + "doc/man/man1/openssl-passwd.1", + "doc/man/man1/openssl-pkcs12.1", + "doc/man/man1/openssl-pkcs7.1", + "doc/man/man1/openssl-pkcs8.1", + "doc/man/man1/openssl-pkey.1", + "doc/man/man1/openssl-pkeyparam.1", + "doc/man/man1/openssl-pkeyutl.1", + "doc/man/man1/openssl-prime.1", + "doc/man/man1/openssl-rand.1", + "doc/man/man1/openssl-rehash.1", + "doc/man/man1/openssl-req.1", + "doc/man/man1/openssl-rsa.1", + "doc/man/man1/openssl-rsautl.1", + "doc/man/man1/openssl-s_client.1", + "doc/man/man1/openssl-s_server.1", + "doc/man/man1/openssl-s_time.1", + "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", + "doc/man/man1/openssl-smime.1", + "doc/man/man1/openssl-speed.1", + "doc/man/man1/openssl-spkac.1", + "doc/man/man1/openssl-srp.1", + "doc/man/man1/openssl-storeutl.1", + "doc/man/man1/openssl-ts.1", + "doc/man/man1/openssl-verification-options.1", + "doc/man/man1/openssl-verify.1", + "doc/man/man1/openssl-version.1", + "doc/man/man1/openssl-x509.1", + "doc/man/man1/openssl.1", + "doc/man/man1/tsget.1" + ], + "man3" => [ + "doc/man/man3/ADMISSIONS.3", + "doc/man/man3/ASN1_EXTERN_FUNCS.3", + "doc/man/man3/ASN1_INTEGER_get_int64.3", + "doc/man/man3/ASN1_INTEGER_new.3", + "doc/man/man3/ASN1_ITEM_lookup.3", + "doc/man/man3/ASN1_OBJECT_new.3", + "doc/man/man3/ASN1_STRING_TABLE_add.3", + "doc/man/man3/ASN1_STRING_length.3", + "doc/man/man3/ASN1_STRING_new.3", + "doc/man/man3/ASN1_STRING_print_ex.3", + "doc/man/man3/ASN1_TIME_set.3", + "doc/man/man3/ASN1_TYPE_get.3", + "doc/man/man3/ASN1_aux_cb.3", + "doc/man/man3/ASN1_generate_nconf.3", + "doc/man/man3/ASN1_item_d2i_bio.3", + "doc/man/man3/ASN1_item_new.3", + "doc/man/man3/ASN1_item_sign.3", + "doc/man/man3/ASYNC_WAIT_CTX_new.3", + "doc/man/man3/ASYNC_start_job.3", + "doc/man/man3/BF_encrypt.3", + "doc/man/man3/BIO_ADDR.3", + "doc/man/man3/BIO_ADDRINFO.3", + "doc/man/man3/BIO_connect.3", + "doc/man/man3/BIO_ctrl.3", + "doc/man/man3/BIO_f_base64.3", + "doc/man/man3/BIO_f_buffer.3", + "doc/man/man3/BIO_f_cipher.3", + "doc/man/man3/BIO_f_md.3", + "doc/man/man3/BIO_f_null.3", + "doc/man/man3/BIO_f_prefix.3", + "doc/man/man3/BIO_f_readbuffer.3", + "doc/man/man3/BIO_f_ssl.3", + "doc/man/man3/BIO_find_type.3", + "doc/man/man3/BIO_get_data.3", + "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", + "doc/man/man3/BIO_meth_new.3", + "doc/man/man3/BIO_new.3", + "doc/man/man3/BIO_new_CMS.3", + "doc/man/man3/BIO_parse_hostserv.3", + "doc/man/man3/BIO_printf.3", + "doc/man/man3/BIO_push.3", + "doc/man/man3/BIO_read.3", + "doc/man/man3/BIO_s_accept.3", + "doc/man/man3/BIO_s_bio.3", + "doc/man/man3/BIO_s_connect.3", + "doc/man/man3/BIO_s_core.3", + "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", + "doc/man/man3/BIO_s_fd.3", + "doc/man/man3/BIO_s_file.3", + "doc/man/man3/BIO_s_mem.3", + "doc/man/man3/BIO_s_null.3", + "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", + "doc/man/man3/BIO_set_callback.3", + "doc/man/man3/BIO_set_flags.3", + "doc/man/man3/BIO_should_retry.3", + "doc/man/man3/BIO_socket_wait.3", + "doc/man/man3/BN_BLINDING_new.3", + "doc/man/man3/BN_CTX_new.3", + "doc/man/man3/BN_CTX_start.3", + "doc/man/man3/BN_add.3", + "doc/man/man3/BN_add_word.3", + "doc/man/man3/BN_bn2bin.3", + "doc/man/man3/BN_cmp.3", + "doc/man/man3/BN_copy.3", + "doc/man/man3/BN_generate_prime.3", + "doc/man/man3/BN_mod_exp_mont.3", + "doc/man/man3/BN_mod_inverse.3", + "doc/man/man3/BN_mod_mul_montgomery.3", + "doc/man/man3/BN_mod_mul_reciprocal.3", + "doc/man/man3/BN_new.3", + "doc/man/man3/BN_num_bytes.3", + "doc/man/man3/BN_rand.3", + "doc/man/man3/BN_security_bits.3", + "doc/man/man3/BN_set_bit.3", + "doc/man/man3/BN_swap.3", + "doc/man/man3/BN_zero.3", + "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", + "doc/man/man3/CMS_EncryptedData_decrypt.3", + "doc/man/man3/CMS_EncryptedData_encrypt.3", + "doc/man/man3/CMS_EncryptedData_set1_key.3", + "doc/man/man3/CMS_EnvelopedData_create.3", + "doc/man/man3/CMS_add0_cert.3", + "doc/man/man3/CMS_add1_recipient_cert.3", + "doc/man/man3/CMS_add1_signer.3", + "doc/man/man3/CMS_compress.3", + "doc/man/man3/CMS_data_create.3", + "doc/man/man3/CMS_decrypt.3", + "doc/man/man3/CMS_digest_create.3", + "doc/man/man3/CMS_encrypt.3", + "doc/man/man3/CMS_final.3", + "doc/man/man3/CMS_get0_RecipientInfos.3", + "doc/man/man3/CMS_get0_SignerInfos.3", + "doc/man/man3/CMS_get0_type.3", + "doc/man/man3/CMS_get1_ReceiptRequest.3", + "doc/man/man3/CMS_sign.3", + "doc/man/man3/CMS_sign_receipt.3", + "doc/man/man3/CMS_signed_get_attr.3", + "doc/man/man3/CMS_uncompress.3", + "doc/man/man3/CMS_verify.3", + "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", + "doc/man/man3/CONF_modules_free.3", + "doc/man/man3/CONF_modules_load_file.3", + "doc/man/man3/CRYPTO_THREAD_run_once.3", + "doc/man/man3/CRYPTO_get_ex_new_index.3", + "doc/man/man3/CRYPTO_memcmp.3", + "doc/man/man3/CTLOG_STORE_get0_log_by_id.3", + "doc/man/man3/CTLOG_STORE_new.3", + "doc/man/man3/CTLOG_new.3", + "doc/man/man3/CT_POLICY_EVAL_CTX_new.3", + "doc/man/man3/DEFINE_STACK_OF.3", + "doc/man/man3/DES_random_key.3", + "doc/man/man3/DH_generate_key.3", + "doc/man/man3/DH_generate_parameters.3", + "doc/man/man3/DH_get0_pqg.3", + "doc/man/man3/DH_get_1024_160.3", + "doc/man/man3/DH_meth_new.3", + "doc/man/man3/DH_new.3", + "doc/man/man3/DH_new_by_nid.3", + "doc/man/man3/DH_set_method.3", + "doc/man/man3/DH_size.3", + "doc/man/man3/DSA_SIG_new.3", + "doc/man/man3/DSA_do_sign.3", + "doc/man/man3/DSA_dup_DH.3", + "doc/man/man3/DSA_generate_key.3", + "doc/man/man3/DSA_generate_parameters.3", + "doc/man/man3/DSA_get0_pqg.3", + "doc/man/man3/DSA_meth_new.3", + "doc/man/man3/DSA_new.3", + "doc/man/man3/DSA_set_method.3", + "doc/man/man3/DSA_sign.3", + "doc/man/man3/DSA_size.3", + "doc/man/man3/DTLS_get_data_mtu.3", + "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", + "doc/man/man3/DTLSv1_listen.3", + "doc/man/man3/ECDSA_SIG_new.3", + "doc/man/man3/ECDSA_sign.3", + "doc/man/man3/ECPKParameters_print.3", + "doc/man/man3/EC_GFp_simple_method.3", + "doc/man/man3/EC_GROUP_copy.3", + "doc/man/man3/EC_GROUP_new.3", + "doc/man/man3/EC_KEY_get_enc_flags.3", + "doc/man/man3/EC_KEY_new.3", + "doc/man/man3/EC_POINT_add.3", + "doc/man/man3/EC_POINT_new.3", + "doc/man/man3/ENGINE_add.3", + "doc/man/man3/ERR_GET_LIB.3", + "doc/man/man3/ERR_clear_error.3", + "doc/man/man3/ERR_error_string.3", + "doc/man/man3/ERR_get_error.3", + "doc/man/man3/ERR_load_crypto_strings.3", + "doc/man/man3/ERR_load_strings.3", + "doc/man/man3/ERR_new.3", + "doc/man/man3/ERR_print_errors.3", + "doc/man/man3/ERR_put_error.3", + "doc/man/man3/ERR_remove_state.3", + "doc/man/man3/ERR_set_mark.3", + "doc/man/man3/EVP_ASYM_CIPHER_free.3", + "doc/man/man3/EVP_BytesToKey.3", + "doc/man/man3/EVP_CIPHER_CTX_get_app_data.3", + "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3", + "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3", + "doc/man/man3/EVP_CIPHER_meth_new.3", + "doc/man/man3/EVP_DigestInit.3", + "doc/man/man3/EVP_DigestSignInit.3", + "doc/man/man3/EVP_DigestVerifyInit.3", + "doc/man/man3/EVP_EncodeInit.3", + "doc/man/man3/EVP_EncryptInit.3", + "doc/man/man3/EVP_KDF.3", + "doc/man/man3/EVP_KEM_free.3", + "doc/man/man3/EVP_KEYEXCH_free.3", + "doc/man/man3/EVP_KEYMGMT.3", + "doc/man/man3/EVP_MAC.3", + "doc/man/man3/EVP_MD_meth_new.3", + "doc/man/man3/EVP_OpenInit.3", + "doc/man/man3/EVP_PBE_CipherInit.3", + "doc/man/man3/EVP_PKEY2PKCS8.3", + "doc/man/man3/EVP_PKEY_ASN1_METHOD.3", + "doc/man/man3/EVP_PKEY_CTX_ctrl.3", + "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", + "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", + "doc/man/man3/EVP_PKEY_CTX_new.3", + "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", + "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", + "doc/man/man3/EVP_PKEY_CTX_set_params.3", + "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3", + "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3", + "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3", + "doc/man/man3/EVP_PKEY_asn1_get_count.3", + "doc/man/man3/EVP_PKEY_check.3", + "doc/man/man3/EVP_PKEY_copy_parameters.3", + "doc/man/man3/EVP_PKEY_decapsulate.3", + "doc/man/man3/EVP_PKEY_decrypt.3", + "doc/man/man3/EVP_PKEY_derive.3", + "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3", + "doc/man/man3/EVP_PKEY_encapsulate.3", + "doc/man/man3/EVP_PKEY_encrypt.3", + "doc/man/man3/EVP_PKEY_fromdata.3", + "doc/man/man3/EVP_PKEY_get_attr.3", + "doc/man/man3/EVP_PKEY_get_default_digest_nid.3", + "doc/man/man3/EVP_PKEY_get_field_type.3", + "doc/man/man3/EVP_PKEY_get_group_name.3", + "doc/man/man3/EVP_PKEY_get_size.3", + "doc/man/man3/EVP_PKEY_gettable_params.3", + "doc/man/man3/EVP_PKEY_is_a.3", + "doc/man/man3/EVP_PKEY_keygen.3", + "doc/man/man3/EVP_PKEY_meth_get_count.3", + "doc/man/man3/EVP_PKEY_meth_new.3", + "doc/man/man3/EVP_PKEY_new.3", + "doc/man/man3/EVP_PKEY_print_private.3", + "doc/man/man3/EVP_PKEY_set1_RSA.3", + "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3", + "doc/man/man3/EVP_PKEY_set_type.3", + "doc/man/man3/EVP_PKEY_settable_params.3", + "doc/man/man3/EVP_PKEY_sign.3", + "doc/man/man3/EVP_PKEY_todata.3", + "doc/man/man3/EVP_PKEY_verify.3", + "doc/man/man3/EVP_PKEY_verify_recover.3", + "doc/man/man3/EVP_RAND.3", + "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", + "doc/man/man3/EVP_SealInit.3", + "doc/man/man3/EVP_SignInit.3", + "doc/man/man3/EVP_VerifyInit.3", + "doc/man/man3/EVP_aes_128_gcm.3", + "doc/man/man3/EVP_aria_128_gcm.3", + "doc/man/man3/EVP_bf_cbc.3", + "doc/man/man3/EVP_blake2b512.3", + "doc/man/man3/EVP_camellia_128_ecb.3", + "doc/man/man3/EVP_cast5_cbc.3", + "doc/man/man3/EVP_chacha20.3", + "doc/man/man3/EVP_des_cbc.3", + "doc/man/man3/EVP_desx_cbc.3", + "doc/man/man3/EVP_idea_cbc.3", + "doc/man/man3/EVP_md2.3", + "doc/man/man3/EVP_md4.3", + "doc/man/man3/EVP_md5.3", + "doc/man/man3/EVP_mdc2.3", + "doc/man/man3/EVP_rc2_cbc.3", + "doc/man/man3/EVP_rc4.3", + "doc/man/man3/EVP_rc5_32_12_16_cbc.3", + "doc/man/man3/EVP_ripemd160.3", + "doc/man/man3/EVP_seed_cbc.3", + "doc/man/man3/EVP_set_default_properties.3", + "doc/man/man3/EVP_sha1.3", + "doc/man/man3/EVP_sha224.3", + "doc/man/man3/EVP_sha3_224.3", + "doc/man/man3/EVP_sm3.3", + "doc/man/man3/EVP_sm4_cbc.3", + "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", + "doc/man/man3/HMAC.3", + "doc/man/man3/MD5.3", + "doc/man/man3/MDC2_Init.3", + "doc/man/man3/NCONF_new_ex.3", + "doc/man/man3/OBJ_nid2obj.3", + "doc/man/man3/OCSP_REQUEST_new.3", + "doc/man/man3/OCSP_cert_to_id.3", + "doc/man/man3/OCSP_request_add1_nonce.3", + "doc/man/man3/OCSP_resp_find_status.3", + "doc/man/man3/OCSP_response_status.3", + "doc/man/man3/OCSP_sendreq_new.3", + "doc/man/man3/OPENSSL_Applink.3", + "doc/man/man3/OPENSSL_FILE.3", + "doc/man/man3/OPENSSL_LH_COMPFUNC.3", + "doc/man/man3/OPENSSL_LH_stats.3", + "doc/man/man3/OPENSSL_config.3", + "doc/man/man3/OPENSSL_fork_prepare.3", + "doc/man/man3/OPENSSL_gmtime.3", + "doc/man/man3/OPENSSL_hexchar2int.3", + "doc/man/man3/OPENSSL_ia32cap.3", + "doc/man/man3/OPENSSL_init_crypto.3", + "doc/man/man3/OPENSSL_init_ssl.3", + "doc/man/man3/OPENSSL_instrument_bus.3", + "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", + "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_ppccap.3", + "doc/man/man3/OPENSSL_riscvcap.3", + "doc/man/man3/OPENSSL_s390xcap.3", + "doc/man/man3/OPENSSL_secure_malloc.3", + "doc/man/man3/OPENSSL_strcasecmp.3", + "doc/man/man3/OSSL_ALGORITHM.3", + "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", + "doc/man/man3/OSSL_CMP_CTX_new.3", + "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", + "doc/man/man3/OSSL_CMP_ITAV_set0.3", + "doc/man/man3/OSSL_CMP_MSG_get0_header.3", + "doc/man/man3/OSSL_CMP_MSG_http_perform.3", + "doc/man/man3/OSSL_CMP_SRV_CTX_new.3", + "doc/man/man3/OSSL_CMP_STATUSINFO_new.3", + "doc/man/man3/OSSL_CMP_exec_certreq.3", + "doc/man/man3/OSSL_CMP_log_open.3", + "doc/man/man3/OSSL_CMP_validate_msg.3", + "doc/man/man3/OSSL_CORE_MAKE_FUNC.3", + "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3", + "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3", + "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3", + "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3", + "doc/man/man3/OSSL_CRMF_pbmp_new.3", + "doc/man/man3/OSSL_DECODER.3", + "doc/man/man3/OSSL_DECODER_CTX.3", + "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3", + "doc/man/man3/OSSL_DECODER_from_bio.3", + "doc/man/man3/OSSL_DISPATCH.3", + "doc/man/man3/OSSL_ENCODER.3", + "doc/man/man3/OSSL_ENCODER_CTX.3", + "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", + "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", + "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", + "doc/man/man3/OSSL_HTTP_REQ_CTX.3", + "doc/man/man3/OSSL_HTTP_parse_url.3", + "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", + "doc/man/man3/OSSL_ITEM.3", + "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", + "doc/man/man3/OSSL_PARAM.3", + "doc/man/man3/OSSL_PARAM_BLD.3", + "doc/man/man3/OSSL_PARAM_allocate_from_text.3", + "doc/man/man3/OSSL_PARAM_dup.3", + "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", + "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", + "doc/man/man3/OSSL_SELF_TEST_new.3", + "doc/man/man3/OSSL_SELF_TEST_set_callback.3", + "doc/man/man3/OSSL_STORE_INFO.3", + "doc/man/man3/OSSL_STORE_LOADER.3", + "doc/man/man3/OSSL_STORE_SEARCH.3", + "doc/man/man3/OSSL_STORE_attach.3", + "doc/man/man3/OSSL_STORE_expect.3", + "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", + "doc/man/man3/OSSL_trace_enabled.3", + "doc/man/man3/OSSL_trace_get_category_num.3", + "doc/man/man3/OSSL_trace_set_channel.3", + "doc/man/man3/OpenSSL_add_all_algorithms.3", + "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", + "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", + "doc/man/man3/PEM_bytes_read_bio.3", + "doc/man/man3/PEM_read.3", + "doc/man/man3/PEM_read_CMS.3", + "doc/man/man3/PEM_read_bio_PrivateKey.3", + "doc/man/man3/PEM_read_bio_ex.3", + "doc/man/man3/PEM_write_bio_CMS_stream.3", + "doc/man/man3/PEM_write_bio_PKCS7_stream.3", + "doc/man/man3/PKCS12_PBE_keyivgen.3", + "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", + "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", + "doc/man/man3/PKCS12_add1_attr_by_NID.3", + "doc/man/man3/PKCS12_add_CSPName_asc.3", + "doc/man/man3/PKCS12_add_cert.3", + "doc/man/man3/PKCS12_add_friendlyname_asc.3", + "doc/man/man3/PKCS12_add_localkeyid.3", + "doc/man/man3/PKCS12_add_safe.3", + "doc/man/man3/PKCS12_create.3", + "doc/man/man3/PKCS12_decrypt_skey.3", + "doc/man/man3/PKCS12_gen_mac.3", + "doc/man/man3/PKCS12_get_friendlyname.3", + "doc/man/man3/PKCS12_init.3", + "doc/man/man3/PKCS12_item_decrypt_d2i.3", + "doc/man/man3/PKCS12_key_gen_utf8_ex.3", + "doc/man/man3/PKCS12_newpass.3", + "doc/man/man3/PKCS12_pack_p7encdata.3", + "doc/man/man3/PKCS12_parse.3", + "doc/man/man3/PKCS5_PBE_keyivgen.3", + "doc/man/man3/PKCS5_PBKDF2_HMAC.3", + "doc/man/man3/PKCS7_decrypt.3", + "doc/man/man3/PKCS7_encrypt.3", + "doc/man/man3/PKCS7_get_octet_string.3", + "doc/man/man3/PKCS7_sign.3", + "doc/man/man3/PKCS7_sign_add_signer.3", + "doc/man/man3/PKCS7_type_is_other.3", + "doc/man/man3/PKCS7_verify.3", + "doc/man/man3/PKCS8_encrypt.3", + "doc/man/man3/PKCS8_pkey_add1_attr.3", + "doc/man/man3/RAND_add.3", + "doc/man/man3/RAND_bytes.3", + "doc/man/man3/RAND_cleanup.3", + "doc/man/man3/RAND_egd.3", + "doc/man/man3/RAND_get0_primary.3", + "doc/man/man3/RAND_load_file.3", + "doc/man/man3/RAND_set_DRBG_type.3", + "doc/man/man3/RAND_set_rand_method.3", + "doc/man/man3/RC4_set_key.3", + "doc/man/man3/RIPEMD160_Init.3", + "doc/man/man3/RSA_blinding_on.3", + "doc/man/man3/RSA_check_key.3", + "doc/man/man3/RSA_generate_key.3", + "doc/man/man3/RSA_get0_key.3", + "doc/man/man3/RSA_meth_new.3", + "doc/man/man3/RSA_new.3", + "doc/man/man3/RSA_padding_add_PKCS1_type_1.3", + "doc/man/man3/RSA_print.3", + "doc/man/man3/RSA_private_encrypt.3", + "doc/man/man3/RSA_public_encrypt.3", + "doc/man/man3/RSA_set_method.3", + "doc/man/man3/RSA_sign.3", + "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3", + "doc/man/man3/RSA_size.3", + "doc/man/man3/SCT_new.3", + "doc/man/man3/SCT_print.3", + "doc/man/man3/SCT_validate.3", + "doc/man/man3/SHA256_Init.3", + "doc/man/man3/SMIME_read_ASN1.3", + "doc/man/man3/SMIME_read_CMS.3", + "doc/man/man3/SMIME_read_PKCS7.3", + "doc/man/man3/SMIME_write_ASN1.3", + "doc/man/man3/SMIME_write_CMS.3", + "doc/man/man3/SMIME_write_PKCS7.3", + "doc/man/man3/SRP_Calc_B.3", + "doc/man/man3/SRP_VBASE_new.3", + "doc/man/man3/SRP_create_verifier.3", + "doc/man/man3/SRP_user_pwd_new.3", + "doc/man/man3/SSL_CIPHER_get_name.3", + "doc/man/man3/SSL_COMP_add_compression_method.3", + "doc/man/man3/SSL_CONF_CTX_new.3", + "doc/man/man3/SSL_CONF_CTX_set1_prefix.3", + "doc/man/man3/SSL_CONF_CTX_set_flags.3", + "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3", + "doc/man/man3/SSL_CONF_cmd.3", + "doc/man/man3/SSL_CONF_cmd_argv.3", + "doc/man/man3/SSL_CTX_add1_chain_cert.3", + "doc/man/man3/SSL_CTX_add_extra_chain_cert.3", + "doc/man/man3/SSL_CTX_add_session.3", + "doc/man/man3/SSL_CTX_config.3", + "doc/man/man3/SSL_CTX_ctrl.3", + "doc/man/man3/SSL_CTX_dane_enable.3", + "doc/man/man3/SSL_CTX_flush_sessions.3", + "doc/man/man3/SSL_CTX_free.3", + "doc/man/man3/SSL_CTX_get0_param.3", + "doc/man/man3/SSL_CTX_get_verify_mode.3", + "doc/man/man3/SSL_CTX_has_client_custom_ext.3", + "doc/man/man3/SSL_CTX_load_verify_locations.3", + "doc/man/man3/SSL_CTX_new.3", + "doc/man/man3/SSL_CTX_sess_number.3", + "doc/man/man3/SSL_CTX_sess_set_cache_size.3", + "doc/man/man3/SSL_CTX_sess_set_get_cb.3", + "doc/man/man3/SSL_CTX_sessions.3", + "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", + "doc/man/man3/SSL_CTX_set1_curves.3", + "doc/man/man3/SSL_CTX_set1_sigalgs.3", + "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", + "doc/man/man3/SSL_CTX_set_alpn_select_cb.3", + "doc/man/man3/SSL_CTX_set_cert_cb.3", + "doc/man/man3/SSL_CTX_set_cert_store.3", + "doc/man/man3/SSL_CTX_set_cert_verify_callback.3", + "doc/man/man3/SSL_CTX_set_cipher_list.3", + "doc/man/man3/SSL_CTX_set_client_cert_cb.3", + "doc/man/man3/SSL_CTX_set_client_hello_cb.3", + "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", + "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", + "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", + "doc/man/man3/SSL_CTX_set_generate_session_id.3", + "doc/man/man3/SSL_CTX_set_info_callback.3", + "doc/man/man3/SSL_CTX_set_keylog_callback.3", + "doc/man/man3/SSL_CTX_set_max_cert_list.3", + "doc/man/man3/SSL_CTX_set_min_proto_version.3", + "doc/man/man3/SSL_CTX_set_mode.3", + "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", + "doc/man/man3/SSL_CTX_set_num_tickets.3", + "doc/man/man3/SSL_CTX_set_options.3", + "doc/man/man3/SSL_CTX_set_psk_client_callback.3", + "doc/man/man3/SSL_CTX_set_quiet_shutdown.3", + "doc/man/man3/SSL_CTX_set_read_ahead.3", + "doc/man/man3/SSL_CTX_set_record_padding_callback.3", + "doc/man/man3/SSL_CTX_set_security_level.3", + "doc/man/man3/SSL_CTX_set_session_cache_mode.3", + "doc/man/man3/SSL_CTX_set_session_id_context.3", + "doc/man/man3/SSL_CTX_set_session_ticket_cb.3", + "doc/man/man3/SSL_CTX_set_split_send_fragment.3", + "doc/man/man3/SSL_CTX_set_srp_password.3", + "doc/man/man3/SSL_CTX_set_ssl_version.3", + "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3", + "doc/man/man3/SSL_CTX_set_timeout.3", + "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3", + "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3", + "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3", + "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3", + "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3", + "doc/man/man3/SSL_CTX_set_tmp_ecdh.3", + "doc/man/man3/SSL_CTX_set_verify.3", + "doc/man/man3/SSL_CTX_use_certificate.3", + "doc/man/man3/SSL_CTX_use_psk_identity_hint.3", + "doc/man/man3/SSL_CTX_use_serverinfo.3", + "doc/man/man3/SSL_SESSION_free.3", + "doc/man/man3/SSL_SESSION_get0_cipher.3", + "doc/man/man3/SSL_SESSION_get0_hostname.3", + "doc/man/man3/SSL_SESSION_get0_id_context.3", + "doc/man/man3/SSL_SESSION_get0_peer.3", + "doc/man/man3/SSL_SESSION_get_compress_id.3", + "doc/man/man3/SSL_SESSION_get_protocol_version.3", + "doc/man/man3/SSL_SESSION_get_time.3", + "doc/man/man3/SSL_SESSION_has_ticket.3", + "doc/man/man3/SSL_SESSION_is_resumable.3", + "doc/man/man3/SSL_SESSION_print.3", + "doc/man/man3/SSL_SESSION_set1_id.3", + "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", + "doc/man/man3/SSL_alert_type_string.3", + "doc/man/man3/SSL_alloc_buffers.3", + "doc/man/man3/SSL_check_chain.3", + "doc/man/man3/SSL_clear.3", + "doc/man/man3/SSL_connect.3", + "doc/man/man3/SSL_do_handshake.3", + "doc/man/man3/SSL_export_keying_material.3", + "doc/man/man3/SSL_extension_supported.3", + "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", + "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", + "doc/man/man3/SSL_get_SSL_CTX.3", + "doc/man/man3/SSL_get_all_async_fds.3", + "doc/man/man3/SSL_get_certificate.3", + "doc/man/man3/SSL_get_ciphers.3", + "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", + "doc/man/man3/SSL_get_current_cipher.3", + "doc/man/man3/SSL_get_default_timeout.3", + "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", + "doc/man/man3/SSL_get_extms_support.3", + "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", + "doc/man/man3/SSL_get_peer_cert_chain.3", + "doc/man/man3/SSL_get_peer_certificate.3", + "doc/man/man3/SSL_get_peer_signature_nid.3", + "doc/man/man3/SSL_get_peer_tmp_key.3", + "doc/man/man3/SSL_get_psk_identity.3", + "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", + "doc/man/man3/SSL_get_session.3", + "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", + "doc/man/man3/SSL_get_verify_result.3", + "doc/man/man3/SSL_get_version.3", + "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", + "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", + "doc/man/man3/SSL_key_update.3", + "doc/man/man3/SSL_library_init.3", + "doc/man/man3/SSL_load_client_CA_file.3", + "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", + "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", + "doc/man/man3/SSL_read.3", + "doc/man/man3/SSL_read_early_data.3", + "doc/man/man3/SSL_rstate_string.3", + "doc/man/man3/SSL_session_reused.3", + "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", + "doc/man/man3/SSL_set_async_callback.3", + "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", + "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", + "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", + "doc/man/man3/SSL_set_retry_verify.3", + "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", + "doc/man/man3/SSL_set_shutdown.3", + "doc/man/man3/SSL_set_verify_result.3", + "doc/man/man3/SSL_shutdown.3", + "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", + "doc/man/man3/SSL_want.3", + "doc/man/man3/SSL_write.3", + "doc/man/man3/TS_RESP_CTX_new.3", + "doc/man/man3/TS_VERIFY_CTX.3", + "doc/man/man3/UI_STRING.3", + "doc/man/man3/UI_UTIL_read_pw.3", + "doc/man/man3/UI_create_method.3", + "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", + "doc/man/man3/X509V3_get_d2i.3", + "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", + "doc/man/man3/X509_ALGOR_dup.3", + "doc/man/man3/X509_ATTRIBUTE.3", + "doc/man/man3/X509_CRL_get0_by_serial.3", + "doc/man/man3/X509_EXTENSION_set_object.3", + "doc/man/man3/X509_LOOKUP.3", + "doc/man/man3/X509_LOOKUP_hash_dir.3", + "doc/man/man3/X509_LOOKUP_meth_new.3", + "doc/man/man3/X509_NAME_ENTRY_get_object.3", + "doc/man/man3/X509_NAME_add_entry_by_txt.3", + "doc/man/man3/X509_NAME_get0_der.3", + "doc/man/man3/X509_NAME_get_index_by_NID.3", + "doc/man/man3/X509_NAME_print_ex.3", + "doc/man/man3/X509_PUBKEY_new.3", + "doc/man/man3/X509_REQ_get_attr.3", + "doc/man/man3/X509_REQ_get_extensions.3", + "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", + "doc/man/man3/X509_STORE_CTX_get_error.3", + "doc/man/man3/X509_STORE_CTX_new.3", + "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", + "doc/man/man3/X509_STORE_add_cert.3", + "doc/man/man3/X509_STORE_get0_param.3", + "doc/man/man3/X509_STORE_new.3", + "doc/man/man3/X509_STORE_set_verify_cb_func.3", + "doc/man/man3/X509_VERIFY_PARAM_set_flags.3", + "doc/man/man3/X509_add_cert.3", + "doc/man/man3/X509_check_ca.3", + "doc/man/man3/X509_check_host.3", + "doc/man/man3/X509_check_issued.3", + "doc/man/man3/X509_check_private_key.3", + "doc/man/man3/X509_check_purpose.3", + "doc/man/man3/X509_cmp.3", + "doc/man/man3/X509_cmp_time.3", + "doc/man/man3/X509_digest.3", + "doc/man/man3/X509_dup.3", + "doc/man/man3/X509_get0_distinguishing_id.3", + "doc/man/man3/X509_get0_notBefore.3", + "doc/man/man3/X509_get0_signature.3", + "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", + "doc/man/man3/X509_get_extension_flags.3", + "doc/man/man3/X509_get_pubkey.3", + "doc/man/man3/X509_get_serialNumber.3", + "doc/man/man3/X509_get_subject_name.3", + "doc/man/man3/X509_get_version.3", + "doc/man/man3/X509_load_http.3", + "doc/man/man3/X509_new.3", + "doc/man/man3/X509_sign.3", + "doc/man/man3/X509_verify.3", + "doc/man/man3/X509_verify_cert.3", + "doc/man/man3/X509v3_get_ext_by_NID.3", + "doc/man/man3/b2i_PVK_bio_ex.3", + "doc/man/man3/d2i_PKCS8PrivateKey_bio.3", + "doc/man/man3/d2i_PrivateKey.3", + "doc/man/man3/d2i_RSAPrivateKey.3", + "doc/man/man3/d2i_SSL_SESSION.3", + "doc/man/man3/d2i_X509.3", + "doc/man/man3/i2d_CMS_bio_stream.3", + "doc/man/man3/i2d_PKCS7_bio_stream.3", + "doc/man/man3/i2d_re_X509_tbs.3", + "doc/man/man3/o2i_SCT_LIST.3", + "doc/man/man3/s2i_ASN1_IA5STRING.3" + ], + "man5" => [ + "doc/man/man5/config.5", + "doc/man/man5/fips_config.5", + "doc/man/man5/x509v3_config.5" + ], + "man7" => [ + "doc/man/man7/EVP_ASYM_CIPHER-RSA.7", + "doc/man/man7/EVP_ASYM_CIPHER-SM2.7", + "doc/man/man7/EVP_CIPHER-AES.7", + "doc/man/man7/EVP_CIPHER-ARIA.7", + "doc/man/man7/EVP_CIPHER-BLOWFISH.7", + "doc/man/man7/EVP_CIPHER-CAMELLIA.7", + "doc/man/man7/EVP_CIPHER-CAST.7", + "doc/man/man7/EVP_CIPHER-CHACHA.7", + "doc/man/man7/EVP_CIPHER-DES.7", + "doc/man/man7/EVP_CIPHER-IDEA.7", + "doc/man/man7/EVP_CIPHER-NULL.7", + "doc/man/man7/EVP_CIPHER-RC2.7", + "doc/man/man7/EVP_CIPHER-RC4.7", + "doc/man/man7/EVP_CIPHER-RC5.7", + "doc/man/man7/EVP_CIPHER-SEED.7", + "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", + "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", + "doc/man/man7/EVP_KDF-KB.7", + "doc/man/man7/EVP_KDF-KRB5KDF.7", + "doc/man/man7/EVP_KDF-PBKDF1.7", + "doc/man/man7/EVP_KDF-PBKDF2.7", + "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", + "doc/man/man7/EVP_KDF-SCRYPT.7", + "doc/man/man7/EVP_KDF-SS.7", + "doc/man/man7/EVP_KDF-SSHKDF.7", + "doc/man/man7/EVP_KDF-TLS13_KDF.7", + "doc/man/man7/EVP_KDF-TLS1_PRF.7", + "doc/man/man7/EVP_KDF-X942-ASN1.7", + "doc/man/man7/EVP_KDF-X942-CONCAT.7", + "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", + "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", + "doc/man/man7/EVP_KEYEXCH-DH.7", + "doc/man/man7/EVP_KEYEXCH-ECDH.7", + "doc/man/man7/EVP_KEYEXCH-X25519.7", + "doc/man/man7/EVP_MAC-BLAKE2.7", + "doc/man/man7/EVP_MAC-CMAC.7", + "doc/man/man7/EVP_MAC-GMAC.7", + "doc/man/man7/EVP_MAC-HMAC.7", + "doc/man/man7/EVP_MAC-KMAC.7", + "doc/man/man7/EVP_MAC-Poly1305.7", + "doc/man/man7/EVP_MAC-Siphash.7", + "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", + "doc/man/man7/EVP_MD-MD2.7", + "doc/man/man7/EVP_MD-MD4.7", + "doc/man/man7/EVP_MD-MD5-SHA1.7", + "doc/man/man7/EVP_MD-MD5.7", + "doc/man/man7/EVP_MD-MDC2.7", + "doc/man/man7/EVP_MD-NULL.7", + "doc/man/man7/EVP_MD-RIPEMD160.7", + "doc/man/man7/EVP_MD-SHA1.7", + "doc/man/man7/EVP_MD-SHA2.7", + "doc/man/man7/EVP_MD-SHA3.7", + "doc/man/man7/EVP_MD-SHAKE.7", + "doc/man/man7/EVP_MD-SM3.7", + "doc/man/man7/EVP_MD-WHIRLPOOL.7", + "doc/man/man7/EVP_MD-common.7", + "doc/man/man7/EVP_PKEY-DH.7", + "doc/man/man7/EVP_PKEY-DSA.7", + "doc/man/man7/EVP_PKEY-EC.7", + "doc/man/man7/EVP_PKEY-FFC.7", + "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", + "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", + "doc/man/man7/EVP_PKEY-SM2.7", + "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", + "doc/man/man7/EVP_RAND-CTR-DRBG.7", + "doc/man/man7/EVP_RAND-HASH-DRBG.7", + "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", + "doc/man/man7/EVP_RAND-SEED-SRC.7", + "doc/man/man7/EVP_RAND-TEST-RAND.7", + "doc/man/man7/EVP_RAND.7", + "doc/man/man7/EVP_SIGNATURE-DSA.7", + "doc/man/man7/EVP_SIGNATURE-ECDSA.7", + "doc/man/man7/EVP_SIGNATURE-ED25519.7", + "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", + "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", + "doc/man/man7/OSSL_PROVIDER-FIPS.7", + "doc/man/man7/OSSL_PROVIDER-base.7", + "doc/man/man7/OSSL_PROVIDER-default.7", + "doc/man/man7/OSSL_PROVIDER-legacy.7", + "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", + "doc/man/man7/RAND.7", + "doc/man/man7/RSA-PSS.7", + "doc/man/man7/X25519.7", + "doc/man/man7/bio.7", + "doc/man/man7/ct.7", + "doc/man/man7/des_modes.7", + "doc/man/man7/evp.7", + "doc/man/man7/fips_module.7", + "doc/man/man7/life_cycle-cipher.7", + "doc/man/man7/life_cycle-digest.7", + "doc/man/man7/life_cycle-kdf.7", + "doc/man/man7/life_cycle-mac.7", + "doc/man/man7/life_cycle-pkey.7", + "doc/man/man7/life_cycle-rand.7", + "doc/man/man7/openssl-core.h.7", + "doc/man/man7/openssl-core_dispatch.h.7", + "doc/man/man7/openssl-core_names.h.7", + "doc/man/man7/openssl-env.7", + "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", + "doc/man/man7/openssl-threads.7", + "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", + "doc/man/man7/ossl_store-file.7", + "doc/man/man7/ossl_store.7", + "doc/man/man7/passphrase-encoding.7", + "doc/man/man7/property.7", + "doc/man/man7/provider-asym_cipher.7", + "doc/man/man7/provider-base.7", + "doc/man/man7/provider-cipher.7", + "doc/man/man7/provider-decoder.7", + "doc/man/man7/provider-digest.7", + "doc/man/man7/provider-encoder.7", + "doc/man/man7/provider-kdf.7", + "doc/man/man7/provider-kem.7", + "doc/man/man7/provider-keyexch.7", + "doc/man/man7/provider-keymgmt.7", + "doc/man/man7/provider-mac.7", + "doc/man/man7/provider-object.7", + "doc/man/man7/provider-rand.7", + "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", + "doc/man/man7/provider-storemgmt.7", + "doc/man/man7/provider.7", + "doc/man/man7/proxy-certificates.7", + "doc/man/man7/x509.7" + ] + }, + "modules" => [ + "providers/fips", + "providers/legacy" + ], + "programs" => [ + "apps/openssl" + ], + "scripts" => [ + "apps/CA.pl", + "apps/tsget.pl", + "tools/c_rehash", + "util/shlib_wrap.sh", + "util/wrap.pl" + ], + "shared_sources" => {}, + "sources" => { + "apps/CA.pl" => [ + "apps/CA.pl.in" + ], + "apps/lib/libapps-lib-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/libapps-lib-app_params.o" => [ + "apps/lib/app_params.c" + ], + "apps/lib/libapps-lib-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/libapps-lib-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/libapps-lib-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/libapps-lib-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], + "apps/lib/libapps-lib-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/libapps-lib-columns.o" => [ + "apps/lib/columns.c" + ], + "apps/lib/libapps-lib-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/libapps-lib-engine_loader.o" => [ + "apps/lib/engine_loader.c" + ], + "apps/lib/libapps-lib-fmt.o" => [ + "apps/lib/fmt.c" + ], + "apps/lib/libapps-lib-http_server.o" => [ + "apps/lib/http_server.c" + ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], + "apps/lib/libapps-lib-names.o" => [ + "apps/lib/names.c" + ], + "apps/lib/libapps-lib-opt.o" => [ + "apps/lib/opt.c" + ], + "apps/lib/libapps-lib-s_cb.o" => [ + "apps/lib/s_cb.c" + ], + "apps/lib/libapps-lib-s_socket.o" => [ + "apps/lib/s_socket.c" + ], + "apps/lib/libapps-lib-tlssrp_depr.o" => [ + "apps/lib/tlssrp_depr.c" + ], + "apps/lib/openssl-bin-cmp_mock_srv.o" => [ + "apps/lib/cmp_mock_srv.c" + ], + "apps/libapps.a" => [ + "apps/lib/libapps-lib-app_libctx.o", + "apps/lib/libapps-lib-app_params.o", + "apps/lib/libapps-lib-app_provider.o", + "apps/lib/libapps-lib-app_rand.o", + "apps/lib/libapps-lib-app_x509.o", + "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", + "apps/lib/libapps-lib-apps_ui.o", + "apps/lib/libapps-lib-columns.o", + "apps/lib/libapps-lib-engine.o", + "apps/lib/libapps-lib-engine_loader.o", + "apps/lib/libapps-lib-fmt.o", + "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", + "apps/lib/libapps-lib-names.o", + "apps/lib/libapps-lib-opt.o", + "apps/lib/libapps-lib-s_cb.o", + "apps/lib/libapps-lib-s_socket.o", + "apps/lib/libapps-lib-tlssrp_depr.o" + ], + "apps/openssl" => [ + "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/openssl-bin-asn1parse.o", + "apps/openssl-bin-ca.o", + "apps/openssl-bin-ciphers.o", + "apps/openssl-bin-cmp.o", + "apps/openssl-bin-cms.o", + "apps/openssl-bin-crl.o", + "apps/openssl-bin-crl2pkcs7.o", + "apps/openssl-bin-dgst.o", + "apps/openssl-bin-dhparam.o", + "apps/openssl-bin-dsa.o", + "apps/openssl-bin-dsaparam.o", + "apps/openssl-bin-ec.o", + "apps/openssl-bin-ecparam.o", + "apps/openssl-bin-enc.o", + "apps/openssl-bin-engine.o", + "apps/openssl-bin-errstr.o", + "apps/openssl-bin-fipsinstall.o", + "apps/openssl-bin-gendsa.o", + "apps/openssl-bin-genpkey.o", + "apps/openssl-bin-genrsa.o", + "apps/openssl-bin-info.o", + "apps/openssl-bin-kdf.o", + "apps/openssl-bin-list.o", + "apps/openssl-bin-mac.o", + "apps/openssl-bin-nseq.o", + "apps/openssl-bin-ocsp.o", + "apps/openssl-bin-openssl.o", + "apps/openssl-bin-passwd.o", + "apps/openssl-bin-pkcs12.o", + "apps/openssl-bin-pkcs7.o", + "apps/openssl-bin-pkcs8.o", + "apps/openssl-bin-pkey.o", + "apps/openssl-bin-pkeyparam.o", + "apps/openssl-bin-pkeyutl.o", + "apps/openssl-bin-prime.o", + "apps/openssl-bin-progs.o", + "apps/openssl-bin-rand.o", + "apps/openssl-bin-rehash.o", + "apps/openssl-bin-req.o", + "apps/openssl-bin-rsa.o", + "apps/openssl-bin-rsautl.o", + "apps/openssl-bin-s_client.o", + "apps/openssl-bin-s_server.o", + "apps/openssl-bin-s_time.o", + "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", + "apps/openssl-bin-smime.o", + "apps/openssl-bin-speed.o", + "apps/openssl-bin-spkac.o", + "apps/openssl-bin-srp.o", + "apps/openssl-bin-storeutl.o", + "apps/openssl-bin-ts.o", + "apps/openssl-bin-verify.o", + "apps/openssl-bin-version.o", + "apps/openssl-bin-x509.o" + ], + "apps/openssl-bin-asn1parse.o" => [ + "apps/asn1parse.c" + ], + "apps/openssl-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/openssl-bin-ciphers.o" => [ + "apps/ciphers.c" + ], + "apps/openssl-bin-cmp.o" => [ + "apps/cmp.c" + ], + "apps/openssl-bin-cms.o" => [ + "apps/cms.c" + ], + "apps/openssl-bin-crl.o" => [ + "apps/crl.c" + ], + "apps/openssl-bin-crl2pkcs7.o" => [ + "apps/crl2pkcs7.c" + ], + "apps/openssl-bin-dgst.o" => [ + "apps/dgst.c" + ], + "apps/openssl-bin-dhparam.o" => [ + "apps/dhparam.c" + ], + "apps/openssl-bin-dsa.o" => [ + "apps/dsa.c" + ], + "apps/openssl-bin-dsaparam.o" => [ + "apps/dsaparam.c" + ], + "apps/openssl-bin-ec.o" => [ + "apps/ec.c" + ], + "apps/openssl-bin-ecparam.o" => [ + "apps/ecparam.c" + ], + "apps/openssl-bin-enc.o" => [ + "apps/enc.c" + ], + "apps/openssl-bin-engine.o" => [ + "apps/engine.c" + ], + "apps/openssl-bin-errstr.o" => [ + "apps/errstr.c" + ], + "apps/openssl-bin-fipsinstall.o" => [ + "apps/fipsinstall.c" + ], + "apps/openssl-bin-gendsa.o" => [ + "apps/gendsa.c" + ], + "apps/openssl-bin-genpkey.o" => [ + "apps/genpkey.c" + ], + "apps/openssl-bin-genrsa.o" => [ + "apps/genrsa.c" + ], + "apps/openssl-bin-info.o" => [ + "apps/info.c" + ], + "apps/openssl-bin-kdf.o" => [ + "apps/kdf.c" + ], + "apps/openssl-bin-list.o" => [ + "apps/list.c" + ], + "apps/openssl-bin-mac.o" => [ + "apps/mac.c" + ], + "apps/openssl-bin-nseq.o" => [ + "apps/nseq.c" + ], + "apps/openssl-bin-ocsp.o" => [ + "apps/ocsp.c" + ], + "apps/openssl-bin-openssl.o" => [ + "apps/openssl.c" + ], + "apps/openssl-bin-passwd.o" => [ + "apps/passwd.c" + ], + "apps/openssl-bin-pkcs12.o" => [ + "apps/pkcs12.c" + ], + "apps/openssl-bin-pkcs7.o" => [ + "apps/pkcs7.c" + ], + "apps/openssl-bin-pkcs8.o" => [ + "apps/pkcs8.c" + ], + "apps/openssl-bin-pkey.o" => [ + "apps/pkey.c" + ], + "apps/openssl-bin-pkeyparam.o" => [ + "apps/pkeyparam.c" + ], + "apps/openssl-bin-pkeyutl.o" => [ + "apps/pkeyutl.c" + ], + "apps/openssl-bin-prime.o" => [ + "apps/prime.c" + ], + "apps/openssl-bin-progs.o" => [ + "apps/progs.c" + ], + "apps/openssl-bin-rand.o" => [ + "apps/rand.c" + ], + "apps/openssl-bin-rehash.o" => [ + "apps/rehash.c" + ], + "apps/openssl-bin-req.o" => [ + "apps/req.c" + ], + "apps/openssl-bin-rsa.o" => [ + "apps/rsa.c" + ], + "apps/openssl-bin-rsautl.o" => [ + "apps/rsautl.c" + ], + "apps/openssl-bin-s_client.o" => [ + "apps/s_client.c" + ], + "apps/openssl-bin-s_server.o" => [ + "apps/s_server.c" + ], + "apps/openssl-bin-s_time.o" => [ + "apps/s_time.c" + ], + "apps/openssl-bin-sess_id.o" => [ + "apps/sess_id.c" + ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], + "apps/openssl-bin-smime.o" => [ + "apps/smime.c" + ], + "apps/openssl-bin-speed.o" => [ + "apps/speed.c" + ], + "apps/openssl-bin-spkac.o" => [ + "apps/spkac.c" + ], + "apps/openssl-bin-srp.o" => [ + "apps/srp.c" + ], + "apps/openssl-bin-storeutl.o" => [ + "apps/storeutl.c" + ], + "apps/openssl-bin-ts.o" => [ + "apps/ts.c" + ], + "apps/openssl-bin-verify.o" => [ + "apps/verify.c" + ], + "apps/openssl-bin-version.o" => [ + "apps/version.c" + ], + "apps/openssl-bin-x509.o" => [ + "apps/x509.c" + ], + "apps/tsget.pl" => [ + "apps/tsget.in" + ], + "crypto/aes/libcrypto-lib-aes-riscv64-zkn.o" => [ + "crypto/aes/aes-riscv64-zkn.s" + ], + "crypto/aes/libcrypto-lib-aes-riscv64-zvbb-zvkg-zvkned.o" => [ + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" + ], + "crypto/aes/libcrypto-lib-aes-riscv64-zvkb-zvkned.o" => [ + "crypto/aes/aes-riscv64-zvkb-zvkned.s" + ], + "crypto/aes/libcrypto-lib-aes-riscv64-zvkned.o" => [ + "crypto/aes/aes-riscv64-zvkned.s" + ], + "crypto/aes/libcrypto-lib-aes-riscv64.o" => [ + "crypto/aes/aes-riscv64.s" + ], + "crypto/aes/libcrypto-lib-aes_cbc.o" => [ + "crypto/aes/aes_cbc.c" + ], + "crypto/aes/libcrypto-lib-aes_cfb.o" => [ + "crypto/aes/aes_cfb.c" + ], + "crypto/aes/libcrypto-lib-aes_ecb.o" => [ + "crypto/aes/aes_ecb.c" + ], + "crypto/aes/libcrypto-lib-aes_ige.o" => [ + "crypto/aes/aes_ige.c" + ], + "crypto/aes/libcrypto-lib-aes_misc.o" => [ + "crypto/aes/aes_misc.c" + ], + "crypto/aes/libcrypto-lib-aes_ofb.o" => [ + "crypto/aes/aes_ofb.c" + ], + "crypto/aes/libcrypto-lib-aes_wrap.o" => [ + "crypto/aes/aes_wrap.c" + ], + "crypto/aes/libfips-lib-aes-riscv64-zkn.o" => [ + "crypto/aes/aes-riscv64-zkn.s" + ], + "crypto/aes/libfips-lib-aes-riscv64-zvbb-zvkg-zvkned.o" => [ + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" + ], + "crypto/aes/libfips-lib-aes-riscv64-zvkb-zvkned.o" => [ + "crypto/aes/aes-riscv64-zvkb-zvkned.s" + ], + "crypto/aes/libfips-lib-aes-riscv64-zvkned.o" => [ + "crypto/aes/aes-riscv64-zvkned.s" + ], + "crypto/aes/libfips-lib-aes-riscv64.o" => [ + "crypto/aes/aes-riscv64.s" + ], + "crypto/aes/libfips-lib-aes_cbc.o" => [ + "crypto/aes/aes_cbc.c" + ], + "crypto/aes/libfips-lib-aes_ecb.o" => [ + "crypto/aes/aes_ecb.c" + ], + "crypto/aes/libfips-lib-aes_misc.o" => [ + "crypto/aes/aes_misc.c" + ], + "crypto/aria/libcrypto-lib-aria.o" => [ + "crypto/aria/aria.c" + ], + "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ + "crypto/asn1/a_bitstr.c" + ], + "crypto/asn1/libcrypto-lib-a_d2i_fp.o" => [ + "crypto/asn1/a_d2i_fp.c" + ], + "crypto/asn1/libcrypto-lib-a_digest.o" => [ + "crypto/asn1/a_digest.c" + ], + "crypto/asn1/libcrypto-lib-a_dup.o" => [ + "crypto/asn1/a_dup.c" + ], + "crypto/asn1/libcrypto-lib-a_gentm.o" => [ + "crypto/asn1/a_gentm.c" + ], + "crypto/asn1/libcrypto-lib-a_i2d_fp.o" => [ + "crypto/asn1/a_i2d_fp.c" + ], + "crypto/asn1/libcrypto-lib-a_int.o" => [ + "crypto/asn1/a_int.c" + ], + "crypto/asn1/libcrypto-lib-a_mbstr.o" => [ + "crypto/asn1/a_mbstr.c" + ], + "crypto/asn1/libcrypto-lib-a_object.o" => [ + "crypto/asn1/a_object.c" + ], + "crypto/asn1/libcrypto-lib-a_octet.o" => [ + "crypto/asn1/a_octet.c" + ], + "crypto/asn1/libcrypto-lib-a_print.o" => [ + "crypto/asn1/a_print.c" + ], + "crypto/asn1/libcrypto-lib-a_sign.o" => [ + "crypto/asn1/a_sign.c" + ], + "crypto/asn1/libcrypto-lib-a_strex.o" => [ + "crypto/asn1/a_strex.c" + ], + "crypto/asn1/libcrypto-lib-a_strnid.o" => [ + "crypto/asn1/a_strnid.c" + ], + "crypto/asn1/libcrypto-lib-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/libcrypto-lib-a_type.o" => [ + "crypto/asn1/a_type.c" + ], + "crypto/asn1/libcrypto-lib-a_utctm.o" => [ + "crypto/asn1/a_utctm.c" + ], + "crypto/asn1/libcrypto-lib-a_utf8.o" => [ + "crypto/asn1/a_utf8.c" + ], + "crypto/asn1/libcrypto-lib-a_verify.o" => [ + "crypto/asn1/a_verify.c" + ], + "crypto/asn1/libcrypto-lib-ameth_lib.o" => [ + "crypto/asn1/ameth_lib.c" + ], + "crypto/asn1/libcrypto-lib-asn1_err.o" => [ + "crypto/asn1/asn1_err.c" + ], + "crypto/asn1/libcrypto-lib-asn1_gen.o" => [ + "crypto/asn1/asn1_gen.c" + ], + "crypto/asn1/libcrypto-lib-asn1_item_list.o" => [ + "crypto/asn1/asn1_item_list.c" + ], + "crypto/asn1/libcrypto-lib-asn1_lib.o" => [ + "crypto/asn1/asn1_lib.c" + ], + "crypto/asn1/libcrypto-lib-asn1_parse.o" => [ + "crypto/asn1/asn1_parse.c" + ], + "crypto/asn1/libcrypto-lib-asn_mime.o" => [ + "crypto/asn1/asn_mime.c" + ], + "crypto/asn1/libcrypto-lib-asn_moid.o" => [ + "crypto/asn1/asn_moid.c" + ], + "crypto/asn1/libcrypto-lib-asn_mstbl.o" => [ + "crypto/asn1/asn_mstbl.c" + ], + "crypto/asn1/libcrypto-lib-asn_pack.o" => [ + "crypto/asn1/asn_pack.c" + ], + "crypto/asn1/libcrypto-lib-bio_asn1.o" => [ + "crypto/asn1/bio_asn1.c" + ], + "crypto/asn1/libcrypto-lib-bio_ndef.o" => [ + "crypto/asn1/bio_ndef.c" + ], + "crypto/asn1/libcrypto-lib-d2i_param.o" => [ + "crypto/asn1/d2i_param.c" + ], + "crypto/asn1/libcrypto-lib-d2i_pr.o" => [ + "crypto/asn1/d2i_pr.c" + ], + "crypto/asn1/libcrypto-lib-d2i_pu.o" => [ + "crypto/asn1/d2i_pu.c" + ], + "crypto/asn1/libcrypto-lib-evp_asn1.o" => [ + "crypto/asn1/evp_asn1.c" + ], + "crypto/asn1/libcrypto-lib-f_int.o" => [ + "crypto/asn1/f_int.c" + ], + "crypto/asn1/libcrypto-lib-f_string.o" => [ + "crypto/asn1/f_string.c" + ], + "crypto/asn1/libcrypto-lib-i2d_evp.o" => [ + "crypto/asn1/i2d_evp.c" + ], + "crypto/asn1/libcrypto-lib-n_pkey.o" => [ + "crypto/asn1/n_pkey.c" + ], + "crypto/asn1/libcrypto-lib-nsseq.o" => [ + "crypto/asn1/nsseq.c" + ], + "crypto/asn1/libcrypto-lib-p5_pbe.o" => [ + "crypto/asn1/p5_pbe.c" + ], + "crypto/asn1/libcrypto-lib-p5_pbev2.o" => [ + "crypto/asn1/p5_pbev2.c" + ], + "crypto/asn1/libcrypto-lib-p5_scrypt.o" => [ + "crypto/asn1/p5_scrypt.c" + ], + "crypto/asn1/libcrypto-lib-p8_pkey.o" => [ + "crypto/asn1/p8_pkey.c" + ], + "crypto/asn1/libcrypto-lib-t_bitst.o" => [ + "crypto/asn1/t_bitst.c" + ], + "crypto/asn1/libcrypto-lib-t_pkey.o" => [ + "crypto/asn1/t_pkey.c" + ], + "crypto/asn1/libcrypto-lib-t_spki.o" => [ + "crypto/asn1/t_spki.c" + ], + "crypto/asn1/libcrypto-lib-tasn_dec.o" => [ + "crypto/asn1/tasn_dec.c" + ], + "crypto/asn1/libcrypto-lib-tasn_enc.o" => [ + "crypto/asn1/tasn_enc.c" + ], + "crypto/asn1/libcrypto-lib-tasn_fre.o" => [ + "crypto/asn1/tasn_fre.c" + ], + "crypto/asn1/libcrypto-lib-tasn_new.o" => [ + "crypto/asn1/tasn_new.c" + ], + "crypto/asn1/libcrypto-lib-tasn_prn.o" => [ + "crypto/asn1/tasn_prn.c" + ], + "crypto/asn1/libcrypto-lib-tasn_scn.o" => [ + "crypto/asn1/tasn_scn.c" + ], + "crypto/asn1/libcrypto-lib-tasn_typ.o" => [ + "crypto/asn1/tasn_typ.c" + ], + "crypto/asn1/libcrypto-lib-tasn_utl.o" => [ + "crypto/asn1/tasn_utl.c" + ], + "crypto/asn1/libcrypto-lib-x_algor.o" => [ + "crypto/asn1/x_algor.c" + ], + "crypto/asn1/libcrypto-lib-x_bignum.o" => [ + "crypto/asn1/x_bignum.c" + ], + "crypto/asn1/libcrypto-lib-x_info.o" => [ + "crypto/asn1/x_info.c" + ], + "crypto/asn1/libcrypto-lib-x_int64.o" => [ + "crypto/asn1/x_int64.c" + ], + "crypto/asn1/libcrypto-lib-x_long.o" => [ + "crypto/asn1/x_long.c" + ], + "crypto/asn1/libcrypto-lib-x_pkey.o" => [ + "crypto/asn1/x_pkey.c" + ], + "crypto/asn1/libcrypto-lib-x_sig.o" => [ + "crypto/asn1/x_sig.c" + ], + "crypto/asn1/libcrypto-lib-x_spki.o" => [ + "crypto/asn1/x_spki.c" + ], + "crypto/asn1/libcrypto-lib-x_val.o" => [ + "crypto/asn1/x_val.c" + ], + "crypto/async/arch/libcrypto-lib-async_null.o" => [ + "crypto/async/arch/async_null.c" + ], + "crypto/async/arch/libcrypto-lib-async_posix.o" => [ + "crypto/async/arch/async_posix.c" + ], + "crypto/async/arch/libcrypto-lib-async_win.o" => [ + "crypto/async/arch/async_win.c" + ], + "crypto/async/libcrypto-lib-async.o" => [ + "crypto/async/async.c" + ], + "crypto/async/libcrypto-lib-async_err.o" => [ + "crypto/async/async_err.c" + ], + "crypto/async/libcrypto-lib-async_wait.o" => [ + "crypto/async/async_wait.c" + ], + "crypto/bf/libcrypto-lib-bf_cfb64.o" => [ + "crypto/bf/bf_cfb64.c" + ], + "crypto/bf/libcrypto-lib-bf_ecb.o" => [ + "crypto/bf/bf_ecb.c" + ], + "crypto/bf/libcrypto-lib-bf_enc.o" => [ + "crypto/bf/bf_enc.c" + ], + "crypto/bf/libcrypto-lib-bf_ofb64.o" => [ + "crypto/bf/bf_ofb64.c" + ], + "crypto/bf/libcrypto-lib-bf_skey.o" => [ + "crypto/bf/bf_skey.c" + ], + "crypto/bio/libcrypto-lib-bf_buff.o" => [ + "crypto/bio/bf_buff.c" + ], + "crypto/bio/libcrypto-lib-bf_lbuf.o" => [ + "crypto/bio/bf_lbuf.c" + ], + "crypto/bio/libcrypto-lib-bf_nbio.o" => [ + "crypto/bio/bf_nbio.c" + ], + "crypto/bio/libcrypto-lib-bf_null.o" => [ + "crypto/bio/bf_null.c" + ], + "crypto/bio/libcrypto-lib-bf_prefix.o" => [ + "crypto/bio/bf_prefix.c" + ], + "crypto/bio/libcrypto-lib-bf_readbuff.o" => [ + "crypto/bio/bf_readbuff.c" + ], + "crypto/bio/libcrypto-lib-bio_addr.o" => [ + "crypto/bio/bio_addr.c" + ], + "crypto/bio/libcrypto-lib-bio_cb.o" => [ + "crypto/bio/bio_cb.c" + ], + "crypto/bio/libcrypto-lib-bio_dump.o" => [ + "crypto/bio/bio_dump.c" + ], + "crypto/bio/libcrypto-lib-bio_err.o" => [ + "crypto/bio/bio_err.c" + ], + "crypto/bio/libcrypto-lib-bio_lib.o" => [ + "crypto/bio/bio_lib.c" + ], + "crypto/bio/libcrypto-lib-bio_meth.o" => [ + "crypto/bio/bio_meth.c" + ], + "crypto/bio/libcrypto-lib-bio_print.o" => [ + "crypto/bio/bio_print.c" + ], + "crypto/bio/libcrypto-lib-bio_sock.o" => [ + "crypto/bio/bio_sock.c" + ], + "crypto/bio/libcrypto-lib-bio_sock2.o" => [ + "crypto/bio/bio_sock2.c" + ], + "crypto/bio/libcrypto-lib-bss_acpt.o" => [ + "crypto/bio/bss_acpt.c" + ], + "crypto/bio/libcrypto-lib-bss_bio.o" => [ + "crypto/bio/bss_bio.c" + ], + "crypto/bio/libcrypto-lib-bss_conn.o" => [ + "crypto/bio/bss_conn.c" + ], + "crypto/bio/libcrypto-lib-bss_core.o" => [ + "crypto/bio/bss_core.c" + ], + "crypto/bio/libcrypto-lib-bss_dgram.o" => [ + "crypto/bio/bss_dgram.c" + ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], + "crypto/bio/libcrypto-lib-bss_fd.o" => [ + "crypto/bio/bss_fd.c" + ], + "crypto/bio/libcrypto-lib-bss_file.o" => [ + "crypto/bio/bss_file.c" + ], + "crypto/bio/libcrypto-lib-bss_log.o" => [ + "crypto/bio/bss_log.c" + ], + "crypto/bio/libcrypto-lib-bss_mem.o" => [ + "crypto/bio/bss_mem.c" + ], + "crypto/bio/libcrypto-lib-bss_null.o" => [ + "crypto/bio/bss_null.c" + ], + "crypto/bio/libcrypto-lib-bss_sock.o" => [ + "crypto/bio/bss_sock.c" + ], + "crypto/bio/libcrypto-lib-ossl_core_bio.o" => [ + "crypto/bio/ossl_core_bio.c" + ], + "crypto/bn/libcrypto-lib-bn_add.o" => [ + "crypto/bn/bn_add.c" + ], + "crypto/bn/libcrypto-lib-bn_asm.o" => [ + "crypto/bn/bn_asm.c" + ], + "crypto/bn/libcrypto-lib-bn_blind.o" => [ + "crypto/bn/bn_blind.c" + ], + "crypto/bn/libcrypto-lib-bn_const.o" => [ + "crypto/bn/bn_const.c" + ], + "crypto/bn/libcrypto-lib-bn_conv.o" => [ + "crypto/bn/bn_conv.c" + ], + "crypto/bn/libcrypto-lib-bn_ctx.o" => [ + "crypto/bn/bn_ctx.c" + ], + "crypto/bn/libcrypto-lib-bn_depr.o" => [ + "crypto/bn/bn_depr.c" + ], + "crypto/bn/libcrypto-lib-bn_dh.o" => [ + "crypto/bn/bn_dh.c" + ], + "crypto/bn/libcrypto-lib-bn_div.o" => [ + "crypto/bn/bn_div.c" + ], + "crypto/bn/libcrypto-lib-bn_err.o" => [ + "crypto/bn/bn_err.c" + ], + "crypto/bn/libcrypto-lib-bn_exp.o" => [ + "crypto/bn/bn_exp.c" + ], + "crypto/bn/libcrypto-lib-bn_exp2.o" => [ + "crypto/bn/bn_exp2.c" + ], + "crypto/bn/libcrypto-lib-bn_gcd.o" => [ + "crypto/bn/bn_gcd.c" + ], + "crypto/bn/libcrypto-lib-bn_gf2m.o" => [ + "crypto/bn/bn_gf2m.c" + ], + "crypto/bn/libcrypto-lib-bn_intern.o" => [ + "crypto/bn/bn_intern.c" + ], + "crypto/bn/libcrypto-lib-bn_kron.o" => [ + "crypto/bn/bn_kron.c" + ], + "crypto/bn/libcrypto-lib-bn_lib.o" => [ + "crypto/bn/bn_lib.c" + ], + "crypto/bn/libcrypto-lib-bn_mod.o" => [ + "crypto/bn/bn_mod.c" + ], + "crypto/bn/libcrypto-lib-bn_mont.o" => [ + "crypto/bn/bn_mont.c" + ], + "crypto/bn/libcrypto-lib-bn_mpi.o" => [ + "crypto/bn/bn_mpi.c" + ], + "crypto/bn/libcrypto-lib-bn_mul.o" => [ + "crypto/bn/bn_mul.c" + ], + "crypto/bn/libcrypto-lib-bn_nist.o" => [ + "crypto/bn/bn_nist.c" + ], + "crypto/bn/libcrypto-lib-bn_prime.o" => [ + "crypto/bn/bn_prime.c" + ], + "crypto/bn/libcrypto-lib-bn_print.o" => [ + "crypto/bn/bn_print.c" + ], + "crypto/bn/libcrypto-lib-bn_rand.o" => [ + "crypto/bn/bn_rand.c" + ], + "crypto/bn/libcrypto-lib-bn_recp.o" => [ + "crypto/bn/bn_recp.c" + ], + "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o" => [ + "crypto/bn/bn_rsa_fips186_4.c" + ], + "crypto/bn/libcrypto-lib-bn_shift.o" => [ + "crypto/bn/bn_shift.c" + ], + "crypto/bn/libcrypto-lib-bn_sqr.o" => [ + "crypto/bn/bn_sqr.c" + ], + "crypto/bn/libcrypto-lib-bn_sqrt.o" => [ + "crypto/bn/bn_sqrt.c" + ], + "crypto/bn/libcrypto-lib-bn_srp.o" => [ + "crypto/bn/bn_srp.c" + ], + "crypto/bn/libcrypto-lib-bn_word.o" => [ + "crypto/bn/bn_word.c" + ], + "crypto/bn/libcrypto-lib-bn_x931p.o" => [ + "crypto/bn/bn_x931p.c" + ], + "crypto/bn/libfips-lib-bn_add.o" => [ + "crypto/bn/bn_add.c" + ], + "crypto/bn/libfips-lib-bn_asm.o" => [ + "crypto/bn/bn_asm.c" + ], + "crypto/bn/libfips-lib-bn_blind.o" => [ + "crypto/bn/bn_blind.c" + ], + "crypto/bn/libfips-lib-bn_const.o" => [ + "crypto/bn/bn_const.c" + ], + "crypto/bn/libfips-lib-bn_conv.o" => [ + "crypto/bn/bn_conv.c" + ], + "crypto/bn/libfips-lib-bn_ctx.o" => [ + "crypto/bn/bn_ctx.c" + ], + "crypto/bn/libfips-lib-bn_dh.o" => [ + "crypto/bn/bn_dh.c" + ], + "crypto/bn/libfips-lib-bn_div.o" => [ + "crypto/bn/bn_div.c" + ], + "crypto/bn/libfips-lib-bn_exp.o" => [ + "crypto/bn/bn_exp.c" + ], + "crypto/bn/libfips-lib-bn_exp2.o" => [ + "crypto/bn/bn_exp2.c" + ], + "crypto/bn/libfips-lib-bn_gcd.o" => [ + "crypto/bn/bn_gcd.c" + ], + "crypto/bn/libfips-lib-bn_gf2m.o" => [ + "crypto/bn/bn_gf2m.c" + ], + "crypto/bn/libfips-lib-bn_intern.o" => [ + "crypto/bn/bn_intern.c" + ], + "crypto/bn/libfips-lib-bn_kron.o" => [ + "crypto/bn/bn_kron.c" + ], + "crypto/bn/libfips-lib-bn_lib.o" => [ + "crypto/bn/bn_lib.c" + ], + "crypto/bn/libfips-lib-bn_mod.o" => [ + "crypto/bn/bn_mod.c" + ], + "crypto/bn/libfips-lib-bn_mont.o" => [ + "crypto/bn/bn_mont.c" + ], + "crypto/bn/libfips-lib-bn_mpi.o" => [ + "crypto/bn/bn_mpi.c" + ], + "crypto/bn/libfips-lib-bn_mul.o" => [ + "crypto/bn/bn_mul.c" + ], + "crypto/bn/libfips-lib-bn_nist.o" => [ + "crypto/bn/bn_nist.c" + ], + "crypto/bn/libfips-lib-bn_prime.o" => [ + "crypto/bn/bn_prime.c" + ], + "crypto/bn/libfips-lib-bn_rand.o" => [ + "crypto/bn/bn_rand.c" + ], + "crypto/bn/libfips-lib-bn_recp.o" => [ + "crypto/bn/bn_recp.c" + ], + "crypto/bn/libfips-lib-bn_rsa_fips186_4.o" => [ + "crypto/bn/bn_rsa_fips186_4.c" + ], + "crypto/bn/libfips-lib-bn_shift.o" => [ + "crypto/bn/bn_shift.c" + ], + "crypto/bn/libfips-lib-bn_sqr.o" => [ + "crypto/bn/bn_sqr.c" + ], + "crypto/bn/libfips-lib-bn_sqrt.o" => [ + "crypto/bn/bn_sqrt.c" + ], + "crypto/bn/libfips-lib-bn_word.o" => [ + "crypto/bn/bn_word.c" + ], + "crypto/buffer/libcrypto-lib-buf_err.o" => [ + "crypto/buffer/buf_err.c" + ], + "crypto/buffer/libcrypto-lib-buffer.o" => [ + "crypto/buffer/buffer.c" + ], + "crypto/buffer/libfips-lib-buffer.o" => [ + "crypto/buffer/buffer.c" + ], + "crypto/camellia/libcrypto-lib-camellia.o" => [ + "crypto/camellia/camellia.c" + ], + "crypto/camellia/libcrypto-lib-cmll_cbc.o" => [ + "crypto/camellia/cmll_cbc.c" + ], + "crypto/camellia/libcrypto-lib-cmll_cfb.o" => [ + "crypto/camellia/cmll_cfb.c" + ], + "crypto/camellia/libcrypto-lib-cmll_ctr.o" => [ + "crypto/camellia/cmll_ctr.c" + ], + "crypto/camellia/libcrypto-lib-cmll_ecb.o" => [ + "crypto/camellia/cmll_ecb.c" + ], + "crypto/camellia/libcrypto-lib-cmll_misc.o" => [ + "crypto/camellia/cmll_misc.c" + ], + "crypto/camellia/libcrypto-lib-cmll_ofb.o" => [ + "crypto/camellia/cmll_ofb.c" + ], + "crypto/cast/libcrypto-lib-c_cfb64.o" => [ + "crypto/cast/c_cfb64.c" + ], + "crypto/cast/libcrypto-lib-c_ecb.o" => [ + "crypto/cast/c_ecb.c" + ], + "crypto/cast/libcrypto-lib-c_enc.o" => [ + "crypto/cast/c_enc.c" + ], + "crypto/cast/libcrypto-lib-c_ofb64.o" => [ + "crypto/cast/c_ofb64.c" + ], + "crypto/cast/libcrypto-lib-c_skey.o" => [ + "crypto/cast/c_skey.c" + ], + "crypto/chacha/libcrypto-lib-chacha-riscv64-v-zbb-zvkb.o" => [ + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" + ], + "crypto/chacha/libcrypto-lib-chacha-riscv64-v-zbb.o" => [ + "crypto/chacha/chacha-riscv64-v-zbb.s" + ], + "crypto/chacha/libcrypto-lib-chacha_enc.o" => [ + "crypto/chacha/chacha_enc.c" + ], + "crypto/chacha/libcrypto-lib-chacha_riscv.o" => [ + "crypto/chacha/chacha_riscv.c" + ], + "crypto/cmac/libcrypto-lib-cmac.o" => [ + "crypto/cmac/cmac.c" + ], + "crypto/cmac/libfips-lib-cmac.o" => [ + "crypto/cmac/cmac.c" + ], + "crypto/cmp/libcrypto-lib-cmp_asn.o" => [ + "crypto/cmp/cmp_asn.c" + ], + "crypto/cmp/libcrypto-lib-cmp_client.o" => [ + "crypto/cmp/cmp_client.c" + ], + "crypto/cmp/libcrypto-lib-cmp_ctx.o" => [ + "crypto/cmp/cmp_ctx.c" + ], + "crypto/cmp/libcrypto-lib-cmp_err.o" => [ + "crypto/cmp/cmp_err.c" + ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], + "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ + "crypto/cmp/cmp_hdr.c" + ], + "crypto/cmp/libcrypto-lib-cmp_http.o" => [ + "crypto/cmp/cmp_http.c" + ], + "crypto/cmp/libcrypto-lib-cmp_msg.o" => [ + "crypto/cmp/cmp_msg.c" + ], + "crypto/cmp/libcrypto-lib-cmp_protect.o" => [ + "crypto/cmp/cmp_protect.c" + ], + "crypto/cmp/libcrypto-lib-cmp_server.o" => [ + "crypto/cmp/cmp_server.c" + ], + "crypto/cmp/libcrypto-lib-cmp_status.o" => [ + "crypto/cmp/cmp_status.c" + ], + "crypto/cmp/libcrypto-lib-cmp_util.o" => [ + "crypto/cmp/cmp_util.c" + ], + "crypto/cmp/libcrypto-lib-cmp_vfy.o" => [ + "crypto/cmp/cmp_vfy.c" + ], + "crypto/cms/libcrypto-lib-cms_asn1.o" => [ + "crypto/cms/cms_asn1.c" + ], + "crypto/cms/libcrypto-lib-cms_att.o" => [ + "crypto/cms/cms_att.c" + ], + "crypto/cms/libcrypto-lib-cms_cd.o" => [ + "crypto/cms/cms_cd.c" + ], + "crypto/cms/libcrypto-lib-cms_dd.o" => [ + "crypto/cms/cms_dd.c" + ], + "crypto/cms/libcrypto-lib-cms_dh.o" => [ + "crypto/cms/cms_dh.c" + ], + "crypto/cms/libcrypto-lib-cms_ec.o" => [ + "crypto/cms/cms_ec.c" + ], + "crypto/cms/libcrypto-lib-cms_enc.o" => [ + "crypto/cms/cms_enc.c" + ], + "crypto/cms/libcrypto-lib-cms_env.o" => [ + "crypto/cms/cms_env.c" + ], + "crypto/cms/libcrypto-lib-cms_err.o" => [ + "crypto/cms/cms_err.c" + ], + "crypto/cms/libcrypto-lib-cms_ess.o" => [ + "crypto/cms/cms_ess.c" + ], + "crypto/cms/libcrypto-lib-cms_io.o" => [ + "crypto/cms/cms_io.c" + ], + "crypto/cms/libcrypto-lib-cms_kari.o" => [ + "crypto/cms/cms_kari.c" + ], + "crypto/cms/libcrypto-lib-cms_lib.o" => [ + "crypto/cms/cms_lib.c" + ], + "crypto/cms/libcrypto-lib-cms_pwri.o" => [ + "crypto/cms/cms_pwri.c" + ], + "crypto/cms/libcrypto-lib-cms_rsa.o" => [ + "crypto/cms/cms_rsa.c" + ], + "crypto/cms/libcrypto-lib-cms_sd.o" => [ + "crypto/cms/cms_sd.c" + ], + "crypto/cms/libcrypto-lib-cms_smime.o" => [ + "crypto/cms/cms_smime.c" + ], + "crypto/comp/libcrypto-lib-c_brotli.o" => [ + "crypto/comp/c_brotli.c" + ], + "crypto/comp/libcrypto-lib-c_zlib.o" => [ + "crypto/comp/c_zlib.c" + ], + "crypto/comp/libcrypto-lib-c_zstd.o" => [ + "crypto/comp/c_zstd.c" + ], + "crypto/comp/libcrypto-lib-comp_err.o" => [ + "crypto/comp/comp_err.c" + ], + "crypto/comp/libcrypto-lib-comp_lib.o" => [ + "crypto/comp/comp_lib.c" + ], + "crypto/conf/libcrypto-lib-conf_api.o" => [ + "crypto/conf/conf_api.c" + ], + "crypto/conf/libcrypto-lib-conf_def.o" => [ + "crypto/conf/conf_def.c" + ], + "crypto/conf/libcrypto-lib-conf_err.o" => [ + "crypto/conf/conf_err.c" + ], + "crypto/conf/libcrypto-lib-conf_lib.o" => [ + "crypto/conf/conf_lib.c" + ], + "crypto/conf/libcrypto-lib-conf_mall.o" => [ + "crypto/conf/conf_mall.c" + ], + "crypto/conf/libcrypto-lib-conf_mod.o" => [ + "crypto/conf/conf_mod.c" + ], + "crypto/conf/libcrypto-lib-conf_sap.o" => [ + "crypto/conf/conf_sap.c" + ], + "crypto/conf/libcrypto-lib-conf_ssl.o" => [ + "crypto/conf/conf_ssl.c" + ], + "crypto/crmf/libcrypto-lib-crmf_asn.o" => [ + "crypto/crmf/crmf_asn.c" + ], + "crypto/crmf/libcrypto-lib-crmf_err.o" => [ + "crypto/crmf/crmf_err.c" + ], + "crypto/crmf/libcrypto-lib-crmf_lib.o" => [ + "crypto/crmf/crmf_lib.c" + ], + "crypto/crmf/libcrypto-lib-crmf_pbm.o" => [ + "crypto/crmf/crmf_pbm.c" + ], + "crypto/ct/libcrypto-lib-ct_b64.o" => [ + "crypto/ct/ct_b64.c" + ], + "crypto/ct/libcrypto-lib-ct_err.o" => [ + "crypto/ct/ct_err.c" + ], + "crypto/ct/libcrypto-lib-ct_log.o" => [ + "crypto/ct/ct_log.c" + ], + "crypto/ct/libcrypto-lib-ct_oct.o" => [ + "crypto/ct/ct_oct.c" + ], + "crypto/ct/libcrypto-lib-ct_policy.o" => [ + "crypto/ct/ct_policy.c" + ], + "crypto/ct/libcrypto-lib-ct_prn.o" => [ + "crypto/ct/ct_prn.c" + ], + "crypto/ct/libcrypto-lib-ct_sct.o" => [ + "crypto/ct/ct_sct.c" + ], + "crypto/ct/libcrypto-lib-ct_sct_ctx.o" => [ + "crypto/ct/ct_sct_ctx.c" + ], + "crypto/ct/libcrypto-lib-ct_vfy.o" => [ + "crypto/ct/ct_vfy.c" + ], + "crypto/ct/libcrypto-lib-ct_x509v3.o" => [ + "crypto/ct/ct_x509v3.c" + ], + "crypto/des/libcrypto-lib-cbc_cksm.o" => [ + "crypto/des/cbc_cksm.c" + ], + "crypto/des/libcrypto-lib-cbc_enc.o" => [ + "crypto/des/cbc_enc.c" + ], + "crypto/des/libcrypto-lib-cfb64ede.o" => [ + "crypto/des/cfb64ede.c" + ], + "crypto/des/libcrypto-lib-cfb64enc.o" => [ + "crypto/des/cfb64enc.c" + ], + "crypto/des/libcrypto-lib-cfb_enc.o" => [ + "crypto/des/cfb_enc.c" + ], + "crypto/des/libcrypto-lib-des_enc.o" => [ + "crypto/des/des_enc.c" + ], + "crypto/des/libcrypto-lib-ecb3_enc.o" => [ + "crypto/des/ecb3_enc.c" + ], + "crypto/des/libcrypto-lib-ecb_enc.o" => [ + "crypto/des/ecb_enc.c" + ], + "crypto/des/libcrypto-lib-fcrypt.o" => [ + "crypto/des/fcrypt.c" + ], + "crypto/des/libcrypto-lib-fcrypt_b.o" => [ + "crypto/des/fcrypt_b.c" + ], + "crypto/des/libcrypto-lib-ofb64ede.o" => [ + "crypto/des/ofb64ede.c" + ], + "crypto/des/libcrypto-lib-ofb64enc.o" => [ + "crypto/des/ofb64enc.c" + ], + "crypto/des/libcrypto-lib-ofb_enc.o" => [ + "crypto/des/ofb_enc.c" + ], + "crypto/des/libcrypto-lib-pcbc_enc.o" => [ + "crypto/des/pcbc_enc.c" + ], + "crypto/des/libcrypto-lib-qud_cksm.o" => [ + "crypto/des/qud_cksm.c" + ], + "crypto/des/libcrypto-lib-rand_key.o" => [ + "crypto/des/rand_key.c" + ], + "crypto/des/libcrypto-lib-set_key.o" => [ + "crypto/des/set_key.c" + ], + "crypto/des/libcrypto-lib-str2key.o" => [ + "crypto/des/str2key.c" + ], + "crypto/des/libcrypto-lib-xcbc_enc.o" => [ + "crypto/des/xcbc_enc.c" + ], + "crypto/des/libfips-lib-des_enc.o" => [ + "crypto/des/des_enc.c" + ], + "crypto/des/libfips-lib-ecb3_enc.o" => [ + "crypto/des/ecb3_enc.c" + ], + "crypto/des/libfips-lib-fcrypt_b.o" => [ + "crypto/des/fcrypt_b.c" + ], + "crypto/des/libfips-lib-set_key.o" => [ + "crypto/des/set_key.c" + ], + "crypto/dh/libcrypto-lib-dh_ameth.o" => [ + "crypto/dh/dh_ameth.c" + ], + "crypto/dh/libcrypto-lib-dh_asn1.o" => [ + "crypto/dh/dh_asn1.c" + ], + "crypto/dh/libcrypto-lib-dh_backend.o" => [ + "crypto/dh/dh_backend.c" + ], + "crypto/dh/libcrypto-lib-dh_check.o" => [ + "crypto/dh/dh_check.c" + ], + "crypto/dh/libcrypto-lib-dh_depr.o" => [ + "crypto/dh/dh_depr.c" + ], + "crypto/dh/libcrypto-lib-dh_err.o" => [ + "crypto/dh/dh_err.c" + ], + "crypto/dh/libcrypto-lib-dh_gen.o" => [ + "crypto/dh/dh_gen.c" + ], + "crypto/dh/libcrypto-lib-dh_group_params.o" => [ + "crypto/dh/dh_group_params.c" + ], + "crypto/dh/libcrypto-lib-dh_kdf.o" => [ + "crypto/dh/dh_kdf.c" + ], + "crypto/dh/libcrypto-lib-dh_key.o" => [ + "crypto/dh/dh_key.c" + ], + "crypto/dh/libcrypto-lib-dh_lib.o" => [ + "crypto/dh/dh_lib.c" + ], + "crypto/dh/libcrypto-lib-dh_meth.o" => [ + "crypto/dh/dh_meth.c" + ], + "crypto/dh/libcrypto-lib-dh_pmeth.o" => [ + "crypto/dh/dh_pmeth.c" + ], + "crypto/dh/libcrypto-lib-dh_prn.o" => [ + "crypto/dh/dh_prn.c" + ], + "crypto/dh/libcrypto-lib-dh_rfc5114.o" => [ + "crypto/dh/dh_rfc5114.c" + ], + "crypto/dh/libfips-lib-dh_backend.o" => [ + "crypto/dh/dh_backend.c" + ], + "crypto/dh/libfips-lib-dh_check.o" => [ + "crypto/dh/dh_check.c" + ], + "crypto/dh/libfips-lib-dh_gen.o" => [ + "crypto/dh/dh_gen.c" + ], + "crypto/dh/libfips-lib-dh_group_params.o" => [ + "crypto/dh/dh_group_params.c" + ], + "crypto/dh/libfips-lib-dh_kdf.o" => [ + "crypto/dh/dh_kdf.c" + ], + "crypto/dh/libfips-lib-dh_key.o" => [ + "crypto/dh/dh_key.c" + ], + "crypto/dh/libfips-lib-dh_lib.o" => [ + "crypto/dh/dh_lib.c" + ], + "crypto/dsa/libcrypto-lib-dsa_ameth.o" => [ + "crypto/dsa/dsa_ameth.c" + ], + "crypto/dsa/libcrypto-lib-dsa_asn1.o" => [ + "crypto/dsa/dsa_asn1.c" + ], + "crypto/dsa/libcrypto-lib-dsa_backend.o" => [ + "crypto/dsa/dsa_backend.c" + ], + "crypto/dsa/libcrypto-lib-dsa_check.o" => [ + "crypto/dsa/dsa_check.c" + ], + "crypto/dsa/libcrypto-lib-dsa_depr.o" => [ + "crypto/dsa/dsa_depr.c" + ], + "crypto/dsa/libcrypto-lib-dsa_err.o" => [ + "crypto/dsa/dsa_err.c" + ], + "crypto/dsa/libcrypto-lib-dsa_gen.o" => [ + "crypto/dsa/dsa_gen.c" + ], + "crypto/dsa/libcrypto-lib-dsa_key.o" => [ + "crypto/dsa/dsa_key.c" + ], + "crypto/dsa/libcrypto-lib-dsa_lib.o" => [ + "crypto/dsa/dsa_lib.c" + ], + "crypto/dsa/libcrypto-lib-dsa_meth.o" => [ + "crypto/dsa/dsa_meth.c" + ], + "crypto/dsa/libcrypto-lib-dsa_ossl.o" => [ + "crypto/dsa/dsa_ossl.c" + ], + "crypto/dsa/libcrypto-lib-dsa_pmeth.o" => [ + "crypto/dsa/dsa_pmeth.c" + ], + "crypto/dsa/libcrypto-lib-dsa_prn.o" => [ + "crypto/dsa/dsa_prn.c" + ], + "crypto/dsa/libcrypto-lib-dsa_sign.o" => [ + "crypto/dsa/dsa_sign.c" + ], + "crypto/dsa/libcrypto-lib-dsa_vrf.o" => [ + "crypto/dsa/dsa_vrf.c" + ], + "crypto/dsa/libfips-lib-dsa_backend.o" => [ + "crypto/dsa/dsa_backend.c" + ], + "crypto/dsa/libfips-lib-dsa_check.o" => [ + "crypto/dsa/dsa_check.c" + ], + "crypto/dsa/libfips-lib-dsa_gen.o" => [ + "crypto/dsa/dsa_gen.c" + ], + "crypto/dsa/libfips-lib-dsa_key.o" => [ + "crypto/dsa/dsa_key.c" + ], + "crypto/dsa/libfips-lib-dsa_lib.o" => [ + "crypto/dsa/dsa_lib.c" + ], + "crypto/dsa/libfips-lib-dsa_ossl.o" => [ + "crypto/dsa/dsa_ossl.c" + ], + "crypto/dsa/libfips-lib-dsa_sign.o" => [ + "crypto/dsa/dsa_sign.c" + ], + "crypto/dsa/libfips-lib-dsa_vrf.o" => [ + "crypto/dsa/dsa_vrf.c" + ], + "crypto/dso/libcrypto-lib-dso_dl.o" => [ + "crypto/dso/dso_dl.c" + ], + "crypto/dso/libcrypto-lib-dso_dlfcn.o" => [ + "crypto/dso/dso_dlfcn.c" + ], + "crypto/dso/libcrypto-lib-dso_err.o" => [ + "crypto/dso/dso_err.c" + ], + "crypto/dso/libcrypto-lib-dso_lib.o" => [ + "crypto/dso/dso_lib.c" + ], + "crypto/dso/libcrypto-lib-dso_openssl.o" => [ + "crypto/dso/dso_openssl.c" + ], + "crypto/dso/libcrypto-lib-dso_vms.o" => [ + "crypto/dso/dso_vms.c" + ], + "crypto/dso/libcrypto-lib-dso_win32.o" => [ + "crypto/dso/dso_win32.c" + ], + "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o" => [ + "crypto/ec/curve448/arch_32/f_impl32.c" + ], + "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o" => [ + "crypto/ec/curve448/arch_32/f_impl32.c" + ], + "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o" => [ + "crypto/ec/curve448/arch_64/f_impl64.c" + ], + "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o" => [ + "crypto/ec/curve448/arch_64/f_impl64.c" + ], + "crypto/ec/curve448/libcrypto-lib-curve448.o" => [ + "crypto/ec/curve448/curve448.c" + ], + "crypto/ec/curve448/libcrypto-lib-curve448_tables.o" => [ + "crypto/ec/curve448/curve448_tables.c" + ], + "crypto/ec/curve448/libcrypto-lib-eddsa.o" => [ + "crypto/ec/curve448/eddsa.c" + ], + "crypto/ec/curve448/libcrypto-lib-f_generic.o" => [ + "crypto/ec/curve448/f_generic.c" + ], + "crypto/ec/curve448/libcrypto-lib-scalar.o" => [ + "crypto/ec/curve448/scalar.c" + ], + "crypto/ec/curve448/libfips-lib-curve448.o" => [ + "crypto/ec/curve448/curve448.c" + ], + "crypto/ec/curve448/libfips-lib-curve448_tables.o" => [ + "crypto/ec/curve448/curve448_tables.c" + ], + "crypto/ec/curve448/libfips-lib-eddsa.o" => [ + "crypto/ec/curve448/eddsa.c" + ], + "crypto/ec/curve448/libfips-lib-f_generic.o" => [ + "crypto/ec/curve448/f_generic.c" + ], + "crypto/ec/curve448/libfips-lib-scalar.o" => [ + "crypto/ec/curve448/scalar.c" + ], + "crypto/ec/libcrypto-lib-curve25519.o" => [ + "crypto/ec/curve25519.c" + ], + "crypto/ec/libcrypto-lib-ec2_oct.o" => [ + "crypto/ec/ec2_oct.c" + ], + "crypto/ec/libcrypto-lib-ec2_smpl.o" => [ + "crypto/ec/ec2_smpl.c" + ], + "crypto/ec/libcrypto-lib-ec_ameth.o" => [ + "crypto/ec/ec_ameth.c" + ], + "crypto/ec/libcrypto-lib-ec_asn1.o" => [ + "crypto/ec/ec_asn1.c" + ], + "crypto/ec/libcrypto-lib-ec_backend.o" => [ + "crypto/ec/ec_backend.c" + ], + "crypto/ec/libcrypto-lib-ec_check.o" => [ + "crypto/ec/ec_check.c" + ], + "crypto/ec/libcrypto-lib-ec_curve.o" => [ + "crypto/ec/ec_curve.c" + ], + "crypto/ec/libcrypto-lib-ec_cvt.o" => [ + "crypto/ec/ec_cvt.c" + ], + "crypto/ec/libcrypto-lib-ec_deprecated.o" => [ + "crypto/ec/ec_deprecated.c" + ], + "crypto/ec/libcrypto-lib-ec_err.o" => [ + "crypto/ec/ec_err.c" + ], + "crypto/ec/libcrypto-lib-ec_key.o" => [ + "crypto/ec/ec_key.c" + ], + "crypto/ec/libcrypto-lib-ec_kmeth.o" => [ + "crypto/ec/ec_kmeth.c" + ], + "crypto/ec/libcrypto-lib-ec_lib.o" => [ + "crypto/ec/ec_lib.c" + ], + "crypto/ec/libcrypto-lib-ec_mult.o" => [ + "crypto/ec/ec_mult.c" + ], + "crypto/ec/libcrypto-lib-ec_oct.o" => [ + "crypto/ec/ec_oct.c" + ], + "crypto/ec/libcrypto-lib-ec_pmeth.o" => [ + "crypto/ec/ec_pmeth.c" + ], + "crypto/ec/libcrypto-lib-ec_print.o" => [ + "crypto/ec/ec_print.c" + ], + "crypto/ec/libcrypto-lib-ecdh_kdf.o" => [ + "crypto/ec/ecdh_kdf.c" + ], + "crypto/ec/libcrypto-lib-ecdh_ossl.o" => [ + "crypto/ec/ecdh_ossl.c" + ], + "crypto/ec/libcrypto-lib-ecdsa_ossl.o" => [ + "crypto/ec/ecdsa_ossl.c" + ], + "crypto/ec/libcrypto-lib-ecdsa_sign.o" => [ + "crypto/ec/ecdsa_sign.c" + ], + "crypto/ec/libcrypto-lib-ecdsa_vrf.o" => [ + "crypto/ec/ecdsa_vrf.c" + ], + "crypto/ec/libcrypto-lib-eck_prn.o" => [ + "crypto/ec/eck_prn.c" + ], + "crypto/ec/libcrypto-lib-ecp_mont.o" => [ + "crypto/ec/ecp_mont.c" + ], + "crypto/ec/libcrypto-lib-ecp_nist.o" => [ + "crypto/ec/ecp_nist.c" + ], + "crypto/ec/libcrypto-lib-ecp_oct.o" => [ + "crypto/ec/ecp_oct.c" + ], + "crypto/ec/libcrypto-lib-ecp_smpl.o" => [ + "crypto/ec/ecp_smpl.c" + ], + "crypto/ec/libcrypto-lib-ecx_backend.o" => [ + "crypto/ec/ecx_backend.c" + ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto/ec/ecx_key.c" + ], + "crypto/ec/libcrypto-lib-ecx_meth.o" => [ + "crypto/ec/ecx_meth.c" + ], + "crypto/ec/libfips-lib-curve25519.o" => [ + "crypto/ec/curve25519.c" + ], + "crypto/ec/libfips-lib-ec2_oct.o" => [ + "crypto/ec/ec2_oct.c" + ], + "crypto/ec/libfips-lib-ec2_smpl.o" => [ + "crypto/ec/ec2_smpl.c" + ], + "crypto/ec/libfips-lib-ec_asn1.o" => [ + "crypto/ec/ec_asn1.c" + ], + "crypto/ec/libfips-lib-ec_backend.o" => [ + "crypto/ec/ec_backend.c" + ], + "crypto/ec/libfips-lib-ec_check.o" => [ + "crypto/ec/ec_check.c" + ], + "crypto/ec/libfips-lib-ec_curve.o" => [ + "crypto/ec/ec_curve.c" + ], + "crypto/ec/libfips-lib-ec_cvt.o" => [ + "crypto/ec/ec_cvt.c" + ], + "crypto/ec/libfips-lib-ec_key.o" => [ + "crypto/ec/ec_key.c" + ], + "crypto/ec/libfips-lib-ec_kmeth.o" => [ + "crypto/ec/ec_kmeth.c" + ], + "crypto/ec/libfips-lib-ec_lib.o" => [ + "crypto/ec/ec_lib.c" + ], + "crypto/ec/libfips-lib-ec_mult.o" => [ + "crypto/ec/ec_mult.c" + ], + "crypto/ec/libfips-lib-ec_oct.o" => [ + "crypto/ec/ec_oct.c" + ], + "crypto/ec/libfips-lib-ecdh_kdf.o" => [ + "crypto/ec/ecdh_kdf.c" + ], + "crypto/ec/libfips-lib-ecdh_ossl.o" => [ + "crypto/ec/ecdh_ossl.c" + ], + "crypto/ec/libfips-lib-ecdsa_ossl.o" => [ + "crypto/ec/ecdsa_ossl.c" + ], + "crypto/ec/libfips-lib-ecdsa_sign.o" => [ + "crypto/ec/ecdsa_sign.c" + ], + "crypto/ec/libfips-lib-ecdsa_vrf.o" => [ + "crypto/ec/ecdsa_vrf.c" + ], + "crypto/ec/libfips-lib-ecp_mont.o" => [ + "crypto/ec/ecp_mont.c" + ], + "crypto/ec/libfips-lib-ecp_nist.o" => [ + "crypto/ec/ecp_nist.c" + ], + "crypto/ec/libfips-lib-ecp_oct.o" => [ + "crypto/ec/ecp_oct.c" + ], + "crypto/ec/libfips-lib-ecp_smpl.o" => [ + "crypto/ec/ecp_smpl.c" + ], + "crypto/ec/libfips-lib-ecx_backend.o" => [ + "crypto/ec/ecx_backend.c" + ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto/ec/ecx_key.c" + ], + "crypto/encode_decode/libcrypto-lib-decoder_err.o" => [ + "crypto/encode_decode/decoder_err.c" + ], + "crypto/encode_decode/libcrypto-lib-decoder_lib.o" => [ + "crypto/encode_decode/decoder_lib.c" + ], + "crypto/encode_decode/libcrypto-lib-decoder_meth.o" => [ + "crypto/encode_decode/decoder_meth.c" + ], + "crypto/encode_decode/libcrypto-lib-decoder_pkey.o" => [ + "crypto/encode_decode/decoder_pkey.c" + ], + "crypto/encode_decode/libcrypto-lib-encoder_err.o" => [ + "crypto/encode_decode/encoder_err.c" + ], + "crypto/encode_decode/libcrypto-lib-encoder_lib.o" => [ + "crypto/encode_decode/encoder_lib.c" + ], + "crypto/encode_decode/libcrypto-lib-encoder_meth.o" => [ + "crypto/encode_decode/encoder_meth.c" + ], + "crypto/encode_decode/libcrypto-lib-encoder_pkey.o" => [ + "crypto/encode_decode/encoder_pkey.c" + ], + "crypto/engine/libcrypto-lib-eng_all.o" => [ + "crypto/engine/eng_all.c" + ], + "crypto/engine/libcrypto-lib-eng_cnf.o" => [ + "crypto/engine/eng_cnf.c" + ], + "crypto/engine/libcrypto-lib-eng_ctrl.o" => [ + "crypto/engine/eng_ctrl.c" + ], + "crypto/engine/libcrypto-lib-eng_dyn.o" => [ + "crypto/engine/eng_dyn.c" + ], + "crypto/engine/libcrypto-lib-eng_err.o" => [ + "crypto/engine/eng_err.c" + ], + "crypto/engine/libcrypto-lib-eng_fat.o" => [ + "crypto/engine/eng_fat.c" + ], + "crypto/engine/libcrypto-lib-eng_init.o" => [ + "crypto/engine/eng_init.c" + ], + "crypto/engine/libcrypto-lib-eng_lib.o" => [ + "crypto/engine/eng_lib.c" + ], + "crypto/engine/libcrypto-lib-eng_list.o" => [ + "crypto/engine/eng_list.c" + ], + "crypto/engine/libcrypto-lib-eng_openssl.o" => [ + "crypto/engine/eng_openssl.c" + ], + "crypto/engine/libcrypto-lib-eng_pkey.o" => [ + "crypto/engine/eng_pkey.c" + ], + "crypto/engine/libcrypto-lib-eng_rdrand.o" => [ + "crypto/engine/eng_rdrand.c" + ], + "crypto/engine/libcrypto-lib-eng_table.o" => [ + "crypto/engine/eng_table.c" + ], + "crypto/engine/libcrypto-lib-tb_asnmth.o" => [ + "crypto/engine/tb_asnmth.c" + ], + "crypto/engine/libcrypto-lib-tb_cipher.o" => [ + "crypto/engine/tb_cipher.c" + ], + "crypto/engine/libcrypto-lib-tb_dh.o" => [ + "crypto/engine/tb_dh.c" + ], + "crypto/engine/libcrypto-lib-tb_digest.o" => [ + "crypto/engine/tb_digest.c" + ], + "crypto/engine/libcrypto-lib-tb_dsa.o" => [ + "crypto/engine/tb_dsa.c" + ], + "crypto/engine/libcrypto-lib-tb_eckey.o" => [ + "crypto/engine/tb_eckey.c" + ], + "crypto/engine/libcrypto-lib-tb_pkmeth.o" => [ + "crypto/engine/tb_pkmeth.c" + ], + "crypto/engine/libcrypto-lib-tb_rand.o" => [ + "crypto/engine/tb_rand.c" + ], + "crypto/engine/libcrypto-lib-tb_rsa.o" => [ + "crypto/engine/tb_rsa.c" + ], + "crypto/err/libcrypto-lib-err.o" => [ + "crypto/err/err.c" + ], + "crypto/err/libcrypto-lib-err_all.o" => [ + "crypto/err/err_all.c" + ], + "crypto/err/libcrypto-lib-err_all_legacy.o" => [ + "crypto/err/err_all_legacy.c" + ], + "crypto/err/libcrypto-lib-err_blocks.o" => [ + "crypto/err/err_blocks.c" + ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], + "crypto/err/libcrypto-lib-err_prn.o" => [ + "crypto/err/err_prn.c" + ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], + "crypto/ess/libcrypto-lib-ess_asn1.o" => [ + "crypto/ess/ess_asn1.c" + ], + "crypto/ess/libcrypto-lib-ess_err.o" => [ + "crypto/ess/ess_err.c" + ], + "crypto/ess/libcrypto-lib-ess_lib.o" => [ + "crypto/ess/ess_lib.c" + ], + "crypto/evp/libcrypto-lib-asymcipher.o" => [ + "crypto/evp/asymcipher.c" + ], + "crypto/evp/libcrypto-lib-bio_b64.o" => [ + "crypto/evp/bio_b64.c" + ], + "crypto/evp/libcrypto-lib-bio_enc.o" => [ + "crypto/evp/bio_enc.c" + ], + "crypto/evp/libcrypto-lib-bio_md.o" => [ + "crypto/evp/bio_md.c" + ], + "crypto/evp/libcrypto-lib-bio_ok.o" => [ + "crypto/evp/bio_ok.c" + ], + "crypto/evp/libcrypto-lib-c_allc.o" => [ + "crypto/evp/c_allc.c" + ], + "crypto/evp/libcrypto-lib-c_alld.o" => [ + "crypto/evp/c_alld.c" + ], + "crypto/evp/libcrypto-lib-cmeth_lib.o" => [ + "crypto/evp/cmeth_lib.c" + ], + "crypto/evp/libcrypto-lib-ctrl_params_translate.o" => [ + "crypto/evp/ctrl_params_translate.c" + ], + "crypto/evp/libcrypto-lib-dh_ctrl.o" => [ + "crypto/evp/dh_ctrl.c" + ], + "crypto/evp/libcrypto-lib-dh_support.o" => [ + "crypto/evp/dh_support.c" + ], + "crypto/evp/libcrypto-lib-digest.o" => [ + "crypto/evp/digest.c" + ], + "crypto/evp/libcrypto-lib-dsa_ctrl.o" => [ + "crypto/evp/dsa_ctrl.c" + ], + "crypto/evp/libcrypto-lib-e_aes.o" => [ + "crypto/evp/e_aes.c" + ], + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o" => [ + "crypto/evp/e_aes_cbc_hmac_sha1.c" + ], + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o" => [ + "crypto/evp/e_aes_cbc_hmac_sha256.c" + ], + "crypto/evp/libcrypto-lib-e_aria.o" => [ + "crypto/evp/e_aria.c" + ], + "crypto/evp/libcrypto-lib-e_bf.o" => [ + "crypto/evp/e_bf.c" + ], + "crypto/evp/libcrypto-lib-e_camellia.o" => [ + "crypto/evp/e_camellia.c" + ], + "crypto/evp/libcrypto-lib-e_cast.o" => [ + "crypto/evp/e_cast.c" + ], + "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o" => [ + "crypto/evp/e_chacha20_poly1305.c" + ], + "crypto/evp/libcrypto-lib-e_des.o" => [ + "crypto/evp/e_des.c" + ], + "crypto/evp/libcrypto-lib-e_des3.o" => [ + "crypto/evp/e_des3.c" + ], + "crypto/evp/libcrypto-lib-e_idea.o" => [ + "crypto/evp/e_idea.c" + ], + "crypto/evp/libcrypto-lib-e_null.o" => [ + "crypto/evp/e_null.c" + ], + "crypto/evp/libcrypto-lib-e_old.o" => [ + "crypto/evp/e_old.c" + ], + "crypto/evp/libcrypto-lib-e_rc2.o" => [ + "crypto/evp/e_rc2.c" + ], + "crypto/evp/libcrypto-lib-e_rc4.o" => [ + "crypto/evp/e_rc4.c" + ], + "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o" => [ + "crypto/evp/e_rc4_hmac_md5.c" + ], + "crypto/evp/libcrypto-lib-e_rc5.o" => [ + "crypto/evp/e_rc5.c" + ], + "crypto/evp/libcrypto-lib-e_seed.o" => [ + "crypto/evp/e_seed.c" + ], + "crypto/evp/libcrypto-lib-e_sm4.o" => [ + "crypto/evp/e_sm4.c" + ], + "crypto/evp/libcrypto-lib-e_xcbc_d.o" => [ + "crypto/evp/e_xcbc_d.c" + ], + "crypto/evp/libcrypto-lib-ec_ctrl.o" => [ + "crypto/evp/ec_ctrl.c" + ], + "crypto/evp/libcrypto-lib-ec_support.o" => [ + "crypto/evp/ec_support.c" + ], + "crypto/evp/libcrypto-lib-encode.o" => [ + "crypto/evp/encode.c" + ], + "crypto/evp/libcrypto-lib-evp_cnf.o" => [ + "crypto/evp/evp_cnf.c" + ], + "crypto/evp/libcrypto-lib-evp_enc.o" => [ + "crypto/evp/evp_enc.c" + ], + "crypto/evp/libcrypto-lib-evp_err.o" => [ + "crypto/evp/evp_err.c" + ], + "crypto/evp/libcrypto-lib-evp_fetch.o" => [ + "crypto/evp/evp_fetch.c" + ], + "crypto/evp/libcrypto-lib-evp_key.o" => [ + "crypto/evp/evp_key.c" + ], + "crypto/evp/libcrypto-lib-evp_lib.o" => [ + "crypto/evp/evp_lib.c" + ], + "crypto/evp/libcrypto-lib-evp_pbe.o" => [ + "crypto/evp/evp_pbe.c" + ], + "crypto/evp/libcrypto-lib-evp_pkey.o" => [ + "crypto/evp/evp_pkey.c" + ], + "crypto/evp/libcrypto-lib-evp_rand.o" => [ + "crypto/evp/evp_rand.c" + ], + "crypto/evp/libcrypto-lib-evp_utils.o" => [ + "crypto/evp/evp_utils.c" + ], + "crypto/evp/libcrypto-lib-exchange.o" => [ + "crypto/evp/exchange.c" + ], + "crypto/evp/libcrypto-lib-kdf_lib.o" => [ + "crypto/evp/kdf_lib.c" + ], + "crypto/evp/libcrypto-lib-kdf_meth.o" => [ + "crypto/evp/kdf_meth.c" + ], + "crypto/evp/libcrypto-lib-kem.o" => [ + "crypto/evp/kem.c" + ], + "crypto/evp/libcrypto-lib-keymgmt_lib.o" => [ + "crypto/evp/keymgmt_lib.c" + ], + "crypto/evp/libcrypto-lib-keymgmt_meth.o" => [ + "crypto/evp/keymgmt_meth.c" + ], + "crypto/evp/libcrypto-lib-legacy_blake2.o" => [ + "crypto/evp/legacy_blake2.c" + ], + "crypto/evp/libcrypto-lib-legacy_md4.o" => [ + "crypto/evp/legacy_md4.c" + ], + "crypto/evp/libcrypto-lib-legacy_md5.o" => [ + "crypto/evp/legacy_md5.c" + ], + "crypto/evp/libcrypto-lib-legacy_md5_sha1.o" => [ + "crypto/evp/legacy_md5_sha1.c" + ], + "crypto/evp/libcrypto-lib-legacy_mdc2.o" => [ + "crypto/evp/legacy_mdc2.c" + ], + "crypto/evp/libcrypto-lib-legacy_ripemd.o" => [ + "crypto/evp/legacy_ripemd.c" + ], + "crypto/evp/libcrypto-lib-legacy_sha.o" => [ + "crypto/evp/legacy_sha.c" + ], + "crypto/evp/libcrypto-lib-legacy_wp.o" => [ + "crypto/evp/legacy_wp.c" + ], + "crypto/evp/libcrypto-lib-m_null.o" => [ + "crypto/evp/m_null.c" + ], + "crypto/evp/libcrypto-lib-m_sigver.o" => [ + "crypto/evp/m_sigver.c" + ], + "crypto/evp/libcrypto-lib-mac_lib.o" => [ + "crypto/evp/mac_lib.c" + ], + "crypto/evp/libcrypto-lib-mac_meth.o" => [ + "crypto/evp/mac_meth.c" + ], + "crypto/evp/libcrypto-lib-names.o" => [ + "crypto/evp/names.c" + ], + "crypto/evp/libcrypto-lib-p5_crpt.o" => [ + "crypto/evp/p5_crpt.c" + ], + "crypto/evp/libcrypto-lib-p5_crpt2.o" => [ + "crypto/evp/p5_crpt2.c" + ], + "crypto/evp/libcrypto-lib-p_dec.o" => [ + "crypto/evp/p_dec.c" + ], + "crypto/evp/libcrypto-lib-p_enc.o" => [ + "crypto/evp/p_enc.c" + ], + "crypto/evp/libcrypto-lib-p_legacy.o" => [ + "crypto/evp/p_legacy.c" + ], + "crypto/evp/libcrypto-lib-p_lib.o" => [ + "crypto/evp/p_lib.c" + ], + "crypto/evp/libcrypto-lib-p_open.o" => [ + "crypto/evp/p_open.c" + ], + "crypto/evp/libcrypto-lib-p_seal.o" => [ + "crypto/evp/p_seal.c" + ], + "crypto/evp/libcrypto-lib-p_sign.o" => [ + "crypto/evp/p_sign.c" + ], + "crypto/evp/libcrypto-lib-p_verify.o" => [ + "crypto/evp/p_verify.c" + ], + "crypto/evp/libcrypto-lib-pbe_scrypt.o" => [ + "crypto/evp/pbe_scrypt.c" + ], + "crypto/evp/libcrypto-lib-pmeth_check.o" => [ + "crypto/evp/pmeth_check.c" + ], + "crypto/evp/libcrypto-lib-pmeth_gn.o" => [ + "crypto/evp/pmeth_gn.c" + ], + "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ + "crypto/evp/pmeth_lib.c" + ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], + "crypto/evp/libcrypto-lib-signature.o" => [ + "crypto/evp/signature.c" + ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], + "crypto/evp/libfips-lib-asymcipher.o" => [ + "crypto/evp/asymcipher.c" + ], + "crypto/evp/libfips-lib-dh_support.o" => [ + "crypto/evp/dh_support.c" + ], + "crypto/evp/libfips-lib-digest.o" => [ + "crypto/evp/digest.c" + ], + "crypto/evp/libfips-lib-ec_support.o" => [ + "crypto/evp/ec_support.c" + ], + "crypto/evp/libfips-lib-evp_enc.o" => [ + "crypto/evp/evp_enc.c" + ], + "crypto/evp/libfips-lib-evp_fetch.o" => [ + "crypto/evp/evp_fetch.c" + ], + "crypto/evp/libfips-lib-evp_lib.o" => [ + "crypto/evp/evp_lib.c" + ], + "crypto/evp/libfips-lib-evp_rand.o" => [ + "crypto/evp/evp_rand.c" + ], + "crypto/evp/libfips-lib-evp_utils.o" => [ + "crypto/evp/evp_utils.c" + ], + "crypto/evp/libfips-lib-exchange.o" => [ + "crypto/evp/exchange.c" + ], + "crypto/evp/libfips-lib-kdf_lib.o" => [ + "crypto/evp/kdf_lib.c" + ], + "crypto/evp/libfips-lib-kdf_meth.o" => [ + "crypto/evp/kdf_meth.c" + ], + "crypto/evp/libfips-lib-kem.o" => [ + "crypto/evp/kem.c" + ], + "crypto/evp/libfips-lib-keymgmt_lib.o" => [ + "crypto/evp/keymgmt_lib.c" + ], + "crypto/evp/libfips-lib-keymgmt_meth.o" => [ + "crypto/evp/keymgmt_meth.c" + ], + "crypto/evp/libfips-lib-mac_lib.o" => [ + "crypto/evp/mac_lib.c" + ], + "crypto/evp/libfips-lib-mac_meth.o" => [ + "crypto/evp/mac_meth.c" + ], + "crypto/evp/libfips-lib-p_lib.o" => [ + "crypto/evp/p_lib.c" + ], + "crypto/evp/libfips-lib-pmeth_check.o" => [ + "crypto/evp/pmeth_check.c" + ], + "crypto/evp/libfips-lib-pmeth_gn.o" => [ + "crypto/evp/pmeth_gn.c" + ], + "crypto/evp/libfips-lib-pmeth_lib.o" => [ + "crypto/evp/pmeth_lib.c" + ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], + "crypto/evp/libfips-lib-signature.o" => [ + "crypto/evp/signature.c" + ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], + "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ + "crypto/ffc/ffc_backend.c" + ], + "crypto/ffc/libcrypto-lib-ffc_dh.o" => [ + "crypto/ffc/ffc_dh.c" + ], + "crypto/ffc/libcrypto-lib-ffc_key_generate.o" => [ + "crypto/ffc/ffc_key_generate.c" + ], + "crypto/ffc/libcrypto-lib-ffc_key_validate.o" => [ + "crypto/ffc/ffc_key_validate.c" + ], + "crypto/ffc/libcrypto-lib-ffc_params.o" => [ + "crypto/ffc/ffc_params.c" + ], + "crypto/ffc/libcrypto-lib-ffc_params_generate.o" => [ + "crypto/ffc/ffc_params_generate.c" + ], + "crypto/ffc/libcrypto-lib-ffc_params_validate.o" => [ + "crypto/ffc/ffc_params_validate.c" + ], + "crypto/ffc/libfips-lib-ffc_backend.o" => [ + "crypto/ffc/ffc_backend.c" + ], + "crypto/ffc/libfips-lib-ffc_dh.o" => [ + "crypto/ffc/ffc_dh.c" + ], + "crypto/ffc/libfips-lib-ffc_key_generate.o" => [ + "crypto/ffc/ffc_key_generate.c" + ], + "crypto/ffc/libfips-lib-ffc_key_validate.o" => [ + "crypto/ffc/ffc_key_validate.c" + ], + "crypto/ffc/libfips-lib-ffc_params.o" => [ + "crypto/ffc/ffc_params.c" + ], + "crypto/ffc/libfips-lib-ffc_params_generate.o" => [ + "crypto/ffc/ffc_params_generate.c" + ], + "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ + "crypto/ffc/ffc_params_validate.c" + ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hmac/libcrypto-lib-hmac.o" => [ + "crypto/hmac/hmac.c" + ], + "crypto/hmac/libfips-lib-hmac.o" => [ + "crypto/hmac/hmac.c" + ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], + "crypto/http/libcrypto-lib-http_client.o" => [ + "crypto/http/http_client.c" + ], + "crypto/http/libcrypto-lib-http_err.o" => [ + "crypto/http/http_err.c" + ], + "crypto/http/libcrypto-lib-http_lib.o" => [ + "crypto/http/http_lib.c" + ], + "crypto/idea/libcrypto-lib-i_cbc.o" => [ + "crypto/idea/i_cbc.c" + ], + "crypto/idea/libcrypto-lib-i_cfb64.o" => [ + "crypto/idea/i_cfb64.c" + ], + "crypto/idea/libcrypto-lib-i_ecb.o" => [ + "crypto/idea/i_ecb.c" + ], + "crypto/idea/libcrypto-lib-i_ofb64.o" => [ + "crypto/idea/i_ofb64.c" + ], + "crypto/idea/libcrypto-lib-i_skey.o" => [ + "crypto/idea/i_skey.c" + ], + "crypto/kdf/libcrypto-lib-kdf_err.o" => [ + "crypto/kdf/kdf_err.c" + ], + "crypto/lhash/libcrypto-lib-lh_stats.o" => [ + "crypto/lhash/lh_stats.c" + ], + "crypto/lhash/libcrypto-lib-lhash.o" => [ + "crypto/lhash/lhash.c" + ], + "crypto/lhash/libfips-lib-lhash.o" => [ + "crypto/lhash/lhash.c" + ], + "crypto/libcrypto-lib-asn1_dsa.o" => [ + "crypto/asn1_dsa.c" + ], + "crypto/libcrypto-lib-bsearch.o" => [ + "crypto/bsearch.c" + ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], + "crypto/libcrypto-lib-context.o" => [ + "crypto/context.c" + ], + "crypto/libcrypto-lib-core_algorithm.o" => [ + "crypto/core_algorithm.c" + ], + "crypto/libcrypto-lib-core_fetch.o" => [ + "crypto/core_fetch.c" + ], + "crypto/libcrypto-lib-core_namemap.o" => [ + "crypto/core_namemap.c" + ], + "crypto/libcrypto-lib-cpt_err.o" => [ + "crypto/cpt_err.c" + ], + "crypto/libcrypto-lib-cpuid.o" => [ + "crypto/cpuid.c" + ], + "crypto/libcrypto-lib-cryptlib.o" => [ + "crypto/cryptlib.c" + ], + "crypto/libcrypto-lib-ctype.o" => [ + "crypto/ctype.c" + ], + "crypto/libcrypto-lib-cversion.o" => [ + "crypto/cversion.c" + ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], + "crypto/libcrypto-lib-der_writer.o" => [ + "crypto/der_writer.c" + ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], + "crypto/libcrypto-lib-ebcdic.o" => [ + "crypto/ebcdic.c" + ], + "crypto/libcrypto-lib-ex_data.o" => [ + "crypto/ex_data.c" + ], + "crypto/libcrypto-lib-getenv.o" => [ + "crypto/getenv.c" + ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], + "crypto/libcrypto-lib-info.o" => [ + "crypto/info.c" + ], + "crypto/libcrypto-lib-init.o" => [ + "crypto/init.c" + ], + "crypto/libcrypto-lib-initthread.o" => [ + "crypto/initthread.c" + ], + "crypto/libcrypto-lib-mem.o" => [ + "crypto/mem.c" + ], + "crypto/libcrypto-lib-mem_sec.o" => [ + "crypto/mem_sec.c" + ], + "crypto/libcrypto-lib-o_dir.o" => [ + "crypto/o_dir.c" + ], + "crypto/libcrypto-lib-o_fopen.o" => [ + "crypto/o_fopen.c" + ], + "crypto/libcrypto-lib-o_init.o" => [ + "crypto/o_init.c" + ], + "crypto/libcrypto-lib-o_str.o" => [ + "crypto/o_str.c" + ], + "crypto/libcrypto-lib-o_time.o" => [ + "crypto/o_time.c" + ], + "crypto/libcrypto-lib-packet.o" => [ + "crypto/packet.c" + ], + "crypto/libcrypto-lib-param_build.o" => [ + "crypto/param_build.c" + ], + "crypto/libcrypto-lib-param_build_set.o" => [ + "crypto/param_build_set.c" + ], + "crypto/libcrypto-lib-params.o" => [ + "crypto/params.c" + ], + "crypto/libcrypto-lib-params_dup.o" => [ + "crypto/params_dup.c" + ], + "crypto/libcrypto-lib-params_from_text.o" => [ + "crypto/params_from_text.c" + ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], + "crypto/libcrypto-lib-passphrase.o" => [ + "crypto/passphrase.c" + ], + "crypto/libcrypto-lib-provider.o" => [ + "crypto/provider.c" + ], + "crypto/libcrypto-lib-provider_child.o" => [ + "crypto/provider_child.c" + ], + "crypto/libcrypto-lib-provider_conf.o" => [ + "crypto/provider_conf.c" + ], + "crypto/libcrypto-lib-provider_core.o" => [ + "crypto/provider_core.c" + ], + "crypto/libcrypto-lib-provider_predefined.o" => [ + "crypto/provider_predefined.c" + ], + "crypto/libcrypto-lib-punycode.o" => [ + "crypto/punycode.c" + ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], + "crypto/libcrypto-lib-riscv64cpuid.o" => [ + "crypto/riscv64cpuid.s" + ], + "crypto/libcrypto-lib-riscvcap.o" => [ + "crypto/riscvcap.c" + ], + "crypto/libcrypto-lib-self_test_core.o" => [ + "crypto/self_test_core.c" + ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], + "crypto/libcrypto-lib-sparse_array.o" => [ + "crypto/sparse_array.c" + ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], + "crypto/libcrypto-lib-threads_lib.o" => [ + "crypto/threads_lib.c" + ], + "crypto/libcrypto-lib-threads_none.o" => [ + "crypto/threads_none.c" + ], + "crypto/libcrypto-lib-threads_pthread.o" => [ + "crypto/threads_pthread.c" + ], + "crypto/libcrypto-lib-threads_win.o" => [ + "crypto/threads_win.c" + ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], + "crypto/libcrypto-lib-trace.o" => [ + "crypto/trace.c" + ], + "crypto/libcrypto-lib-uid.o" => [ + "crypto/uid.c" + ], + "crypto/libfips-lib-asn1_dsa.o" => [ + "crypto/asn1_dsa.c" + ], + "crypto/libfips-lib-bsearch.o" => [ + "crypto/bsearch.c" + ], + "crypto/libfips-lib-context.o" => [ + "crypto/context.c" + ], + "crypto/libfips-lib-core_algorithm.o" => [ + "crypto/core_algorithm.c" + ], + "crypto/libfips-lib-core_fetch.o" => [ + "crypto/core_fetch.c" + ], + "crypto/libfips-lib-core_namemap.o" => [ + "crypto/core_namemap.c" + ], + "crypto/libfips-lib-cpuid.o" => [ + "crypto/cpuid.c" + ], + "crypto/libfips-lib-cryptlib.o" => [ + "crypto/cryptlib.c" + ], + "crypto/libfips-lib-ctype.o" => [ + "crypto/ctype.c" + ], + "crypto/libfips-lib-der_writer.o" => [ + "crypto/der_writer.c" + ], + "crypto/libfips-lib-ex_data.o" => [ + "crypto/ex_data.c" + ], + "crypto/libfips-lib-initthread.o" => [ + "crypto/initthread.c" + ], + "crypto/libfips-lib-o_str.o" => [ + "crypto/o_str.c" + ], + "crypto/libfips-lib-packet.o" => [ + "crypto/packet.c" + ], + "crypto/libfips-lib-param_build.o" => [ + "crypto/param_build.c" + ], + "crypto/libfips-lib-param_build_set.o" => [ + "crypto/param_build_set.c" + ], + "crypto/libfips-lib-params.o" => [ + "crypto/params.c" + ], + "crypto/libfips-lib-params_dup.o" => [ + "crypto/params_dup.c" + ], + "crypto/libfips-lib-params_from_text.o" => [ + "crypto/params_from_text.c" + ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], + "crypto/libfips-lib-provider_core.o" => [ + "crypto/provider_core.c" + ], + "crypto/libfips-lib-provider_predefined.o" => [ + "crypto/provider_predefined.c" + ], + "crypto/libfips-lib-riscv64cpuid.o" => [ + "crypto/riscv64cpuid.s" + ], + "crypto/libfips-lib-riscvcap.o" => [ + "crypto/riscvcap.c" + ], + "crypto/libfips-lib-self_test_core.o" => [ + "crypto/self_test_core.c" + ], + "crypto/libfips-lib-sparse_array.o" => [ + "crypto/sparse_array.c" + ], + "crypto/libfips-lib-threads_lib.o" => [ + "crypto/threads_lib.c" + ], + "crypto/libfips-lib-threads_none.o" => [ + "crypto/threads_none.c" + ], + "crypto/libfips-lib-threads_pthread.o" => [ + "crypto/threads_pthread.c" + ], + "crypto/libfips-lib-threads_win.o" => [ + "crypto/threads_win.c" + ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], + "crypto/md4/libcrypto-lib-md4_dgst.o" => [ + "crypto/md4/md4_dgst.c" + ], + "crypto/md4/libcrypto-lib-md4_one.o" => [ + "crypto/md4/md4_one.c" + ], + "crypto/md5/libcrypto-lib-md5_dgst.o" => [ + "crypto/md5/md5_dgst.c" + ], + "crypto/md5/libcrypto-lib-md5_one.o" => [ + "crypto/md5/md5_one.c" + ], + "crypto/md5/libcrypto-lib-md5_sha1.o" => [ + "crypto/md5/md5_sha1.c" + ], + "crypto/mdc2/libcrypto-lib-mdc2_one.o" => [ + "crypto/mdc2/mdc2_one.c" + ], + "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ + "crypto/mdc2/mdc2dgst.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/modes/libcrypto-lib-aes-gcm-riscv64-zvkb-zvkg-zvkned.o" => [ + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" + ], + "crypto/modes/libcrypto-lib-cbc128.o" => [ + "crypto/modes/cbc128.c" + ], + "crypto/modes/libcrypto-lib-ccm128.o" => [ + "crypto/modes/ccm128.c" + ], + "crypto/modes/libcrypto-lib-cfb128.o" => [ + "crypto/modes/cfb128.c" + ], + "crypto/modes/libcrypto-lib-ctr128.o" => [ + "crypto/modes/ctr128.c" + ], + "crypto/modes/libcrypto-lib-cts128.o" => [ + "crypto/modes/cts128.c" + ], + "crypto/modes/libcrypto-lib-gcm128.o" => [ + "crypto/modes/gcm128.c" + ], + "crypto/modes/libcrypto-lib-ghash-riscv64-zvkb-zvbc.o" => [ + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" + ], + "crypto/modes/libcrypto-lib-ghash-riscv64-zvkg.o" => [ + "crypto/modes/ghash-riscv64-zvkg.s" + ], + "crypto/modes/libcrypto-lib-ghash-riscv64.o" => [ + "crypto/modes/ghash-riscv64.s" + ], + "crypto/modes/libcrypto-lib-ocb128.o" => [ + "crypto/modes/ocb128.c" + ], + "crypto/modes/libcrypto-lib-ofb128.o" => [ + "crypto/modes/ofb128.c" + ], + "crypto/modes/libcrypto-lib-siv128.o" => [ + "crypto/modes/siv128.c" + ], + "crypto/modes/libcrypto-lib-wrap128.o" => [ + "crypto/modes/wrap128.c" + ], + "crypto/modes/libcrypto-lib-xts128.o" => [ + "crypto/modes/xts128.c" + ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], + "crypto/modes/libfips-lib-aes-gcm-riscv64-zvkb-zvkg-zvkned.o" => [ + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" + ], + "crypto/modes/libfips-lib-cbc128.o" => [ + "crypto/modes/cbc128.c" + ], + "crypto/modes/libfips-lib-ccm128.o" => [ + "crypto/modes/ccm128.c" + ], + "crypto/modes/libfips-lib-cfb128.o" => [ + "crypto/modes/cfb128.c" + ], + "crypto/modes/libfips-lib-ctr128.o" => [ + "crypto/modes/ctr128.c" + ], + "crypto/modes/libfips-lib-gcm128.o" => [ + "crypto/modes/gcm128.c" + ], + "crypto/modes/libfips-lib-ghash-riscv64-zvkb-zvbc.o" => [ + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" + ], + "crypto/modes/libfips-lib-ghash-riscv64-zvkg.o" => [ + "crypto/modes/ghash-riscv64-zvkg.s" + ], + "crypto/modes/libfips-lib-ghash-riscv64.o" => [ + "crypto/modes/ghash-riscv64.s" + ], + "crypto/modes/libfips-lib-ofb128.o" => [ + "crypto/modes/ofb128.c" + ], + "crypto/modes/libfips-lib-wrap128.o" => [ + "crypto/modes/wrap128.c" + ], + "crypto/modes/libfips-lib-xts128.o" => [ + "crypto/modes/xts128.c" + ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], + "crypto/objects/libcrypto-lib-o_names.o" => [ + "crypto/objects/o_names.c" + ], + "crypto/objects/libcrypto-lib-obj_dat.o" => [ + "crypto/objects/obj_dat.c" + ], + "crypto/objects/libcrypto-lib-obj_err.o" => [ + "crypto/objects/obj_err.c" + ], + "crypto/objects/libcrypto-lib-obj_lib.o" => [ + "crypto/objects/obj_lib.c" + ], + "crypto/objects/libcrypto-lib-obj_xref.o" => [ + "crypto/objects/obj_xref.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_asn.o" => [ + "crypto/ocsp/ocsp_asn.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_cl.o" => [ + "crypto/ocsp/ocsp_cl.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_err.o" => [ + "crypto/ocsp/ocsp_err.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_ext.o" => [ + "crypto/ocsp/ocsp_ext.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_http.o" => [ + "crypto/ocsp/ocsp_http.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_lib.o" => [ + "crypto/ocsp/ocsp_lib.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_prn.o" => [ + "crypto/ocsp/ocsp_prn.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_srv.o" => [ + "crypto/ocsp/ocsp_srv.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_vfy.o" => [ + "crypto/ocsp/ocsp_vfy.c" + ], + "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ + "crypto/ocsp/v3_ocsp.c" + ], + "crypto/pem/libcrypto-lib-pem_all.o" => [ + "crypto/pem/pem_all.c" + ], + "crypto/pem/libcrypto-lib-pem_err.o" => [ + "crypto/pem/pem_err.c" + ], + "crypto/pem/libcrypto-lib-pem_info.o" => [ + "crypto/pem/pem_info.c" + ], + "crypto/pem/libcrypto-lib-pem_lib.o" => [ + "crypto/pem/pem_lib.c" + ], + "crypto/pem/libcrypto-lib-pem_oth.o" => [ + "crypto/pem/pem_oth.c" + ], + "crypto/pem/libcrypto-lib-pem_pk8.o" => [ + "crypto/pem/pem_pk8.c" + ], + "crypto/pem/libcrypto-lib-pem_pkey.o" => [ + "crypto/pem/pem_pkey.c" + ], + "crypto/pem/libcrypto-lib-pem_sign.o" => [ + "crypto/pem/pem_sign.c" + ], + "crypto/pem/libcrypto-lib-pem_x509.o" => [ + "crypto/pem/pem_x509.c" + ], + "crypto/pem/libcrypto-lib-pem_xaux.o" => [ + "crypto/pem/pem_xaux.c" + ], + "crypto/pem/libcrypto-lib-pvkfmt.o" => [ + "crypto/pem/pvkfmt.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_add.o" => [ + "crypto/pkcs12/p12_add.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_asn.o" => [ + "crypto/pkcs12/p12_asn.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_attr.o" => [ + "crypto/pkcs12/p12_attr.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_crpt.o" => [ + "crypto/pkcs12/p12_crpt.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_crt.o" => [ + "crypto/pkcs12/p12_crt.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_decr.o" => [ + "crypto/pkcs12/p12_decr.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_init.o" => [ + "crypto/pkcs12/p12_init.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_key.o" => [ + "crypto/pkcs12/p12_key.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_kiss.o" => [ + "crypto/pkcs12/p12_kiss.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_mutl.o" => [ + "crypto/pkcs12/p12_mutl.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_npas.o" => [ + "crypto/pkcs12/p12_npas.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_p8d.o" => [ + "crypto/pkcs12/p12_p8d.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_p8e.o" => [ + "crypto/pkcs12/p12_p8e.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_sbag.o" => [ + "crypto/pkcs12/p12_sbag.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_utl.o" => [ + "crypto/pkcs12/p12_utl.c" + ], + "crypto/pkcs12/libcrypto-lib-pk12err.o" => [ + "crypto/pkcs12/pk12err.c" + ], + "crypto/pkcs7/libcrypto-lib-bio_pk7.o" => [ + "crypto/pkcs7/bio_pk7.c" + ], + "crypto/pkcs7/libcrypto-lib-pk7_asn1.o" => [ + "crypto/pkcs7/pk7_asn1.c" + ], + "crypto/pkcs7/libcrypto-lib-pk7_attr.o" => [ + "crypto/pkcs7/pk7_attr.c" + ], + "crypto/pkcs7/libcrypto-lib-pk7_doit.o" => [ + "crypto/pkcs7/pk7_doit.c" + ], + "crypto/pkcs7/libcrypto-lib-pk7_lib.o" => [ + "crypto/pkcs7/pk7_lib.c" + ], + "crypto/pkcs7/libcrypto-lib-pk7_mime.o" => [ + "crypto/pkcs7/pk7_mime.c" + ], + "crypto/pkcs7/libcrypto-lib-pk7_smime.o" => [ + "crypto/pkcs7/pk7_smime.c" + ], + "crypto/pkcs7/libcrypto-lib-pkcs7err.o" => [ + "crypto/pkcs7/pkcs7err.c" + ], + "crypto/poly1305/libcrypto-lib-poly1305.o" => [ + "crypto/poly1305/poly1305.c" + ], + "crypto/property/libcrypto-lib-defn_cache.o" => [ + "crypto/property/defn_cache.c" + ], + "crypto/property/libcrypto-lib-property.o" => [ + "crypto/property/property.c" + ], + "crypto/property/libcrypto-lib-property_err.o" => [ + "crypto/property/property_err.c" + ], + "crypto/property/libcrypto-lib-property_parse.o" => [ + "crypto/property/property_parse.c" + ], + "crypto/property/libcrypto-lib-property_query.o" => [ + "crypto/property/property_query.c" + ], + "crypto/property/libcrypto-lib-property_string.o" => [ + "crypto/property/property_string.c" + ], + "crypto/property/libfips-lib-defn_cache.o" => [ + "crypto/property/defn_cache.c" + ], + "crypto/property/libfips-lib-property.o" => [ + "crypto/property/property.c" + ], + "crypto/property/libfips-lib-property_parse.o" => [ + "crypto/property/property_parse.c" + ], + "crypto/property/libfips-lib-property_query.o" => [ + "crypto/property/property_query.c" + ], + "crypto/property/libfips-lib-property_string.o" => [ + "crypto/property/property_string.c" + ], + "crypto/rand/libcrypto-lib-prov_seed.o" => [ + "crypto/rand/prov_seed.c" + ], + "crypto/rand/libcrypto-lib-rand_deprecated.o" => [ + "crypto/rand/rand_deprecated.c" + ], + "crypto/rand/libcrypto-lib-rand_err.o" => [ + "crypto/rand/rand_err.c" + ], + "crypto/rand/libcrypto-lib-rand_lib.o" => [ + "crypto/rand/rand_lib.c" + ], + "crypto/rand/libcrypto-lib-rand_meth.o" => [ + "crypto/rand/rand_meth.c" + ], + "crypto/rand/libcrypto-lib-rand_pool.o" => [ + "crypto/rand/rand_pool.c" + ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], + "crypto/rand/libcrypto-lib-randfile.o" => [ + "crypto/rand/randfile.c" + ], + "crypto/rand/libfips-lib-rand_lib.o" => [ + "crypto/rand/rand_lib.c" + ], + "crypto/rc2/libcrypto-lib-rc2_cbc.o" => [ + "crypto/rc2/rc2_cbc.c" + ], + "crypto/rc2/libcrypto-lib-rc2_ecb.o" => [ + "crypto/rc2/rc2_ecb.c" + ], + "crypto/rc2/libcrypto-lib-rc2_skey.o" => [ + "crypto/rc2/rc2_skey.c" + ], + "crypto/rc2/libcrypto-lib-rc2cfb64.o" => [ + "crypto/rc2/rc2cfb64.c" + ], + "crypto/rc2/libcrypto-lib-rc2ofb64.o" => [ + "crypto/rc2/rc2ofb64.c" + ], + "crypto/rc4/libcrypto-lib-rc4_enc.o" => [ + "crypto/rc4/rc4_enc.c" + ], + "crypto/rc4/libcrypto-lib-rc4_skey.o" => [ + "crypto/rc4/rc4_skey.c" + ], + "crypto/ripemd/libcrypto-lib-rmd_dgst.o" => [ + "crypto/ripemd/rmd_dgst.c" + ], + "crypto/ripemd/libcrypto-lib-rmd_one.o" => [ + "crypto/ripemd/rmd_one.c" + ], + "crypto/rsa/libcrypto-lib-rsa_ameth.o" => [ + "crypto/rsa/rsa_ameth.c" + ], + "crypto/rsa/libcrypto-lib-rsa_asn1.o" => [ + "crypto/rsa/rsa_asn1.c" + ], + "crypto/rsa/libcrypto-lib-rsa_backend.o" => [ + "crypto/rsa/rsa_backend.c" + ], + "crypto/rsa/libcrypto-lib-rsa_chk.o" => [ + "crypto/rsa/rsa_chk.c" + ], + "crypto/rsa/libcrypto-lib-rsa_crpt.o" => [ + "crypto/rsa/rsa_crpt.c" + ], + "crypto/rsa/libcrypto-lib-rsa_depr.o" => [ + "crypto/rsa/rsa_depr.c" + ], + "crypto/rsa/libcrypto-lib-rsa_err.o" => [ + "crypto/rsa/rsa_err.c" + ], + "crypto/rsa/libcrypto-lib-rsa_gen.o" => [ + "crypto/rsa/rsa_gen.c" + ], + "crypto/rsa/libcrypto-lib-rsa_lib.o" => [ + "crypto/rsa/rsa_lib.c" + ], + "crypto/rsa/libcrypto-lib-rsa_meth.o" => [ + "crypto/rsa/rsa_meth.c" + ], + "crypto/rsa/libcrypto-lib-rsa_mp.o" => [ + "crypto/rsa/rsa_mp.c" + ], + "crypto/rsa/libcrypto-lib-rsa_mp_names.o" => [ + "crypto/rsa/rsa_mp_names.c" + ], + "crypto/rsa/libcrypto-lib-rsa_none.o" => [ + "crypto/rsa/rsa_none.c" + ], + "crypto/rsa/libcrypto-lib-rsa_oaep.o" => [ + "crypto/rsa/rsa_oaep.c" + ], + "crypto/rsa/libcrypto-lib-rsa_ossl.o" => [ + "crypto/rsa/rsa_ossl.c" + ], + "crypto/rsa/libcrypto-lib-rsa_pk1.o" => [ + "crypto/rsa/rsa_pk1.c" + ], + "crypto/rsa/libcrypto-lib-rsa_pmeth.o" => [ + "crypto/rsa/rsa_pmeth.c" + ], + "crypto/rsa/libcrypto-lib-rsa_prn.o" => [ + "crypto/rsa/rsa_prn.c" + ], + "crypto/rsa/libcrypto-lib-rsa_pss.o" => [ + "crypto/rsa/rsa_pss.c" + ], + "crypto/rsa/libcrypto-lib-rsa_saos.o" => [ + "crypto/rsa/rsa_saos.c" + ], + "crypto/rsa/libcrypto-lib-rsa_schemes.o" => [ + "crypto/rsa/rsa_schemes.c" + ], + "crypto/rsa/libcrypto-lib-rsa_sign.o" => [ + "crypto/rsa/rsa_sign.c" + ], + "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o" => [ + "crypto/rsa/rsa_sp800_56b_check.c" + ], + "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o" => [ + "crypto/rsa/rsa_sp800_56b_gen.c" + ], + "crypto/rsa/libcrypto-lib-rsa_x931.o" => [ + "crypto/rsa/rsa_x931.c" + ], + "crypto/rsa/libcrypto-lib-rsa_x931g.o" => [ + "crypto/rsa/rsa_x931g.c" + ], + "crypto/rsa/libfips-lib-rsa_acvp_test_params.o" => [ + "crypto/rsa/rsa_acvp_test_params.c" + ], + "crypto/rsa/libfips-lib-rsa_backend.o" => [ + "crypto/rsa/rsa_backend.c" + ], + "crypto/rsa/libfips-lib-rsa_chk.o" => [ + "crypto/rsa/rsa_chk.c" + ], + "crypto/rsa/libfips-lib-rsa_crpt.o" => [ + "crypto/rsa/rsa_crpt.c" + ], + "crypto/rsa/libfips-lib-rsa_gen.o" => [ + "crypto/rsa/rsa_gen.c" + ], + "crypto/rsa/libfips-lib-rsa_lib.o" => [ + "crypto/rsa/rsa_lib.c" + ], + "crypto/rsa/libfips-lib-rsa_mp_names.o" => [ + "crypto/rsa/rsa_mp_names.c" + ], + "crypto/rsa/libfips-lib-rsa_none.o" => [ + "crypto/rsa/rsa_none.c" + ], + "crypto/rsa/libfips-lib-rsa_oaep.o" => [ + "crypto/rsa/rsa_oaep.c" + ], + "crypto/rsa/libfips-lib-rsa_ossl.o" => [ + "crypto/rsa/rsa_ossl.c" + ], + "crypto/rsa/libfips-lib-rsa_pk1.o" => [ + "crypto/rsa/rsa_pk1.c" + ], + "crypto/rsa/libfips-lib-rsa_pss.o" => [ + "crypto/rsa/rsa_pss.c" + ], + "crypto/rsa/libfips-lib-rsa_schemes.o" => [ + "crypto/rsa/rsa_schemes.c" + ], + "crypto/rsa/libfips-lib-rsa_sign.o" => [ + "crypto/rsa/rsa_sign.c" + ], + "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o" => [ + "crypto/rsa/rsa_sp800_56b_check.c" + ], + "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o" => [ + "crypto/rsa/rsa_sp800_56b_gen.c" + ], + "crypto/rsa/libfips-lib-rsa_x931.o" => [ + "crypto/rsa/rsa_x931.c" + ], + "crypto/seed/libcrypto-lib-seed.o" => [ + "crypto/seed/seed.c" + ], + "crypto/seed/libcrypto-lib-seed_cbc.o" => [ + "crypto/seed/seed_cbc.c" + ], + "crypto/seed/libcrypto-lib-seed_cfb.o" => [ + "crypto/seed/seed_cfb.c" + ], + "crypto/seed/libcrypto-lib-seed_ecb.o" => [ + "crypto/seed/seed_ecb.c" + ], + "crypto/seed/libcrypto-lib-seed_ofb.o" => [ + "crypto/seed/seed_ofb.c" + ], + "crypto/sha/libcrypto-lib-keccak1600.o" => [ + "crypto/sha/keccak1600.c" + ], + "crypto/sha/libcrypto-lib-sha1_one.o" => [ + "crypto/sha/sha1_one.c" + ], + "crypto/sha/libcrypto-lib-sha1dgst.o" => [ + "crypto/sha/sha1dgst.c" + ], + "crypto/sha/libcrypto-lib-sha256-riscv64-zvkb-zvknha_or_zvknhb.o" => [ + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" + ], + "crypto/sha/libcrypto-lib-sha256.o" => [ + "crypto/sha/sha256.c" + ], + "crypto/sha/libcrypto-lib-sha3.o" => [ + "crypto/sha/sha3.c" + ], + "crypto/sha/libcrypto-lib-sha512-riscv64-zvkb-zvknhb.o" => [ + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" + ], + "crypto/sha/libcrypto-lib-sha512.o" => [ + "crypto/sha/sha512.c" + ], + "crypto/sha/libcrypto-lib-sha_riscv.o" => [ + "crypto/sha/sha_riscv.c" + ], + "crypto/sha/libfips-lib-keccak1600.o" => [ + "crypto/sha/keccak1600.c" + ], + "crypto/sha/libfips-lib-sha1dgst.o" => [ + "crypto/sha/sha1dgst.c" + ], + "crypto/sha/libfips-lib-sha256-riscv64-zvkb-zvknha_or_zvknhb.o" => [ + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" + ], + "crypto/sha/libfips-lib-sha256.o" => [ + "crypto/sha/sha256.c" + ], + "crypto/sha/libfips-lib-sha3.o" => [ + "crypto/sha/sha3.c" + ], + "crypto/sha/libfips-lib-sha512-riscv64-zvkb-zvknhb.o" => [ + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" + ], + "crypto/sha/libfips-lib-sha512.o" => [ + "crypto/sha/sha512.c" + ], + "crypto/sha/libfips-lib-sha_riscv.o" => [ + "crypto/sha/sha_riscv.c" + ], + "crypto/siphash/libcrypto-lib-siphash.o" => [ + "crypto/siphash/siphash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ + "crypto/sm2/sm2_crypt.c" + ], + "crypto/sm2/libcrypto-lib-sm2_err.o" => [ + "crypto/sm2/sm2_err.c" + ], + "crypto/sm2/libcrypto-lib-sm2_key.o" => [ + "crypto/sm2/sm2_key.c" + ], + "crypto/sm2/libcrypto-lib-sm2_sign.o" => [ + "crypto/sm2/sm2_sign.c" + ], + "crypto/sm3/libcrypto-lib-legacy_sm3.o" => [ + "crypto/sm3/legacy_sm3.c" + ], + "crypto/sm3/libcrypto-lib-sm3-riscv64-zvksh.o" => [ + "crypto/sm3/sm3-riscv64-zvksh.S" + ], + "crypto/sm3/libcrypto-lib-sm3.o" => [ + "crypto/sm3/sm3.c" + ], + "crypto/sm3/libcrypto-lib-sm3_riscv.o" => [ + "crypto/sm3/sm3_riscv.c" + ], + "crypto/sm4/libcrypto-lib-sm4-riscv64-zvksed.o" => [ + "crypto/sm4/sm4-riscv64-zvksed.s" + ], + "crypto/sm4/libcrypto-lib-sm4.o" => [ + "crypto/sm4/sm4.c" + ], + "crypto/srp/libcrypto-lib-srp_lib.o" => [ + "crypto/srp/srp_lib.c" + ], + "crypto/srp/libcrypto-lib-srp_vfy.o" => [ + "crypto/srp/srp_vfy.c" + ], + "crypto/stack/libcrypto-lib-stack.o" => [ + "crypto/stack/stack.c" + ], + "crypto/stack/libfips-lib-stack.o" => [ + "crypto/stack/stack.c" + ], + "crypto/store/libcrypto-lib-store_err.o" => [ + "crypto/store/store_err.c" + ], + "crypto/store/libcrypto-lib-store_init.o" => [ + "crypto/store/store_init.c" + ], + "crypto/store/libcrypto-lib-store_lib.o" => [ + "crypto/store/store_lib.c" + ], + "crypto/store/libcrypto-lib-store_meth.o" => [ + "crypto/store/store_meth.c" + ], + "crypto/store/libcrypto-lib-store_register.o" => [ + "crypto/store/store_register.c" + ], + "crypto/store/libcrypto-lib-store_result.o" => [ + "crypto/store/store_result.c" + ], + "crypto/store/libcrypto-lib-store_strings.o" => [ + "crypto/store/store_strings.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/ts/libcrypto-lib-ts_asn1.o" => [ + "crypto/ts/ts_asn1.c" + ], + "crypto/ts/libcrypto-lib-ts_conf.o" => [ + "crypto/ts/ts_conf.c" + ], + "crypto/ts/libcrypto-lib-ts_err.o" => [ + "crypto/ts/ts_err.c" + ], + "crypto/ts/libcrypto-lib-ts_lib.o" => [ + "crypto/ts/ts_lib.c" + ], + "crypto/ts/libcrypto-lib-ts_req_print.o" => [ + "crypto/ts/ts_req_print.c" + ], + "crypto/ts/libcrypto-lib-ts_req_utils.o" => [ + "crypto/ts/ts_req_utils.c" + ], + "crypto/ts/libcrypto-lib-ts_rsp_print.o" => [ + "crypto/ts/ts_rsp_print.c" + ], + "crypto/ts/libcrypto-lib-ts_rsp_sign.o" => [ + "crypto/ts/ts_rsp_sign.c" + ], + "crypto/ts/libcrypto-lib-ts_rsp_utils.o" => [ + "crypto/ts/ts_rsp_utils.c" + ], + "crypto/ts/libcrypto-lib-ts_rsp_verify.o" => [ + "crypto/ts/ts_rsp_verify.c" + ], + "crypto/ts/libcrypto-lib-ts_verify_ctx.o" => [ + "crypto/ts/ts_verify_ctx.c" + ], + "crypto/txt_db/libcrypto-lib-txt_db.o" => [ + "crypto/txt_db/txt_db.c" + ], + "crypto/ui/libcrypto-lib-ui_err.o" => [ + "crypto/ui/ui_err.c" + ], + "crypto/ui/libcrypto-lib-ui_lib.o" => [ + "crypto/ui/ui_lib.c" + ], + "crypto/ui/libcrypto-lib-ui_null.o" => [ + "crypto/ui/ui_null.c" + ], + "crypto/ui/libcrypto-lib-ui_openssl.o" => [ + "crypto/ui/ui_openssl.c" + ], + "crypto/ui/libcrypto-lib-ui_util.o" => [ + "crypto/ui/ui_util.c" + ], + "crypto/whrlpool/libcrypto-lib-wp_block.o" => [ + "crypto/whrlpool/wp_block.c" + ], + "crypto/whrlpool/libcrypto-lib-wp_dgst.o" => [ + "crypto/whrlpool/wp_dgst.c" + ], + "crypto/x509/libcrypto-lib-by_dir.o" => [ + "crypto/x509/by_dir.c" + ], + "crypto/x509/libcrypto-lib-by_file.o" => [ + "crypto/x509/by_file.c" + ], + "crypto/x509/libcrypto-lib-by_store.o" => [ + "crypto/x509/by_store.c" + ], + "crypto/x509/libcrypto-lib-pcy_cache.o" => [ + "crypto/x509/pcy_cache.c" + ], + "crypto/x509/libcrypto-lib-pcy_data.o" => [ + "crypto/x509/pcy_data.c" + ], + "crypto/x509/libcrypto-lib-pcy_lib.o" => [ + "crypto/x509/pcy_lib.c" + ], + "crypto/x509/libcrypto-lib-pcy_map.o" => [ + "crypto/x509/pcy_map.c" + ], + "crypto/x509/libcrypto-lib-pcy_node.o" => [ + "crypto/x509/pcy_node.c" + ], + "crypto/x509/libcrypto-lib-pcy_tree.o" => [ + "crypto/x509/pcy_tree.c" + ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], + "crypto/x509/libcrypto-lib-t_crl.o" => [ + "crypto/x509/t_crl.c" + ], + "crypto/x509/libcrypto-lib-t_req.o" => [ + "crypto/x509/t_req.c" + ], + "crypto/x509/libcrypto-lib-t_x509.o" => [ + "crypto/x509/t_x509.c" + ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], + "crypto/x509/libcrypto-lib-v3_addr.o" => [ + "crypto/x509/v3_addr.c" + ], + "crypto/x509/libcrypto-lib-v3_admis.o" => [ + "crypto/x509/v3_admis.c" + ], + "crypto/x509/libcrypto-lib-v3_akeya.o" => [ + "crypto/x509/v3_akeya.c" + ], + "crypto/x509/libcrypto-lib-v3_akid.o" => [ + "crypto/x509/v3_akid.c" + ], + "crypto/x509/libcrypto-lib-v3_asid.o" => [ + "crypto/x509/v3_asid.c" + ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], + "crypto/x509/libcrypto-lib-v3_bcons.o" => [ + "crypto/x509/v3_bcons.c" + ], + "crypto/x509/libcrypto-lib-v3_bitst.o" => [ + "crypto/x509/v3_bitst.c" + ], + "crypto/x509/libcrypto-lib-v3_conf.o" => [ + "crypto/x509/v3_conf.c" + ], + "crypto/x509/libcrypto-lib-v3_cpols.o" => [ + "crypto/x509/v3_cpols.c" + ], + "crypto/x509/libcrypto-lib-v3_crld.o" => [ + "crypto/x509/v3_crld.c" + ], + "crypto/x509/libcrypto-lib-v3_enum.o" => [ + "crypto/x509/v3_enum.c" + ], + "crypto/x509/libcrypto-lib-v3_extku.o" => [ + "crypto/x509/v3_extku.c" + ], + "crypto/x509/libcrypto-lib-v3_genn.o" => [ + "crypto/x509/v3_genn.c" + ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], + "crypto/x509/libcrypto-lib-v3_ia5.o" => [ + "crypto/x509/v3_ia5.c" + ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], + "crypto/x509/libcrypto-lib-v3_info.o" => [ + "crypto/x509/v3_info.c" + ], + "crypto/x509/libcrypto-lib-v3_int.o" => [ + "crypto/x509/v3_int.c" + ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], + "crypto/x509/libcrypto-lib-v3_ist.o" => [ + "crypto/x509/v3_ist.c" + ], + "crypto/x509/libcrypto-lib-v3_lib.o" => [ + "crypto/x509/v3_lib.c" + ], + "crypto/x509/libcrypto-lib-v3_ncons.o" => [ + "crypto/x509/v3_ncons.c" + ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], + "crypto/x509/libcrypto-lib-v3_pci.o" => [ + "crypto/x509/v3_pci.c" + ], + "crypto/x509/libcrypto-lib-v3_pcia.o" => [ + "crypto/x509/v3_pcia.c" + ], + "crypto/x509/libcrypto-lib-v3_pcons.o" => [ + "crypto/x509/v3_pcons.c" + ], + "crypto/x509/libcrypto-lib-v3_pku.o" => [ + "crypto/x509/v3_pku.c" + ], + "crypto/x509/libcrypto-lib-v3_pmaps.o" => [ + "crypto/x509/v3_pmaps.c" + ], + "crypto/x509/libcrypto-lib-v3_prn.o" => [ + "crypto/x509/v3_prn.c" + ], + "crypto/x509/libcrypto-lib-v3_purp.o" => [ + "crypto/x509/v3_purp.c" + ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], + "crypto/x509/libcrypto-lib-v3_san.o" => [ + "crypto/x509/v3_san.c" + ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], + "crypto/x509/libcrypto-lib-v3_skid.o" => [ + "crypto/x509/v3_skid.c" + ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], + "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ + "crypto/x509/v3_sxnet.c" + ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], + "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ + "crypto/x509/v3_tlsf.c" + ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], + "crypto/x509/libcrypto-lib-v3_utf8.o" => [ + "crypto/x509/v3_utf8.c" + ], + "crypto/x509/libcrypto-lib-v3_utl.o" => [ + "crypto/x509/v3_utl.c" + ], + "crypto/x509/libcrypto-lib-v3err.o" => [ + "crypto/x509/v3err.c" + ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], + "crypto/x509/libcrypto-lib-x509_att.o" => [ + "crypto/x509/x509_att.c" + ], + "crypto/x509/libcrypto-lib-x509_cmp.o" => [ + "crypto/x509/x509_cmp.c" + ], + "crypto/x509/libcrypto-lib-x509_d2.o" => [ + "crypto/x509/x509_d2.c" + ], + "crypto/x509/libcrypto-lib-x509_def.o" => [ + "crypto/x509/x509_def.c" + ], + "crypto/x509/libcrypto-lib-x509_err.o" => [ + "crypto/x509/x509_err.c" + ], + "crypto/x509/libcrypto-lib-x509_ext.o" => [ + "crypto/x509/x509_ext.c" + ], + "crypto/x509/libcrypto-lib-x509_lu.o" => [ + "crypto/x509/x509_lu.c" + ], + "crypto/x509/libcrypto-lib-x509_meth.o" => [ + "crypto/x509/x509_meth.c" + ], + "crypto/x509/libcrypto-lib-x509_obj.o" => [ + "crypto/x509/x509_obj.c" + ], + "crypto/x509/libcrypto-lib-x509_r2x.o" => [ + "crypto/x509/x509_r2x.c" + ], + "crypto/x509/libcrypto-lib-x509_req.o" => [ + "crypto/x509/x509_req.c" + ], + "crypto/x509/libcrypto-lib-x509_set.o" => [ + "crypto/x509/x509_set.c" + ], + "crypto/x509/libcrypto-lib-x509_trust.o" => [ + "crypto/x509/x509_trust.c" + ], + "crypto/x509/libcrypto-lib-x509_txt.o" => [ + "crypto/x509/x509_txt.c" + ], + "crypto/x509/libcrypto-lib-x509_v3.o" => [ + "crypto/x509/x509_v3.c" + ], + "crypto/x509/libcrypto-lib-x509_vfy.o" => [ + "crypto/x509/x509_vfy.c" + ], + "crypto/x509/libcrypto-lib-x509_vpm.o" => [ + "crypto/x509/x509_vpm.c" + ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], + "crypto/x509/libcrypto-lib-x509cset.o" => [ + "crypto/x509/x509cset.c" + ], + "crypto/x509/libcrypto-lib-x509name.o" => [ + "crypto/x509/x509name.c" + ], + "crypto/x509/libcrypto-lib-x509rset.o" => [ + "crypto/x509/x509rset.c" + ], + "crypto/x509/libcrypto-lib-x509spki.o" => [ + "crypto/x509/x509spki.c" + ], + "crypto/x509/libcrypto-lib-x509type.o" => [ + "crypto/x509/x509type.c" + ], + "crypto/x509/libcrypto-lib-x_all.o" => [ + "crypto/x509/x_all.c" + ], + "crypto/x509/libcrypto-lib-x_attrib.o" => [ + "crypto/x509/x_attrib.c" + ], + "crypto/x509/libcrypto-lib-x_crl.o" => [ + "crypto/x509/x_crl.c" + ], + "crypto/x509/libcrypto-lib-x_exten.o" => [ + "crypto/x509/x_exten.c" + ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], + "crypto/x509/libcrypto-lib-x_name.o" => [ + "crypto/x509/x_name.c" + ], + "crypto/x509/libcrypto-lib-x_pubkey.o" => [ + "crypto/x509/x_pubkey.c" + ], + "crypto/x509/libcrypto-lib-x_req.o" => [ + "crypto/x509/x_req.c" + ], + "crypto/x509/libcrypto-lib-x_x509.o" => [ + "crypto/x509/x_x509.c" + ], + "crypto/x509/libcrypto-lib-x_x509a.o" => [ + "crypto/x509/x_x509a.c" + ], + "engines/libcrypto-lib-e_capi.o" => [ + "engines/e_capi.c" + ], + "engines/libcrypto-lib-e_padlock.o" => [ + "engines/e_padlock.c" + ], + "libcrypto" => [ + "crypto/aes/libcrypto-lib-aes-riscv64-zkn.o", + "crypto/aes/libcrypto-lib-aes-riscv64-zvbb-zvkg-zvkned.o", + "crypto/aes/libcrypto-lib-aes-riscv64-zvkb-zvkned.o", + "crypto/aes/libcrypto-lib-aes-riscv64-zvkned.o", + "crypto/aes/libcrypto-lib-aes-riscv64.o", + "crypto/aes/libcrypto-lib-aes_cbc.o", + "crypto/aes/libcrypto-lib-aes_cfb.o", + "crypto/aes/libcrypto-lib-aes_ecb.o", + "crypto/aes/libcrypto-lib-aes_ige.o", + "crypto/aes/libcrypto-lib-aes_misc.o", + "crypto/aes/libcrypto-lib-aes_ofb.o", + "crypto/aes/libcrypto-lib-aes_wrap.o", + "crypto/aria/libcrypto-lib-aria.o", + "crypto/asn1/libcrypto-lib-a_bitstr.o", + "crypto/asn1/libcrypto-lib-a_d2i_fp.o", + "crypto/asn1/libcrypto-lib-a_digest.o", + "crypto/asn1/libcrypto-lib-a_dup.o", + "crypto/asn1/libcrypto-lib-a_gentm.o", + "crypto/asn1/libcrypto-lib-a_i2d_fp.o", + "crypto/asn1/libcrypto-lib-a_int.o", + "crypto/asn1/libcrypto-lib-a_mbstr.o", + "crypto/asn1/libcrypto-lib-a_object.o", + "crypto/asn1/libcrypto-lib-a_octet.o", + "crypto/asn1/libcrypto-lib-a_print.o", + "crypto/asn1/libcrypto-lib-a_sign.o", + "crypto/asn1/libcrypto-lib-a_strex.o", + "crypto/asn1/libcrypto-lib-a_strnid.o", + "crypto/asn1/libcrypto-lib-a_time.o", + "crypto/asn1/libcrypto-lib-a_type.o", + "crypto/asn1/libcrypto-lib-a_utctm.o", + "crypto/asn1/libcrypto-lib-a_utf8.o", + "crypto/asn1/libcrypto-lib-a_verify.o", + "crypto/asn1/libcrypto-lib-ameth_lib.o", + "crypto/asn1/libcrypto-lib-asn1_err.o", + "crypto/asn1/libcrypto-lib-asn1_gen.o", + "crypto/asn1/libcrypto-lib-asn1_item_list.o", + "crypto/asn1/libcrypto-lib-asn1_lib.o", + "crypto/asn1/libcrypto-lib-asn1_parse.o", + "crypto/asn1/libcrypto-lib-asn_mime.o", + "crypto/asn1/libcrypto-lib-asn_moid.o", + "crypto/asn1/libcrypto-lib-asn_mstbl.o", + "crypto/asn1/libcrypto-lib-asn_pack.o", + "crypto/asn1/libcrypto-lib-bio_asn1.o", + "crypto/asn1/libcrypto-lib-bio_ndef.o", + "crypto/asn1/libcrypto-lib-d2i_param.o", + "crypto/asn1/libcrypto-lib-d2i_pr.o", + "crypto/asn1/libcrypto-lib-d2i_pu.o", + "crypto/asn1/libcrypto-lib-evp_asn1.o", + "crypto/asn1/libcrypto-lib-f_int.o", + "crypto/asn1/libcrypto-lib-f_string.o", + "crypto/asn1/libcrypto-lib-i2d_evp.o", + "crypto/asn1/libcrypto-lib-n_pkey.o", + "crypto/asn1/libcrypto-lib-nsseq.o", + "crypto/asn1/libcrypto-lib-p5_pbe.o", + "crypto/asn1/libcrypto-lib-p5_pbev2.o", + "crypto/asn1/libcrypto-lib-p5_scrypt.o", + "crypto/asn1/libcrypto-lib-p8_pkey.o", + "crypto/asn1/libcrypto-lib-t_bitst.o", + "crypto/asn1/libcrypto-lib-t_pkey.o", + "crypto/asn1/libcrypto-lib-t_spki.o", + "crypto/asn1/libcrypto-lib-tasn_dec.o", + "crypto/asn1/libcrypto-lib-tasn_enc.o", + "crypto/asn1/libcrypto-lib-tasn_fre.o", + "crypto/asn1/libcrypto-lib-tasn_new.o", + "crypto/asn1/libcrypto-lib-tasn_prn.o", + "crypto/asn1/libcrypto-lib-tasn_scn.o", + "crypto/asn1/libcrypto-lib-tasn_typ.o", + "crypto/asn1/libcrypto-lib-tasn_utl.o", + "crypto/asn1/libcrypto-lib-x_algor.o", + "crypto/asn1/libcrypto-lib-x_bignum.o", + "crypto/asn1/libcrypto-lib-x_info.o", + "crypto/asn1/libcrypto-lib-x_int64.o", + "crypto/asn1/libcrypto-lib-x_long.o", + "crypto/asn1/libcrypto-lib-x_pkey.o", + "crypto/asn1/libcrypto-lib-x_sig.o", + "crypto/asn1/libcrypto-lib-x_spki.o", + "crypto/asn1/libcrypto-lib-x_val.o", + "crypto/async/arch/libcrypto-lib-async_null.o", + "crypto/async/arch/libcrypto-lib-async_posix.o", + "crypto/async/arch/libcrypto-lib-async_win.o", + "crypto/async/libcrypto-lib-async.o", + "crypto/async/libcrypto-lib-async_err.o", + "crypto/async/libcrypto-lib-async_wait.o", + "crypto/bf/libcrypto-lib-bf_cfb64.o", + "crypto/bf/libcrypto-lib-bf_ecb.o", + "crypto/bf/libcrypto-lib-bf_enc.o", + "crypto/bf/libcrypto-lib-bf_ofb64.o", + "crypto/bf/libcrypto-lib-bf_skey.o", + "crypto/bio/libcrypto-lib-bf_buff.o", + "crypto/bio/libcrypto-lib-bf_lbuf.o", + "crypto/bio/libcrypto-lib-bf_nbio.o", + "crypto/bio/libcrypto-lib-bf_null.o", + "crypto/bio/libcrypto-lib-bf_prefix.o", + "crypto/bio/libcrypto-lib-bf_readbuff.o", + "crypto/bio/libcrypto-lib-bio_addr.o", + "crypto/bio/libcrypto-lib-bio_cb.o", + "crypto/bio/libcrypto-lib-bio_dump.o", + "crypto/bio/libcrypto-lib-bio_err.o", + "crypto/bio/libcrypto-lib-bio_lib.o", + "crypto/bio/libcrypto-lib-bio_meth.o", + "crypto/bio/libcrypto-lib-bio_print.o", + "crypto/bio/libcrypto-lib-bio_sock.o", + "crypto/bio/libcrypto-lib-bio_sock2.o", + "crypto/bio/libcrypto-lib-bss_acpt.o", + "crypto/bio/libcrypto-lib-bss_bio.o", + "crypto/bio/libcrypto-lib-bss_conn.o", + "crypto/bio/libcrypto-lib-bss_core.o", + "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", + "crypto/bio/libcrypto-lib-bss_fd.o", + "crypto/bio/libcrypto-lib-bss_file.o", + "crypto/bio/libcrypto-lib-bss_log.o", + "crypto/bio/libcrypto-lib-bss_mem.o", + "crypto/bio/libcrypto-lib-bss_null.o", + "crypto/bio/libcrypto-lib-bss_sock.o", + "crypto/bio/libcrypto-lib-ossl_core_bio.o", + "crypto/bn/libcrypto-lib-bn_add.o", + "crypto/bn/libcrypto-lib-bn_asm.o", + "crypto/bn/libcrypto-lib-bn_blind.o", + "crypto/bn/libcrypto-lib-bn_const.o", + "crypto/bn/libcrypto-lib-bn_conv.o", + "crypto/bn/libcrypto-lib-bn_ctx.o", + "crypto/bn/libcrypto-lib-bn_depr.o", + "crypto/bn/libcrypto-lib-bn_dh.o", + "crypto/bn/libcrypto-lib-bn_div.o", + "crypto/bn/libcrypto-lib-bn_err.o", + "crypto/bn/libcrypto-lib-bn_exp.o", + "crypto/bn/libcrypto-lib-bn_exp2.o", + "crypto/bn/libcrypto-lib-bn_gcd.o", + "crypto/bn/libcrypto-lib-bn_gf2m.o", + "crypto/bn/libcrypto-lib-bn_intern.o", + "crypto/bn/libcrypto-lib-bn_kron.o", + "crypto/bn/libcrypto-lib-bn_lib.o", + "crypto/bn/libcrypto-lib-bn_mod.o", + "crypto/bn/libcrypto-lib-bn_mont.o", + "crypto/bn/libcrypto-lib-bn_mpi.o", + "crypto/bn/libcrypto-lib-bn_mul.o", + "crypto/bn/libcrypto-lib-bn_nist.o", + "crypto/bn/libcrypto-lib-bn_prime.o", + "crypto/bn/libcrypto-lib-bn_print.o", + "crypto/bn/libcrypto-lib-bn_rand.o", + "crypto/bn/libcrypto-lib-bn_recp.o", + "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o", + "crypto/bn/libcrypto-lib-bn_shift.o", + "crypto/bn/libcrypto-lib-bn_sqr.o", + "crypto/bn/libcrypto-lib-bn_sqrt.o", + "crypto/bn/libcrypto-lib-bn_srp.o", + "crypto/bn/libcrypto-lib-bn_word.o", + "crypto/bn/libcrypto-lib-bn_x931p.o", + "crypto/buffer/libcrypto-lib-buf_err.o", + "crypto/buffer/libcrypto-lib-buffer.o", + "crypto/camellia/libcrypto-lib-camellia.o", + "crypto/camellia/libcrypto-lib-cmll_cbc.o", + "crypto/camellia/libcrypto-lib-cmll_cfb.o", + "crypto/camellia/libcrypto-lib-cmll_ctr.o", + "crypto/camellia/libcrypto-lib-cmll_ecb.o", + "crypto/camellia/libcrypto-lib-cmll_misc.o", + "crypto/camellia/libcrypto-lib-cmll_ofb.o", + "crypto/cast/libcrypto-lib-c_cfb64.o", + "crypto/cast/libcrypto-lib-c_ecb.o", + "crypto/cast/libcrypto-lib-c_enc.o", + "crypto/cast/libcrypto-lib-c_ofb64.o", + "crypto/cast/libcrypto-lib-c_skey.o", + "crypto/chacha/libcrypto-lib-chacha-riscv64-v-zbb-zvkb.o", + "crypto/chacha/libcrypto-lib-chacha-riscv64-v-zbb.o", + "crypto/chacha/libcrypto-lib-chacha_enc.o", + "crypto/chacha/libcrypto-lib-chacha_riscv.o", + "crypto/cmac/libcrypto-lib-cmac.o", + "crypto/cmp/libcrypto-lib-cmp_asn.o", + "crypto/cmp/libcrypto-lib-cmp_client.o", + "crypto/cmp/libcrypto-lib-cmp_ctx.o", + "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", + "crypto/cmp/libcrypto-lib-cmp_hdr.o", + "crypto/cmp/libcrypto-lib-cmp_http.o", + "crypto/cmp/libcrypto-lib-cmp_msg.o", + "crypto/cmp/libcrypto-lib-cmp_protect.o", + "crypto/cmp/libcrypto-lib-cmp_server.o", + "crypto/cmp/libcrypto-lib-cmp_status.o", + "crypto/cmp/libcrypto-lib-cmp_util.o", + "crypto/cmp/libcrypto-lib-cmp_vfy.o", + "crypto/cms/libcrypto-lib-cms_asn1.o", + "crypto/cms/libcrypto-lib-cms_att.o", + "crypto/cms/libcrypto-lib-cms_cd.o", + "crypto/cms/libcrypto-lib-cms_dd.o", + "crypto/cms/libcrypto-lib-cms_dh.o", + "crypto/cms/libcrypto-lib-cms_ec.o", + "crypto/cms/libcrypto-lib-cms_enc.o", + "crypto/cms/libcrypto-lib-cms_env.o", + "crypto/cms/libcrypto-lib-cms_err.o", + "crypto/cms/libcrypto-lib-cms_ess.o", + "crypto/cms/libcrypto-lib-cms_io.o", + "crypto/cms/libcrypto-lib-cms_kari.o", + "crypto/cms/libcrypto-lib-cms_lib.o", + "crypto/cms/libcrypto-lib-cms_pwri.o", + "crypto/cms/libcrypto-lib-cms_rsa.o", + "crypto/cms/libcrypto-lib-cms_sd.o", + "crypto/cms/libcrypto-lib-cms_smime.o", + "crypto/comp/libcrypto-lib-c_brotli.o", + "crypto/comp/libcrypto-lib-c_zlib.o", + "crypto/comp/libcrypto-lib-c_zstd.o", + "crypto/comp/libcrypto-lib-comp_err.o", + "crypto/comp/libcrypto-lib-comp_lib.o", + "crypto/conf/libcrypto-lib-conf_api.o", + "crypto/conf/libcrypto-lib-conf_def.o", + "crypto/conf/libcrypto-lib-conf_err.o", + "crypto/conf/libcrypto-lib-conf_lib.o", + "crypto/conf/libcrypto-lib-conf_mall.o", + "crypto/conf/libcrypto-lib-conf_mod.o", + "crypto/conf/libcrypto-lib-conf_sap.o", + "crypto/conf/libcrypto-lib-conf_ssl.o", + "crypto/crmf/libcrypto-lib-crmf_asn.o", + "crypto/crmf/libcrypto-lib-crmf_err.o", + "crypto/crmf/libcrypto-lib-crmf_lib.o", + "crypto/crmf/libcrypto-lib-crmf_pbm.o", + "crypto/ct/libcrypto-lib-ct_b64.o", + "crypto/ct/libcrypto-lib-ct_err.o", + "crypto/ct/libcrypto-lib-ct_log.o", + "crypto/ct/libcrypto-lib-ct_oct.o", + "crypto/ct/libcrypto-lib-ct_policy.o", + "crypto/ct/libcrypto-lib-ct_prn.o", + "crypto/ct/libcrypto-lib-ct_sct.o", + "crypto/ct/libcrypto-lib-ct_sct_ctx.o", + "crypto/ct/libcrypto-lib-ct_vfy.o", + "crypto/ct/libcrypto-lib-ct_x509v3.o", + "crypto/des/libcrypto-lib-cbc_cksm.o", + "crypto/des/libcrypto-lib-cbc_enc.o", + "crypto/des/libcrypto-lib-cfb64ede.o", + "crypto/des/libcrypto-lib-cfb64enc.o", + "crypto/des/libcrypto-lib-cfb_enc.o", + "crypto/des/libcrypto-lib-des_enc.o", + "crypto/des/libcrypto-lib-ecb3_enc.o", + "crypto/des/libcrypto-lib-ecb_enc.o", + "crypto/des/libcrypto-lib-fcrypt.o", + "crypto/des/libcrypto-lib-fcrypt_b.o", + "crypto/des/libcrypto-lib-ofb64ede.o", + "crypto/des/libcrypto-lib-ofb64enc.o", + "crypto/des/libcrypto-lib-ofb_enc.o", + "crypto/des/libcrypto-lib-pcbc_enc.o", + "crypto/des/libcrypto-lib-qud_cksm.o", + "crypto/des/libcrypto-lib-rand_key.o", + "crypto/des/libcrypto-lib-set_key.o", + "crypto/des/libcrypto-lib-str2key.o", + "crypto/des/libcrypto-lib-xcbc_enc.o", + "crypto/dh/libcrypto-lib-dh_ameth.o", + "crypto/dh/libcrypto-lib-dh_asn1.o", + "crypto/dh/libcrypto-lib-dh_backend.o", + "crypto/dh/libcrypto-lib-dh_check.o", + "crypto/dh/libcrypto-lib-dh_depr.o", + "crypto/dh/libcrypto-lib-dh_err.o", + "crypto/dh/libcrypto-lib-dh_gen.o", + "crypto/dh/libcrypto-lib-dh_group_params.o", + "crypto/dh/libcrypto-lib-dh_kdf.o", + "crypto/dh/libcrypto-lib-dh_key.o", + "crypto/dh/libcrypto-lib-dh_lib.o", + "crypto/dh/libcrypto-lib-dh_meth.o", + "crypto/dh/libcrypto-lib-dh_pmeth.o", + "crypto/dh/libcrypto-lib-dh_prn.o", + "crypto/dh/libcrypto-lib-dh_rfc5114.o", + "crypto/dsa/libcrypto-lib-dsa_ameth.o", + "crypto/dsa/libcrypto-lib-dsa_asn1.o", + "crypto/dsa/libcrypto-lib-dsa_backend.o", + "crypto/dsa/libcrypto-lib-dsa_check.o", + "crypto/dsa/libcrypto-lib-dsa_depr.o", + "crypto/dsa/libcrypto-lib-dsa_err.o", + "crypto/dsa/libcrypto-lib-dsa_gen.o", + "crypto/dsa/libcrypto-lib-dsa_key.o", + "crypto/dsa/libcrypto-lib-dsa_lib.o", + "crypto/dsa/libcrypto-lib-dsa_meth.o", + "crypto/dsa/libcrypto-lib-dsa_ossl.o", + "crypto/dsa/libcrypto-lib-dsa_pmeth.o", + "crypto/dsa/libcrypto-lib-dsa_prn.o", + "crypto/dsa/libcrypto-lib-dsa_sign.o", + "crypto/dsa/libcrypto-lib-dsa_vrf.o", + "crypto/dso/libcrypto-lib-dso_dl.o", + "crypto/dso/libcrypto-lib-dso_dlfcn.o", + "crypto/dso/libcrypto-lib-dso_err.o", + "crypto/dso/libcrypto-lib-dso_lib.o", + "crypto/dso/libcrypto-lib-dso_openssl.o", + "crypto/dso/libcrypto-lib-dso_vms.o", + "crypto/dso/libcrypto-lib-dso_win32.o", + "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o", + "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o", + "crypto/ec/curve448/libcrypto-lib-curve448.o", + "crypto/ec/curve448/libcrypto-lib-curve448_tables.o", + "crypto/ec/curve448/libcrypto-lib-eddsa.o", + "crypto/ec/curve448/libcrypto-lib-f_generic.o", + "crypto/ec/curve448/libcrypto-lib-scalar.o", + "crypto/ec/libcrypto-lib-curve25519.o", + "crypto/ec/libcrypto-lib-ec2_oct.o", + "crypto/ec/libcrypto-lib-ec2_smpl.o", + "crypto/ec/libcrypto-lib-ec_ameth.o", + "crypto/ec/libcrypto-lib-ec_asn1.o", + "crypto/ec/libcrypto-lib-ec_backend.o", + "crypto/ec/libcrypto-lib-ec_check.o", + "crypto/ec/libcrypto-lib-ec_curve.o", + "crypto/ec/libcrypto-lib-ec_cvt.o", + "crypto/ec/libcrypto-lib-ec_deprecated.o", + "crypto/ec/libcrypto-lib-ec_err.o", + "crypto/ec/libcrypto-lib-ec_key.o", + "crypto/ec/libcrypto-lib-ec_kmeth.o", + "crypto/ec/libcrypto-lib-ec_lib.o", + "crypto/ec/libcrypto-lib-ec_mult.o", + "crypto/ec/libcrypto-lib-ec_oct.o", + "crypto/ec/libcrypto-lib-ec_pmeth.o", + "crypto/ec/libcrypto-lib-ec_print.o", + "crypto/ec/libcrypto-lib-ecdh_kdf.o", + "crypto/ec/libcrypto-lib-ecdh_ossl.o", + "crypto/ec/libcrypto-lib-ecdsa_ossl.o", + "crypto/ec/libcrypto-lib-ecdsa_sign.o", + "crypto/ec/libcrypto-lib-ecdsa_vrf.o", + "crypto/ec/libcrypto-lib-eck_prn.o", + "crypto/ec/libcrypto-lib-ecp_mont.o", + "crypto/ec/libcrypto-lib-ecp_nist.o", + "crypto/ec/libcrypto-lib-ecp_oct.o", + "crypto/ec/libcrypto-lib-ecp_smpl.o", + "crypto/ec/libcrypto-lib-ecx_backend.o", + "crypto/ec/libcrypto-lib-ecx_key.o", + "crypto/ec/libcrypto-lib-ecx_meth.o", + "crypto/encode_decode/libcrypto-lib-decoder_err.o", + "crypto/encode_decode/libcrypto-lib-decoder_lib.o", + "crypto/encode_decode/libcrypto-lib-decoder_meth.o", + "crypto/encode_decode/libcrypto-lib-decoder_pkey.o", + "crypto/encode_decode/libcrypto-lib-encoder_err.o", + "crypto/encode_decode/libcrypto-lib-encoder_lib.o", + "crypto/encode_decode/libcrypto-lib-encoder_meth.o", + "crypto/encode_decode/libcrypto-lib-encoder_pkey.o", + "crypto/engine/libcrypto-lib-eng_all.o", + "crypto/engine/libcrypto-lib-eng_cnf.o", + "crypto/engine/libcrypto-lib-eng_ctrl.o", + "crypto/engine/libcrypto-lib-eng_dyn.o", + "crypto/engine/libcrypto-lib-eng_err.o", + "crypto/engine/libcrypto-lib-eng_fat.o", + "crypto/engine/libcrypto-lib-eng_init.o", + "crypto/engine/libcrypto-lib-eng_lib.o", + "crypto/engine/libcrypto-lib-eng_list.o", + "crypto/engine/libcrypto-lib-eng_openssl.o", + "crypto/engine/libcrypto-lib-eng_pkey.o", + "crypto/engine/libcrypto-lib-eng_rdrand.o", + "crypto/engine/libcrypto-lib-eng_table.o", + "crypto/engine/libcrypto-lib-tb_asnmth.o", + "crypto/engine/libcrypto-lib-tb_cipher.o", + "crypto/engine/libcrypto-lib-tb_dh.o", + "crypto/engine/libcrypto-lib-tb_digest.o", + "crypto/engine/libcrypto-lib-tb_dsa.o", + "crypto/engine/libcrypto-lib-tb_eckey.o", + "crypto/engine/libcrypto-lib-tb_pkmeth.o", + "crypto/engine/libcrypto-lib-tb_rand.o", + "crypto/engine/libcrypto-lib-tb_rsa.o", + "crypto/err/libcrypto-lib-err.o", + "crypto/err/libcrypto-lib-err_all.o", + "crypto/err/libcrypto-lib-err_all_legacy.o", + "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", + "crypto/ess/libcrypto-lib-ess_asn1.o", + "crypto/ess/libcrypto-lib-ess_err.o", + "crypto/ess/libcrypto-lib-ess_lib.o", + "crypto/evp/libcrypto-lib-asymcipher.o", + "crypto/evp/libcrypto-lib-bio_b64.o", + "crypto/evp/libcrypto-lib-bio_enc.o", + "crypto/evp/libcrypto-lib-bio_md.o", + "crypto/evp/libcrypto-lib-bio_ok.o", + "crypto/evp/libcrypto-lib-c_allc.o", + "crypto/evp/libcrypto-lib-c_alld.o", + "crypto/evp/libcrypto-lib-cmeth_lib.o", + "crypto/evp/libcrypto-lib-ctrl_params_translate.o", + "crypto/evp/libcrypto-lib-dh_ctrl.o", + "crypto/evp/libcrypto-lib-dh_support.o", + "crypto/evp/libcrypto-lib-digest.o", + "crypto/evp/libcrypto-lib-dsa_ctrl.o", + "crypto/evp/libcrypto-lib-e_aes.o", + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o", + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o", + "crypto/evp/libcrypto-lib-e_aria.o", + "crypto/evp/libcrypto-lib-e_bf.o", + "crypto/evp/libcrypto-lib-e_camellia.o", + "crypto/evp/libcrypto-lib-e_cast.o", + "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o", + "crypto/evp/libcrypto-lib-e_des.o", + "crypto/evp/libcrypto-lib-e_des3.o", + "crypto/evp/libcrypto-lib-e_idea.o", + "crypto/evp/libcrypto-lib-e_null.o", + "crypto/evp/libcrypto-lib-e_old.o", + "crypto/evp/libcrypto-lib-e_rc2.o", + "crypto/evp/libcrypto-lib-e_rc4.o", + "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o", + "crypto/evp/libcrypto-lib-e_rc5.o", + "crypto/evp/libcrypto-lib-e_seed.o", + "crypto/evp/libcrypto-lib-e_sm4.o", + "crypto/evp/libcrypto-lib-e_xcbc_d.o", + "crypto/evp/libcrypto-lib-ec_ctrl.o", + "crypto/evp/libcrypto-lib-ec_support.o", + "crypto/evp/libcrypto-lib-encode.o", + "crypto/evp/libcrypto-lib-evp_cnf.o", + "crypto/evp/libcrypto-lib-evp_enc.o", + "crypto/evp/libcrypto-lib-evp_err.o", + "crypto/evp/libcrypto-lib-evp_fetch.o", + "crypto/evp/libcrypto-lib-evp_key.o", + "crypto/evp/libcrypto-lib-evp_lib.o", + "crypto/evp/libcrypto-lib-evp_pbe.o", + "crypto/evp/libcrypto-lib-evp_pkey.o", + "crypto/evp/libcrypto-lib-evp_rand.o", + "crypto/evp/libcrypto-lib-evp_utils.o", + "crypto/evp/libcrypto-lib-exchange.o", + "crypto/evp/libcrypto-lib-kdf_lib.o", + "crypto/evp/libcrypto-lib-kdf_meth.o", + "crypto/evp/libcrypto-lib-kem.o", + "crypto/evp/libcrypto-lib-keymgmt_lib.o", + "crypto/evp/libcrypto-lib-keymgmt_meth.o", + "crypto/evp/libcrypto-lib-legacy_blake2.o", + "crypto/evp/libcrypto-lib-legacy_md4.o", + "crypto/evp/libcrypto-lib-legacy_md5.o", + "crypto/evp/libcrypto-lib-legacy_md5_sha1.o", + "crypto/evp/libcrypto-lib-legacy_mdc2.o", + "crypto/evp/libcrypto-lib-legacy_ripemd.o", + "crypto/evp/libcrypto-lib-legacy_sha.o", + "crypto/evp/libcrypto-lib-legacy_wp.o", + "crypto/evp/libcrypto-lib-m_null.o", + "crypto/evp/libcrypto-lib-m_sigver.o", + "crypto/evp/libcrypto-lib-mac_lib.o", + "crypto/evp/libcrypto-lib-mac_meth.o", + "crypto/evp/libcrypto-lib-names.o", + "crypto/evp/libcrypto-lib-p5_crpt.o", + "crypto/evp/libcrypto-lib-p5_crpt2.o", + "crypto/evp/libcrypto-lib-p_dec.o", + "crypto/evp/libcrypto-lib-p_enc.o", + "crypto/evp/libcrypto-lib-p_legacy.o", + "crypto/evp/libcrypto-lib-p_lib.o", + "crypto/evp/libcrypto-lib-p_open.o", + "crypto/evp/libcrypto-lib-p_seal.o", + "crypto/evp/libcrypto-lib-p_sign.o", + "crypto/evp/libcrypto-lib-p_verify.o", + "crypto/evp/libcrypto-lib-pbe_scrypt.o", + "crypto/evp/libcrypto-lib-pmeth_check.o", + "crypto/evp/libcrypto-lib-pmeth_gn.o", + "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", + "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", + "crypto/ffc/libcrypto-lib-ffc_backend.o", + "crypto/ffc/libcrypto-lib-ffc_dh.o", + "crypto/ffc/libcrypto-lib-ffc_key_generate.o", + "crypto/ffc/libcrypto-lib-ffc_key_validate.o", + "crypto/ffc/libcrypto-lib-ffc_params.o", + "crypto/ffc/libcrypto-lib-ffc_params_generate.o", + "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", + "crypto/http/libcrypto-lib-http_client.o", + "crypto/http/libcrypto-lib-http_err.o", + "crypto/http/libcrypto-lib-http_lib.o", + "crypto/idea/libcrypto-lib-i_cbc.o", + "crypto/idea/libcrypto-lib-i_cfb64.o", + "crypto/idea/libcrypto-lib-i_ecb.o", + "crypto/idea/libcrypto-lib-i_ofb64.o", + "crypto/idea/libcrypto-lib-i_skey.o", + "crypto/kdf/libcrypto-lib-kdf_err.o", + "crypto/lhash/libcrypto-lib-lh_stats.o", + "crypto/lhash/libcrypto-lib-lhash.o", + "crypto/libcrypto-lib-asn1_dsa.o", + "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", + "crypto/libcrypto-lib-context.o", + "crypto/libcrypto-lib-core_algorithm.o", + "crypto/libcrypto-lib-core_fetch.o", + "crypto/libcrypto-lib-core_namemap.o", + "crypto/libcrypto-lib-cpt_err.o", + "crypto/libcrypto-lib-cpuid.o", + "crypto/libcrypto-lib-cryptlib.o", + "crypto/libcrypto-lib-ctype.o", + "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", + "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", + "crypto/libcrypto-lib-ebcdic.o", + "crypto/libcrypto-lib-ex_data.o", + "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", + "crypto/libcrypto-lib-info.o", + "crypto/libcrypto-lib-init.o", + "crypto/libcrypto-lib-initthread.o", + "crypto/libcrypto-lib-mem.o", + "crypto/libcrypto-lib-mem_sec.o", + "crypto/libcrypto-lib-o_dir.o", + "crypto/libcrypto-lib-o_fopen.o", + "crypto/libcrypto-lib-o_init.o", + "crypto/libcrypto-lib-o_str.o", + "crypto/libcrypto-lib-o_time.o", + "crypto/libcrypto-lib-packet.o", + "crypto/libcrypto-lib-param_build.o", + "crypto/libcrypto-lib-param_build_set.o", + "crypto/libcrypto-lib-params.o", + "crypto/libcrypto-lib-params_dup.o", + "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", + "crypto/libcrypto-lib-passphrase.o", + "crypto/libcrypto-lib-provider.o", + "crypto/libcrypto-lib-provider_child.o", + "crypto/libcrypto-lib-provider_conf.o", + "crypto/libcrypto-lib-provider_core.o", + "crypto/libcrypto-lib-provider_predefined.o", + "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", + "crypto/libcrypto-lib-riscv64cpuid.o", + "crypto/libcrypto-lib-riscvcap.o", + "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", + "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", + "crypto/libcrypto-lib-threads_lib.o", + "crypto/libcrypto-lib-threads_none.o", + "crypto/libcrypto-lib-threads_pthread.o", + "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", + "crypto/libcrypto-lib-trace.o", + "crypto/libcrypto-lib-uid.o", + "crypto/md4/libcrypto-lib-md4_dgst.o", + "crypto/md4/libcrypto-lib-md4_one.o", + "crypto/md5/libcrypto-lib-md5_dgst.o", + "crypto/md5/libcrypto-lib-md5_one.o", + "crypto/md5/libcrypto-lib-md5_sha1.o", + "crypto/mdc2/libcrypto-lib-mdc2_one.o", + "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/modes/libcrypto-lib-aes-gcm-riscv64-zvkb-zvkg-zvkned.o", + "crypto/modes/libcrypto-lib-cbc128.o", + "crypto/modes/libcrypto-lib-ccm128.o", + "crypto/modes/libcrypto-lib-cfb128.o", + "crypto/modes/libcrypto-lib-ctr128.o", + "crypto/modes/libcrypto-lib-cts128.o", + "crypto/modes/libcrypto-lib-gcm128.o", + "crypto/modes/libcrypto-lib-ghash-riscv64-zvkb-zvbc.o", + "crypto/modes/libcrypto-lib-ghash-riscv64-zvkg.o", + "crypto/modes/libcrypto-lib-ghash-riscv64.o", + "crypto/modes/libcrypto-lib-ocb128.o", + "crypto/modes/libcrypto-lib-ofb128.o", + "crypto/modes/libcrypto-lib-siv128.o", + "crypto/modes/libcrypto-lib-wrap128.o", + "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", + "crypto/objects/libcrypto-lib-o_names.o", + "crypto/objects/libcrypto-lib-obj_dat.o", + "crypto/objects/libcrypto-lib-obj_err.o", + "crypto/objects/libcrypto-lib-obj_lib.o", + "crypto/objects/libcrypto-lib-obj_xref.o", + "crypto/ocsp/libcrypto-lib-ocsp_asn.o", + "crypto/ocsp/libcrypto-lib-ocsp_cl.o", + "crypto/ocsp/libcrypto-lib-ocsp_err.o", + "crypto/ocsp/libcrypto-lib-ocsp_ext.o", + "crypto/ocsp/libcrypto-lib-ocsp_http.o", + "crypto/ocsp/libcrypto-lib-ocsp_lib.o", + "crypto/ocsp/libcrypto-lib-ocsp_prn.o", + "crypto/ocsp/libcrypto-lib-ocsp_srv.o", + "crypto/ocsp/libcrypto-lib-ocsp_vfy.o", + "crypto/ocsp/libcrypto-lib-v3_ocsp.o", + "crypto/pem/libcrypto-lib-pem_all.o", + "crypto/pem/libcrypto-lib-pem_err.o", + "crypto/pem/libcrypto-lib-pem_info.o", + "crypto/pem/libcrypto-lib-pem_lib.o", + "crypto/pem/libcrypto-lib-pem_oth.o", + "crypto/pem/libcrypto-lib-pem_pk8.o", + "crypto/pem/libcrypto-lib-pem_pkey.o", + "crypto/pem/libcrypto-lib-pem_sign.o", + "crypto/pem/libcrypto-lib-pem_x509.o", + "crypto/pem/libcrypto-lib-pem_xaux.o", + "crypto/pem/libcrypto-lib-pvkfmt.o", + "crypto/pkcs12/libcrypto-lib-p12_add.o", + "crypto/pkcs12/libcrypto-lib-p12_asn.o", + "crypto/pkcs12/libcrypto-lib-p12_attr.o", + "crypto/pkcs12/libcrypto-lib-p12_crpt.o", + "crypto/pkcs12/libcrypto-lib-p12_crt.o", + "crypto/pkcs12/libcrypto-lib-p12_decr.o", + "crypto/pkcs12/libcrypto-lib-p12_init.o", + "crypto/pkcs12/libcrypto-lib-p12_key.o", + "crypto/pkcs12/libcrypto-lib-p12_kiss.o", + "crypto/pkcs12/libcrypto-lib-p12_mutl.o", + "crypto/pkcs12/libcrypto-lib-p12_npas.o", + "crypto/pkcs12/libcrypto-lib-p12_p8d.o", + "crypto/pkcs12/libcrypto-lib-p12_p8e.o", + "crypto/pkcs12/libcrypto-lib-p12_sbag.o", + "crypto/pkcs12/libcrypto-lib-p12_utl.o", + "crypto/pkcs12/libcrypto-lib-pk12err.o", + "crypto/pkcs7/libcrypto-lib-bio_pk7.o", + "crypto/pkcs7/libcrypto-lib-pk7_asn1.o", + "crypto/pkcs7/libcrypto-lib-pk7_attr.o", + "crypto/pkcs7/libcrypto-lib-pk7_doit.o", + "crypto/pkcs7/libcrypto-lib-pk7_lib.o", + "crypto/pkcs7/libcrypto-lib-pk7_mime.o", + "crypto/pkcs7/libcrypto-lib-pk7_smime.o", + "crypto/pkcs7/libcrypto-lib-pkcs7err.o", + "crypto/poly1305/libcrypto-lib-poly1305.o", + "crypto/property/libcrypto-lib-defn_cache.o", + "crypto/property/libcrypto-lib-property.o", + "crypto/property/libcrypto-lib-property_err.o", + "crypto/property/libcrypto-lib-property_parse.o", + "crypto/property/libcrypto-lib-property_query.o", + "crypto/property/libcrypto-lib-property_string.o", + "crypto/rand/libcrypto-lib-prov_seed.o", + "crypto/rand/libcrypto-lib-rand_deprecated.o", + "crypto/rand/libcrypto-lib-rand_err.o", + "crypto/rand/libcrypto-lib-rand_lib.o", + "crypto/rand/libcrypto-lib-rand_meth.o", + "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", + "crypto/rand/libcrypto-lib-randfile.o", + "crypto/rc2/libcrypto-lib-rc2_cbc.o", + "crypto/rc2/libcrypto-lib-rc2_ecb.o", + "crypto/rc2/libcrypto-lib-rc2_skey.o", + "crypto/rc2/libcrypto-lib-rc2cfb64.o", + "crypto/rc2/libcrypto-lib-rc2ofb64.o", + "crypto/rc4/libcrypto-lib-rc4_enc.o", + "crypto/rc4/libcrypto-lib-rc4_skey.o", + "crypto/ripemd/libcrypto-lib-rmd_dgst.o", + "crypto/ripemd/libcrypto-lib-rmd_one.o", + "crypto/rsa/libcrypto-lib-rsa_ameth.o", + "crypto/rsa/libcrypto-lib-rsa_asn1.o", + "crypto/rsa/libcrypto-lib-rsa_backend.o", + "crypto/rsa/libcrypto-lib-rsa_chk.o", + "crypto/rsa/libcrypto-lib-rsa_crpt.o", + "crypto/rsa/libcrypto-lib-rsa_depr.o", + "crypto/rsa/libcrypto-lib-rsa_err.o", + "crypto/rsa/libcrypto-lib-rsa_gen.o", + "crypto/rsa/libcrypto-lib-rsa_lib.o", + "crypto/rsa/libcrypto-lib-rsa_meth.o", + "crypto/rsa/libcrypto-lib-rsa_mp.o", + "crypto/rsa/libcrypto-lib-rsa_mp_names.o", + "crypto/rsa/libcrypto-lib-rsa_none.o", + "crypto/rsa/libcrypto-lib-rsa_oaep.o", + "crypto/rsa/libcrypto-lib-rsa_ossl.o", + "crypto/rsa/libcrypto-lib-rsa_pk1.o", + "crypto/rsa/libcrypto-lib-rsa_pmeth.o", + "crypto/rsa/libcrypto-lib-rsa_prn.o", + "crypto/rsa/libcrypto-lib-rsa_pss.o", + "crypto/rsa/libcrypto-lib-rsa_saos.o", + "crypto/rsa/libcrypto-lib-rsa_schemes.o", + "crypto/rsa/libcrypto-lib-rsa_sign.o", + "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o", + "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o", + "crypto/rsa/libcrypto-lib-rsa_x931.o", + "crypto/rsa/libcrypto-lib-rsa_x931g.o", + "crypto/seed/libcrypto-lib-seed.o", + "crypto/seed/libcrypto-lib-seed_cbc.o", + "crypto/seed/libcrypto-lib-seed_cfb.o", + "crypto/seed/libcrypto-lib-seed_ecb.o", + "crypto/seed/libcrypto-lib-seed_ofb.o", + "crypto/sha/libcrypto-lib-keccak1600.o", + "crypto/sha/libcrypto-lib-sha1_one.o", + "crypto/sha/libcrypto-lib-sha1dgst.o", + "crypto/sha/libcrypto-lib-sha256-riscv64-zvkb-zvknha_or_zvknhb.o", + "crypto/sha/libcrypto-lib-sha256.o", + "crypto/sha/libcrypto-lib-sha3.o", + "crypto/sha/libcrypto-lib-sha512-riscv64-zvkb-zvknhb.o", + "crypto/sha/libcrypto-lib-sha512.o", + "crypto/sha/libcrypto-lib-sha_riscv.o", + "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/sm2/libcrypto-lib-sm2_crypt.o", + "crypto/sm2/libcrypto-lib-sm2_err.o", + "crypto/sm2/libcrypto-lib-sm2_key.o", + "crypto/sm2/libcrypto-lib-sm2_sign.o", + "crypto/sm3/libcrypto-lib-legacy_sm3.o", + "crypto/sm3/libcrypto-lib-sm3-riscv64-zvksh.o", + "crypto/sm3/libcrypto-lib-sm3.o", + "crypto/sm3/libcrypto-lib-sm3_riscv.o", + "crypto/sm4/libcrypto-lib-sm4-riscv64-zvksed.o", + "crypto/sm4/libcrypto-lib-sm4.o", + "crypto/srp/libcrypto-lib-srp_lib.o", + "crypto/srp/libcrypto-lib-srp_vfy.o", + "crypto/stack/libcrypto-lib-stack.o", + "crypto/store/libcrypto-lib-store_err.o", + "crypto/store/libcrypto-lib-store_init.o", + "crypto/store/libcrypto-lib-store_lib.o", + "crypto/store/libcrypto-lib-store_meth.o", + "crypto/store/libcrypto-lib-store_register.o", + "crypto/store/libcrypto-lib-store_result.o", + "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/ts/libcrypto-lib-ts_asn1.o", + "crypto/ts/libcrypto-lib-ts_conf.o", + "crypto/ts/libcrypto-lib-ts_err.o", + "crypto/ts/libcrypto-lib-ts_lib.o", + "crypto/ts/libcrypto-lib-ts_req_print.o", + "crypto/ts/libcrypto-lib-ts_req_utils.o", + "crypto/ts/libcrypto-lib-ts_rsp_print.o", + "crypto/ts/libcrypto-lib-ts_rsp_sign.o", + "crypto/ts/libcrypto-lib-ts_rsp_utils.o", + "crypto/ts/libcrypto-lib-ts_rsp_verify.o", + "crypto/ts/libcrypto-lib-ts_verify_ctx.o", + "crypto/txt_db/libcrypto-lib-txt_db.o", + "crypto/ui/libcrypto-lib-ui_err.o", + "crypto/ui/libcrypto-lib-ui_lib.o", + "crypto/ui/libcrypto-lib-ui_null.o", + "crypto/ui/libcrypto-lib-ui_openssl.o", + "crypto/ui/libcrypto-lib-ui_util.o", + "crypto/whrlpool/libcrypto-lib-wp_block.o", + "crypto/whrlpool/libcrypto-lib-wp_dgst.o", + "crypto/x509/libcrypto-lib-by_dir.o", + "crypto/x509/libcrypto-lib-by_file.o", + "crypto/x509/libcrypto-lib-by_store.o", + "crypto/x509/libcrypto-lib-pcy_cache.o", + "crypto/x509/libcrypto-lib-pcy_data.o", + "crypto/x509/libcrypto-lib-pcy_lib.o", + "crypto/x509/libcrypto-lib-pcy_map.o", + "crypto/x509/libcrypto-lib-pcy_node.o", + "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", + "crypto/x509/libcrypto-lib-t_crl.o", + "crypto/x509/libcrypto-lib-t_req.o", + "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", + "crypto/x509/libcrypto-lib-v3_addr.o", + "crypto/x509/libcrypto-lib-v3_admis.o", + "crypto/x509/libcrypto-lib-v3_akeya.o", + "crypto/x509/libcrypto-lib-v3_akid.o", + "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", + "crypto/x509/libcrypto-lib-v3_bcons.o", + "crypto/x509/libcrypto-lib-v3_bitst.o", + "crypto/x509/libcrypto-lib-v3_conf.o", + "crypto/x509/libcrypto-lib-v3_cpols.o", + "crypto/x509/libcrypto-lib-v3_crld.o", + "crypto/x509/libcrypto-lib-v3_enum.o", + "crypto/x509/libcrypto-lib-v3_extku.o", + "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", + "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", + "crypto/x509/libcrypto-lib-v3_info.o", + "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", + "crypto/x509/libcrypto-lib-v3_ist.o", + "crypto/x509/libcrypto-lib-v3_lib.o", + "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", + "crypto/x509/libcrypto-lib-v3_pci.o", + "crypto/x509/libcrypto-lib-v3_pcia.o", + "crypto/x509/libcrypto-lib-v3_pcons.o", + "crypto/x509/libcrypto-lib-v3_pku.o", + "crypto/x509/libcrypto-lib-v3_pmaps.o", + "crypto/x509/libcrypto-lib-v3_prn.o", + "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", + "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", + "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", + "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", + "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", + "crypto/x509/libcrypto-lib-v3_utf8.o", + "crypto/x509/libcrypto-lib-v3_utl.o", + "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", + "crypto/x509/libcrypto-lib-x509_att.o", + "crypto/x509/libcrypto-lib-x509_cmp.o", + "crypto/x509/libcrypto-lib-x509_d2.o", + "crypto/x509/libcrypto-lib-x509_def.o", + "crypto/x509/libcrypto-lib-x509_err.o", + "crypto/x509/libcrypto-lib-x509_ext.o", + "crypto/x509/libcrypto-lib-x509_lu.o", + "crypto/x509/libcrypto-lib-x509_meth.o", + "crypto/x509/libcrypto-lib-x509_obj.o", + "crypto/x509/libcrypto-lib-x509_r2x.o", + "crypto/x509/libcrypto-lib-x509_req.o", + "crypto/x509/libcrypto-lib-x509_set.o", + "crypto/x509/libcrypto-lib-x509_trust.o", + "crypto/x509/libcrypto-lib-x509_txt.o", + "crypto/x509/libcrypto-lib-x509_v3.o", + "crypto/x509/libcrypto-lib-x509_vfy.o", + "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", + "crypto/x509/libcrypto-lib-x509cset.o", + "crypto/x509/libcrypto-lib-x509name.o", + "crypto/x509/libcrypto-lib-x509rset.o", + "crypto/x509/libcrypto-lib-x509spki.o", + "crypto/x509/libcrypto-lib-x509type.o", + "crypto/x509/libcrypto-lib-x_all.o", + "crypto/x509/libcrypto-lib-x_attrib.o", + "crypto/x509/libcrypto-lib-x_crl.o", + "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", + "crypto/x509/libcrypto-lib-x_name.o", + "crypto/x509/libcrypto-lib-x_pubkey.o", + "crypto/x509/libcrypto-lib-x_req.o", + "crypto/x509/libcrypto-lib-x_x509.o", + "crypto/x509/libcrypto-lib-x_x509a.o", + "engines/libcrypto-lib-e_capi.o", + "engines/libcrypto-lib-e_padlock.o", + "providers/libcrypto-lib-baseprov.o", + "providers/libcrypto-lib-defltprov.o", + "providers/libcrypto-lib-nullprov.o", + "providers/libcrypto-lib-prov_running.o", + "providers/libdefault.a" + ], + "libssl" => [ + "ssl/libssl-lib-bio_ssl.o", + "ssl/libssl-lib-d1_lib.o", + "ssl/libssl-lib-d1_msg.o", + "ssl/libssl-lib-d1_srtp.o", + "ssl/libssl-lib-methods.o", + "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", + "ssl/libssl-lib-s3_enc.o", + "ssl/libssl-lib-s3_lib.o", + "ssl/libssl-lib-s3_msg.o", + "ssl/libssl-lib-ssl_asn1.o", + "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", + "ssl/libssl-lib-ssl_ciph.o", + "ssl/libssl-lib-ssl_conf.o", + "ssl/libssl-lib-ssl_err_legacy.o", + "ssl/libssl-lib-ssl_init.o", + "ssl/libssl-lib-ssl_lib.o", + "ssl/libssl-lib-ssl_mcnf.o", + "ssl/libssl-lib-ssl_rsa.o", + "ssl/libssl-lib-ssl_rsa_legacy.o", + "ssl/libssl-lib-ssl_sess.o", + "ssl/libssl-lib-ssl_stat.o", + "ssl/libssl-lib-ssl_txt.o", + "ssl/libssl-lib-ssl_utst.o", + "ssl/libssl-lib-t1_enc.o", + "ssl/libssl-lib-t1_lib.o", + "ssl/libssl-lib-t1_trce.o", + "ssl/libssl-lib-tls13_enc.o", + "ssl/libssl-lib-tls_depr.o", + "ssl/libssl-lib-tls_srp.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", + "ssl/record/libssl-lib-rec_layer_d1.o", + "ssl/record/libssl-lib-rec_layer_s3.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", + "ssl/statem/libssl-lib-extensions.o", + "ssl/statem/libssl-lib-extensions_clnt.o", + "ssl/statem/libssl-lib-extensions_cust.o", + "ssl/statem/libssl-lib-extensions_srvr.o", + "ssl/statem/libssl-lib-statem.o", + "ssl/statem/libssl-lib-statem_clnt.o", + "ssl/statem/libssl-lib-statem_dtls.o", + "ssl/statem/libssl-lib-statem_lib.o", + "ssl/statem/libssl-lib-statem_srvr.o" + ], + "providers/common/der/libcommon-lib-der_digests_gen.o" => [ + "providers/common/der/der_digests_gen.c" + ], + "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ + "providers/common/der/der_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_dsa_key.o" => [ + "providers/common/der/der_dsa_key.c" + ], + "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ + "providers/common/der/der_dsa_sig.c" + ], + "providers/common/der/libcommon-lib-der_ec_gen.o" => [ + "providers/common/der/der_ec_gen.c" + ], + "providers/common/der/libcommon-lib-der_ec_key.o" => [ + "providers/common/der/der_ec_key.c" + ], + "providers/common/der/libcommon-lib-der_ec_sig.o" => [ + "providers/common/der/der_ec_sig.c" + ], + "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ + "providers/common/der/der_ecx_gen.c" + ], + "providers/common/der/libcommon-lib-der_ecx_key.o" => [ + "providers/common/der/der_ecx_key.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], + "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ + "providers/common/der/der_rsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_rsa_key.o" => [ + "providers/common/der/der_rsa_key.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], + "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ + "providers/common/der/der_wrap_gen.c" + ], + "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ + "providers/common/der/der_rsa_sig.c" + ], + "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ + "providers/common/der/der_sm2_gen.c" + ], + "providers/common/der/libdefault-lib-der_sm2_key.o" => [ + "providers/common/der/der_sm2_key.c" + ], + "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ + "providers/common/der/der_sm2_sig.c" + ], + "providers/common/der/libfips-lib-der_rsa_sig.o" => [ + "providers/common/der/der_rsa_sig.c" + ], + "providers/common/libcommon-lib-provider_ctx.o" => [ + "providers/common/provider_ctx.c" + ], + "providers/common/libcommon-lib-provider_err.o" => [ + "providers/common/provider_err.c" + ], + "providers/common/libdefault-lib-bio_prov.o" => [ + "providers/common/bio_prov.c" + ], + "providers/common/libdefault-lib-capabilities.o" => [ + "providers/common/capabilities.c" + ], + "providers/common/libdefault-lib-digest_to_nid.o" => [ + "providers/common/digest_to_nid.c" + ], + "providers/common/libdefault-lib-provider_seeding.o" => [ + "providers/common/provider_seeding.c" + ], + "providers/common/libdefault-lib-provider_util.o" => [ + "providers/common/provider_util.c" + ], + "providers/common/libdefault-lib-securitycheck.o" => [ + "providers/common/securitycheck.c" + ], + "providers/common/libdefault-lib-securitycheck_default.o" => [ + "providers/common/securitycheck_default.c" + ], + "providers/common/libfips-lib-bio_prov.o" => [ + "providers/common/bio_prov.c" + ], + "providers/common/libfips-lib-capabilities.o" => [ + "providers/common/capabilities.c" + ], + "providers/common/libfips-lib-digest_to_nid.o" => [ + "providers/common/digest_to_nid.c" + ], + "providers/common/libfips-lib-provider_seeding.o" => [ + "providers/common/provider_seeding.c" + ], + "providers/common/libfips-lib-provider_util.o" => [ + "providers/common/provider_util.c" + ], + "providers/common/libfips-lib-securitycheck.o" => [ + "providers/common/securitycheck.c" + ], + "providers/common/libfips-lib-securitycheck_fips.o" => [ + "providers/common/securitycheck_fips.c" + ], + "providers/fips" => [ + "providers/fips.ld", + "providers/fips/fips-dso-fips_entry.o" + ], + "providers/fips/fips-dso-fips_entry.o" => [ + "providers/fips/fips_entry.c" + ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], + "providers/fips/libfips-lib-fipsprov.o" => [ + "providers/fips/fipsprov.c" + ], + "providers/fips/libfips-lib-self_test.o" => [ + "providers/fips/self_test.c" + ], + "providers/fips/libfips-lib-self_test_kats.o" => [ + "providers/fips/self_test_kats.c" + ], + "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o" => [ + "providers/implementations/asymciphers/rsa_enc.c" + ], + "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o" => [ + "providers/implementations/asymciphers/sm2_enc.c" + ], + "providers/implementations/asymciphers/libfips-lib-rsa_enc.o" => [ + "providers/implementations/asymciphers/rsa_enc.c" + ], + "providers/implementations/ciphers/libcommon-lib-ciphercommon.o" => [ + "providers/implementations/ciphers/ciphercommon.c" + ], + "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o" => [ + "providers/implementations/ciphers/ciphercommon_block.c" + ], + "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o" => [ + "providers/implementations/ciphers/ciphercommon_ccm.c" + ], + "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o" => [ + "providers/implementations/ciphers/ciphercommon_ccm_hw.c" + ], + "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o" => [ + "providers/implementations/ciphers/ciphercommon_gcm.c" + ], + "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o" => [ + "providers/implementations/ciphers/ciphercommon_gcm_hw.c" + ], + "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o" => [ + "providers/implementations/ciphers/ciphercommon_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes.o" => [ + "providers/implementations/ciphers/cipher_aes.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o" => [ + "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o" => [ + "providers/implementations/ciphers/cipher_aes_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o" => [ + "providers/implementations/ciphers/cipher_aes_ocb.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_ocb_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o" => [ + "providers/implementations/ciphers/cipher_aes_wrp.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o" => [ + "providers/implementations/ciphers/cipher_aes_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o" => [ + "providers/implementations/ciphers/cipher_aes_xts_fips.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_xts_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aria.o" => [ + "providers/implementations/ciphers/cipher_aria.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o" => [ + "providers/implementations/ciphers/cipher_aria_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_aria_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o" => [ + "providers/implementations/ciphers/cipher_aria_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_aria_gcm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o" => [ + "providers/implementations/ciphers/cipher_aria_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o" => [ + "providers/implementations/ciphers/cipher_camellia.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o" => [ + "providers/implementations/ciphers/cipher_camellia_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o" => [ + "providers/implementations/ciphers/cipher_chacha20.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o" => [ + "providers/implementations/ciphers/cipher_chacha20_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o" => [ + "providers/implementations/ciphers/cipher_chacha20_poly1305.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o" => [ + "providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_cts.o" => [ + "providers/implementations/ciphers/cipher_cts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_null.o" => [ + "providers/implementations/ciphers/cipher_null.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ + "providers/implementations/ciphers/cipher_sm4.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ + "providers/implementations/ciphers/cipher_tdes.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o" => [ + "providers/implementations/ciphers/cipher_tdes_common.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o" => [ + "providers/implementations/ciphers/cipher_tdes_default.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o" => [ + "providers/implementations/ciphers/cipher_tdes_default_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o" => [ + "providers/implementations/ciphers/cipher_tdes_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o" => [ + "providers/implementations/ciphers/cipher_tdes_wrap.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o" => [ + "providers/implementations/ciphers/cipher_tdes_wrap_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes.o" => [ + "providers/implementations/ciphers/cipher_aes.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o" => [ + "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o" => [ + "providers/implementations/ciphers/cipher_aes_ccm.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_ccm_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o" => [ + "providers/implementations/ciphers/cipher_aes_ocb.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_ocb_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o" => [ + "providers/implementations/ciphers/cipher_aes_wrp.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o" => [ + "providers/implementations/ciphers/cipher_aes_xts.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o" => [ + "providers/implementations/ciphers/cipher_aes_xts_fips.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_xts_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_cts.o" => [ + "providers/implementations/ciphers/cipher_cts.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_tdes.o" => [ + "providers/implementations/ciphers/cipher_tdes.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o" => [ + "providers/implementations/ciphers/cipher_tdes_common.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o" => [ + "providers/implementations/ciphers/cipher_tdes_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o" => [ + "providers/implementations/ciphers/cipher_blowfish.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o" => [ + "providers/implementations/ciphers/cipher_blowfish_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o" => [ + "providers/implementations/ciphers/cipher_cast5.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o" => [ + "providers/implementations/ciphers/cipher_cast5_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_des.o" => [ + "providers/implementations/ciphers/cipher_des.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o" => [ + "providers/implementations/ciphers/cipher_des_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o" => [ + "providers/implementations/ciphers/cipher_desx.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o" => [ + "providers/implementations/ciphers/cipher_desx_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o" => [ + "providers/implementations/ciphers/cipher_idea.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o" => [ + "providers/implementations/ciphers/cipher_idea_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o" => [ + "providers/implementations/ciphers/cipher_rc2.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o" => [ + "providers/implementations/ciphers/cipher_rc2_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o" => [ + "providers/implementations/ciphers/cipher_rc4.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o" => [ + "providers/implementations/ciphers/cipher_rc4_hmac_md5.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o" => [ + "providers/implementations/ciphers/cipher_rc4_hmac_md5_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o" => [ + "providers/implementations/ciphers/cipher_rc4_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o" => [ + "providers/implementations/ciphers/cipher_seed.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o" => [ + "providers/implementations/ciphers/cipher_seed_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o" => [ + "providers/implementations/ciphers/cipher_tdes_common.c" + ], + "providers/implementations/digests/libcommon-lib-digestcommon.o" => [ + "providers/implementations/digests/digestcommon.c" + ], + "providers/implementations/digests/libdefault-lib-blake2_prov.o" => [ + "providers/implementations/digests/blake2_prov.c" + ], + "providers/implementations/digests/libdefault-lib-blake2b_prov.o" => [ + "providers/implementations/digests/blake2b_prov.c" + ], + "providers/implementations/digests/libdefault-lib-blake2s_prov.o" => [ + "providers/implementations/digests/blake2s_prov.c" + ], + "providers/implementations/digests/libdefault-lib-md5_prov.o" => [ + "providers/implementations/digests/md5_prov.c" + ], + "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o" => [ + "providers/implementations/digests/md5_sha1_prov.c" + ], + "providers/implementations/digests/libdefault-lib-null_prov.o" => [ + "providers/implementations/digests/null_prov.c" + ], + "providers/implementations/digests/libdefault-lib-ripemd_prov.o" => [ + "providers/implementations/digests/ripemd_prov.c" + ], + "providers/implementations/digests/libdefault-lib-sha2_prov.o" => [ + "providers/implementations/digests/sha2_prov.c" + ], + "providers/implementations/digests/libdefault-lib-sha3_prov.o" => [ + "providers/implementations/digests/sha3_prov.c" + ], + "providers/implementations/digests/libdefault-lib-sm3_prov.o" => [ + "providers/implementations/digests/sm3_prov.c" + ], + "providers/implementations/digests/libfips-lib-sha2_prov.o" => [ + "providers/implementations/digests/sha2_prov.c" + ], + "providers/implementations/digests/libfips-lib-sha3_prov.o" => [ + "providers/implementations/digests/sha3_prov.c" + ], + "providers/implementations/digests/liblegacy-lib-md4_prov.o" => [ + "providers/implementations/digests/md4_prov.c" + ], + "providers/implementations/digests/liblegacy-lib-mdc2_prov.o" => [ + "providers/implementations/digests/mdc2_prov.c" + ], + "providers/implementations/digests/liblegacy-lib-ripemd_prov.o" => [ + "providers/implementations/digests/ripemd_prov.c" + ], + "providers/implementations/digests/liblegacy-lib-wp_prov.o" => [ + "providers/implementations/digests/wp_prov.c" + ], + "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o" => [ + "providers/implementations/encode_decode/decode_der2key.c" + ], + "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o" => [ + "providers/implementations/encode_decode/decode_epki2pki.c" + ], + "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o" => [ + "providers/implementations/encode_decode/decode_msblob2key.c" + ], + "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o" => [ + "providers/implementations/encode_decode/decode_pem2der.c" + ], + "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o" => [ + "providers/implementations/encode_decode/decode_pvk2key.c" + ], + "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o" => [ + "providers/implementations/encode_decode/decode_spki2typespki.c" + ], + "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ + "providers/implementations/encode_decode/encode_key2any.c" + ], + "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o" => [ + "providers/implementations/encode_decode/encode_key2blob.c" + ], + "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o" => [ + "providers/implementations/encode_decode/encode_key2ms.c" + ], + "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o" => [ + "providers/implementations/encode_decode/encode_key2text.c" + ], + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ + "providers/implementations/encode_decode/endecoder_common.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], + "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ + "providers/implementations/exchange/dh_exch.c" + ], + "providers/implementations/exchange/libdefault-lib-ecdh_exch.o" => [ + "providers/implementations/exchange/ecdh_exch.c" + ], + "providers/implementations/exchange/libdefault-lib-ecx_exch.o" => [ + "providers/implementations/exchange/ecx_exch.c" + ], + "providers/implementations/exchange/libdefault-lib-kdf_exch.o" => [ + "providers/implementations/exchange/kdf_exch.c" + ], + "providers/implementations/exchange/libfips-lib-dh_exch.o" => [ + "providers/implementations/exchange/dh_exch.c" + ], + "providers/implementations/exchange/libfips-lib-ecdh_exch.o" => [ + "providers/implementations/exchange/ecdh_exch.c" + ], + "providers/implementations/exchange/libfips-lib-ecx_exch.o" => [ + "providers/implementations/exchange/ecx_exch.c" + ], + "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ + "providers/implementations/exchange/kdf_exch.c" + ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], + "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ + "providers/implementations/kdfs/hkdf.c" + ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], + "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ + "providers/implementations/kdfs/kbkdf.c" + ], + "providers/implementations/kdfs/libdefault-lib-krb5kdf.o" => [ + "providers/implementations/kdfs/krb5kdf.c" + ], + "providers/implementations/kdfs/libdefault-lib-pbkdf2.o" => [ + "providers/implementations/kdfs/pbkdf2.c" + ], + "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o" => [ + "providers/implementations/kdfs/pbkdf2_fips.c" + ], + "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o" => [ + "providers/implementations/kdfs/pkcs12kdf.c" + ], + "providers/implementations/kdfs/libdefault-lib-scrypt.o" => [ + "providers/implementations/kdfs/scrypt.c" + ], + "providers/implementations/kdfs/libdefault-lib-sshkdf.o" => [ + "providers/implementations/kdfs/sshkdf.c" + ], + "providers/implementations/kdfs/libdefault-lib-sskdf.o" => [ + "providers/implementations/kdfs/sskdf.c" + ], + "providers/implementations/kdfs/libdefault-lib-tls1_prf.o" => [ + "providers/implementations/kdfs/tls1_prf.c" + ], + "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ + "providers/implementations/kdfs/x942kdf.c" + ], + "providers/implementations/kdfs/libfips-lib-hkdf.o" => [ + "providers/implementations/kdfs/hkdf.c" + ], + "providers/implementations/kdfs/libfips-lib-kbkdf.o" => [ + "providers/implementations/kdfs/kbkdf.c" + ], + "providers/implementations/kdfs/libfips-lib-pbkdf2.o" => [ + "providers/implementations/kdfs/pbkdf2.c" + ], + "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o" => [ + "providers/implementations/kdfs/pbkdf2_fips.c" + ], + "providers/implementations/kdfs/libfips-lib-sshkdf.o" => [ + "providers/implementations/kdfs/sshkdf.c" + ], + "providers/implementations/kdfs/libfips-lib-sskdf.o" => [ + "providers/implementations/kdfs/sskdf.c" + ], + "providers/implementations/kdfs/libfips-lib-tls1_prf.o" => [ + "providers/implementations/kdfs/tls1_prf.c" + ], + "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ + "providers/implementations/kdfs/x942kdf.c" + ], + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ + "providers/implementations/kdfs/pbkdf1.c" + ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ + "providers/implementations/kem/rsa_kem.c" + ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], + "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ + "providers/implementations/kem/rsa_kem.c" + ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], + "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ + "providers/implementations/keymgmt/dh_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o" => [ + "providers/implementations/keymgmt/ec_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o" => [ + "providers/implementations/keymgmt/ecx_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o" => [ + "providers/implementations/keymgmt/kdf_legacy_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ + "providers/implementations/keymgmt/mac_legacy_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ + "providers/implementations/keymgmt/rsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ + "providers/implementations/keymgmt/dh_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o" => [ + "providers/implementations/keymgmt/ec_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o" => [ + "providers/implementations/keymgmt/ecx_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o" => [ + "providers/implementations/keymgmt/kdf_legacy_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ + "providers/implementations/keymgmt/mac_legacy_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ + "providers/implementations/keymgmt/rsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], + "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ + "providers/implementations/macs/blake2b_mac.c" + ], + "providers/implementations/macs/libdefault-lib-blake2s_mac.o" => [ + "providers/implementations/macs/blake2s_mac.c" + ], + "providers/implementations/macs/libdefault-lib-cmac_prov.o" => [ + "providers/implementations/macs/cmac_prov.c" + ], + "providers/implementations/macs/libdefault-lib-gmac_prov.o" => [ + "providers/implementations/macs/gmac_prov.c" + ], + "providers/implementations/macs/libdefault-lib-hmac_prov.o" => [ + "providers/implementations/macs/hmac_prov.c" + ], + "providers/implementations/macs/libdefault-lib-kmac_prov.o" => [ + "providers/implementations/macs/kmac_prov.c" + ], + "providers/implementations/macs/libdefault-lib-poly1305_prov.o" => [ + "providers/implementations/macs/poly1305_prov.c" + ], + "providers/implementations/macs/libdefault-lib-siphash_prov.o" => [ + "providers/implementations/macs/siphash_prov.c" + ], + "providers/implementations/macs/libfips-lib-cmac_prov.o" => [ + "providers/implementations/macs/cmac_prov.c" + ], + "providers/implementations/macs/libfips-lib-gmac_prov.o" => [ + "providers/implementations/macs/gmac_prov.c" + ], + "providers/implementations/macs/libfips-lib-hmac_prov.o" => [ + "providers/implementations/macs/hmac_prov.c" + ], + "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ + "providers/implementations/macs/kmac_prov.c" + ], + "providers/implementations/rands/libdefault-lib-drbg.o" => [ + "providers/implementations/rands/drbg.c" + ], + "providers/implementations/rands/libdefault-lib-drbg_ctr.o" => [ + "providers/implementations/rands/drbg_ctr.c" + ], + "providers/implementations/rands/libdefault-lib-drbg_hash.o" => [ + "providers/implementations/rands/drbg_hash.c" + ], + "providers/implementations/rands/libdefault-lib-drbg_hmac.o" => [ + "providers/implementations/rands/drbg_hmac.c" + ], + "providers/implementations/rands/libdefault-lib-seed_src.o" => [ + "providers/implementations/rands/seed_src.c" + ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], + "providers/implementations/rands/libdefault-lib-test_rng.o" => [ + "providers/implementations/rands/test_rng.c" + ], + "providers/implementations/rands/libfips-lib-drbg.o" => [ + "providers/implementations/rands/drbg.c" + ], + "providers/implementations/rands/libfips-lib-drbg_ctr.o" => [ + "providers/implementations/rands/drbg_ctr.c" + ], + "providers/implementations/rands/libfips-lib-drbg_hash.o" => [ + "providers/implementations/rands/drbg_hash.c" + ], + "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ + "providers/implementations/rands/drbg_hmac.c" + ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], + "providers/implementations/rands/libfips-lib-test_rng.o" => [ + "providers/implementations/rands/test_rng.c" + ], + "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o" => [ + "providers/implementations/rands/seeding/rand_cpu_x86.c" + ], + "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o" => [ + "providers/implementations/rands/seeding/rand_tsc.c" + ], + "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o" => [ + "providers/implementations/rands/seeding/rand_unix.c" + ], + "providers/implementations/rands/seeding/libdefault-lib-rand_win.o" => [ + "providers/implementations/rands/seeding/rand_win.c" + ], + "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ + "providers/implementations/signature/dsa_sig.c" + ], + "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ + "providers/implementations/signature/ecdsa_sig.c" + ], + "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ + "providers/implementations/signature/eddsa_sig.c" + ], + "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ + "providers/implementations/signature/mac_legacy_sig.c" + ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], + "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ + "providers/implementations/signature/rsa_sig.c" + ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ + "providers/implementations/signature/sm2_sig.c" + ], + "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ + "providers/implementations/signature/dsa_sig.c" + ], + "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ + "providers/implementations/signature/ecdsa_sig.c" + ], + "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ + "providers/implementations/signature/eddsa_sig.c" + ], + "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ + "providers/implementations/signature/mac_legacy_sig.c" + ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], + "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ + "providers/implementations/signature/rsa_sig.c" + ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ + "providers/implementations/storemgmt/file_store.c" + ], + "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" => [ + "providers/implementations/storemgmt/file_store_any2obj.c" + ], + "providers/legacy" => [ + "providers/legacy-dso-legacyprov.o", + "providers/legacy.ld" + ], + "providers/legacy-dso-legacyprov.o" => [ + "providers/legacyprov.c" + ], + "providers/libcommon.a" => [ + "providers/common/der/libcommon-lib-der_digests_gen.o", + "providers/common/der/libcommon-lib-der_dsa_gen.o", + "providers/common/der/libcommon-lib-der_dsa_key.o", + "providers/common/der/libcommon-lib-der_dsa_sig.o", + "providers/common/der/libcommon-lib-der_ec_gen.o", + "providers/common/der/libcommon-lib-der_ec_key.o", + "providers/common/der/libcommon-lib-der_ec_sig.o", + "providers/common/der/libcommon-lib-der_ecx_gen.o", + "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", + "providers/common/der/libcommon-lib-der_rsa_gen.o", + "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", + "providers/common/der/libcommon-lib-der_wrap_gen.o", + "providers/common/libcommon-lib-provider_ctx.o", + "providers/common/libcommon-lib-provider_err.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", + "providers/implementations/digests/libcommon-lib-digestcommon.o", + "ssl/record/methods/libcommon-lib-tls_pad.o" + ], + "providers/libcrypto-lib-baseprov.o" => [ + "providers/baseprov.c" + ], + "providers/libcrypto-lib-defltprov.o" => [ + "providers/defltprov.c" + ], + "providers/libcrypto-lib-nullprov.o" => [ + "providers/nullprov.c" + ], + "providers/libcrypto-lib-prov_running.o" => [ + "providers/prov_running.c" + ], + "providers/libdefault.a" => [ + "providers/common/der/libdefault-lib-der_rsa_sig.o", + "providers/common/der/libdefault-lib-der_sm2_gen.o", + "providers/common/der/libdefault-lib-der_sm2_key.o", + "providers/common/der/libdefault-lib-der_sm2_sig.o", + "providers/common/libdefault-lib-bio_prov.o", + "providers/common/libdefault-lib-capabilities.o", + "providers/common/libdefault-lib-digest_to_nid.o", + "providers/common/libdefault-lib-provider_seeding.o", + "providers/common/libdefault-lib-provider_util.o", + "providers/common/libdefault-lib-securitycheck.o", + "providers/common/libdefault-lib-securitycheck_default.o", + "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o", + "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o", + "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_null.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o", + "providers/implementations/digests/libdefault-lib-blake2_prov.o", + "providers/implementations/digests/libdefault-lib-blake2b_prov.o", + "providers/implementations/digests/libdefault-lib-blake2s_prov.o", + "providers/implementations/digests/libdefault-lib-md5_prov.o", + "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o", + "providers/implementations/digests/libdefault-lib-null_prov.o", + "providers/implementations/digests/libdefault-lib-ripemd_prov.o", + "providers/implementations/digests/libdefault-lib-sha2_prov.o", + "providers/implementations/digests/libdefault-lib-sha3_prov.o", + "providers/implementations/digests/libdefault-lib-sm3_prov.o", + "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o", + "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o", + "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o", + "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o", + "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o", + "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", + "providers/implementations/exchange/libdefault-lib-dh_exch.o", + "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", + "providers/implementations/exchange/libdefault-lib-ecx_exch.o", + "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", + "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", + "providers/implementations/kdfs/libdefault-lib-kbkdf.o", + "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", + "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", + "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o", + "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o", + "providers/implementations/kdfs/libdefault-lib-scrypt.o", + "providers/implementations/kdfs/libdefault-lib-sshkdf.o", + "providers/implementations/kdfs/libdefault-lib-sskdf.o", + "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", + "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", + "providers/implementations/kem/libdefault-lib-rsa_kem.o", + "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", + "providers/implementations/macs/libdefault-lib-blake2b_mac.o", + "providers/implementations/macs/libdefault-lib-blake2s_mac.o", + "providers/implementations/macs/libdefault-lib-cmac_prov.o", + "providers/implementations/macs/libdefault-lib-gmac_prov.o", + "providers/implementations/macs/libdefault-lib-hmac_prov.o", + "providers/implementations/macs/libdefault-lib-kmac_prov.o", + "providers/implementations/macs/libdefault-lib-poly1305_prov.o", + "providers/implementations/macs/libdefault-lib-siphash_prov.o", + "providers/implementations/rands/libdefault-lib-drbg.o", + "providers/implementations/rands/libdefault-lib-drbg_ctr.o", + "providers/implementations/rands/libdefault-lib-drbg_hash.o", + "providers/implementations/rands/libdefault-lib-drbg_hmac.o", + "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", + "providers/implementations/rands/libdefault-lib-test_rng.o", + "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", + "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", + "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o", + "providers/implementations/rands/seeding/libdefault-lib-rand_win.o", + "providers/implementations/signature/libdefault-lib-dsa_sig.o", + "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", + "providers/implementations/signature/libdefault-lib-eddsa_sig.o", + "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", + "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", + "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/storemgmt/libdefault-lib-file_store.o", + "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" + ], + "providers/libfips.a" => [ + "crypto/aes/libfips-lib-aes-riscv64-zkn.o", + "crypto/aes/libfips-lib-aes-riscv64-zvbb-zvkg-zvkned.o", + "crypto/aes/libfips-lib-aes-riscv64-zvkb-zvkned.o", + "crypto/aes/libfips-lib-aes-riscv64-zvkned.o", + "crypto/aes/libfips-lib-aes-riscv64.o", + "crypto/aes/libfips-lib-aes_cbc.o", + "crypto/aes/libfips-lib-aes_ecb.o", + "crypto/aes/libfips-lib-aes_misc.o", + "crypto/bn/libfips-lib-bn_add.o", + "crypto/bn/libfips-lib-bn_asm.o", + "crypto/bn/libfips-lib-bn_blind.o", + "crypto/bn/libfips-lib-bn_const.o", + "crypto/bn/libfips-lib-bn_conv.o", + "crypto/bn/libfips-lib-bn_ctx.o", + "crypto/bn/libfips-lib-bn_dh.o", + "crypto/bn/libfips-lib-bn_div.o", + "crypto/bn/libfips-lib-bn_exp.o", + "crypto/bn/libfips-lib-bn_exp2.o", + "crypto/bn/libfips-lib-bn_gcd.o", + "crypto/bn/libfips-lib-bn_gf2m.o", + "crypto/bn/libfips-lib-bn_intern.o", + "crypto/bn/libfips-lib-bn_kron.o", + "crypto/bn/libfips-lib-bn_lib.o", + "crypto/bn/libfips-lib-bn_mod.o", + "crypto/bn/libfips-lib-bn_mont.o", + "crypto/bn/libfips-lib-bn_mpi.o", + "crypto/bn/libfips-lib-bn_mul.o", + "crypto/bn/libfips-lib-bn_nist.o", + "crypto/bn/libfips-lib-bn_prime.o", + "crypto/bn/libfips-lib-bn_rand.o", + "crypto/bn/libfips-lib-bn_recp.o", + "crypto/bn/libfips-lib-bn_rsa_fips186_4.o", + "crypto/bn/libfips-lib-bn_shift.o", + "crypto/bn/libfips-lib-bn_sqr.o", + "crypto/bn/libfips-lib-bn_sqrt.o", + "crypto/bn/libfips-lib-bn_word.o", + "crypto/buffer/libfips-lib-buffer.o", + "crypto/cmac/libfips-lib-cmac.o", + "crypto/des/libfips-lib-des_enc.o", + "crypto/des/libfips-lib-ecb3_enc.o", + "crypto/des/libfips-lib-fcrypt_b.o", + "crypto/des/libfips-lib-set_key.o", + "crypto/dh/libfips-lib-dh_backend.o", + "crypto/dh/libfips-lib-dh_check.o", + "crypto/dh/libfips-lib-dh_gen.o", + "crypto/dh/libfips-lib-dh_group_params.o", + "crypto/dh/libfips-lib-dh_kdf.o", + "crypto/dh/libfips-lib-dh_key.o", + "crypto/dh/libfips-lib-dh_lib.o", + "crypto/dsa/libfips-lib-dsa_backend.o", + "crypto/dsa/libfips-lib-dsa_check.o", + "crypto/dsa/libfips-lib-dsa_gen.o", + "crypto/dsa/libfips-lib-dsa_key.o", + "crypto/dsa/libfips-lib-dsa_lib.o", + "crypto/dsa/libfips-lib-dsa_ossl.o", + "crypto/dsa/libfips-lib-dsa_sign.o", + "crypto/dsa/libfips-lib-dsa_vrf.o", + "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o", + "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o", + "crypto/ec/curve448/libfips-lib-curve448.o", + "crypto/ec/curve448/libfips-lib-curve448_tables.o", + "crypto/ec/curve448/libfips-lib-eddsa.o", + "crypto/ec/curve448/libfips-lib-f_generic.o", + "crypto/ec/curve448/libfips-lib-scalar.o", + "crypto/ec/libfips-lib-curve25519.o", + "crypto/ec/libfips-lib-ec2_oct.o", + "crypto/ec/libfips-lib-ec2_smpl.o", + "crypto/ec/libfips-lib-ec_asn1.o", + "crypto/ec/libfips-lib-ec_backend.o", + "crypto/ec/libfips-lib-ec_check.o", + "crypto/ec/libfips-lib-ec_curve.o", + "crypto/ec/libfips-lib-ec_cvt.o", + "crypto/ec/libfips-lib-ec_key.o", + "crypto/ec/libfips-lib-ec_kmeth.o", + "crypto/ec/libfips-lib-ec_lib.o", + "crypto/ec/libfips-lib-ec_mult.o", + "crypto/ec/libfips-lib-ec_oct.o", + "crypto/ec/libfips-lib-ecdh_kdf.o", + "crypto/ec/libfips-lib-ecdh_ossl.o", + "crypto/ec/libfips-lib-ecdsa_ossl.o", + "crypto/ec/libfips-lib-ecdsa_sign.o", + "crypto/ec/libfips-lib-ecdsa_vrf.o", + "crypto/ec/libfips-lib-ecp_mont.o", + "crypto/ec/libfips-lib-ecp_nist.o", + "crypto/ec/libfips-lib-ecp_oct.o", + "crypto/ec/libfips-lib-ecp_smpl.o", + "crypto/ec/libfips-lib-ecx_backend.o", + "crypto/ec/libfips-lib-ecx_key.o", + "crypto/evp/libfips-lib-asymcipher.o", + "crypto/evp/libfips-lib-dh_support.o", + "crypto/evp/libfips-lib-digest.o", + "crypto/evp/libfips-lib-ec_support.o", + "crypto/evp/libfips-lib-evp_enc.o", + "crypto/evp/libfips-lib-evp_fetch.o", + "crypto/evp/libfips-lib-evp_lib.o", + "crypto/evp/libfips-lib-evp_rand.o", + "crypto/evp/libfips-lib-evp_utils.o", + "crypto/evp/libfips-lib-exchange.o", + "crypto/evp/libfips-lib-kdf_lib.o", + "crypto/evp/libfips-lib-kdf_meth.o", + "crypto/evp/libfips-lib-kem.o", + "crypto/evp/libfips-lib-keymgmt_lib.o", + "crypto/evp/libfips-lib-keymgmt_meth.o", + "crypto/evp/libfips-lib-mac_lib.o", + "crypto/evp/libfips-lib-mac_meth.o", + "crypto/evp/libfips-lib-p_lib.o", + "crypto/evp/libfips-lib-pmeth_check.o", + "crypto/evp/libfips-lib-pmeth_gn.o", + "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", + "crypto/ffc/libfips-lib-ffc_backend.o", + "crypto/ffc/libfips-lib-ffc_dh.o", + "crypto/ffc/libfips-lib-ffc_key_generate.o", + "crypto/ffc/libfips-lib-ffc_key_validate.o", + "crypto/ffc/libfips-lib-ffc_params.o", + "crypto/ffc/libfips-lib-ffc_params_generate.o", + "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", + "crypto/hmac/libfips-lib-hmac.o", + "crypto/lhash/libfips-lib-lhash.o", + "crypto/libfips-lib-asn1_dsa.o", + "crypto/libfips-lib-bsearch.o", + "crypto/libfips-lib-context.o", + "crypto/libfips-lib-core_algorithm.o", + "crypto/libfips-lib-core_fetch.o", + "crypto/libfips-lib-core_namemap.o", + "crypto/libfips-lib-cpuid.o", + "crypto/libfips-lib-cryptlib.o", + "crypto/libfips-lib-ctype.o", + "crypto/libfips-lib-der_writer.o", + "crypto/libfips-lib-ex_data.o", + "crypto/libfips-lib-initthread.o", + "crypto/libfips-lib-o_str.o", + "crypto/libfips-lib-packet.o", + "crypto/libfips-lib-param_build.o", + "crypto/libfips-lib-param_build_set.o", + "crypto/libfips-lib-params.o", + "crypto/libfips-lib-params_dup.o", + "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", + "crypto/libfips-lib-provider_core.o", + "crypto/libfips-lib-provider_predefined.o", + "crypto/libfips-lib-riscv64cpuid.o", + "crypto/libfips-lib-riscvcap.o", + "crypto/libfips-lib-self_test_core.o", + "crypto/libfips-lib-sparse_array.o", + "crypto/libfips-lib-threads_lib.o", + "crypto/libfips-lib-threads_none.o", + "crypto/libfips-lib-threads_pthread.o", + "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", + "crypto/modes/libfips-lib-aes-gcm-riscv64-zvkb-zvkg-zvkned.o", + "crypto/modes/libfips-lib-cbc128.o", + "crypto/modes/libfips-lib-ccm128.o", + "crypto/modes/libfips-lib-cfb128.o", + "crypto/modes/libfips-lib-ctr128.o", + "crypto/modes/libfips-lib-gcm128.o", + "crypto/modes/libfips-lib-ghash-riscv64-zvkb-zvbc.o", + "crypto/modes/libfips-lib-ghash-riscv64-zvkg.o", + "crypto/modes/libfips-lib-ghash-riscv64.o", + "crypto/modes/libfips-lib-ofb128.o", + "crypto/modes/libfips-lib-wrap128.o", + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", + "crypto/property/libfips-lib-defn_cache.o", + "crypto/property/libfips-lib-property.o", + "crypto/property/libfips-lib-property_parse.o", + "crypto/property/libfips-lib-property_query.o", + "crypto/property/libfips-lib-property_string.o", + "crypto/rand/libfips-lib-rand_lib.o", + "crypto/rsa/libfips-lib-rsa_acvp_test_params.o", + "crypto/rsa/libfips-lib-rsa_backend.o", + "crypto/rsa/libfips-lib-rsa_chk.o", + "crypto/rsa/libfips-lib-rsa_crpt.o", + "crypto/rsa/libfips-lib-rsa_gen.o", + "crypto/rsa/libfips-lib-rsa_lib.o", + "crypto/rsa/libfips-lib-rsa_mp_names.o", + "crypto/rsa/libfips-lib-rsa_none.o", + "crypto/rsa/libfips-lib-rsa_oaep.o", + "crypto/rsa/libfips-lib-rsa_ossl.o", + "crypto/rsa/libfips-lib-rsa_pk1.o", + "crypto/rsa/libfips-lib-rsa_pss.o", + "crypto/rsa/libfips-lib-rsa_schemes.o", + "crypto/rsa/libfips-lib-rsa_sign.o", + "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o", + "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o", + "crypto/rsa/libfips-lib-rsa_x931.o", + "crypto/sha/libfips-lib-keccak1600.o", + "crypto/sha/libfips-lib-sha1dgst.o", + "crypto/sha/libfips-lib-sha256-riscv64-zvkb-zvknha_or_zvknhb.o", + "crypto/sha/libfips-lib-sha256.o", + "crypto/sha/libfips-lib-sha3.o", + "crypto/sha/libfips-lib-sha512-riscv64-zvkb-zvknhb.o", + "crypto/sha/libfips-lib-sha512.o", + "crypto/sha/libfips-lib-sha_riscv.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", + "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", + "providers/common/der/libfips-lib-der_rsa_sig.o", + "providers/common/libfips-lib-bio_prov.o", + "providers/common/libfips-lib-capabilities.o", + "providers/common/libfips-lib-digest_to_nid.o", + "providers/common/libfips-lib-provider_seeding.o", + "providers/common/libfips-lib-provider_util.o", + "providers/common/libfips-lib-securitycheck.o", + "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", + "providers/fips/libfips-lib-fipsprov.o", + "providers/fips/libfips-lib-self_test.o", + "providers/fips/libfips-lib-self_test_kats.o", + "providers/implementations/asymciphers/libfips-lib-rsa_enc.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_cts.o", + "providers/implementations/ciphers/libfips-lib-cipher_tdes.o", + "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o", + "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o", + "providers/implementations/digests/libfips-lib-sha2_prov.o", + "providers/implementations/digests/libfips-lib-sha3_prov.o", + "providers/implementations/exchange/libfips-lib-dh_exch.o", + "providers/implementations/exchange/libfips-lib-ecdh_exch.o", + "providers/implementations/exchange/libfips-lib-ecx_exch.o", + "providers/implementations/exchange/libfips-lib-kdf_exch.o", + "providers/implementations/kdfs/libfips-lib-hkdf.o", + "providers/implementations/kdfs/libfips-lib-kbkdf.o", + "providers/implementations/kdfs/libfips-lib-pbkdf2.o", + "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o", + "providers/implementations/kdfs/libfips-lib-sshkdf.o", + "providers/implementations/kdfs/libfips-lib-sskdf.o", + "providers/implementations/kdfs/libfips-lib-tls1_prf.o", + "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/macs/libfips-lib-cmac_prov.o", + "providers/implementations/macs/libfips-lib-gmac_prov.o", + "providers/implementations/macs/libfips-lib-hmac_prov.o", + "providers/implementations/macs/libfips-lib-kmac_prov.o", + "providers/implementations/rands/libfips-lib-drbg.o", + "providers/implementations/rands/libfips-lib-drbg_ctr.o", + "providers/implementations/rands/libfips-lib-drbg_hash.o", + "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", + "providers/implementations/rands/libfips-lib-test_rng.o", + "providers/implementations/signature/libfips-lib-dsa_sig.o", + "providers/implementations/signature/libfips-lib-ecdsa_sig.o", + "providers/implementations/signature/libfips-lib-eddsa_sig.o", + "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", + "providers/libcommon.a", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" + ], + "providers/liblegacy-lib-prov_running.o" => [ + "providers/prov_running.c" + ], + "providers/liblegacy.a" => [ + "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_des.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o", + "providers/implementations/digests/liblegacy-lib-md4_prov.o", + "providers/implementations/digests/liblegacy-lib-mdc2_prov.o", + "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", + "providers/implementations/digests/liblegacy-lib-wp_prov.o", + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", + "providers/liblegacy-lib-prov_running.o" + ], + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" + ], + "ssl/libssl-lib-bio_ssl.o" => [ + "ssl/bio_ssl.c" + ], + "ssl/libssl-lib-d1_lib.o" => [ + "ssl/d1_lib.c" + ], + "ssl/libssl-lib-d1_msg.o" => [ + "ssl/d1_msg.c" + ], + "ssl/libssl-lib-d1_srtp.o" => [ + "ssl/d1_srtp.c" + ], + "ssl/libssl-lib-methods.o" => [ + "ssl/methods.c" + ], + "ssl/libssl-lib-pqueue.o" => [ + "ssl/pqueue.c" + ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], + "ssl/libssl-lib-s3_enc.o" => [ + "ssl/s3_enc.c" + ], + "ssl/libssl-lib-s3_lib.o" => [ + "ssl/s3_lib.c" + ], + "ssl/libssl-lib-s3_msg.o" => [ + "ssl/s3_msg.c" + ], + "ssl/libssl-lib-ssl_asn1.o" => [ + "ssl/ssl_asn1.c" + ], + "ssl/libssl-lib-ssl_cert.o" => [ + "ssl/ssl_cert.c" + ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], + "ssl/libssl-lib-ssl_ciph.o" => [ + "ssl/ssl_ciph.c" + ], + "ssl/libssl-lib-ssl_conf.o" => [ + "ssl/ssl_conf.c" + ], + "ssl/libssl-lib-ssl_err_legacy.o" => [ + "ssl/ssl_err_legacy.c" + ], + "ssl/libssl-lib-ssl_init.o" => [ + "ssl/ssl_init.c" + ], + "ssl/libssl-lib-ssl_lib.o" => [ + "ssl/ssl_lib.c" + ], + "ssl/libssl-lib-ssl_mcnf.o" => [ + "ssl/ssl_mcnf.c" + ], + "ssl/libssl-lib-ssl_rsa.o" => [ + "ssl/ssl_rsa.c" + ], + "ssl/libssl-lib-ssl_rsa_legacy.o" => [ + "ssl/ssl_rsa_legacy.c" + ], + "ssl/libssl-lib-ssl_sess.o" => [ + "ssl/ssl_sess.c" + ], + "ssl/libssl-lib-ssl_stat.o" => [ + "ssl/ssl_stat.c" + ], + "ssl/libssl-lib-ssl_txt.o" => [ + "ssl/ssl_txt.c" + ], + "ssl/libssl-lib-ssl_utst.o" => [ + "ssl/ssl_utst.c" + ], + "ssl/libssl-lib-t1_enc.o" => [ + "ssl/t1_enc.c" + ], + "ssl/libssl-lib-t1_lib.o" => [ + "ssl/t1_lib.c" + ], + "ssl/libssl-lib-t1_trce.o" => [ + "ssl/t1_trce.c" + ], + "ssl/libssl-lib-tls13_enc.o" => [ + "ssl/tls13_enc.c" + ], + "ssl/libssl-lib-tls_depr.o" => [ + "ssl/tls_depr.c" + ], + "ssl/libssl-lib-tls_srp.o" => [ + "ssl/tls_srp.c" + ], + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" + ], + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" + ], + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" + ], + "ssl/record/libssl-lib-rec_layer_d1.o" => [ + "ssl/record/rec_layer_d1.c" + ], + "ssl/record/libssl-lib-rec_layer_s3.o" => [ + "ssl/record/rec_layer_s3.c" + ], + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" + ], + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" + ], + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" + ], + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" + ], + "ssl/statem/libssl-lib-extensions.o" => [ + "ssl/statem/extensions.c" + ], + "ssl/statem/libssl-lib-extensions_clnt.o" => [ + "ssl/statem/extensions_clnt.c" + ], + "ssl/statem/libssl-lib-extensions_cust.o" => [ + "ssl/statem/extensions_cust.c" + ], + "ssl/statem/libssl-lib-extensions_srvr.o" => [ + "ssl/statem/extensions_srvr.c" + ], + "ssl/statem/libssl-lib-statem.o" => [ + "ssl/statem/statem.c" + ], + "ssl/statem/libssl-lib-statem_clnt.o" => [ + "ssl/statem/statem_clnt.c" + ], + "ssl/statem/libssl-lib-statem_dtls.o" => [ + "ssl/statem/statem_dtls.c" + ], + "ssl/statem/libssl-lib-statem_lib.o" => [ + "ssl/statem/statem_lib.c" + ], + "ssl/statem/libssl-lib-statem_srvr.o" => [ + "ssl/statem/statem_srvr.c" + ], + "tools/c_rehash" => [ + "tools/c_rehash.in" + ], + "util/shlib_wrap.sh" => [ + "util/shlib_wrap.sh.in" + ], + "util/wrap.pl" => [ + "util/wrap.pl.in" + ] + }, + "targets" => [ + "build_modules_nodep" + ] +); + +# Unexported, only used by OpenSSL::Test::Utils::available_protocols() +our %available_protocols = ( + tls => [ + "ssl3", + "tls1", + "tls1_1", + "tls1_2", + "tls1_3" +], + dtls => [ + "dtls1", + "dtls1_2" +], +); + +# The following data is only used when this files is use as a script +my @makevars = ( + "AR", + "ARFLAGS", + "AS", + "ASFLAGS", + "CC", + "CFLAGS", + "CPP", + "CPPDEFINES", + "CPPFLAGS", + "CPPINCLUDES", + "CROSS_COMPILE", + "CXX", + "CXXFLAGS", + "HASHBANGPERL", + "LD", + "LDFLAGS", + "LDLIBS", + "MT", + "MTFLAGS", + "OBJCOPY", + "PERL", + "RANLIB", + "RC", + "RCFLAGS", + "RM" +); +my %disabled_info = ( + "afalgeng" => { + "macro" => "OPENSSL_NO_AFALGENG" + }, + "asan" => { + "macro" => "OPENSSL_NO_ASAN" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, + "crypto-mdebug" => { + "macro" => "OPENSSL_NO_CRYPTO_MDEBUG" + }, + "crypto-mdebug-backtrace" => { + "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" + }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, + "devcryptoeng" => { + "macro" => "OPENSSL_NO_DEVCRYPTOENG" + }, + "ec_nistp_64_gcc_128" => { + "macro" => "OPENSSL_NO_EC_NISTP_64_GCC_128" + }, + "egd" => { + "macro" => "OPENSSL_NO_EGD" + }, + "external-tests" => { + "macro" => "OPENSSL_NO_EXTERNAL_TESTS" + }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, + "fuzz-afl" => { + "macro" => "OPENSSL_NO_FUZZ_AFL" + }, + "fuzz-libfuzzer" => { + "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" + }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, + "ktls" => { + "macro" => "OPENSSL_NO_KTLS" + }, + "loadereng" => { + "macro" => "OPENSSL_NO_LOADERENG" + }, + "md2" => { + "macro" => "OPENSSL_NO_MD2", + "skipped" => [ + "crypto/md2" + ] + }, + "msan" => { + "macro" => "OPENSSL_NO_MSAN" + }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, + "rc5" => { + "macro" => "OPENSSL_NO_RC5", + "skipped" => [ + "crypto/rc5" + ] + }, + "sctp" => { + "macro" => "OPENSSL_NO_SCTP" + }, + "ssl3" => { + "macro" => "OPENSSL_NO_SSL3" + }, + "ssl3-method" => { + "macro" => "OPENSSL_NO_SSL3_METHOD" + }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tests" => { + "macro" => "OPENSSL_NO_TESTS" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, + "trace" => { + "macro" => "OPENSSL_NO_TRACE" + }, + "ubsan" => { + "macro" => "OPENSSL_NO_UBSAN" + }, + "unit-test" => { + "macro" => "OPENSSL_NO_UNIT_TEST" + }, + "uplink" => { + "macro" => "OPENSSL_NO_UPLINK" + }, + "weak-ssl-ciphers" => { + "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "winstore" => { + "macro" => "OPENSSL_NO_WINSTORE" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" + } +); +my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); + +# If run directly, we can give some answers, and even reconfigure +unless (caller) { + use Getopt::Long; + use File::Spec::Functions; + use File::Basename; + use File::Compare qw(compare_text); + use File::Copy; + use Pod::Usage; + + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; + + my $here = dirname($0); + + if (scalar @ARGV == 0) { + # With no arguments, re-create the build file + # We do that in two steps, where the first step emits perl + # snippets. + + my $buildfile = $config{build_file}; + my $buildfile_template = "$buildfile.in"; + my @autowarntext = ( + 'WARNING: do not edit!', + "Generated by configdata.pm from " + .join(", ", @{$config{build_file_templates}}), + "via $buildfile_template" + ); + my %gendata = ( + config => \%config, + target => \%target, + disabled => \%disabled, + withargs => \%withargs, + unified_info => \%unified_info, + autowarntext => \@autowarntext, + ); + + use lib '.'; + use lib '/node/deps/openssl/openssl/Configurations'; + use gentemplate; + + open my $buildfile_template_fh, ">$buildfile_template" + or die "Trying to create $buildfile_template: $!"; + foreach (@{$config{build_file_templates}}) { + copy($_, $buildfile_template_fh) + or die "Trying to copy $_ into $buildfile_template: $!"; + } + gentemplate(output => $buildfile_template_fh, %gendata); + close $buildfile_template_fh; + print 'Created ',$buildfile_template,"\n"; + + use OpenSSL::Template; + + my $prepend = <<'_____'; +use File::Spec::Functions; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; +use lib '.'; +use platform; +_____ + + my $tmpl; + open BUILDFILE, ">$buildfile.new" + or die "Trying to create $buildfile.new: $!"; + $tmpl = OpenSSL::Template->new(TYPE => 'FILE', + SOURCE => $buildfile_template); + $tmpl->fill_in(FILENAME => $_, + OUTPUT => \*BUILDFILE, + HASH => \%gendata, + PREPEND => $prepend, + # To ensure that global variables and functions + # defined in one template stick around for the + # next, making them combinable + PACKAGE => 'OpenSSL::safe') + or die $OpenSSL::Template::ERROR; + close BUILDFILE; + rename("$buildfile.new", $buildfile) + or die "Trying to rename $buildfile.new to $buildfile: $!"; + print 'Created ',$buildfile,"\n"; + + my $configuration_h = + catfile('include', 'openssl', 'configuration.h'); + my $configuration_h_in = + catfile($config{sourcedir}, 'include', 'openssl', 'configuration.h.in'); + open CONFIGURATION_H, ">${configuration_h}.new" + or die "Trying to create ${configuration_h}.new: $!"; + $tmpl = OpenSSL::Template->new(TYPE => 'FILE', + SOURCE => $configuration_h_in); + $tmpl->fill_in(FILENAME => $_, + OUTPUT => \*CONFIGURATION_H, + HASH => \%gendata, + PREPEND => $prepend, + # To ensure that global variables and functions + # defined in one template stick around for the + # next, making them combinable + PACKAGE => 'OpenSSL::safe') + or die $OpenSSL::Template::ERROR; + close CONFIGURATION_H; + + # When using stat() on Windows, we can get it to perform better by + # avoid some data. This doesn't affect the mtime field, so we're not + # losing anything... + ${^WIN32_SLOPPY_STAT} = 1; + + my $update_configuration_h = 0; + if (-f $configuration_h) { + my $configuration_h_mtime = (stat($configuration_h))[9]; + my $configuration_h_in_mtime = (stat($configuration_h_in))[9]; + + # If configuration.h.in was updated after the last configuration.h, + # or if configuration.h.new differs configuration.h, we update + # configuration.h + if ($configuration_h_mtime < $configuration_h_in_mtime + || compare_text("${configuration_h}.new", $configuration_h) != 0) { + $update_configuration_h = 1; + } else { + # If nothing has changed, let's just drop the new one and + # pretend like nothing happened + unlink "${configuration_h}.new" + } + } else { + $update_configuration_h = 1; + } + + if ($update_configuration_h) { + rename("${configuration_h}.new", $configuration_h) + or die "Trying to rename ${configuration_h}.new to $configuration_h: $!"; + print 'Created ',$configuration_h,"\n"; + } + + exit(0); + } + + my $dump = undef; + my $cmdline = undef; + my $options = undef; + my $target = undef; + my $envvars = undef; + my $makevars = undef; + my $buildparams = undef; + my $reconf = undef; + my $verbose = undef; + my $query = undef; + my $help = undef; + my $man = undef; + GetOptions('dump|d' => \$dump, + 'command-line|c' => \$cmdline, + 'options|o' => \$options, + 'target|t' => \$target, + 'environment|e' => \$envvars, + 'make-variables|m' => \$makevars, + 'build-parameters|b' => \$buildparams, + 'reconfigure|reconf|r' => \$reconf, + 'verbose|v' => \$verbose, + 'query|q=s' => \$query, + 'help' => \$help, + 'man' => \$man) + or die "Errors in command line arguments\n"; + + # We allow extra arguments with --query. That allows constructs like + # this: + # ./configdata.pm --query 'get_sources(@ARGV)' file1 file2 file3 + if (!$query && scalar @ARGV > 0) { + print STDERR <<"_____"; +Unrecognised arguments. +For more information, do '$0 --help' +_____ + exit(2); + } + + if ($help) { + pod2usage(-exitval => 0, + -verbose => 1); + } + if ($man) { + pod2usage(-exitval => 0, + -verbose => 2); + } + if ($dump || $cmdline) { + print "\nCommand line (with current working directory = $here):\n\n"; + print ' ',join(' ', + $config{PERL}, + catfile($config{sourcedir}, 'Configure'), + @{$config{perlargv}}), "\n"; + print "\nPerl information:\n\n"; + print ' ',$config{perl_cmd},"\n"; + print ' ',$config{perl_version},' for ',$config{perl_archname},"\n"; + } + if ($dump || $options) { + my $longest = 0; + my $longest2 = 0; + foreach my $what (@disablables) { + $longest = length($what) if $longest < length($what); + $longest2 = length($disabled{$what}) + if $disabled{$what} && $longest2 < length($disabled{$what}); + } + print "\nEnabled features:\n\n"; + foreach my $what (@disablables) { + print " $what\n" unless $disabled{$what}; + } + print "\nDisabled features:\n\n"; + foreach my $what (@disablables) { + if ($disabled{$what}) { + print " $what", ' ' x ($longest - length($what) + 1), + "[$disabled{$what}]", ' ' x ($longest2 - length($disabled{$what}) + 1); + print $disabled_info{$what}->{macro} + if $disabled_info{$what}->{macro}; + print ' (skip ', + join(', ', @{$disabled_info{$what}->{skipped}}), + ')' + if $disabled_info{$what}->{skipped}; + print "\n"; + } + } + } + if ($dump || $target) { + print "\nConfig target attributes:\n\n"; + foreach (sort keys %target) { + next if $_ =~ m|^_| || $_ eq 'template'; + my $quotify = sub { + map { + if (defined $_) { + (my $x = $_) =~ s|([\\\$\@"])|\\$1|g; "\"$x\"" + } else { + "undef"; + } + } @_; + }; + print ' ', $_, ' => '; + if (ref($target{$_}) eq "ARRAY") { + print '[ ', join(', ', $quotify->(@{$target{$_}})), " ],\n"; + } else { + print $quotify->($target{$_}), ",\n" + } + } + } + if ($dump || $envvars) { + print "\nRecorded environment:\n\n"; + foreach (sort keys %{$config{perlenv}}) { + print ' ',$_,' = ',($config{perlenv}->{$_} || ''),"\n"; + } + } + if ($dump || $makevars) { + print "\nMakevars:\n\n"; + foreach my $var (@makevars) { + my $prefix = ''; + $prefix = $config{CROSS_COMPILE} + if grep { $var eq $_ } @user_crossable; + $prefix //= ''; + print ' ',$var,' ' x (16 - length $var),'= ', + (ref $config{$var} eq 'ARRAY' + ? join(' ', @{$config{$var}}) + : $prefix.$config{$var}), + "\n" + if defined $config{$var}; + } + + my @buildfile = ($config{builddir}, $config{build_file}); + unshift @buildfile, $here + unless file_name_is_absolute($config{builddir}); + my $buildfile = canonpath(catdir(@buildfile)); + print <<"_____"; + +NOTE: These variables only represent the configuration view. The build file +template may have processed these variables further, please have a look at the +build file for more exact data: + $buildfile +_____ + } + if ($dump || $buildparams) { + my @buildfile = ($config{builddir}, $config{build_file}); + unshift @buildfile, $here + unless file_name_is_absolute($config{builddir}); + print "\nbuild file:\n\n"; + print " ", canonpath(catfile(@buildfile)),"\n"; + + print "\nbuild file templates:\n\n"; + foreach (@{$config{build_file_templates}}) { + my @tmpl = ($_); + unshift @tmpl, $here + unless file_name_is_absolute($config{sourcedir}); + print ' ',canonpath(catfile(@tmpl)),"\n"; + } + } + if ($reconf) { + if ($verbose) { + print 'Reconfiguring with: ', join(' ',@{$config{perlargv}}), "\n"; + foreach (sort keys %{$config{perlenv}}) { + print ' ',$_,' = ',($config{perlenv}->{$_} || ""),"\n"; + } + } + + chdir $here; + exec $^X,catfile($config{sourcedir}, 'Configure'),'reconf'; + } + if ($query) { + use OpenSSL::Config::Query; + + my $confquery = OpenSSL::Config::Query->new(info => \%unified_info, + config => \%config); + my $result = eval "\$confquery->$query"; + + # We may need a result class with a printing function at some point. + # Until then, we assume that we get a scalar, or a list or a hash table + # with scalar values and simply print them in some orderly fashion. + if (ref $result eq 'ARRAY') { + print "$_\n" foreach @$result; + } elsif (ref $result eq 'HASH') { + print "$_ : \\\n ", join(" \\\n ", @{$result->{$_}}), "\n" + foreach sort keys %$result; + } elsif (ref $result eq 'SCALAR') { + print "$$result\n"; + } + } +} + +1; + +__END__ + +=head1 NAME + +configdata.pm - configuration data for OpenSSL builds + +=head1 SYNOPSIS + +Interactive: + + perl configdata.pm [options] + +As data bank module: + + use configdata; + +=head1 DESCRIPTION + +This module can be used in two modes, interactively and as a module containing +all the data recorded by OpenSSL's Configure script. + +When used interactively, simply run it as any perl script. +If run with no arguments, it will rebuild the build file (Makefile or +corresponding). +With at least one option, it will instead get the information you ask for, or +re-run the configuration process. +See L below for more information. + +When loaded as a module, you get a few databanks with useful information to +perform build related tasks. The databanks are: + + %config Configured things. + %target The OpenSSL config target with all inheritances + resolved. + %disabled The features that are disabled. + @disablables The list of features that can be disabled. + %withargs All data given through --with-THING options. + %unified_info All information that was computed from the build.info + files. + +=head1 OPTIONS + +=over 4 + +=item B<--help> + +Print a brief help message and exit. + +=item B<--man> + +Print the manual page and exit. + +=item B<--dump> | B<-d> + +Print all relevant configuration data. This is equivalent to B<--command-line> +B<--options> B<--target> B<--environment> B<--make-variables> +B<--build-parameters>. + +=item B<--command-line> | B<-c> + +Print the current configuration command line. + +=item B<--options> | B<-o> + +Print the features, both enabled and disabled, and display defined macro and +skipped directories where applicable. + +=item B<--target> | B<-t> + +Print the config attributes for this config target. + +=item B<--environment> | B<-e> + +Print the environment variables and their values at the time of configuration. + +=item B<--make-variables> | B<-m> + +Print the main make variables generated in the current configuration + +=item B<--build-parameters> | B<-b> + +Print the build parameters, i.e. build file and build file templates. + +=item B<--reconfigure> | B<--reconf> | B<-r> + +Re-run the configuration process. + +=item B<--verbose> | B<-v> + +Verbose output. + +=back + +=cut + +EOF diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zkn.s b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zkn.s new file mode 100644 index 00000000000000..ff8a865966bcf2 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zkn.s @@ -0,0 +1,694 @@ +.text +.balign 16 +.globl rv64i_zkne_encrypt +.type rv64i_zkne_encrypt,@function +rv64i_zkne_encrypt: + addi sp,sp,-16 + sd x8,8(sp) + sd x9,0(sp) + + # Load input to block cipher + ld x6,0(x10) + ld x7,8(x10) + + # Load key + ld x13,0(x12) + ld x14,8(x12) + + # Load number of rounds + lwu x30,240(x12) + + # initial transformation + xor x6,x6,x13 + xor x7,x7,x14 + + # The main loop only executes the first N-1 rounds. + add x30,x30,-1 + + # Do Nr - 1 rounds (final round is special) +1: + .word 913507379 + .word 912491699 + + # Update key ptr to point to next key in schedule + add x12,x12,16 + + # Grab next key in schedule + ld x13,0(x12) + ld x14,8(x12) + xor x6,x8,x13 + xor x7,x9,x14 + + add x30,x30,-1 + bgtz x30,1b + + # final round + .word 846398515 + .word 845382835 + + # since not added 16 before + ld x13,16(x12) + ld x14,24(x12) + xor x6,x8,x13 + xor x7,x9,x14 + + sd x6,0(x11) + sd x7,8(x11) + + # Pop registers and return + ld x8,8(sp) + ld x9,0(sp) + addi sp,sp,16 + ret +.text +.balign 16 +.globl rv64i_zknd_decrypt +.type rv64i_zknd_decrypt,@function +rv64i_zknd_decrypt: + addi sp,sp,-16 + sd x8,8(sp) + sd x9,0(sp) + + # Load input to block cipher + ld x6,0(x10) + ld x7,8(x10) + + # Load number of rounds + lwu x30,240(x12) + + # Load the last key + slli x13,x30,4 + add x12,x12,x13 + ld x13,0(x12) + ld x14,8(x12) + + xor x6,x6,x13 + xor x7,x7,x14 + + # The main loop only executes the first N-1 rounds. + add x30,x30,-1 + + # Do Nr - 1 rounds (final round is special) +1: + .word 1047725107 + .word 1046709427 + + # Update key ptr to point to next key in schedule + add x12,x12,-16 + + # Grab next key in schedule + ld x13,0(x12) + ld x14,8(x12) + xor x6,x8,x13 + xor x7,x9,x14 + + add x30,x30,-1 + bgtz x30,1b + + # final round + .word 980616243 + .word 979600563 + + add x12,x12,-16 + ld x13,0(x12) + ld x14,8(x12) + xor x6,x8,x13 + xor x7,x9,x14 + + sd x6,0(x11) + sd x7,8(x11) + # Pop registers and return + ld x8,8(sp) + ld x9,0(sp) + addi sp,sp,16 + ret +.text +.balign 16 +.globl rv64i_zkne_set_encrypt_key +.type rv64i_zkne_set_encrypt_key,@function +rv64i_zkne_set_encrypt_key: + addi sp,sp,-16 + sd x8,0(sp) + # Determine number of rounds from key size in bits + li x6,128 + bne x11,x6,1f + li x7,10 # key->rounds = 10 if bits == 128 + sw x7,240(x12) # store key->rounds + ld x6,0(x10) + ld x7,8(x10) + sd x6,0(x12) + sd x7,8(x12) + .word 822318099 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 823366675 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 824415251 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 825463827 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 826512403 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 827560979 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 828609555 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 829658131 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 830706707 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 831755283 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + + j 4f +1: + li x6,192 + bne x11,x6,2f + li x7,12 # key->rounds = 12 if bits == 192 + sw x7,240(x12) # store key->rounds + ld x6,0(x10) + ld x7,8(x10) + ld x8,16(x10) + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 822351507 + .word 2120647475 + .word 2121466803 + .word 2122548275 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 823400083 + .word 2120647475 + .word 2121466803 + .word 2122548275 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 824448659 + .word 2120647475 + .word 2121466803 + .word 2122548275 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 825497235 + .word 2120647475 + .word 2121466803 + .word 2122548275 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 826545811 + .word 2120647475 + .word 2121466803 + .word 2122548275 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 827594387 + .word 2120647475 + .word 2121466803 + .word 2122548275 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 828642963 + .word 2120647475 + .word 2121466803 + .word 2122548275 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 829691539 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + + j 4f +2: + li x7,14 # key->rounds = 14 if bits == 256 + li x6,256 + beq x11,x6,3f + li a0,-2 # If bits != 128, 192, or 256, return -2 + j 5f +3: + sw x7,240(x12) # store key->rounds + ld x6,0(x10) + ld x7,8(x10) + ld x8,16(x10) + ld x13,24(x10) + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + sd x13,24(x12) + .word 822515475 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + .word 832804627 + .word 2122777651 + .word 2127824563 + sd x8,16(x12) + sd x13,24(x12) + .word 823564051 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + .word 832804627 + .word 2122777651 + .word 2127824563 + sd x8,16(x12) + sd x13,24(x12) + .word 824612627 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + .word 832804627 + .word 2122777651 + .word 2127824563 + sd x8,16(x12) + sd x13,24(x12) + .word 825661203 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + .word 832804627 + .word 2122777651 + .word 2127824563 + sd x8,16(x12) + sd x13,24(x12) + .word 826709779 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + .word 832804627 + .word 2122777651 + .word 2127824563 + sd x8,16(x12) + sd x13,24(x12) + .word 827758355 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + .word 832804627 + .word 2122777651 + .word 2127824563 + sd x8,16(x12) + sd x13,24(x12) + .word 828806931 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + +4: # return 0 + li a0,0 +5: # return a0 + ld x8,0(sp) + addi sp,sp,16 + ret +.text +.balign 16 +.globl rv64i_zknd_set_decrypt_key +.type rv64i_zknd_set_decrypt_key,@function +rv64i_zknd_set_decrypt_key: + addi sp,sp,-16 + sd x8,0(sp) + # Determine number of rounds from key size in bits + li x6,128 + bne x11,x6,1f + li x7,10 # key->rounds = 10 if bits == 128 + sw x7,240(x12) # store key->rounds + ld x6,0(x10) + ld x7,8(x10) + sd x6,0(x12) + sd x7,8(x12) + .word 822318099 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 823366675 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 824415251 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 825463827 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 826512403 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 827560979 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 828609555 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 829658131 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 830706707 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 831755283 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + + j 4f +1: + li x6,192 + bne x11,x6,2f + li x7,12 # key->rounds = 12 if bits == 192 + sw x7,240(x12) # store key->rounds + ld x6,0(x10) + ld x7,8(x10) + ld x8,16(x10) + sd x6,0(x12) + sd x7,8(x12) + .word 805574291 + sd x13,16(x12) + .word 822351507 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + .word 805508755 + sd x13,0(x12) + .word 805541523 + sd x13,8(x12) + # the reason is in ke192enc + .word 2122548275 + .word 805574291 + sd x13,16(x12) + .word 823400083 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + .word 805508755 + sd x13,0(x12) + .word 805541523 + sd x13,8(x12) + # the reason is in ke192enc + .word 2122548275 + .word 805574291 + sd x13,16(x12) + .word 824448659 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + .word 805508755 + sd x13,0(x12) + .word 805541523 + sd x13,8(x12) + # the reason is in ke192enc + .word 2122548275 + .word 805574291 + sd x13,16(x12) + .word 825497235 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + .word 805508755 + sd x13,0(x12) + .word 805541523 + sd x13,8(x12) + # the reason is in ke192enc + .word 2122548275 + .word 805574291 + sd x13,16(x12) + .word 826545811 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + .word 805508755 + sd x13,0(x12) + .word 805541523 + sd x13,8(x12) + # the reason is in ke192enc + .word 2122548275 + .word 805574291 + sd x13,16(x12) + .word 827594387 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + .word 805508755 + sd x13,0(x12) + .word 805541523 + sd x13,8(x12) + # the reason is in ke192enc + .word 2122548275 + .word 805574291 + sd x13,16(x12) + .word 828642963 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + .word 805508755 + sd x13,0(x12) + .word 805541523 + sd x13,8(x12) + # the reason is in ke192enc + .word 2122548275 + .word 805574291 + sd x13,16(x12) + .word 829691539 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + + j 4f +2: + li x7,14 # key->rounds = 14 if bits == 256 + li x6,256 + beq x11,x6,3f + li a0,-2 # If bits != 128, 192, or 256, return -2 + j 5f +3: + sw x7,240(x12) # store key->rounds + ld x6,0(x10) + ld x7,8(x10) + ld x8,16(x10) + ld x13,24(x10) + sd x6,0(x12) + sd x7,8(x12) + .word 805574419 + sd x14,16(x12) + .word 805738259 + sd x14,24(x12) + .word 822515475 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + .word 832804627 + .word 2122777651 + .word 2127824563 + .word 805508883 + sd x14,0(x12) + .word 805541651 + sd x14,8(x12) + .word 805574419 + sd x14,16(x12) + .word 805738259 + sd x14,24(x12) + .word 823564051 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + .word 832804627 + .word 2122777651 + .word 2127824563 + .word 805508883 + sd x14,0(x12) + .word 805541651 + sd x14,8(x12) + .word 805574419 + sd x14,16(x12) + .word 805738259 + sd x14,24(x12) + .word 824612627 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + .word 832804627 + .word 2122777651 + .word 2127824563 + .word 805508883 + sd x14,0(x12) + .word 805541651 + sd x14,8(x12) + .word 805574419 + sd x14,16(x12) + .word 805738259 + sd x14,24(x12) + .word 825661203 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + .word 832804627 + .word 2122777651 + .word 2127824563 + .word 805508883 + sd x14,0(x12) + .word 805541651 + sd x14,8(x12) + .word 805574419 + sd x14,16(x12) + .word 805738259 + sd x14,24(x12) + .word 826709779 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + .word 832804627 + .word 2122777651 + .word 2127824563 + .word 805508883 + sd x14,0(x12) + .word 805541651 + sd x14,8(x12) + .word 805574419 + sd x14,16(x12) + .word 805738259 + sd x14,24(x12) + .word 827758355 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + .word 832804627 + .word 2122777651 + .word 2127824563 + .word 805508883 + sd x14,0(x12) + .word 805541651 + sd x14,8(x12) + .word 805574419 + sd x14,16(x12) + .word 805738259 + sd x14,24(x12) + .word 828806931 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + # last two one dropped + +4: # return 0 + li a0,0 +5: # return a0 + ld x8,0(sp) + addi sp,sp,16 + ret diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s new file mode 100644 index 00000000000000..f8a68e7c42dd0a --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s @@ -0,0 +1,943 @@ +.text +.p2align 3 +.globl rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt +.type rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt,@function +rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt: + # Load number of rounds + lwu t0, 240(a4) + .word 3439489111 + .word 34074119 + .word 34041479 + .word 2815667831 + addi t0, t0, -1 + addi a4, a4, 16 +1: + .word 34041479 + .word 2815503991 + addi t0, t0, -1 + addi a4, a4, 16 + bnez t0, 1b + .word 34041479 + .word 2815536759 + + + # aes block size is 16 + andi a6, a2, 15 + mv t3, a2 + beqz a6, 1f + sub a2, a2, a6 + addi t3, a2, -16 +1: + # We make the `LENGTH` become e32 length here. + srli t4, a2, 2 + srli t3, t3, 2 + + # Load number of rounds + lwu t0, 240(a3) + li t1, 14 + li t2, 10 + beq t0, t1, aes_xts_enc_256 + beq t0, t2, aes_xts_enc_128 +.size rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt,.-rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt +.p2align 3 +aes_xts_enc_128: + # load input + .word 221182167 + .word 33909767 + + li t0, 5 + # We could simplify the initialization steps if we have `block<=1`. + blt t4, t0, 1f + + # Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses + # different order of coefficients. We should use`vbrev8` to reverse the + # data when we use `vgmul`. + .word 3439489111 + .word 1271144535 + .word 221179991 + .word 1577072727 + # v16: [r-IV0, r-IV0, ...] + .word 2785257591 + + # Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8. + slli t0, t4, 2 + .word 218296407 + # v2: [`1`, `1`, `1`, `1`, ...] + .word 1577103703 + # v3: [`0`, `1`, `2`, `3`, ...] + .word 1376297431 + .word 227733591 + # v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...] + .word 1243816535 + # v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...] + .word 1244865367 + slli t0, t4, 1 + .word 219344983 + # v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...] + .word 3594716247 + + # Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16 + .word 221179991 + .word 1250174039 + .word 2726865015 + + # Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28. + # Reverse the bits order back. + .word 1258565207 + + # Prepare the x^n multiplier in v20. The `n` is the aes-xts block number + # in a LMUL=4 register group. + # n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4)) + # = (VLEN/32) + # We could use vsetvli with `e32, m1` to compute the `n` number. + .word 218133207 + li t1, 1 + sll t0, t1, t0 + .word 3447812183 + .word 1577070679 + .word 3380670551 + .word 1577238615 + .word 3447812183 + .word 1241784407 + .word 221179991 + .word 1577073239 + .word 2785258103 + + j 2f +1: + .word 3439489111 + .word 1271146583 +2: + + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + + .word 221182167 + j 1f + +.Lenc_blocks_128: + .word 221182167 + # load plaintext into v24 + .word 33909767 + # update iv + .word 2739447927 + # reverse the iv's bits order back + .word 1258565207 +1: + .word 797838423 + slli t0, a7, 2 + sub t4, t4, a7 + add a0, a0, t0 + .word 2786307191 + .word 2787191927 + .word 2788240503 + .word 2789289079 + .word 2790337655 + .word 2791386231 + .word 2792434807 + .word 2793483383 + .word 2794531959 + .word 2795580535 + .word 2796661879 + + .word 797838423 + + # store ciphertext + .word 221147223 + .word 33942567 + add a1, a1, t0 + sub t3, t3, a7 + + bnez t4, .Lenc_blocks_128 + + bnez a6, 1f + ret +1: + # slidedown second to last block + addi a7, a7, -4 + .word 3441586263 + # ciphertext + .word 1065929815 + # multiplier + .word 1057540183 + + .word 3439489111 + .word 1577848023 + + # load last block into v24 + # note: We should load the last block before store the second to last block + # for in-place operation. + .word 134770775 + .word 33885191 + + # setup `x` multiplier with byte-reversed order + # 0b00000010 => 0b01000000 (0x40) + li t0, 0x40 + .word 3439489111 + .word 1577074263 + .word 3355504727 + .word 1577242199 + + # compute IV for last block + .word 3439489111 + .word 2747836535 + .word 1258565207 + + # store second to last block + .word 201879639 + .word 33918119 + + + # xts last block + .word 3439489111 + .word 797838423 + .word 2786307191 + .word 2787191927 + .word 2788240503 + .word 2789289079 + .word 2790337655 + .word 2791386231 + .word 2792434807 + .word 2793483383 + .word 2794531959 + .word 2795580535 + .word 2796661879 + + .word 797838423 + + # store last block ciphertext + addi a1, a1, -16 + .word 33942567 + + ret +.size aes_xts_enc_128,.-aes_xts_enc_128 +.p2align 3 +aes_xts_enc_256: + # load input + .word 221182167 + .word 33909767 + + li t0, 5 + # We could simplify the initialization steps if we have `block<=1`. + blt t4, t0, 1f + + # Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses + # different order of coefficients. We should use`vbrev8` to reverse the + # data when we use `vgmul`. + .word 3439489111 + .word 1271144535 + .word 221179991 + .word 1577072727 + # v16: [r-IV0, r-IV0, ...] + .word 2785257591 + + # Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8. + slli t0, t4, 2 + .word 218296407 + # v2: [`1`, `1`, `1`, `1`, ...] + .word 1577103703 + # v3: [`0`, `1`, `2`, `3`, ...] + .word 1376297431 + .word 227733591 + # v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...] + .word 1243816535 + # v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...] + .word 1244865367 + slli t0, t4, 1 + .word 219344983 + # v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...] + .word 3594716247 + + # Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16 + .word 221179991 + .word 1250174039 + .word 2726865015 + + # Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28. + # Reverse the bits order back. + .word 1258565207 + + # Prepare the x^n multiplier in v20. The `n` is the aes-xts block number + # in a LMUL=4 register group. + # n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4)) + # = (VLEN/32) + # We could use vsetvli with `e32, m1` to compute the `n` number. + .word 218133207 + li t1, 1 + sll t0, t1, t0 + .word 3447812183 + .word 1577070679 + .word 3380670551 + .word 1577238615 + .word 3447812183 + .word 1241784407 + .word 221179991 + .word 1577073239 + .word 2785258103 + + j 2f +1: + .word 3439489111 + .word 1271146583 +2: + + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + + + .word 221182167 + j 1f + +.Lenc_blocks_256: + .word 221182167 + # load plaintext into v24 + .word 33909767 + # update iv + .word 2739447927 + # reverse the iv's bits order back + .word 1258565207 +1: + .word 797838423 + slli t0, a7, 2 + sub t4, t4, a7 + add a0, a0, t0 + .word 2786307191 + .word 2787191927 + .word 2788240503 + .word 2789289079 + .word 2790337655 + .word 2791386231 + .word 2792434807 + .word 2793483383 + .word 2794531959 + .word 2795580535 + .word 2796629111 + .word 2797677687 + .word 2798726263 + .word 2799774839 + .word 2800856183 + + .word 797838423 + + # store ciphertext + .word 221147223 + .word 33942567 + add a1, a1, t0 + sub t3, t3, a7 + + bnez t4, .Lenc_blocks_256 + + bnez a6, 1f + ret +1: + # slidedown second to last block + addi a7, a7, -4 + .word 3441586263 + # ciphertext + .word 1065929815 + # multiplier + .word 1057540183 + + .word 3439489111 + .word 1577848023 + + # load last block into v24 + # note: We should load the last block before store the second to last block + # for in-place operation. + .word 134770775 + .word 33885191 + + # setup `x` multiplier with byte-reversed order + # 0b00000010 => 0b01000000 (0x40) + li t0, 0x40 + .word 3439489111 + .word 1577074263 + .word 3355504727 + .word 1577242199 + + # compute IV for last block + .word 3439489111 + .word 2747836535 + .word 1258565207 + + # store second to last block + .word 201879639 + .word 33918119 + + + # xts last block + .word 3439489111 + .word 797838423 + .word 2786307191 + .word 2787191927 + .word 2788240503 + .word 2789289079 + .word 2790337655 + .word 2791386231 + .word 2792434807 + .word 2793483383 + .word 2794531959 + .word 2795580535 + .word 2796629111 + .word 2797677687 + .word 2798726263 + .word 2799774839 + .word 2800856183 + + .word 797838423 + + # store last block ciphertext + addi a1, a1, -16 + .word 33942567 + + ret +.size aes_xts_enc_256,.-aes_xts_enc_256 +.p2align 3 +.globl rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt +.type rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt,@function +rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt: + # Load number of rounds + lwu t0, 240(a4) + .word 3439489111 + .word 34074119 + .word 34041479 + .word 2815667831 + addi t0, t0, -1 + addi a4, a4, 16 +1: + .word 34041479 + .word 2815503991 + addi t0, t0, -1 + addi a4, a4, 16 + bnez t0, 1b + .word 34041479 + .word 2815536759 + + + # aes block size is 16 + andi a6, a2, 15 + beqz a6, 1f + sub a2, a2, a6 + addi a2, a2, -16 +1: + # We make the `LENGTH` become e32 length here. + srli t4, a2, 2 + + # Load number of rounds + lwu t0, 240(a3) + li t1, 14 + li t2, 10 + beq t0, t1, aes_xts_dec_256 + beq t0, t2, aes_xts_dec_128 +.size rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt,.-rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt +.p2align 3 +aes_xts_dec_128: + # load input + .word 221182167 + .word 33909767 + + li t0, 5 + # We could simplify the initialization steps if we have `block<=1`. + blt t4, t0, 1f + + # Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses + # different order of coefficients. We should use`vbrev8` to reverse the + # data when we use `vgmul`. + .word 3439489111 + .word 1271144535 + .word 221179991 + .word 1577072727 + # v16: [r-IV0, r-IV0, ...] + .word 2785257591 + + # Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8. + slli t0, t4, 2 + .word 218296407 + # v2: [`1`, `1`, `1`, `1`, ...] + .word 1577103703 + # v3: [`0`, `1`, `2`, `3`, ...] + .word 1376297431 + .word 227733591 + # v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...] + .word 1243816535 + # v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...] + .word 1244865367 + slli t0, t4, 1 + .word 219344983 + # v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...] + .word 3594716247 + + # Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16 + .word 221179991 + .word 1250174039 + .word 2726865015 + + # Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28. + # Reverse the bits order back. + .word 1258565207 + + # Prepare the x^n multiplier in v20. The `n` is the aes-xts block number + # in a LMUL=4 register group. + # n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4)) + # = (VLEN/32) + # We could use vsetvli with `e32, m1` to compute the `n` number. + .word 218133207 + li t1, 1 + sll t0, t1, t0 + .word 3447812183 + .word 1577070679 + .word 3380670551 + .word 1577238615 + .word 3447812183 + .word 1241784407 + .word 221179991 + .word 1577073239 + .word 2785258103 + + j 2f +1: + .word 3439489111 + .word 1271146583 +2: + + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + + beqz t4, 2f + + .word 221182167 + j 1f + +.Ldec_blocks_128: + .word 221182167 + # load ciphertext into v24 + .word 33909767 + # update iv + .word 2739447927 + # reverse the iv's bits order back + .word 1258565207 +1: + .word 797838423 + slli t0, a7, 2 + sub t4, t4, a7 + add a0, a0, t0 + .word 2796792951 + .word 2795514999 + .word 2794466423 + .word 2793417847 + .word 2792369271 + .word 2791320695 + .word 2790272119 + .word 2789223543 + .word 2788174967 + .word 2787126391 + .word 2786110583 + + .word 797838423 + + # store plaintext + .word 33942567 + add a1, a1, t0 + + bnez t4, .Ldec_blocks_128 + +2: + bnez a6, 1f + ret +1: + # load second to last block's ciphertext + .word 3439489111 + .word 33909767 + addi a0, a0, 16 + + # setup `x` multiplier with byte-reversed order + # 0b00000010 => 0b01000000 (0x40) + li t0, 0x40 + .word 3439489111 + .word 1577073239 + .word 3355504727 + .word 1577241175 + + beqz a2, 1f + # slidedown third to last block + addi a7, a7, -4 + .word 3441586263 + # multiplier + .word 1057540183 + + # compute IV for last block + .word 3439489111 + .word 2739447927 + .word 1258565207 + + # compute IV for second to last block + .word 2739447927 + .word 1258565335 + j 2f +1: + # compute IV for second to last block + .word 3439489111 + .word 2739447927 + .word 1258565335 +2: + + + ## xts second to last block + .word 3439489111 + .word 797871191 + .word 2796792951 + .word 2795514999 + .word 2794466423 + .word 2793417847 + .word 2792369271 + .word 2791320695 + .word 2790272119 + .word 2789223543 + .word 2788174967 + .word 2787126391 + .word 2786110583 + + .word 797871191 + .word 1577848023 + + # load last block ciphertext + .word 134770775 + .word 33885191 + + # store second to last block plaintext + addi t0, a1, 16 + .word 33721511 + + ## xts last block + .word 3439489111 + .word 797838423 + .word 2796792951 + .word 2795514999 + .word 2794466423 + .word 2793417847 + .word 2792369271 + .word 2791320695 + .word 2790272119 + .word 2789223543 + .word 2788174967 + .word 2787126391 + .word 2786110583 + + .word 797838423 + + # store second to last block plaintext + .word 33942567 + + ret +.size aes_xts_dec_128,.-aes_xts_dec_128 +.p2align 3 +aes_xts_dec_256: + # load input + .word 221182167 + .word 33909767 + + li t0, 5 + # We could simplify the initialization steps if we have `block<=1`. + blt t4, t0, 1f + + # Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses + # different order of coefficients. We should use`vbrev8` to reverse the + # data when we use `vgmul`. + .word 3439489111 + .word 1271144535 + .word 221179991 + .word 1577072727 + # v16: [r-IV0, r-IV0, ...] + .word 2785257591 + + # Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8. + slli t0, t4, 2 + .word 218296407 + # v2: [`1`, `1`, `1`, `1`, ...] + .word 1577103703 + # v3: [`0`, `1`, `2`, `3`, ...] + .word 1376297431 + .word 227733591 + # v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...] + .word 1243816535 + # v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...] + .word 1244865367 + slli t0, t4, 1 + .word 219344983 + # v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...] + .word 3594716247 + + # Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16 + .word 221179991 + .word 1250174039 + .word 2726865015 + + # Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28. + # Reverse the bits order back. + .word 1258565207 + + # Prepare the x^n multiplier in v20. The `n` is the aes-xts block number + # in a LMUL=4 register group. + # n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4)) + # = (VLEN/32) + # We could use vsetvli with `e32, m1` to compute the `n` number. + .word 218133207 + li t1, 1 + sll t0, t1, t0 + .word 3447812183 + .word 1577070679 + .word 3380670551 + .word 1577238615 + .word 3447812183 + .word 1241784407 + .word 221179991 + .word 1577073239 + .word 2785258103 + + j 2f +1: + .word 3439489111 + .word 1271146583 +2: + + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + + + beqz t4, 2f + + .word 221182167 + j 1f + +.Ldec_blocks_256: + .word 221182167 + # load ciphertext into v24 + .word 33909767 + # update iv + .word 2739447927 + # reverse the iv's bits order back + .word 1258565207 +1: + .word 797838423 + slli t0, a7, 2 + sub t4, t4, a7 + add a0, a0, t0 + .word 2800987255 + .word 2799709303 + .word 2798660727 + .word 2797612151 + .word 2796563575 + .word 2795514999 + .word 2794466423 + .word 2793417847 + .word 2792369271 + .word 2791320695 + .word 2790272119 + .word 2789223543 + .word 2788174967 + .word 2787126391 + .word 2786110583 + + .word 797838423 + + # store plaintext + .word 33942567 + add a1, a1, t0 + + bnez t4, .Ldec_blocks_256 + +2: + bnez a6, 1f + ret +1: + # load second to last block's ciphertext + .word 3439489111 + .word 33909767 + addi a0, a0, 16 + + # setup `x` multiplier with byte-reversed order + # 0b00000010 => 0b01000000 (0x40) + li t0, 0x40 + .word 3439489111 + .word 1577073239 + .word 3355504727 + .word 1577241175 + + beqz a2, 1f + # slidedown third to last block + addi a7, a7, -4 + .word 3441586263 + # multiplier + .word 1057540183 + + # compute IV for last block + .word 3439489111 + .word 2739447927 + .word 1258565207 + + # compute IV for second to last block + .word 2739447927 + .word 1258565335 + j 2f +1: + # compute IV for second to last block + .word 3439489111 + .word 2739447927 + .word 1258565335 +2: + + + ## xts second to last block + .word 3439489111 + .word 797871191 + .word 2800987255 + .word 2799709303 + .word 2798660727 + .word 2797612151 + .word 2796563575 + .word 2795514999 + .word 2794466423 + .word 2793417847 + .word 2792369271 + .word 2791320695 + .word 2790272119 + .word 2789223543 + .word 2788174967 + .word 2787126391 + .word 2786110583 + + .word 797871191 + .word 1577848023 + + # load last block ciphertext + .word 134770775 + .word 33885191 + + # store second to last block plaintext + addi t0, a1, 16 + .word 33721511 + + ## xts last block + .word 3439489111 + .word 797838423 + .word 2800987255 + .word 2799709303 + .word 2798660727 + .word 2797612151 + .word 2796563575 + .word 2795514999 + .word 2794466423 + .word 2793417847 + .word 2792369271 + .word 2791320695 + .word 2790272119 + .word 2789223543 + .word 2788174967 + .word 2787126391 + .word 2786110583 + + .word 797838423 + + # store second to last block plaintext + .word 33942567 + + ret +.size aes_xts_dec_256,.-aes_xts_dec_256 diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvkb-zvkned.s b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvkb-zvkned.s new file mode 100644 index 00000000000000..2d6a71e355eb43 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvkb-zvkned.s @@ -0,0 +1,326 @@ +.text +.p2align 3 +.globl rv64i_zvkb_zvkned_ctr32_encrypt_blocks +.type rv64i_zvkb_zvkned_ctr32_encrypt_blocks,@function +rv64i_zvkb_zvkned_ctr32_encrypt_blocks: + beqz a2, 1f + + # Load number of rounds + lwu t0, 240(a3) + li t1, 14 + li t2, 12 + li t3, 10 + + slli t5, a2, 2 + + beq t0, t1, ctr32_encrypt_blocks_256 + beq t0, t2, ctr32_encrypt_blocks_192 + beq t0, t3, ctr32_encrypt_blocks_128 + +1: + ret + +.size rv64i_zvkb_zvkned_ctr32_encrypt_blocks,.-rv64i_zvkb_zvkned_ctr32_encrypt_blocks +.p2align 3 +ctr32_encrypt_blocks_128: + # Load all 11 round keys to v1-v11 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + # Setup mask into v0 + # The mask pattern for 4*N-th elements + # mask v0: [000100010001....] + # Note: + # We could setup the mask just for the maximum element length instead of + # the VLMAX. + li t0, 0b10001000 + .word 201356247 + .word 1577238615 + # Load IV. + # v31:[IV0, IV1, IV2, big-endian count] + .word 3439489111 + .word 34041735 + # Convert the big-endian counter into little-endian. + .word 3305271383 + .word 1240772567 + # Splat the IV to v16 + .word 221212759 + .word 1577072727 + .word 2817763447 + # Prepare the ctr pattern into v20 + # v20: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...] + .word 1342712407 + # v16:[IV0, IV1, IV2, count+0, IV0, IV1, IV2, count+1, ...] + .word 86998743 + .word 17434711 + + + ##### AES body + j 2f +1: + .word 86998743 + # Increase ctr in v16. + .word 17811543 +2: + # Load plaintext into v20 + .word 33909255 + slli t0, t4, 2 + srli t6, t4, 2 + sub t5, t5, t4 + add a0, a0, t0 + # Prepare the AES ctr input into v24. + # The ctr data uses big-endian form. + .word 1577585751 + .word 1233431639 + + .word 2786307191 + .word 2787191927 + .word 2788240503 + .word 2789289079 + .word 2790337655 + .word 2791386231 + .word 2792434807 + .word 2793483383 + .word 2794531959 + .word 2795580535 + .word 2796661879 + + # ciphertext + .word 797576279 + + # Store the ciphertext. + .word 33942567 + add a1, a1, t0 + + bnez t5, 1b + + ret +.size ctr32_encrypt_blocks_128,.-ctr32_encrypt_blocks_128 +.p2align 3 +ctr32_encrypt_blocks_192: + # Load all 13 round keys to v1-v13 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + + # Setup mask into v0 + # The mask pattern for 4*N-th elements + # mask v0: [000100010001....] + # Note: + # We could setup the mask just for the maximum element length instead of + # the VLMAX. + li t0, 0b10001000 + .word 201356247 + .word 1577238615 + # Load IV. + # v31:[IV0, IV1, IV2, big-endian count] + .word 3439489111 + .word 34041735 + # Convert the big-endian counter into little-endian. + .word 3305271383 + .word 1240772567 + # Splat the IV to v16 + .word 221212759 + .word 1577072727 + .word 2817763447 + # Prepare the ctr pattern into v20 + # v20: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...] + .word 1342712407 + # v16:[IV0, IV1, IV2, count+0, IV0, IV1, IV2, count+1, ...] + .word 86998743 + .word 17434711 + + + ##### AES body + j 2f +1: + .word 86998743 + # Increase ctr in v16. + .word 17811543 +2: + # Load plaintext into v20 + .word 33909255 + slli t0, t4, 2 + srli t6, t4, 2 + sub t5, t5, t4 + add a0, a0, t0 + # Prepare the AES ctr input into v24. + # The ctr data uses big-endian form. + .word 1577585751 + .word 1233431639 + + .word 2786307191 + .word 2787191927 + .word 2788240503 + .word 2789289079 + .word 2790337655 + .word 2791386231 + .word 2792434807 + .word 2793483383 + .word 2794531959 + .word 2795580535 + .word 2796629111 + .word 2797677687 + .word 2798759031 + + # ciphertext + .word 797576279 + + # Store the ciphertext. + .word 33942567 + add a1, a1, t0 + + bnez t5, 1b + + ret +.size ctr32_encrypt_blocks_192,.-ctr32_encrypt_blocks_192 +.p2align 3 +ctr32_encrypt_blocks_256: + # Load all 15 round keys to v1-v15 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + + # Setup mask into v0 + # The mask pattern for 4*N-th elements + # mask v0: [000100010001....] + # Note: + # We could setup the mask just for the maximum element length instead of + # the VLMAX. + li t0, 0b10001000 + .word 201356247 + .word 1577238615 + # Load IV. + # v31:[IV0, IV1, IV2, big-endian count] + .word 3439489111 + .word 34041735 + # Convert the big-endian counter into little-endian. + .word 3305271383 + .word 1240772567 + # Splat the IV to v16 + .word 221212759 + .word 1577072727 + .word 2817763447 + # Prepare the ctr pattern into v20 + # v20: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...] + .word 1342712407 + # v16:[IV0, IV1, IV2, count+0, IV0, IV1, IV2, count+1, ...] + .word 86998743 + .word 17434711 + + + ##### AES body + j 2f +1: + .word 86998743 + # Increase ctr in v16. + .word 17811543 +2: + # Load plaintext into v20 + .word 33909255 + slli t0, t4, 2 + srli t6, t4, 2 + sub t5, t5, t4 + add a0, a0, t0 + # Prepare the AES ctr input into v24. + # The ctr data uses big-endian form. + .word 1577585751 + .word 1233431639 + + .word 2786307191 + .word 2787191927 + .word 2788240503 + .word 2789289079 + .word 2790337655 + .word 2791386231 + .word 2792434807 + .word 2793483383 + .word 2794531959 + .word 2795580535 + .word 2796629111 + .word 2797677687 + .word 2798726263 + .word 2799774839 + .word 2800856183 + + # ciphertext + .word 797576279 + + # Store the ciphertext. + .word 33942567 + add a1, a1, t0 + + bnez t5, 1b + + ret +.size ctr32_encrypt_blocks_256,.-ctr32_encrypt_blocks_256 diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvkned.s b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvkned.s new file mode 100644 index 00000000000000..654e2242146c95 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvkned.s @@ -0,0 +1,1390 @@ +.text +.p2align 3 +.globl rv64i_zvkned_cbc_encrypt +.type rv64i_zvkned_cbc_encrypt,@function +rv64i_zvkned_cbc_encrypt: + # check whether the length is a multiple of 16 and >= 16 + li t1, 16 + blt a2, t1, L_end + andi t1, a2, 15 + bnez t1, L_end + + # Load number of rounds + lwu t2, 240(a3) + + # Get proper routine for key size + li t0, 10 + beq t2, t0, L_cbc_enc_128 + + li t0, 12 + beq t2, t0, L_cbc_enc_192 + + li t0, 14 + beq t2, t0, L_cbc_enc_256 + + ret +.size rv64i_zvkned_cbc_encrypt,.-rv64i_zvkned_cbc_encrypt +.p2align 3 +L_cbc_enc_128: + # Load all 11 round keys to v1-v11 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + + # Load IV. + .word 34039815 + + .word 33909767 + .word 797445207 + j 2f + +1: + .word 33908871 + .word 797477975 + +2: + # AES body + .word 2786307191 # with round key w[ 0, 3] + .word 2787191927 # with round key w[ 4, 7] + .word 2788240503 # with round key w[ 8,11] + .word 2789289079 # with round key w[12,15] + .word 2790337655 # with round key w[16,19] + .word 2791386231 # with round key w[20,23] + .word 2792434807 # with round key w[24,27] + .word 2793483383 # with round key w[28,31] + .word 2794531959 # with round key w[32,35] + .word 2795580535 # with round key w[36,39] + .word 2796661879 # with round key w[40,43] + + + .word 33942567 + + addi a0, a0, 16 + addi a1, a1, 16 + addi a2, a2, -16 + + bnez a2, 1b + + .word 34040871 + + ret +.size L_cbc_enc_128,.-L_cbc_enc_128 +.p2align 3 +L_cbc_enc_192: + # Load all 13 round keys to v1-v13 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + + + # Load IV. + .word 34039815 + + .word 33909767 + .word 797445207 + j 2f + +1: + .word 33908871 + .word 797477975 + +2: + # AES body + .word 2786307191 # with round key w[ 0, 3] + .word 2787191927 # with round key w[ 4, 7] + .word 2788240503 # with round key w[ 8,11] + .word 2789289079 # with round key w[12,15] + .word 2790337655 # with round key w[16,19] + .word 2791386231 # with round key w[20,23] + .word 2792434807 # with round key w[24,27] + .word 2793483383 # with round key w[28,31] + .word 2794531959 # with round key w[32,35] + .word 2795580535 # with round key w[36,39] + .word 2796629111 # with round key w[40,43] + .word 2797677687 # with round key w[44,47] + .word 2798759031 # with round key w[48,51] + + + .word 33942567 + + addi a0, a0, 16 + addi a1, a1, 16 + addi a2, a2, -16 + + bnez a2, 1b + + .word 34040871 + + ret +.size L_cbc_enc_192,.-L_cbc_enc_192 +.p2align 3 +L_cbc_enc_256: + # Load all 15 round keys to v1-v15 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + + + # Load IV. + .word 34039815 + + .word 33909767 + .word 797445207 + j 2f + +1: + .word 33908871 + .word 797477975 + +2: + # AES body + .word 2786307191 # with round key w[ 0, 3] + .word 2787191927 # with round key w[ 4, 7] + .word 2788240503 # with round key w[ 8,11] + .word 2789289079 # with round key w[12,15] + .word 2790337655 # with round key w[16,19] + .word 2791386231 # with round key w[20,23] + .word 2792434807 # with round key w[24,27] + .word 2793483383 # with round key w[28,31] + .word 2794531959 # with round key w[32,35] + .word 2795580535 # with round key w[36,39] + .word 2796629111 # with round key w[40,43] + .word 2797677687 # with round key w[44,47] + .word 2798726263 # with round key w[48,51] + .word 2799774839 # with round key w[52,55] + .word 2800856183 # with round key w[56,59] + + + .word 33942567 + + addi a0, a0, 16 + addi a1, a1, 16 + addi a2, a2, -16 + + bnez a2, 1b + + .word 34040871 + + ret +.size L_cbc_enc_256,.-L_cbc_enc_256 +.p2align 3 +.globl rv64i_zvkned_cbc_decrypt +.type rv64i_zvkned_cbc_decrypt,@function +rv64i_zvkned_cbc_decrypt: + # check whether the length is a multiple of 16 and >= 16 + li t1, 16 + blt a2, t1, L_end + andi t1, a2, 15 + bnez t1, L_end + + # Load number of rounds + lwu t2, 240(a3) + + # Get proper routine for key size + li t0, 10 + beq t2, t0, L_cbc_dec_128 + + li t0, 12 + beq t2, t0, L_cbc_dec_192 + + li t0, 14 + beq t2, t0, L_cbc_dec_256 + + ret +.size rv64i_zvkned_cbc_decrypt,.-rv64i_zvkned_cbc_decrypt +.p2align 3 +L_cbc_dec_128: + # Load all 11 round keys to v1-v11 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + + # Load IV. + .word 34039815 + + .word 33909767 + .word 1577846999 + j 2f + +1: + .word 33909767 + .word 1577846999 + addi a1, a1, 16 + +2: + # AES body + .word 2796792951 # with round key w[40,43] + .word 2795514999 # with round key w[36,39] + .word 2794466423 # with round key w[32,35] + .word 2793417847 # with round key w[28,31] + .word 2792369271 # with round key w[24,27] + .word 2791320695 # with round key w[20,23] + .word 2790272119 # with round key w[16,19] + .word 2789223543 # with round key w[12,15] + .word 2788174967 # with round key w[ 8,11] + .word 2787126391 # with round key w[ 4, 7] + .word 2786110583 # with round key w[ 0, 3] + + + .word 797445207 + .word 33942567 + .word 1577617495 + + addi a2, a2, -16 + addi a0, a0, 16 + + bnez a2, 1b + + .word 34039847 + + ret +.size L_cbc_dec_128,.-L_cbc_dec_128 +.p2align 3 +L_cbc_dec_192: + # Load all 13 round keys to v1-v13 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + + + # Load IV. + .word 34039815 + + .word 33909767 + .word 1577846999 + j 2f + +1: + .word 33909767 + .word 1577846999 + addi a1, a1, 16 + +2: + # AES body + .word 2798890103 # with round key w[48,51] + .word 2797612151 # with round key w[44,47] + .word 2796563575 # with round key w[40,43] + .word 2795514999 # with round key w[36,39] + .word 2794466423 # with round key w[32,35] + .word 2793417847 # with round key w[28,31] + .word 2792369271 # with round key w[24,27] + .word 2791320695 # with round key w[20,23] + .word 2790272119 # with round key w[16,19] + .word 2789223543 # with round key w[12,15] + .word 2788174967 # with round key w[ 8,11] + .word 2787126391 # with round key w[ 4, 7] + .word 2786110583 # with round key w[ 0, 3] + + + .word 797445207 + .word 33942567 + .word 1577617495 + + addi a2, a2, -16 + addi a0, a0, 16 + + bnez a2, 1b + + .word 34039847 + + ret +.size L_cbc_dec_192,.-L_cbc_dec_192 +.p2align 3 +L_cbc_dec_256: + # Load all 15 round keys to v1-v15 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + + + # Load IV. + .word 34039815 + + .word 33909767 + .word 1577846999 + j 2f + +1: + .word 33909767 + .word 1577846999 + addi a1, a1, 16 + +2: + # AES body + .word 2800987255 # with round key w[56,59] + .word 2799709303 # with round key w[52,55] + .word 2798660727 # with round key w[48,51] + .word 2797612151 # with round key w[44,47] + .word 2796563575 # with round key w[40,43] + .word 2795514999 # with round key w[36,39] + .word 2794466423 # with round key w[32,35] + .word 2793417847 # with round key w[28,31] + .word 2792369271 # with round key w[24,27] + .word 2791320695 # with round key w[20,23] + .word 2790272119 # with round key w[16,19] + .word 2789223543 # with round key w[12,15] + .word 2788174967 # with round key w[ 8,11] + .word 2787126391 # with round key w[ 4, 7] + .word 2786110583 # with round key w[ 0, 3] + + + .word 797445207 + .word 33942567 + .word 1577617495 + + addi a2, a2, -16 + addi a0, a0, 16 + + bnez a2, 1b + + .word 34039847 + + ret +.size L_cbc_dec_256,.-L_cbc_dec_256 +.p2align 3 +.globl rv64i_zvkned_ecb_encrypt +.type rv64i_zvkned_ecb_encrypt,@function +rv64i_zvkned_ecb_encrypt: + # Make the LEN become e32 length. + srli t3, a2, 2 + + # Load number of rounds + lwu t2, 240(a3) + + # Get proper routine for key size + li t0, 10 + beq t2, t0, L_ecb_enc_128 + + li t0, 12 + beq t2, t0, L_ecb_enc_192 + + li t0, 14 + beq t2, t0, L_ecb_enc_256 + + ret +.size rv64i_zvkned_ecb_encrypt,.-rv64i_zvkned_ecb_encrypt +.p2align 3 +L_ecb_enc_128: + # Load all 11 round keys to v1-v11 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + +1: + .word 221149271 + slli t0, a6, 2 + sub t3, t3, a6 + + .word 33909767 + + # AES body + .word 2786307191 # with round key w[ 0, 3] + .word 2787191927 # with round key w[ 4, 7] + .word 2788240503 # with round key w[ 8,11] + .word 2789289079 # with round key w[12,15] + .word 2790337655 # with round key w[16,19] + .word 2791386231 # with round key w[20,23] + .word 2792434807 # with round key w[24,27] + .word 2793483383 # with round key w[28,31] + .word 2794531959 # with round key w[32,35] + .word 2795580535 # with round key w[36,39] + .word 2796661879 # with round key w[40,43] + + + .word 33942567 + + add a0, a0, t0 + add a1, a1, t0 + + bnez t3, 1b + + ret +.size L_ecb_enc_128,.-L_ecb_enc_128 +.p2align 3 +L_ecb_enc_192: + # Load all 13 round keys to v1-v13 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + + +1: + .word 221149271 + slli t0, a6, 2 + sub t3, t3, a6 + + .word 33909767 + + # AES body + .word 2786307191 # with round key w[ 0, 3] + .word 2787191927 # with round key w[ 4, 7] + .word 2788240503 # with round key w[ 8,11] + .word 2789289079 # with round key w[12,15] + .word 2790337655 # with round key w[16,19] + .word 2791386231 # with round key w[20,23] + .word 2792434807 # with round key w[24,27] + .word 2793483383 # with round key w[28,31] + .word 2794531959 # with round key w[32,35] + .word 2795580535 # with round key w[36,39] + .word 2796629111 # with round key w[40,43] + .word 2797677687 # with round key w[44,47] + .word 2798759031 # with round key w[48,51] + + + .word 33942567 + + add a0, a0, t0 + add a1, a1, t0 + + bnez t3, 1b + + ret +.size L_ecb_enc_192,.-L_ecb_enc_192 +.p2align 3 +L_ecb_enc_256: + # Load all 15 round keys to v1-v15 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + + +1: + .word 221149271 + slli t0, a6, 2 + sub t3, t3, a6 + + .word 33909767 + + # AES body + .word 2786307191 # with round key w[ 0, 3] + .word 2787191927 # with round key w[ 4, 7] + .word 2788240503 # with round key w[ 8,11] + .word 2789289079 # with round key w[12,15] + .word 2790337655 # with round key w[16,19] + .word 2791386231 # with round key w[20,23] + .word 2792434807 # with round key w[24,27] + .word 2793483383 # with round key w[28,31] + .word 2794531959 # with round key w[32,35] + .word 2795580535 # with round key w[36,39] + .word 2796629111 # with round key w[40,43] + .word 2797677687 # with round key w[44,47] + .word 2798726263 # with round key w[48,51] + .word 2799774839 # with round key w[52,55] + .word 2800856183 # with round key w[56,59] + + + .word 33942567 + + add a0, a0, t0 + add a1, a1, t0 + + bnez t3, 1b + + ret +.size L_ecb_enc_256,.-L_ecb_enc_256 +.p2align 3 +.globl rv64i_zvkned_ecb_decrypt +.type rv64i_zvkned_ecb_decrypt,@function +rv64i_zvkned_ecb_decrypt: + # Make the LEN become e32 length. + srli t3, a2, 2 + + # Load number of rounds + lwu t2, 240(a3) + + # Get proper routine for key size + li t0, 10 + beq t2, t0, L_ecb_dec_128 + + li t0, 12 + beq t2, t0, L_ecb_dec_192 + + li t0, 14 + beq t2, t0, L_ecb_dec_256 + + ret +.size rv64i_zvkned_ecb_decrypt,.-rv64i_zvkned_ecb_decrypt +.p2align 3 +L_ecb_dec_128: + # Load all 11 round keys to v1-v11 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + +1: + .word 221149271 + slli t0, a6, 2 + sub t3, t3, a6 + + .word 33909767 + + # AES body + .word 2796792951 # with round key w[40,43] + .word 2795514999 # with round key w[36,39] + .word 2794466423 # with round key w[32,35] + .word 2793417847 # with round key w[28,31] + .word 2792369271 # with round key w[24,27] + .word 2791320695 # with round key w[20,23] + .word 2790272119 # with round key w[16,19] + .word 2789223543 # with round key w[12,15] + .word 2788174967 # with round key w[ 8,11] + .word 2787126391 # with round key w[ 4, 7] + .word 2786110583 # with round key w[ 0, 3] + + + .word 33942567 + + add a0, a0, t0 + add a1, a1, t0 + + bnez t3, 1b + + ret +.size L_ecb_dec_128,.-L_ecb_dec_128 +.p2align 3 +L_ecb_dec_192: + # Load all 13 round keys to v1-v13 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + + +1: + .word 221149271 + slli t0, a6, 2 + sub t3, t3, a6 + + .word 33909767 + + # AES body + .word 2798890103 # with round key w[48,51] + .word 2797612151 # with round key w[44,47] + .word 2796563575 # with round key w[40,43] + .word 2795514999 # with round key w[36,39] + .word 2794466423 # with round key w[32,35] + .word 2793417847 # with round key w[28,31] + .word 2792369271 # with round key w[24,27] + .word 2791320695 # with round key w[20,23] + .word 2790272119 # with round key w[16,19] + .word 2789223543 # with round key w[12,15] + .word 2788174967 # with round key w[ 8,11] + .word 2787126391 # with round key w[ 4, 7] + .word 2786110583 # with round key w[ 0, 3] + + + .word 33942567 + + add a0, a0, t0 + add a1, a1, t0 + + bnez t3, 1b + + ret +.size L_ecb_dec_192,.-L_ecb_dec_192 +.p2align 3 +L_ecb_dec_256: + # Load all 15 round keys to v1-v15 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + + +1: + .word 221149271 + slli t0, a6, 2 + sub t3, t3, a6 + + .word 33909767 + + # AES body + .word 2800987255 # with round key w[56,59] + .word 2799709303 # with round key w[52,55] + .word 2798660727 # with round key w[48,51] + .word 2797612151 # with round key w[44,47] + .word 2796563575 # with round key w[40,43] + .word 2795514999 # with round key w[36,39] + .word 2794466423 # with round key w[32,35] + .word 2793417847 # with round key w[28,31] + .word 2792369271 # with round key w[24,27] + .word 2791320695 # with round key w[20,23] + .word 2790272119 # with round key w[16,19] + .word 2789223543 # with round key w[12,15] + .word 2788174967 # with round key w[ 8,11] + .word 2787126391 # with round key w[ 4, 7] + .word 2786110583 # with round key w[ 0, 3] + + + .word 33942567 + + add a0, a0, t0 + add a1, a1, t0 + + bnez t3, 1b + + ret +.size L_ecb_dec_256,.-L_ecb_dec_256 +.p2align 3 +.globl rv64i_zvkned_set_encrypt_key +.type rv64i_zvkned_set_encrypt_key,@function +rv64i_zvkned_set_encrypt_key: + # Get proper routine for key size + li t1, 256 + beq a1, t1, L_set_key_256 + li t1, 128 + beq a1, t1, L_set_key_128 + + j L_fail_m2 + +.size rv64i_zvkned_set_encrypt_key,.-rv64i_zvkned_set_encrypt_key +.p2align 3 +.globl rv64i_zvkned_set_decrypt_key +.type rv64i_zvkned_set_decrypt_key,@function +rv64i_zvkned_set_decrypt_key: + # Get proper routine for key size + li t1, 256 + beq a1, t1, L_set_key_256 + li t1, 128 + beq a1, t1, L_set_key_128 + + j L_fail_m2 + +.size rv64i_zvkned_set_decrypt_key,.-rv64i_zvkned_set_decrypt_key +.p2align 3 +L_set_key_128: + # Store the number of rounds + li t2, 10 + sw t2, 240(a2) + + .word 0xc1027057 + + # Load the key + .word 33907975 + + # Generate keys for round 2-11 into registers v11-v20. + .word 2325784055 # v11 <- rk2 (w[ 4, 7]) + .word 2326865527 # v12 <- rk3 (w[ 8,11]) + .word 2327946999 # v13 <- rk4 (w[12,15]) + .word 2329028471 # v14 <- rk5 (w[16,19]) + .word 2330109943 # v15 <- rk6 (w[20,23]) + .word 2331191415 # v16 <- rk7 (w[24,27]) + .word 2332272887 # v17 <- rk8 (w[28,31]) + .word 2333354359 # v18 <- rk9 (w[32,35]) + .word 2334435831 # v19 <- rk10 (w[36,39]) + .word 2335517303 # v20 <- rk11 (w[40,43]) + + # Store the round keys + .word 33973543 + addi a2, a2, 16 + .word 33973671 + addi a2, a2, 16 + .word 33973799 + addi a2, a2, 16 + .word 33973927 + addi a2, a2, 16 + .word 33974055 + addi a2, a2, 16 + .word 33974183 + addi a2, a2, 16 + .word 33974311 + addi a2, a2, 16 + .word 33974439 + addi a2, a2, 16 + .word 33974567 + addi a2, a2, 16 + .word 33974695 + addi a2, a2, 16 + .word 33974823 + + li a0, 1 + ret +.size L_set_key_128,.-L_set_key_128 +.p2align 3 +L_set_key_256: + # Store the number of rounds + li t2, 14 + sw t2, 240(a2) + + .word 0xc1027057 + + # Load the key + .word 33907975 + addi a0, a0, 16 + .word 33908103 + + .word 1577387607 + .word 2863736439 + .word 1577420503 + .word 2864817911 + .word 1577453399 + .word 2865899383 + .word 1577486295 + .word 2866980855 + .word 1577519191 + .word 2868062327 + .word 1577552087 + .word 2869143799 + .word 1577584983 + .word 2870225271 + .word 1577617879 + .word 2871306743 + .word 1577650775 + .word 2872388215 + .word 1577683671 + .word 2873469687 + .word 1577716567 + .word 2874551159 + .word 1577749463 + .word 2875632631 + .word 1577782359 + .word 2876714103 + + .word 33973543 + addi a2, a2, 16 + .word 33973671 + addi a2, a2, 16 + .word 33973799 + addi a2, a2, 16 + .word 33973927 + addi a2, a2, 16 + .word 33974055 + addi a2, a2, 16 + .word 33974183 + addi a2, a2, 16 + .word 33974311 + addi a2, a2, 16 + .word 33974439 + addi a2, a2, 16 + .word 33974567 + addi a2, a2, 16 + .word 33974695 + addi a2, a2, 16 + .word 33974823 + addi a2, a2, 16 + .word 33974951 + addi a2, a2, 16 + .word 33975079 + addi a2, a2, 16 + .word 33975207 + addi a2, a2, 16 + .word 33975335 + + li a0, 1 + ret +.size L_set_key_256,.-L_set_key_256 +.p2align 3 +.globl rv64i_zvkned_encrypt +.type rv64i_zvkned_encrypt,@function +rv64i_zvkned_encrypt: + # Load number of rounds + lwu t5, 240(a2) + + # Get proper routine for key size + li t6, 14 + beq t5, t6, L_enc_256 + li t6, 10 + beq t5, t6, L_enc_128 + li t6, 12 + beq t5, t6, L_enc_192 + + j L_fail_m2 +.size rv64i_zvkned_encrypt,.-rv64i_zvkned_encrypt +.p2align 3 +L_enc_128: + .word 3439489111 + + .word 33906823 + + .word 33973511 + .word 2795741431 # with round key w[ 0, 3] + addi a2, a2, 16 + .word 33973639 + .word 2796626167 # with round key w[ 4, 7] + addi a2, a2, 16 + .word 33973767 + .word 2797674743 # with round key w[ 8,11] + addi a2, a2, 16 + .word 33973895 + .word 2798723319 # with round key w[12,15] + addi a2, a2, 16 + .word 33974023 + .word 2799771895 # with round key w[16,19] + addi a2, a2, 16 + .word 33974151 + .word 2800820471 # with round key w[20,23] + addi a2, a2, 16 + .word 33974279 + .word 2801869047 # with round key w[24,27] + addi a2, a2, 16 + .word 33974407 + .word 2802917623 # with round key w[28,31] + addi a2, a2, 16 + .word 33974535 + .word 2803966199 # with round key w[32,35] + addi a2, a2, 16 + .word 33974663 + .word 2805014775 # with round key w[36,39] + addi a2, a2, 16 + .word 33974791 + .word 2806096119 # with round key w[40,43] + + .word 33939623 + + ret +.size L_enc_128,.-L_enc_128 +.p2align 3 +L_enc_192: + .word 3439489111 + + .word 33906823 + + .word 33973511 + .word 2795741431 # with round key w[ 0, 3] + addi a2, a2, 16 + .word 33973639 + .word 2796626167 + addi a2, a2, 16 + .word 33973767 + .word 2797674743 + addi a2, a2, 16 + .word 33973895 + .word 2798723319 + addi a2, a2, 16 + .word 33974023 + .word 2799771895 + addi a2, a2, 16 + .word 33974151 + .word 2800820471 + addi a2, a2, 16 + .word 33974279 + .word 2801869047 + addi a2, a2, 16 + .word 33974407 + .word 2802917623 + addi a2, a2, 16 + .word 33974535 + .word 2803966199 + addi a2, a2, 16 + .word 33974663 + .word 2805014775 + addi a2, a2, 16 + .word 33974791 + .word 2806063351 + addi a2, a2, 16 + .word 33974919 + .word 2807111927 + addi a2, a2, 16 + .word 33975047 + .word 2808193271 + + .word 33939623 + ret +.size L_enc_192,.-L_enc_192 +.p2align 3 +L_enc_256: + .word 3439489111 + + .word 33906823 + + .word 33973511 + .word 2795741431 # with round key w[ 0, 3] + addi a2, a2, 16 + .word 33973639 + .word 2796626167 + addi a2, a2, 16 + .word 33973767 + .word 2797674743 + addi a2, a2, 16 + .word 33973895 + .word 2798723319 + addi a2, a2, 16 + .word 33974023 + .word 2799771895 + addi a2, a2, 16 + .word 33974151 + .word 2800820471 + addi a2, a2, 16 + .word 33974279 + .word 2801869047 + addi a2, a2, 16 + .word 33974407 + .word 2802917623 + addi a2, a2, 16 + .word 33974535 + .word 2803966199 + addi a2, a2, 16 + .word 33974663 + .word 2805014775 + addi a2, a2, 16 + .word 33974791 + .word 2806063351 + addi a2, a2, 16 + .word 33974919 + .word 2807111927 + addi a2, a2, 16 + .word 33975047 + .word 2808160503 + addi a2, a2, 16 + .word 33975175 + .word 2809209079 + addi a2, a2, 16 + .word 33975303 + .word 2810290423 + + .word 33939623 + ret +.size L_enc_256,.-L_enc_256 +.p2align 3 +.globl rv64i_zvkned_decrypt +.type rv64i_zvkned_decrypt,@function +rv64i_zvkned_decrypt: + # Load number of rounds + lwu t5, 240(a2) + + # Get proper routine for key size + li t6, 14 + beq t5, t6, L_dec_256 + li t6, 10 + beq t5, t6, L_dec_128 + li t6, 12 + beq t5, t6, L_dec_192 + + j L_fail_m2 +.size rv64i_zvkned_decrypt,.-rv64i_zvkned_decrypt +.p2align 3 +L_dec_128: + .word 3439489111 + + .word 33906823 + + addi a2, a2, 160 + .word 33974791 + .word 2806227191 # with round key w[40,43] + addi a2, a2, -16 + .word 33974663 + .word 2804949239 # with round key w[36,39] + addi a2, a2, -16 + .word 33974535 + .word 2803900663 # with round key w[32,35] + addi a2, a2, -16 + .word 33974407 + .word 2802852087 # with round key w[28,31] + addi a2, a2, -16 + .word 33974279 + .word 2801803511 # with round key w[24,27] + addi a2, a2, -16 + .word 33974151 + .word 2800754935 # with round key w[20,23] + addi a2, a2, -16 + .word 33974023 + .word 2799706359 # with round key w[16,19] + addi a2, a2, -16 + .word 33973895 + .word 2798657783 # with round key w[12,15] + addi a2, a2, -16 + .word 33973767 + .word 2797609207 # with round key w[ 8,11] + addi a2, a2, -16 + .word 33973639 + .word 2796560631 # with round key w[ 4, 7] + addi a2, a2, -16 + .word 33973511 + .word 2795544823 # with round key w[ 0, 3] + + .word 33939623 + + ret +.size L_dec_128,.-L_dec_128 +.p2align 3 +L_dec_192: + .word 3439489111 + + .word 33906823 + + addi a2, a2, 192 + .word 33975047 + .word 2808324343 # with round key w[48,51] + addi a2, a2, -16 + .word 33974919 + .word 2807046391 # with round key w[44,47] + addi a2, a2, -16 + .word 33974791 + .word 2805997815 # with round key w[40,43] + addi a2, a2, -16 + .word 33974663 + .word 2804949239 # with round key w[36,39] + addi a2, a2, -16 + .word 33974535 + .word 2803900663 # with round key w[32,35] + addi a2, a2, -16 + .word 33974407 + .word 2802852087 # with round key w[28,31] + addi a2, a2, -16 + .word 33974279 + .word 2801803511 # with round key w[24,27] + addi a2, a2, -16 + .word 33974151 + .word 2800754935 # with round key w[20,23] + addi a2, a2, -16 + .word 33974023 + .word 2799706359 # with round key w[16,19] + addi a2, a2, -16 + .word 33973895 + .word 2798657783 # with round key w[12,15] + addi a2, a2, -16 + .word 33973767 + .word 2797609207 # with round key w[ 8,11] + addi a2, a2, -16 + .word 33973639 + .word 2796560631 # with round key w[ 4, 7] + addi a2, a2, -16 + .word 33973511 + .word 2795544823 # with round key w[ 0, 3] + + .word 33939623 + + ret +.size L_dec_192,.-L_dec_192 +.p2align 3 +L_dec_256: + .word 3439489111 + + .word 33906823 + + addi a2, a2, 224 + .word 33975303 + .word 2810421495 # with round key w[56,59] + addi a2, a2, -16 + .word 33975175 + .word 2809143543 # with round key w[52,55] + addi a2, a2, -16 + .word 33975047 + .word 2808094967 # with round key w[48,51] + addi a2, a2, -16 + .word 33974919 + .word 2807046391 # with round key w[44,47] + addi a2, a2, -16 + .word 33974791 + .word 2805997815 # with round key w[40,43] + addi a2, a2, -16 + .word 33974663 + .word 2804949239 # with round key w[36,39] + addi a2, a2, -16 + .word 33974535 + .word 2803900663 # with round key w[32,35] + addi a2, a2, -16 + .word 33974407 + .word 2802852087 # with round key w[28,31] + addi a2, a2, -16 + .word 33974279 + .word 2801803511 # with round key w[24,27] + addi a2, a2, -16 + .word 33974151 + .word 2800754935 # with round key w[20,23] + addi a2, a2, -16 + .word 33974023 + .word 2799706359 # with round key w[16,19] + addi a2, a2, -16 + .word 33973895 + .word 2798657783 # with round key w[12,15] + addi a2, a2, -16 + .word 33973767 + .word 2797609207 # with round key w[ 8,11] + addi a2, a2, -16 + .word 33973639 + .word 2796560631 # with round key w[ 4, 7] + addi a2, a2, -16 + .word 33973511 + .word 2795544823 # with round key w[ 0, 3] + + .word 33939623 + + ret +.size L_dec_256,.-L_dec_256 +L_fail_m2: + li a0, -2 + ret +.size L_fail_m2,.-L_fail_m2 + +L_end: + ret +.size L_end,.-L_end diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64.s b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64.s new file mode 100644 index 00000000000000..4901849dff58c5 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64.s @@ -0,0 +1,1871 @@ +.text +.balign 16 +.globl AES_encrypt +.type AES_encrypt,@function +AES_encrypt: + addi sp,sp,-96 + sd x8,88(sp) + sd x9,80(sp) + sd x18,72(sp) + sd x19,64(sp) + sd x20,56(sp) + sd x21,48(sp) + sd x22,40(sp) + sd x23,32(sp) + sd x24,24(sp) + sd x25,16(sp) + sd x26,8(sp) + sd x27,0(sp) + + # Load input to block cipher + ld x6,0(x10) + ld x8,8(x10) + + + # Load key + ld x13,0(x12) + ld x15,8(x12) + + + # Load number of rounds + lwu x30,240(x12) + + # Load address of substitution table and wrap-around mask + la x31,AES_Te0 + li x5,~0xFFF + + # y = n xor k, stored in Q0-Q3 + + xor x6,x6,x13 + xor x8,x8,x15 + srli x7,x6,32 + srli x9,x8,32 + + # The main loop only executes the first N-1 rounds. + add x30,x30,-1 + + # Do Nr - 1 rounds (final round is special) + +1: + + slli x13,x6,0+2 + slli x14,x7,0+2 + slli x15,x8,0+2 + slli x16,x9,0+2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x17,0(x29) + add x29,x31,x14 + lwu x18,0(x29) + add x29,x31,x15 + lwu x19,0(x29) + add x29,x31,x16 + lwu x20,0(x29) + + add x31,x31,1024 + + srli x13,x7,8-2 + srli x14,x8,8-2 + srli x15,x9,8-2 + srli x16,x6,8-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x21,0(x29) + add x29,x31,x14 + lwu x22,0(x29) + add x29,x31,x15 + lwu x23,0(x29) + add x29,x31,x16 + lwu x24,0(x29) + + add x31,x31,1024 + + srli x13,x8,16-2 + srli x14,x9,16-2 + srli x15,x6,16-2 + srli x16,x7,16-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x25,0(x29) + add x29,x31,x14 + lwu x26,0(x29) + add x29,x31,x15 + lwu x27,0(x29) + add x29,x31,x16 + lwu x28,0(x29) + + add x31,x31,1024 + + srli x13,x9,24-2 + srli x14,x6,24-2 + srli x15,x7,24-2 + srli x16,x8,24-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x13,0(x29) + add x29,x31,x14 + lwu x14,0(x29) + add x29,x31,x15 + lwu x15,0(x29) + add x29,x31,x16 + lwu x16,0(x29) + + + # Combine table lookups + xor x17,x17,x21 + xor x18,x18,x22 + xor x19,x19,x23 + xor x20,x20,x24 + + xor x17,x17,x25 + xor x18,x18,x26 + xor x19,x19,x27 + xor x20,x20,x28 + + xor x13,x13,x17 + xor x14,x14,x18 + xor x15,x15,x19 + xor x16,x16,x20 + + # Update key ptr to point to next key in schedule + add x12,x12,16 + + # Grab next key in schedule + ld x17,0(x12) + ld x19,8(x12) + + # Round TBL back to 4k boundary + and x31,x31,x5 + + add x30,x30,-1 + + xor x6,x13,x17 + xor x8,x15,x19 + srli x18,x17,32 + xor x7,x14,x18 + srli x20,x19,32 + xor x9,x16,x20 + + bgtz x30,1b + +#================================FINAL ROUND==================================== + +# In the final round, all lookup table accesses would appear as follows: +# +# ... compute index I0 +# add I0,TBL,T0 +# lbu T0,1(I0) +# +# Instead of indexing with a 1 offset, we can add 1 to the TBL pointer, and use +# a 0 offset when indexing in the following code. This enables some instruction +# fusion opportunities. + + add x31,x31,1 + + ld x30,16(x12) + ld x12,24(x12) + + slli x13,x6,0+2 + slli x14,x7,0+2 + slli x15,x8,0+2 + slli x16,x9,0+2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lbu x17,0(x29) + add x29,x31,x14 + lbu x18,0(x29) + add x29,x31,x15 + lbu x19,0(x29) + add x29,x31,x16 + lbu x20,0(x29) + + + srli x13,x7,8-2 + srli x14,x8,8-2 + srli x15,x9,8-2 + srli x16,x6,8-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lbu x21,0(x29) + add x29,x31,x14 + lbu x22,0(x29) + add x29,x31,x15 + lbu x23,0(x29) + add x29,x31,x16 + lbu x24,0(x29) + + + srli x13,x8,16-2 + srli x14,x9,16-2 + srli x15,x6,16-2 + srli x16,x7,16-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lbu x25,0(x29) + add x29,x31,x14 + lbu x26,0(x29) + add x29,x31,x15 + lbu x27,0(x29) + add x29,x31,x16 + lbu x28,0(x29) + + + srli x13,x9,24-2 + srli x14,x6,24-2 + srli x15,x7,24-2 + srli x16,x8,24-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lbu x13,0(x29) + add x29,x31,x14 + lbu x14,0(x29) + add x29,x31,x15 + lbu x15,0(x29) + add x29,x31,x16 + lbu x16,0(x29) + + + # Combine table lookups into T0 and T2 + + slli x18,x18,32 + slli x20,x20,32 + slli x21,x21,8 + slli x22,x22,8+32 + slli x23,x23,8 + slli x24,x24,8+32 + slli x25,x25,16 + slli x26,x26,16+32 + slli x27,x27,16 + slli x28,x28,16+32 + + slli x13,x13,24 + slli x14,x14,24+32 + slli x15,x15,24 + slli x16,x16,24+32 + + xor x17,x17,x13 + xor x18,x18,x14 + xor x19,x19,x15 + xor x20,x20,x16 + + xor x21,x21,x25 + xor x22,x22,x26 + xor x23,x23,x27 + xor x24,x24,x28 + + xor x13,x17,x21 + xor x14,x18,x22 + xor x15,x19,x23 + xor x16,x20,x24 + + + xor x13,x13,x14 + # T0 = [T1 T13 T9 T5 T0 T12 T8 T4] + xor x13,x13,x30 # XOR in key + + xor x15,x15,x16 + # T2 = [T3 T15 T11 T7 T2 T14 T10 T6] + xor x15,x15,x12 # XOR in key + + sd x13,0(x11) + sd x15,8(x11) + + # Pop registers and return +2: + ld x8,88(sp) + ld x9,80(sp) + ld x18,72(sp) + ld x19,64(sp) + ld x20,56(sp) + ld x21,48(sp) + ld x22,40(sp) + ld x23,32(sp) + ld x24,24(sp) + ld x25,16(sp) + ld x26,8(sp) + ld x27,0(sp) + addi sp,sp,96 + ret +.text +.balign 16 +.globl AES_decrypt +.type AES_decrypt,@function +AES_decrypt: + addi sp,sp,-96 + sd x8,88(sp) + sd x9,80(sp) + sd x18,72(sp) + sd x19,64(sp) + sd x20,56(sp) + sd x21,48(sp) + sd x22,40(sp) + sd x23,32(sp) + sd x24,24(sp) + sd x25,16(sp) + sd x26,8(sp) + sd x27,0(sp) + + # Load input to block cipher + ld x6,0(x10) + ld x8,8(x10) + + # Load key + # Note that key is assumed in BE byte order + # (This routine was written against a key scheduling implementation that + # placed keys in BE byte order.) + ld x13,0(x12) + ld x15,8(x12) + + # Load number of rounds + lwu x30,240(x12) + + # Load address of substitution table and wrap-around mask + la x31,AES_Td0 + li x5,~0xFFF + + xor x6,x6,x13 + xor x8,x8,x15 + srli x7,x6,32 + srli x9,x8,32 + + # The main loop only executes the first N-1 rounds. + add x30,x30,-1 + + # Do Nr - 1 rounds (final round is special) +1: + + slli x13,x6,0+2 + slli x14,x7,0+2 + slli x15,x8,0+2 + slli x16,x9,0+2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x17,0(x29) + add x29,x31,x14 + lwu x18,0(x29) + add x29,x31,x15 + lwu x19,0(x29) + add x29,x31,x16 + lwu x20,0(x29) + + add x31,x31,1024 + + srli x13,x9,8-2 + srli x14,x6,8-2 + srli x15,x7,8-2 + srli x16,x8,8-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x21,0(x29) + add x29,x31,x14 + lwu x22,0(x29) + add x29,x31,x15 + lwu x23,0(x29) + add x29,x31,x16 + lwu x24,0(x29) + + add x31,x31,1024 + + srli x13,x8,16-2 + srli x14,x9,16-2 + srli x15,x6,16-2 + srli x16,x7,16-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x25,0(x29) + add x29,x31,x14 + lwu x26,0(x29) + add x29,x31,x15 + lwu x27,0(x29) + add x29,x31,x16 + lwu x28,0(x29) + + add x31,x31,1024 + + srli x13,x7,24-2 + srli x14,x8,24-2 + srli x15,x9,24-2 + srli x16,x6,24-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x13,0(x29) + add x29,x31,x14 + lwu x14,0(x29) + add x29,x31,x15 + lwu x15,0(x29) + add x29,x31,x16 + lwu x16,0(x29) + + xor x17,x17,x21 + xor x18,x18,x22 + xor x19,x19,x23 + xor x20,x20,x24 + + xor x17,x17,x25 + xor x18,x18,x26 + xor x19,x19,x27 + xor x20,x20,x28 + + xor x13,x13,x17 + xor x14,x14,x18 + xor x15,x15,x19 + xor x16,x16,x20 + + # Update key ptr to point to next key in schedule + add x12,x12,16 + + # Grab next key in schedule + ld x17,0(x12) + ld x19,8(x12) + + # Round TBL back to 4k boundary + and x31,x31,x5 + + add x30,x30,-1 + + xor x6,x13,x17 + xor x8,x15,x19 + srli x18,x17,32 + xor x7,x14,x18 + srli x20,x19,32 + xor x9,x16,x20 + + bgtz x30,1b + +#================================FINAL ROUND==================================== + + la x31,AES_Td4 + + # K0,K1 are aliases for loopcntr,KEYP + # As these registers will no longer be used after these loads, reuse them + # to store the final key in the schedule. + ld x30,16(x12) + ld x12,24(x12) + srli x14,x9,8 + srli x15,x8,16 + srli x16,x7,24 + + andi x13,x6,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + add x29,x31,x13 + lbu x17,0(x29) + add x29,x31,x14 + lbu x18,0(x29) + add x29,x31,x15 + lbu x19,0(x29) + add x29,x31,x16 + lbu x20,0(x29) + + srli x14,x6,8 + srli x15,x9,16 + srli x16,x8,24 + + andi x13,x7,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + add x29,x31,x13 + lbu x21,0(x29) + add x29,x31,x14 + lbu x22,0(x29) + add x29,x31,x15 + lbu x23,0(x29) + add x29,x31,x16 + lbu x24,0(x29) + + srli x14,x7,8 + srli x15,x6,16 + srli x16,x9,24 + + andi x13,x8,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + add x29,x31,x13 + lbu x25,0(x29) + add x29,x31,x14 + lbu x26,0(x29) + add x29,x31,x15 + lbu x27,0(x29) + add x29,x31,x16 + lbu x28,0(x29) + + srli x14,x8,8 + srli x15,x7,16 + srli x16,x6,24 + + andi x13,x9,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + add x29,x31,x13 + lbu x13,0(x29) + add x29,x31,x14 + lbu x14,0(x29) + add x29,x31,x15 + lbu x15,0(x29) + add x29,x31,x16 + lbu x16,0(x29) + + + # T0-T15 now contain the decrypted block, minus xoring with the final round + # key. We pack T0-T15 into the two 64-bit registers T0 and T4, then xor + # in the key and store. + + slli x18,x18,8 + slli x19,x19,16 + slli x20,x20,24 + slli x21,x21,32 + slli x22,x22,8+32 + slli x23,x23,16+32 + slli x24,x24,32+24 + slli x26,x26,8 + slli x27,x27,16 + slli x28,x28,24 + slli x13,x13,32 + slli x14,x14,8+32 + slli x15,x15,16+32 + slli x16,x16,24+32 + + xor x17,x17,x18 + xor x19,x19,x20 + xor x21,x21,x22 + xor x23,x23,x24 + + xor x25,x25,x26 + xor x27,x27,x28 + xor x13,x13,x14 + xor x15,x15,x16 + + xor x17,x17,x19 + xor x21,x21,x23 + xor x25,x25,x27 + xor x13,x13,x15 + + xor x17,x17,x21 + # T4 = [T11 T10 T9 T8 T7 T6 T5 T4] + xor x17,x17,x30 # xor in key + + xor x13,x13,x25 + # T0 = [T3 T2 T1 T0 T15 T14 T13 T12] + xor x13,x13,x12 # xor in key + + sd x17,0(x11) + sd x13,8(x11) + + # Pop registers and return + ld x8,88(sp) + ld x9,80(sp) + ld x18,72(sp) + ld x19,64(sp) + ld x20,56(sp) + ld x21,48(sp) + ld x22,40(sp) + ld x23,32(sp) + ld x24,24(sp) + ld x25,16(sp) + ld x26,8(sp) + ld x27,0(sp) + addi sp,sp,96 + ret +.text +.balign 16 +.globl AES_set_encrypt_key +.type AES_set_encrypt_key,@function +AES_set_encrypt_key: + addi sp,sp,-48 + sd x8,32(sp) + sd x9,24(sp) + sd x18,16(sp) + sd x19,8(sp) + sd x20,0(sp) + beqz x10,1f # if (!userKey || !key) return -1; + beqz x12,1f + j 2f +1: + li a0,-1 + ret +2: + la x9,AES_rcon + la x20,AES_Te0 + li x28,128 + li x29,192 + li x30,256 + + # Determine number of rounds from key size in bits + bne x11,x28,1f + li x13,10 # key->rounds = 10 if bits == 128 + j 3f +1: + bne x11,x29,2f + li x13,12 # key->rounds = 12 if bits == 192 + j 3f +2: + li x13,14 # key->rounds = 14 if bits == 256 + beq x11,x30,3f + li a0,-2 # If bits != 128, 192, or 256, return -2 + j 5f +3: + ld x6,0(x10) + ld x8,8(x10) + + sw x13,240(x12) + + li x19,0 # == i*4 + + srli x7,x6,32 + srli x13,x8,32 + + sd x6,0(x12) + sd x8,8(x12) + + # if bits == 128 + # jump into loop + beq x11,x28,1f + + ld x14,16(x10) + srli x15,x14,32 + sd x14,16(x12) + + # if bits == 192 + # jump into loop + beq x11,x29,2f + + ld x16,24(x10) + srli x17,x16,32 + sd x16,24(x12) + + # bits == 256 + j 3f +1: + addi x12,x12,16 +1: + + # Round TBL back to 4k boundary + srli x20,x20,12 + slli x20,x20,12 + + # Offset by 1 byte, since Te0[x] = S[x].[03, 01, 01, 02] + # So that, later on, a 0-offset lbu yields S[x].01 == S[x] + addi x20,x20,1 + srli x14,x13,8-2 + srli x15,x13,16-2 + srli x16,x13,24-2 + slli x17,x13,2-0 + + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + andi x17,x17,0x3FC + + # Index into tables Te0-Te3 (spread access across tables to help bring + # them into cache for later) + + add x18,x20,x14 + lbu x14,0(x18) + + add x20,x20,1025 # yes, 1025 + add x18,x20,x15 + lbu x15,0(x18) + + add x20,x20,1025 + add x18,x20,x16 + lbu x16,0(x18) + + add x20,x20,1022 + add x18,x20,x17 + lbu x17,0(x18) + + slli x15,x15,8 + slli x16,x16,16 + slli x17,x17,24 + + xor x14,x14,x15 + xor x16,x16,x17 + xor x14,x14,x16 + add x15,x9,x19 # rcon[i] (i increments by 4 so it can double as + # a word offset) + lwu x15,0(x15) + + addi x19,x19,4 + li x18,10*4 + + xor x6,x6,x14 + xor x6,x6,x15 + xor x7,x7,x6 + xor x8,x8,x7 + xor x13,x13,x8 + + sw x6,0(x12) + sw x7,4(x12) + sw x8,8(x12) + sw x13,12(x12) + + addi x12,x12,16 + + + bne x19,x18,1b + j 4f +2: + addi x12,x12,24 +2: + + # Round TBL back to 4k boundary + srli x20,x20,12 + slli x20,x20,12 + + # Offset by 1 byte, since Te0[x] = S[x].[03, 01, 01, 02] + # So that, later on, a 0-offset lbu yields S[x].01 == S[x] + addi x20,x20,1 + srli x16,x15,8-2 + srli x17,x15,16-2 + srli x28,x15,24-2 + slli x29,x15,2-0 + + andi x16,x16,0x3FC + andi x17,x17,0x3FC + andi x28,x28,0x3FC + andi x29,x29,0x3FC + + # Index into tables Te0-Te3 (spread access across tables to help bring + # them into cache for later) + + add x18,x20,x16 + lbu x16,0(x18) + + add x20,x20,1025 # yes, 1025 + add x18,x20,x17 + lbu x17,0(x18) + + add x20,x20,1025 + add x18,x20,x28 + lbu x28,0(x18) + + add x20,x20,1022 + add x18,x20,x29 + lbu x29,0(x18) + + slli x17,x17,8 + slli x28,x28,16 + slli x29,x29,24 + + xor x16,x16,x17 + xor x28,x28,x29 + xor x16,x16,x28 + add x17,x9,x19 # rcon[i] (i increments by 4 so it can double as + # a word offset) + lwu x17,0(x17) + + addi x19,x19,4 + li x18,8*4 + + xor x6,x6,x16 + xor x6,x6,x17 + xor x7,x7,x6 + xor x8,x8,x7 + xor x13,x13,x8 + + sw x6,0(x12) + sw x7,4(x12) + sw x8,8(x12) + sw x13,12(x12) + + beq x19,x18,4f + + xor x14,x14,x13 + xor x15,x15,x14 + sw x14,16(x12) + sw x15,20(x12) + + addi x12,x12,24 + j 2b +3: + addi x12,x12,32 +3: + + # Round TBL back to 4k boundary + srli x20,x20,12 + slli x20,x20,12 + + # Offset by 1 byte, since Te0[x] = S[x].[03, 01, 01, 02] + # So that, later on, a 0-offset lbu yields S[x].01 == S[x] + addi x20,x20,1 + srli x28,x17,8-2 + srli x29,x17,16-2 + srli x30,x17,24-2 + slli x31,x17,2-0 + + andi x28,x28,0x3FC + andi x29,x29,0x3FC + andi x30,x30,0x3FC + andi x31,x31,0x3FC + + # Index into tables Te0-Te3 (spread access across tables to help bring + # them into cache for later) + + add x18,x20,x28 + lbu x28,0(x18) + + add x20,x20,1025 # yes, 1025 + add x18,x20,x29 + lbu x29,0(x18) + + add x20,x20,1025 + add x18,x20,x30 + lbu x30,0(x18) + + add x20,x20,1022 + add x18,x20,x31 + lbu x31,0(x18) + + slli x29,x29,8 + slli x30,x30,16 + slli x31,x31,24 + + xor x28,x28,x29 + xor x30,x30,x31 + xor x28,x28,x30 + add x29,x9,x19 # rcon[i] (i increments by 4 so it can double as + # a word offset) + lwu x29,0(x29) + + addi x19,x19,4 + li x18,7*4 + + xor x6,x6,x28 + xor x6,x6,x29 + xor x7,x7,x6 + xor x8,x8,x7 + xor x13,x13,x8 + + sw x6,0(x12) + sw x7,4(x12) + sw x8,8(x12) + sw x13,12(x12) + + beq x19,x18,4f + + # Round TBL back to 4k boundary + srli x20,x20,12 + slli x20,x20,12 + + # Offset by 1 byte, since Te0[x] = S[x].[03, 01, 01, 02] + # So that, later on, a 0-offset lbu yields S[x].01 == S[x] + addi x20,x20,1 + slli x28,x13,2-0 + srli x29,x13,8-2 + srli x30,x13,16-2 + srli x31,x13,24-2 + + andi x28,x28,0x3FC + andi x29,x29,0x3FC + andi x30,x30,0x3FC + andi x31,x31,0x3FC + + # Index into tables Te0-Te3 (spread access across tables to help bring + # them into cache for later) + + add x18,x20,x28 + lbu x28,0(x18) + + add x20,x20,1025 # yes, 1025 + add x18,x20,x29 + lbu x29,0(x18) + + add x20,x20,1025 + add x18,x20,x30 + lbu x30,0(x18) + + add x20,x20,1022 + add x18,x20,x31 + lbu x31,0(x18) + + slli x29,x29,8 + slli x30,x30,16 + slli x31,x31,24 + + xor x28,x28,x29 + xor x30,x30,x31 + xor x28,x28,x30 + xor x14,x14,x28 + xor x15,x15,x14 + xor x16,x16,x15 + xor x17,x17,x16 + sw x14,16(x12) + sw x15,20(x12) + sw x16,24(x12) + sw x17,28(x12) + + addi x12,x12,32 + j 3b + +4: # return 0 + li a0,0 +5: # return a0 + ld x8,32(sp) + ld x9,24(sp) + ld x18,16(sp) + ld x19,8(sp) + ld x20,0(sp) + addi sp,sp,48 + ret +.text +.balign 16 +.globl AES_set_decrypt_key +.type AES_set_decrypt_key,@function +AES_set_decrypt_key: + # Call AES_set_encrypt_key first + addi sp,sp,-16 + sd x12,0(sp) # We need to hold onto this! + sd ra,8(sp) + jal ra,AES_set_encrypt_key + ld x12,0(sp) + ld ra,8(sp) + addi sp,sp,16 + bgez a0,1f # If error, return error + ret +1: + addi sp,sp,-48 + sd x8,40(sp) + sd x9,32(sp) + sd x18,24(sp) + sd x19,16(sp) + sd x20,8(sp) + sd x21,0(sp) + + li x13,0 + lwu x17,240(x12) + slli x14,x17,4 + # Invert order of round keys +1: + add x19,x12,x13 + ld x6,0(x19) + ld x7,8(x19) + add x18,x12,x14 + ld x8,0(x18) + ld x9,8(x18) + addi x13,x13,16 + addi x14,x14,-16 + sd x6,0(x18) + sd x7,8(x18) + sd x8,0(x19) + sd x9,8(x19) + blt x13,x14,1b + + li x20,1 + +1: + addi x12,x12,16 + lwu x6,0(x12) + lwu x7,4(x12) + lwu x8,8(x12) + lwu x9,12(x12) + + la x21,AES_Te2 + + slli x13,x6,2 + srli x14,x6,8-2 + srli x15,x6,16-2 + srli x16,x6,24-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table Te2 + + add x19,x21,x13 + lwu x13,0(x19) + + add x19,x21,x14 + lwu x14,0(x19) + + add x19,x21,x15 + lwu x15,0(x19) + + add x19,x21,x16 + lwu x16,0(x19) + + andi x13,x13,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + slli x13,x13,2 + slli x14,x14,2 + slli x15,x15,2 + slli x16,x16,2 + + la x21,AES_Td0 + + # Lookup in Td0-Td3 + + add x19,x21,x13 + lwu x13,0(x19) + + add x21,x21,1024 + add x19,x21,x14 + lwu x14,0(x19) + + add x21,x21,1024 + add x19,x21,x15 + lwu x15,0(x19) + + add x21,x21,1024 + add x19,x21,x16 + lwu x16,0(x19) + + xor x13,x13,x14 + xor x15,x15,x16 + xor x6,x13,x15 + + la x21,AES_Te2 + + slli x13,x7,2 + srli x14,x7,8-2 + srli x15,x7,16-2 + srli x16,x7,24-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table Te2 + + add x19,x21,x13 + lwu x13,0(x19) + + add x19,x21,x14 + lwu x14,0(x19) + + add x19,x21,x15 + lwu x15,0(x19) + + add x19,x21,x16 + lwu x16,0(x19) + + andi x13,x13,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + slli x13,x13,2 + slli x14,x14,2 + slli x15,x15,2 + slli x16,x16,2 + + la x21,AES_Td0 + + # Lookup in Td0-Td3 + + add x19,x21,x13 + lwu x13,0(x19) + + add x21,x21,1024 + add x19,x21,x14 + lwu x14,0(x19) + + add x21,x21,1024 + add x19,x21,x15 + lwu x15,0(x19) + + add x21,x21,1024 + add x19,x21,x16 + lwu x16,0(x19) + + xor x13,x13,x14 + xor x15,x15,x16 + xor x7,x13,x15 + + la x21,AES_Te2 + + slli x13,x8,2 + srli x14,x8,8-2 + srli x15,x8,16-2 + srli x16,x8,24-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table Te2 + + add x19,x21,x13 + lwu x13,0(x19) + + add x19,x21,x14 + lwu x14,0(x19) + + add x19,x21,x15 + lwu x15,0(x19) + + add x19,x21,x16 + lwu x16,0(x19) + + andi x13,x13,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + slli x13,x13,2 + slli x14,x14,2 + slli x15,x15,2 + slli x16,x16,2 + + la x21,AES_Td0 + + # Lookup in Td0-Td3 + + add x19,x21,x13 + lwu x13,0(x19) + + add x21,x21,1024 + add x19,x21,x14 + lwu x14,0(x19) + + add x21,x21,1024 + add x19,x21,x15 + lwu x15,0(x19) + + add x21,x21,1024 + add x19,x21,x16 + lwu x16,0(x19) + + xor x13,x13,x14 + xor x15,x15,x16 + xor x8,x13,x15 + + la x21,AES_Te2 + + slli x13,x9,2 + srli x14,x9,8-2 + srli x15,x9,16-2 + srli x16,x9,24-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table Te2 + + add x19,x21,x13 + lwu x13,0(x19) + + add x19,x21,x14 + lwu x14,0(x19) + + add x19,x21,x15 + lwu x15,0(x19) + + add x19,x21,x16 + lwu x16,0(x19) + + andi x13,x13,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + slli x13,x13,2 + slli x14,x14,2 + slli x15,x15,2 + slli x16,x16,2 + + la x21,AES_Td0 + + # Lookup in Td0-Td3 + + add x19,x21,x13 + lwu x13,0(x19) + + add x21,x21,1024 + add x19,x21,x14 + lwu x14,0(x19) + + add x21,x21,1024 + add x19,x21,x15 + lwu x15,0(x19) + + add x21,x21,1024 + add x19,x21,x16 + lwu x16,0(x19) + + xor x13,x13,x14 + xor x15,x15,x16 + xor x9,x13,x15 + sw x6,0(x12) + sw x7,4(x12) + sw x8,8(x12) + sw x9,12(x12) + addi x20,x20,1 + blt x20,x17,1b + ld x8,40(sp) + ld x9,32(sp) + ld x18,24(sp) + ld x19,16(sp) + ld x20,8(sp) + ld x21,0(sp) + addi sp,sp,48 + li a0,0 + ret + +.section .rodata +.p2align 12 +.type AES_Te0,@object +AES_Te0: +.word 0xa56363c6U, 0x847c7cf8U, 0x997777eeU, 0x8d7b7bf6U +.word 0x0df2f2ffU, 0xbd6b6bd6U, 0xb16f6fdeU, 0x54c5c591U +.word 0x50303060U, 0x03010102U, 0xa96767ceU, 0x7d2b2b56U +.word 0x19fefee7U, 0x62d7d7b5U, 0xe6abab4dU, 0x9a7676ecU +.word 0x45caca8fU, 0x9d82821fU, 0x40c9c989U, 0x877d7dfaU +.word 0x15fafaefU, 0xeb5959b2U, 0xc947478eU, 0x0bf0f0fbU +.word 0xecadad41U, 0x67d4d4b3U, 0xfda2a25fU, 0xeaafaf45U +.word 0xbf9c9c23U, 0xf7a4a453U, 0x967272e4U, 0x5bc0c09bU +.word 0xc2b7b775U, 0x1cfdfde1U, 0xae93933dU, 0x6a26264cU +.word 0x5a36366cU, 0x413f3f7eU, 0x02f7f7f5U, 0x4fcccc83U +.word 0x5c343468U, 0xf4a5a551U, 0x34e5e5d1U, 0x08f1f1f9U +.word 0x937171e2U, 0x73d8d8abU, 0x53313162U, 0x3f15152aU +.word 0x0c040408U, 0x52c7c795U, 0x65232346U, 0x5ec3c39dU +.word 0x28181830U, 0xa1969637U, 0x0f05050aU, 0xb59a9a2fU +.word 0x0907070eU, 0x36121224U, 0x9b80801bU, 0x3de2e2dfU +.word 0x26ebebcdU, 0x6927274eU, 0xcdb2b27fU, 0x9f7575eaU +.word 0x1b090912U, 0x9e83831dU, 0x742c2c58U, 0x2e1a1a34U +.word 0x2d1b1b36U, 0xb26e6edcU, 0xee5a5ab4U, 0xfba0a05bU +.word 0xf65252a4U, 0x4d3b3b76U, 0x61d6d6b7U, 0xceb3b37dU +.word 0x7b292952U, 0x3ee3e3ddU, 0x712f2f5eU, 0x97848413U +.word 0xf55353a6U, 0x68d1d1b9U, 0x00000000U, 0x2cededc1U +.word 0x60202040U, 0x1ffcfce3U, 0xc8b1b179U, 0xed5b5bb6U +.word 0xbe6a6ad4U, 0x46cbcb8dU, 0xd9bebe67U, 0x4b393972U +.word 0xde4a4a94U, 0xd44c4c98U, 0xe85858b0U, 0x4acfcf85U +.word 0x6bd0d0bbU, 0x2aefefc5U, 0xe5aaaa4fU, 0x16fbfbedU +.word 0xc5434386U, 0xd74d4d9aU, 0x55333366U, 0x94858511U +.word 0xcf45458aU, 0x10f9f9e9U, 0x06020204U, 0x817f7ffeU +.word 0xf05050a0U, 0x443c3c78U, 0xba9f9f25U, 0xe3a8a84bU +.word 0xf35151a2U, 0xfea3a35dU, 0xc0404080U, 0x8a8f8f05U +.word 0xad92923fU, 0xbc9d9d21U, 0x48383870U, 0x04f5f5f1U +.word 0xdfbcbc63U, 0xc1b6b677U, 0x75dadaafU, 0x63212142U +.word 0x30101020U, 0x1affffe5U, 0x0ef3f3fdU, 0x6dd2d2bfU +.word 0x4ccdcd81U, 0x140c0c18U, 0x35131326U, 0x2fececc3U +.word 0xe15f5fbeU, 0xa2979735U, 0xcc444488U, 0x3917172eU +.word 0x57c4c493U, 0xf2a7a755U, 0x827e7efcU, 0x473d3d7aU +.word 0xac6464c8U, 0xe75d5dbaU, 0x2b191932U, 0x957373e6U +.word 0xa06060c0U, 0x98818119U, 0xd14f4f9eU, 0x7fdcdca3U +.word 0x66222244U, 0x7e2a2a54U, 0xab90903bU, 0x8388880bU +.word 0xca46468cU, 0x29eeeec7U, 0xd3b8b86bU, 0x3c141428U +.word 0x79dedea7U, 0xe25e5ebcU, 0x1d0b0b16U, 0x76dbdbadU +.word 0x3be0e0dbU, 0x56323264U, 0x4e3a3a74U, 0x1e0a0a14U +.word 0xdb494992U, 0x0a06060cU, 0x6c242448U, 0xe45c5cb8U +.word 0x5dc2c29fU, 0x6ed3d3bdU, 0xefacac43U, 0xa66262c4U +.word 0xa8919139U, 0xa4959531U, 0x37e4e4d3U, 0x8b7979f2U +.word 0x32e7e7d5U, 0x43c8c88bU, 0x5937376eU, 0xb76d6ddaU +.word 0x8c8d8d01U, 0x64d5d5b1U, 0xd24e4e9cU, 0xe0a9a949U +.word 0xb46c6cd8U, 0xfa5656acU, 0x07f4f4f3U, 0x25eaeacfU +.word 0xaf6565caU, 0x8e7a7af4U, 0xe9aeae47U, 0x18080810U +.word 0xd5baba6fU, 0x887878f0U, 0x6f25254aU, 0x722e2e5cU +.word 0x241c1c38U, 0xf1a6a657U, 0xc7b4b473U, 0x51c6c697U +.word 0x23e8e8cbU, 0x7cdddda1U, 0x9c7474e8U, 0x211f1f3eU +.word 0xdd4b4b96U, 0xdcbdbd61U, 0x868b8b0dU, 0x858a8a0fU +.word 0x907070e0U, 0x423e3e7cU, 0xc4b5b571U, 0xaa6666ccU +.word 0xd8484890U, 0x05030306U, 0x01f6f6f7U, 0x120e0e1cU +.word 0xa36161c2U, 0x5f35356aU, 0xf95757aeU, 0xd0b9b969U +.word 0x91868617U, 0x58c1c199U, 0x271d1d3aU, 0xb99e9e27U +.word 0x38e1e1d9U, 0x13f8f8ebU, 0xb398982bU, 0x33111122U +.word 0xbb6969d2U, 0x70d9d9a9U, 0x898e8e07U, 0xa7949433U +.word 0xb69b9b2dU, 0x221e1e3cU, 0x92878715U, 0x20e9e9c9U +.word 0x49cece87U, 0xff5555aaU, 0x78282850U, 0x7adfdfa5U +.word 0x8f8c8c03U, 0xf8a1a159U, 0x80898909U, 0x170d0d1aU +.word 0xdabfbf65U, 0x31e6e6d7U, 0xc6424284U, 0xb86868d0U +.word 0xc3414182U, 0xb0999929U, 0x772d2d5aU, 0x110f0f1eU +.word 0xcbb0b07bU, 0xfc5454a8U, 0xd6bbbb6dU, 0x3a16162cU + +.type AES_Te1,@object +AES_Te1: +.word 0x6363c6a5U, 0x7c7cf884U, 0x7777ee99U, 0x7b7bf68dU +.word 0xf2f2ff0dU, 0x6b6bd6bdU, 0x6f6fdeb1U, 0xc5c59154U +.word 0x30306050U, 0x01010203U, 0x6767cea9U, 0x2b2b567dU +.word 0xfefee719U, 0xd7d7b562U, 0xabab4de6U, 0x7676ec9aU +.word 0xcaca8f45U, 0x82821f9dU, 0xc9c98940U, 0x7d7dfa87U +.word 0xfafaef15U, 0x5959b2ebU, 0x47478ec9U, 0xf0f0fb0bU +.word 0xadad41ecU, 0xd4d4b367U, 0xa2a25ffdU, 0xafaf45eaU +.word 0x9c9c23bfU, 0xa4a453f7U, 0x7272e496U, 0xc0c09b5bU +.word 0xb7b775c2U, 0xfdfde11cU, 0x93933daeU, 0x26264c6aU +.word 0x36366c5aU, 0x3f3f7e41U, 0xf7f7f502U, 0xcccc834fU +.word 0x3434685cU, 0xa5a551f4U, 0xe5e5d134U, 0xf1f1f908U +.word 0x7171e293U, 0xd8d8ab73U, 0x31316253U, 0x15152a3fU +.word 0x0404080cU, 0xc7c79552U, 0x23234665U, 0xc3c39d5eU +.word 0x18183028U, 0x969637a1U, 0x05050a0fU, 0x9a9a2fb5U +.word 0x07070e09U, 0x12122436U, 0x80801b9bU, 0xe2e2df3dU +.word 0xebebcd26U, 0x27274e69U, 0xb2b27fcdU, 0x7575ea9fU +.word 0x0909121bU, 0x83831d9eU, 0x2c2c5874U, 0x1a1a342eU +.word 0x1b1b362dU, 0x6e6edcb2U, 0x5a5ab4eeU, 0xa0a05bfbU +.word 0x5252a4f6U, 0x3b3b764dU, 0xd6d6b761U, 0xb3b37dceU +.word 0x2929527bU, 0xe3e3dd3eU, 0x2f2f5e71U, 0x84841397U +.word 0x5353a6f5U, 0xd1d1b968U, 0x00000000U, 0xededc12cU +.word 0x20204060U, 0xfcfce31fU, 0xb1b179c8U, 0x5b5bb6edU +.word 0x6a6ad4beU, 0xcbcb8d46U, 0xbebe67d9U, 0x3939724bU +.word 0x4a4a94deU, 0x4c4c98d4U, 0x5858b0e8U, 0xcfcf854aU +.word 0xd0d0bb6bU, 0xefefc52aU, 0xaaaa4fe5U, 0xfbfbed16U +.word 0x434386c5U, 0x4d4d9ad7U, 0x33336655U, 0x85851194U +.word 0x45458acfU, 0xf9f9e910U, 0x02020406U, 0x7f7ffe81U +.word 0x5050a0f0U, 0x3c3c7844U, 0x9f9f25baU, 0xa8a84be3U +.word 0x5151a2f3U, 0xa3a35dfeU, 0x404080c0U, 0x8f8f058aU +.word 0x92923fadU, 0x9d9d21bcU, 0x38387048U, 0xf5f5f104U +.word 0xbcbc63dfU, 0xb6b677c1U, 0xdadaaf75U, 0x21214263U +.word 0x10102030U, 0xffffe51aU, 0xf3f3fd0eU, 0xd2d2bf6dU +.word 0xcdcd814cU, 0x0c0c1814U, 0x13132635U, 0xececc32fU +.word 0x5f5fbee1U, 0x979735a2U, 0x444488ccU, 0x17172e39U +.word 0xc4c49357U, 0xa7a755f2U, 0x7e7efc82U, 0x3d3d7a47U +.word 0x6464c8acU, 0x5d5dbae7U, 0x1919322bU, 0x7373e695U +.word 0x6060c0a0U, 0x81811998U, 0x4f4f9ed1U, 0xdcdca37fU +.word 0x22224466U, 0x2a2a547eU, 0x90903babU, 0x88880b83U +.word 0x46468ccaU, 0xeeeec729U, 0xb8b86bd3U, 0x1414283cU +.word 0xdedea779U, 0x5e5ebce2U, 0x0b0b161dU, 0xdbdbad76U +.word 0xe0e0db3bU, 0x32326456U, 0x3a3a744eU, 0x0a0a141eU +.word 0x494992dbU, 0x06060c0aU, 0x2424486cU, 0x5c5cb8e4U +.word 0xc2c29f5dU, 0xd3d3bd6eU, 0xacac43efU, 0x6262c4a6U +.word 0x919139a8U, 0x959531a4U, 0xe4e4d337U, 0x7979f28bU +.word 0xe7e7d532U, 0xc8c88b43U, 0x37376e59U, 0x6d6ddab7U +.word 0x8d8d018cU, 0xd5d5b164U, 0x4e4e9cd2U, 0xa9a949e0U +.word 0x6c6cd8b4U, 0x5656acfaU, 0xf4f4f307U, 0xeaeacf25U +.word 0x6565caafU, 0x7a7af48eU, 0xaeae47e9U, 0x08081018U +.word 0xbaba6fd5U, 0x7878f088U, 0x25254a6fU, 0x2e2e5c72U +.word 0x1c1c3824U, 0xa6a657f1U, 0xb4b473c7U, 0xc6c69751U +.word 0xe8e8cb23U, 0xdddda17cU, 0x7474e89cU, 0x1f1f3e21U +.word 0x4b4b96ddU, 0xbdbd61dcU, 0x8b8b0d86U, 0x8a8a0f85U +.word 0x7070e090U, 0x3e3e7c42U, 0xb5b571c4U, 0x6666ccaaU +.word 0x484890d8U, 0x03030605U, 0xf6f6f701U, 0x0e0e1c12U +.word 0x6161c2a3U, 0x35356a5fU, 0x5757aef9U, 0xb9b969d0U +.word 0x86861791U, 0xc1c19958U, 0x1d1d3a27U, 0x9e9e27b9U +.word 0xe1e1d938U, 0xf8f8eb13U, 0x98982bb3U, 0x11112233U +.word 0x6969d2bbU, 0xd9d9a970U, 0x8e8e0789U, 0x949433a7U +.word 0x9b9b2db6U, 0x1e1e3c22U, 0x87871592U, 0xe9e9c920U +.word 0xcece8749U, 0x5555aaffU, 0x28285078U, 0xdfdfa57aU +.word 0x8c8c038fU, 0xa1a159f8U, 0x89890980U, 0x0d0d1a17U +.word 0xbfbf65daU, 0xe6e6d731U, 0x424284c6U, 0x6868d0b8U +.word 0x414182c3U, 0x999929b0U, 0x2d2d5a77U, 0x0f0f1e11U +.word 0xb0b07bcbU, 0x5454a8fcU, 0xbbbb6dd6U, 0x16162c3aU + +.type AES_Te2,@object +AES_Te2: +.word 0x63c6a563U, 0x7cf8847cU, 0x77ee9977U, 0x7bf68d7bU +.word 0xf2ff0df2U, 0x6bd6bd6bU, 0x6fdeb16fU, 0xc59154c5U +.word 0x30605030U, 0x01020301U, 0x67cea967U, 0x2b567d2bU +.word 0xfee719feU, 0xd7b562d7U, 0xab4de6abU, 0x76ec9a76U +.word 0xca8f45caU, 0x821f9d82U, 0xc98940c9U, 0x7dfa877dU +.word 0xfaef15faU, 0x59b2eb59U, 0x478ec947U, 0xf0fb0bf0U +.word 0xad41ecadU, 0xd4b367d4U, 0xa25ffda2U, 0xaf45eaafU +.word 0x9c23bf9cU, 0xa453f7a4U, 0x72e49672U, 0xc09b5bc0U +.word 0xb775c2b7U, 0xfde11cfdU, 0x933dae93U, 0x264c6a26U +.word 0x366c5a36U, 0x3f7e413fU, 0xf7f502f7U, 0xcc834fccU +.word 0x34685c34U, 0xa551f4a5U, 0xe5d134e5U, 0xf1f908f1U +.word 0x71e29371U, 0xd8ab73d8U, 0x31625331U, 0x152a3f15U +.word 0x04080c04U, 0xc79552c7U, 0x23466523U, 0xc39d5ec3U +.word 0x18302818U, 0x9637a196U, 0x050a0f05U, 0x9a2fb59aU +.word 0x070e0907U, 0x12243612U, 0x801b9b80U, 0xe2df3de2U +.word 0xebcd26ebU, 0x274e6927U, 0xb27fcdb2U, 0x75ea9f75U +.word 0x09121b09U, 0x831d9e83U, 0x2c58742cU, 0x1a342e1aU +.word 0x1b362d1bU, 0x6edcb26eU, 0x5ab4ee5aU, 0xa05bfba0U +.word 0x52a4f652U, 0x3b764d3bU, 0xd6b761d6U, 0xb37dceb3U +.word 0x29527b29U, 0xe3dd3ee3U, 0x2f5e712fU, 0x84139784U +.word 0x53a6f553U, 0xd1b968d1U, 0x00000000U, 0xedc12cedU +.word 0x20406020U, 0xfce31ffcU, 0xb179c8b1U, 0x5bb6ed5bU +.word 0x6ad4be6aU, 0xcb8d46cbU, 0xbe67d9beU, 0x39724b39U +.word 0x4a94de4aU, 0x4c98d44cU, 0x58b0e858U, 0xcf854acfU +.word 0xd0bb6bd0U, 0xefc52aefU, 0xaa4fe5aaU, 0xfbed16fbU +.word 0x4386c543U, 0x4d9ad74dU, 0x33665533U, 0x85119485U +.word 0x458acf45U, 0xf9e910f9U, 0x02040602U, 0x7ffe817fU +.word 0x50a0f050U, 0x3c78443cU, 0x9f25ba9fU, 0xa84be3a8U +.word 0x51a2f351U, 0xa35dfea3U, 0x4080c040U, 0x8f058a8fU +.word 0x923fad92U, 0x9d21bc9dU, 0x38704838U, 0xf5f104f5U +.word 0xbc63dfbcU, 0xb677c1b6U, 0xdaaf75daU, 0x21426321U +.word 0x10203010U, 0xffe51affU, 0xf3fd0ef3U, 0xd2bf6dd2U +.word 0xcd814ccdU, 0x0c18140cU, 0x13263513U, 0xecc32fecU +.word 0x5fbee15fU, 0x9735a297U, 0x4488cc44U, 0x172e3917U +.word 0xc49357c4U, 0xa755f2a7U, 0x7efc827eU, 0x3d7a473dU +.word 0x64c8ac64U, 0x5dbae75dU, 0x19322b19U, 0x73e69573U +.word 0x60c0a060U, 0x81199881U, 0x4f9ed14fU, 0xdca37fdcU +.word 0x22446622U, 0x2a547e2aU, 0x903bab90U, 0x880b8388U +.word 0x468cca46U, 0xeec729eeU, 0xb86bd3b8U, 0x14283c14U +.word 0xdea779deU, 0x5ebce25eU, 0x0b161d0bU, 0xdbad76dbU +.word 0xe0db3be0U, 0x32645632U, 0x3a744e3aU, 0x0a141e0aU +.word 0x4992db49U, 0x060c0a06U, 0x24486c24U, 0x5cb8e45cU +.word 0xc29f5dc2U, 0xd3bd6ed3U, 0xac43efacU, 0x62c4a662U +.word 0x9139a891U, 0x9531a495U, 0xe4d337e4U, 0x79f28b79U +.word 0xe7d532e7U, 0xc88b43c8U, 0x376e5937U, 0x6ddab76dU +.word 0x8d018c8dU, 0xd5b164d5U, 0x4e9cd24eU, 0xa949e0a9U +.word 0x6cd8b46cU, 0x56acfa56U, 0xf4f307f4U, 0xeacf25eaU +.word 0x65caaf65U, 0x7af48e7aU, 0xae47e9aeU, 0x08101808U +.word 0xba6fd5baU, 0x78f08878U, 0x254a6f25U, 0x2e5c722eU +.word 0x1c38241cU, 0xa657f1a6U, 0xb473c7b4U, 0xc69751c6U +.word 0xe8cb23e8U, 0xdda17cddU, 0x74e89c74U, 0x1f3e211fU +.word 0x4b96dd4bU, 0xbd61dcbdU, 0x8b0d868bU, 0x8a0f858aU +.word 0x70e09070U, 0x3e7c423eU, 0xb571c4b5U, 0x66ccaa66U +.word 0x4890d848U, 0x03060503U, 0xf6f701f6U, 0x0e1c120eU +.word 0x61c2a361U, 0x356a5f35U, 0x57aef957U, 0xb969d0b9U +.word 0x86179186U, 0xc19958c1U, 0x1d3a271dU, 0x9e27b99eU +.word 0xe1d938e1U, 0xf8eb13f8U, 0x982bb398U, 0x11223311U +.word 0x69d2bb69U, 0xd9a970d9U, 0x8e07898eU, 0x9433a794U +.word 0x9b2db69bU, 0x1e3c221eU, 0x87159287U, 0xe9c920e9U +.word 0xce8749ceU, 0x55aaff55U, 0x28507828U, 0xdfa57adfU +.word 0x8c038f8cU, 0xa159f8a1U, 0x89098089U, 0x0d1a170dU +.word 0xbf65dabfU, 0xe6d731e6U, 0x4284c642U, 0x68d0b868U +.word 0x4182c341U, 0x9929b099U, 0x2d5a772dU, 0x0f1e110fU +.word 0xb07bcbb0U, 0x54a8fc54U, 0xbb6dd6bbU, 0x162c3a16U + +.type AES_Te3,@object +AES_Te3: +.word 0xc6a56363U, 0xf8847c7cU, 0xee997777U, 0xf68d7b7bU +.word 0xff0df2f2U, 0xd6bd6b6bU, 0xdeb16f6fU, 0x9154c5c5U +.word 0x60503030U, 0x02030101U, 0xcea96767U, 0x567d2b2bU +.word 0xe719fefeU, 0xb562d7d7U, 0x4de6ababU, 0xec9a7676U +.word 0x8f45cacaU, 0x1f9d8282U, 0x8940c9c9U, 0xfa877d7dU +.word 0xef15fafaU, 0xb2eb5959U, 0x8ec94747U, 0xfb0bf0f0U +.word 0x41ecadadU, 0xb367d4d4U, 0x5ffda2a2U, 0x45eaafafU +.word 0x23bf9c9cU, 0x53f7a4a4U, 0xe4967272U, 0x9b5bc0c0U +.word 0x75c2b7b7U, 0xe11cfdfdU, 0x3dae9393U, 0x4c6a2626U +.word 0x6c5a3636U, 0x7e413f3fU, 0xf502f7f7U, 0x834fccccU +.word 0x685c3434U, 0x51f4a5a5U, 0xd134e5e5U, 0xf908f1f1U +.word 0xe2937171U, 0xab73d8d8U, 0x62533131U, 0x2a3f1515U +.word 0x080c0404U, 0x9552c7c7U, 0x46652323U, 0x9d5ec3c3U +.word 0x30281818U, 0x37a19696U, 0x0a0f0505U, 0x2fb59a9aU +.word 0x0e090707U, 0x24361212U, 0x1b9b8080U, 0xdf3de2e2U +.word 0xcd26ebebU, 0x4e692727U, 0x7fcdb2b2U, 0xea9f7575U +.word 0x121b0909U, 0x1d9e8383U, 0x58742c2cU, 0x342e1a1aU +.word 0x362d1b1bU, 0xdcb26e6eU, 0xb4ee5a5aU, 0x5bfba0a0U +.word 0xa4f65252U, 0x764d3b3bU, 0xb761d6d6U, 0x7dceb3b3U +.word 0x527b2929U, 0xdd3ee3e3U, 0x5e712f2fU, 0x13978484U +.word 0xa6f55353U, 0xb968d1d1U, 0x00000000U, 0xc12cededU +.word 0x40602020U, 0xe31ffcfcU, 0x79c8b1b1U, 0xb6ed5b5bU +.word 0xd4be6a6aU, 0x8d46cbcbU, 0x67d9bebeU, 0x724b3939U +.word 0x94de4a4aU, 0x98d44c4cU, 0xb0e85858U, 0x854acfcfU +.word 0xbb6bd0d0U, 0xc52aefefU, 0x4fe5aaaaU, 0xed16fbfbU +.word 0x86c54343U, 0x9ad74d4dU, 0x66553333U, 0x11948585U +.word 0x8acf4545U, 0xe910f9f9U, 0x04060202U, 0xfe817f7fU +.word 0xa0f05050U, 0x78443c3cU, 0x25ba9f9fU, 0x4be3a8a8U +.word 0xa2f35151U, 0x5dfea3a3U, 0x80c04040U, 0x058a8f8fU +.word 0x3fad9292U, 0x21bc9d9dU, 0x70483838U, 0xf104f5f5U +.word 0x63dfbcbcU, 0x77c1b6b6U, 0xaf75dadaU, 0x42632121U +.word 0x20301010U, 0xe51affffU, 0xfd0ef3f3U, 0xbf6dd2d2U +.word 0x814ccdcdU, 0x18140c0cU, 0x26351313U, 0xc32fececU +.word 0xbee15f5fU, 0x35a29797U, 0x88cc4444U, 0x2e391717U +.word 0x9357c4c4U, 0x55f2a7a7U, 0xfc827e7eU, 0x7a473d3dU +.word 0xc8ac6464U, 0xbae75d5dU, 0x322b1919U, 0xe6957373U +.word 0xc0a06060U, 0x19988181U, 0x9ed14f4fU, 0xa37fdcdcU +.word 0x44662222U, 0x547e2a2aU, 0x3bab9090U, 0x0b838888U +.word 0x8cca4646U, 0xc729eeeeU, 0x6bd3b8b8U, 0x283c1414U +.word 0xa779dedeU, 0xbce25e5eU, 0x161d0b0bU, 0xad76dbdbU +.word 0xdb3be0e0U, 0x64563232U, 0x744e3a3aU, 0x141e0a0aU +.word 0x92db4949U, 0x0c0a0606U, 0x486c2424U, 0xb8e45c5cU +.word 0x9f5dc2c2U, 0xbd6ed3d3U, 0x43efacacU, 0xc4a66262U +.word 0x39a89191U, 0x31a49595U, 0xd337e4e4U, 0xf28b7979U +.word 0xd532e7e7U, 0x8b43c8c8U, 0x6e593737U, 0xdab76d6dU +.word 0x018c8d8dU, 0xb164d5d5U, 0x9cd24e4eU, 0x49e0a9a9U +.word 0xd8b46c6cU, 0xacfa5656U, 0xf307f4f4U, 0xcf25eaeaU +.word 0xcaaf6565U, 0xf48e7a7aU, 0x47e9aeaeU, 0x10180808U +.word 0x6fd5babaU, 0xf0887878U, 0x4a6f2525U, 0x5c722e2eU +.word 0x38241c1cU, 0x57f1a6a6U, 0x73c7b4b4U, 0x9751c6c6U +.word 0xcb23e8e8U, 0xa17cddddU, 0xe89c7474U, 0x3e211f1fU +.word 0x96dd4b4bU, 0x61dcbdbdU, 0x0d868b8bU, 0x0f858a8aU +.word 0xe0907070U, 0x7c423e3eU, 0x71c4b5b5U, 0xccaa6666U +.word 0x90d84848U, 0x06050303U, 0xf701f6f6U, 0x1c120e0eU +.word 0xc2a36161U, 0x6a5f3535U, 0xaef95757U, 0x69d0b9b9U +.word 0x17918686U, 0x9958c1c1U, 0x3a271d1dU, 0x27b99e9eU +.word 0xd938e1e1U, 0xeb13f8f8U, 0x2bb39898U, 0x22331111U +.word 0xd2bb6969U, 0xa970d9d9U, 0x07898e8eU, 0x33a79494U +.word 0x2db69b9bU, 0x3c221e1eU, 0x15928787U, 0xc920e9e9U +.word 0x8749ceceU, 0xaaff5555U, 0x50782828U, 0xa57adfdfU +.word 0x038f8c8cU, 0x59f8a1a1U, 0x09808989U, 0x1a170d0dU +.word 0x65dabfbfU, 0xd731e6e6U, 0x84c64242U, 0xd0b86868U +.word 0x82c34141U, 0x29b09999U, 0x5a772d2dU, 0x1e110f0fU +.word 0x7bcbb0b0U, 0xa8fc5454U, 0x6dd6bbbbU, 0x2c3a1616U + +.p2align 12 +.type AES_Td0,@object +AES_Td0: +.word 0x50a7f451U, 0x5365417eU, 0xc3a4171aU, 0x965e273aU +.word 0xcb6bab3bU, 0xf1459d1fU, 0xab58faacU, 0x9303e34bU +.word 0x55fa3020U, 0xf66d76adU, 0x9176cc88U, 0x254c02f5U +.word 0xfcd7e54fU, 0xd7cb2ac5U, 0x80443526U, 0x8fa362b5U +.word 0x495ab1deU, 0x671bba25U, 0x980eea45U, 0xe1c0fe5dU +.word 0x02752fc3U, 0x12f04c81U, 0xa397468dU, 0xc6f9d36bU +.word 0xe75f8f03U, 0x959c9215U, 0xeb7a6dbfU, 0xda595295U +.word 0x2d83bed4U, 0xd3217458U, 0x2969e049U, 0x44c8c98eU +.word 0x6a89c275U, 0x78798ef4U, 0x6b3e5899U, 0xdd71b927U +.word 0xb64fe1beU, 0x17ad88f0U, 0x66ac20c9U, 0xb43ace7dU +.word 0x184adf63U, 0x82311ae5U, 0x60335197U, 0x457f5362U +.word 0xe07764b1U, 0x84ae6bbbU, 0x1ca081feU, 0x942b08f9U +.word 0x58684870U, 0x19fd458fU, 0x876cde94U, 0xb7f87b52U +.word 0x23d373abU, 0xe2024b72U, 0x578f1fe3U, 0x2aab5566U +.word 0x0728ebb2U, 0x03c2b52fU, 0x9a7bc586U, 0xa50837d3U +.word 0xf2872830U, 0xb2a5bf23U, 0xba6a0302U, 0x5c8216edU +.word 0x2b1ccf8aU, 0x92b479a7U, 0xf0f207f3U, 0xa1e2694eU +.word 0xcdf4da65U, 0xd5be0506U, 0x1f6234d1U, 0x8afea6c4U +.word 0x9d532e34U, 0xa055f3a2U, 0x32e18a05U, 0x75ebf6a4U +.word 0x39ec830bU, 0xaaef6040U, 0x069f715eU, 0x51106ebdU +.word 0xf98a213eU, 0x3d06dd96U, 0xae053eddU, 0x46bde64dU +.word 0xb58d5491U, 0x055dc471U, 0x6fd40604U, 0xff155060U +.word 0x24fb9819U, 0x97e9bdd6U, 0xcc434089U, 0x779ed967U +.word 0xbd42e8b0U, 0x888b8907U, 0x385b19e7U, 0xdbeec879U +.word 0x470a7ca1U, 0xe90f427cU, 0xc91e84f8U, 0x00000000U +.word 0x83868009U, 0x48ed2b32U, 0xac70111eU, 0x4e725a6cU +.word 0xfbff0efdU, 0x5638850fU, 0x1ed5ae3dU, 0x27392d36U +.word 0x64d90f0aU, 0x21a65c68U, 0xd1545b9bU, 0x3a2e3624U +.word 0xb1670a0cU, 0x0fe75793U, 0xd296eeb4U, 0x9e919b1bU +.word 0x4fc5c080U, 0xa220dc61U, 0x694b775aU, 0x161a121cU +.word 0x0aba93e2U, 0xe52aa0c0U, 0x43e0223cU, 0x1d171b12U +.word 0x0b0d090eU, 0xadc78bf2U, 0xb9a8b62dU, 0xc8a91e14U +.word 0x8519f157U, 0x4c0775afU, 0xbbdd99eeU, 0xfd607fa3U +.word 0x9f2601f7U, 0xbcf5725cU, 0xc53b6644U, 0x347efb5bU +.word 0x7629438bU, 0xdcc623cbU, 0x68fcedb6U, 0x63f1e4b8U +.word 0xcadc31d7U, 0x10856342U, 0x40229713U, 0x2011c684U +.word 0x7d244a85U, 0xf83dbbd2U, 0x1132f9aeU, 0x6da129c7U +.word 0x4b2f9e1dU, 0xf330b2dcU, 0xec52860dU, 0xd0e3c177U +.word 0x6c16b32bU, 0x99b970a9U, 0xfa489411U, 0x2264e947U +.word 0xc48cfca8U, 0x1a3ff0a0U, 0xd82c7d56U, 0xef903322U +.word 0xc74e4987U, 0xc1d138d9U, 0xfea2ca8cU, 0x360bd498U +.word 0xcf81f5a6U, 0x28de7aa5U, 0x268eb7daU, 0xa4bfad3fU +.word 0xe49d3a2cU, 0x0d927850U, 0x9bcc5f6aU, 0x62467e54U +.word 0xc2138df6U, 0xe8b8d890U, 0x5ef7392eU, 0xf5afc382U +.word 0xbe805d9fU, 0x7c93d069U, 0xa92dd56fU, 0xb31225cfU +.word 0x3b99acc8U, 0xa77d1810U, 0x6e639ce8U, 0x7bbb3bdbU +.word 0x097826cdU, 0xf418596eU, 0x01b79aecU, 0xa89a4f83U +.word 0x656e95e6U, 0x7ee6ffaaU, 0x08cfbc21U, 0xe6e815efU +.word 0xd99be7baU, 0xce366f4aU, 0xd4099feaU, 0xd67cb029U +.word 0xafb2a431U, 0x31233f2aU, 0x3094a5c6U, 0xc066a235U +.word 0x37bc4e74U, 0xa6ca82fcU, 0xb0d090e0U, 0x15d8a733U +.word 0x4a9804f1U, 0xf7daec41U, 0x0e50cd7fU, 0x2ff69117U +.word 0x8dd64d76U, 0x4db0ef43U, 0x544daaccU, 0xdf0496e4U +.word 0xe3b5d19eU, 0x1b886a4cU, 0xb81f2cc1U, 0x7f516546U +.word 0x04ea5e9dU, 0x5d358c01U, 0x737487faU, 0x2e410bfbU +.word 0x5a1d67b3U, 0x52d2db92U, 0x335610e9U, 0x1347d66dU +.word 0x8c61d79aU, 0x7a0ca137U, 0x8e14f859U, 0x893c13ebU +.word 0xee27a9ceU, 0x35c961b7U, 0xede51ce1U, 0x3cb1477aU +.word 0x59dfd29cU, 0x3f73f255U, 0x79ce1418U, 0xbf37c773U +.word 0xeacdf753U, 0x5baafd5fU, 0x146f3ddfU, 0x86db4478U +.word 0x81f3afcaU, 0x3ec468b9U, 0x2c342438U, 0x5f40a3c2U +.word 0x72c31d16U, 0x0c25e2bcU, 0x8b493c28U, 0x41950dffU +.word 0x7101a839U, 0xdeb30c08U, 0x9ce4b4d8U, 0x90c15664U +.word 0x6184cb7bU, 0x70b632d5U, 0x745c6c48U, 0x4257b8d0U + +.type AES_Td1,@object +AES_Td1: +.word 0xa7f45150U, 0x65417e53U, 0xa4171ac3U, 0x5e273a96U +.word 0x6bab3bcbU, 0x459d1ff1U, 0x58faacabU, 0x03e34b93U +.word 0xfa302055U, 0x6d76adf6U, 0x76cc8891U, 0x4c02f525U +.word 0xd7e54ffcU, 0xcb2ac5d7U, 0x44352680U, 0xa362b58fU +.word 0x5ab1de49U, 0x1bba2567U, 0x0eea4598U, 0xc0fe5de1U +.word 0x752fc302U, 0xf04c8112U, 0x97468da3U, 0xf9d36bc6U +.word 0x5f8f03e7U, 0x9c921595U, 0x7a6dbfebU, 0x595295daU +.word 0x83bed42dU, 0x217458d3U, 0x69e04929U, 0xc8c98e44U +.word 0x89c2756aU, 0x798ef478U, 0x3e58996bU, 0x71b927ddU +.word 0x4fe1beb6U, 0xad88f017U, 0xac20c966U, 0x3ace7db4U +.word 0x4adf6318U, 0x311ae582U, 0x33519760U, 0x7f536245U +.word 0x7764b1e0U, 0xae6bbb84U, 0xa081fe1cU, 0x2b08f994U +.word 0x68487058U, 0xfd458f19U, 0x6cde9487U, 0xf87b52b7U +.word 0xd373ab23U, 0x024b72e2U, 0x8f1fe357U, 0xab55662aU +.word 0x28ebb207U, 0xc2b52f03U, 0x7bc5869aU, 0x0837d3a5U +.word 0x872830f2U, 0xa5bf23b2U, 0x6a0302baU, 0x8216ed5cU +.word 0x1ccf8a2bU, 0xb479a792U, 0xf207f3f0U, 0xe2694ea1U +.word 0xf4da65cdU, 0xbe0506d5U, 0x6234d11fU, 0xfea6c48aU +.word 0x532e349dU, 0x55f3a2a0U, 0xe18a0532U, 0xebf6a475U +.word 0xec830b39U, 0xef6040aaU, 0x9f715e06U, 0x106ebd51U +.word 0x8a213ef9U, 0x06dd963dU, 0x053eddaeU, 0xbde64d46U +.word 0x8d5491b5U, 0x5dc47105U, 0xd406046fU, 0x155060ffU +.word 0xfb981924U, 0xe9bdd697U, 0x434089ccU, 0x9ed96777U +.word 0x42e8b0bdU, 0x8b890788U, 0x5b19e738U, 0xeec879dbU +.word 0x0a7ca147U, 0x0f427ce9U, 0x1e84f8c9U, 0x00000000U +.word 0x86800983U, 0xed2b3248U, 0x70111eacU, 0x725a6c4eU +.word 0xff0efdfbU, 0x38850f56U, 0xd5ae3d1eU, 0x392d3627U +.word 0xd90f0a64U, 0xa65c6821U, 0x545b9bd1U, 0x2e36243aU +.word 0x670a0cb1U, 0xe757930fU, 0x96eeb4d2U, 0x919b1b9eU +.word 0xc5c0804fU, 0x20dc61a2U, 0x4b775a69U, 0x1a121c16U +.word 0xba93e20aU, 0x2aa0c0e5U, 0xe0223c43U, 0x171b121dU +.word 0x0d090e0bU, 0xc78bf2adU, 0xa8b62db9U, 0xa91e14c8U +.word 0x19f15785U, 0x0775af4cU, 0xdd99eebbU, 0x607fa3fdU +.word 0x2601f79fU, 0xf5725cbcU, 0x3b6644c5U, 0x7efb5b34U +.word 0x29438b76U, 0xc623cbdcU, 0xfcedb668U, 0xf1e4b863U +.word 0xdc31d7caU, 0x85634210U, 0x22971340U, 0x11c68420U +.word 0x244a857dU, 0x3dbbd2f8U, 0x32f9ae11U, 0xa129c76dU +.word 0x2f9e1d4bU, 0x30b2dcf3U, 0x52860decU, 0xe3c177d0U +.word 0x16b32b6cU, 0xb970a999U, 0x489411faU, 0x64e94722U +.word 0x8cfca8c4U, 0x3ff0a01aU, 0x2c7d56d8U, 0x903322efU +.word 0x4e4987c7U, 0xd138d9c1U, 0xa2ca8cfeU, 0x0bd49836U +.word 0x81f5a6cfU, 0xde7aa528U, 0x8eb7da26U, 0xbfad3fa4U +.word 0x9d3a2ce4U, 0x9278500dU, 0xcc5f6a9bU, 0x467e5462U +.word 0x138df6c2U, 0xb8d890e8U, 0xf7392e5eU, 0xafc382f5U +.word 0x805d9fbeU, 0x93d0697cU, 0x2dd56fa9U, 0x1225cfb3U +.word 0x99acc83bU, 0x7d1810a7U, 0x639ce86eU, 0xbb3bdb7bU +.word 0x7826cd09U, 0x18596ef4U, 0xb79aec01U, 0x9a4f83a8U +.word 0x6e95e665U, 0xe6ffaa7eU, 0xcfbc2108U, 0xe815efe6U +.word 0x9be7bad9U, 0x366f4aceU, 0x099fead4U, 0x7cb029d6U +.word 0xb2a431afU, 0x233f2a31U, 0x94a5c630U, 0x66a235c0U +.word 0xbc4e7437U, 0xca82fca6U, 0xd090e0b0U, 0xd8a73315U +.word 0x9804f14aU, 0xdaec41f7U, 0x50cd7f0eU, 0xf691172fU +.word 0xd64d768dU, 0xb0ef434dU, 0x4daacc54U, 0x0496e4dfU +.word 0xb5d19ee3U, 0x886a4c1bU, 0x1f2cc1b8U, 0x5165467fU +.word 0xea5e9d04U, 0x358c015dU, 0x7487fa73U, 0x410bfb2eU +.word 0x1d67b35aU, 0xd2db9252U, 0x5610e933U, 0x47d66d13U +.word 0x61d79a8cU, 0x0ca1377aU, 0x14f8598eU, 0x3c13eb89U +.word 0x27a9ceeeU, 0xc961b735U, 0xe51ce1edU, 0xb1477a3cU +.word 0xdfd29c59U, 0x73f2553fU, 0xce141879U, 0x37c773bfU +.word 0xcdf753eaU, 0xaafd5f5bU, 0x6f3ddf14U, 0xdb447886U +.word 0xf3afca81U, 0xc468b93eU, 0x3424382cU, 0x40a3c25fU +.word 0xc31d1672U, 0x25e2bc0cU, 0x493c288bU, 0x950dff41U +.word 0x01a83971U, 0xb30c08deU, 0xe4b4d89cU, 0xc1566490U +.word 0x84cb7b61U, 0xb632d570U, 0x5c6c4874U, 0x57b8d042U + +.type AES_Td2,@object +AES_Td2: +.word 0xf45150a7U, 0x417e5365U, 0x171ac3a4U, 0x273a965eU +.word 0xab3bcb6bU, 0x9d1ff145U, 0xfaacab58U, 0xe34b9303U +.word 0x302055faU, 0x76adf66dU, 0xcc889176U, 0x02f5254cU +.word 0xe54ffcd7U, 0x2ac5d7cbU, 0x35268044U, 0x62b58fa3U +.word 0xb1de495aU, 0xba25671bU, 0xea45980eU, 0xfe5de1c0U +.word 0x2fc30275U, 0x4c8112f0U, 0x468da397U, 0xd36bc6f9U +.word 0x8f03e75fU, 0x9215959cU, 0x6dbfeb7aU, 0x5295da59U +.word 0xbed42d83U, 0x7458d321U, 0xe0492969U, 0xc98e44c8U +.word 0xc2756a89U, 0x8ef47879U, 0x58996b3eU, 0xb927dd71U +.word 0xe1beb64fU, 0x88f017adU, 0x20c966acU, 0xce7db43aU +.word 0xdf63184aU, 0x1ae58231U, 0x51976033U, 0x5362457fU +.word 0x64b1e077U, 0x6bbb84aeU, 0x81fe1ca0U, 0x08f9942bU +.word 0x48705868U, 0x458f19fdU, 0xde94876cU, 0x7b52b7f8U +.word 0x73ab23d3U, 0x4b72e202U, 0x1fe3578fU, 0x55662aabU +.word 0xebb20728U, 0xb52f03c2U, 0xc5869a7bU, 0x37d3a508U +.word 0x2830f287U, 0xbf23b2a5U, 0x0302ba6aU, 0x16ed5c82U +.word 0xcf8a2b1cU, 0x79a792b4U, 0x07f3f0f2U, 0x694ea1e2U +.word 0xda65cdf4U, 0x0506d5beU, 0x34d11f62U, 0xa6c48afeU +.word 0x2e349d53U, 0xf3a2a055U, 0x8a0532e1U, 0xf6a475ebU +.word 0x830b39ecU, 0x6040aaefU, 0x715e069fU, 0x6ebd5110U +.word 0x213ef98aU, 0xdd963d06U, 0x3eddae05U, 0xe64d46bdU +.word 0x5491b58dU, 0xc471055dU, 0x06046fd4U, 0x5060ff15U +.word 0x981924fbU, 0xbdd697e9U, 0x4089cc43U, 0xd967779eU +.word 0xe8b0bd42U, 0x8907888bU, 0x19e7385bU, 0xc879dbeeU +.word 0x7ca1470aU, 0x427ce90fU, 0x84f8c91eU, 0x00000000U +.word 0x80098386U, 0x2b3248edU, 0x111eac70U, 0x5a6c4e72U +.word 0x0efdfbffU, 0x850f5638U, 0xae3d1ed5U, 0x2d362739U +.word 0x0f0a64d9U, 0x5c6821a6U, 0x5b9bd154U, 0x36243a2eU +.word 0x0a0cb167U, 0x57930fe7U, 0xeeb4d296U, 0x9b1b9e91U +.word 0xc0804fc5U, 0xdc61a220U, 0x775a694bU, 0x121c161aU +.word 0x93e20abaU, 0xa0c0e52aU, 0x223c43e0U, 0x1b121d17U +.word 0x090e0b0dU, 0x8bf2adc7U, 0xb62db9a8U, 0x1e14c8a9U +.word 0xf1578519U, 0x75af4c07U, 0x99eebbddU, 0x7fa3fd60U +.word 0x01f79f26U, 0x725cbcf5U, 0x6644c53bU, 0xfb5b347eU +.word 0x438b7629U, 0x23cbdcc6U, 0xedb668fcU, 0xe4b863f1U +.word 0x31d7cadcU, 0x63421085U, 0x97134022U, 0xc6842011U +.word 0x4a857d24U, 0xbbd2f83dU, 0xf9ae1132U, 0x29c76da1U +.word 0x9e1d4b2fU, 0xb2dcf330U, 0x860dec52U, 0xc177d0e3U +.word 0xb32b6c16U, 0x70a999b9U, 0x9411fa48U, 0xe9472264U +.word 0xfca8c48cU, 0xf0a01a3fU, 0x7d56d82cU, 0x3322ef90U +.word 0x4987c74eU, 0x38d9c1d1U, 0xca8cfea2U, 0xd498360bU +.word 0xf5a6cf81U, 0x7aa528deU, 0xb7da268eU, 0xad3fa4bfU +.word 0x3a2ce49dU, 0x78500d92U, 0x5f6a9bccU, 0x7e546246U +.word 0x8df6c213U, 0xd890e8b8U, 0x392e5ef7U, 0xc382f5afU +.word 0x5d9fbe80U, 0xd0697c93U, 0xd56fa92dU, 0x25cfb312U +.word 0xacc83b99U, 0x1810a77dU, 0x9ce86e63U, 0x3bdb7bbbU +.word 0x26cd0978U, 0x596ef418U, 0x9aec01b7U, 0x4f83a89aU +.word 0x95e6656eU, 0xffaa7ee6U, 0xbc2108cfU, 0x15efe6e8U +.word 0xe7bad99bU, 0x6f4ace36U, 0x9fead409U, 0xb029d67cU +.word 0xa431afb2U, 0x3f2a3123U, 0xa5c63094U, 0xa235c066U +.word 0x4e7437bcU, 0x82fca6caU, 0x90e0b0d0U, 0xa73315d8U +.word 0x04f14a98U, 0xec41f7daU, 0xcd7f0e50U, 0x91172ff6U +.word 0x4d768dd6U, 0xef434db0U, 0xaacc544dU, 0x96e4df04U +.word 0xd19ee3b5U, 0x6a4c1b88U, 0x2cc1b81fU, 0x65467f51U +.word 0x5e9d04eaU, 0x8c015d35U, 0x87fa7374U, 0x0bfb2e41U +.word 0x67b35a1dU, 0xdb9252d2U, 0x10e93356U, 0xd66d1347U +.word 0xd79a8c61U, 0xa1377a0cU, 0xf8598e14U, 0x13eb893cU +.word 0xa9ceee27U, 0x61b735c9U, 0x1ce1ede5U, 0x477a3cb1U +.word 0xd29c59dfU, 0xf2553f73U, 0x141879ceU, 0xc773bf37U +.word 0xf753eacdU, 0xfd5f5baaU, 0x3ddf146fU, 0x447886dbU +.word 0xafca81f3U, 0x68b93ec4U, 0x24382c34U, 0xa3c25f40U +.word 0x1d1672c3U, 0xe2bc0c25U, 0x3c288b49U, 0x0dff4195U +.word 0xa8397101U, 0x0c08deb3U, 0xb4d89ce4U, 0x566490c1U +.word 0xcb7b6184U, 0x32d570b6U, 0x6c48745cU, 0xb8d04257U + +.type AES_Td3,@object +AES_Td3: +.word 0x5150a7f4U, 0x7e536541U, 0x1ac3a417U, 0x3a965e27U +.word 0x3bcb6babU, 0x1ff1459dU, 0xacab58faU, 0x4b9303e3U +.word 0x2055fa30U, 0xadf66d76U, 0x889176ccU, 0xf5254c02U +.word 0x4ffcd7e5U, 0xc5d7cb2aU, 0x26804435U, 0xb58fa362U +.word 0xde495ab1U, 0x25671bbaU, 0x45980eeaU, 0x5de1c0feU +.word 0xc302752fU, 0x8112f04cU, 0x8da39746U, 0x6bc6f9d3U +.word 0x03e75f8fU, 0x15959c92U, 0xbfeb7a6dU, 0x95da5952U +.word 0xd42d83beU, 0x58d32174U, 0x492969e0U, 0x8e44c8c9U +.word 0x756a89c2U, 0xf478798eU, 0x996b3e58U, 0x27dd71b9U +.word 0xbeb64fe1U, 0xf017ad88U, 0xc966ac20U, 0x7db43aceU +.word 0x63184adfU, 0xe582311aU, 0x97603351U, 0x62457f53U +.word 0xb1e07764U, 0xbb84ae6bU, 0xfe1ca081U, 0xf9942b08U +.word 0x70586848U, 0x8f19fd45U, 0x94876cdeU, 0x52b7f87bU +.word 0xab23d373U, 0x72e2024bU, 0xe3578f1fU, 0x662aab55U +.word 0xb20728ebU, 0x2f03c2b5U, 0x869a7bc5U, 0xd3a50837U +.word 0x30f28728U, 0x23b2a5bfU, 0x02ba6a03U, 0xed5c8216U +.word 0x8a2b1ccfU, 0xa792b479U, 0xf3f0f207U, 0x4ea1e269U +.word 0x65cdf4daU, 0x06d5be05U, 0xd11f6234U, 0xc48afea6U +.word 0x349d532eU, 0xa2a055f3U, 0x0532e18aU, 0xa475ebf6U +.word 0x0b39ec83U, 0x40aaef60U, 0x5e069f71U, 0xbd51106eU +.word 0x3ef98a21U, 0x963d06ddU, 0xddae053eU, 0x4d46bde6U +.word 0x91b58d54U, 0x71055dc4U, 0x046fd406U, 0x60ff1550U +.word 0x1924fb98U, 0xd697e9bdU, 0x89cc4340U, 0x67779ed9U +.word 0xb0bd42e8U, 0x07888b89U, 0xe7385b19U, 0x79dbeec8U +.word 0xa1470a7cU, 0x7ce90f42U, 0xf8c91e84U, 0x00000000U +.word 0x09838680U, 0x3248ed2bU, 0x1eac7011U, 0x6c4e725aU +.word 0xfdfbff0eU, 0x0f563885U, 0x3d1ed5aeU, 0x3627392dU +.word 0x0a64d90fU, 0x6821a65cU, 0x9bd1545bU, 0x243a2e36U +.word 0x0cb1670aU, 0x930fe757U, 0xb4d296eeU, 0x1b9e919bU +.word 0x804fc5c0U, 0x61a220dcU, 0x5a694b77U, 0x1c161a12U +.word 0xe20aba93U, 0xc0e52aa0U, 0x3c43e022U, 0x121d171bU +.word 0x0e0b0d09U, 0xf2adc78bU, 0x2db9a8b6U, 0x14c8a91eU +.word 0x578519f1U, 0xaf4c0775U, 0xeebbdd99U, 0xa3fd607fU +.word 0xf79f2601U, 0x5cbcf572U, 0x44c53b66U, 0x5b347efbU +.word 0x8b762943U, 0xcbdcc623U, 0xb668fcedU, 0xb863f1e4U +.word 0xd7cadc31U, 0x42108563U, 0x13402297U, 0x842011c6U +.word 0x857d244aU, 0xd2f83dbbU, 0xae1132f9U, 0xc76da129U +.word 0x1d4b2f9eU, 0xdcf330b2U, 0x0dec5286U, 0x77d0e3c1U +.word 0x2b6c16b3U, 0xa999b970U, 0x11fa4894U, 0x472264e9U +.word 0xa8c48cfcU, 0xa01a3ff0U, 0x56d82c7dU, 0x22ef9033U +.word 0x87c74e49U, 0xd9c1d138U, 0x8cfea2caU, 0x98360bd4U +.word 0xa6cf81f5U, 0xa528de7aU, 0xda268eb7U, 0x3fa4bfadU +.word 0x2ce49d3aU, 0x500d9278U, 0x6a9bcc5fU, 0x5462467eU +.word 0xf6c2138dU, 0x90e8b8d8U, 0x2e5ef739U, 0x82f5afc3U +.word 0x9fbe805dU, 0x697c93d0U, 0x6fa92dd5U, 0xcfb31225U +.word 0xc83b99acU, 0x10a77d18U, 0xe86e639cU, 0xdb7bbb3bU +.word 0xcd097826U, 0x6ef41859U, 0xec01b79aU, 0x83a89a4fU +.word 0xe6656e95U, 0xaa7ee6ffU, 0x2108cfbcU, 0xefe6e815U +.word 0xbad99be7U, 0x4ace366fU, 0xead4099fU, 0x29d67cb0U +.word 0x31afb2a4U, 0x2a31233fU, 0xc63094a5U, 0x35c066a2U +.word 0x7437bc4eU, 0xfca6ca82U, 0xe0b0d090U, 0x3315d8a7U +.word 0xf14a9804U, 0x41f7daecU, 0x7f0e50cdU, 0x172ff691U +.word 0x768dd64dU, 0x434db0efU, 0xcc544daaU, 0xe4df0496U +.word 0x9ee3b5d1U, 0x4c1b886aU, 0xc1b81f2cU, 0x467f5165U +.word 0x9d04ea5eU, 0x015d358cU, 0xfa737487U, 0xfb2e410bU +.word 0xb35a1d67U, 0x9252d2dbU, 0xe9335610U, 0x6d1347d6U +.word 0x9a8c61d7U, 0x377a0ca1U, 0x598e14f8U, 0xeb893c13U +.word 0xceee27a9U, 0xb735c961U, 0xe1ede51cU, 0x7a3cb147U +.word 0x9c59dfd2U, 0x553f73f2U, 0x1879ce14U, 0x73bf37c7U +.word 0x53eacdf7U, 0x5f5baafdU, 0xdf146f3dU, 0x7886db44U +.word 0xca81f3afU, 0xb93ec468U, 0x382c3424U, 0xc25f40a3U +.word 0x1672c31dU, 0xbc0c25e2U, 0x288b493cU, 0xff41950dU +.word 0x397101a8U, 0x08deb30cU, 0xd89ce4b4U, 0x6490c156U +.word 0x7b6184cbU, 0xd570b632U, 0x48745c6cU, 0xd04257b8U + +.type AES_Td4,@object +AES_Td4: +.byte 0x52U, 0x09U, 0x6aU, 0xd5U, 0x30U, 0x36U, 0xa5U, 0x38U +.byte 0xbfU, 0x40U, 0xa3U, 0x9eU, 0x81U, 0xf3U, 0xd7U, 0xfbU +.byte 0x7cU, 0xe3U, 0x39U, 0x82U, 0x9bU, 0x2fU, 0xffU, 0x87U +.byte 0x34U, 0x8eU, 0x43U, 0x44U, 0xc4U, 0xdeU, 0xe9U, 0xcbU +.byte 0x54U, 0x7bU, 0x94U, 0x32U, 0xa6U, 0xc2U, 0x23U, 0x3dU +.byte 0xeeU, 0x4cU, 0x95U, 0x0bU, 0x42U, 0xfaU, 0xc3U, 0x4eU +.byte 0x08U, 0x2eU, 0xa1U, 0x66U, 0x28U, 0xd9U, 0x24U, 0xb2U +.byte 0x76U, 0x5bU, 0xa2U, 0x49U, 0x6dU, 0x8bU, 0xd1U, 0x25U +.byte 0x72U, 0xf8U, 0xf6U, 0x64U, 0x86U, 0x68U, 0x98U, 0x16U +.byte 0xd4U, 0xa4U, 0x5cU, 0xccU, 0x5dU, 0x65U, 0xb6U, 0x92U +.byte 0x6cU, 0x70U, 0x48U, 0x50U, 0xfdU, 0xedU, 0xb9U, 0xdaU +.byte 0x5eU, 0x15U, 0x46U, 0x57U, 0xa7U, 0x8dU, 0x9dU, 0x84U +.byte 0x90U, 0xd8U, 0xabU, 0x00U, 0x8cU, 0xbcU, 0xd3U, 0x0aU +.byte 0xf7U, 0xe4U, 0x58U, 0x05U, 0xb8U, 0xb3U, 0x45U, 0x06U +.byte 0xd0U, 0x2cU, 0x1eU, 0x8fU, 0xcaU, 0x3fU, 0x0fU, 0x02U +.byte 0xc1U, 0xafU, 0xbdU, 0x03U, 0x01U, 0x13U, 0x8aU, 0x6bU +.byte 0x3aU, 0x91U, 0x11U, 0x41U, 0x4fU, 0x67U, 0xdcU, 0xeaU +.byte 0x97U, 0xf2U, 0xcfU, 0xceU, 0xf0U, 0xb4U, 0xe6U, 0x73U +.byte 0x96U, 0xacU, 0x74U, 0x22U, 0xe7U, 0xadU, 0x35U, 0x85U +.byte 0xe2U, 0xf9U, 0x37U, 0xe8U, 0x1cU, 0x75U, 0xdfU, 0x6eU +.byte 0x47U, 0xf1U, 0x1aU, 0x71U, 0x1dU, 0x29U, 0xc5U, 0x89U +.byte 0x6fU, 0xb7U, 0x62U, 0x0eU, 0xaaU, 0x18U, 0xbeU, 0x1bU +.byte 0xfcU, 0x56U, 0x3eU, 0x4bU, 0xc6U, 0xd2U, 0x79U, 0x20U +.byte 0x9aU, 0xdbU, 0xc0U, 0xfeU, 0x78U, 0xcdU, 0x5aU, 0xf4U +.byte 0x1fU, 0xddU, 0xa8U, 0x33U, 0x88U, 0x07U, 0xc7U, 0x31U +.byte 0xb1U, 0x12U, 0x10U, 0x59U, 0x27U, 0x80U, 0xecU, 0x5fU +.byte 0x60U, 0x51U, 0x7fU, 0xa9U, 0x19U, 0xb5U, 0x4aU, 0x0dU +.byte 0x2dU, 0xe5U, 0x7aU, 0x9fU, 0x93U, 0xc9U, 0x9cU, 0xefU +.byte 0xa0U, 0xe0U, 0x3bU, 0x4dU, 0xaeU, 0x2aU, 0xf5U, 0xb0U +.byte 0xc8U, 0xebU, 0xbbU, 0x3cU, 0x83U, 0x53U, 0x99U, 0x61U +.byte 0x17U, 0x2bU, 0x04U, 0x7eU, 0xbaU, 0x77U, 0xd6U, 0x26U +.byte 0xe1U, 0x69U, 0x14U, 0x63U, 0x55U, 0x21U, 0x0cU, 0x7dU + +.type AES_rcon,@object +AES_rcon: +.word 0x00000001U, 0x00000002U, 0x00000004U, 0x00000008U +.word 0x00000010U, 0x00000020U, 0x00000040U, 0x00000080U +.word 0x0000001BU, 0x00000036U diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/buildinf.h new file mode 100644 index 00000000000000..132867b95c4764 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/buildinf.h @@ -0,0 +1,35 @@ +/* + * WARNING: do not edit! + * Generated by util/mkbuildinf.pl + * + * Copyright 2014-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#define PLATFORM "platform: linux64-riscv64" +#define DATE "built on: Tue Jun 30 04:15:54 2026 UTC" + +/* + * Generate compiler_flags as an array of individual characters. This is a + * workaround for the situation where CFLAGS gets too long for a C90 string + * literal + */ +static const char compiler_flags[] = { + 'c','o','m','p','i','l','e','r',':',' ','g','c','c',' ','-','f', + 'P','I','C',' ','-','p','t','h','r','e','a','d',' ','-','W','a', + ',','-','-','n','o','e','x','e','c','s','t','a','c','k',' ','-', + 'W','a','l','l',' ','-','O','3',' ','-','D','O','P','E','N','S', + 'S','L','_','U','S','E','_','N','O','D','E','L','E','T','E',' ', + '-','D','O','P','E','N','S','S','L','_','P','I','C',' ','-','D', + 'O','P','E','N','S','S','L','_','B','U','I','L','D','I','N','G', + '_','O','P','E','N','S','S','L',' ','-','D','B','R','O','T','L', + 'I',' ','-','D','Z','L','I','B',' ','-','D','Z','S','T','D',' ', + '-','D','N','D','E','B','U','G',' ','-','I','.','.','/','.','.', + '/','b','r','o','t','l','i','/','c','/','i','n','c','l','u','d', + 'e',' ','-','I','.','.','/','.','.','/','z','l','i','b',' ','-', + 'I','.','.','/','.','.','/','z','s','t','d','/','l','i','b','\0' +}; diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/chacha/chacha-riscv64-v-zbb-zvkb.s b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/chacha/chacha-riscv64-v-zbb-zvkb.s new file mode 100644 index 00000000000000..6fa723a7934c8f --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/chacha/chacha-riscv64-v-zbb-zvkb.s @@ -0,0 +1,461 @@ +.text +.p2align 3 +.globl ChaCha20_ctr32_v_zbb_zvkb +.type ChaCha20_ctr32_v_zbb_zvkb,@function +ChaCha20_ctr32_v_zbb_zvkb: + addi sp, sp, -96 + sd s0, 0(sp) + sd s1, 8(sp) + sd s2, 16(sp) + sd s3, 24(sp) + sd s4, 32(sp) + sd s5, 40(sp) + sd s6, 48(sp) + sd s7, 56(sp) + sd s8, 64(sp) + sd s9, 72(sp) + sd s10, 80(sp) + sd s11, 88(sp) + addi sp, sp, -64 + + lw t2, 0(a4) + +.Lblock_loop: + # We will use the scalar ALU for 1 chacha block. + srli t3, a2, 6 + .word 219050839 + slli t4, t1, 6 + bltu t4, a2, 1f + # Since there is no more chacha block existed, we need to split 1 block + # from vector ALU. + addi t4, t1, -1 + .word 219083607 +1: + + #### chacha block data + # init chacha const states into v0~v3 + # "expa" little endian + li a5, 0x61707865 + .word 1577566295 + # "nd 3" little endian + li a6, 0x3320646e + .word 1577599191 + # "2-by" little endian + li a7, 0x79622d32 + .word 1577632087 + # "te k" little endian + li s0, 0x6b206574 + lw s1, 0(a3) + .word 1577337303 + + # init chacha key states into v4~v11 + lw s2, 4(a3) + .word 1577370199 + lw s3, 8(a3) + .word 1577665239 + lw s4, 12(a3) + .word 1577698135 + lw s5, 16(a3) + .word 1577731031 + lw s6, 20(a3) + .word 1577763927 + lw s7, 24(a3) + .word 1577796823 + lw s8, 28(a3) + .word 1577829719 + .word 1577862615 + + # init chacha key states into v12~v13 + lw s10, 4(a4) + .word 1376298583 + lw s11, 8(a4) + .word 46384727 + lw t0, 12(a4) + .word 1577928407 + add s9, t2, t1 + + # init chacha nonce states into v14~v15 + .word 1577961303 + .word 1577240535 + + li t3, 64 + # load the top-half of input data into v16~v23 + .word 3955615751 + + # till now in block_loop, we used: + # - v0~v15 for chacha states. + # - v16~v23 for top-half of input data. + # - v24~v31 haven't been used yet. + + # 20 round groups + li t3, 10 +.Lround_loop: + # we can use v24~v31 as temporary registers in round_loop. + addi t3, t3, -1 + # a += b; d ^= a; d <<<= 16; + .word 33685591 + add a5, a5, s1 + .word 34767063 + add a6, a6, s2 + .word 35848535 + add a7, a7, s3 + .word 36930007 + add s0, s0, s4 + .word 784336471 + xor s9, s9, a5 + .word 785417943 + xor s10, s10, a6 + .word 786499415 + xor s11, s11, a7 + .word 787580887 + xor t0, t0, s0 + .word 1388852823 + .word 1628232859 + .word 1389901527 + .word 1628265755 + .word 1390950231 + .word 1628298651 + .word 1391998935 + .word 1627574939 + + # c += d; b ^= c; b <<<= 12; + .word 42337367 + add s5, s5, s9 + .word 43418839 + add s6, s6, s10 + .word 44500311 + add s7, s7, s11 + .word 45581783 + add s8, s8, t0 + .word 776208983 + xor s1, s1, s5 + .word 777290455 + xor s2, s2, s6 + .word 778371927 + xor s3, s3, s7 + .word 779453399 + xor s4, s4, s8 + .word 1380594263 + .word 1631900827 + .word 1381642967 + .word 1632196891 + .word 1382691671 + .word 1632229787 + .word 1383740375 + .word 1632262683 + + # a += b; d ^= a; d <<<= 8; + .word 33685591 + add a5, a5, s1 + .word 34767063 + add a6, a6, s2 + .word 35848535 + add a7, a7, s3 + .word 36930007 + add s0, s0, s4 + .word 784336471 + xor s9, s9, a5 + .word 785417943 + xor s10, s10, a6 + .word 786499415 + xor s11, s11, a7 + .word 787580887 + xor t0, t0, s0 + .word 1389114967 + .word 1636621467 + .word 1390163671 + .word 1636654363 + .word 1391212375 + .word 1636687259 + .word 1392261079 + .word 1635963547 + + # c += d; b ^= c; b <<<= 7; + .word 42337367 + add s5, s5, s9 + .word 43418839 + add s6, s6, s10 + .word 44500311 + add s7, s7, s11 + .word 45581783 + add s8, s8, t0 + .word 776208983 + xor s1, s1, s5 + .word 777290455 + xor s2, s2, s6 + .word 778371927 + xor s3, s3, s7 + .word 779453399 + xor s4, s4, s8 + .word 1380758103 + .word 1637143707 + .word 1381806807 + .word 1637439771 + .word 1382855511 + .word 1637472667 + .word 1383904215 + .word 1637505563 + + + # a += b; d ^= a; d <<<= 16; + .word 36831703 + add s0, s0, s1 + .word 33718359 + add a5, a5, s2 + .word 34799831 + add a6, a6, s3 + .word 35881303 + add a7, a7, s4 + .word 786532183 + xor s11, s11, s0 + .word 787482583 + xor t0, t0, a5 + .word 784369239 + xor s9, s9, a6 + .word 785450711 + xor s10, s10, a7 + .word 1390950231 + .word 1628298651 + .word 1391998935 + .word 1627574939 + .word 1388852823 + .word 1628232859 + .word 1389901527 + .word 1628265755 + + # c += d; b ^= c; b <<<= 12; + .word 43451607 + add s6, s6, s11 + .word 44533079 + add s7, s7, t0 + .word 45483479 + add s8, s8, s9 + .word 42370135 + add s5, s5, s10 + .word 776241751 + xor s1, s1, s6 + .word 777323223 + xor s2, s2, s7 + .word 778404695 + xor s3, s3, s8 + .word 779355095 + xor s4, s4, s5 + .word 1380594263 + .word 1631900827 + .word 1381642967 + .word 1632196891 + .word 1382691671 + .word 1632229787 + .word 1383740375 + .word 1632262683 + + # a += b; d ^= a; d <<<= 8; + .word 36831703 + add s0, s0, s1 + .word 33718359 + add a5, a5, s2 + .word 34799831 + add a6, a6, s3 + .word 35881303 + add a7, a7, s4 + .word 786532183 + xor s11, s11, s0 + .word 787482583 + xor t0, t0, a5 + .word 784369239 + xor s9, s9, a6 + .word 785450711 + xor s10, s10, a7 + .word 1391212375 + .word 1636687259 + .word 1392261079 + .word 1635963547 + .word 1389114967 + .word 1636621467 + .word 1390163671 + .word 1636654363 + + # c += d; b ^= c; b <<<= 7; + .word 43451607 + add s6, s6, s11 + .word 44533079 + add s7, s7, t0 + .word 45483479 + add s8, s8, s9 + .word 42370135 + add s5, s5, s10 + .word 776241751 + xor s1, s1, s6 + .word 777323223 + xor s2, s2, s7 + .word 778404695 + xor s3, s3, s8 + .word 779355095 + xor s4, s4, s5 + .word 1380758103 + .word 1637143707 + .word 1381806807 + .word 1637439771 + .word 1382855511 + .word 1637472667 + .word 1383904215 + .word 1637505563 + + + bnez t3, .Lround_loop + + li t3, 64 + # load the bottom-half of input data into v24~v31 + addi t4, a1, 32 + .word 3956206599 + + # now, there are no free vector registers until the round_loop exits. + + # add chacha top-half initial block states + # "expa" little endian + li t3, 0x61707865 + .word 34488407 + add a5, a5, t3 + # "nd 3" little endian + li t4, 0x3320646e + .word 35569879 + add a6, a6, t4 + lw t3, 0(a3) + # "2-by" little endian + li t5, 0x79622d32 + .word 36651351 + add a7, a7, t5 + lw t4, 4(a3) + # "te k" little endian + li t6, 0x6b206574 + .word 37732823 + add s0, s0, t6 + lw t5, 8(a3) + .word 38683223 + add s1, s1, t3 + lw t6, 12(a3) + .word 39764695 + add s2, s2, t4 + .word 40846167 + add s3, s3, t5 + .word 41927639 + add s4, s4, t6 + + # xor with the top-half input + .word 788531287 + sw a5, 0(sp) + sw a6, 4(sp) + .word 789612759 + sw a7, 8(sp) + sw s0, 12(sp) + .word 790694231 + sw s1, 16(sp) + sw s2, 20(sp) + .word 791775703 + sw s3, 24(sp) + sw s4, 28(sp) + .word 792857175 + lw t3, 16(a3) + .word 793938647 + lw t4, 20(a3) + .word 795020119 + lw t5, 24(a3) + .word 796101591 + + # save the top-half of output from v16~v23 + li t6, 64 + .word 3958728743 + + # add chacha bottom-half initial block states + .word 42878039 + add s5, s5, t3 + lw t6, 28(a3) + .word 43959511 + add s6, s6, t4 + lw t3, 4(a4) + .word 45040983 + add s7, s7, t5 + lw t4, 8(a4) + .word 46122455 + add s8, s8, t6 + lw t5, 12(a4) + .word 1376297047 + add s9, s9, t2 + .word 46384727 + add s9, s9, t1 + .word 48121559 + add s10, s10, t3 + .word 49203031 + add s11, s11, t4 + .word 50284503 + add t0, t0, t5 + .word 46138967 + # xor with the bottom-half input + .word 797183063 + sw s5, 32(sp) + .word 798264535 + sw s6, 36(sp) + .word 799346007 + sw s7, 40(sp) + .word 800427479 + sw s8, 44(sp) + .word 802590423 + sw s9, 48(sp) + .word 801508951 + sw s10, 52(sp) + .word 803671895 + sw s11, 56(sp) + .word 804753367 + sw t0, 60(sp) + + # save the bottom-half of output from v24~v31 + li t3, 64 + addi t4, a0, 32 + .word 3956206631 + + # the computed vector parts: `64 * VL` + slli t3, t1, 6 + + add a1, a1, t3 + add a0, a0, t3 + sub a2, a2, t3 + add t2, t2, t1 + + # process the scalar data block + addi t2, t2, 1 + li t3, 64 + .word 197549747 + sub a2, a2, t4 + mv t5, sp +.Lscalar_data_loop: + .word 205452119 + # from this on, vector registers are grouped with lmul = 8 + .word 33915911 + .word 34539527 + .word 780665943 + .word 33883175 + add a1, a1, t1 + add a0, a0, t1 + add t5, t5, t1 + sub t4, t4, t1 + bnez t4, .Lscalar_data_loop + + bnez a2, .Lblock_loop + + addi sp, sp, 64 + ld s0, 0(sp) + ld s1, 8(sp) + ld s2, 16(sp) + ld s3, 24(sp) + ld s4, 32(sp) + ld s5, 40(sp) + ld s6, 48(sp) + ld s7, 56(sp) + ld s8, 64(sp) + ld s9, 72(sp) + ld s10, 80(sp) + ld s11, 88(sp) + addi sp, sp, 96 + + ret +.size ChaCha20_ctr32_v_zbb_zvkb,.-ChaCha20_ctr32_v_zbb_zvkb diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/chacha/chacha-riscv64-v-zbb.s b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/chacha/chacha-riscv64-v-zbb.s new file mode 100644 index 00000000000000..e543c8e9ce10b9 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/chacha/chacha-riscv64-v-zbb.s @@ -0,0 +1,525 @@ +.text +.p2align 3 +.globl ChaCha20_ctr32_v_zbb +.type ChaCha20_ctr32_v_zbb,@function +ChaCha20_ctr32_v_zbb: + addi sp, sp, -96 + sd s0, 0(sp) + sd s1, 8(sp) + sd s2, 16(sp) + sd s3, 24(sp) + sd s4, 32(sp) + sd s5, 40(sp) + sd s6, 48(sp) + sd s7, 56(sp) + sd s8, 64(sp) + sd s9, 72(sp) + sd s10, 80(sp) + sd s11, 88(sp) + addi sp, sp, -64 + + lw t2, 0(a4) + +.Lblock_loop: + # We will use the scalar ALU for 1 chacha block. + srli t3, a2, 6 + .word 219050839 + slli t4, t1, 6 + bltu t4, a2, 1f + # Since there is no more chacha block existed, we need to split 1 block + # from vector ALU. + addi t4, t1, -1 + .word 219083607 +1: + + #### chacha block data + # init chacha const states into v0~v3 + # "expa" little endian + li a5, 0x61707865 + .word 1577566295 + # "nd 3" little endian + li a6, 0x3320646e + .word 1577599191 + # "2-by" little endian + li a7, 0x79622d32 + .word 1577632087 + # "te k" little endian + li s0, 0x6b206574 + lw s1, 0(a3) + .word 1577337303 + + # init chacha key states into v4~v11 + lw s2, 4(a3) + .word 1577370199 + lw s3, 8(a3) + .word 1577665239 + lw s4, 12(a3) + .word 1577698135 + lw s5, 16(a3) + .word 1577731031 + lw s6, 20(a3) + .word 1577763927 + lw s7, 24(a3) + .word 1577796823 + lw s8, 28(a3) + .word 1577829719 + .word 1577862615 + + # init chacha key states into v12~v13 + lw s10, 4(a4) + .word 1376298583 + lw s11, 8(a4) + .word 46384727 + lw t0, 12(a4) + .word 1577928407 + add s9, t2, t1 + + # init chacha nonce states into v14~v15 + .word 1577961303 + .word 1577240535 + + li t3, 64 + # load the top-half of input data into v16~v23 + .word 3955615751 + + # till now in block_loop, we used: + # - v0~v15 for chacha states. + # - v16~v23 for top-half of input data. + # - v24~v31 haven't been used yet. + + # 20 round groups + li t3, 10 +.Lround_loop: + # we can use v24~v31 as temporary registers in round_loop. + addi t3, t3, -1 + # a += b; d ^= a; d <<<= 16; + .word 33685591 + add a5, a5, s1 + .word 34767063 + add a6, a6, s2 + .word 35848535 + add a7, a7, s3 + .word 36930007 + add s0, s0, s4 + .word 784336471 + xor s9, s9, a5 + .word 785417943 + xor s10, s10, a6 + .word 786499415 + xor s11, s11, a7 + .word 787580887 + xor t0, t0, s0 + .word 2529705047 + .word 2530753751 + .word 2531802455 + .word 2532851159 + .word 2731030103 + .word 2732078807 + .word 2733127511 + .word 2734176215 + .word 718014039 + .word 1628232859 + .word 719095511 + .word 1628265755 + .word 720176983 + .word 1628298651 + .word 721258455 + .word 1627574939 + + # c += d; b ^= c; b <<<= 12; + .word 42337367 + add s5, s5, s9 + .word 43418839 + add s6, s6, s10 + .word 44500311 + add s7, s7, s11 + .word 45581783 + add s8, s8, t0 + .word 776208983 + xor s1, s1, s5 + .word 777290455 + xor s2, s2, s6 + .word 778371927 + xor s3, s3, s7 + .word 779453399 + xor s4, s4, s8 + .word 2521185367 + .word 2522234071 + .word 2523282775 + .word 2524331479 + .word 2722771543 + .word 2723820247 + .word 2724868951 + .word 2725917655 + .word 709624407 + .word 1631900827 + .word 710705879 + .word 1632196891 + .word 711787351 + .word 1632229787 + .word 712868823 + .word 1632262683 + + # a += b; d ^= a; d <<<= 8; + .word 33685591 + add a5, a5, s1 + .word 34767063 + add a6, a6, s2 + .word 35848535 + add a7, a7, s3 + .word 36930007 + add s0, s0, s4 + .word 784336471 + xor s9, s9, a5 + .word 785417943 + xor s10, s10, a6 + .word 786499415 + xor s11, s11, a7 + .word 787580887 + xor t0, t0, s0 + .word 2529442903 + .word 2530491607 + .word 2531540311 + .word 2532589015 + .word 2731292247 + .word 2732340951 + .word 2733389655 + .word 2734438359 + .word 718014039 + .word 1636621467 + .word 719095511 + .word 1636654363 + .word 720176983 + .word 1636687259 + .word 721258455 + .word 1635963547 + + # c += d; b ^= c; b <<<= 7; + .word 42337367 + add s5, s5, s9 + .word 43418839 + add s6, s6, s10 + .word 44500311 + add s7, s7, s11 + .word 45581783 + add s8, s8, t0 + .word 776208983 + xor s1, s1, s5 + .word 777290455 + xor s2, s2, s6 + .word 778371927 + xor s3, s3, s7 + .word 779453399 + xor s4, s4, s8 + .word 2521021527 + .word 2522070231 + .word 2523118935 + .word 2524167639 + .word 2722935383 + .word 2723984087 + .word 2725032791 + .word 2726081495 + .word 709624407 + .word 1637143707 + .word 710705879 + .word 1637439771 + .word 711787351 + .word 1637472667 + .word 712868823 + .word 1637505563 + + + # a += b; d ^= a; d <<<= 16; + .word 36831703 + add s0, s0, s1 + .word 33718359 + add a5, a5, s2 + .word 34799831 + add a6, a6, s3 + .word 35881303 + add a7, a7, s4 + .word 786532183 + xor s11, s11, s0 + .word 787482583 + xor t0, t0, a5 + .word 784369239 + xor s9, s9, a6 + .word 785450711 + xor s10, s10, a7 + .word 2531802199 + .word 2532850903 + .word 2529705303 + .word 2530754007 + .word 2733127511 + .word 2734176215 + .word 2731030103 + .word 2732078807 + .word 720111447 + .word 1628298651 + .word 721192919 + .word 1627574939 + .word 718079575 + .word 1628232859 + .word 719161047 + .word 1628265755 + + # c += d; b ^= c; b <<<= 12; + .word 43451607 + add s6, s6, s11 + .word 44533079 + add s7, s7, t0 + .word 45483479 + add s8, s8, s9 + .word 42370135 + add s5, s5, s10 + .word 776241751 + xor s1, s1, s6 + .word 777323223 + xor s2, s2, s7 + .word 778404695 + xor s3, s3, s8 + .word 779355095 + xor s4, s4, s5 + .word 2521185367 + .word 2522234071 + .word 2523282775 + .word 2524331479 + .word 2722771543 + .word 2723820247 + .word 2724868951 + .word 2725917655 + .word 709624407 + .word 1631900827 + .word 710705879 + .word 1632196891 + .word 711787351 + .word 1632229787 + .word 712868823 + .word 1632262683 + + # a += b; d ^= a; d <<<= 8; + .word 36831703 + add s0, s0, s1 + .word 33718359 + add a5, a5, s2 + .word 34799831 + add a6, a6, s3 + .word 35881303 + add a7, a7, s4 + .word 786532183 + xor s11, s11, s0 + .word 787482583 + xor t0, t0, a5 + .word 784369239 + xor s9, s9, a6 + .word 785450711 + xor s10, s10, a7 + .word 2531540055 + .word 2532588759 + .word 2529443159 + .word 2530491863 + .word 2733389655 + .word 2734438359 + .word 2731292247 + .word 2732340951 + .word 720111447 + .word 1636687259 + .word 721192919 + .word 1635963547 + .word 718079575 + .word 1636621467 + .word 719161047 + .word 1636654363 + + # c += d; b ^= c; b <<<= 7; + .word 43451607 + add s6, s6, s11 + .word 44533079 + add s7, s7, t0 + .word 45483479 + add s8, s8, s9 + .word 42370135 + add s5, s5, s10 + .word 776241751 + xor s1, s1, s6 + .word 777323223 + xor s2, s2, s7 + .word 778404695 + xor s3, s3, s8 + .word 779355095 + xor s4, s4, s5 + .word 2521021527 + .word 2522070231 + .word 2523118935 + .word 2524167639 + .word 2722935383 + .word 2723984087 + .word 2725032791 + .word 2726081495 + .word 709624407 + .word 1637143707 + .word 710705879 + .word 1637439771 + .word 711787351 + .word 1637472667 + .word 712868823 + .word 1637505563 + + + bnez t3, .Lround_loop + + li t3, 64 + # load the bottom-half of input data into v24~v31 + addi t4, a1, 32 + .word 3956206599 + + # now, there are no free vector registers until the round_loop exits. + + # add chacha top-half initial block states + # "expa" little endian + li t3, 0x61707865 + .word 34488407 + add a5, a5, t3 + # "nd 3" little endian + li t4, 0x3320646e + .word 35569879 + add a6, a6, t4 + lw t3, 0(a3) + # "2-by" little endian + li t5, 0x79622d32 + .word 36651351 + add a7, a7, t5 + lw t4, 4(a3) + # "te k" little endian + li t6, 0x6b206574 + .word 37732823 + add s0, s0, t6 + lw t5, 8(a3) + .word 38683223 + add s1, s1, t3 + lw t6, 12(a3) + .word 39764695 + add s2, s2, t4 + .word 40846167 + add s3, s3, t5 + .word 41927639 + add s4, s4, t6 + + # xor with the top-half input + .word 788531287 + sw a5, 0(sp) + sw a6, 4(sp) + .word 789612759 + sw a7, 8(sp) + sw s0, 12(sp) + .word 790694231 + sw s1, 16(sp) + sw s2, 20(sp) + .word 791775703 + sw s3, 24(sp) + sw s4, 28(sp) + .word 792857175 + lw t3, 16(a3) + .word 793938647 + lw t4, 20(a3) + .word 795020119 + lw t5, 24(a3) + .word 796101591 + + # save the top-half of output from v16~v23 + li t6, 64 + .word 3958728743 + + # add chacha bottom-half initial block states + .word 42878039 + add s5, s5, t3 + lw t6, 28(a3) + .word 43959511 + add s6, s6, t4 + lw t3, 4(a4) + .word 45040983 + add s7, s7, t5 + lw t4, 8(a4) + .word 46122455 + add s8, s8, t6 + lw t5, 12(a4) + .word 1376297047 + add s9, s9, t2 + .word 46384727 + add s9, s9, t1 + .word 48121559 + add s10, s10, t3 + .word 49203031 + add s11, s11, t4 + .word 50284503 + add t0, t0, t5 + .word 46138967 + # xor with the bottom-half input + .word 797183063 + sw s5, 32(sp) + .word 798264535 + sw s6, 36(sp) + .word 799346007 + sw s7, 40(sp) + .word 800427479 + sw s8, 44(sp) + .word 802590423 + sw s9, 48(sp) + .word 801508951 + sw s10, 52(sp) + .word 803671895 + sw s11, 56(sp) + .word 804753367 + sw t0, 60(sp) + + # save the bottom-half of output from v24~v31 + li t3, 64 + addi t4, a0, 32 + .word 3956206631 + + # the computed vector parts: `64 * VL` + slli t3, t1, 6 + + add a1, a1, t3 + add a0, a0, t3 + sub a2, a2, t3 + add t2, t2, t1 + + # process the scalar data block + addi t2, t2, 1 + li t3, 64 + .word 197549747 + sub a2, a2, t4 + mv t5, sp +.Lscalar_data_loop: + .word 205452119 + # from this on, vector registers are grouped with lmul = 8 + .word 33915911 + .word 34539527 + .word 780665943 + .word 33883175 + add a1, a1, t1 + add a0, a0, t1 + add t5, t5, t1 + sub t4, t4, t1 + bnez t4, .Lscalar_data_loop + + bnez a2, .Lblock_loop + + addi sp, sp, 64 + ld s0, 0(sp) + ld s1, 8(sp) + ld s2, 16(sp) + ld s3, 24(sp) + ld s4, 32(sp) + ld s5, 40(sp) + ld s6, 48(sp) + ld s7, 56(sp) + ld s8, 64(sp) + ld s9, 72(sp) + ld s10, 80(sp) + ld s11, 88(sp) + addi sp, sp, 96 + + ret +.size ChaCha20_ctr32_v_zbb,.-ChaCha20_ctr32_v_zbb diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s new file mode 100644 index 00000000000000..6c1c5e1c7e28b2 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s @@ -0,0 +1,1540 @@ +.text +.p2align 3 +.globl rv64i_zvkb_zvkg_zvkned_aes_gcm_encrypt +.type rv64i_zvkb_zvkg_zvkned_aes_gcm_encrypt,@function +rv64i_zvkb_zvkg_zvkned_aes_gcm_encrypt: + srli t0, a2, 4 + beqz t0, .Lenc_end + slli t5, t0, 2 + + mv a7, t5 + + # Compute the AES-GCM full-block e32 length for `LMUL=4`. We will handle + # the multiple AES-GCM blocks at the same time within `LMUL=4` register. + # The AES-GCM's SEW is e32 and EGW is 128 bits. + # FULL_BLOCK_LEN32 = (VLEN*LMUL)/(EGW) * (EGW/SEW) = (VLEN*4)/(32*4) * 4 + # = (VLEN*4)/32 + # We could get the block_num using the VL value of `vsetvli with e32, m4`. + .word 220231767 + # If `LEN32 % FULL_BLOCK_LEN32` is not equal to zero, we could fill the + # zero padding data to make sure we could always handle FULL_BLOCK_LEN32 + # blocks for all iterations. + + ## Prepare the H^n multiplier in v16 for GCM multiplier. The `n` is the gcm + ## block number in a LMUL=4 register group. + ## n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4)) + ## = (VLEN/32) + ## We could use vsetvli with `e32, m1` to compute the `n` number. + .word 218133207 + + # The H is at `gcm128_context.Htable[0]`(addr(Xi)+16*2). + addi t1, a5, 32 + .word 3439489111 + .word 33779591 + + # Compute the H^n + li t1, 1 +1: + .word 2750984183 + slli t1, t1, 1 + bltu t1, t0, 1b + + .word 220754007 + .word 1577072727 + .word 2817763447 + + #### Load plaintext into v24 and handle padding. We also load the init tag + #### data into v20 and prepare the AES ctr input data into v12 and v28. + .word 1577073239 + + ## Prepare the AES ctr input data into v12. + # Setup ctr input mask. + # ctr mask : [000100010001....] + # Note: The actual vl should be `FULL_BLOCK_LEN32/4 * 2`, but we just use + # `FULL_BLOCK_LEN32` here. + .word 201879639 + li t0, 0b10001000 + .word 1577238615 + # Load IV. + .word 3439489111 + .word 34041735 + # Convert the big-endian counter into little-endian. + .word 3305271383 + .word 1240772567 + # Splat the `single block of IV` to v12 + .word 220754007 + .word 1577072215 + .word 2817762935 + # Prepare the ctr counter into v8 + # v8: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...] + .word 1342710871 + # Merge IV and ctr counter into v12. + # v12:[x, x, x, count+0, x, x, x, count+1, ...] + .word 86536279 + .word 12846679 + + li t4, 0 + # Get the SEW32 size in the first round. + # If we have the non-zero value for `LEN32&(FULL_BLOCK_LEN32-1)`, then + # we will have the leading padding zero. + addi t0, a6, -1 + and t0, t0, t5 + beqz t0, 1f + + ## with padding + sub t5, t5, t0 + sub t4, a6, t0 + # padding block size + srli t1, t4, 2 + # padding byte size + slli t2, t4, 2 + + # Adjust the ctr counter to make the counter start from `counter+0` for the + # first non-padding block. + .word 86536279 + .word 147015255 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + .word 1237626455 + + # Prepare the mask for input loading in the first round. We use + # `VL=FULL_BLOCK_LEN32` with the mask in the first round. + # Adjust input ptr. + sub a0, a0, t2 + # Adjust output ptr. + sub a1, a1, t2 + .word 211316823 + .word 1376297303 + # We don't use the pseudo instruction `vmsgeu` here. Use `vmsgtu` instead. + # The original code is: + # vmsgeu.vx v0, v2, t4 + addi t0, t4, -1 + .word 2049097815 + .word 220754007 + .word 1577073751 + # Load the input for length FULL_BLOCK_LEN32 with mask. + .word 86536279 + .word 355335 + + # Load the init `Xi` data to v20 with preceding zero padding. + # Adjust Xi ptr. + sub t0, a5, t2 + # Load for length `zero-padding-e32-length + 4`. + addi t1, t4, 4 + .word 19099735 + .word 190983 + j 2f + +1: + ## without padding + sub t5, t5, a6 + + .word 220754007 + .word 33909767 + + # Load the init Xi data to v20. + .word 3372380247 + .word 34073095 + + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 86536279 + .word 1577455191 + .word 1237626455 +2: + + + # Load number of rounds + lwu t0, 240(a3) + li t1, 14 + li t2, 12 + li t3, 10 + + beq t0, t1, aes_gcm_enc_blocks_256 + beq t0, t2, aes_gcm_enc_blocks_192 + beq t0, t3, aes_gcm_enc_blocks_128 + +.Lenc_end: + li a0, 0 + ret + +.size rv64i_zvkb_zvkg_zvkned_aes_gcm_encrypt,.-rv64i_zvkb_zvkg_zvkned_aes_gcm_encrypt +.p2align 3 +aes_gcm_enc_blocks_128: + srli t6, a6, 2 + slli t0, a6, 2 + + # Load all 11 aes round keys to v1-v11 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + # We already have the ciphertext/plaintext and ctr data for the first round. + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr result. + .word 801902167 + + bnez t4, 1f + + ## without padding + # Store ciphertext/plaintext + .word 33943079 + j 2f + + ## with padding +1: + # Store ciphertext/plaintext using mask + .word 388647 + + # Fill zero for the padding blocks + .word 154071127 + .word 1577074263 + + # We have used mask register for `INPUT_PADDING_MASK` before. We need to + # setup the ctr mask back. + # ctr mask : [000100010001....] + .word 201879639 + li t1, 0b10001000 + .word 1577271383 +2: + + + + add a0, a0, t0 + add a1, a1, t0 + + + .word 220754007 + +.Lenc_blocks_128: + # Compute the partial tags. + # The partial tags will multiply with [H^n, H^n, ..., H^n] + # [tag0, tag1, ...] = + # ([tag0, tag1, ...] + [ciphertext0, ciphertext1, ...] * [H^n, H^n, ..., H^n] + # We will skip the [H^n, H^n, ..., H^n] multiplication for the last round. + beqz t5, .Lenc_blocks_128_end + .word 3004050039 + + .word 86536279 + # Increase ctr in v12. + .word 13616727 + sub t5, t5, a6 + # Load plaintext into v24 + .word 220229719 + .word 33909767 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + add a0, a0, t0 + .word 86011991 + .word 1237626455 + + + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr ciphertext result. + .word 801902167 + + # Store ciphertext + .word 33943079 + add a1, a1, t0 + + j .Lenc_blocks_128 +.Lenc_blocks_128_end: + + # Add ciphertext into partial tag + .word 793643607 + + .word 3441586263 + # Update current ctr value to v12 + .word 13616727 + # Convert ctr to big-endian counter. + .word 1220847191 + .word 484903 + + + # The H is at `gcm128_context.Htable[0]` (addr(Xi)+16*2). + # Load H to v1 + addi t1, a5, 32 + .word 3439489111 + .word 33775751 + # Multiply H for each partial tag and XOR them together. + # Handle 1st partial tag + .word 1577713751 + .word 2719522935 + # Handle 2nd to N-th partial tags + li t1, 4 +1: + .word 3441586263 + .word 1061372503 + .word 3439489111 + .word 2987532407 + addi t1, t1, 4 + blt t1, a6, 1b + + + # Save the final tag + .word 34070567 + + # return the processed size. + slli a0, a7, 2 + ret +.size aes_gcm_enc_blocks_128,.-aes_gcm_enc_blocks_128 +.p2align 3 +aes_gcm_enc_blocks_192: + srli t6, a6, 2 + slli t0, a6, 2 + + # We run out of 32 vector registers, so we just preserve some round keys + # and load the remaining round keys inside the aes body. + # We keep the round keys for: + # 1, 2, 3, 5, 6, 7, 9, 10, 11 and 12th keys. + # The following keys will be loaded in the aes body: + # 4, 8 and 13th keys. + .word 3439489111 + # key 1 + .word 34005127 + # key 2 + addi t1, a3, 16 + .word 33775879 + # key 3 + addi t1, a3, 32 + .word 33776007 + # key 5 + addi t1, a3, 64 + .word 33776135 + # key 6 + addi t1, a3, 80 + .word 33776263 + # key 7 + addi t1, a3, 96 + .word 33776391 + # key 9 + addi t1, a3, 128 + .word 33776519 + # key 10 + addi t1, a3, 144 + .word 33776647 + # key 11 + addi t1, a3, 160 + .word 33776775 + # key 12 + addi t1, a3, 176 + .word 33776903 + + # We already have the ciphertext/plaintext and ctr data for the first round. + # Load key 4 + .word 3439489111 + addi t1, a3, 48 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2796629623 + # Load key 8 + .word 3439489111 + addi t1, a3, 112 + .word 33777031 + .word 220754007 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 13 + .word 3439489111 + addi t1, a3, 192 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr result. + .word 801902167 + + bnez t4, 1f + + ## without padding + # Store ciphertext/plaintext + .word 33943079 + j 2f + + ## with padding +1: + # Store ciphertext/plaintext using mask + .word 388647 + + # Fill zero for the padding blocks + .word 154071127 + .word 1577074263 + + # We have used mask register for `INPUT_PADDING_MASK` before. We need to + # setup the ctr mask back. + # ctr mask : [000100010001....] + .word 201879639 + li t1, 0b10001000 + .word 1577271383 +2: + + + + add a0, a0, t0 + add a1, a1, t0 + + + .word 220754007 + +.Lenc_blocks_192: + # Compute the partial tags. + # The partial tags will multiply with [H^n, H^n, ..., H^n] + # [tag0, tag1, ...] = + # ([tag0, tag1, ...] + [ciphertext0, ciphertext1, ...] * [H^n, H^n, ..., H^n] + # We will skip the [H^n, H^n, ..., H^n] multiplication for the last round. + beqz t5, .Lenc_blocks_192_end + .word 3004050039 + + .word 86536279 + # Increase ctr in v12. + .word 13616727 + sub t5, t5, a6 + # Load plaintext into v24 + .word 220229719 + .word 33909767 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + add a0, a0, t0 + .word 86011991 + .word 1237626455 + + + # Load key 4 + .word 3439489111 + addi t1, a3, 48 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2796629623 + # Load key 8 + .word 3439489111 + addi t1, a3, 112 + .word 33777031 + .word 220754007 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 13 + .word 3439489111 + addi t1, a3, 192 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr ciphertext result. + .word 801902167 + + # Store ciphertext + .word 33943079 + add a1, a1, t0 + + j .Lenc_blocks_192 +.Lenc_blocks_192_end: + + # Add ciphertext into partial tag + .word 793643607 + + .word 3441586263 + # Update current ctr value to v12 + .word 13616727 + # Convert ctr to big-endian counter. + .word 1220847191 + .word 484903 + + + # The H is at `gcm128_context.Htable[0]` (addr(Xi)+16*2). + # Load H to v1 + addi t1, a5, 32 + .word 3439489111 + .word 33775751 + # Multiply H for each partial tag and XOR them together. + # Handle 1st partial tag + .word 1577713751 + .word 2719522935 + # Handle 2nd to N-th partial tags + li t1, 4 +1: + .word 3441586263 + .word 1061372503 + .word 3439489111 + .word 2987532407 + addi t1, t1, 4 + blt t1, a6, 1b + + + # Save the final tag + .word 34070567 + + # return the processed size. + slli a0, a7, 2 + ret +.size aes_gcm_enc_blocks_192,.-aes_gcm_enc_blocks_192 +.p2align 3 +aes_gcm_enc_blocks_256: + srli t6, a6, 2 + slli t0, a6, 2 + + # We run out of 32 vector registers, so we just preserve some round keys + # and load the remaining round keys inside the aes body. + # We keep the round keys for: + # 1, 2, 4, 5, 7, 8, 10, 11, 13 and 14th keys. + # The following keys will be loaded in the aes body: + # 3, 6, 9, 12 and 15th keys. + .word 3439489111 + # key 1 + .word 34005127 + # key 2 + addi t1, a3, 16 + .word 33775879 + # key 4 + addi t1, a3, 48 + .word 33776007 + # key 5 + addi t1, a3, 64 + .word 33776135 + # key 7 + addi t1, a3, 96 + .word 33776263 + # key 8 + addi t1, a3, 112 + .word 33776391 + # key 10 + addi t1, a3, 144 + .word 33776519 + # key 11 + addi t1, a3, 160 + .word 33776647 + # key 13 + addi t1, a3, 192 + .word 33776775 + # key 14 + addi t1, a3, 208 + .word 33776903 + + # We already have the ciphertext/plaintext and ctr data for the first round. + # Load key 3 + .word 3439489111 + addi t1, a3, 32 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2796629623 + # Load key 6 + .word 3439489111 + addi t1, a3, 80 + .word 33777031 + .word 220754007 + .word 2788241015 + .word 2789289591 + .word 2796629623 + # Load key 9 + .word 3439489111 + addi t1, a3, 128 + .word 33777031 + .word 220754007 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 12 + .word 3439489111 + addi t1, a3, 176 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2796629623 + # Load key 15 + .word 3439489111 + addi t1, a3, 224 + .word 33777031 + .word 220754007 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr result. + .word 801902167 + + bnez t4, 1f + + ## without padding + # Store ciphertext/plaintext + .word 33943079 + j 2f + + ## with padding +1: + # Store ciphertext/plaintext using mask + .word 388647 + + # Fill zero for the padding blocks + .word 154071127 + .word 1577074263 + + # We have used mask register for `INPUT_PADDING_MASK` before. We need to + # setup the ctr mask back. + # ctr mask : [000100010001....] + .word 201879639 + li t1, 0b10001000 + .word 1577271383 +2: + + + + add a0, a0, t0 + add a1, a1, t0 + + + .word 220754007 + +.Lenc_blocks_256: + # Compute the partial tags. + # The partial tags will multiply with [H^n, H^n, ..., H^n] + # [tag0, tag1, ...] = + # ([tag0, tag1, ...] + [ciphertext0, ciphertext1, ...] * [H^n, H^n, ..., H^n] + # We will skip the [H^n, H^n, ..., H^n] multiplication for the last round. + beqz t5, .Lenc_blocks_256_end + .word 3004050039 + + .word 86536279 + # Increase ctr in v12. + .word 13616727 + sub t5, t5, a6 + # Load plaintext into v24 + .word 220229719 + .word 33909767 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + add a0, a0, t0 + .word 86011991 + .word 1237626455 + + + # Load key 3 + .word 3439489111 + addi t1, a3, 32 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2796629623 + # Load key 6 + .word 3439489111 + addi t1, a3, 80 + .word 33777031 + .word 220754007 + .word 2788241015 + .word 2789289591 + .word 2796629623 + # Load key 9 + .word 3439489111 + addi t1, a3, 128 + .word 33777031 + .word 220754007 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 12 + .word 3439489111 + addi t1, a3, 176 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2796629623 + # Load key 15 + .word 3439489111 + addi t1, a3, 224 + .word 33777031 + .word 220754007 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr ciphertext result. + .word 801902167 + + # Store ciphertext + .word 33943079 + add a1, a1, t0 + + j .Lenc_blocks_256 +.Lenc_blocks_256_end: + + # Add ciphertext into partial tag + .word 793643607 + + .word 3441586263 + # Update current ctr value to v12 + .word 13616727 + # Convert ctr to big-endian counter. + .word 1220847191 + .word 484903 + + + # The H is at `gcm128_context.Htable[0]` (addr(Xi)+16*2). + # Load H to v1 + addi t1, a5, 32 + .word 3439489111 + .word 33775751 + # Multiply H for each partial tag and XOR them together. + # Handle 1st partial tag + .word 1577713751 + .word 2719522935 + # Handle 2nd to N-th partial tags + li t1, 4 +1: + .word 3441586263 + .word 1061372503 + .word 3439489111 + .word 2987532407 + addi t1, t1, 4 + blt t1, a6, 1b + + + # Save the final tag + .word 34070567 + + # return the processed size. + slli a0, a7, 2 + ret +.size aes_gcm_enc_blocks_256,.-aes_gcm_enc_blocks_256 +.p2align 3 +.globl rv64i_zvkb_zvkg_zvkned_aes_gcm_decrypt +.type rv64i_zvkb_zvkg_zvkned_aes_gcm_decrypt,@function +rv64i_zvkb_zvkg_zvkned_aes_gcm_decrypt: + srli t0, a2, 4 + beqz t0, .Ldec_end + slli t5, t0, 2 + + mv a7, t5 + + # Compute the AES-GCM full-block e32 length for `LMUL=4`. We will handle + # the multiple AES-GCM blocks at the same time within `LMUL=4` register. + # The AES-GCM's SEW is e32 and EGW is 128 bits. + # FULL_BLOCK_LEN32 = (VLEN*LMUL)/(EGW) * (EGW/SEW) = (VLEN*4)/(32*4) * 4 + # = (VLEN*4)/32 + # We could get the block_num using the VL value of `vsetvli with e32, m4`. + .word 220231767 + # If `LEN32 % FULL_BLOCK_LEN32` is not equal to zero, we could fill the + # zero padding data to make sure we could always handle FULL_BLOCK_LEN32 + # blocks for all iterations. + + ## Prepare the H^n multiplier in v16 for GCM multiplier. The `n` is the gcm + ## block number in a LMUL=4 register group. + ## n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4)) + ## = (VLEN/32) + ## We could use vsetvli with `e32, m1` to compute the `n` number. + .word 218133207 + + # The H is at `gcm128_context.Htable[0]`(addr(Xi)+16*2). + addi t1, a5, 32 + .word 3439489111 + .word 33779591 + + # Compute the H^n + li t1, 1 +1: + .word 2750984183 + slli t1, t1, 1 + bltu t1, t0, 1b + + .word 220754007 + .word 1577072727 + .word 2817763447 + + #### Load plaintext into v24 and handle padding. We also load the init tag + #### data into v20 and prepare the AES ctr input data into v12 and v28. + .word 1577073239 + + ## Prepare the AES ctr input data into v12. + # Setup ctr input mask. + # ctr mask : [000100010001....] + # Note: The actual vl should be `FULL_BLOCK_LEN32/4 * 2`, but we just use + # `FULL_BLOCK_LEN32` here. + .word 201879639 + li t0, 0b10001000 + .word 1577238615 + # Load IV. + .word 3439489111 + .word 34041735 + # Convert the big-endian counter into little-endian. + .word 3305271383 + .word 1240772567 + # Splat the `single block of IV` to v12 + .word 220754007 + .word 1577072215 + .word 2817762935 + # Prepare the ctr counter into v8 + # v8: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...] + .word 1342710871 + # Merge IV and ctr counter into v12. + # v12:[x, x, x, count+0, x, x, x, count+1, ...] + .word 86536279 + .word 12846679 + + li t4, 0 + # Get the SEW32 size in the first round. + # If we have the non-zero value for `LEN32&(FULL_BLOCK_LEN32-1)`, then + # we will have the leading padding zero. + addi t0, a6, -1 + and t0, t0, t5 + beqz t0, 1f + + ## with padding + sub t5, t5, t0 + sub t4, a6, t0 + # padding block size + srli t1, t4, 2 + # padding byte size + slli t2, t4, 2 + + # Adjust the ctr counter to make the counter start from `counter+0` for the + # first non-padding block. + .word 86536279 + .word 147015255 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + .word 1237626455 + + # Prepare the mask for input loading in the first round. We use + # `VL=FULL_BLOCK_LEN32` with the mask in the first round. + # Adjust input ptr. + sub a0, a0, t2 + # Adjust output ptr. + sub a1, a1, t2 + .word 211316823 + .word 1376297303 + # We don't use the pseudo instruction `vmsgeu` here. Use `vmsgtu` instead. + # The original code is: + # vmsgeu.vx v0, v2, t4 + addi t0, t4, -1 + .word 2049097815 + .word 220754007 + .word 1577073751 + # Load the input for length FULL_BLOCK_LEN32 with mask. + .word 86536279 + .word 355335 + + # Load the init `Xi` data to v20 with preceding zero padding. + # Adjust Xi ptr. + sub t0, a5, t2 + # Load for length `zero-padding-e32-length + 4`. + addi t1, t4, 4 + .word 19099735 + .word 190983 + j 2f + +1: + ## without padding + sub t5, t5, a6 + + .word 220754007 + .word 33909767 + + # Load the init Xi data to v20. + .word 3372380247 + .word 34073095 + + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 86536279 + .word 1577455191 + .word 1237626455 +2: + + + # Load number of rounds + lwu t0, 240(a3) + li t1, 14 + li t2, 12 + li t3, 10 + + beq t0, t1, aes_gcm_dec_blocks_256 + beq t0, t2, aes_gcm_dec_blocks_192 + beq t0, t3, aes_gcm_dec_blocks_128 + +.Ldec_end: + li a0, 0 + ret +.size rv64i_zvkb_zvkg_zvkned_aes_gcm_decrypt,.-rv64i_zvkb_zvkg_zvkned_aes_gcm_decrypt +.p2align 3 +aes_gcm_dec_blocks_128: + srli t6, a6, 2 + slli t0, a6, 2 + + # Load all 11 aes round keys to v1-v11 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + # We already have the ciphertext/plaintext and ctr data for the first round. + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr result. + .word 801902167 + + bnez t4, 1f + + ## without padding + # Store ciphertext/plaintext + .word 33943079 + j 2f + + ## with padding +1: + # Store ciphertext/plaintext using mask + .word 388647 + + # Fill zero for the padding blocks + .word 154071127 + .word 1577074263 + + # We have used mask register for `INPUT_PADDING_MASK` before. We need to + # setup the ctr mask back. + # ctr mask : [000100010001....] + .word 201879639 + li t1, 0b10001000 + .word 1577271383 +2: + + + + add a0, a0, t0 + add a1, a1, t0 + + + .word 220754007 + +.Ldec_blocks_128: + # Compute the partial tags. + # The partial tags will multiply with [H^n, H^n, ..., H^n] + # [tag0, tag1, ...] = + # ([tag0, tag1, ...] + [ciphertext0, ciphertext1, ...] * [H^n, H^n, ..., H^n] + # We will skip the [H^n, H^n, ..., H^n] multiplication for the last round. + beqz t5, .Ldec_blocks_256_end + .word 3003918967 + + .word 86536279 + # Increase ctr in v12. + .word 13616727 + sub t5, t5, a6 + # Load plaintext into v24 + .word 220229719 + .word 33909767 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + add a0, a0, t0 + .word 86011991 + .word 1237626455 + + + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr plaintext result. + .word 801902167 + + # Store plaintext + .word 33943079 + add a1, a1, t0 + + j .Ldec_blocks_128 +.Ldec_blocks_128_end: + + # Add ciphertext into partial tag + .word 793512535 + + .word 3441586263 + # Update current ctr value to v12 + .word 13616727 + # Convert ctr to big-endian counter. + .word 1220847191 + .word 484903 + + + # The H is at `gcm128_context.Htable[0]` (addr(Xi)+16*2). + # Load H to v1 + addi t1, a5, 32 + .word 3439489111 + .word 33775751 + # Multiply H for each partial tag and XOR them together. + # Handle 1st partial tag + .word 1577713751 + .word 2719522935 + # Handle 2nd to N-th partial tags + li t1, 4 +1: + .word 3441586263 + .word 1061372503 + .word 3439489111 + .word 2987532407 + addi t1, t1, 4 + blt t1, a6, 1b + + + # Save the final tag + .word 34070567 + + # return the processed size. + slli a0, a7, 2 + ret +.size aes_gcm_dec_blocks_128,.-aes_gcm_dec_blocks_128 +.p2align 3 +aes_gcm_dec_blocks_192: + srli t6, a6, 2 + slli t0, a6, 2 + + # We run out of 32 vector registers, so we just preserve some round keys + # and load the remaining round keys inside the aes body. + # We keep the round keys for: + # 1, 2, 3, 5, 6, 7, 9, 10, 11 and 12th keys. + # The following keys will be loaded in the aes body: + # 4, 8 and 13th keys. + .word 3439489111 + # key 1 + .word 34005127 + # key 2 + addi t1, a3, 16 + .word 33775879 + # key 3 + addi t1, a3, 32 + .word 33776007 + # key 5 + addi t1, a3, 64 + .word 33776135 + # key 6 + addi t1, a3, 80 + .word 33776263 + # key 7 + addi t1, a3, 96 + .word 33776391 + # key 9 + addi t1, a3, 128 + .word 33776519 + # key 10 + addi t1, a3, 144 + .word 33776647 + # key 11 + addi t1, a3, 160 + .word 33776775 + # key 12 + addi t1, a3, 176 + .word 33776903 + + # We already have the ciphertext/plaintext and ctr data for the first round. + # Load key 4 + .word 3439489111 + addi t1, a3, 48 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2796629623 + # Load key 8 + .word 3439489111 + addi t1, a3, 112 + .word 33777031 + .word 220754007 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 13 + .word 3439489111 + addi t1, a3, 192 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr result. + .word 801902167 + + bnez t4, 1f + + ## without padding + # Store ciphertext/plaintext + .word 33943079 + j 2f + + ## with padding +1: + # Store ciphertext/plaintext using mask + .word 388647 + + # Fill zero for the padding blocks + .word 154071127 + .word 1577074263 + + # We have used mask register for `INPUT_PADDING_MASK` before. We need to + # setup the ctr mask back. + # ctr mask : [000100010001....] + .word 201879639 + li t1, 0b10001000 + .word 1577271383 +2: + + + + add a0, a0, t0 + add a1, a1, t0 + + + .word 220754007 + +.Ldec_blocks_192: + # Compute the partial tags. + # The partial tags will multiply with [H^n, H^n, ..., H^n] + # [tag0, tag1, ...] = + # ([tag0, tag1, ...] + [ciphertext0, ciphertext1, ...] * [H^n, H^n, ..., H^n] + # We will skip the [H^n, H^n, ..., H^n] multiplication for the last round. + beqz t5, .Ldec_blocks_192_end + .word 3003918967 + + .word 86536279 + # Increase ctr in v12. + .word 13616727 + sub t5, t5, a6 + # Load plaintext into v24 + .word 220229719 + .word 33909767 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + add a0, a0, t0 + .word 86011991 + .word 1237626455 + + + # Load key 4 + .word 3439489111 + addi t1, a3, 48 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2796629623 + # Load key 8 + .word 3439489111 + addi t1, a3, 112 + .word 33777031 + .word 220754007 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 13 + .word 3439489111 + addi t1, a3, 192 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr plaintext result. + .word 801902167 + + # Store plaintext + .word 33943079 + add a1, a1, t0 + + j .Ldec_blocks_192 +.Ldec_blocks_192_end: + + # Add ciphertext into partial tag + .word 793512535 + + .word 3441586263 + # Update current ctr value to v12 + .word 13616727 + # Convert ctr to big-endian counter. + .word 1220847191 + .word 484903 + + + # The H is at `gcm128_context.Htable[0]` (addr(Xi)+16*2). + # Load H to v1 + addi t1, a5, 32 + .word 3439489111 + .word 33775751 + # Multiply H for each partial tag and XOR them together. + # Handle 1st partial tag + .word 1577713751 + .word 2719522935 + # Handle 2nd to N-th partial tags + li t1, 4 +1: + .word 3441586263 + .word 1061372503 + .word 3439489111 + .word 2987532407 + addi t1, t1, 4 + blt t1, a6, 1b + + + # Save the final tag + .word 34070567 + + # return the processed size. + slli a0, a7, 2 + ret +.size aes_gcm_dec_blocks_192,.-aes_gcm_dec_blocks_192 +.p2align 3 +aes_gcm_dec_blocks_256: + srli t6, a6, 2 + slli t0, a6, 2 + + # We run out of 32 vector registers, so we just preserve some round keys + # and load the remaining round keys inside the aes body. + # We keep the round keys for: + # 1, 2, 4, 5, 7, 8, 10, 11, 13 and 14th keys. + # The following keys will be loaded in the aes body: + # 3, 6, 9, 12 and 15th keys. + .word 3439489111 + # key 1 + .word 34005127 + # key 2 + addi t1, a3, 16 + .word 33775879 + # key 4 + addi t1, a3, 48 + .word 33776007 + # key 5 + addi t1, a3, 64 + .word 33776135 + # key 7 + addi t1, a3, 96 + .word 33776263 + # key 8 + addi t1, a3, 112 + .word 33776391 + # key 10 + addi t1, a3, 144 + .word 33776519 + # key 11 + addi t1, a3, 160 + .word 33776647 + # key 13 + addi t1, a3, 192 + .word 33776775 + # key 14 + addi t1, a3, 208 + .word 33776903 + + # We already have the ciphertext/plaintext and ctr data for the first round. + # Load key 3 + .word 3439489111 + addi t1, a3, 32 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2796629623 + # Load key 6 + .word 3439489111 + addi t1, a3, 80 + .word 33777031 + .word 220754007 + .word 2788241015 + .word 2789289591 + .word 2796629623 + # Load key 9 + .word 3439489111 + addi t1, a3, 128 + .word 33777031 + .word 220754007 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 12 + .word 3439489111 + addi t1, a3, 176 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2796629623 + # Load key 15 + .word 3439489111 + addi t1, a3, 224 + .word 33777031 + .word 220754007 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr result. + .word 801902167 + + bnez t4, 1f + + ## without padding + # Store ciphertext/plaintext + .word 33943079 + j 2f + + ## with padding +1: + # Store ciphertext/plaintext using mask + .word 388647 + + # Fill zero for the padding blocks + .word 154071127 + .word 1577074263 + + # We have used mask register for `INPUT_PADDING_MASK` before. We need to + # setup the ctr mask back. + # ctr mask : [000100010001....] + .word 201879639 + li t1, 0b10001000 + .word 1577271383 +2: + + + + add a0, a0, t0 + add a1, a1, t0 + + + .word 220754007 + +.Ldec_blocks_256: + # Compute the partial tags. + # The partial tags will multiply with [H^n, H^n, ..., H^n] + # [tag0, tag1, ...] = + # ([tag0, tag1, ...] + [ciphertext0, ciphertext1, ...] * [H^n, H^n, ..., H^n] + # We will skip the [H^n, H^n, ..., H^n] multiplication for the last round. + beqz t5, .Ldec_blocks_256_end + .word 3003918967 + + .word 86536279 + # Increase ctr in v12. + .word 13616727 + sub t5, t5, a6 + # Load plaintext into v24 + .word 220229719 + .word 33909767 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + add a0, a0, t0 + .word 86011991 + .word 1237626455 + + + # Load key 3 + .word 3439489111 + addi t1, a3, 32 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2796629623 + # Load key 6 + .word 3439489111 + addi t1, a3, 80 + .word 33777031 + .word 220754007 + .word 2788241015 + .word 2789289591 + .word 2796629623 + # Load key 9 + .word 3439489111 + addi t1, a3, 128 + .word 33777031 + .word 220754007 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 12 + .word 3439489111 + addi t1, a3, 176 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2796629623 + # Load key 15 + .word 3439489111 + addi t1, a3, 224 + .word 33777031 + .word 220754007 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr plaintext result. + .word 801902167 + + # Store plaintext + .word 33943079 + add a1, a1, t0 + + j .Ldec_blocks_256 +.Ldec_blocks_256_end: + + # Add ciphertext into partial tag + .word 793512535 + + .word 3441586263 + # Update current ctr value to v12 + .word 13616727 + # Convert ctr to big-endian counter. + .word 1220847191 + .word 484903 + + + # The H is at `gcm128_context.Htable[0]` (addr(Xi)+16*2). + # Load H to v1 + addi t1, a5, 32 + .word 3439489111 + .word 33775751 + # Multiply H for each partial tag and XOR them together. + # Handle 1st partial tag + .word 1577713751 + .word 2719522935 + # Handle 2nd to N-th partial tags + li t1, 4 +1: + .word 3441586263 + .word 1061372503 + .word 3439489111 + .word 2987532407 + addi t1, t1, 4 + blt t1, a6, 1b + + + # Save the final tag + .word 34070567 + + # return the processed size. + slli a0, a7, 2 + ret +.size aes_gcm_dec_blocks_256,.-aes_gcm_dec_blocks_256 diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64-zvkb-zvbc.s b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64-zvkb-zvbc.s new file mode 100644 index 00000000000000..ca549d473a4e44 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64-zvkb-zvbc.s @@ -0,0 +1,268 @@ +.text +.p2align 3 +.globl gcm_init_rv64i_zvkb_zvbc +.type gcm_init_rv64i_zvkb_zvbc,@function +gcm_init_rv64i_zvkb_zvbc: + # Load/store data in reverse order. + # This is needed as a part of endianness swap. + add a1, a1, 8 + li t0, -8 + li t1, 63 + la t2, Lpolymod + + .word 0xc1817057 # vsetivli x0, 2, e64, m1, tu, mu + + .word 173404295 # vlse64.v v1, (a1), t0 + .word 33812743 # vle64.v v2, (t2) + + # Shift one left and get the carry bits. + .word 2719171031 # vsrl.vx v3, v1, t1 + .word 2517676247 # vsll.vi v1, v1, 1 + + # Use the fact that the polynomial degree is no more than 128, + # i.e. only the LSB of the upper half could be set. + # Thanks to this we don't need to do the full reduction here. + # Instead simply subtract the reduction polynomial. + # This idea was taken from x86 ghash implementation in OpenSSL. + .word 976269911 # vslideup.vi v4, v3, 1 + .word 1043378647 # vslidedown.vi v3, v3, 1 + + .word 1577136215 # vmv.v.i v0, 2 + .word 672268503 # vor.vv v1, v1, v4, v0.t + + # Need to set the mask to 3, if the carry bit is set. + .word 1577156695 # vmv.v.v v0, v3 + .word 1577071063 # vmv.v.i v3, 0 + .word 1546760663 # vmerge.vim v3, v3, 3, v0 + .word 1577156695 # vmv.v.v v0, v3 + + .word 739311831 # vxor.vv v1, v1, v2, v0.t + + .word 33910951 # vse64.v v1, (a0) + ret +.size gcm_init_rv64i_zvkb_zvbc,.-gcm_init_rv64i_zvkb_zvbc +.text +.p2align 3 +.globl gcm_gmult_rv64i_zvkb_zvbc +.type gcm_gmult_rv64i_zvkb_zvbc,@function +gcm_gmult_rv64i_zvkb_zvbc: + ld t0, (a1) + ld t1, 8(a1) + li t2, 63 + la t3, Lpolymod + ld t3, 8(t3) + + # Load/store data in reverse order. + # This is needed as a part of endianness swap. + add a0, a0, 8 + li t4, -8 + + .word 0xc1817057 # vsetivli x0, 2, e64, m1, tu, mu + + .word 198537863 # vlse64.v v5, (a0), t4 + .word 1247060695 # vrev8.v v5, v5 + + # Multiplication + + # Do two 64x64 multiplications in one go to save some time + # and simplify things. + + # A = a1a0 (t1, t0) + # B = b1b0 (v5) + # C = c1c0 (256 bit) + # c1 = a1b1 + (a0b1)h + (a1b0)h + # c0 = a0b0 + (a0b1)l + (a1b0)h + + # v1 = (a0b1)l,(a0b0)l + .word 844292311 # vclmul.vx v1, v5, t0 + # v3 = (a0b1)h,(a0b0)h + .word 911401431 # vclmulh.vx v3, v5, t0 + + # v4 = (a1b1)l,(a1b0)l + .word 844325463 # vclmul.vx v4, v5, t1 + # v2 = (a1b1)h,(a1b0)h + .word 911434071 # vclmulh.vx v2, v5, t1 + + # Is there a better way to do this? + # Would need to swap the order of elements within a vector register. + .word 976270039 # vslideup.vi v5, v3, 1 + .word 977318743 # vslideup.vi v6, v4, 1 + .word 1043378647 # vslidedown.vi v3, v3, 1 + .word 1044427351 # vslidedown.vi v4, v4, 1 + + .word 1577103447 # vmv.v.i v0, 1 + # v2 += (a0b1)h + .word 740393303 # vxor.vv v2, v2, v3, v0.t + # v2 += (a1b1)l + .word 740426071 # vxor.vv v2, v2, v4, v0.t + + .word 1577136215 # vmv.v.i v0, 2 + # v1 += (a0b0)h,0 + .word 739410135 # vxor.vv v1, v1, v5, v0.t + # v1 += (a1b0)l,0 + .word 739442903 # vxor.vv v1, v1, v6, v0.t + + # Now the 256bit product should be stored in (v2,v1) + # v1 = (a0b1)l + (a0b0)h + (a1b0)l, (a0b0)l + # v2 = (a1b1)h, (a1b0)h + (a0b1)h + (a1b1)l + + # Reduction + # Let C := A*B = c3,c2,c1,c0 = v2[1],v2[0],v1[1],v1[0] + # This is a slight variation of the Gueron's Montgomery reduction. + # The difference being the order of some operations has been changed, + # to make a better use of vclmul(h) instructions. + + # First step: + # c1 += (c0 * P)l + # vmv.v.i v0, 2 + .word 940618199 # vslideup.vi v3, v1, 1, v0.t + .word 809394647 # vclmul.vx v3, v3, t3, v0.t + .word 739344599 # vxor.vv v1, v1, v3, v0.t + + # Second step: + # D = d1,d0 is final result + # We want: + # m1 = c1 + (c1 * P)h + # m0 = (c1 * P)l + (c0 * P)h + c0 + # d1 = c3 + m1 + # d0 = c2 + m0 + + #v3 = (c1 * P)l, 0 + .word 807297495 # vclmul.vx v3, v1, t3, v0.t + #v4 = (c1 * P)h, (c0 * P)h + .word 907960919 # vclmulh.vx v4, v1, t3 + + .word 1577103447 # vmv.v.i v0, 1 + .word 1043378647 # vslidedown.vi v3, v3, 1 + + .word 772931799 # vxor.vv v1, v1, v4 + .word 739344599 # vxor.vv v1, v1, v3, v0.t + + # XOR in the upper upper part of the product + .word 773882199 # vxor.vv v2, v2, v1 + + .word 1243914583 # vrev8.v v2, v2 + .word 198537511 # vsse64.v v2, (a0), t4 + ret +.size gcm_gmult_rv64i_zvkb_zvbc,.-gcm_gmult_rv64i_zvkb_zvbc +.p2align 3 +.globl gcm_ghash_rv64i_zvkb_zvbc +.type gcm_ghash_rv64i_zvkb_zvbc,@function +gcm_ghash_rv64i_zvkb_zvbc: + ld t0, (a1) + ld t1, 8(a1) + li t2, 63 + la t3, Lpolymod + ld t3, 8(t3) + + # Load/store data in reverse order. + # This is needed as a part of endianness swap. + add a0, a0, 8 + add a2, a2, 8 + li t4, -8 + + .word 0xc1817057 # vsetivli x0, 2, e64, m1, tu, mu + + .word 198537863 # vlse64.v v5, (a0), t4 + +Lstep: + # Read input data + .word 198603655 # vle64.v v0, (a2) + add a2, a2, 16 + add a3, a3, -16 + # XOR them into Xi + .word 777224919 # vxor.vv v0, v0, v1 + + .word 1247060695 # vrev8.v v5, v5 + + # Multiplication + + # Do two 64x64 multiplications in one go to save some time + # and simplify things. + + # A = a1a0 (t1, t0) + # B = b1b0 (v5) + # C = c1c0 (256 bit) + # c1 = a1b1 + (a0b1)h + (a1b0)h + # c0 = a0b0 + (a0b1)l + (a1b0)h + + # v1 = (a0b1)l,(a0b0)l + .word 844292311 # vclmul.vx v1, v5, t0 + # v3 = (a0b1)h,(a0b0)h + .word 911401431 # vclmulh.vx v3, v5, t0 + + # v4 = (a1b1)l,(a1b0)l + .word 844325463 # vclmul.vx v4, v5, t1 + # v2 = (a1b1)h,(a1b0)h + .word 911434071 # vclmulh.vx v2, v5, t1 + + # Is there a better way to do this? + # Would need to swap the order of elements within a vector register. + .word 976270039 # vslideup.vi v5, v3, 1 + .word 977318743 # vslideup.vi v6, v4, 1 + .word 1043378647 # vslidedown.vi v3, v3, 1 + .word 1044427351 # vslidedown.vi v4, v4, 1 + + .word 1577103447 # vmv.v.i v0, 1 + # v2 += (a0b1)h + .word 740393303 # vxor.vv v2, v2, v3, v0.t + # v2 += (a1b1)l + .word 740426071 # vxor.vv v2, v2, v4, v0.t + + .word 1577136215 # vmv.v.i v0, 2 + # v1 += (a0b0)h,0 + .word 739410135 # vxor.vv v1, v1, v5, v0.t + # v1 += (a1b0)l,0 + .word 739442903 # vxor.vv v1, v1, v6, v0.t + + # Now the 256bit product should be stored in (v2,v1) + # v1 = (a0b1)l + (a0b0)h + (a1b0)l, (a0b0)l + # v2 = (a1b1)h, (a1b0)h + (a0b1)h + (a1b1)l + + # Reduction + # Let C := A*B = c3,c2,c1,c0 = v2[1],v2[0],v1[1],v1[0] + # This is a slight variation of the Gueron's Montgomery reduction. + # The difference being the order of some operations has been changed, + # to make a better use of vclmul(h) instructions. + + # First step: + # c1 += (c0 * P)l + # vmv.v.i v0, 2 + .word 940618199 # vslideup.vi v3, v1, 1, v0.t + .word 809394647 # vclmul.vx v3, v3, t3, v0.t + .word 739344599 # vxor.vv v1, v1, v3, v0.t + + # Second step: + # D = d1,d0 is final result + # We want: + # m1 = c1 + (c1 * P)h + # m0 = (c1 * P)l + (c0 * P)h + c0 + # d1 = c3 + m1 + # d0 = c2 + m0 + + #v3 = (c1 * P)l, 0 + .word 807297495 # vclmul.vx v3, v1, t3, v0.t + #v4 = (c1 * P)h, (c0 * P)h + .word 907960919 # vclmulh.vx v4, v1, t3 + + .word 1577103447 # vmv.v.i v0, 1 + .word 1043378647 # vslidedown.vi v3, v3, 1 + + .word 772931799 # vxor.vv v1, v1, v4 + .word 739344599 # vxor.vv v1, v1, v3, v0.t + + # XOR in the upper upper part of the product + .word 773882199 # vxor.vv v2, v2, v1 + + .word 1243914967 # vrev8.v v2, v2 + + bnez a3, Lstep + + .word 198537895 # vsse64.v v2, (a0), t4 + ret +.size gcm_ghash_rv64i_zvkb_zvbc,.-gcm_ghash_rv64i_zvkb_zvbc +.p2align 4 +Lpolymod: + .dword 0x0000000000000001 + .dword 0xc200000000000000 +.size Lpolymod,.-Lpolymod diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64-zvkg.s b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64-zvkg.s new file mode 100644 index 00000000000000..759c7c9c9e4df7 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64-zvkg.s @@ -0,0 +1,81 @@ +.text +.p2align 3 +.globl gcm_init_rv64i_zvkg +.type gcm_init_rv64i_zvkg,@function +gcm_init_rv64i_zvkg: + ld a2, 0(a1) + ld a3, 8(a1) + sb a2, 7(a0) + srli t0, a2, 8 + sb t0, 6(a0) + srli t0, a2, 16 + sb t0, 5(a0) + srli t0, a2, 24 + sb t0, 4(a0) + srli t0, a2, 32 + sb t0, 3(a0) + srli t0, a2, 40 + sb t0, 2(a0) + srli t0, a2, 48 + sb t0, 1(a0) + srli t0, a2, 56 + sb t0, 0(a0) + + sb a3, 15(a0) + srli t0, a3, 8 + sb t0, 14(a0) + srli t0, a3, 16 + sb t0, 13(a0) + srli t0, a3, 24 + sb t0, 12(a0) + srli t0, a3, 32 + sb t0, 11(a0) + srli t0, a3, 40 + sb t0, 10(a0) + srli t0, a3, 48 + sb t0, 9(a0) + srli t0, a3, 56 + sb t0, 8(a0) + + ret +.size gcm_init_rv64i_zvkg,.-gcm_init_rv64i_zvkg +.p2align 3 +.globl gcm_init_rv64i_zvkg_zvkb +.type gcm_init_rv64i_zvkg_zvkb,@function +gcm_init_rv64i_zvkg_zvkb: + .word 0xc1817057 # vsetivli x0, 2, e64, m1, ta, ma + .word 33943559 # vle64.v v0, (a1) + .word 1241817175 # vrev8.v v0, v0 + .word 33910823 # vse64.v v0, (a0) + ret +.size gcm_init_rv64i_zvkg_zvkb,.-gcm_init_rv64i_zvkg_zvkb +.p2align 3 +.globl gcm_gmult_rv64i_zvkg +.type gcm_gmult_rv64i_zvkg,@function +gcm_gmult_rv64i_zvkg: + .word 0xc1027057 + .word 33939719 + .word 33906823 + .word 2720571639 + .word 33906855 + ret +.size gcm_gmult_rv64i_zvkg,.-gcm_gmult_rv64i_zvkg +.p2align 3 +.globl gcm_ghash_rv64i_zvkg +.type gcm_ghash_rv64i_zvkg,@function +gcm_ghash_rv64i_zvkg: + .word 0xc1027057 + .word 33939719 + .word 33906823 + +Lstep: + .word 33972615 + add a2, a2, 16 + add a3, a3, -16 + .word 2988548343 + bnez a3, Lstep + + .word 33906855 + ret + +.size gcm_ghash_rv64i_zvkg,.-gcm_ghash_rv64i_zvkg diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64.s b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64.s new file mode 100644 index 00000000000000..33776697368530 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64.s @@ -0,0 +1,613 @@ +.text +.p2align 3 +.globl gcm_init_rv64i_zbc +.type gcm_init_rv64i_zbc,@function +gcm_init_rv64i_zbc: + ld a2,0(a1) + ld a3,8(a1) + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a2, 1 + and t1, t1, t0 + and a2, a2, t0 + srli a2, a2, 1 + or a2, t1, a2 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a2, 2 + and t1, t1, t0 + and a2, a2, t0 + srli a2, a2, 2 + or a2, t1, a2 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a2, 4 + and t1, t1, t0 + and a2, a2, t0 + srli a2, a2, 4 + or a2, t1, a2 + + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a3, 1 + and t1, t1, t0 + and a3, a3, t0 + srli a3, a3, 1 + or a3, t1, a3 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a3, 2 + and t1, t1, t0 + and a3, a3, t0 + srli a3, a3, 2 + or a3, t1, a3 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a3, 4 + and t1, t1, t0 + and a3, a3, t0 + srli a3, a3, 4 + or a3, t1, a3 + + sb a2, 7(a0) + srli t0, a2, 8 + sb t0, 6(a0) + srli t0, a2, 16 + sb t0, 5(a0) + srli t0, a2, 24 + sb t0, 4(a0) + srli t0, a2, 32 + sb t0, 3(a0) + srli t0, a2, 40 + sb t0, 2(a0) + srli t0, a2, 48 + sb t0, 1(a0) + srli t0, a2, 56 + sb t0, 0(a0) + + sb a3, 15(a0) + srli t0, a3, 8 + sb t0, 14(a0) + srli t0, a3, 16 + sb t0, 13(a0) + srli t0, a3, 24 + sb t0, 12(a0) + srli t0, a3, 32 + sb t0, 11(a0) + srli t0, a3, 40 + sb t0, 10(a0) + srli t0, a3, 48 + sb t0, 9(a0) + srli t0, a3, 56 + sb t0, 8(a0) + + ret +.size gcm_init_rv64i_zbc,.-gcm_init_rv64i_zbc +.p2align 3 +.globl gcm_init_rv64i_zbc__zbb +.type gcm_init_rv64i_zbc__zbb,@function +gcm_init_rv64i_zbc__zbb: + ld a2,0(a1) + ld a3,8(a1) + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a2, 1 + and t1, t1, t0 + and a2, a2, t0 + srli a2, a2, 1 + or a2, t1, a2 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a2, 2 + and t1, t1, t0 + and a2, a2, t0 + srli a2, a2, 2 + or a2, t1, a2 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a2, 4 + and t1, t1, t0 + and a2, a2, t0 + srli a2, a2, 4 + or a2, t1, a2 + + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a3, 1 + and t1, t1, t0 + and a3, a3, t0 + srli a3, a3, 1 + or a3, t1, a3 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a3, 2 + and t1, t1, t0 + and a3, a3, t0 + srli a3, a3, 2 + or a3, t1, a3 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a3, 4 + and t1, t1, t0 + and a3, a3, t0 + srli a3, a3, 4 + or a3, t1, a3 + + .word 1803965971 + .word 1803998867 + sd a2,0(a0) + sd a3,8(a0) + ret +.size gcm_init_rv64i_zbc__zbb,.-gcm_init_rv64i_zbc__zbb +.p2align 3 +.globl gcm_init_rv64i_zbc__zbkb +.type gcm_init_rv64i_zbc__zbkb,@function +gcm_init_rv64i_zbc__zbkb: + ld t0,0(a1) + ld t1,8(a1) + .word 1752355475 + .word 1752388371 + .word 1803735699 + .word 1803768595 + sd t0,0(a0) + sd t1,8(a0) + ret +.size gcm_init_rv64i_zbc__zbkb,.-gcm_init_rv64i_zbc__zbkb +.p2align 3 +.globl gcm_gmult_rv64i_zbc +.type gcm_gmult_rv64i_zbc,@function +gcm_gmult_rv64i_zbc: + # Load Xi and bit-reverse it + ld a4, 0(a0) + ld a5, 8(a0) + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a4, 1 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 1 + or a4, t1, a4 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a4, 2 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 2 + or a4, t1, a4 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a4, 4 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 4 + or a4, t1, a4 + + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a5, 1 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 1 + or a5, t1, a5 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a5, 2 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 2 + or a5, t1, a5 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a5, 4 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 4 + or a5, t1, a5 + + + # Load the key (already bit-reversed) + ld a6, 0(a1) + ld a7, 8(a1) + + # Load the reduction constant + la t6, Lpolymod + lbu t6, 0(t6) + + # Multiplication (without Karatsuba) + .word 186105395 + .word 186094515 + .word 186072883 + .word 186061619 + xor t2, t2, t5 + .word 185057075 + .word 185048755 + xor t2, t2, t5 + xor t1, t1, t4 + .word 185024307 + .word 185012915 + xor t1, t1, t5 + + # Reduction with clmul + .word 201211699 + .word 201203379 + xor t2, t2, t5 + xor t1, t1, t4 + .word 200523571 + .word 200515251 + xor a5, t1, t5 + xor a4, t0, t4 + + # Bit-reverse Xi back and store it + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a4, 1 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 1 + or a4, t1, a4 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a4, 2 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 2 + or a4, t1, a4 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a4, 4 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 4 + or a4, t1, a4 + + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a5, 1 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 1 + or a5, t1, a5 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a5, 2 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 2 + or a5, t1, a5 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a5, 4 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 4 + or a5, t1, a5 + + sd a4, 0(a0) + sd a5, 8(a0) + ret +.size gcm_gmult_rv64i_zbc,.-gcm_gmult_rv64i_zbc +.p2align 3 +.globl gcm_gmult_rv64i_zbc__zbkb +.type gcm_gmult_rv64i_zbc__zbkb,@function +gcm_gmult_rv64i_zbc__zbkb: + # Load Xi and bit-reverse it + ld a4, 0(a0) + ld a5, 8(a0) + .word 1752651539 + .word 1752684435 + + # Load the key (already bit-reversed) + ld a6, 0(a1) + ld a7, 8(a1) + + # Load the reduction constant + la t6, Lpolymod + lbu t6, 0(t6) + + # Multiplication (without Karatsuba) + .word 186105395 + .word 186094515 + .word 186072883 + .word 186061619 + xor t2, t2, t5 + .word 185057075 + .word 185048755 + xor t2, t2, t5 + xor t1, t1, t4 + .word 185024307 + .word 185012915 + xor t1, t1, t5 + + # Reduction with clmul + .word 201211699 + .word 201203379 + xor t2, t2, t5 + xor t1, t1, t4 + .word 200523571 + .word 200515251 + xor a5, t1, t5 + xor a4, t0, t4 + + # Bit-reverse Xi back and store it + .word 1752651539 + .word 1752684435 + sd a4, 0(a0) + sd a5, 8(a0) + ret +.size gcm_gmult_rv64i_zbc__zbkb,.-gcm_gmult_rv64i_zbc__zbkb +.p2align 3 +.globl gcm_ghash_rv64i_zbc +.type gcm_ghash_rv64i_zbc,@function +gcm_ghash_rv64i_zbc: + # Load Xi and bit-reverse it + ld a4, 0(a0) + ld a5, 8(a0) + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a4, 1 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 1 + or a4, t1, a4 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a4, 2 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 2 + or a4, t1, a4 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a4, 4 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 4 + or a4, t1, a4 + + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a5, 1 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 1 + or a5, t1, a5 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a5, 2 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 2 + or a5, t1, a5 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a5, 4 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 4 + or a5, t1, a5 + + + # Load the key (already bit-reversed) + ld a6, 0(a1) + ld a7, 8(a1) + + # Load the reduction constant + la t6, Lpolymod + lbu t6, 0(t6) + +Lstep: + # Load the input data, bit-reverse them, and XOR them with Xi + ld t4, 0(a2) + ld t5, 8(a2) + add a2, a2, 16 + add a3, a3, -16 + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, t4, 1 + and t1, t1, t0 + and t4, t4, t0 + srli t4, t4, 1 + or t4, t1, t4 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, t4, 2 + and t1, t1, t0 + and t4, t4, t0 + srli t4, t4, 2 + or t4, t1, t4 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, t4, 4 + and t1, t1, t0 + and t4, t4, t0 + srli t4, t4, 4 + or t4, t1, t4 + + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, t5, 1 + and t1, t1, t0 + and t5, t5, t0 + srli t5, t5, 1 + or t5, t1, t5 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, t5, 2 + and t1, t1, t0 + and t5, t5, t0 + srli t5, t5, 2 + or t5, t1, t5 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, t5, 4 + and t1, t1, t0 + and t5, t5, t0 + srli t5, t5, 4 + or t5, t1, t5 + + xor a4, a4, t4 + xor a5, a5, t5 + + # Multiplication (without Karatsuba) + .word 186105395 + .word 186094515 + .word 186072883 + .word 186061619 + xor t2, t2, t5 + .word 185057075 + .word 185048755 + xor t2, t2, t5 + xor t1, t1, t4 + .word 185024307 + .word 185012915 + xor t1, t1, t5 + + # Reduction with clmul + .word 201211699 + .word 201203379 + xor t2, t2, t5 + xor t1, t1, t4 + .word 200523571 + .word 200515251 + xor a5, t1, t5 + xor a4, t0, t4 + + # Iterate over all blocks + bnez a3, Lstep + + # Bit-reverse final Xi back and store it + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a4, 1 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 1 + or a4, t1, a4 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a4, 2 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 2 + or a4, t1, a4 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a4, 4 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 4 + or a4, t1, a4 + + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a5, 1 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 1 + or a5, t1, a5 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a5, 2 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 2 + or a5, t1, a5 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a5, 4 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 4 + or a5, t1, a5 + + sd a4, 0(a0) + sd a5, 8(a0) + ret +.size gcm_ghash_rv64i_zbc,.-gcm_ghash_rv64i_zbc +.p2align 3 +.globl gcm_ghash_rv64i_zbc__zbkb +.type gcm_ghash_rv64i_zbc__zbkb,@function +gcm_ghash_rv64i_zbc__zbkb: + # Load Xi and bit-reverse it + ld a4, 0(a0) + ld a5, 8(a0) + .word 1752651539 + .word 1752684435 + + # Load the key (already bit-reversed) + ld a6, 0(a1) + ld a7, 8(a1) + + # Load the reduction constant + la t6, Lpolymod + lbu t6, 0(t6) + +Lstep_zkbk: + # Load the input data, bit-reverse them, and XOR them with Xi + ld t4, 0(a2) + ld t5, 8(a2) + add a2, a2, 16 + add a3, a3, -16 + .word 1753144979 + .word 1753177875 + xor a4, a4, t4 + xor a5, a5, t5 + + # Multiplication (without Karatsuba) + .word 186105395 + .word 186094515 + .word 186072883 + .word 186061619 + xor t2, t2, t5 + .word 185057075 + .word 185048755 + xor t2, t2, t5 + xor t1, t1, t4 + .word 185024307 + .word 185012915 + xor t1, t1, t5 + + # Reduction with clmul + .word 201211699 + .word 201203379 + xor t2, t2, t5 + xor t1, t1, t4 + .word 200523571 + .word 200515251 + xor a5, t1, t5 + xor a4, t0, t4 + + # Iterate over all blocks + bnez a3, Lstep_zkbk + + # Bit-reverse final Xi back and store it + .word 1752651539 + .word 1752684435 + sd a4, 0(a0) + sd a5, 8(a0) + ret +.size gcm_ghash_rv64i_zbc__zbkb,.-gcm_ghash_rv64i_zbc__zbkb +.p2align 3 +Lbrev8_const: + .dword 0xAAAAAAAAAAAAAAAA + .dword 0xCCCCCCCCCCCCCCCC + .dword 0xF0F0F0F0F0F0F0F0 +.size Lbrev8_const,.-Lbrev8_const + +Lpolymod: + .byte 0x87 +.size Lpolymod,.-Lpolymod diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/params_idx.c b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/params_idx.c new file mode 100644 index 00000000000000..e5463ca5c8e56e --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/params_idx.c @@ -0,0 +1,3370 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +/* clang-format off */ + +/* clang-format on */ + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +/* clang-format off */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* clang-format on */ +/* End of TRIE */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/riscv64cpuid.s b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/riscv64cpuid.s new file mode 100644 index 00000000000000..cef02fbcf6d71e --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/riscv64cpuid.s @@ -0,0 +1,71 @@ +################################################################################ +# int CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len) +################################################################################ +.text +.balign 16 +.globl CRYPTO_memcmp +.type CRYPTO_memcmp,@function +CRYPTO_memcmp: + li t0,0 + beqz a2,2f # len == 0 +1: + lbu t1,0(a0) + lbu t2,0(a1) + addi a0,a0,1 + addi a1,a1,1 + addi a2,a2,-1 + xor t1,t1,t2 + or t0,t0,t1 + bgtz a2,1b +2: + mv a0,t0 + ret +################################################################################ +# void OPENSSL_cleanse(void *ptr, size_t len) +################################################################################ +.text +.balign 16 +.globl OPENSSL_cleanse +.type OPENSSL_cleanse,@function +OPENSSL_cleanse: + beqz a1,2f # len == 0, return + srli t0,a1,4 + bnez t0,3f # len > 15 + +1: # Store <= 15 individual bytes + sb x0,0(a0) + addi a0,a0,1 + addi a1,a1,-1 + bnez a1,1b +2: + ret + +3: # Store individual bytes until we are aligned + andi t0,a0,0x7 + beqz t0,4f + sb x0,0(a0) + addi a0,a0,1 + addi a1,a1,-1 + j 3b + +4: # Store aligned dwords + li t1,8 +4: + sd x0,0(a0) + addi a0,a0,8 + addi a1,a1,-8 + bge a1,t1,4b # if len>=8 loop + bnez a1,1b # if len<8 and len != 0, store remaining bytes + ret +################################################################################ +# size_t riscv_vlen_asm(void) +# Return VLEN (i.e. the length of a vector register in bits). +.p2align 3 +.globl riscv_vlen_asm +.type riscv_vlen_asm,@function +riscv_vlen_asm: + # 0xc22 is CSR vlenb + csrr a0, 0xc22 + slli a0, a0, 3 + ret +.size riscv_vlen_asm,.-riscv_vlen_asm diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S new file mode 100644 index 00000000000000..92ea27ec9c4437 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S @@ -0,0 +1,229 @@ +.text +.p2align 2 +.globl sha256_block_data_order_zvkb_zvknha_or_zvknhb +.type sha256_block_data_order_zvkb_zvknha_or_zvknhb,@function +sha256_block_data_order_zvkb_zvknha_or_zvknhb: + .word 3439489111 + + la a3, K256 # Load round constants K256 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + addi a3, a3, 16 + .word 34007047 + addi a3, a3, 16 + .word 34007175 + addi a3, a3, 16 + .word 34007303 + addi a3, a3, 16 + .word 34007431 + addi a3, a3, 16 + .word 34007559 + addi a3, a3, 16 + .word 34007687 + addi a3, a3, 16 + .word 34007815 + addi a3, a3, 16 + .word 34007943 + addi a3, a3, 16 + .word 34008071 + addi a3, a3, 16 + .word 34008199 + + + # H is stored as {a,b,c,d},{e,f,g,h}, but we need {f,e,b,a},{h,g,d,c} + # The dst vtype is e32m1 and the index vtype is e8mf4. + # We use index-load with the following index pattern at v26. + # i8 index: + # 20, 16, 4, 0 + # Instead of setting the i8 index, we could use a single 32bit + # little-endian value to cover the 4xi8 index. + # i32 value: + # 0x 00 04 10 14 + li t4, 0x00041014 + .word 3439390807 + .word 1578028375 + + addi t3, a0, 8 + + # Use index-load to get {f,e,b,a},{h,g,d,c} + .word 3439489111 + .word 128254727 + .word 128844679 + + # Setup v0 mask for the vmerge to replace the first word (idx==0) in key-scheduling. + # The AVL is 4 in SHA, so we could use a single e8(8 element masking) for masking. + .word 3422613591 + .word 1577103447 + + .word 3439489111 + +L_round_loop: + # Decrement length by 1 + add a2, a2, -1 + + # Keep the current state as we need it later: H' = H+{a',b',c',...,h'}. + .word 1577258839 + .word 1577291735 + + # Load the 512-bits of the message block in v1-v4 and perform + # an endian swap on each 4 bytes element. + .word 33939591 + .word 1242865879 + add a1, a1, 16 + .word 33939719 + .word 1243914583 + add a1, a1, 16 + .word 33939847 + .word 1244963287 + add a1, a1, 16 + .word 33939975 + .word 1246011991 + add a1, a1, 16 + + # Quad-round 0 (+0, Wt from oldest to newest in v1->v2->v3->v4) + .word 44073687 + .word 3194135543 + .word 3128075127 + .word 1546715863 + .word 3058835703 # Generate W[19:16] + + # Quad-round 1 (+1, v2->v3->v4->v1) + .word 45155031 + .word 3194135543 + .word 3128075127 + .word 1547797207 + .word 3058737527 # Generate W[23:20] + + # Quad-round 2 (+2, v3->v4->v1->v2) + .word 46236375 + .word 3194135543 + .word 3128075127 + .word 1544684247 + .word 3058770423 # Generate W[27:24] + + # Quad-round 3 (+3, v4->v1->v2->v3) + .word 47317719 + .word 3194135543 + .word 3128075127 + .word 1545634519 + .word 3058803319 # Generate W[31:28] + + # Quad-round 4 (+0, v1->v2->v3->v4) + .word 48267991 + .word 3194135543 + .word 3128075127 + .word 1546715863 + .word 3058835703 # Generate W[35:32] + + # Quad-round 5 (+1, v2->v3->v4->v1) + .word 49349335 + .word 3194135543 + .word 3128075127 + .word 1547797207 + .word 3058737527 # Generate W[39:36] + + # Quad-round 6 (+2, v3->v4->v1->v2) + .word 50430679 + .word 3194135543 + .word 3128075127 + .word 1544684247 + .word 3058770423 # Generate W[43:40] + + # Quad-round 7 (+3, v4->v1->v2->v3) + .word 51512023 + .word 3194135543 + .word 3128075127 + .word 1545634519 + .word 3058803319 # Generate W[47:44] + + # Quad-round 8 (+0, v1->v2->v3->v4) + .word 52462295 + .word 3194135543 + .word 3128075127 + .word 1546715863 + .word 3058835703 # Generate W[51:48] + + # Quad-round 9 (+1, v2->v3->v4->v1) + .word 53543639 + .word 3194135543 + .word 3128075127 + .word 1547797207 + .word 3058737527 # Generate W[55:52] + + # Quad-round 10 (+2, v3->v4->v1->v2) + .word 54624983 + .word 3194135543 + .word 3128075127 + .word 1544684247 + .word 3058770423 # Generate W[59:56] + + # Quad-round 11 (+3, v4->v1->v2->v3) + .word 55706327 + .word 3194135543 + .word 3128075127 + .word 1545634519 + .word 3058803319 # Generate W[63:60] + + # Quad-round 12 (+0, v1->v2->v3->v4) + # Note that we stop generating new message schedule words (Wt, v1-13) + # as we already generated all the words we end up consuming (i.e., W[63:60]). + .word 56656599 + .word 3194135543 + .word 3128075127 + + # Quad-round 13 (+1, v2->v3->v4->v1) + .word 57737943 + .word 3194135543 + .word 3128075127 + + # Quad-round 14 (+2, v3->v4->v1->v2) + .word 58819287 + .word 3194135543 + .word 3128075127 + + # Quad-round 15 (+3, v4->v1->v2->v3) + .word 59900631 + .word 3194135543 + .word 3128075127 + + # H' = H+{a',b',c',...,h'} + .word 65209175 + .word 66290647 + bnez a2, L_round_loop + + # Store {f,e,b,a},{h,g,d,c} back to {a,b,c,d},{e,f,g,h}. + .word 128254759 + .word 128844711 + + ret +.size sha256_block_data_order_zvkb_zvknha_or_zvknhb,.-sha256_block_data_order_zvkb_zvknha_or_zvknhb + +.p2align 2 +.type K256,@object +K256: + .word 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5 + .word 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5 + .word 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3 + .word 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174 + .word 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc + .word 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da + .word 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7 + .word 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967 + .word 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13 + .word 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85 + .word 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3 + .word 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070 + .word 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5 + .word 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3 + .word 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208 + .word 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +.size K256,.-K256 diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/sha/sha512-riscv64-zvkb-zvknhb.S b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/sha/sha512-riscv64-zvkb-zvknhb.S new file mode 100644 index 00000000000000..da1817a64af570 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/sha/sha512-riscv64-zvkb-zvknhb.S @@ -0,0 +1,184 @@ +.text +.p2align 2 +.globl sha512_block_data_order_zvkb_zvknhb +.type sha512_block_data_order_zvkb_zvknhb,@function +sha512_block_data_order_zvkb_zvknhb: + .word 3448926295 + + # H is stored as {a,b,c,d},{e,f,g,h}, but we need {f,e,b,a},{h,g,d,c} + # The dst vtype is e64m2 and the index vtype is e8mf4. + # We use index-load with the following index pattern at v1. + # i8 index: + # 40, 32, 8, 0 + # Instead of setting the i8 index, we could use a single 32bit + # little-endian value to cover the 4xi8 index. + # i32 value: + # 0x 00 08 20 28 + li t4, 0x00082028 + .word 3439390807 + .word 1578025175 + + addi t3, a0, 16 + + # Use index-load to get {f,e,b,a},{h,g,d,c} + .word 3448926295 + .word 102042375 + .word 102632455 + + # Setup v0 mask for the vmerge to replace the first word (idx==0) in key-scheduling. + # The AVL is 4 in SHA, so we could use a single e8(8 element masking) for masking. + .word 3422613591 + .word 1577103447 + + .word 3448926295 + +L_round_loop: + # Load round constants K512 + la a3, K512 + + # Decrement length by 1 + addi a2, a2, -1 + + # Keep the current state as we need it later: H' = H+{a',b',c',...,h'}. + .word 1577782615 + .word 1577848407 + + # Load the 1024-bits of the message block in v10-v16 and perform the endian + # swap. + .word 33944839 + .word 1252304215 + addi a1, a1, 32 + .word 33945095 + .word 1254401623 + addi a1, a1, 32 + .word 33945351 + .word 1256499031 + addi a1, a1, 32 + .word 33945607 + .word 1258596439 + addi a1, a1, 32 + + .rept 4 + # Quad-round 0 (+0, v10->v12->v14->v16) + .word 34011655 + addi a3, a3, 32 + .word 54856023 + .word 3211340919 + .word 3146328951 + .word 1558579543 + .word 3072861559 + + # Quad-round 1 (+1, v12->v14->v16->v10) + .word 34011655 + addi a3, a3, 32 + .word 54921559 + .word 3211340919 + .word 3146328951 + .word 1560742231 + .word 3072665207 + + # Quad-round 2 (+2, v14->v16->v10->v12) + .word 34011655 + addi a3, a3, 32 + .word 54987095 + .word 3211340919 + .word 3146328951 + .word 1554516311 + .word 3072730999 + + # Quad-round 3 (+3, v16->v10->v12->v14) + .word 34011655 + addi a3, a3, 32 + .word 55052631 + .word 3211340919 + .word 3146328951 + .word 1556416855 + .word 3072796791 + .endr + + # Quad-round 16 (+0, v10->v12->v14->v16) + # Note that we stop generating new message schedule words (Wt, v10-16) + # as we already generated all the words we end up consuming (i.e., W[79:76]). + .word 34011655 + addi a3, a3, 32 + .word 54856023 + .word 3211340919 + .word 3146328951 + + # Quad-round 17 (+1, v12->v14->v16->v10) + .word 34011655 + addi a3, a3, 32 + .word 54921559 + .word 3211340919 + .word 3146328951 + + # Quad-round 18 (+2, v14->v16->v10->v12) + .word 34011655 + addi a3, a3, 32 + .word 54987095 + .word 3211340919 + .word 3146328951 + + # Quad-round 19 (+3, v16->v10->v12->v14) + .word 34011655 + # No t1 increment needed. + .word 55052631 + .word 3211340919 + .word 3146328951 + + # H' = H+{a',b',c',...,h'} + .word 61541207 + .word 63704151 + bnez a2, L_round_loop + + # Store {f,e,b,a},{h,g,d,c} back to {a,b,c,d},{e,f,g,h}. + .word 102042407 + .word 102632487 + + ret +.size sha512_block_data_order_zvkb_zvknhb,.-sha512_block_data_order_zvkb_zvknhb + +.p2align 3 +.type K512,@object +K512: + .dword 0x428a2f98d728ae22, 0x7137449123ef65cd + .dword 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc + .dword 0x3956c25bf348b538, 0x59f111f1b605d019 + .dword 0x923f82a4af194f9b, 0xab1c5ed5da6d8118 + .dword 0xd807aa98a3030242, 0x12835b0145706fbe + .dword 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2 + .dword 0x72be5d74f27b896f, 0x80deb1fe3b1696b1 + .dword 0x9bdc06a725c71235, 0xc19bf174cf692694 + .dword 0xe49b69c19ef14ad2, 0xefbe4786384f25e3 + .dword 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65 + .dword 0x2de92c6f592b0275, 0x4a7484aa6ea6e483 + .dword 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5 + .dword 0x983e5152ee66dfab, 0xa831c66d2db43210 + .dword 0xb00327c898fb213f, 0xbf597fc7beef0ee4 + .dword 0xc6e00bf33da88fc2, 0xd5a79147930aa725 + .dword 0x06ca6351e003826f, 0x142929670a0e6e70 + .dword 0x27b70a8546d22ffc, 0x2e1b21385c26c926 + .dword 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df + .dword 0x650a73548baf63de, 0x766a0abb3c77b2a8 + .dword 0x81c2c92e47edaee6, 0x92722c851482353b + .dword 0xa2bfe8a14cf10364, 0xa81a664bbc423001 + .dword 0xc24b8b70d0f89791, 0xc76c51a30654be30 + .dword 0xd192e819d6ef5218, 0xd69906245565a910 + .dword 0xf40e35855771202a, 0x106aa07032bbd1b8 + .dword 0x19a4c116b8d2d0c8, 0x1e376c085141ab53 + .dword 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8 + .dword 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb + .dword 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3 + .dword 0x748f82ee5defb2fc, 0x78a5636f43172f60 + .dword 0x84c87814a1f0ab72, 0x8cc702081a6439ec + .dword 0x90befffa23631e28, 0xa4506cebde82bde9 + .dword 0xbef9a3f7b2c67915, 0xc67178f2e372532b + .dword 0xca273eceea26619c, 0xd186b8c721c0c207 + .dword 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178 + .dword 0x06f067aa72176fba, 0x0a637dc5a2c898a6 + .dword 0x113f9804bef90dae, 0x1b710b35131c471b + .dword 0x28db77f523047d84, 0x32caab7b40c72493 + .dword 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c + .dword 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a + .dword 0x5fcb6fab3ad6faec, 0x6c44198c4a475817 +.size K512,.-K512 diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/sm3/sm3-riscv64-zvksh.S b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/sm3/sm3-riscv64-zvksh.S new file mode 100644 index 00000000000000..a5457b97439c72 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/sm3/sm3-riscv64-zvksh.S @@ -0,0 +1,150 @@ +.text +.text +.p2align 3 +.globl ossl_hwsm3_block_data_order_zvksh +.type ossl_hwsm3_block_data_order_zvksh,@function +ossl_hwsm3_block_data_order_zvksh: + .word 3440668759 + + # Load initial state of hash context (c->A-H). + .word 33906695 + .word 1241817175 + +L_sm3_loop: + # Copy the previous state to v2. + # It will be XOR'ed with the current state at the end of the round. + .word 1577058647 + + # Load the 64B block in 2x32B chunks. + .word 33940231 # v6 := {w7, ..., w0} + addi a1, a1, 32 + + .word 33940487 # v8 := {w15, ..., w8} + addi a1, a1, 32 + + addi a2, a2, -1 + + # As vsm3c consumes only w0, w1, w4, w5 we need to slide the input + # 2 elements down so we process elements w2, w3, w6, w7 + # This will be repeated for each odd round. + .word 1046557271 # v4 := {X, X, w7, ..., w2} + + .word 2925535351 + .word 2923470967 + + # Prepare a vector with {w11, ..., w4} + .word 1044460119 # v4 := {X, X, X, X, w7, ..., w4} + .word 981611095 # v4 := {w11, w10, w9, w8, w7, w6, w5, w4} + + .word 2923503735 + .word 1044460119 # v4 := {X, X, w11, w10, w9, w8, w7, w6} + .word 2923536503 + + .word 2927763575 + .word 1048654423 # v4 := {X, X, w15, w14, w13, w12, w11, w10} + .word 2923602039 + + .word 2189632375 # v6 := {w23, w22, w21, w20, w19, w18, w17, w16} + + # Prepare a register with {w19, w18, w17, w16, w15, w14, w13, w12} + .word 1044460119 # v4 := {X, X, X, X, w15, w14, w13, w12} + .word 979513943 # v4 := {w19, w18, w17, w16, w15, w14, w13, w12} + + .word 2923634807 + .word 1044460119 # v4 := {X, X, w19, w18, w17, w16, w15, w14} + .word 2923667575 + + .word 2925797495 + .word 1046557271 # v4 := {X, X, w23, w22, w21, w20, w19, w18} + .word 2923733111 + + .word 2187601015 # v8 := {w31, w30, w29, w28, w27, w26, w25, w24} + + # Prepare a register with {w27, w26, w25, w24, w23, w22, w21, w20} + .word 1044460119 # v4 := {X, X, X, X, w23, w22, w21, w20} + .word 981611095 # v4 := {w27, w26, w25, w24, w23, w22, w21, w20} + + .word 2923765879 + .word 1044460119 # v4 := {X, X, w27, w26, w25, w24, w23, w22} + .word 2923798647 + + .word 2928025719 + .word 1048654423 # v4 := {x, X, w31, w30, w29, w28, w27, w26} + .word 2923864183 + + .word 2189632375 # v6 := {w32, w33, w34, w35, w36, w37, w38, w39} + + # Prepare a register with {w35, w34, w33, w32, w31, w30, w29, w28} + .word 1044460119 # v4 := {X, X, X, X, w31, w30, w29, w28} + .word 979513943 # v4 := {w35, w34, w33, w32, w31, w30, w29, w28} + + .word 2923896951 + .word 1044460119 # v4 := {X, X, w35, w34, w33, w32, w31, w30} + .word 2923929719 + + .word 2926059639 + .word 1046557271 # v4 := {X, X, w39, w38, w37, w36, w35, w34} + .word 2923995255 + + .word 2187601015 # v8 := {w47, w46, w45, w44, w43, w42, w41, w40} + + # Prepare a register with {w43, w42, w41, w40, w39, w38, w37, w36} + .word 1044460119 # v4 := {X, X, X, X, w39, w38, w37, w36} + .word 981611095 # v4 := {w43, w42, w41, w40, w39, w38, w37, w36} + + .word 2924028023 + .word 1044460119 # v4 := {X, X, w43, w42, w41, w40, w39, w38} + .word 2924060791 + + .word 2928287863 + .word 1048654423 # v4 := {X, X, w47, w46, w45, w44, w43, w42} + .word 2924126327 + + .word 2189632375 # v6 := {w55, w54, w53, w52, w51, w50, w49, w48} + + # Prepare a register with {w51, w50, w49, w48, w47, w46, w45, w44} + .word 1044460119 # v4 := {X, X, X, X, w47, w46, w45, w44} + .word 979513943 # v4 := {w51, w50, w49, w48, w47, w46, w45, w44} + + .word 2924159095 + .word 1044460119 # v4 := {X, X, w51, w50, w49, w48, w47, w46} + .word 2924191863 + + .word 2926321783 + .word 1046557271 # v4 := {X, X, w55, w54, w53, w52, w51, w50} + .word 2924257399 + + .word 2187601015 # v8 := {w63, w62, w61, w60, w59, w58, w57, w56} + + # Prepare a register with {w59, w58, w57, w56, w55, w54, w53, w52} + .word 1044460119 # v4 := {X, X, X, X, w55, w54, w53, w52} + .word 981611095 # v4 := {w59, w58, w57, w56, w55, w54, w53, w52} + + .word 2924290167 + .word 1044460119 # v4 := {X, X, w59, w58, w57, w56, w55, w54} + .word 2924322935 + + .word 2928550007 + .word 1048654423 # v4 := {X, X, w63, w62, w61, w60, w59, w58} + .word 2924388471 + + .word 2189632375 # v6 := {w71, w70, w69, w68, w67, w66, w65, w64} + + # Prepare a register with {w67, w66, w65, w64, w63, w62, w61, w60} + .word 1044460119 # v4 := {X, X, X, X, w63, w62, w61, w60} + .word 979513943 # v4 := {w67, w66, w65, w64, w63, w62, w61, w60} + + .word 2924421239 + .word 1044460119 # v4 := {X, X, w67, w66, w65, w64, w63, w62} + .word 2924454007 + + # XOR in the previous state. + .word 771817559 + + bnez a2, L_sm3_loop # Check if there are any more block to process +L_sm3_end: + .word 1241817175 + .word 33906727 + ret + +.size ossl_hwsm3_block_data_order_zvksh,.-ossl_hwsm3_block_data_order_zvksh diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/crypto/sm4/sm4-riscv64-zvksed.s b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/sm4/sm4-riscv64-zvksed.s new file mode 100644 index 00000000000000..c353c27e1c0689 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/crypto/sm4/sm4-riscv64-zvksed.s @@ -0,0 +1,188 @@ +.text +.p2align 3 +.globl rv64i_zvksed_sm4_set_encrypt_key +.type rv64i_zvksed_sm4_set_encrypt_key,@function +rv64i_zvksed_sm4_set_encrypt_key: + .word 0xc1027057 + + # Load the user key + .word 33906823 + .word 1242865879 + + # Load the FK. + la t0, FK + .word 33743111 + + # Generate round keys. + .word 772866263 + .word 2249204215 # rk[0:3] + .word 2251334263 # rk[4:7] + .word 2252415735 # rk[8:11] + .word 2253497207 # rk[12:15] + .word 2254578679 # rk[16:19] + .word 2255660151 # rk[20:23] + .word 2256741623 # rk[24:27] + .word 2257823095 # rk[28:31] + + # Store round keys + .word 33939879 # rk[0:3] + addi a1, a1, 16 + .word 33940007 # rk[4:7] + addi a1, a1, 16 + .word 33940135 # rk[8:11] + addi a1, a1, 16 + .word 33940263 # rk[12:15] + addi a1, a1, 16 + .word 33940391 # rk[16:19] + addi a1, a1, 16 + .word 33940519 # rk[20:23] + addi a1, a1, 16 + .word 33940647 # rk[24:27] + addi a1, a1, 16 + .word 33940775 # rk[28:31] + + li a0, 1 + ret +.size rv64i_zvksed_sm4_set_encrypt_key,.-rv64i_zvksed_sm4_set_encrypt_key +.p2align 3 +.globl rv64i_zvksed_sm4_set_decrypt_key +.type rv64i_zvksed_sm4_set_decrypt_key,@function +rv64i_zvksed_sm4_set_decrypt_key: + .word 0xc1027057 + + # Load the user key + .word 33906823 + .word 1242865879 + + # Load the FK. + la t0, FK + .word 33743111 + + # Generate round keys. + .word 772866263 + .word 2249204215 # rk[0:3] + .word 2251334263 # rk[4:7] + .word 2252415735 # rk[8:11] + .word 2253497207 # rk[12:15] + .word 2254578679 # rk[16:19] + .word 2255660151 # rk[20:23] + .word 2256741623 # rk[24:27] + .word 2257823095 # rk[28:31] + + # Store round keys in reverse order + addi a1, a1, 12 + li t1, -4 + .word 174449959 # rk[31:28] + addi a1, a1, 16 + .word 174449831 # rk[27:24] + addi a1, a1, 16 + .word 174449703 # rk[23:20] + addi a1, a1, 16 + .word 174449575 # rk[19:16] + addi a1, a1, 16 + .word 174449447 # rk[15:12] + addi a1, a1, 16 + .word 174449319 # rk[11:8] + addi a1, a1, 16 + .word 174449191 # rk[7:4] + addi a1, a1, 16 + .word 174449063 # rk[3:0] + + li a0, 1 + ret +.size rv64i_zvksed_sm4_set_decrypt_key,.-rv64i_zvksed_sm4_set_decrypt_key +.p2align 3 +.globl rv64i_zvksed_sm4_encrypt +.type rv64i_zvksed_sm4_encrypt,@function +rv64i_zvksed_sm4_encrypt: + .word 0xc1027057 + + # Order of elements was adjusted in set_encrypt_key() + .word 33972487 # rk[0:3] + addi a2, a2, 16 + .word 33972615 # rk[4:7] + addi a2, a2, 16 + .word 33972743 # rk[8:11] + addi a2, a2, 16 + .word 33972871 # rk[12:15] + addi a2, a2, 16 + .word 33972999 # rk[16:19] + addi a2, a2, 16 + .word 33973127 # rk[20:23] + addi a2, a2, 16 + .word 33973255 # rk[24:27] + addi a2, a2, 16 + .word 33973383 # rk[28:31] + + # Load input data + .word 33906823 + .word 1242865879 + + # Encrypt with all keys + .word 2787647735 + .word 2788696311 + .word 2789744887 + .word 2790793463 + .word 2791842039 + .word 2792890615 + .word 2793939191 + .word 2794987767 + + # Save the ciphertext (in reverse element order) + .word 1242865879 + li t0, -4 + addi a1, a1, 12 + .word 173400231 + + ret +.size rv64i_zvksed_sm4_encrypt,.-rv64i_zvksed_sm4_encrypt +.p2align 3 +.globl rv64i_zvksed_sm4_decrypt +.type rv64i_zvksed_sm4_decrypt,@function +rv64i_zvksed_sm4_decrypt: + .word 0xc1027057 + + # Order of elements was adjusted in set_decrypt_key() + .word 33973383 # rk[31:28] + addi a2, a2, 16 + .word 33973255 # rk[27:24] + addi a2, a2, 16 + .word 33973127 # rk[23:20] + addi a2, a2, 16 + .word 33972999 # rk[19:16] + addi a2, a2, 16 + .word 33972871 # rk[15:11] + addi a2, a2, 16 + .word 33972743 # rk[11:8] + addi a2, a2, 16 + .word 33972615 # rk[7:4] + addi a2, a2, 16 + .word 33972487 # rk[3:0] + + # Load input data + .word 33906823 + .word 1242865879 + + # Encrypt with all keys + .word 2794987767 + .word 2793939191 + .word 2792890615 + .word 2791842039 + .word 2790793463 + .word 2789744887 + .word 2788696311 + .word 2787647735 + + # Save the ciphertext (in reverse element order) + .word 1242865879 + li t0, -4 + addi a1, a1, 12 + .word 173400231 + + ret +.size rv64i_zvksed_sm4_decrypt,.-rv64i_zvksed_sm4_decrypt +# Family Key (little-endian 32-bit chunks) +.p2align 3 +FK: + .word 0xA3B1BAC6, 0x56AA3350, 0x677D9197, 0xB27022DC +.size FK,.-FK diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/crypto/bn_conf.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/crypto/bn_conf.h new file mode 100644 index 00000000000000..2437fc9bd28200 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/crypto/bn_conf.h @@ -0,0 +1,37 @@ +/* clang-format off */ +/* WARNING: do not edit! */ +/* Generated by Makefile from include/crypto/bn_conf.h.in */ +/* clang-format on */ +/* + * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_BN_CONF_H +#define OSSL_CRYPTO_BN_CONF_H +#pragma once + +/* + * The contents of this file are not used in the UEFI build, as + * both 32-bit and 64-bit builds are supported from a single run + * of the Configure script. + */ + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +/* clang-format off */ +#define SIXTY_FOUR_BIT_LONG + /* clang-format on */ + /* clang-format off */ +#undef SIXTY_FOUR_BIT + /* clang-format on */ + /* clang-format off */ +#undef THIRTY_TWO_BIT +/* clang-format on */ + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/crypto/dso_conf.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/crypto/dso_conf.h new file mode 100644 index 00000000000000..29edacf112c893 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/crypto/dso_conf.h @@ -0,0 +1,25 @@ +/* clang-format off */ +/* WARNING: do not edit! */ +/* Generated by Makefile from include/crypto/dso_conf.h.in */ +/* clang-format on */ +/* + * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_DSO_CONF_H +#define OSSL_CRYPTO_DSO_CONF_H +#pragma once + +/* clang-format off */ +# define DSO_DLFCN +# define HAVE_DLFCN_H +/* clang-format on */ +/* clang-format off */ +# define DSO_EXTENSION ".so" +/* clang-format on */ +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/internal/param_names.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/internal/param_names.h new file mode 100644 index 00000000000000..cefb8dfa75fa74 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/internal/param_names.h @@ -0,0 +1,473 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +/* clang-format off */ + +/* clang-format on */ + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +/* clang-format off */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/asn1.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/asn1.h new file mode 100644 index 00000000000000..3fd498b2a3e6a9 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/asn1.h @@ -0,0 +1,1125 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/asn1.h.in + * + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ASN1_H +#define OPENSSL_ASN1_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASN1_H +#endif + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#ifdef OPENSSL_BUILD_SHLIBCRYPTO +#undef OPENSSL_EXTERN +#define OPENSSL_EXTERN OPENSSL_EXPORT +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define V_ASN1_UNIVERSAL 0x00 +#define V_ASN1_APPLICATION 0x40 +#define V_ASN1_CONTEXT_SPECIFIC 0x80 +#define V_ASN1_PRIVATE 0xc0 + +#define V_ASN1_CONSTRUCTED 0x20 +#define V_ASN1_PRIMITIVE_TAG 0x1f +#define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG + +#define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +#define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +#define V_ASN1_ANY -4 /* used in ASN1 template code */ + +#define V_ASN1_UNDEF -1 +/* ASN.1 tag values */ +#define V_ASN1_EOC 0 +#define V_ASN1_BOOLEAN 1 +#define V_ASN1_INTEGER 2 +#define V_ASN1_BIT_STRING 3 +#define V_ASN1_OCTET_STRING 4 +#define V_ASN1_NULL 5 +#define V_ASN1_OBJECT 6 +#define V_ASN1_OBJECT_DESCRIPTOR 7 +#define V_ASN1_EXTERNAL 8 +#define V_ASN1_REAL 9 +#define V_ASN1_ENUMERATED 10 +#define V_ASN1_UTF8STRING 12 +#define V_ASN1_SEQUENCE 16 +#define V_ASN1_SET 17 +#define V_ASN1_NUMERICSTRING 18 +#define V_ASN1_PRINTABLESTRING 19 +#define V_ASN1_T61STRING 20 +#define V_ASN1_TELETEXSTRING 20 /* alias */ +#define V_ASN1_VIDEOTEXSTRING 21 +#define V_ASN1_IA5STRING 22 +#define V_ASN1_UTCTIME 23 +#define V_ASN1_GENERALIZEDTIME 24 +#define V_ASN1_GRAPHICSTRING 25 +#define V_ASN1_ISO64STRING 26 +#define V_ASN1_VISIBLESTRING 26 /* alias */ +#define V_ASN1_GENERALSTRING 27 +#define V_ASN1_UNIVERSALSTRING 28 +#define V_ASN1_BMPSTRING 30 + +/* + * NB the constants below are used internally by ASN1_INTEGER + * and ASN1_ENUMERATED to indicate the sign. They are *not* on + * the wire tag values. + */ + +#define V_ASN1_NEG 0x100 +#define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) +#define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) + +/* For use with d2i_ASN1_type_bytes() */ +#define B_ASN1_NUMERICSTRING 0x0001 +#define B_ASN1_PRINTABLESTRING 0x0002 +#define B_ASN1_T61STRING 0x0004 +#define B_ASN1_TELETEXSTRING 0x0004 +#define B_ASN1_VIDEOTEXSTRING 0x0008 +#define B_ASN1_IA5STRING 0x0010 +#define B_ASN1_GRAPHICSTRING 0x0020 +#define B_ASN1_ISO64STRING 0x0040 +#define B_ASN1_VISIBLESTRING 0x0040 +#define B_ASN1_GENERALSTRING 0x0080 +#define B_ASN1_UNIVERSALSTRING 0x0100 +#define B_ASN1_OCTET_STRING 0x0200 +#define B_ASN1_BIT_STRING 0x0400 +#define B_ASN1_BMPSTRING 0x0800 +#define B_ASN1_UNKNOWN 0x1000 +#define B_ASN1_UTF8STRING 0x2000 +#define B_ASN1_UTCTIME 0x4000 +#define B_ASN1_GENERALIZEDTIME 0x8000 +#define B_ASN1_SEQUENCE 0x10000 +/* For use with ASN1_mbstring_copy() */ +#define MBSTRING_FLAG 0x1000 +#define MBSTRING_UTF8 (MBSTRING_FLAG) +#define MBSTRING_ASC (MBSTRING_FLAG | 1) +#define MBSTRING_BMP (MBSTRING_FLAG | 2) +#define MBSTRING_UNIV (MBSTRING_FLAG | 4) +#define SMIME_OLDMIME 0x400 +#define SMIME_CRLFEOL 0x800 +#define SMIME_STREAM 0x1000 + +/* Stacks for types not otherwise defined in this header */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) +#define sk_X509_ALGOR_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_value(sk, idx) ((X509_ALGOR *)OPENSSL_sk_value(ossl_check_const_X509_ALGOR_sk_type(sk), (idx))) +#define sk_X509_ALGOR_new(cmp) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new(ossl_check_X509_ALGOR_compfunc_type(cmp))) +#define sk_X509_ALGOR_new_null() ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_null()) +#define sk_X509_ALGOR_new_reserve(cmp, n) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_reserve(ossl_check_X509_ALGOR_compfunc_type(cmp), (n))) +#define sk_X509_ALGOR_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ALGOR_sk_type(sk), (n)) +#define sk_X509_ALGOR_free(sk) OPENSSL_sk_free(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_delete(sk, i) ((X509_ALGOR *)OPENSSL_sk_delete(ossl_check_X509_ALGOR_sk_type(sk), (i))) +#define sk_X509_ALGOR_delete_ptr(sk, ptr) ((X509_ALGOR *)OPENSSL_sk_delete_ptr(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr))) +#define sk_X509_ALGOR_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_pop(sk) ((X509_ALGOR *)OPENSSL_sk_pop(ossl_check_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_shift(sk) ((X509_ALGOR *)OPENSSL_sk_shift(ossl_check_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ALGOR_sk_type(sk),ossl_check_X509_ALGOR_freefunc_type(freefunc)) +#define sk_X509_ALGOR_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), (idx)) +#define sk_X509_ALGOR_set(sk, idx, ptr) ((X509_ALGOR *)OPENSSL_sk_set(ossl_check_X509_ALGOR_sk_type(sk), (idx), ossl_check_X509_ALGOR_type(ptr))) +#define sk_X509_ALGOR_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), pnum) +#define sk_X509_ALGOR_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_dup(sk) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_dup(ossl_check_const_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_copyfunc_type(copyfunc), ossl_check_X509_ALGOR_freefunc_type(freefunc))) +#define sk_X509_ALGOR_set_cmp_func(sk, cmp) ((sk_X509_ALGOR_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_compfunc_type(cmp))) + +/* clang-format on */ + +#define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ +/* + * This indicates that the ASN1_STRING is not a real value but just a place + * holder for the location where indefinite length constructed data should be + * inserted in the memory buffer + */ +#define ASN1_STRING_FLAG_NDEF 0x010 + +/* + * This flag is used by the CMS code to indicate that a string is not + * complete and is a place holder for content when it had all been accessed. + * The flag will be reset when content has been written to it. + */ + +#define ASN1_STRING_FLAG_CONT 0x020 +/* + * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING + * type. + */ +#define ASN1_STRING_FLAG_MSTRING 0x040 +/* String is embedded and only content should be freed */ +#define ASN1_STRING_FLAG_EMBED 0x080 +/* String should be parsed in RFC 5280's time format */ +#define ASN1_STRING_FLAG_X509_TIME 0x100 +/* This is the base type that holds just about everything :-) */ +struct asn1_string_st { + int length; + int type; + unsigned char *data; + /* + * The value of the following field depends on the type being held. It + * is mostly being used for BIT_STRING so if the input data has a + * non-zero 'unused bits' value, it will be handled correctly + */ + long flags; +}; + +/* + * ASN1_ENCODING structure: this is used to save the received encoding of an + * ASN1 type. This is useful to get round problems with invalid encodings + * which can break signatures. + */ + +typedef struct ASN1_ENCODING_st { + unsigned char *enc; /* DER encoding */ + long len; /* Length of encoding */ + int modified; /* set to 1 if 'enc' is invalid */ +} ASN1_ENCODING; + +/* Used with ASN1 LONG type: if a long is set to this it is omitted */ +#define ASN1_LONG_UNDEF 0x7fffffffL + +#define STABLE_FLAGS_MALLOC 0x01 +/* + * A zero passed to ASN1_STRING_TABLE_new_add for the flags is interpreted + * as "don't change" and STABLE_FLAGS_MALLOC is always set. By setting + * STABLE_FLAGS_MALLOC only we can clear the existing value. Use the alias + * STABLE_FLAGS_CLEAR to reflect this. + */ +#define STABLE_FLAGS_CLEAR STABLE_FLAGS_MALLOC +#define STABLE_NO_MASK 0x02 +#define DIRSTRING_TYPE \ + (B_ASN1_PRINTABLESTRING | B_ASN1_T61STRING | B_ASN1_BMPSTRING | B_ASN1_UTF8STRING) +#define PKCS9STRING_TYPE (DIRSTRING_TYPE | B_ASN1_IA5STRING) + +struct asn1_string_table_st { + int nid; + long minsize; + long maxsize; + unsigned long mask; + unsigned long flags; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING_TABLE, ASN1_STRING_TABLE, ASN1_STRING_TABLE) +#define sk_ASN1_STRING_TABLE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_value(sk, idx) ((ASN1_STRING_TABLE *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), (idx))) +#define sk_ASN1_STRING_TABLE_new(cmp) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) +#define sk_ASN1_STRING_TABLE_new_null() ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_STRING_TABLE_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp), (n))) +#define sk_ASN1_STRING_TABLE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (n)) +#define sk_ASN1_STRING_TABLE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_delete(sk, i) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (i))) +#define sk_ASN1_STRING_TABLE_delete_ptr(sk, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr))) +#define sk_ASN1_STRING_TABLE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_pop(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_shift(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk),ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc)) +#define sk_ASN1_STRING_TABLE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), (idx)) +#define sk_ASN1_STRING_TABLE_set(sk, idx, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_set(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (idx), ossl_check_ASN1_STRING_TABLE_type(ptr))) +#define sk_ASN1_STRING_TABLE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), pnum) +#define sk_ASN1_STRING_TABLE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_dup(sk) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc))) +#define sk_ASN1_STRING_TABLE_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_TABLE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) + +/* clang-format on */ + +/* size limits: this stuff is taken straight from RFC2459 */ + +#define ub_name 32768 +#define ub_common_name 64 +#define ub_locality_name 128 +#define ub_state_name 128 +#define ub_organization_name 64 +#define ub_organization_unit_name 64 +#define ub_title 64 +#define ub_email_address 128 + +/* + * Declarations for template structures: for full definitions see asn1t.h + */ +typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE; +typedef struct ASN1_TLC_st ASN1_TLC; +/* This is just an opaque pointer */ +typedef struct ASN1_VALUE_st ASN1_VALUE; + +/* Declare ASN1 functions: the implement macro is in asn1t.h */ + +/* + * The mysterious 'extern' that's passed to some macros is innocuous, + * and is there to quiet pre-C99 compilers that may complain about empty + * arguments in macro calls. + */ + +#define DECLARE_ASN1_FUNCTIONS_attr(attr, type) \ + DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, type) +#define DECLARE_ASN1_FUNCTIONS(type) \ + DECLARE_ASN1_FUNCTIONS_attr(extern, type) + +#define DECLARE_ASN1_ALLOC_FUNCTIONS_attr(attr, type) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, type) +#define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_attr(extern, type) + +#define DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name) +#define DECLARE_ASN1_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_FUNCTIONS_name_attr(extern, type, name) + +#define DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, itname, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name) \ + DECLARE_ASN1_ITEM_attr(attr, itname) +#define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_attr(extern, type, itname, name) + +#define DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, name, name) +#define DECLARE_ASN1_ENCODE_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(extern, type, name) + +#define DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name) \ + attr type *d2i_##name(type **a, const unsigned char **in, long len); \ + attr int i2d_##name(const type *a, unsigned char **out); +#define DECLARE_ASN1_ENCODE_FUNCTIONS_only(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(extern, type, name) + +#define DECLARE_ASN1_NDEF_FUNCTION_attr(attr, name) \ + attr int i2d_##name##_NDEF(const name *a, unsigned char **out); +#define DECLARE_ASN1_NDEF_FUNCTION(name) \ + DECLARE_ASN1_NDEF_FUNCTION_attr(extern, name) + +#define DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name) \ + attr type *name##_new(void); \ + attr void name##_free(type *a); +#define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(extern, type, name) + +#define DECLARE_ASN1_DUP_FUNCTION_attr(attr, type) \ + DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, type) +#define DECLARE_ASN1_DUP_FUNCTION(type) \ + DECLARE_ASN1_DUP_FUNCTION_attr(extern, type) + +#define DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, name) \ + attr type *name##_dup(const type *a); +#define DECLARE_ASN1_DUP_FUNCTION_name(type, name) \ + DECLARE_ASN1_DUP_FUNCTION_name_attr(extern, type, name) + +#define DECLARE_ASN1_PRINT_FUNCTION_attr(attr, stname) \ + DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, stname) +#define DECLARE_ASN1_PRINT_FUNCTION(stname) \ + DECLARE_ASN1_PRINT_FUNCTION_attr(extern, stname) + +#define DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, fname) \ + attr int fname##_print_ctx(BIO *out, const stname *x, int indent, \ + const ASN1_PCTX *pctx); +#define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ + DECLARE_ASN1_PRINT_FUNCTION_fname_attr(extern, stname, fname) + +#define D2I_OF(type) type *(*)(type **, const unsigned char **, long) +#define I2D_OF(type) int (*)(const type *, unsigned char **) + +#define CHECKED_D2I_OF(type, d2i) \ + ((d2i_of_void *)(1 ? d2i : ((D2I_OF(type))0))) +#define CHECKED_I2D_OF(type, i2d) \ + ((i2d_of_void *)(1 ? i2d : ((I2D_OF(type))0))) +#define CHECKED_NEW_OF(type, xnew) \ + ((void *(*)(void))(1 ? xnew : ((type * (*)(void))0))) +#define CHECKED_PTR_OF(type, p) \ + ((void *)(1 ? p : (type *)0)) +#define CHECKED_PPTR_OF(type, p) \ + ((void **)(1 ? p : (type **)0)) + +#define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **, const unsigned char **, long) +#define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(const type *, unsigned char **) +#define TYPEDEF_D2I2D_OF(type) \ + TYPEDEF_D2I_OF(type); \ + TYPEDEF_I2D_OF(type) + +typedef void *d2i_of_void(void **, const unsigned char **, long); +typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); + +/*- + * The following macros and typedefs allow an ASN1_ITEM + * to be embedded in a structure and referenced. Since + * the ASN1_ITEM pointers need to be globally accessible + * (possibly from shared libraries) they may exist in + * different forms. On platforms that support it the + * ASN1_ITEM structure itself will be globally exported. + * Other platforms will export a function that returns + * an ASN1_ITEM pointer. + * + * To handle both cases transparently the macros below + * should be used instead of hard coding an ASN1_ITEM + * pointer in a structure. + * + * The structure will look like this: + * + * typedef struct SOMETHING_st { + * ... + * ASN1_ITEM_EXP *iptr; + * ... + * } SOMETHING; + * + * It would be initialised as e.g.: + * + * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...}; + * + * and the actual pointer extracted with: + * + * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr); + * + * Finally an ASN1_ITEM pointer can be extracted from an + * appropriate reference with: ASN1_ITEM_rptr(X509). This + * would be used when a function takes an ASN1_ITEM * argument. + * + */ + +/* + * Platforms that can't easily handle shared global variables are declared as + * functions returning ASN1_ITEM pointers. + */ + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM *ASN1_ITEM_EXP(void); + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +#define ASN1_ITEM_ptr(iptr) (iptr()) + +/* Macro to include ASN1_ITEM pointer from base type */ +#define ASN1_ITEM_ref(iptr) (iptr##_it) + +#define ASN1_ITEM_rptr(ref) (ref##_it()) + +#define DECLARE_ASN1_ITEM_attr(attr, name) \ + attr const ASN1_ITEM *name##_it(void); +#define DECLARE_ASN1_ITEM(name) \ + DECLARE_ASN1_ITEM_attr(extern, name) + +/* Parameters used by ASN1_STRING_print_ex() */ + +/* + * These determine which characters to escape: RFC2253 special characters, + * control characters and MSB set characters + */ + +#define ASN1_STRFLGS_ESC_2253 1 +#define ASN1_STRFLGS_ESC_CTRL 2 +#define ASN1_STRFLGS_ESC_MSB 4 + +/* Lower 8 bits are reserved as an output type specifier */ +#define ASN1_DTFLGS_TYPE_MASK 0x0FUL +#define ASN1_DTFLGS_RFC822 0x00UL +#define ASN1_DTFLGS_ISO8601 0x01UL + +/* + * This flag determines how we do escaping: normally RC2253 backslash only, + * set this to use backslash and quote. + */ + +#define ASN1_STRFLGS_ESC_QUOTE 8 + +/* These three flags are internal use only. */ + +/* Character is a valid PrintableString character */ +#define CHARTYPE_PRINTABLESTRING 0x10 +/* Character needs escaping if it is the first character */ +#define CHARTYPE_FIRST_ESC_2253 0x20 +/* Character needs escaping if it is the last character */ +#define CHARTYPE_LAST_ESC_2253 0x40 + +/* + * NB the internal flags are safely reused below by flags handled at the top + * level. + */ + +/* + * If this is set we convert all character strings to UTF8 first + */ + +#define ASN1_STRFLGS_UTF8_CONVERT 0x10 + +/* + * If this is set we don't attempt to interpret content: just assume all + * strings are 1 byte per character. This will produce some pretty odd + * looking output! + */ + +#define ASN1_STRFLGS_IGNORE_TYPE 0x20 + +/* If this is set we include the string type in the output */ +#define ASN1_STRFLGS_SHOW_TYPE 0x40 + +/* + * This determines which strings to display and which to 'dump' (hex dump of + * content octets or DER encoding). We can only dump non character strings or + * everything. If we don't dump 'unknown' they are interpreted as character + * strings with 1 octet per character and are subject to the usual escaping + * options. + */ + +#define ASN1_STRFLGS_DUMP_ALL 0x80 +#define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 + +/* + * These determine what 'dumping' does, we can dump the content octets or the + * DER encoding: both use the RFC2253 #XXXXX notation. + */ + +#define ASN1_STRFLGS_DUMP_DER 0x200 + +/* + * This flag specifies that RC2254 escaping shall be performed. + */ +#define ASN1_STRFLGS_ESC_2254 0x400 + +/* + * All the string flags consistent with RFC2253, escaping control characters + * isn't essential in RFC2253 but it is advisable anyway. + */ + +#define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | ASN1_STRFLGS_ESC_CTRL | ASN1_STRFLGS_ESC_MSB | ASN1_STRFLGS_UTF8_CONVERT | ASN1_STRFLGS_DUMP_UNKNOWN | ASN1_STRFLGS_DUMP_DER) + +struct asn1_type_st { + int type; + union { + char *ptr; + ASN1_BOOLEAN boolean; + ASN1_STRING *asn1_string; + ASN1_OBJECT *object; + ASN1_INTEGER *integer; + ASN1_ENUMERATED *enumerated; + ASN1_BIT_STRING *bit_string; + ASN1_OCTET_STRING *octet_string; + ASN1_PRINTABLESTRING *printablestring; + ASN1_T61STRING *t61string; + ASN1_IA5STRING *ia5string; + ASN1_GENERALSTRING *generalstring; + ASN1_BMPSTRING *bmpstring; + ASN1_UNIVERSALSTRING *universalstring; + ASN1_UTCTIME *utctime; + ASN1_GENERALIZEDTIME *generalizedtime; + ASN1_VISIBLESTRING *visiblestring; + ASN1_UTF8STRING *utf8string; + /* + * set and sequence are left complete and still contain the set or + * sequence bytes + */ + ASN1_STRING *set; + ASN1_STRING *sequence; + ASN1_VALUE *asn1_value; + } value; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_TYPE, ASN1_TYPE, ASN1_TYPE) +#define sk_ASN1_TYPE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_value(sk, idx) ((ASN1_TYPE *)OPENSSL_sk_value(ossl_check_const_ASN1_TYPE_sk_type(sk), (idx))) +#define sk_ASN1_TYPE_new(cmp) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new(ossl_check_ASN1_TYPE_compfunc_type(cmp))) +#define sk_ASN1_TYPE_new_null() ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_TYPE_new_reserve(cmp, n) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_TYPE_compfunc_type(cmp), (n))) +#define sk_ASN1_TYPE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_TYPE_sk_type(sk), (n)) +#define sk_ASN1_TYPE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_delete(sk, i) ((ASN1_TYPE *)OPENSSL_sk_delete(ossl_check_ASN1_TYPE_sk_type(sk), (i))) +#define sk_ASN1_TYPE_delete_ptr(sk, ptr) ((ASN1_TYPE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr))) +#define sk_ASN1_TYPE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_pop(sk) ((ASN1_TYPE *)OPENSSL_sk_pop(ossl_check_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_shift(sk) ((ASN1_TYPE *)OPENSSL_sk_shift(ossl_check_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_TYPE_sk_type(sk),ossl_check_ASN1_TYPE_freefunc_type(freefunc)) +#define sk_ASN1_TYPE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), (idx)) +#define sk_ASN1_TYPE_set(sk, idx, ptr) ((ASN1_TYPE *)OPENSSL_sk_set(ossl_check_ASN1_TYPE_sk_type(sk), (idx), ossl_check_ASN1_TYPE_type(ptr))) +#define sk_ASN1_TYPE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), pnum) +#define sk_ASN1_TYPE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_dup(sk) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_copyfunc_type(copyfunc), ossl_check_ASN1_TYPE_freefunc_type(freefunc))) +#define sk_ASN1_TYPE_set_cmp_func(sk, cmp) ((sk_ASN1_TYPE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; + +DECLARE_ASN1_ENCODE_FUNCTIONS_name(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) +DECLARE_ASN1_ENCODE_FUNCTIONS_name(ASN1_SEQUENCE_ANY, ASN1_SET_ANY) + +/* This is used to contain a list of bit names */ +typedef struct BIT_STRING_BITNAME_st { + int bitnum; + const char *lname; + const char *sname; +} BIT_STRING_BITNAME; + +#define B_ASN1_TIME \ + B_ASN1_UTCTIME | B_ASN1_GENERALIZEDTIME + +#define B_ASN1_PRINTABLE \ + B_ASN1_NUMERICSTRING | B_ASN1_PRINTABLESTRING | B_ASN1_T61STRING | B_ASN1_IA5STRING | B_ASN1_BIT_STRING | B_ASN1_UNIVERSALSTRING | B_ASN1_BMPSTRING | B_ASN1_UTF8STRING | B_ASN1_SEQUENCE | B_ASN1_UNKNOWN + +#define B_ASN1_DIRECTORYSTRING \ + B_ASN1_PRINTABLESTRING | B_ASN1_TELETEXSTRING | B_ASN1_BMPSTRING | B_ASN1_UNIVERSALSTRING | B_ASN1_UTF8STRING + +#define B_ASN1_DISPLAYTEXT \ + B_ASN1_IA5STRING | B_ASN1_VISIBLESTRING | B_ASN1_BMPSTRING | B_ASN1_UTF8STRING + +DECLARE_ASN1_ALLOC_FUNCTIONS_name(ASN1_TYPE, ASN1_TYPE) +DECLARE_ASN1_ENCODE_FUNCTIONS(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) + +int ASN1_TYPE_get(const ASN1_TYPE *a); +void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); +int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value); +int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b); + +ASN1_TYPE *ASN1_TYPE_pack_sequence(const ASN1_ITEM *it, void *s, ASN1_TYPE **t); +void *ASN1_TYPE_unpack_sequence(const ASN1_ITEM *it, const ASN1_TYPE *t); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_OBJECT, ASN1_OBJECT, ASN1_OBJECT) +#define sk_ASN1_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_value(sk, idx) ((ASN1_OBJECT *)OPENSSL_sk_value(ossl_check_const_ASN1_OBJECT_sk_type(sk), (idx))) +#define sk_ASN1_OBJECT_new(cmp) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new(ossl_check_ASN1_OBJECT_compfunc_type(cmp))) +#define sk_ASN1_OBJECT_new_null() ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_null()) +#define sk_ASN1_OBJECT_new_reserve(cmp, n) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_OBJECT_compfunc_type(cmp), (n))) +#define sk_ASN1_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_OBJECT_sk_type(sk), (n)) +#define sk_ASN1_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_delete(sk, i) ((ASN1_OBJECT *)OPENSSL_sk_delete(ossl_check_ASN1_OBJECT_sk_type(sk), (i))) +#define sk_ASN1_OBJECT_delete_ptr(sk, ptr) ((ASN1_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr))) +#define sk_ASN1_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_pop(sk) ((ASN1_OBJECT *)OPENSSL_sk_pop(ossl_check_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_shift(sk) ((ASN1_OBJECT *)OPENSSL_sk_shift(ossl_check_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_OBJECT_sk_type(sk),ossl_check_ASN1_OBJECT_freefunc_type(freefunc)) +#define sk_ASN1_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), (idx)) +#define sk_ASN1_OBJECT_set(sk, idx, ptr) ((ASN1_OBJECT *)OPENSSL_sk_set(ossl_check_ASN1_OBJECT_sk_type(sk), (idx), ossl_check_ASN1_OBJECT_type(ptr))) +#define sk_ASN1_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), pnum) +#define sk_ASN1_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_dup(sk) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_copyfunc_type(copyfunc), ossl_check_ASN1_OBJECT_freefunc_type(freefunc))) +#define sk_ASN1_OBJECT_set_cmp_func(sk, cmp) ((sk_ASN1_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_FUNCTIONS(ASN1_OBJECT) + +ASN1_STRING *ASN1_STRING_new(void); +void ASN1_STRING_free(ASN1_STRING *a); +void ASN1_STRING_clear_free(ASN1_STRING *a); +int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str); +DECLARE_ASN1_DUP_FUNCTION(ASN1_STRING) +ASN1_STRING *ASN1_STRING_type_new(int type); +int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b); +/* + * Since this is used to store all sorts of things, via macros, for now, + * make its data void * + */ +int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); +void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len); +int ASN1_STRING_length(const ASN1_STRING *x); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void ASN1_STRING_length_set(ASN1_STRING *x, int n); +#endif +int ASN1_STRING_type(const ASN1_STRING *x); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 unsigned char *ASN1_STRING_data(ASN1_STRING *x); +#endif +const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x); + +DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING) +int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length); +int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); +int ASN1_BIT_STRING_get_bit(const ASN1_BIT_STRING *a, int n); +int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *a, + const unsigned char *flags, int flags_len); + +int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, + BIT_STRING_BITNAME *tbl, int indent); +int ASN1_BIT_STRING_num_asc(const char *name, BIT_STRING_BITNAME *tbl); +int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, const char *name, int value, + BIT_STRING_BITNAME *tbl); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_INTEGER, ASN1_INTEGER, ASN1_INTEGER) +#define sk_ASN1_INTEGER_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_value(sk, idx) ((ASN1_INTEGER *)OPENSSL_sk_value(ossl_check_const_ASN1_INTEGER_sk_type(sk), (idx))) +#define sk_ASN1_INTEGER_new(cmp) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new(ossl_check_ASN1_INTEGER_compfunc_type(cmp))) +#define sk_ASN1_INTEGER_new_null() ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_null()) +#define sk_ASN1_INTEGER_new_reserve(cmp, n) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_INTEGER_compfunc_type(cmp), (n))) +#define sk_ASN1_INTEGER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_INTEGER_sk_type(sk), (n)) +#define sk_ASN1_INTEGER_free(sk) OPENSSL_sk_free(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_delete(sk, i) ((ASN1_INTEGER *)OPENSSL_sk_delete(ossl_check_ASN1_INTEGER_sk_type(sk), (i))) +#define sk_ASN1_INTEGER_delete_ptr(sk, ptr) ((ASN1_INTEGER *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr))) +#define sk_ASN1_INTEGER_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_pop(sk) ((ASN1_INTEGER *)OPENSSL_sk_pop(ossl_check_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_shift(sk) ((ASN1_INTEGER *)OPENSSL_sk_shift(ossl_check_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_INTEGER_sk_type(sk),ossl_check_ASN1_INTEGER_freefunc_type(freefunc)) +#define sk_ASN1_INTEGER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), (idx)) +#define sk_ASN1_INTEGER_set(sk, idx, ptr) ((ASN1_INTEGER *)OPENSSL_sk_set(ossl_check_ASN1_INTEGER_sk_type(sk), (idx), ossl_check_ASN1_INTEGER_type(ptr))) +#define sk_ASN1_INTEGER_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), pnum) +#define sk_ASN1_INTEGER_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_dup(sk) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_dup(ossl_check_const_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_copyfunc_type(copyfunc), ossl_check_ASN1_INTEGER_freefunc_type(freefunc))) +#define sk_ASN1_INTEGER_set_cmp_func(sk, cmp) ((sk_ASN1_INTEGER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) +ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, + long length); +DECLARE_ASN1_DUP_FUNCTION(ASN1_INTEGER) +int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y); + +DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED) + +int ASN1_UTCTIME_check(const ASN1_UTCTIME *a); +ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t); +ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); +int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); + +int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, + time_t t); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, + time_t t, int offset_day, + long offset_sec); +int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str); + +int ASN1_TIME_diff(int *pday, int *psec, + const ASN1_TIME *from, const ASN1_TIME *to); + +DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING) +DECLARE_ASN1_DUP_FUNCTION(ASN1_OCTET_STRING) +int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, + const ASN1_OCTET_STRING *b); +int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, + int len); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_UTF8STRING, ASN1_UTF8STRING, ASN1_UTF8STRING) +#define sk_ASN1_UTF8STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_value(sk, idx) ((ASN1_UTF8STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), (idx))) +#define sk_ASN1_UTF8STRING_new(cmp) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) +#define sk_ASN1_UTF8STRING_new_null() ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_UTF8STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp), (n))) +#define sk_ASN1_UTF8STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_UTF8STRING_sk_type(sk), (n)) +#define sk_ASN1_UTF8STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_delete(sk, i) ((ASN1_UTF8STRING *)OPENSSL_sk_delete(ossl_check_ASN1_UTF8STRING_sk_type(sk), (i))) +#define sk_ASN1_UTF8STRING_delete_ptr(sk, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr))) +#define sk_ASN1_UTF8STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_pop(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_pop(ossl_check_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_shift(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_shift(ossl_check_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_UTF8STRING_sk_type(sk),ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc)) +#define sk_ASN1_UTF8STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), (idx)) +#define sk_ASN1_UTF8STRING_set(sk, idx, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_set(ossl_check_ASN1_UTF8STRING_sk_type(sk), (idx), ossl_check_ASN1_UTF8STRING_type(ptr))) +#define sk_ASN1_UTF8STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), pnum) +#define sk_ASN1_UTF8STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_dup(sk) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_copyfunc_type(copyfunc), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc))) +#define sk_ASN1_UTF8STRING_set_cmp_func(sk, cmp) ((sk_ASN1_UTF8STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_NULL) +DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING) + +int UTF8_getc(const unsigned char *str, int len, unsigned long *val); +int UTF8_putc(unsigned char *str, int len, unsigned long value); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_GENERALSTRING, ASN1_GENERALSTRING, ASN1_GENERALSTRING) +#define sk_ASN1_GENERALSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_value(sk, idx) ((ASN1_GENERALSTRING *)OPENSSL_sk_value(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), (idx))) +#define sk_ASN1_GENERALSTRING_new(cmp) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) +#define sk_ASN1_GENERALSTRING_new_null() ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_GENERALSTRING_new_reserve(cmp, n) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp), (n))) +#define sk_ASN1_GENERALSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (n)) +#define sk_ASN1_GENERALSTRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_delete(sk, i) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (i))) +#define sk_ASN1_GENERALSTRING_delete_ptr(sk, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr))) +#define sk_ASN1_GENERALSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_pop(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_pop(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_shift(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_shift(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk),ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc)) +#define sk_ASN1_GENERALSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), (idx)) +#define sk_ASN1_GENERALSTRING_set(sk, idx, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_set(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (idx), ossl_check_ASN1_GENERALSTRING_type(ptr))) +#define sk_ASN1_GENERALSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), pnum) +#define sk_ASN1_GENERALSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_dup(sk) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_copyfunc_type(copyfunc), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc))) +#define sk_ASN1_GENERALSTRING_set_cmp_func(sk, cmp) ((sk_ASN1_GENERALSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE) + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING) +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT) +DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_TIME) + +DECLARE_ASN1_DUP_FUNCTION(ASN1_TIME) +DECLARE_ASN1_DUP_FUNCTION(ASN1_UTCTIME) +DECLARE_ASN1_DUP_FUNCTION(ASN1_GENERALIZEDTIME) + +DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF) + +ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t); +ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_TIME_check(const ASN1_TIME *t); +ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(const ASN1_TIME *t, + ASN1_GENERALIZEDTIME **out); +int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); +int ASN1_TIME_set_string_X509(ASN1_TIME *s, const char *str); +int ASN1_TIME_to_tm(const ASN1_TIME *s, struct tm *tm); +int ASN1_TIME_normalize(ASN1_TIME *s); +int ASN1_TIME_cmp_time_t(const ASN1_TIME *s, time_t t); +int ASN1_TIME_compare(const ASN1_TIME *a, const ASN1_TIME *b); + +int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a); +int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); +int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a); +int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); +int i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a); +int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); +int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type); +int i2t_ASN1_OBJECT(char *buf, int buf_len, const ASN1_OBJECT *a); + +int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num); +ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len, + const char *sn, const char *ln); + +int ASN1_INTEGER_get_int64(int64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_int64(ASN1_INTEGER *a, int64_t r); +int ASN1_INTEGER_get_uint64(uint64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_uint64(ASN1_INTEGER *a, uint64_t r); + +int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); +long ASN1_INTEGER_get(const ASN1_INTEGER *a); +ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai); +BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); + +int ASN1_ENUMERATED_get_int64(int64_t *pr, const ASN1_ENUMERATED *a); +int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *a, int64_t r); + +int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); +long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a); +ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn, ASN1_ENUMERATED *ai); +BIGNUM *ASN1_ENUMERATED_to_BN(const ASN1_ENUMERATED *ai, BIGNUM *bn); + +/* General */ +/* given a string, return the correct type, max is the maximum length */ +int ASN1_PRINTABLE_type(const unsigned char *s, int max); + +unsigned long ASN1_tag2bit(int tag); + +/* SPECIALS */ +int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag, + int *pclass, long omax); +int ASN1_check_infinite_end(unsigned char **p, long len); +int ASN1_const_check_infinite_end(const unsigned char **p, long len); +void ASN1_put_object(unsigned char **pp, int constructed, int length, + int tag, int xclass); +int ASN1_put_eoc(unsigned char **pp); +int ASN1_object_size(int constructed, int length, int tag); + +/* Used to implement other functions */ +void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, const void *x); + +#define ASN1_dup_of(type, i2d, d2i, x) \ + ((type *)ASN1_dup(CHECKED_I2D_OF(type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(const type, x))) + +void *ASN1_item_dup(const ASN1_ITEM *it, const void *x); +int ASN1_item_sign_ex(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + const void *data, const ASN1_OCTET_STRING *id, + EVP_PKEY *pkey, const EVP_MD *md, OSSL_LIB_CTX *libctx, + const char *propq); +int ASN1_item_verify_ex(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + const ASN1_OCTET_STRING *id, EVP_PKEY *pkey, + OSSL_LIB_CTX *libctx, const char *propq); + +/* ASN1 alloc/free macros for when a type is only used internally */ + +#define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type)) +#define M_ASN1_free_of(x, type) \ + ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type)) + +#ifndef OPENSSL_NO_STDIO +void *ASN1_d2i_fp(void *(*xnew)(void), d2i_of_void *d2i, FILE *in, void **x); + +#define ASN1_d2i_fp_of(type, xnew, d2i, in, x) \ + ((type *)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_fp_ex(const ASN1_ITEM *it, FILE *in, void *x, + OSSL_LIB_CTX *libctx, const char *propq); +void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); +int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, const void *x); + +#define ASN1_i2d_fp_of(type, i2d, out, x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, const void *x); +int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags); +#endif + +int ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in); + +void *ASN1_d2i_bio(void *(*xnew)(void), d2i_of_void *d2i, BIO *in, void **x); + +#define ASN1_d2i_bio_of(type, xnew, d2i, in, x) \ + ((type *)ASN1_d2i_bio(CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_bio_ex(const ASN1_ITEM *it, BIO *in, void *pval, + OSSL_LIB_CTX *libctx, const char *propq); +void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *pval); +int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, const void *x); + +#define ASN1_i2d_bio_of(type, i2d, out, x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, const void *x); +BIO *ASN1_item_i2d_mem_bio(const ASN1_ITEM *it, const ASN1_VALUE *val); +int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a); +int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a); +int ASN1_TIME_print(BIO *bp, const ASN1_TIME *tm); +int ASN1_TIME_print_ex(BIO *bp, const ASN1_TIME *tm, unsigned long flags); +int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v); +int ASN1_STRING_print_ex(BIO *out, const ASN1_STRING *str, unsigned long flags); +int ASN1_buf_print(BIO *bp, const unsigned char *buf, size_t buflen, int off); +int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num, + unsigned char *buf, int off); +int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent); +int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent, + int dump); +const char *ASN1_tag2str(int tag); + +/* Used to load and write Netscape format cert */ + +int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); + +int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); +int ASN1_TYPE_get_octetstring(const ASN1_TYPE *a, unsigned char *data, int max_len); +int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, + unsigned char *data, int len); +int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, + unsigned char *data, int max_len); + +void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); + +ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, + ASN1_OCTET_STRING **oct); + +void ASN1_STRING_set_default_mask(unsigned long mask); +int ASN1_STRING_set_default_mask_asc(const char *p); +unsigned long ASN1_STRING_get_default_mask(void); +int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask); +int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask, + long minsize, long maxsize); + +ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, + const unsigned char *in, int inlen, + int inform, int nid); +ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid); +int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long); +void ASN1_STRING_TABLE_cleanup(void); + +/* ASN1 template functions */ + +/* Old API compatible functions */ +ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it); +ASN1_VALUE *ASN1_item_new_ex(const ASN1_ITEM *it, OSSL_LIB_CTX *libctx, + const char *propq); +void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); +ASN1_VALUE *ASN1_item_d2i_ex(ASN1_VALUE **val, const unsigned char **in, + long len, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); +ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, + long len, const ASN1_ITEM *it); +int ASN1_item_i2d(const ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); +int ASN1_item_ndef_i2d(const ASN1_VALUE *val, unsigned char **out, + const ASN1_ITEM *it); + +void ASN1_add_oid_module(void); +void ASN1_add_stable_module(void); + +ASN1_TYPE *ASN1_generate_nconf(const char *str, CONF *nconf); +ASN1_TYPE *ASN1_generate_v3(const char *str, X509V3_CTX *cnf); +int ASN1_str2mask(const char *str, unsigned long *pmask); + +/* ASN1 Print flags */ + +/* Indicate missing OPTIONAL fields */ +#define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001 +/* Mark start and end of SEQUENCE */ +#define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002 +/* Mark start and end of SEQUENCE/SET OF */ +#define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004 +/* Show the ASN1 type of primitives */ +#define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008 +/* Don't show ASN1 type of ANY */ +#define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010 +/* Don't show ASN1 type of MSTRINGs */ +#define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020 +/* Don't show field names in SEQUENCE */ +#define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040 +/* Show structure names of each SEQUENCE field */ +#define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080 +/* Don't show structure name even at top level */ +#define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100 + +int ASN1_item_print(BIO *out, const ASN1_VALUE *ifld, int indent, + const ASN1_ITEM *it, const ASN1_PCTX *pctx); +ASN1_PCTX *ASN1_PCTX_new(void); +void ASN1_PCTX_free(ASN1_PCTX *p); +unsigned long ASN1_PCTX_get_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_nm_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_cert_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_oid_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_str_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags); + +ASN1_SCTX *ASN1_SCTX_new(int (*scan_cb)(ASN1_SCTX *ctx)); +void ASN1_SCTX_free(ASN1_SCTX *p); +const ASN1_ITEM *ASN1_SCTX_get_item(ASN1_SCTX *p); +const ASN1_TEMPLATE *ASN1_SCTX_get_template(ASN1_SCTX *p); +unsigned long ASN1_SCTX_get_flags(ASN1_SCTX *p); +void ASN1_SCTX_set_app_data(ASN1_SCTX *p, void *data); +void *ASN1_SCTX_get_app_data(ASN1_SCTX *p); + +const BIO_METHOD *BIO_f_asn1(void); + +/* cannot constify val because of CMS_stream() */ +BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it); + +int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const ASN1_ITEM *it); +int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const char *hdr, const ASN1_ITEM *it); +/* cannot constify val because of CMS_dataFinal() */ +int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, + int ctype_nid, int econt_nid, + STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it); +int SMIME_write_ASN1_ex(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, + int ctype_nid, int econt_nid, + STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); +ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); +ASN1_VALUE *SMIME_read_ASN1_ex(BIO *bio, int flags, BIO **bcont, + const ASN1_ITEM *it, ASN1_VALUE **x, + OSSL_LIB_CTX *libctx, const char *propq); +int SMIME_crlf_copy(BIO *in, BIO *out, int flags); +int SMIME_text(BIO *in, BIO *out); + +const ASN1_ITEM *ASN1_ITEM_lookup(const char *name); +const ASN1_ITEM *ASN1_ITEM_get(size_t i); + +/* Legacy compatibility */ +#define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) +#define DECLARE_ASN1_FUNCTIONS_const(type) DECLARE_ASN1_FUNCTIONS(type) +#define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, name) +#define I2D_OF_const(type) I2D_OF(type) +#define ASN1_dup_of_const(type, i2d, d2i, x) ASN1_dup_of(type, i2d, d2i, x) +#define ASN1_i2d_fp_of_const(type, i2d, out, x) ASN1_i2d_fp_of(type, i2d, out, x) +#define ASN1_i2d_bio_of_const(type, i2d, out, x) ASN1_i2d_bio_of(type, i2d, out, x) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/asn1t.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/asn1t.h new file mode 100644 index 00000000000000..dc9042c812c95a --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/asn1t.h @@ -0,0 +1,935 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/asn1t.h.in + * + * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ASN1T_H +#define OPENSSL_ASN1T_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASN1T_H +#endif + +#include +#include +#include + +#ifdef OPENSSL_BUILD_SHLIBCRYPTO +#undef OPENSSL_EXTERN +#define OPENSSL_EXTERN OPENSSL_EXPORT +#endif + +/* ASN1 template defines, structures and functions */ + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * These are the possible values for the itype field of the + * ASN1_ITEM structure and determine how it is interpreted. + * + * For PRIMITIVE types the underlying type + * determines the behaviour if items is NULL. + * + * Otherwise templates must contain a single + * template and the type is treated in the + * same way as the type specified in the template. + * + * For SEQUENCE types the templates field points + * to the members, the size field is the + * structure size. + * + * For CHOICE types the templates field points + * to each possible member (typically a union) + * and the 'size' field is the offset of the + * selector. + * + * The 'funcs' field is used for application-specific + * data and functions. + * + * The EXTERN type uses a new style d2i/i2d. + * The new style should be used where possible + * because it avoids things like the d2i IMPLICIT + * hack. + * + * MSTRING is a multiple string type, it is used + * for a CHOICE of character strings where the + * actual strings all occupy an ASN1_STRING + * structure. In this case the 'utype' field + * has a special meaning, it is used as a mask + * of acceptable types using the B_ASN1 constants. + * + * NDEF_SEQUENCE is the same as SEQUENCE except + * that it will use indefinite length constructed + * encoding if requested. + * + */ + +#define ASN1_ITYPE_PRIMITIVE 0x0 +#define ASN1_ITYPE_SEQUENCE 0x1 +#define ASN1_ITYPE_CHOICE 0x2 +/* unused value 0x3 */ +#define ASN1_ITYPE_EXTERN 0x4 +#define ASN1_ITYPE_MSTRING 0x5 +#define ASN1_ITYPE_NDEF_SEQUENCE 0x6 + +/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */ +#define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)((iptr)())) + +/* Macros for start and end of ASN1_ITEM definition */ + +#define ASN1_ITEM_start(itname) \ + const ASN1_ITEM *itname##_it(void) \ + { \ + static const ASN1_ITEM local_it = { + +#define static_ASN1_ITEM_start(itname) \ + static ASN1_ITEM_start(itname) + +#define ASN1_ITEM_end(itname) \ + } \ + ; \ + return &local_it; \ + } + +/* Macros to aid ASN1 template writing */ + +#define ASN1_ITEM_TEMPLATE(tname) \ + static const ASN1_TEMPLATE tname##_item_tt + +#define ASN1_ITEM_TEMPLATE_END(tname) \ + ; \ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_PRIMITIVE, \ + -1, \ + &tname##_item_tt, \ + 0, \ + NULL, \ + 0, \ + #tname ASN1_ITEM_end(tname) +#define static_ASN1_ITEM_TEMPLATE_END(tname) \ + ; \ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_PRIMITIVE, \ + -1, \ + &tname##_item_tt, \ + 0, \ + NULL, \ + 0, \ + #tname ASN1_ITEM_end(tname) + +/* This is a ASN1 type which just embeds a template */ + +/*- + * This pair helps declare a SEQUENCE. We can do: + * + * ASN1_SEQUENCE(stname) = { + * ... SEQUENCE components ... + * } ASN1_SEQUENCE_END(stname) + * + * This will produce an ASN1_ITEM called stname_it + * for a structure called stname. + * + * If you want the same structure but a different + * name then use: + * + * ASN1_SEQUENCE(itname) = { + * ... SEQUENCE components ... + * } ASN1_SEQUENCE_END_name(stname, itname) + * + * This will create an item called itname_it using + * a structure called stname. + */ + +#define ASN1_SEQUENCE(tname) \ + static const ASN1_TEMPLATE tname##_seq_tt[] + +#define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname) + +#define static_ASN1_SEQUENCE_END(stname) static_ASN1_SEQUENCE_END_name(stname, stname) + +#define ASN1_SEQUENCE_END_name(stname, tname) \ + ; \ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE, \ + V_ASN1_SEQUENCE, \ + tname##_seq_tt, \ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \ + NULL, \ + sizeof(stname), \ + #tname ASN1_ITEM_end(tname) + +#define static_ASN1_SEQUENCE_END_name(stname, tname) \ + ; \ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE, \ + V_ASN1_SEQUENCE, \ + tname##_seq_tt, \ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \ + NULL, \ + sizeof(stname), \ + #stname ASN1_ITEM_end(tname) + +#define ASN1_NDEF_SEQUENCE(tname) \ + ASN1_SEQUENCE(tname) + +#define ASN1_NDEF_SEQUENCE_cb(tname, cb) \ + ASN1_SEQUENCE_cb(tname, cb) + +#define ASN1_SEQUENCE_cb(tname, cb) \ + static const ASN1_AUX tname##_aux = { NULL, 0, 0, 0, cb, 0, NULL }; \ + ASN1_SEQUENCE(tname) + +#define ASN1_SEQUENCE_const_cb(tname, const_cb) \ + static const ASN1_AUX tname##_aux = { NULL, ASN1_AFLG_CONST_CB, 0, 0, NULL, 0, const_cb }; \ + ASN1_SEQUENCE(tname) + +#define ASN1_SEQUENCE_cb_const_cb(tname, cb, const_cb) \ + static const ASN1_AUX tname##_aux = { NULL, ASN1_AFLG_CONST_CB, 0, 0, cb, 0, const_cb }; \ + ASN1_SEQUENCE(tname) + +#define ASN1_SEQUENCE_ref(tname, cb) \ + static const ASN1_AUX tname##_aux = { NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), offsetof(tname, lock), cb, 0, NULL }; \ + ASN1_SEQUENCE(tname) + +#define ASN1_SEQUENCE_enc(tname, enc, cb) \ + static const ASN1_AUX tname##_aux = { NULL, ASN1_AFLG_ENCODING, 0, 0, cb, offsetof(tname, enc), NULL }; \ + ASN1_SEQUENCE(tname) + +#define ASN1_NDEF_SEQUENCE_END(tname) \ + ; \ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE, \ + V_ASN1_SEQUENCE, \ + tname##_seq_tt, \ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \ + NULL, \ + sizeof(tname), \ + #tname ASN1_ITEM_end(tname) +#define static_ASN1_NDEF_SEQUENCE_END(tname) \ + ; \ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE, \ + V_ASN1_SEQUENCE, \ + tname##_seq_tt, \ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \ + NULL, \ + sizeof(tname), \ + #tname ASN1_ITEM_end(tname) + +#define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) + +#define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) +#define static_ASN1_SEQUENCE_END_cb(stname, tname) static_ASN1_SEQUENCE_END_ref(stname, tname) + +#define ASN1_SEQUENCE_END_ref(stname, tname) \ + ; \ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE, \ + V_ASN1_SEQUENCE, \ + tname##_seq_tt, \ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \ + &tname##_aux, \ + sizeof(stname), \ + #tname ASN1_ITEM_end(tname) +#define static_ASN1_SEQUENCE_END_ref(stname, tname) \ + ; \ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE, \ + V_ASN1_SEQUENCE, \ + tname##_seq_tt, \ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \ + &tname##_aux, \ + sizeof(stname), \ + #stname ASN1_ITEM_end(tname) + +#define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \ + ; \ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE, \ + V_ASN1_SEQUENCE, \ + tname##_seq_tt, \ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \ + &tname##_aux, \ + sizeof(stname), \ + #stname ASN1_ITEM_end(tname) + +/*- + * This pair helps declare a CHOICE type. We can do: + * + * ASN1_CHOICE(chname) = { + * ... CHOICE options ... + * ASN1_CHOICE_END(chname) + * + * This will produce an ASN1_ITEM called chname_it + * for a structure called chname. The structure + * definition must look like this: + * typedef struct { + * int type; + * union { + * ASN1_SOMETHING *opt1; + * ASN1_SOMEOTHER *opt2; + * } value; + * } chname; + * + * the name of the selector must be 'type'. + * to use an alternative selector name use the + * ASN1_CHOICE_END_selector() version. + */ + +#define ASN1_CHOICE(tname) \ + static const ASN1_TEMPLATE tname##_ch_tt[] + +#define ASN1_CHOICE_cb(tname, cb) \ + static const ASN1_AUX tname##_aux = { NULL, 0, 0, 0, cb, 0, NULL }; \ + ASN1_CHOICE(tname) + +#define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname) + +#define static_ASN1_CHOICE_END(stname) static_ASN1_CHOICE_END_name(stname, stname) + +#define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type) + +#define static_ASN1_CHOICE_END_name(stname, tname) static_ASN1_CHOICE_END_selector(stname, tname, type) + +#define ASN1_CHOICE_END_selector(stname, tname, selname) \ + ; \ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE, \ + offsetof(stname, selname), \ + tname##_ch_tt, \ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE), \ + NULL, \ + sizeof(stname), \ + #stname ASN1_ITEM_end(tname) + +#define static_ASN1_CHOICE_END_selector(stname, tname, selname) \ + ; \ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE, \ + offsetof(stname, selname), \ + tname##_ch_tt, \ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE), \ + NULL, \ + sizeof(stname), \ + #stname ASN1_ITEM_end(tname) + +#define ASN1_CHOICE_END_cb(stname, tname, selname) \ + ; \ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE, \ + offsetof(stname, selname), \ + tname##_ch_tt, \ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE), \ + &tname##_aux, \ + sizeof(stname), \ + #stname ASN1_ITEM_end(tname) + +/* This helps with the template wrapper form of ASN1_ITEM */ + +#define ASN1_EX_TEMPLATE_TYPE(flags, tag, name, type) { \ + (flags), (tag), 0, \ + #name, ASN1_ITEM_ref(type) \ +} + +/* These help with SEQUENCE or CHOICE components */ + +/* used to declare other types */ + +#define ASN1_EX_TYPE(flags, tag, stname, field, type) { \ + (flags), (tag), offsetof(stname, field), \ + #field, ASN1_ITEM_ref(type) \ +} + +/* implicit and explicit helper macros */ + +#define ASN1_IMP_EX(stname, field, type, tag, ex) \ + ASN1_EX_TYPE(ASN1_TFLG_IMPLICIT | (ex), tag, stname, field, type) + +#define ASN1_EXP_EX(stname, field, type, tag, ex) \ + ASN1_EX_TYPE(ASN1_TFLG_EXPLICIT | (ex), tag, stname, field, type) + +/* Any defined by macros: the field used is in the table itself */ + +#define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, tblname##_adb } +#define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, tblname##_adb } + +/* Plain simple type */ +#define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0, 0, stname, field, type) +/* Embedded simple type */ +#define ASN1_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_EMBED, 0, stname, field, type) + +/* OPTIONAL simple type */ +#define ASN1_OPT(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL, 0, stname, field, type) +#define ASN1_OPT_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL | ASN1_TFLG_EMBED, 0, stname, field, type) + +/* IMPLICIT tagged simple type */ +#define ASN1_IMP(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, 0) +#define ASN1_IMP_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_EMBED) + +/* IMPLICIT tagged OPTIONAL simple type */ +#define ASN1_IMP_OPT(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL) +#define ASN1_IMP_OPT_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL | ASN1_TFLG_EMBED) + +/* Same as above but EXPLICIT */ + +#define ASN1_EXP(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, 0) +#define ASN1_EXP_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_EMBED) +#define ASN1_EXP_OPT(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL) +#define ASN1_EXP_OPT_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL | ASN1_TFLG_EMBED) + +/* SEQUENCE OF type */ +#define ASN1_SEQUENCE_OF(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, stname, field, type) + +/* OPTIONAL SEQUENCE OF */ +#define ASN1_SEQUENCE_OF_OPT(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, 0, stname, field, type) + +/* Same as above but for SET OF */ + +#define ASN1_SET_OF(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SET_OF, 0, stname, field, type) + +#define ASN1_SET_OF_OPT(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SET_OF | ASN1_TFLG_OPTIONAL, 0, stname, field, type) + +/* Finally compound types of SEQUENCE, SET, IMPLICIT, EXPLICIT and OPTIONAL */ + +#define ASN1_IMP_SET_OF(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF) + +#define ASN1_EXP_SET_OF(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF) + +#define ASN1_IMP_SET_OF_OPT(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF | ASN1_TFLG_OPTIONAL) + +#define ASN1_EXP_SET_OF_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF | ASN1_TFLG_OPTIONAL) + +#define ASN1_IMP_SEQUENCE_OF(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF) + +#define ASN1_IMP_SEQUENCE_OF_OPT(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL) + +#define ASN1_EXP_SEQUENCE_OF(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF) + +#define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL) + +/* EXPLICIT using indefinite length constructed form */ +#define ASN1_NDEF_EXP(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_NDEF) + +/* EXPLICIT OPTIONAL using indefinite length constructed form */ +#define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL | ASN1_TFLG_NDEF) + +/* Macros for the ASN1_ADB structure */ + +#define ASN1_ADB(name) \ + static const ASN1_ADB_TABLE name##_adbtbl[] + +#define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \ + ; \ + static const ASN1_ITEM *name##_adb(void) \ + { \ + static const ASN1_ADB internal_adb = { \ + flags, \ + offsetof(name, field), \ + adb_cb, \ + name##_adbtbl, \ + sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE), \ + def, \ + none \ + }; \ + return (const ASN1_ITEM *)&internal_adb; \ + } \ + void dummy_function(void) + +#define ADB_ENTRY(val, template) { val, template } + +#define ASN1_ADB_TEMPLATE(name) \ + static const ASN1_TEMPLATE name##_tt + +/* + * This is the ASN1 template structure that defines a wrapper round the + * actual type. It determines the actual position of the field in the value + * structure, various flags such as OPTIONAL and the field name. + */ + +struct ASN1_TEMPLATE_st { + unsigned long flags; /* Various flags */ + long tag; /* tag, not used if no tagging */ + unsigned long offset; /* Offset of this field in structure */ + const char *field_name; /* Field name */ + ASN1_ITEM_EXP *item; /* Relevant ASN1_ITEM or ASN1_ADB */ +}; + +/* Macro to extract ASN1_ITEM and ASN1_ADB pointer from ASN1_TEMPLATE */ + +#define ASN1_TEMPLATE_item(t) (t->item_ptr) +#define ASN1_TEMPLATE_adb(t) (t->item_ptr) + +typedef struct ASN1_ADB_TABLE_st ASN1_ADB_TABLE; +typedef struct ASN1_ADB_st ASN1_ADB; + +struct ASN1_ADB_st { + unsigned long flags; /* Various flags */ + unsigned long offset; /* Offset of selector field */ + int (*adb_cb)(long *psel); /* Application callback */ + const ASN1_ADB_TABLE *tbl; /* Table of possible types */ + long tblcount; /* Number of entries in tbl */ + const ASN1_TEMPLATE *default_tt; /* Type to use if no match */ + const ASN1_TEMPLATE *null_tt; /* Type to use if selector is NULL */ +}; + +struct ASN1_ADB_TABLE_st { + long value; /* NID for an object or value for an int */ + const ASN1_TEMPLATE tt; /* item for this value */ +}; + +/* template flags */ + +/* Field is optional */ +#define ASN1_TFLG_OPTIONAL (0x1) + +/* Field is a SET OF */ +#define ASN1_TFLG_SET_OF (0x1 << 1) + +/* Field is a SEQUENCE OF */ +#define ASN1_TFLG_SEQUENCE_OF (0x2 << 1) + +/* + * Special case: this refers to a SET OF that will be sorted into DER order + * when encoded *and* the corresponding STACK will be modified to match the + * new order. + */ +#define ASN1_TFLG_SET_ORDER (0x3 << 1) + +/* Mask for SET OF or SEQUENCE OF */ +#define ASN1_TFLG_SK_MASK (0x3 << 1) + +/* + * These flags mean the tag should be taken from the tag field. If EXPLICIT + * then the underlying type is used for the inner tag. + */ + +/* IMPLICIT tagging */ +#define ASN1_TFLG_IMPTAG (0x1 << 3) + +/* EXPLICIT tagging, inner tag from underlying type */ +#define ASN1_TFLG_EXPTAG (0x2 << 3) + +#define ASN1_TFLG_TAG_MASK (0x3 << 3) + +/* context specific IMPLICIT */ +#define ASN1_TFLG_IMPLICIT (ASN1_TFLG_IMPTAG | ASN1_TFLG_CONTEXT) + +/* context specific EXPLICIT */ +#define ASN1_TFLG_EXPLICIT (ASN1_TFLG_EXPTAG | ASN1_TFLG_CONTEXT) + +/* + * If tagging is in force these determine the type of tag to use. Otherwise + * the tag is determined by the underlying type. These values reflect the + * actual octet format. + */ + +/* Universal tag */ +#define ASN1_TFLG_UNIVERSAL (0x0 << 6) +/* Application tag */ +#define ASN1_TFLG_APPLICATION (0x1 << 6) +/* Context specific tag */ +#define ASN1_TFLG_CONTEXT (0x2 << 6) +/* Private tag */ +#define ASN1_TFLG_PRIVATE (0x3 << 6) + +#define ASN1_TFLG_TAG_CLASS (0x3 << 6) + +/* + * These are for ANY DEFINED BY type. In this case the 'item' field points to + * an ASN1_ADB structure which contains a table of values to decode the + * relevant type + */ + +#define ASN1_TFLG_ADB_MASK (0x3 << 8) + +#define ASN1_TFLG_ADB_OID (0x1 << 8) + +#define ASN1_TFLG_ADB_INT (0x1 << 9) + +/* + * This flag when present in a SEQUENCE OF, SET OF or EXPLICIT causes + * indefinite length constructed encoding to be used if required. + */ + +#define ASN1_TFLG_NDEF (0x1 << 11) + +/* Field is embedded and not a pointer */ +#define ASN1_TFLG_EMBED (0x1 << 12) + +/* This is the actual ASN1 item itself */ + +struct ASN1_ITEM_st { + char itype; /* The item type, primitive, SEQUENCE, CHOICE + * or extern */ + long utype; /* underlying type */ + const ASN1_TEMPLATE *templates; /* If SEQUENCE or CHOICE this contains + * the contents */ + long tcount; /* Number of templates if SEQUENCE or CHOICE */ + const void *funcs; /* further data and type-specific functions */ + /* funcs can be ASN1_PRIMITIVE_FUNCS*, ASN1_EXTERN_FUNCS*, or ASN1_AUX* */ + long size; /* Structure size (usually) */ + const char *sname; /* Structure name */ +}; + +/* + * Cache for ASN1 tag and length, so we don't keep re-reading it for things + * like CHOICE + */ + +struct ASN1_TLC_st { + char valid; /* Values below are valid */ + int ret; /* return value */ + long plen; /* length */ + int ptag; /* class value */ + int pclass; /* class value */ + int hdrlen; /* header length */ +}; + +/* Typedefs for ASN1 function pointers */ +typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx); + +typedef int ASN1_ex_d2i_ex(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx, OSSL_LIB_CTX *libctx, + const char *propq); +typedef int ASN1_ex_i2d(const ASN1_VALUE **pval, unsigned char **out, + const ASN1_ITEM *it, int tag, int aclass); +typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it); +typedef int ASN1_ex_new_ex_func(ASN1_VALUE **pval, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); +typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it); + +typedef int ASN1_ex_print_func(BIO *out, const ASN1_VALUE **pval, + int indent, const char *fname, + const ASN1_PCTX *pctx); + +typedef int ASN1_primitive_i2c(const ASN1_VALUE **pval, unsigned char *cont, + int *putype, const ASN1_ITEM *it); +typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont, + int len, int utype, char *free_cont, + const ASN1_ITEM *it); +typedef int ASN1_primitive_print(BIO *out, const ASN1_VALUE **pval, + const ASN1_ITEM *it, int indent, + const ASN1_PCTX *pctx); + +typedef struct ASN1_EXTERN_FUNCS_st { + void *app_data; + ASN1_ex_new_func *asn1_ex_new; + ASN1_ex_free_func *asn1_ex_free; + ASN1_ex_free_func *asn1_ex_clear; + ASN1_ex_d2i *asn1_ex_d2i; + ASN1_ex_i2d *asn1_ex_i2d; + ASN1_ex_print_func *asn1_ex_print; + ASN1_ex_new_ex_func *asn1_ex_new_ex; + ASN1_ex_d2i_ex *asn1_ex_d2i_ex; +} ASN1_EXTERN_FUNCS; + +typedef struct ASN1_PRIMITIVE_FUNCS_st { + void *app_data; + unsigned long flags; + ASN1_ex_new_func *prim_new; + ASN1_ex_free_func *prim_free; + ASN1_ex_free_func *prim_clear; + ASN1_primitive_c2i *prim_c2i; + ASN1_primitive_i2c *prim_i2c; + ASN1_primitive_print *prim_print; +} ASN1_PRIMITIVE_FUNCS; + +/* + * This is the ASN1_AUX structure: it handles various miscellaneous + * requirements. For example the use of reference counts and an informational + * callback. The "informational callback" is called at various points during + * the ASN1 encoding and decoding. It can be used to provide minor + * customisation of the structures used. This is most useful where the + * supplied routines *almost* do the right thing but need some extra help at + * a few points. If the callback returns zero then it is assumed a fatal + * error has occurred and the main operation should be abandoned. If major + * changes in the default behaviour are required then an external type is + * more appropriate. + * For the operations ASN1_OP_I2D_PRE, ASN1_OP_I2D_POST, ASN1_OP_PRINT_PRE, and + * ASN1_OP_PRINT_POST, meanwhile a variant of the callback with const parameter + * 'in' is provided to make clear statically that its input is not modified. If + * and only if this variant is in use the flag ASN1_AFLG_CONST_CB must be set. + */ + +typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it, + void *exarg); +typedef int ASN1_aux_const_cb(int operation, const ASN1_VALUE **in, + const ASN1_ITEM *it, void *exarg); + +typedef struct ASN1_AUX_st { + void *app_data; + int flags; + int ref_offset; /* Offset of reference value */ + int ref_lock; /* Offset of lock value */ + ASN1_aux_cb *asn1_cb; + int enc_offset; /* Offset of ASN1_ENCODING structure */ + ASN1_aux_const_cb *asn1_const_cb; /* for ASN1_OP_I2D_ and ASN1_OP_PRINT_ */ +} ASN1_AUX; + +/* For print related callbacks exarg points to this structure */ +typedef struct ASN1_PRINT_ARG_st { + BIO *out; + int indent; + const ASN1_PCTX *pctx; +} ASN1_PRINT_ARG; + +/* For streaming related callbacks exarg points to this structure */ +typedef struct ASN1_STREAM_ARG_st { + /* BIO to stream through */ + BIO *out; + /* BIO with filters appended */ + BIO *ndef_bio; + /* Streaming I/O boundary */ + unsigned char **boundary; +} ASN1_STREAM_ARG; + +/* Flags in ASN1_AUX */ + +/* Use a reference count */ +#define ASN1_AFLG_REFCOUNT 1 +/* Save the encoding of structure (useful for signatures) */ +#define ASN1_AFLG_ENCODING 2 +/* The Sequence length is invalid */ +#define ASN1_AFLG_BROKEN 4 +/* Use the new asn1_const_cb */ +#define ASN1_AFLG_CONST_CB 8 + +/* operation values for asn1_cb */ + +#define ASN1_OP_NEW_PRE 0 +#define ASN1_OP_NEW_POST 1 +#define ASN1_OP_FREE_PRE 2 +#define ASN1_OP_FREE_POST 3 +#define ASN1_OP_D2I_PRE 4 +#define ASN1_OP_D2I_POST 5 +#define ASN1_OP_I2D_PRE 6 +#define ASN1_OP_I2D_POST 7 +#define ASN1_OP_PRINT_PRE 8 +#define ASN1_OP_PRINT_POST 9 +#define ASN1_OP_STREAM_PRE 10 +#define ASN1_OP_STREAM_POST 11 +#define ASN1_OP_DETACHED_PRE 12 +#define ASN1_OP_DETACHED_POST 13 +#define ASN1_OP_DUP_PRE 14 +#define ASN1_OP_DUP_POST 15 +#define ASN1_OP_GET0_LIBCTX 16 +#define ASN1_OP_GET0_PROPQ 17 + +/* Macro to implement a primitive type */ +#define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0) +#define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) \ + ASN1_ITEM_start(itname) \ + ASN1_ITYPE_PRIMITIVE, \ + V_##vname, NULL, 0, NULL, ex, #itname ASN1_ITEM_end(itname) + +/* Macro to implement a multi string type */ +#define IMPLEMENT_ASN1_MSTRING(itname, mask) \ + ASN1_ITEM_start(itname) \ + ASN1_ITYPE_MSTRING, \ + mask, NULL, 0, NULL, sizeof(ASN1_STRING), #itname ASN1_ITEM_end(itname) + +#define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \ + ASN1_ITEM_start(sname) \ + ASN1_ITYPE_EXTERN, \ + tag, \ + NULL, \ + 0, \ + &fptrs, \ + 0, \ + #sname ASN1_ITEM_end(sname) + +/* Macro to implement standard functions in terms of ASN1_ITEM structures */ + +#define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname) + +#define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, itname) + +#define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \ + IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname) + +#define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, stname) + +#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname) + +#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \ + pre stname *fname##_new(void) \ + { \ + return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \ + } \ + pre void fname##_free(stname *a) \ + { \ + ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \ + } + +#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \ + stname *fname##_new(void) \ + { \ + return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \ + } \ + void fname##_free(stname *a) \ + { \ + ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \ + } + +#define IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) + +#define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \ + stname *d2i_##fname(stname **a, const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname)); \ + } \ + int i2d_##fname(const stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname)); \ + } + +#define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \ + int i2d_##stname##_NDEF(const stname *a, unsigned char **out) \ + { \ + return ASN1_item_ndef_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(stname)); \ + } + +#define IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS(stname) \ + static stname *d2i_##stname(stname **a, \ + const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, \ + ASN1_ITEM_rptr(stname)); \ + } \ + static int i2d_##stname(const stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((const ASN1_VALUE *)a, out, \ + ASN1_ITEM_rptr(stname)); \ + } + +#define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \ + stname *stname##_dup(const stname *x) \ + { \ + return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \ + } + +#define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \ + IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname) + +#define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \ + int fname##_print_ctx(BIO *out, const stname *x, int indent, \ + const ASN1_PCTX *pctx) \ + { \ + return ASN1_item_print(out, (const ASN1_VALUE *)x, indent, \ + ASN1_ITEM_rptr(itname), pctx); \ + } + +/* external definitions for primitive types */ + +DECLARE_ASN1_ITEM(ASN1_BOOLEAN) +DECLARE_ASN1_ITEM(ASN1_TBOOLEAN) +DECLARE_ASN1_ITEM(ASN1_FBOOLEAN) +DECLARE_ASN1_ITEM(ASN1_SEQUENCE) +DECLARE_ASN1_ITEM(CBIGNUM) +DECLARE_ASN1_ITEM(BIGNUM) +DECLARE_ASN1_ITEM(INT32) +DECLARE_ASN1_ITEM(ZINT32) +DECLARE_ASN1_ITEM(UINT32) +DECLARE_ASN1_ITEM(ZUINT32) +DECLARE_ASN1_ITEM(INT64) +DECLARE_ASN1_ITEM(ZINT64) +DECLARE_ASN1_ITEM(UINT64) +DECLARE_ASN1_ITEM(ZUINT64) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * LONG and ZLONG are strongly discouraged for use as stored data, as the + * underlying C type (long) differs in size depending on the architecture. + * They are designed with 32-bit longs in mind. + */ +DECLARE_ASN1_ITEM(LONG) +DECLARE_ASN1_ITEM(ZLONG) +#endif + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_VALUE, ASN1_VALUE, ASN1_VALUE) +#define sk_ASN1_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_value(sk, idx) ((ASN1_VALUE *)OPENSSL_sk_value(ossl_check_const_ASN1_VALUE_sk_type(sk), (idx))) +#define sk_ASN1_VALUE_new(cmp) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new(ossl_check_ASN1_VALUE_compfunc_type(cmp))) +#define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_VALUE_new_reserve(cmp, n) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_VALUE_compfunc_type(cmp), (n))) +#define sk_ASN1_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_VALUE_sk_type(sk), (n)) +#define sk_ASN1_VALUE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_delete(sk, i) ((ASN1_VALUE *)OPENSSL_sk_delete(ossl_check_ASN1_VALUE_sk_type(sk), (i))) +#define sk_ASN1_VALUE_delete_ptr(sk, ptr) ((ASN1_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))) +#define sk_ASN1_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_pop(sk) ((ASN1_VALUE *)OPENSSL_sk_pop(ossl_check_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_shift(sk) ((ASN1_VALUE *)OPENSSL_sk_shift(ossl_check_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_VALUE_sk_type(sk),ossl_check_ASN1_VALUE_freefunc_type(freefunc)) +#define sk_ASN1_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), (idx)) +#define sk_ASN1_VALUE_set(sk, idx, ptr) ((ASN1_VALUE *)OPENSSL_sk_set(ossl_check_ASN1_VALUE_sk_type(sk), (idx), ossl_check_ASN1_VALUE_type(ptr))) +#define sk_ASN1_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), pnum) +#define sk_ASN1_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_dup(sk) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_copyfunc_type(copyfunc), ossl_check_ASN1_VALUE_freefunc_type(freefunc))) +#define sk_ASN1_VALUE_set_cmp_func(sk, cmp) ((sk_ASN1_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_compfunc_type(cmp))) + +/* clang-format on */ + +/* Functions used internally by the ASN1 code */ + +int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it); +void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it); + +int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx); + +int ASN1_item_ex_i2d(const ASN1_VALUE **pval, unsigned char **out, + const ASN1_ITEM *it, int tag, int aclass); + +/* Legacy compatibility */ +#define IMPLEMENT_ASN1_FUNCTIONS_const(name) IMPLEMENT_ASN1_FUNCTIONS(name) +#define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/bio.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/bio.h new file mode 100644 index 00000000000000..f87990019926e1 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/bio.h @@ -0,0 +1,1028 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/bio.h.in + * + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_BIO_H +#define OPENSSL_BIO_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BIO_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* There are the classes of BIOs */ +#define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */ +#define BIO_TYPE_FILTER 0x0200 +#define BIO_TYPE_SOURCE_SINK 0x0400 + +/* These are the 'types' of BIOs */ +#define BIO_TYPE_NONE 0 +#define BIO_TYPE_MEM (1 | BIO_TYPE_SOURCE_SINK) +#define BIO_TYPE_FILE (2 | BIO_TYPE_SOURCE_SINK) + +#define BIO_TYPE_FD (4 | BIO_TYPE_SOURCE_SINK | BIO_TYPE_DESCRIPTOR) +#define BIO_TYPE_SOCKET (5 | BIO_TYPE_SOURCE_SINK | BIO_TYPE_DESCRIPTOR) +#define BIO_TYPE_NULL (6 | BIO_TYPE_SOURCE_SINK) +#define BIO_TYPE_SSL (7 | BIO_TYPE_FILTER) +#define BIO_TYPE_MD (8 | BIO_TYPE_FILTER) +#define BIO_TYPE_BUFFER (9 | BIO_TYPE_FILTER) +#define BIO_TYPE_CIPHER (10 | BIO_TYPE_FILTER) +#define BIO_TYPE_BASE64 (11 | BIO_TYPE_FILTER) +#define BIO_TYPE_CONNECT (12 | BIO_TYPE_SOURCE_SINK | BIO_TYPE_DESCRIPTOR) +#define BIO_TYPE_ACCEPT (13 | BIO_TYPE_SOURCE_SINK | BIO_TYPE_DESCRIPTOR) + +#define BIO_TYPE_NBIO_TEST (16 | BIO_TYPE_FILTER) /* server proxy BIO */ +#define BIO_TYPE_NULL_FILTER (17 | BIO_TYPE_FILTER) +#define BIO_TYPE_BIO (19 | BIO_TYPE_SOURCE_SINK) /* half a BIO pair */ +#define BIO_TYPE_LINEBUFFER (20 | BIO_TYPE_FILTER) +#define BIO_TYPE_DGRAM (21 | BIO_TYPE_SOURCE_SINK | BIO_TYPE_DESCRIPTOR) +#define BIO_TYPE_ASN1 (22 | BIO_TYPE_FILTER) +#define BIO_TYPE_COMP (23 | BIO_TYPE_FILTER) +#ifndef OPENSSL_NO_SCTP +#define BIO_TYPE_DGRAM_SCTP (24 | BIO_TYPE_SOURCE_SINK | BIO_TYPE_DESCRIPTOR) +#endif +#define BIO_TYPE_CORE_TO_PROV (25 | BIO_TYPE_SOURCE_SINK) +#define BIO_TYPE_DGRAM_PAIR (26 | BIO_TYPE_SOURCE_SINK) +#define BIO_TYPE_DGRAM_MEM (27 | BIO_TYPE_SOURCE_SINK) + +/* Custom type starting index returned by BIO_get_new_index() */ +#define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF + +/* + * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. + * BIO_set_fp(in,stdin,BIO_NOCLOSE); + */ +#define BIO_NOCLOSE 0x00 +#define BIO_CLOSE 0x01 + +/* + * These are used in the following macros and are passed to BIO_ctrl() + */ +#define BIO_CTRL_RESET 1 /* opt - rewind/zero etc */ +#define BIO_CTRL_EOF 2 /* opt - are we at the eof */ +#define BIO_CTRL_INFO 3 /* opt - extra tit-bits */ +#define BIO_CTRL_SET 4 /* man - set the 'IO' type */ +#define BIO_CTRL_GET 5 /* man - get the 'IO' type */ +#define BIO_CTRL_PUSH 6 /* opt - internal, used to signify change */ +#define BIO_CTRL_POP 7 /* opt - internal, used to signify change */ +#define BIO_CTRL_GET_CLOSE 8 /* man - set the 'close' on free */ +#define BIO_CTRL_SET_CLOSE 9 /* man - set the 'close' on free */ +#define BIO_CTRL_PENDING 10 /* opt - is their more data buffered */ +#define BIO_CTRL_FLUSH 11 /* opt - 'flush' buffered output */ +#define BIO_CTRL_DUP 12 /* man - extra stuff for 'duped' BIO */ +#define BIO_CTRL_WPENDING 13 /* opt - number of bytes still to write */ +#define BIO_CTRL_SET_CALLBACK 14 /* opt - set callback function */ +#define BIO_CTRL_GET_CALLBACK 15 /* opt - set callback function */ + +#define BIO_CTRL_PEEK 29 /* BIO_f_buffer special */ +#define BIO_CTRL_SET_FILENAME 30 /* BIO_s_file special */ + +/* dgram BIO stuff */ +#define BIO_CTRL_DGRAM_CONNECT 31 /* BIO dgram special */ +#define BIO_CTRL_DGRAM_SET_CONNECTED 32 /* allow for an externally connected \ + * socket to be passed in */ +#define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33 /* setsockopt, essentially */ +#define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34 /* getsockopt, essentially */ +#define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35 /* setsockopt, essentially */ +#define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36 /* getsockopt, essentially */ + +#define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37 /* flag whether the last */ +#define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38 /* I/O operation timed out */ + +/* #ifdef IP_MTU_DISCOVER */ +#define BIO_CTRL_DGRAM_MTU_DISCOVER 39 /* set DF bit on egress packets */ +/* #endif */ + +#define BIO_CTRL_DGRAM_QUERY_MTU 40 /* as kernel for current MTU */ +#define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47 +#define BIO_CTRL_DGRAM_GET_MTU 41 /* get cached value for MTU */ +#define BIO_CTRL_DGRAM_SET_MTU 42 /* set cached value for MTU. \ + * want to use this if asking \ + * the kernel fails */ + +#define BIO_CTRL_DGRAM_MTU_EXCEEDED 43 /* check whether the MTU was \ + * exceed in the previous write \ + * operation */ + +#define BIO_CTRL_DGRAM_GET_PEER 46 +#define BIO_CTRL_DGRAM_SET_PEER 44 /* Destination for the data */ + +#define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45 /* Next DTLS handshake timeout \ + * to adjust socket timeouts */ +#define BIO_CTRL_DGRAM_SET_DONT_FRAG 48 + +#define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49 + +/* Deliberately outside of OPENSSL_NO_SCTP - used in bss_dgram.c */ +#define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50 +#ifndef OPENSSL_NO_SCTP +/* SCTP stuff */ +#define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51 +#define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52 +#define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53 +#define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60 +#define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61 +#define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62 +#define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63 +#define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64 +#define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65 +#define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70 +#endif + +#define BIO_CTRL_DGRAM_SET_PEEK_MODE 71 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_SEND 72 + * # define BIO_CTRL_SET_KTLS_SEND_CTRL_MSG 74 + * # define BIO_CTRL_CLEAR_KTLS_CTRL_MSG 75 + */ + +#define BIO_CTRL_GET_KTLS_SEND 73 +#define BIO_CTRL_GET_KTLS_RECV 76 + +#define BIO_CTRL_DGRAM_SCTP_WAIT_FOR_DRY 77 +#define BIO_CTRL_DGRAM_SCTP_MSG_WAITING 78 + +/* BIO_f_prefix controls */ +#define BIO_CTRL_SET_PREFIX 79 +#define BIO_CTRL_SET_INDENT 80 +#define BIO_CTRL_GET_INDENT 81 + +#define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +#define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +#define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +#define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +#define BIO_CTRL_DGRAM_GET_CAPS 86 +#define BIO_CTRL_DGRAM_SET_CAPS 87 +#define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +#define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +#define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +#define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +#define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +#define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +#define BIO_DGRAM_CAP_NONE 0U +#define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +#define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +#define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +#define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + +#ifndef OPENSSL_NO_KTLS +#define BIO_get_ktls_send(b) \ + (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) +#define BIO_get_ktls_recv(b) \ + (BIO_ctrl(b, BIO_CTRL_GET_KTLS_RECV, 0, NULL) > 0) +#else +#define BIO_get_ktls_send(b) (0) +#define BIO_get_ktls_recv(b) (0) +#endif + +/* modifiers */ +#define BIO_FP_READ 0x02 +#define BIO_FP_WRITE 0x04 +#define BIO_FP_APPEND 0x08 +#define BIO_FP_TEXT 0x10 + +#define BIO_FLAGS_READ 0x01 +#define BIO_FLAGS_WRITE 0x02 +#define BIO_FLAGS_IO_SPECIAL 0x04 +#define BIO_FLAGS_RWS (BIO_FLAGS_READ | BIO_FLAGS_WRITE | BIO_FLAGS_IO_SPECIAL) +#define BIO_FLAGS_SHOULD_RETRY 0x08 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* This #define was replaced by an internal constant and should not be used. */ +#define BIO_FLAGS_UPLINK 0 +#endif + +#define BIO_FLAGS_BASE64_NO_NL 0x100 + +/* + * This is used with memory BIOs: + * BIO_FLAGS_MEM_RDONLY means we shouldn't free up or change the data in any way; + * BIO_FLAGS_NONCLEAR_RST means we shouldn't clear data on reset. + */ +#define BIO_FLAGS_MEM_RDONLY 0x200 +#define BIO_FLAGS_NONCLEAR_RST 0x400 +#define BIO_FLAGS_IN_EOF 0x800 + +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ + +typedef union bio_addr_st BIO_ADDR; +typedef struct bio_addrinfo_st BIO_ADDRINFO; + +int BIO_get_new_index(void); +void BIO_set_flags(BIO *b, int flags); +int BIO_test_flags(const BIO *b, int flags); +void BIO_clear_flags(BIO *b, int flags); + +#define BIO_get_flags(b) BIO_test_flags(b, ~(0x0)) +#define BIO_set_retry_special(b) \ + BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL | BIO_FLAGS_SHOULD_RETRY)) +#define BIO_set_retry_read(b) \ + BIO_set_flags(b, (BIO_FLAGS_READ | BIO_FLAGS_SHOULD_RETRY)) +#define BIO_set_retry_write(b) \ + BIO_set_flags(b, (BIO_FLAGS_WRITE | BIO_FLAGS_SHOULD_RETRY)) + +/* These are normally used internally in BIOs */ +#define BIO_clear_retry_flags(b) \ + BIO_clear_flags(b, (BIO_FLAGS_RWS | BIO_FLAGS_SHOULD_RETRY)) +#define BIO_get_retry_flags(b) \ + BIO_test_flags(b, (BIO_FLAGS_RWS | BIO_FLAGS_SHOULD_RETRY)) + +/* These should be used by the application to tell why we should retry */ +#define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ) +#define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE) +#define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL) +#define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS) +#define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY) + +/* + * The next three are used in conjunction with the BIO_should_io_special() + * condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int + * *reason); will walk the BIO stack and return the 'reason' for the special + * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return + * the code. + */ +/* + * Returned from the SSL bio when the certificate retrieval code had an error + */ +#define BIO_RR_SSL_X509_LOOKUP 0x01 +/* Returned from the connect BIO when a connect would have blocked */ +#define BIO_RR_CONNECT 0x02 +/* Returned from the accept BIO when an accept would have blocked */ +#define BIO_RR_ACCEPT 0x03 + +/* These are passed by the BIO callback */ +#define BIO_CB_FREE 0x01 +#define BIO_CB_READ 0x02 +#define BIO_CB_WRITE 0x03 +#define BIO_CB_PUTS 0x04 +#define BIO_CB_GETS 0x05 +#define BIO_CB_CTRL 0x06 +#define BIO_CB_RECVMMSG 0x07 +#define BIO_CB_SENDMMSG 0x08 + +/* + * The callback is called before and after the underling operation, The + * BIO_CB_RETURN flag indicates if it is after the call + */ +#define BIO_CB_RETURN 0x80 +#define BIO_CB_return(a) ((a) | BIO_CB_RETURN) +#define BIO_cb_pre(a) (!((a) & BIO_CB_RETURN)) +#define BIO_cb_post(a) ((a) & BIO_CB_RETURN) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi, + long argl, long ret); +OSSL_DEPRECATEDIN_3_0 BIO_callback_fn BIO_get_callback(const BIO *b); +OSSL_DEPRECATEDIN_3_0 void BIO_set_callback(BIO *b, BIO_callback_fn callback); +OSSL_DEPRECATEDIN_3_0 long BIO_debug_callback(BIO *bio, int cmd, + const char *argp, int argi, + long argl, long ret); +#endif + +typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp, + size_t len, int argi, + long argl, int ret, size_t *processed); +BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b); +void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback); +long BIO_debug_callback_ex(BIO *bio, int oper, const char *argp, size_t len, + int argi, long argl, int ret, size_t *processed); + +char *BIO_get_callback_arg(const BIO *b); +void BIO_set_callback_arg(BIO *b, char *arg); + +typedef struct bio_method_st BIO_METHOD; + +const char *BIO_method_name(const BIO *b); +int BIO_method_type(const BIO *b); + +typedef int BIO_info_cb(BIO *, int, int); +typedef BIO_info_cb bio_info_cb; /* backward compatibility */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(BIO, BIO, BIO) +#define sk_BIO_num(sk) OPENSSL_sk_num(ossl_check_const_BIO_sk_type(sk)) +#define sk_BIO_value(sk, idx) ((BIO *)OPENSSL_sk_value(ossl_check_const_BIO_sk_type(sk), (idx))) +#define sk_BIO_new(cmp) ((STACK_OF(BIO) *)OPENSSL_sk_new(ossl_check_BIO_compfunc_type(cmp))) +#define sk_BIO_new_null() ((STACK_OF(BIO) *)OPENSSL_sk_new_null()) +#define sk_BIO_new_reserve(cmp, n) ((STACK_OF(BIO) *)OPENSSL_sk_new_reserve(ossl_check_BIO_compfunc_type(cmp), (n))) +#define sk_BIO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_BIO_sk_type(sk), (n)) +#define sk_BIO_free(sk) OPENSSL_sk_free(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_zero(sk) OPENSSL_sk_zero(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_delete(sk, i) ((BIO *)OPENSSL_sk_delete(ossl_check_BIO_sk_type(sk), (i))) +#define sk_BIO_delete_ptr(sk, ptr) ((BIO *)OPENSSL_sk_delete_ptr(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))) +#define sk_BIO_push(sk, ptr) OPENSSL_sk_push(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_pop(sk) ((BIO *)OPENSSL_sk_pop(ossl_check_BIO_sk_type(sk))) +#define sk_BIO_shift(sk) ((BIO *)OPENSSL_sk_shift(ossl_check_BIO_sk_type(sk))) +#define sk_BIO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_BIO_sk_type(sk),ossl_check_BIO_freefunc_type(freefunc)) +#define sk_BIO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), (idx)) +#define sk_BIO_set(sk, idx, ptr) ((BIO *)OPENSSL_sk_set(ossl_check_BIO_sk_type(sk), (idx), ossl_check_BIO_type(ptr))) +#define sk_BIO_find(sk, ptr) OPENSSL_sk_find(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), pnum) +#define sk_BIO_sort(sk) OPENSSL_sk_sort(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_BIO_sk_type(sk)) +#define sk_BIO_dup(sk) ((STACK_OF(BIO) *)OPENSSL_sk_dup(ossl_check_const_BIO_sk_type(sk))) +#define sk_BIO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(BIO) *)OPENSSL_sk_deep_copy(ossl_check_const_BIO_sk_type(sk), ossl_check_BIO_copyfunc_type(copyfunc), ossl_check_BIO_freefunc_type(freefunc))) +#define sk_BIO_set_cmp_func(sk, cmp) ((sk_BIO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_BIO_sk_type(sk), ossl_check_BIO_compfunc_type(cmp))) + +/* clang-format on */ + +/* Prefix and suffix callback in ASN1 BIO */ +typedef int asn1_ps_func(BIO *b, unsigned char **pbuf, int *plen, + void *parg); + +typedef void (*BIO_dgram_sctp_notification_handler_fn)(BIO *b, + void *context, + void *buf); +#ifndef OPENSSL_NO_SCTP +/* SCTP parameter structs */ +struct bio_dgram_sctp_sndinfo { + uint16_t snd_sid; + uint16_t snd_flags; + uint32_t snd_ppid; + uint32_t snd_context; +}; + +struct bio_dgram_sctp_rcvinfo { + uint16_t rcv_sid; + uint16_t rcv_ssn; + uint16_t rcv_flags; + uint32_t rcv_ppid; + uint32_t rcv_tsn; + uint32_t rcv_cumtsn; + uint32_t rcv_context; +}; + +struct bio_dgram_sctp_prinfo { + uint16_t pr_policy; + uint32_t pr_value; +}; +#endif + +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + +/* + * #define BIO_CONN_get_param_hostname BIO_ctrl + */ + +#define BIO_C_SET_CONNECT 100 +#define BIO_C_DO_STATE_MACHINE 101 +#define BIO_C_SET_NBIO 102 +/* # define BIO_C_SET_PROXY_PARAM 103 */ +#define BIO_C_SET_FD 104 +#define BIO_C_GET_FD 105 +#define BIO_C_SET_FILE_PTR 106 +#define BIO_C_GET_FILE_PTR 107 +#define BIO_C_SET_FILENAME 108 +#define BIO_C_SET_SSL 109 +#define BIO_C_GET_SSL 110 +#define BIO_C_SET_MD 111 +#define BIO_C_GET_MD 112 +#define BIO_C_GET_CIPHER_STATUS 113 +#define BIO_C_SET_BUF_MEM 114 +#define BIO_C_GET_BUF_MEM_PTR 115 +#define BIO_C_GET_BUFF_NUM_LINES 116 +#define BIO_C_SET_BUFF_SIZE 117 +#define BIO_C_SET_ACCEPT 118 +#define BIO_C_SSL_MODE 119 +#define BIO_C_GET_MD_CTX 120 +/* # define BIO_C_GET_PROXY_PARAM 121 */ +#define BIO_C_SET_BUFF_READ_DATA 122 /* data to read first */ +#define BIO_C_GET_CONNECT 123 +#define BIO_C_GET_ACCEPT 124 +#define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125 +#define BIO_C_GET_SSL_NUM_RENEGOTIATES 126 +#define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127 +#define BIO_C_FILE_SEEK 128 +#define BIO_C_GET_CIPHER_CTX 129 +#define BIO_C_SET_BUF_MEM_EOF_RETURN 130 /* return end of input \ + * value */ +#define BIO_C_SET_BIND_MODE 131 +#define BIO_C_GET_BIND_MODE 132 +#define BIO_C_FILE_TELL 133 +#define BIO_C_GET_SOCKS 134 +#define BIO_C_SET_SOCKS 135 + +#define BIO_C_SET_WRITE_BUF_SIZE 136 /* for BIO_s_bio */ +#define BIO_C_GET_WRITE_BUF_SIZE 137 +#define BIO_C_MAKE_BIO_PAIR 138 +#define BIO_C_DESTROY_BIO_PAIR 139 +#define BIO_C_GET_WRITE_GUARANTEE 140 +#define BIO_C_GET_READ_REQUEST 141 +#define BIO_C_SHUTDOWN_WR 142 +#define BIO_C_NREAD0 143 +#define BIO_C_NREAD 144 +#define BIO_C_NWRITE0 145 +#define BIO_C_NWRITE 146 +#define BIO_C_RESET_READ_REQUEST 147 +#define BIO_C_SET_MD_CTX 148 + +#define BIO_C_SET_PREFIX 149 +#define BIO_C_GET_PREFIX 150 +#define BIO_C_SET_SUFFIX 151 +#define BIO_C_GET_SUFFIX 152 + +#define BIO_C_SET_EX_ARG 153 +#define BIO_C_GET_EX_ARG 154 + +#define BIO_C_SET_CONNECT_MODE 155 + +#define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +#define BIO_C_SET_SOCK_TYPE 157 +#define BIO_C_GET_SOCK_TYPE 158 +#define BIO_C_GET_DGRAM_BIO 159 + +#define BIO_set_app_data(s, arg) BIO_set_ex_data(s, 0, arg) +#define BIO_get_app_data(s) BIO_get_ex_data(s, 0) + +#define BIO_set_nbio(b, n) BIO_ctrl(b, BIO_C_SET_NBIO, (n), NULL) +#define BIO_set_tfo(b, n) BIO_ctrl(b, BIO_C_SET_TFO, (n), NULL) + +#ifndef OPENSSL_NO_SOCK +/* IP families we support, for BIO_s_connect() and BIO_s_accept() */ +/* Note: the underlying operating system may not support some of them */ +#define BIO_FAMILY_IPV4 4 +#define BIO_FAMILY_IPV6 6 +#define BIO_FAMILY_IPANY 256 + +/* BIO_s_connect() */ +#define BIO_set_conn_hostname(b, name) BIO_ctrl(b, BIO_C_SET_CONNECT, 0, \ + (char *)(name)) +#define BIO_set_conn_port(b, port) BIO_ctrl(b, BIO_C_SET_CONNECT, 1, \ + (char *)(port)) +#define BIO_set_conn_address(b, addr) BIO_ctrl(b, BIO_C_SET_CONNECT, 2, \ + (char *)(addr)) +#define BIO_set_conn_ip_family(b, f) BIO_int_ctrl(b, BIO_C_SET_CONNECT, 3, f) +#define BIO_get_conn_hostname(b) ((const char *)BIO_ptr_ctrl(b, BIO_C_GET_CONNECT, 0)) +#define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b, BIO_C_GET_CONNECT, 1)) +#define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b, BIO_C_GET_CONNECT, 2)) +#define BIO_get_conn_ip_family(b) BIO_ctrl(b, BIO_C_GET_CONNECT, 3, NULL) +#define BIO_get_conn_mode(b) BIO_ctrl(b, BIO_C_GET_CONNECT, 4, NULL) +#define BIO_set_conn_mode(b, n) BIO_ctrl(b, BIO_C_SET_CONNECT_MODE, (n), NULL) +#define BIO_set_sock_type(b, t) BIO_ctrl(b, BIO_C_SET_SOCK_TYPE, (t), NULL) +#define BIO_get_sock_type(b) BIO_ctrl(b, BIO_C_GET_SOCK_TYPE, 0, NULL) +#define BIO_get0_dgram_bio(b, p) BIO_ctrl(b, BIO_C_GET_DGRAM_BIO, 0, (void *)(BIO **)(p)) + +/* BIO_s_accept() */ +#define BIO_set_accept_name(b, name) BIO_ctrl(b, BIO_C_SET_ACCEPT, 0, \ + (char *)(name)) +#define BIO_set_accept_port(b, port) BIO_ctrl(b, BIO_C_SET_ACCEPT, 1, \ + (char *)(port)) +#define BIO_get_accept_name(b) ((const char *)BIO_ptr_ctrl(b, BIO_C_GET_ACCEPT, 0)) +#define BIO_get_accept_port(b) ((const char *)BIO_ptr_ctrl(b, BIO_C_GET_ACCEPT, 1)) +#define BIO_get_peer_name(b) ((const char *)BIO_ptr_ctrl(b, BIO_C_GET_ACCEPT, 2)) +#define BIO_get_peer_port(b) ((const char *)BIO_ptr_ctrl(b, BIO_C_GET_ACCEPT, 3)) +/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */ +#define BIO_set_nbio_accept(b, n) BIO_ctrl(b, BIO_C_SET_ACCEPT, 2, (n) ? (void *)"a" : NULL) +#define BIO_set_accept_bios(b, bio) BIO_ctrl(b, BIO_C_SET_ACCEPT, 3, \ + (char *)(bio)) +#define BIO_set_accept_ip_family(b, f) BIO_int_ctrl(b, BIO_C_SET_ACCEPT, 4, f) +#define BIO_get_accept_ip_family(b) BIO_ctrl(b, BIO_C_GET_ACCEPT, 4, NULL) +#define BIO_set_tfo_accept(b, n) BIO_ctrl(b, BIO_C_SET_ACCEPT, 5, (n) ? (void *)"a" : NULL) + +/* Aliases kept for backward compatibility */ +#define BIO_BIND_NORMAL 0 +#define BIO_BIND_REUSEADDR BIO_SOCK_REUSEADDR +#define BIO_BIND_REUSEADDR_IF_UNUSED BIO_SOCK_REUSEADDR +#define BIO_set_bind_mode(b, mode) BIO_ctrl(b, BIO_C_SET_BIND_MODE, mode, NULL) +#define BIO_get_bind_mode(b) BIO_ctrl(b, BIO_C_GET_BIND_MODE, 0, NULL) +#endif /* OPENSSL_NO_SOCK */ + +#define BIO_do_connect(b) BIO_do_handshake(b) +#define BIO_do_accept(b) BIO_do_handshake(b) + +#define BIO_do_handshake(b) BIO_ctrl(b, BIO_C_DO_STATE_MACHINE, 0, NULL) + +/* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */ +#define BIO_set_fd(b, fd, c) BIO_int_ctrl(b, BIO_C_SET_FD, c, fd) +#define BIO_get_fd(b, c) BIO_ctrl(b, BIO_C_GET_FD, 0, (char *)(c)) + +/* BIO_s_file() */ +#define BIO_set_fp(b, fp, c) BIO_ctrl(b, BIO_C_SET_FILE_PTR, c, (char *)(fp)) +#define BIO_get_fp(b, fpp) BIO_ctrl(b, BIO_C_GET_FILE_PTR, 0, (char *)(fpp)) + +/* BIO_s_fd() and BIO_s_file() */ +#define BIO_seek(b, ofs) (int)BIO_ctrl(b, BIO_C_FILE_SEEK, ofs, NULL) +#define BIO_tell(b) (int)BIO_ctrl(b, BIO_C_FILE_TELL, 0, NULL) + +/* + * name is cast to lose const, but might be better to route through a + * function so we can do it safely + */ +#ifdef CONST_STRICT +/* + * If you are wondering why this isn't defined, its because CONST_STRICT is + * purely a compile-time kludge to allow const to be checked. + */ +int BIO_read_filename(BIO *b, const char *name); +#else +#define BIO_read_filename(b, name) (int)BIO_ctrl(b, BIO_C_SET_FILENAME, \ + BIO_CLOSE | BIO_FP_READ, (char *)(name)) +#endif +#define BIO_write_filename(b, name) (int)BIO_ctrl(b, BIO_C_SET_FILENAME, \ + BIO_CLOSE | BIO_FP_WRITE, name) +#define BIO_append_filename(b, name) (int)BIO_ctrl(b, BIO_C_SET_FILENAME, \ + BIO_CLOSE | BIO_FP_APPEND, name) +#define BIO_rw_filename(b, name) (int)BIO_ctrl(b, BIO_C_SET_FILENAME, \ + BIO_CLOSE | BIO_FP_READ | BIO_FP_WRITE, name) + +/* + * WARNING WARNING, this ups the reference count on the read bio of the SSL + * structure. This is because the ssl read BIO is now pointed to by the + * next_bio field in the bio. So when you free the BIO, make sure you are + * doing a BIO_free_all() to catch the underlying BIO. + */ +#define BIO_set_ssl(b, ssl, c) BIO_ctrl(b, BIO_C_SET_SSL, c, (char *)(ssl)) +#define BIO_get_ssl(b, sslp) BIO_ctrl(b, BIO_C_GET_SSL, 0, (char *)(sslp)) +#define BIO_set_ssl_mode(b, client) BIO_ctrl(b, BIO_C_SSL_MODE, client, NULL) +#define BIO_set_ssl_renegotiate_bytes(b, num) \ + BIO_ctrl(b, BIO_C_SET_SSL_RENEGOTIATE_BYTES, num, NULL) +#define BIO_get_num_renegotiates(b) \ + BIO_ctrl(b, BIO_C_GET_SSL_NUM_RENEGOTIATES, 0, NULL) +#define BIO_set_ssl_renegotiate_timeout(b, seconds) \ + BIO_ctrl(b, BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT, seconds, NULL) + +/* defined in evp.h */ +/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)(md)) */ + +#define BIO_get_mem_data(b, pp) BIO_ctrl(b, BIO_CTRL_INFO, 0, (char *)(pp)) +#define BIO_set_mem_buf(b, bm, c) BIO_ctrl(b, BIO_C_SET_BUF_MEM, c, (char *)(bm)) +#define BIO_get_mem_ptr(b, pp) BIO_ctrl(b, BIO_C_GET_BUF_MEM_PTR, 0, \ + (char *)(pp)) +#define BIO_set_mem_eof_return(b, v) \ + BIO_ctrl(b, BIO_C_SET_BUF_MEM_EOF_RETURN, v, NULL) + +/* For the BIO_f_buffer() type */ +#define BIO_get_buffer_num_lines(b) BIO_ctrl(b, BIO_C_GET_BUFF_NUM_LINES, 0, NULL) +#define BIO_set_buffer_size(b, size) BIO_ctrl(b, BIO_C_SET_BUFF_SIZE, size, NULL) +#define BIO_set_read_buffer_size(b, size) BIO_int_ctrl(b, BIO_C_SET_BUFF_SIZE, size, 0) +#define BIO_set_write_buffer_size(b, size) BIO_int_ctrl(b, BIO_C_SET_BUFF_SIZE, size, 1) +#define BIO_set_buffer_read_data(b, buf, num) BIO_ctrl(b, BIO_C_SET_BUFF_READ_DATA, num, buf) + +/* Don't use the next one unless you know what you are doing :-) */ +#define BIO_dup_state(b, ret) BIO_ctrl(b, BIO_CTRL_DUP, 0, (char *)(ret)) + +#define BIO_reset(b) (int)BIO_ctrl(b, BIO_CTRL_RESET, 0, NULL) +#define BIO_eof(b) (int)BIO_ctrl(b, BIO_CTRL_EOF, 0, NULL) +#define BIO_set_close(b, c) (int)BIO_ctrl(b, BIO_CTRL_SET_CLOSE, (c), NULL) +#define BIO_get_close(b) (int)BIO_ctrl(b, BIO_CTRL_GET_CLOSE, 0, NULL) +#define BIO_pending(b) (int)BIO_ctrl(b, BIO_CTRL_PENDING, 0, NULL) +#define BIO_wpending(b) (int)BIO_ctrl(b, BIO_CTRL_WPENDING, 0, NULL) +/* ...pending macros have inappropriate return type */ +size_t BIO_ctrl_pending(BIO *b); +size_t BIO_ctrl_wpending(BIO *b); +#define BIO_flush(b) (int)BIO_ctrl(b, BIO_CTRL_FLUSH, 0, NULL) +#define BIO_get_info_callback(b, cbp) (int)BIO_ctrl(b, BIO_CTRL_GET_CALLBACK, 0, \ + cbp) +#define BIO_set_info_callback(b, cb) (int)BIO_callback_ctrl(b, BIO_CTRL_SET_CALLBACK, cb) + +/* For the BIO_f_buffer() type */ +#define BIO_buffer_get_num_lines(b) BIO_ctrl(b, BIO_CTRL_GET, 0, NULL) +#define BIO_buffer_peek(b, s, l) BIO_ctrl(b, BIO_CTRL_PEEK, (l), (s)) + +/* For BIO_s_bio() */ +#define BIO_set_write_buf_size(b, size) (int)BIO_ctrl(b, BIO_C_SET_WRITE_BUF_SIZE, size, NULL) +#define BIO_get_write_buf_size(b, size) (size_t)BIO_ctrl(b, BIO_C_GET_WRITE_BUF_SIZE, size, NULL) +#define BIO_make_bio_pair(b1, b2) (int)BIO_ctrl(b1, BIO_C_MAKE_BIO_PAIR, 0, b2) +#define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b, BIO_C_DESTROY_BIO_PAIR, 0, NULL) +#define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL) +/* macros with inappropriate type -- but ...pending macros use int too: */ +#define BIO_get_write_guarantee(b) (int)BIO_ctrl(b, BIO_C_GET_WRITE_GUARANTEE, 0, NULL) +#define BIO_get_read_request(b) (int)BIO_ctrl(b, BIO_C_GET_READ_REQUEST, 0, NULL) +size_t BIO_ctrl_get_write_guarantee(BIO *b); +size_t BIO_ctrl_get_read_request(BIO *b); +int BIO_ctrl_reset_read_request(BIO *b); + +/* ctrl macros for dgram */ +#define BIO_ctrl_dgram_connect(b, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_CONNECT, 0, (char *)(peer)) +#define BIO_ctrl_set_connected(b, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, 0, (char *)(peer)) +#define BIO_dgram_recv_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL) +#define BIO_dgram_send_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL) +#define BIO_dgram_get_peer(b, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) +#define BIO_dgram_set_peer(b, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +#define BIO_dgram_detect_peer_addr(b, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) +#define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +#define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +#define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +#define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +#define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +#define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +#define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +#define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +#define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +#define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +#define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +#define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) + +/* ctrl macros for BIO_f_prefix */ +#define BIO_set_prefix(b, p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) +#define BIO_set_indent(b, i) BIO_ctrl((b), BIO_CTRL_SET_INDENT, (i), NULL) +#define BIO_get_indent(b) BIO_ctrl((b), BIO_CTRL_GET_INDENT, 0, NULL) + +#define BIO_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_BIO, l, p, newf, dupf, freef) +int BIO_set_ex_data(BIO *bio, int idx, void *data); +void *BIO_get_ex_data(const BIO *bio, int idx); +uint64_t BIO_number_read(BIO *bio); +uint64_t BIO_number_written(BIO *bio); + +/* For BIO_f_asn1() */ +int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix, + asn1_ps_func *prefix_free); +int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix, + asn1_ps_func **pprefix_free); +int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix, + asn1_ps_func *suffix_free); +int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix, + asn1_ps_func **psuffix_free); + +const BIO_METHOD *BIO_s_file(void); +BIO *BIO_new_file(const char *filename, const char *mode); +BIO *BIO_new_from_core_bio(OSSL_LIB_CTX *libctx, OSSL_CORE_BIO *corebio); +#ifndef OPENSSL_NO_STDIO +BIO *BIO_new_fp(FILE *stream, int close_flag); +#endif +BIO *BIO_new_ex(OSSL_LIB_CTX *libctx, const BIO_METHOD *method); +BIO *BIO_new(const BIO_METHOD *type); +int BIO_free(BIO *a); +void BIO_set_data(BIO *a, void *ptr); +void *BIO_get_data(BIO *a); +void BIO_set_init(BIO *a, int init); +int BIO_get_init(BIO *a); +void BIO_set_shutdown(BIO *a, int shut); +int BIO_get_shutdown(BIO *a); +void BIO_vfree(BIO *a); +int BIO_up_ref(BIO *a); +int BIO_read(BIO *b, void *data, int dlen); +int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +int BIO_gets(BIO *bp, char *buf, int size); +int BIO_get_line(BIO *bio, char *buf, int size); +int BIO_write(BIO *b, const void *data, int dlen); +int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +int BIO_puts(BIO *bp, const char *buf); +int BIO_indent(BIO *b, int indent, int max); +long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); +long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp); +void *BIO_ptr_ctrl(BIO *bp, int cmd, long larg); +long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg); +BIO *BIO_push(BIO *b, BIO *append); +BIO *BIO_pop(BIO *b); +void BIO_free_all(BIO *a); +BIO *BIO_find_type(BIO *b, int bio_type); +BIO *BIO_next(BIO *b); +void BIO_set_next(BIO *b, BIO *next); +BIO *BIO_get_retry_BIO(BIO *bio, int *reason); +int BIO_get_retry_reason(BIO *bio); +void BIO_set_retry_reason(BIO *bio, int reason); +BIO *BIO_dup_chain(BIO *in); + +int BIO_nread0(BIO *bio, char **buf); +int BIO_nread(BIO *bio, char **buf, int num); +int BIO_nwrite0(BIO *bio, char **buf); +int BIO_nwrite(BIO *bio, char **buf, int num); + +const BIO_METHOD *BIO_s_mem(void); +#ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +#endif +const BIO_METHOD *BIO_s_secmem(void); +BIO *BIO_new_mem_buf(const void *buf, int len); +#ifndef OPENSSL_NO_SOCK +const BIO_METHOD *BIO_s_socket(void); +const BIO_METHOD *BIO_s_connect(void); +const BIO_METHOD *BIO_s_accept(void); +#endif +const BIO_METHOD *BIO_s_fd(void); +const BIO_METHOD *BIO_s_log(void); +const BIO_METHOD *BIO_s_bio(void); +const BIO_METHOD *BIO_s_null(void); +const BIO_METHOD *BIO_f_null(void); +const BIO_METHOD *BIO_f_buffer(void); +const BIO_METHOD *BIO_f_readbuffer(void); +const BIO_METHOD *BIO_f_linebuffer(void); +const BIO_METHOD *BIO_f_nbio_test(void); +const BIO_METHOD *BIO_f_prefix(void); +const BIO_METHOD *BIO_s_core(void); +#ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); +const BIO_METHOD *BIO_s_datagram(void); +int BIO_dgram_non_fatal_error(int error); +BIO *BIO_new_dgram(int fd, int close_flag); +#ifndef OPENSSL_NO_SCTP +const BIO_METHOD *BIO_s_datagram_sctp(void); +BIO *BIO_new_dgram_sctp(int fd, int close_flag); +int BIO_dgram_is_sctp(BIO *bio); +int BIO_dgram_sctp_notification_cb(BIO *b, + BIO_dgram_sctp_notification_handler_fn handle_notifications, + void *context); +int BIO_dgram_sctp_wait_for_dry(BIO *b); +int BIO_dgram_sctp_msg_waiting(BIO *b); +#endif +#endif + +#ifndef OPENSSL_NO_SOCK +int BIO_sock_should_retry(int i); +int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); +int BIO_socket_wait(int fd, int for_read, time_t max_time); +#endif +int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); +int BIO_do_connect_retry(BIO *bio, int timeout, int nap_milliseconds); + +int BIO_fd_should_retry(int i); +int BIO_fd_non_fatal_error(int error); +int BIO_dump_cb(int (*cb)(const void *data, size_t len, void *u), + void *u, const void *s, int len); +int BIO_dump_indent_cb(int (*cb)(const void *data, size_t len, void *u), + void *u, const void *s, int len, int indent); +int BIO_dump(BIO *b, const void *bytes, int len); +int BIO_dump_indent(BIO *b, const void *bytes, int len, int indent); +#ifndef OPENSSL_NO_STDIO +int BIO_dump_fp(FILE *fp, const void *s, int len); +int BIO_dump_indent_fp(FILE *fp, const void *s, int len, int indent); +#endif +int BIO_hex_string(BIO *out, int indent, int width, const void *data, + int datalen); + +#ifndef OPENSSL_NO_SOCK +BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); +int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, + const void *where, size_t wherelen, unsigned short port); +void BIO_ADDR_free(BIO_ADDR *); +void BIO_ADDR_clear(BIO_ADDR *ap); +int BIO_ADDR_family(const BIO_ADDR *ap); +int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l); +unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap); +char *BIO_ADDR_hostname_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_service_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_path_string(const BIO_ADDR *ap); + +const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai); +const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai); +void BIO_ADDRINFO_free(BIO_ADDRINFO *bai); + +enum BIO_hostserv_priorities { + BIO_PARSE_PRIO_HOST, + BIO_PARSE_PRIO_SERV +}; +int BIO_parse_hostserv(const char *hostserv, char **host, char **service, + enum BIO_hostserv_priorities hostserv_prio); +enum BIO_lookup_type { + BIO_LOOKUP_CLIENT, + BIO_LOOKUP_SERVER +}; +int BIO_lookup(const char *host, const char *service, + enum BIO_lookup_type lookup_type, + int family, int socktype, BIO_ADDRINFO **res); +int BIO_lookup_ex(const char *host, const char *service, + int lookup_type, int family, int socktype, int protocol, + BIO_ADDRINFO **res); +int BIO_sock_error(int sock); +int BIO_socket_ioctl(int fd, long type, void *arg); +int BIO_socket_nbio(int fd, int mode); +int BIO_sock_init(void); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define BIO_sock_cleanup() \ + while (0) \ + continue +#endif +int BIO_set_tcp_ndelay(int sock, int turn_on); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 struct hostent *BIO_gethostbyname(const char *name); +OSSL_DEPRECATEDIN_1_1_0 int BIO_get_port(const char *str, unsigned short *port_ptr); +OSSL_DEPRECATEDIN_1_1_0 int BIO_get_host_ip(const char *str, unsigned char *ip); +OSSL_DEPRECATEDIN_1_1_0 int BIO_get_accept_socket(char *host_port, int mode); +OSSL_DEPRECATEDIN_1_1_0 int BIO_accept(int sock, char **ip_port); +#endif + +union BIO_sock_info_u { + BIO_ADDR *addr; +}; +enum BIO_sock_info_type { + BIO_SOCK_INFO_ADDRESS +}; +int BIO_sock_info(int sock, + enum BIO_sock_info_type type, union BIO_sock_info_u *info); + +#define BIO_SOCK_REUSEADDR 0x01 +#define BIO_SOCK_V6_ONLY 0x02 +#define BIO_SOCK_KEEPALIVE 0x04 +#define BIO_SOCK_NONBLOCK 0x08 +#define BIO_SOCK_NODELAY 0x10 +#define BIO_SOCK_TFO 0x20 + +int BIO_socket(int domain, int socktype, int protocol, int options); +int BIO_connect(int sock, const BIO_ADDR *addr, int options); +int BIO_bind(int sock, const BIO_ADDR *addr, int options); +int BIO_listen(int sock, const BIO_ADDR *addr, int options); +int BIO_accept_ex(int accept_sock, BIO_ADDR *addr, int options); +int BIO_closesocket(int sock); + +BIO *BIO_new_socket(int sock, int close_flag); +BIO *BIO_new_connect(const char *host_port); +BIO *BIO_new_accept(const char *host_port); +#endif /* OPENSSL_NO_SOCK*/ + +BIO *BIO_new_fd(int fd, int close_flag); + +int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +#ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +#endif + +/* + * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. + * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default + * value. + */ + +void BIO_copy_next_retry(BIO *b); + +/* + * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg); + */ + +#define ossl_bio__attr__(x) +#if defined(__GNUC__) && defined(__STDC_VERSION__) \ + && !defined(__MINGW32__) && !defined(__MINGW64__) \ + && !defined(__APPLE__) +/* + * Because we support the 'z' modifier, which made its appearance in C99, + * we can't use __attribute__ with pre C99 dialects. + */ +#if __STDC_VERSION__ >= 199901L +#undef ossl_bio__attr__ +#define ossl_bio__attr__ __attribute__ +#if __GNUC__ * 10 + __GNUC_MINOR__ >= 44 +#define ossl_bio__printf__ __gnu_printf__ +#else +#define ossl_bio__printf__ __printf__ +#endif +#endif +#endif +int BIO_printf(BIO *bio, const char *format, ...) + ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 3))); +int BIO_vprintf(BIO *bio, const char *format, va_list args) + ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 0))); +int BIO_snprintf(char *buf, size_t n, const char *format, ...) + ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 4))); +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) + ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); +#undef ossl_bio__attr__ +#undef ossl_bio__printf__ + +BIO_METHOD *BIO_meth_new(int type, const char *name); +void BIO_meth_free(BIO_METHOD *biom); +int BIO_meth_set_write(BIO_METHOD *biom, + int (*write)(BIO *, const char *, int)); +int BIO_meth_set_write_ex(BIO_METHOD *biom, + int (*bwrite)(BIO *, const char *, size_t, size_t *)); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f)(BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int BIO_meth_set_read(BIO_METHOD *biom, + int (*read)(BIO *, char *, int)); +int BIO_meth_set_read_ex(BIO_METHOD *biom, + int (*bread)(BIO *, char *, size_t, size_t *)); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f)(BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int BIO_meth_set_puts(BIO_METHOD *biom, + int (*puts)(BIO *, const char *)); +int BIO_meth_set_gets(BIO_METHOD *biom, + int (*ossl_gets)(BIO *, char *, int)); +int BIO_meth_set_ctrl(BIO_METHOD *biom, + long (*ctrl)(BIO *, int, long, void *)); +int BIO_meth_set_create(BIO_METHOD *biom, int (*create)(BIO *)); +int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy)(BIO *)); +int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, + long (*callback_ctrl)(BIO *, int, + BIO_info_cb *)); +#ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom))(BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom))(BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom))(BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom))(BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom))(BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom))(BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom))(BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion))(BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom))(BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom))(BIO *, int, + BIO_info_cb *); +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/cmp.h new file mode 100644 index 00000000000000..af844ec8ed103c --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/cmp.h @@ -0,0 +1,741 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/cmp.h.in + * + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. + * Copyright Nokia 2007-2019 + * Copyright Siemens AG 2015-2019 + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CMP_H +#define OPENSSL_CMP_H + +#include +#ifndef OPENSSL_NO_CMP + +#include +#include +#include +#include + +/* explicit #includes not strictly needed since implied by the above: */ +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_CMP_PVNO_2 2 +#define OSSL_CMP_PVNO_3 3 +#define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ + +/*- + * PKIFailureInfo ::= BIT STRING { + * -- since we can fail in more than one way! + * -- More codes may be added in the future if/when required. + * badAlg (0), + * -- unrecognized or unsupported Algorithm Identifier + * badMessageCheck (1), + * -- integrity check failed (e.g., signature did not verify) + * badRequest (2), + * -- transaction not permitted or supported + * badTime (3), + * -- messageTime was not sufficiently close to the system time, + * -- as defined by local policy + * badCertId (4), + * -- no certificate could be found matching the provided criteria + * badDataFormat (5), + * -- the data submitted has the wrong format + * wrongAuthority (6), + * -- the authority indicated in the request is different from the + * -- one creating the response token + * incorrectData (7), + * -- the requester's data is incorrect (for notary services) + * missingTimeStamp (8), + * -- when the timestamp is missing but should be there + * -- (by policy) + * badPOP (9), + * -- the proof-of-possession failed + * certRevoked (10), + * -- the certificate has already been revoked + * certConfirmed (11), + * -- the certificate has already been confirmed + * wrongIntegrity (12), + * -- invalid integrity, password based instead of signature or + * -- vice versa + * badRecipientNonce (13), + * -- invalid recipient nonce, either missing or wrong value + * timeNotAvailable (14), + * -- the TSA's time source is not available + * unacceptedPolicy (15), + * -- the requested TSA policy is not supported by the TSA. + * unacceptedExtension (16), + * -- the requested extension is not supported by the TSA. + * addInfoNotAvailable (17), + * -- the additional information requested could not be + * -- understood or is not available + * badSenderNonce (18), + * -- invalid sender nonce, either missing or wrong size + * badCertTemplate (19), + * -- invalid cert. template or missing mandatory information + * signerNotTrusted (20), + * -- signer of the message unknown or not trusted + * transactionIdInUse (21), + * -- the transaction identifier is already in use + * unsupportedVersion (22), + * -- the version of the message is not supported + * notAuthorized (23), + * -- the sender was not authorized to make the preceding + * -- request or perform the preceding action + * systemUnavail (24), + * -- the request cannot be handled due to system unavailability + * systemFailure (25), + * -- the request cannot be handled due to system failure + * duplicateCertReq (26) + * -- certificate cannot be issued because a duplicate + * -- certificate already exists + * } + */ +#define OSSL_CMP_PKIFAILUREINFO_badAlg 0 +#define OSSL_CMP_PKIFAILUREINFO_badMessageCheck 1 +#define OSSL_CMP_PKIFAILUREINFO_badRequest 2 +#define OSSL_CMP_PKIFAILUREINFO_badTime 3 +#define OSSL_CMP_PKIFAILUREINFO_badCertId 4 +#define OSSL_CMP_PKIFAILUREINFO_badDataFormat 5 +#define OSSL_CMP_PKIFAILUREINFO_wrongAuthority 6 +#define OSSL_CMP_PKIFAILUREINFO_incorrectData 7 +#define OSSL_CMP_PKIFAILUREINFO_missingTimeStamp 8 +#define OSSL_CMP_PKIFAILUREINFO_badPOP 9 +#define OSSL_CMP_PKIFAILUREINFO_certRevoked 10 +#define OSSL_CMP_PKIFAILUREINFO_certConfirmed 11 +#define OSSL_CMP_PKIFAILUREINFO_wrongIntegrity 12 +#define OSSL_CMP_PKIFAILUREINFO_badRecipientNonce 13 +#define OSSL_CMP_PKIFAILUREINFO_timeNotAvailable 14 +#define OSSL_CMP_PKIFAILUREINFO_unacceptedPolicy 15 +#define OSSL_CMP_PKIFAILUREINFO_unacceptedExtension 16 +#define OSSL_CMP_PKIFAILUREINFO_addInfoNotAvailable 17 +#define OSSL_CMP_PKIFAILUREINFO_badSenderNonce 18 +#define OSSL_CMP_PKIFAILUREINFO_badCertTemplate 19 +#define OSSL_CMP_PKIFAILUREINFO_signerNotTrusted 20 +#define OSSL_CMP_PKIFAILUREINFO_transactionIdInUse 21 +#define OSSL_CMP_PKIFAILUREINFO_unsupportedVersion 22 +#define OSSL_CMP_PKIFAILUREINFO_notAuthorized 23 +#define OSSL_CMP_PKIFAILUREINFO_systemUnavail 24 +#define OSSL_CMP_PKIFAILUREINFO_systemFailure 25 +#define OSSL_CMP_PKIFAILUREINFO_duplicateCertReq 26 +#define OSSL_CMP_PKIFAILUREINFO_MAX 26 +#define OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN \ + ((1 << (OSSL_CMP_PKIFAILUREINFO_MAX + 1)) - 1) +#if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX +#error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int +#endif +typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; + +#define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) +#define OSSL_CMP_CTX_FAILINFO_badMessageCheck (1 << 1) +#define OSSL_CMP_CTX_FAILINFO_badRequest (1 << 2) +#define OSSL_CMP_CTX_FAILINFO_badTime (1 << 3) +#define OSSL_CMP_CTX_FAILINFO_badCertId (1 << 4) +#define OSSL_CMP_CTX_FAILINFO_badDataFormat (1 << 5) +#define OSSL_CMP_CTX_FAILINFO_wrongAuthority (1 << 6) +#define OSSL_CMP_CTX_FAILINFO_incorrectData (1 << 7) +#define OSSL_CMP_CTX_FAILINFO_missingTimeStamp (1 << 8) +#define OSSL_CMP_CTX_FAILINFO_badPOP (1 << 9) +#define OSSL_CMP_CTX_FAILINFO_certRevoked (1 << 10) +#define OSSL_CMP_CTX_FAILINFO_certConfirmed (1 << 11) +#define OSSL_CMP_CTX_FAILINFO_wrongIntegrity (1 << 12) +#define OSSL_CMP_CTX_FAILINFO_badRecipientNonce (1 << 13) +#define OSSL_CMP_CTX_FAILINFO_timeNotAvailable (1 << 14) +#define OSSL_CMP_CTX_FAILINFO_unacceptedPolicy (1 << 15) +#define OSSL_CMP_CTX_FAILINFO_unacceptedExtension (1 << 16) +#define OSSL_CMP_CTX_FAILINFO_addInfoNotAvailable (1 << 17) +#define OSSL_CMP_CTX_FAILINFO_badSenderNonce (1 << 18) +#define OSSL_CMP_CTX_FAILINFO_badCertTemplate (1 << 19) +#define OSSL_CMP_CTX_FAILINFO_signerNotTrusted (1 << 20) +#define OSSL_CMP_CTX_FAILINFO_transactionIdInUse (1 << 21) +#define OSSL_CMP_CTX_FAILINFO_unsupportedVersion (1 << 22) +#define OSSL_CMP_CTX_FAILINFO_notAuthorized (1 << 23) +#define OSSL_CMP_CTX_FAILINFO_systemUnavail (1 << 24) +#define OSSL_CMP_CTX_FAILINFO_systemFailure (1 << 25) +#define OSSL_CMP_CTX_FAILINFO_duplicateCertReq (1 << 26) + +/*- + * PKIStatus ::= INTEGER { + * accepted (0), + * -- you got exactly what you asked for + * grantedWithMods (1), + * -- you got something like what you asked for; the + * -- requester is responsible for ascertaining the differences + * rejection (2), + * -- you don't get it, more information elsewhere in the message + * waiting (3), + * -- the request body part has not yet been processed; expect to + * -- hear more later (note: proper handling of this status + * -- response MAY use the polling req/rep PKIMessages specified + * -- in Section 5.3.22; alternatively, polling in the underlying + * -- transport layer MAY have some utility in this regard) + * revocationWarning (4), + * -- this message contains a warning that a revocation is + * -- imminent + * revocationNotification (5), + * -- notification that a revocation has occurred + * keyUpdateWarning (6) + * -- update already done for the oldCertId specified in + * -- CertReqMsg + * } + */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 +#define OSSL_CMP_PKISTATUS_request -3 +#define OSSL_CMP_PKISTATUS_trans -2 +#define OSSL_CMP_PKISTATUS_unspecified -1 +#define OSSL_CMP_PKISTATUS_accepted 0 +#define OSSL_CMP_PKISTATUS_grantedWithMods 1 +#define OSSL_CMP_PKISTATUS_rejection 2 +#define OSSL_CMP_PKISTATUS_waiting 3 +#define OSSL_CMP_PKISTATUS_revocationWarning 4 +#define OSSL_CMP_PKISTATUS_revocationNotification 5 +#define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 +typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + +DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) + +#define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 +#define OSSL_CMP_CERTORENCCERT_ENCRYPTEDCERT 1 + +/* data type declarations */ +typedef struct ossl_cmp_ctx_st OSSL_CMP_CTX; +typedef struct ossl_cmp_pkiheader_st OSSL_CMP_PKIHEADER; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKIHEADER) +typedef struct ossl_cmp_msg_st OSSL_CMP_MSG; +DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_MSG) +DECLARE_ASN1_ENCODE_FUNCTIONS(OSSL_CMP_MSG, OSSL_CMP_MSG, OSSL_CMP_MSG) +typedef struct ossl_cmp_certstatus_st OSSL_CMP_CERTSTATUS; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS) +#define sk_OSSL_CMP_CERTSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_value(sk, idx) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTSTATUS_new_null() ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_delete(sk, i) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) +#define sk_OSSL_CMP_CERTSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_pop(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_shift(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) +#define sk_OSSL_CMP_CERTSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CERTSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_cmp_itav_st OSSL_CMP_ITAV; +DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_ITAV) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) +#define sk_OSSL_CMP_ITAV_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_value(sk, idx) ((OSSL_CMP_ITAV *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), (idx))) +#define sk_OSSL_CMP_ITAV_new(cmp) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) +#define sk_OSSL_CMP_ITAV_new_null() ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_ITAV_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_ITAV_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (n)) +#define sk_OSSL_CMP_ITAV_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_delete(sk, i) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (i))) +#define sk_OSSL_CMP_ITAV_delete_ptr(sk, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))) +#define sk_OSSL_CMP_ITAV_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_pop(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_shift(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk),ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc)) +#define sk_OSSL_CMP_ITAV_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), (idx)) +#define sk_OSSL_CMP_ITAV_set(sk, idx, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_set(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (idx), ossl_check_OSSL_CMP_ITAV_type(ptr))) +#define sk_OSSL_CMP_ITAV_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), pnum) +#define sk_OSSL_CMP_ITAV_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_dup(sk) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) +#define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + +/* clang-format on */ + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +#define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +#define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +#define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +#define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +#define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +#define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + +typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; +typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_PKISI) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_PKISI, OSSL_CMP_PKISI, OSSL_CMP_PKISI) +#define sk_OSSL_CMP_PKISI_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_value(sk, idx) ((OSSL_CMP_PKISI *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), (idx))) +#define sk_OSSL_CMP_PKISI_new(cmp) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) +#define sk_OSSL_CMP_PKISI_new_null() ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_PKISI_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_PKISI_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (n)) +#define sk_OSSL_CMP_PKISI_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_delete(sk, i) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (i))) +#define sk_OSSL_CMP_PKISI_delete_ptr(sk, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))) +#define sk_OSSL_CMP_PKISI_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_pop(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_shift(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk),ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc)) +#define sk_OSSL_CMP_PKISI_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), (idx)) +#define sk_OSSL_CMP_PKISI_set(sk, idx, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_set(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (idx), ossl_check_OSSL_CMP_PKISI_type(ptr))) +#define sk_OSSL_CMP_PKISI_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), pnum) +#define sk_OSSL_CMP_PKISI_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_dup(sk) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc))) +#define sk_OSSL_CMP_PKISI_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_PKISI_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_cmp_certrepmessage_st OSSL_CMP_CERTREPMESSAGE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE) +#define sk_OSSL_CMP_CERTREPMESSAGE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_value(sk, idx) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTREPMESSAGE_new(cmp) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTREPMESSAGE_new_null() ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTREPMESSAGE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTREPMESSAGE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTREPMESSAGE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_delete(sk, i) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTREPMESSAGE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) +#define sk_OSSL_CMP_CERTREPMESSAGE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_pop(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_shift(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk),ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTREPMESSAGE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTREPMESSAGE_set(sk, idx, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) +#define sk_OSSL_CMP_CERTREPMESSAGE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), pnum) +#define sk_OSSL_CMP_CERTREPMESSAGE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_dup(sk) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTREPMESSAGE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTREPMESSAGE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_cmp_pollrep_st OSSL_CMP_POLLREP; +typedef STACK_OF(OSSL_CMP_POLLREP) OSSL_CMP_POLLREPCONTENT; +typedef struct ossl_cmp_certresponse_st OSSL_CMP_CERTRESPONSE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE) +#define sk_OSSL_CMP_CERTRESPONSE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_value(sk, idx) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTRESPONSE_new(cmp) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTRESPONSE_new_null() ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTRESPONSE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTRESPONSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTRESPONSE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_delete(sk, i) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTRESPONSE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) +#define sk_OSSL_CMP_CERTRESPONSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_pop(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_shift(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk),ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTRESPONSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTRESPONSE_set(sk, idx, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) +#define sk_OSSL_CMP_CERTRESPONSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), pnum) +#define sk_OSSL_CMP_CERTRESPONSE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_dup(sk) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTRESPONSE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTRESPONSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) + +/* clang-format on */ +typedef STACK_OF(ASN1_UTF8STRING) OSSL_CMP_PKIFREETEXT; + +/* + * function DECLARATIONS + */ + +/* from cmp_asn.c */ +OSSL_CMP_ITAV *OSSL_CMP_ITAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); +ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, + OSSL_CMP_ITAV *itav); +void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + +void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); + +/* from cmp_ctx.c */ +OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); +void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); +/* CMP general options: */ +#define OSSL_CMP_OPT_LOG_VERBOSITY 0 +/* CMP transfer options: */ +#define OSSL_CMP_OPT_KEEP_ALIVE 10 +#define OSSL_CMP_OPT_MSG_TIMEOUT 11 +#define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +#define OSSL_CMP_OPT_USE_TLS 13 +/* CMP request options: */ +#define OSSL_CMP_OPT_VALIDITY_DAYS 20 +#define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 +#define OSSL_CMP_OPT_SUBJECTALTNAME_CRITICAL 22 +#define OSSL_CMP_OPT_POLICIES_CRITICAL 23 +#define OSSL_CMP_OPT_POPO_METHOD 24 +#define OSSL_CMP_OPT_IMPLICIT_CONFIRM 25 +#define OSSL_CMP_OPT_DISABLE_CONFIRM 26 +#define OSSL_CMP_OPT_REVOCATION_REASON 27 +/* CMP protection options: */ +#define OSSL_CMP_OPT_UNPROTECTED_SEND 30 +#define OSSL_CMP_OPT_UNPROTECTED_ERRORS 31 +#define OSSL_CMP_OPT_OWF_ALGNID 32 +#define OSSL_CMP_OPT_MAC_ALGNID 33 +#define OSSL_CMP_OPT_DIGEST_ALGNID 34 +#define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 +#define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +#define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 +int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); +int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); +/* CMP-specific callback for logging and outputting the error queue: */ +int OSSL_CMP_CTX_set_log_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_log_cb_t cb); +#define OSSL_CMP_CTX_set_log_verbosity(ctx, level) \ + OSSL_CMP_CTX_set_option(ctx, OSSL_CMP_OPT_LOG_VERBOSITY, level) +void OSSL_CMP_CTX_print_errors(const OSSL_CMP_CTX *ctx); +/* message transfer: */ +int OSSL_CMP_CTX_set1_serverPath(OSSL_CMP_CTX *ctx, const char *path); +int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); +int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); +int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); +int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +#ifndef OPENSSL_NO_HTTP +int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); +int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); +void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +#endif +typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t)(OSSL_CMP_CTX *ctx, + const OSSL_CMP_MSG *req); +int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); +int OSSL_CMP_CTX_set_transfer_cb_arg(OSSL_CMP_CTX *ctx, void *arg); +void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); +/* server authentication: */ +int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); +int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +#define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore +X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +#define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore +int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); +STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); +/* client authentication: */ +int OSSL_CMP_CTX_set1_cert(OSSL_CMP_CTX *ctx, X509 *cert); +int OSSL_CMP_CTX_build_cert_chain(OSSL_CMP_CTX *ctx, X509_STORE *own_trusted, + STACK_OF(X509) *candidates); +int OSSL_CMP_CTX_set1_pkey(OSSL_CMP_CTX *ctx, EVP_PKEY *pkey); +int OSSL_CMP_CTX_set1_referenceValue(OSSL_CMP_CTX *ctx, + const unsigned char *ref, int len); +int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, + const unsigned char *sec, int len); +/* CMP message header and extra certificates: */ +int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); +int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) +*OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, + STACK_OF(X509) *extraCertsOut); +/* certificate template: */ +int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); +EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); +int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); +int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, + const GENERAL_NAME *name); +int OSSL_CMP_CTX_set0_reqExtensions(OSSL_CMP_CTX *ctx, X509_EXTENSIONS *exts); +int OSSL_CMP_CTX_reqExtensions_have_SAN(OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_push0_policy(OSSL_CMP_CTX *ctx, POLICYINFO *pinfo); +int OSSL_CMP_CTX_set1_oldCert(OSSL_CMP_CTX *ctx, X509 *cert); +int OSSL_CMP_CTX_set1_p10CSR(OSSL_CMP_CTX *ctx, const X509_REQ *csr); +/* misc body contents: */ +int OSSL_CMP_CTX_push0_genm_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); +/* certificate confirmation: */ +typedef int (*OSSL_CMP_certConf_cb_t)(OSSL_CMP_CTX *ctx, X509 *cert, + int fail_info, const char **txt); +int OSSL_CMP_certConf_cb(OSSL_CMP_CTX *ctx, X509 *cert, int fail_info, + const char **text); +int OSSL_CMP_CTX_set_certConf_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_certConf_cb_t cb); +int OSSL_CMP_CTX_set_certConf_cb_arg(OSSL_CMP_CTX *ctx, void *arg); +void *OSSL_CMP_CTX_get_certConf_cb_arg(const OSSL_CMP_CTX *ctx); +/* result fetching: */ +int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); +OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); +#define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); +X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); +STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); +STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); +STACK_OF(X509) *OSSL_CMP_CTX_get1_extraCertsIn(const OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_set1_transactionID(OSSL_CMP_CTX *ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_CTX_set1_senderNonce(OSSL_CMP_CTX *ctx, + const ASN1_OCTET_STRING *nonce); + +/* from cmp_status.c */ +char *OSSL_CMP_CTX_snprint_PKIStatus(const OSSL_CMP_CTX *ctx, char *buf, + size_t bufsize); +char *OSSL_CMP_snprint_PKIStatusInfo(const OSSL_CMP_PKISI *statusInfo, + char *buf, size_t bufsize); +OSSL_CMP_PKISI * +OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); + +/* from cmp_hdr.c */ +ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); +ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) +*OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); + +/* from cmp_msg.c */ +OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); +int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); +int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); +int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); +OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); +OSSL_CMP_MSG *OSSL_CMP_MSG_read(const char *file, OSSL_LIB_CTX *libctx, + const char *propq); +int OSSL_CMP_MSG_write(const char *file, const OSSL_CMP_MSG *msg); +OSSL_CMP_MSG *d2i_OSSL_CMP_MSG_bio(BIO *bio, OSSL_CMP_MSG **msg); +int i2d_OSSL_CMP_MSG_bio(BIO *bio, const OSSL_CMP_MSG *msg); + +/* from cmp_vfy.c */ +int OSSL_CMP_validate_msg(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg); +int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, + X509_STORE *trusted_store, X509 *cert); + +/* from cmp_http.c */ +#ifndef OPENSSL_NO_HTTP +OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, + const OSSL_CMP_MSG *req); +#endif + +/* from cmp_server.c */ +typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; +OSSL_CMP_MSG *OSSL_CMP_SRV_process_request(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +OSSL_CMP_MSG *OSSL_CMP_CTX_server_perform(OSSL_CMP_CTX *client_ctx, + const OSSL_CMP_MSG *req); +OSSL_CMP_SRV_CTX *OSSL_CMP_SRV_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); +void OSSL_CMP_SRV_CTX_free(OSSL_CMP_SRV_CTX *srv_ctx); +typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_cert_request_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, const OSSL_CMP_MSG *req, int certReqId, + const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr, + X509 **certOut, STACK_OF(X509) **chainOut, STACK_OF(X509) **caPubs); +typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_rr_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, + const X509_NAME *issuer, + const ASN1_INTEGER *serial); +typedef int (*OSSL_CMP_SRV_genm_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, + const STACK_OF(OSSL_CMP_ITAV) *in, + STACK_OF(OSSL_CMP_ITAV) **out); +typedef void (*OSSL_CMP_SRV_error_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, + const OSSL_CMP_PKISI *statusInfo, + const ASN1_INTEGER *errorCode, + const OSSL_CMP_PKIFREETEXT *errDetails); +typedef int (*OSSL_CMP_SRV_certConf_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, + int certReqId, + const ASN1_OCTET_STRING *certHash, + const OSSL_CMP_PKISI *si); +typedef int (*OSSL_CMP_SRV_pollReq_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, int certReqId, + OSSL_CMP_MSG **certReq, + int64_t *check_after); +int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, + OSSL_CMP_SRV_cert_request_cb_t process_cert_request, + OSSL_CMP_SRV_rr_cb_t process_rr, + OSSL_CMP_SRV_genm_cb_t process_genm, + OSSL_CMP_SRV_error_cb_t process_error, + OSSL_CMP_SRV_certConf_cb_t process_certConf, + OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); +OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); +void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); +int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, + int val); +int OSSL_CMP_SRV_CTX_set_accept_unprotected(OSSL_CMP_SRV_CTX *srv_ctx, int val); +int OSSL_CMP_SRV_CTX_set_accept_raverified(OSSL_CMP_SRV_CTX *srv_ctx, int val); +int OSSL_CMP_SRV_CTX_set_grant_implicit_confirm(OSSL_CMP_SRV_CTX *srv_ctx, + int val); + +/* from cmp_client.c */ +X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, + const OSSL_CRMF_MSG *crm); +#define OSSL_CMP_IR 0 +#define OSSL_CMP_CR 2 +#define OSSL_CMP_P10CR 4 +#define OSSL_CMP_KUR 7 +#define OSSL_CMP_GENM 21 +#define OSSL_CMP_ERROR 23 +#define OSSL_CMP_exec_IR_ses(ctx) \ + OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) +#define OSSL_CMP_exec_CR_ses(ctx) \ + OSSL_CMP_exec_certreq(ctx, OSSL_CMP_CR, NULL) +#define OSSL_CMP_exec_P10CR_ses(ctx) \ + OSSL_CMP_exec_certreq(ctx, OSSL_CMP_P10CR, NULL) +#define OSSL_CMP_exec_KUR_ses(ctx) \ + OSSL_CMP_exec_certreq(ctx, OSSL_CMP_KUR, NULL) +int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, + const OSSL_CRMF_MSG *crm, int *checkAfter); +int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); + +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_CMP) */ +#endif /* !defined(OPENSSL_CMP_H) */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/cms.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/cms.h new file mode 100644 index 00000000000000..e590224acae5a1 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/cms.h @@ -0,0 +1,515 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/cms.h.in + * + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CMS_H +#define OPENSSL_CMS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CMS_H +#endif + +#include + +#ifndef OPENSSL_NO_CMS +#include +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; +typedef struct CMS_ContentInfo_st CMS_ContentInfo; +typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; +typedef struct CMS_CertificateChoices CMS_CertificateChoices; +typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; +typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; +typedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest; +typedef struct CMS_Receipt_st CMS_Receipt; +typedef struct CMS_RecipientEncryptedKey_st CMS_RecipientEncryptedKey; +typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(CMS_SignerInfo, CMS_SignerInfo, CMS_SignerInfo) +#define sk_CMS_SignerInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_value(sk, idx) ((CMS_SignerInfo *)OPENSSL_sk_value(ossl_check_const_CMS_SignerInfo_sk_type(sk), (idx))) +#define sk_CMS_SignerInfo_new(cmp) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new(ossl_check_CMS_SignerInfo_compfunc_type(cmp))) +#define sk_CMS_SignerInfo_new_null() ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_null()) +#define sk_CMS_SignerInfo_new_reserve(cmp, n) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_SignerInfo_compfunc_type(cmp), (n))) +#define sk_CMS_SignerInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_SignerInfo_sk_type(sk), (n)) +#define sk_CMS_SignerInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_delete(sk, i) ((CMS_SignerInfo *)OPENSSL_sk_delete(ossl_check_CMS_SignerInfo_sk_type(sk), (i))) +#define sk_CMS_SignerInfo_delete_ptr(sk, ptr) ((CMS_SignerInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))) +#define sk_CMS_SignerInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_pop(sk) ((CMS_SignerInfo *)OPENSSL_sk_pop(ossl_check_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_shift(sk) ((CMS_SignerInfo *)OPENSSL_sk_shift(ossl_check_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_SignerInfo_sk_type(sk),ossl_check_CMS_SignerInfo_freefunc_type(freefunc)) +#define sk_CMS_SignerInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), (idx)) +#define sk_CMS_SignerInfo_set(sk, idx, ptr) ((CMS_SignerInfo *)OPENSSL_sk_set(ossl_check_CMS_SignerInfo_sk_type(sk), (idx), ossl_check_CMS_SignerInfo_type(ptr))) +#define sk_CMS_SignerInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), pnum) +#define sk_CMS_SignerInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_dup(sk) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_copyfunc_type(copyfunc), ossl_check_CMS_SignerInfo_freefunc_type(freefunc))) +#define sk_CMS_SignerInfo_set_cmp_func(sk, cmp) ((sk_CMS_SignerInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey) +#define sk_CMS_RecipientEncryptedKey_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_value(sk, idx) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), (idx))) +#define sk_CMS_RecipientEncryptedKey_new(cmp) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) +#define sk_CMS_RecipientEncryptedKey_new_null() ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_null()) +#define sk_CMS_RecipientEncryptedKey_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp), (n))) +#define sk_CMS_RecipientEncryptedKey_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (n)) +#define sk_CMS_RecipientEncryptedKey_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_delete(sk, i) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (i))) +#define sk_CMS_RecipientEncryptedKey_delete_ptr(sk, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) +#define sk_CMS_RecipientEncryptedKey_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_pop(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_pop(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_shift(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_shift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk),ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc)) +#define sk_CMS_RecipientEncryptedKey_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), (idx)) +#define sk_CMS_RecipientEncryptedKey_set(sk, idx, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_set(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (idx), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) +#define sk_CMS_RecipientEncryptedKey_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), pnum) +#define sk_CMS_RecipientEncryptedKey_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_dup(sk) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_copyfunc_type(copyfunc), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc))) +#define sk_CMS_RecipientEncryptedKey_set_cmp_func(sk, cmp) ((sk_CMS_RecipientEncryptedKey_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientInfo, CMS_RecipientInfo, CMS_RecipientInfo) +#define sk_CMS_RecipientInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_value(sk, idx) ((CMS_RecipientInfo *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientInfo_sk_type(sk), (idx))) +#define sk_CMS_RecipientInfo_new(cmp) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new(ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) +#define sk_CMS_RecipientInfo_new_null() ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_null()) +#define sk_CMS_RecipientInfo_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientInfo_compfunc_type(cmp), (n))) +#define sk_CMS_RecipientInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientInfo_sk_type(sk), (n)) +#define sk_CMS_RecipientInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_delete(sk, i) ((CMS_RecipientInfo *)OPENSSL_sk_delete(ossl_check_CMS_RecipientInfo_sk_type(sk), (i))) +#define sk_CMS_RecipientInfo_delete_ptr(sk, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))) +#define sk_CMS_RecipientInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_pop(sk) ((CMS_RecipientInfo *)OPENSSL_sk_pop(ossl_check_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_shift(sk) ((CMS_RecipientInfo *)OPENSSL_sk_shift(ossl_check_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientInfo_sk_type(sk),ossl_check_CMS_RecipientInfo_freefunc_type(freefunc)) +#define sk_CMS_RecipientInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), (idx)) +#define sk_CMS_RecipientInfo_set(sk, idx, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_set(ossl_check_CMS_RecipientInfo_sk_type(sk), (idx), ossl_check_CMS_RecipientInfo_type(ptr))) +#define sk_CMS_RecipientInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), pnum) +#define sk_CMS_RecipientInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_dup(sk) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_copyfunc_type(copyfunc), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc))) +#define sk_CMS_RecipientInfo_set_cmp_func(sk, cmp) ((sk_CMS_RecipientInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, CMS_RevocationInfoChoice) +#define sk_CMS_RevocationInfoChoice_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_value(sk, idx) ((CMS_RevocationInfoChoice *)OPENSSL_sk_value(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), (idx))) +#define sk_CMS_RevocationInfoChoice_new(cmp) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +#define sk_CMS_RevocationInfoChoice_new_null() ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_null()) +#define sk_CMS_RevocationInfoChoice_new_reserve(cmp, n) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp), (n))) +#define sk_CMS_RevocationInfoChoice_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (n)) +#define sk_CMS_RevocationInfoChoice_free(sk) OPENSSL_sk_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_delete(sk, i) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (i))) +#define sk_CMS_RevocationInfoChoice_delete_ptr(sk, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))) +#define sk_CMS_RevocationInfoChoice_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_pop(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_pop(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_shift(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_shift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk),ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc)) +#define sk_CMS_RevocationInfoChoice_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), (idx)) +#define sk_CMS_RevocationInfoChoice_set(sk, idx, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_set(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (idx), ossl_check_CMS_RevocationInfoChoice_type(ptr))) +#define sk_CMS_RevocationInfoChoice_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), pnum) +#define sk_CMS_RevocationInfoChoice_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_dup(sk) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_dup(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_copyfunc_type(copyfunc), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc))) +#define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) +DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) +DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) +DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) + +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + +CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +#define CMS_SIGNERINFO_ISSUER_SERIAL 0 +#define CMS_SIGNERINFO_KEYIDENTIFIER 1 + +#define CMS_RECIPINFO_NONE -1 +#define CMS_RECIPINFO_TRANS 0 +#define CMS_RECIPINFO_AGREE 1 +#define CMS_RECIPINFO_KEK 2 +#define CMS_RECIPINFO_PASS 3 +#define CMS_RECIPINFO_OTHER 4 + +/* S/MIME related flags */ + +#define CMS_TEXT 0x1 +#define CMS_NOCERTS 0x2 +#define CMS_NO_CONTENT_VERIFY 0x4 +#define CMS_NO_ATTR_VERIFY 0x8 +#define CMS_NOSIGS \ + (CMS_NO_CONTENT_VERIFY | CMS_NO_ATTR_VERIFY) +#define CMS_NOINTERN 0x10 +#define CMS_NO_SIGNER_CERT_VERIFY 0x20 +#define CMS_NOVERIFY 0x20 +#define CMS_DETACHED 0x40 +#define CMS_BINARY 0x80 +#define CMS_NOATTR 0x100 +#define CMS_NOSMIMECAP 0x200 +#define CMS_NOOLDMIMETYPE 0x400 +#define CMS_CRLFEOL 0x800 +#define CMS_STREAM 0x1000 +#define CMS_NOCRL 0x2000 +#define CMS_PARTIAL 0x4000 +#define CMS_REUSE_DIGEST 0x8000 +#define CMS_USE_KEYID 0x10000 +#define CMS_DEBUG_DECRYPT 0x20000 +#define CMS_KEY_PARAM 0x40000 +#define CMS_ASCIICRLF 0x80000 +#define CMS_CADES 0x100000 +#define CMS_USE_ORIGINATOR_KEYID 0x200000 +#define CMS_NO_SIGNING_TIME 0x400000 + +const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); + +BIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont); +int CMS_dataFinal(CMS_ContentInfo *cms, BIO *bio); + +ASN1_OCTET_STRING **CMS_get0_content(CMS_ContentInfo *cms); +int CMS_is_detached(CMS_ContentInfo *cms); +int CMS_set_detached(CMS_ContentInfo *cms, int detached); + +#ifdef OPENSSL_PEM_H +DECLARE_PEM_rw(CMS, CMS_ContentInfo) +#endif +int CMS_stream(unsigned char ***boundary, CMS_ContentInfo *cms); +CMS_ContentInfo *d2i_CMS_bio(BIO *bp, CMS_ContentInfo **cms); +int i2d_CMS_bio(BIO *bp, CMS_ContentInfo *cms); + +BIO *BIO_new_CMS(BIO *out, CMS_ContentInfo *cms); +int i2d_CMS_bio_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, int flags); +int PEM_write_bio_CMS_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, + int flags); +CMS_ContentInfo *SMIME_read_CMS(BIO *bio, BIO **bcont); +CMS_ContentInfo *SMIME_read_CMS_ex(BIO *bio, int flags, BIO **bcont, CMS_ContentInfo **ci); +int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); + +int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, + unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); + +CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, BIO *data, + unsigned int flags); +CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, BIO *data, + unsigned int flags, OSSL_LIB_CTX *libctx, + const char *propq); + +CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, + X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, unsigned int flags); + +int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); +CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); +CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); + +int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, + unsigned int flags); +CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, + unsigned int flags); +CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, + unsigned int flags, OSSL_LIB_CTX *libctx, + const char *propq); + +int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, + const unsigned char *key, size_t keylen, + BIO *dcont, BIO *out, unsigned int flags); +CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, + const unsigned char *key, + size_t keylen, unsigned int flags); +CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, + const unsigned char *key, + size_t keylen, unsigned int flags, + OSSL_LIB_CTX *libctx, + const char *propq); + +int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, + const unsigned char *key, size_t keylen); + +int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs, + X509_STORE *store, BIO *dcont, BIO *out, unsigned int flags); + +int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms, + STACK_OF(X509) *certs, + X509_STORE *store, unsigned int flags); + +STACK_OF(X509) *CMS_get0_signers(CMS_ContentInfo *cms); + +CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, unsigned int flags); +CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); + +int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, + BIO *dcont, BIO *out, unsigned int flags); + +int CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert); +int CMS_decrypt_set1_pkey_and_peer(CMS_ContentInfo *cms, EVP_PKEY *pk, + X509 *cert, X509 *peer); +int CMS_decrypt_set1_key(CMS_ContentInfo *cms, + unsigned char *key, size_t keylen, + const unsigned char *id, size_t idlen); +int CMS_decrypt_set1_password(CMS_ContentInfo *cms, + unsigned char *pass, ossl_ssize_t passlen); + +STACK_OF(CMS_RecipientInfo) *CMS_get0_RecipientInfos(CMS_ContentInfo *cms); +int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); +EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); +CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); +CMS_ContentInfo * +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, + const char *propq); +CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); +CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, + OSSL_LIB_CTX *libctx, + const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); + +CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, + X509 *recip, unsigned int flags); +CMS_RecipientInfo *CMS_add1_recipient(CMS_ContentInfo *cms, X509 *recip, + EVP_PKEY *originatorPrivKey, X509 *originator, unsigned int flags); +int CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey); +int CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert); +int CMS_RecipientInfo_ktri_get0_algs(CMS_RecipientInfo *ri, + EVP_PKEY **pk, X509 **recip, + X509_ALGOR **palg); +int CMS_RecipientInfo_ktri_get0_signer_id(CMS_RecipientInfo *ri, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, + ASN1_INTEGER **sno); + +CMS_RecipientInfo *CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid, + unsigned char *key, size_t keylen, + unsigned char *id, size_t idlen, + ASN1_GENERALIZEDTIME *date, + ASN1_OBJECT *otherTypeId, + ASN1_TYPE *otherType); + +int CMS_RecipientInfo_kekri_get0_id(CMS_RecipientInfo *ri, + X509_ALGOR **palg, + ASN1_OCTET_STRING **pid, + ASN1_GENERALIZEDTIME **pdate, + ASN1_OBJECT **potherid, + ASN1_TYPE **pothertype); + +int CMS_RecipientInfo_set0_key(CMS_RecipientInfo *ri, + unsigned char *key, size_t keylen); + +int CMS_RecipientInfo_kekri_id_cmp(CMS_RecipientInfo *ri, + const unsigned char *id, size_t idlen); + +int CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri, + unsigned char *pass, + ossl_ssize_t passlen); + +CMS_RecipientInfo *CMS_add0_recipient_password(CMS_ContentInfo *cms, + int iter, int wrap_nid, + int pbe_nid, + unsigned char *pass, + ossl_ssize_t passlen, + const EVP_CIPHER *kekciph); + +int CMS_RecipientInfo_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri); +int CMS_RecipientInfo_encrypt(const CMS_ContentInfo *cms, CMS_RecipientInfo *ri); + +int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out, + unsigned int flags); +CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags); + +int CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid); +const ASN1_OBJECT *CMS_get0_eContentType(CMS_ContentInfo *cms); + +CMS_CertificateChoices *CMS_add0_CertificateChoices(CMS_ContentInfo *cms); +int CMS_add0_cert(CMS_ContentInfo *cms, X509 *cert); +int CMS_add1_cert(CMS_ContentInfo *cms, X509 *cert); +STACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms); + +CMS_RevocationInfoChoice *CMS_add0_RevocationInfoChoice(CMS_ContentInfo *cms); +int CMS_add0_crl(CMS_ContentInfo *cms, X509_CRL *crl); +int CMS_add1_crl(CMS_ContentInfo *cms, X509_CRL *crl); +STACK_OF(X509_CRL) *CMS_get1_crls(CMS_ContentInfo *cms); + +int CMS_SignedData_init(CMS_ContentInfo *cms); +CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms, + X509 *signer, EVP_PKEY *pk, const EVP_MD *md, + unsigned int flags); +EVP_PKEY_CTX *CMS_SignerInfo_get0_pkey_ctx(CMS_SignerInfo *si); +EVP_MD_CTX *CMS_SignerInfo_get0_md_ctx(CMS_SignerInfo *si); +STACK_OF(CMS_SignerInfo) *CMS_get0_SignerInfos(CMS_ContentInfo *cms); + +void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer); +int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, ASN1_INTEGER **sno); +int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert); +int CMS_set1_signers_certs(CMS_ContentInfo *cms, STACK_OF(X509) *certs, + unsigned int flags); +void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk, + X509 **signer, X509_ALGOR **pdig, + X509_ALGOR **psig); +ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); +int CMS_SignerInfo_sign(CMS_SignerInfo *si); +int CMS_SignerInfo_verify(CMS_SignerInfo *si); +int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); + +int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); +int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, + int algnid, int keysize); +int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap); + +int CMS_signed_get_attr_count(const CMS_SignerInfo *si); +int CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid, + int lastpos); +int CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *CMS_signed_get_attr(const CMS_SignerInfo *si, int loc); +X509_ATTRIBUTE *CMS_signed_delete_attr(CMS_SignerInfo *si, int loc); +int CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr); +int CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int type, + const void *bytes, int len); +int CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si, + int nid, int type, + const void *bytes, int len); +int CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si, + const char *attrname, int type, + const void *bytes, int len); +void *CMS_signed_get0_data_by_OBJ(const CMS_SignerInfo *si, + const ASN1_OBJECT *oid, + int lastpos, int type); + +int CMS_unsigned_get_attr_count(const CMS_SignerInfo *si); +int CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid, + int lastpos); +int CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc); +X509_ATTRIBUTE *CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc); +int CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr); +int CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int type, + const void *bytes, int len); +int CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si, + int nid, int type, + const void *bytes, int len); +int CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si, + const char *attrname, int type, + const void *bytes, int len); +void *CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid, + int lastpos, int type); + +int CMS_get1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest **prr); +CMS_ReceiptRequest *CMS_ReceiptRequest_create0( + unsigned char *id, int idlen, int allorfirst, + STACK_OF(GENERAL_NAMES) *receiptList, + STACK_OF(GENERAL_NAMES) *receiptsTo); +CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( + unsigned char *id, int idlen, int allorfirst, + STACK_OF(GENERAL_NAMES) *receiptList, + STACK_OF(GENERAL_NAMES) *receiptsTo, + OSSL_LIB_CTX *libctx); + +int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); +void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, + ASN1_STRING **pcid, + int *pallorfirst, + STACK_OF(GENERAL_NAMES) **plist, + STACK_OF(GENERAL_NAMES) **prto); +int CMS_RecipientInfo_kari_get0_alg(CMS_RecipientInfo *ri, + X509_ALGOR **palg, + ASN1_OCTET_STRING **pukm); +STACK_OF(CMS_RecipientEncryptedKey) +*CMS_RecipientInfo_kari_get0_reks(CMS_RecipientInfo *ri); + +int CMS_RecipientInfo_kari_get0_orig_id(CMS_RecipientInfo *ri, + X509_ALGOR **pubalg, + ASN1_BIT_STRING **pubkey, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, + ASN1_INTEGER **sno); + +int CMS_RecipientInfo_kari_orig_id_cmp(CMS_RecipientInfo *ri, X509 *cert); + +int CMS_RecipientEncryptedKey_get0_id(CMS_RecipientEncryptedKey *rek, + ASN1_OCTET_STRING **keyid, + ASN1_GENERALIZEDTIME **tm, + CMS_OtherKeyAttribute **other, + X509_NAME **issuer, ASN1_INTEGER **sno); +int CMS_RecipientEncryptedKey_cert_cmp(CMS_RecipientEncryptedKey *rek, + X509 *cert); +int CMS_RecipientInfo_kari_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk); +int CMS_RecipientInfo_kari_set0_pkey_and_peer(CMS_RecipientInfo *ri, EVP_PKEY *pk, X509 *peer); +EVP_CIPHER_CTX *CMS_RecipientInfo_kari_get0_ctx(CMS_RecipientInfo *ri); +int CMS_RecipientInfo_kari_decrypt(CMS_ContentInfo *cms, + CMS_RecipientInfo *ri, + CMS_RecipientEncryptedKey *rek); + +int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg, + ASN1_OCTET_STRING *ukm, int keylen); + +/* Backward compatibility for spelling errors. */ +#define CMS_R_UNKNOWN_DIGEST_ALGORITM CMS_R_UNKNOWN_DIGEST_ALGORITHM +#define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE \ + CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/comp.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/comp.h new file mode 100644 index 00000000000000..d47246a1a20238 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/comp.h @@ -0,0 +1,101 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_COMP_H +#define OPENSSL_COMP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_COMP_H +#endif + +#include + +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX *comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define COMP_zlib_cleanup() \ + while (0) \ + continue +#endif + +#ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +#endif + +#endif + +typedef struct ssl_comp_st SSL_COMP; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + +/* clang-format on */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/conf.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/conf.h new file mode 100644 index 00000000000000..96b1c680308855 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/conf.h @@ -0,0 +1,219 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/conf.h.in + * + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CONF_H +#define OPENSSL_CONF_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CONF_H +#endif + +#include +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char *section; + char *name; + char *value; +} CONF_VALUE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) +#define sk_CONF_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_value(sk, idx) ((CONF_VALUE *)OPENSSL_sk_value(ossl_check_const_CONF_VALUE_sk_type(sk), (idx))) +#define sk_CONF_VALUE_new(cmp) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new(ossl_check_CONF_VALUE_compfunc_type(cmp))) +#define sk_CONF_VALUE_new_null() ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_null()) +#define sk_CONF_VALUE_new_reserve(cmp, n) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_CONF_VALUE_compfunc_type(cmp), (n))) +#define sk_CONF_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CONF_VALUE_sk_type(sk), (n)) +#define sk_CONF_VALUE_free(sk) OPENSSL_sk_free(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_delete(sk, i) ((CONF_VALUE *)OPENSSL_sk_delete(ossl_check_CONF_VALUE_sk_type(sk), (i))) +#define sk_CONF_VALUE_delete_ptr(sk, ptr) ((CONF_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))) +#define sk_CONF_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_pop(sk) ((CONF_VALUE *)OPENSSL_sk_pop(ossl_check_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_shift(sk) ((CONF_VALUE *)OPENSSL_sk_shift(ossl_check_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CONF_VALUE_sk_type(sk),ossl_check_CONF_VALUE_freefunc_type(freefunc)) +#define sk_CONF_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), (idx)) +#define sk_CONF_VALUE_set(sk, idx, ptr) ((CONF_VALUE *)OPENSSL_sk_set(ossl_check_CONF_VALUE_sk_type(sk), (idx), ossl_check_CONF_VALUE_type(ptr))) +#define sk_CONF_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), pnum) +#define sk_CONF_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_dup(sk) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_dup(ossl_check_const_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) +#define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) +DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) +#define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_delete(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_delete(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_retrieve(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_retrieve(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_error(lh) OPENSSL_LH_error(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_num_items(lh) OPENSSL_LH_num_items(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_CONF_VALUE_lh_type(lh), dl) +#define lh_CONF_VALUE_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +struct conf_st; +struct conf_method_st; +typedef struct conf_method_st CONF_METHOD; + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#include +#endif + +/* Module definitions */ +typedef struct conf_imodule_st CONF_IMODULE; +typedef struct conf_module_st CONF_MODULE; + +STACK_OF(CONF_MODULE); +STACK_OF(CONF_IMODULE); + +/* DSO module function typedefs */ +typedef int conf_init_func(CONF_IMODULE *md, const CONF *cnf); +typedef void conf_finish_func(CONF_IMODULE *md); + +#define CONF_MFLAGS_IGNORE_ERRORS 0x1 +#define CONF_MFLAGS_IGNORE_RETURN_CODES 0x2 +#define CONF_MFLAGS_SILENT 0x4 +#define CONF_MFLAGS_NO_DSO 0x8 +#define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10 +#define CONF_MFLAGS_DEFAULT_SECTION 0x20 + +int CONF_set_default_method(CONF_METHOD *meth); +void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash); +LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file, + long *eline); +#ifndef OPENSSL_NO_STDIO +LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp, + long *eline); +#endif +LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp, + long *eline); +STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf, + const char *section); +char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf, const char *group, + const char *name); +long CONF_get_number(LHASH_OF(CONF_VALUE) *conf, const char *group, + const char *name); +void CONF_free(LHASH_OF(CONF_VALUE) *conf); +#ifndef OPENSSL_NO_STDIO +int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out); +#endif +int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void OPENSSL_config(const char *config_name); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OPENSSL_no_config() \ + OPENSSL_init_crypto(OPENSSL_INIT_NO_LOAD_CONFIG, NULL) +#endif + +/* + * New conf code. The semantics are different from the functions above. If + * that wasn't the case, the above functions would have been replaced + */ + +CONF *NCONF_new_ex(OSSL_LIB_CTX *libctx, CONF_METHOD *meth); +OSSL_LIB_CTX *NCONF_get0_libctx(const CONF *conf); +CONF *NCONF_new(CONF_METHOD *meth); +CONF_METHOD *NCONF_default(void); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 CONF_METHOD *NCONF_WIN32(void); +#endif +void NCONF_free(CONF *conf); +void NCONF_free_data(CONF *conf); + +int NCONF_load(CONF *conf, const char *file, long *eline); +#ifndef OPENSSL_NO_STDIO +int NCONF_load_fp(CONF *conf, FILE *fp, long *eline); +#endif +int NCONF_load_bio(CONF *conf, BIO *bp, long *eline); +STACK_OF(OPENSSL_CSTRING) *NCONF_get_section_names(const CONF *conf); +STACK_OF(CONF_VALUE) *NCONF_get_section(const CONF *conf, + const char *section); +char *NCONF_get_string(const CONF *conf, const char *group, const char *name); +int NCONF_get_number_e(const CONF *conf, const char *group, const char *name, + long *result); +#ifndef OPENSSL_NO_STDIO +int NCONF_dump_fp(const CONF *conf, FILE *out); +#endif +int NCONF_dump_bio(const CONF *conf, BIO *out); + +#define NCONF_get_number(c, g, n, r) NCONF_get_number_e(c, g, n, r) + +/* Module functions */ + +int CONF_modules_load(const CONF *cnf, const char *appname, + unsigned long flags); +int CONF_modules_load_file_ex(OSSL_LIB_CTX *libctx, const char *filename, + const char *appname, unsigned long flags); +int CONF_modules_load_file(const char *filename, const char *appname, + unsigned long flags); +void CONF_modules_unload(int all); +void CONF_modules_finish(void); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define CONF_modules_free() \ + while (0) \ + continue +#endif +int CONF_module_add(const char *name, conf_init_func *ifunc, + conf_finish_func *ffunc); + +const char *CONF_imodule_get_name(const CONF_IMODULE *md); +const char *CONF_imodule_get_value(const CONF_IMODULE *md); +void *CONF_imodule_get_usr_data(const CONF_IMODULE *md); +void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data); +CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md); +unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md); +void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags); +void *CONF_module_get_usr_data(CONF_MODULE *pmod); +void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data); + +char *CONF_get1_default_config_file(void); + +int CONF_parse_list(const char *list, int sep, int nospc, + int (*list_cb)(const char *elem, int len, void *usr), + void *arg); + +void OPENSSL_load_builtin_modules(void); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/configuration.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/configuration.h new file mode 100644 index 00000000000000..8dc77fcbf2f72a --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/configuration.h @@ -0,0 +1,190 @@ +/* + * WARNING: do not edit! + * Generated by configdata.pm from Configurations/common0.tmpl, Configurations/unix-Makefile.tmpl + * via Makefile.in + * + * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CONFIGURATION_H +#define OPENSSL_CONFIGURATION_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +#error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +/* clang-format off */ +# define OPENSSL_CONFIGURED_API 30500 +# ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +# endif +# ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +# endif +# ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +# endif +# ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif +# ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +# endif +# ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif +# ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +# endif +# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +# endif +# ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +# endif +# ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +# endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif +# ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +# endif +# ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +# endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif +# ifndef OPENSSL_NO_KTLS +# define OPENSSL_NO_KTLS +# endif +# ifndef OPENSSL_NO_LOADERENG +# define OPENSSL_NO_LOADERENG +# endif +# ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +# endif +# ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +# endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif +# ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +# endif +# ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +# endif +# ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +# endif +# ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +# endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TESTS +# define OPENSSL_NO_TESTS +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif +# ifndef OPENSSL_NO_TRACE +# define OPENSSL_NO_TRACE +# endif +# ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +# endif +# ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +# endif +# ifndef OPENSSL_NO_UPLINK +# define OPENSSL_NO_UPLINK +# endif +# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +# endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif +# ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +# endif + +/* clang-format on */ + +/* Generate 80386 code? */ +/* clang-format off */ +# undef I386_ONLY +/* clang-format on */ + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) + /* clang-format off */ +# undef BN_LLONG + /* clang-format on */ + /* Only one for the following should be defined */ + /* clang-format off */ +# define SIXTY_FOUR_BIT_LONG + /* clang-format on */ + /* clang-format off */ +# undef SIXTY_FOUR_BIT + /* clang-format on */ + /* clang-format off */ +# undef THIRTY_TWO_BIT +/* clang-format on */ +#endif + +/* clang-format off */ +# define RC4_INT unsigned char +/* clang-format on */ + +#if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +#define OPENSSL_NO_COMP_ALG +#else +#undef OPENSSL_NO_COMP_ALG +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_CONFIGURATION_H */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/core_names.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/core_names.h new file mode 100644 index 00000000000000..aa445e8f1de7ba --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/core_names.h @@ -0,0 +1,579 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CORE_NAMES_H +#define OPENSSL_CORE_NAMES_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +#define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +#define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +#define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +#define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +#define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +#define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +#define OSSL_DIGEST_NAME_MD5 "MD5" +#define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +#define OSSL_DIGEST_NAME_SHA1 "SHA1" +#define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +#define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +#define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +#define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +#define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +#define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +#define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +#define OSSL_DIGEST_NAME_MD2 "MD2" +#define OSSL_DIGEST_NAME_MD4 "MD4" +#define OSSL_DIGEST_NAME_MDC2 "MDC2" +#define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +#define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +#define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +#define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +#define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +#define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +#define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +#define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +#define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +#define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +#define OSSL_MAC_NAME_CMAC "CMAC" +#define OSSL_MAC_NAME_GMAC "GMAC" +#define OSSL_MAC_NAME_HMAC "HMAC" +#define OSSL_MAC_NAME_KMAC128 "KMAC128" +#define OSSL_MAC_NAME_KMAC256 "KMAC256" +#define OSSL_MAC_NAME_POLY1305 "POLY1305" +#define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +#define OSSL_KDF_NAME_HKDF "HKDF" +#define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +#define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +#define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +#define OSSL_KDF_NAME_SCRYPT "SCRYPT" +#define OSSL_KDF_NAME_SSHKDF "SSHKDF" +#define OSSL_KDF_NAME_SSKDF "SSKDF" +#define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +#define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +#define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +#define OSSL_KDF_NAME_X963KDF "X963KDF" +#define OSSL_KDF_NAME_KBKDF "KBKDF" +#define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +#define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +#define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +#define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +#define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +#define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +#define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +#define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +#define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +#define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +#define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +#define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +#define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +#define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +#define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +#define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +#define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +#define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +/* clang-format off */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/crmf.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/crmf.h new file mode 100644 index 00000000000000..8b32ffb136b6a6 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/crmf.h @@ -0,0 +1,279 @@ +/*- + * WARNING: do not edit! + * Generated by Makefile from include/openssl/crmf.h.in + * + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright Nokia 2007-2019 + * Copyright Siemens AG 2015-2019 + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + * + * CRMF (RFC 4211) implementation by M. Peylo, M. Viljanen, and D. von Oheimb. + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CRMF_H +#define OPENSSL_CRMF_H + +#include + +#ifndef OPENSSL_NO_CRMF +#include +#include +#include +#include /* for GENERAL_NAME etc. */ +#include + +/* explicit #includes not strictly needed since implied by the above: */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_CRMF_POPOPRIVKEY_THISMESSAGE 0 +#define OSSL_CRMF_POPOPRIVKEY_SUBSEQUENTMESSAGE 1 +#define OSSL_CRMF_POPOPRIVKEY_DHMAC 2 +#define OSSL_CRMF_POPOPRIVKEY_AGREEMAC 3 +#define OSSL_CRMF_POPOPRIVKEY_ENCRYPTEDKEY 4 + +#define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 +#define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 +typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + +typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) +#define sk_OSSL_CRMF_MSG_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_value(sk, idx) ((OSSL_CRMF_MSG *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_MSG_new(cmp) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) +#define sk_OSSL_CRMF_MSG_new_null() ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_MSG_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_MSG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (n)) +#define sk_OSSL_CRMF_MSG_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_delete(sk, i) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (i))) +#define sk_OSSL_CRMF_MSG_delete_ptr(sk, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))) +#define sk_OSSL_CRMF_MSG_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_pop(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_shift(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk),ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_MSG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), (idx)) +#define sk_OSSL_CRMF_MSG_set(sk, idx, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (idx), ossl_check_OSSL_CRMF_MSG_type(ptr))) +#define sk_OSSL_CRMF_MSG_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), pnum) +#define sk_OSSL_CRMF_MSG_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_dup(sk) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) +typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; +typedef struct ossl_crmf_certrequest_st OSSL_CRMF_CERTREQUEST; +typedef struct ossl_crmf_certid_st OSSL_CRMF_CERTID; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTID) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTID) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_CERTID, OSSL_CRMF_CERTID, OSSL_CRMF_CERTID) +#define sk_OSSL_CRMF_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_value(sk, idx) ((OSSL_CRMF_CERTID *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_CERTID_new(cmp) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) +#define sk_OSSL_CRMF_CERTID_new_null() ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_CERTID_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (n)) +#define sk_OSSL_CRMF_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_delete(sk, i) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (i))) +#define sk_OSSL_CRMF_CERTID_delete_ptr(sk, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))) +#define sk_OSSL_CRMF_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_pop(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_shift(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk),ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), (idx)) +#define sk_OSSL_CRMF_CERTID_set(sk, idx, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (idx), ossl_check_OSSL_CRMF_CERTID_type(ptr))) +#define sk_OSSL_CRMF_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), pnum) +#define sk_OSSL_CRMF_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_dup(sk) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_CERTID_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ossl_crmf_pkipublicationinfo_st OSSL_CRMF_PKIPUBLICATIONINFO; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PKIPUBLICATIONINFO) +typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) +typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) +typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) + +typedef struct ossl_crmf_optionalvalidity_st OSSL_CRMF_OPTIONALVALIDITY; + +/* crmf_pbm.c */ +OSSL_CRMF_PBMPARAMETER *OSSL_CRMF_pbmp_new(OSSL_LIB_CTX *libctx, size_t slen, + int owfnid, size_t itercnt, + int macnid); +int OSSL_CRMF_pbm_new(OSSL_LIB_CTX *libctx, const char *propq, + const OSSL_CRMF_PBMPARAMETER *pbmp, + const unsigned char *msg, size_t msglen, + const unsigned char *sec, size_t seclen, + unsigned char **mac, size_t *maclen); + +/* crmf_lib.c */ +int OSSL_CRMF_MSG_set1_regCtrl_regToken(OSSL_CRMF_MSG *msg, + const ASN1_UTF8STRING *tok); +ASN1_UTF8STRING +*OSSL_CRMF_MSG_get0_regCtrl_regToken(const OSSL_CRMF_MSG *msg); +int OSSL_CRMF_MSG_set1_regCtrl_authenticator(OSSL_CRMF_MSG *msg, + const ASN1_UTF8STRING *auth); +ASN1_UTF8STRING +*OSSL_CRMF_MSG_get0_regCtrl_authenticator(const OSSL_CRMF_MSG *msg); +int OSSL_CRMF_MSG_PKIPublicationInfo_push0_SinglePubInfo(OSSL_CRMF_PKIPUBLICATIONINFO *pi, + OSSL_CRMF_SINGLEPUBINFO *spi); +#define OSSL_CRMF_PUB_METHOD_DONTCARE 0 +#define OSSL_CRMF_PUB_METHOD_X500 1 +#define OSSL_CRMF_PUB_METHOD_WEB 2 +#define OSSL_CRMF_PUB_METHOD_LDAP 3 +int OSSL_CRMF_MSG_set0_SinglePubInfo(OSSL_CRMF_SINGLEPUBINFO *spi, + int method, GENERAL_NAME *nm); +#define OSSL_CRMF_PUB_ACTION_DONTPUBLISH 0 +#define OSSL_CRMF_PUB_ACTION_PLEASEPUBLISH 1 +int OSSL_CRMF_MSG_set_PKIPublicationInfo_action(OSSL_CRMF_PKIPUBLICATIONINFO *pi, + int action); +int OSSL_CRMF_MSG_set1_regCtrl_pkiPublicationInfo(OSSL_CRMF_MSG *msg, + const OSSL_CRMF_PKIPUBLICATIONINFO *pi); +OSSL_CRMF_PKIPUBLICATIONINFO +*OSSL_CRMF_MSG_get0_regCtrl_pkiPublicationInfo(const OSSL_CRMF_MSG *msg); +int OSSL_CRMF_MSG_set1_regCtrl_protocolEncrKey(OSSL_CRMF_MSG *msg, + const X509_PUBKEY *pubkey); +X509_PUBKEY +*OSSL_CRMF_MSG_get0_regCtrl_protocolEncrKey(const OSSL_CRMF_MSG *msg); +int OSSL_CRMF_MSG_set1_regCtrl_oldCertID(OSSL_CRMF_MSG *msg, + const OSSL_CRMF_CERTID *cid); +OSSL_CRMF_CERTID +*OSSL_CRMF_MSG_get0_regCtrl_oldCertID(const OSSL_CRMF_MSG *msg); +OSSL_CRMF_CERTID *OSSL_CRMF_CERTID_gen(const X509_NAME *issuer, + const ASN1_INTEGER *serial); + +int OSSL_CRMF_MSG_set1_regInfo_utf8Pairs(OSSL_CRMF_MSG *msg, + const ASN1_UTF8STRING *utf8pairs); +ASN1_UTF8STRING +*OSSL_CRMF_MSG_get0_regInfo_utf8Pairs(const OSSL_CRMF_MSG *msg); +int OSSL_CRMF_MSG_set1_regInfo_certReq(OSSL_CRMF_MSG *msg, + const OSSL_CRMF_CERTREQUEST *cr); +OSSL_CRMF_CERTREQUEST +*OSSL_CRMF_MSG_get0_regInfo_certReq(const OSSL_CRMF_MSG *msg); + +int OSSL_CRMF_MSG_set0_validity(OSSL_CRMF_MSG *crm, + ASN1_TIME *notBefore, ASN1_TIME *notAfter); +int OSSL_CRMF_MSG_set_certReqId(OSSL_CRMF_MSG *crm, int rid); +int OSSL_CRMF_MSG_get_certReqId(const OSSL_CRMF_MSG *crm); +int OSSL_CRMF_MSG_set0_extensions(OSSL_CRMF_MSG *crm, X509_EXTENSIONS *exts); + +int OSSL_CRMF_MSG_push0_extension(OSSL_CRMF_MSG *crm, X509_EXTENSION *ext); +#define OSSL_CRMF_POPO_NONE -1 +#define OSSL_CRMF_POPO_RAVERIFIED 0 +#define OSSL_CRMF_POPO_SIGNATURE 1 +#define OSSL_CRMF_POPO_KEYENC 2 +#define OSSL_CRMF_POPO_KEYAGREE 3 +int OSSL_CRMF_MSG_create_popo(int meth, OSSL_CRMF_MSG *crm, + EVP_PKEY *pkey, const EVP_MD *digest, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, + int rid, int acceptRAVerified, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER *OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_EXTENSIONS +*OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const X509_NAME *OSSL_CRMF_CERTID_get0_issuer(const OSSL_CRMF_CERTID *cid); +const ASN1_INTEGER *OSSL_CRMF_CERTID_get0_serialNumber(const OSSL_CRMF_CERTID *cid); +int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, + EVP_PKEY *pubkey, + const X509_NAME *subject, + const X509_NAME *issuer, + const ASN1_INTEGER *serial); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char *OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +#ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_CRMF) */ +#endif /* !defined(OPENSSL_CRMF_H) */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/crypto.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/crypto.h new file mode 100644 index 00000000000000..cce93833c2cb5d --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/crypto.h @@ -0,0 +1,588 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/crypto.h.in + * + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CRYPTO_H +#define OPENSSL_CRYPTO_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CRYPTO_H +#endif + +#include +#include + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#include +#include +#include +#include +#include +#include + +#ifdef CHARSET_EBCDIC +#include +#endif + +/* + * Resolve problems on some operating systems with symbol names that clash + * one way or another + */ +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSLeay OpenSSL_version_num +#define SSLeay_version OpenSSL_version +#define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER +#define SSLEAY_VERSION OPENSSL_VERSION +#define SSLEAY_CFLAGS OPENSSL_CFLAGS +#define SSLEAY_BUILT_ON OPENSSL_BUILT_ON +#define SSLEAY_PLATFORM OPENSSL_PLATFORM +#define SSLEAY_DIR OPENSSL_DIR + +/* + * Old type for allocating dynamic locks. No longer used. Use the new thread + * API instead. + */ +typedef struct { + int dummy; +} CRYPTO_dynlock; + +#endif /* OPENSSL_NO_DEPRECATED_1_1_0 */ + +typedef void CRYPTO_RWLOCK; + +CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); +__owur int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock); +__owur int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock); +int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); +void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); + +int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); + +/* No longer needed, so this is a no-op */ +#define OPENSSL_malloc_init() \ + while (0) \ + continue + +#define OPENSSL_malloc(num) \ + CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_zalloc(num) \ + CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_realloc(addr, num) \ + CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_clear_realloc(addr, old_num, num) \ + CRYPTO_clear_realloc(addr, old_num, num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_clear_free(addr, num) \ + CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_free(addr) \ + CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_memdup(str, s) \ + CRYPTO_memdup((str), s, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_strdup(str) \ + CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_strndup(str, n) \ + CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_secure_malloc(num) \ + CRYPTO_secure_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_secure_zalloc(num) \ + CRYPTO_secure_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_secure_free(addr) \ + CRYPTO_secure_free(addr, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_secure_clear_free(addr, num) \ + CRYPTO_secure_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_secure_actual_size(ptr) \ + CRYPTO_secure_actual_size(ptr) + +size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); +size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); +size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); +int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, + const unsigned char *buf, size_t buflen, + const char sep); +char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen); +int OPENSSL_hexstr2buf_ex(unsigned char *buf, size_t buf_n, size_t *buflen, + const char *str, const char sep); +unsigned char *OPENSSL_hexstr2buf(const char *str, long *buflen); +int OPENSSL_hexchar2int(unsigned char c); +int OPENSSL_strcasecmp(const char *s1, const char *s2); +int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n); + +#define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U << (sizeof(int) * 8 - 1)) - 1) / sizeof(type)) + +/* + * These functions return the values of OPENSSL_VERSION_MAJOR, + * OPENSSL_VERSION_MINOR, OPENSSL_VERSION_PATCH, OPENSSL_VERSION_PRE_RELEASE + * and OPENSSL_VERSION_BUILD_METADATA, respectively. + */ +unsigned int OPENSSL_version_major(void); +unsigned int OPENSSL_version_minor(void); +unsigned int OPENSSL_version_patch(void); +const char *OPENSSL_version_pre_release(void); +const char *OPENSSL_version_build_metadata(void); + +unsigned long OpenSSL_version_num(void); +const char *OpenSSL_version(int type); +#define OPENSSL_VERSION 0 +#define OPENSSL_CFLAGS 1 +#define OPENSSL_BUILT_ON 2 +#define OPENSSL_PLATFORM 3 +#define OPENSSL_DIR 4 +#define OPENSSL_ENGINES_DIR 5 +#define OPENSSL_VERSION_STRING 6 +#define OPENSSL_FULL_VERSION_STRING 7 +#define OPENSSL_MODULES_DIR 8 +#define OPENSSL_CPU_INFO 9 +#define OPENSSL_WINCTX 10 + +const char *OPENSSL_info(int type); +/* + * The series starts at 1001 to avoid confusion with the OpenSSL_version + * types. + */ +#define OPENSSL_INFO_CONFIG_DIR 1001 +#define OPENSSL_INFO_ENGINES_DIR 1002 +#define OPENSSL_INFO_MODULES_DIR 1003 +#define OPENSSL_INFO_DSO_EXTENSION 1004 +#define OPENSSL_INFO_DIR_FILENAME_SEPARATOR 1005 +#define OPENSSL_INFO_LIST_SEPARATOR 1006 +#define OPENSSL_INFO_SEED_SOURCE 1007 +#define OPENSSL_INFO_CPU_SETTINGS 1008 +#define OPENSSL_INFO_WINDOWS_CONTEXT 1009 + +int OPENSSL_issetugid(void); + +struct crypto_ex_data_st { + OSSL_LIB_CTX *ctx; + STACK_OF(void) *sk; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(void, void, void) +#define sk_void_num(sk) OPENSSL_sk_num(ossl_check_const_void_sk_type(sk)) +#define sk_void_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_void_sk_type(sk), (idx))) +#define sk_void_new(cmp) ((STACK_OF(void) *)OPENSSL_sk_new(ossl_check_void_compfunc_type(cmp))) +#define sk_void_new_null() ((STACK_OF(void) *)OPENSSL_sk_new_null()) +#define sk_void_new_reserve(cmp, n) ((STACK_OF(void) *)OPENSSL_sk_new_reserve(ossl_check_void_compfunc_type(cmp), (n))) +#define sk_void_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_void_sk_type(sk), (n)) +#define sk_void_free(sk) OPENSSL_sk_free(ossl_check_void_sk_type(sk)) +#define sk_void_zero(sk) OPENSSL_sk_zero(ossl_check_void_sk_type(sk)) +#define sk_void_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_void_sk_type(sk), (i))) +#define sk_void_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))) +#define sk_void_push(sk, ptr) OPENSSL_sk_push(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_void_sk_type(sk))) +#define sk_void_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_void_sk_type(sk))) +#define sk_void_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_void_sk_type(sk),ossl_check_void_freefunc_type(freefunc)) +#define sk_void_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), (idx)) +#define sk_void_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_void_sk_type(sk), (idx), ossl_check_void_type(ptr))) +#define sk_void_find(sk, ptr) OPENSSL_sk_find(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), pnum) +#define sk_void_sort(sk) OPENSSL_sk_sort(ossl_check_void_sk_type(sk)) +#define sk_void_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_void_sk_type(sk)) +#define sk_void_dup(sk) ((STACK_OF(void) *)OPENSSL_sk_dup(ossl_check_const_void_sk_type(sk))) +#define sk_void_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(void) *)OPENSSL_sk_deep_copy(ossl_check_const_void_sk_type(sk), ossl_check_void_copyfunc_type(copyfunc), ossl_check_void_freefunc_type(freefunc))) +#define sk_void_set_cmp_func(sk, cmp) ((sk_void_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_void_sk_type(sk), ossl_check_void_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * Per class, we have a STACK of function pointers. + */ +#define CRYPTO_EX_INDEX_SSL 0 +#define CRYPTO_EX_INDEX_SSL_CTX 1 +#define CRYPTO_EX_INDEX_SSL_SESSION 2 +#define CRYPTO_EX_INDEX_X509 3 +#define CRYPTO_EX_INDEX_X509_STORE 4 +#define CRYPTO_EX_INDEX_X509_STORE_CTX 5 +#define CRYPTO_EX_INDEX_DH 6 +#define CRYPTO_EX_INDEX_DSA 7 +#define CRYPTO_EX_INDEX_EC_KEY 8 +#define CRYPTO_EX_INDEX_RSA 9 +#define CRYPTO_EX_INDEX_ENGINE 10 +#define CRYPTO_EX_INDEX_UI 11 +#define CRYPTO_EX_INDEX_BIO 12 +#define CRYPTO_EX_INDEX_APP 13 +#define CRYPTO_EX_INDEX_UI_METHOD 14 +#define CRYPTO_EX_INDEX_RAND_DRBG 15 +#define CRYPTO_EX_INDEX_DRBG CRYPTO_EX_INDEX_RAND_DRBG +#define CRYPTO_EX_INDEX_OSSL_LIB_CTX 16 +#define CRYPTO_EX_INDEX_EVP_PKEY 17 +#define CRYPTO_EX_INDEX__COUNT 18 + +typedef void CRYPTO_EX_new(void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef void CRYPTO_EX_free(void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef int CRYPTO_EX_dup(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void **from_d, int idx, long argl, void *argp); +__owur int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, + CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); +/* No longer use an index. */ +int CRYPTO_free_ex_index(int class_index, int idx); + +/* + * Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a + * given class (invokes whatever per-class callbacks are applicable) + */ +int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); +int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, + const CRYPTO_EX_DATA *from); + +void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); + +/* Allocate a single item in the CRYPTO_EX_DATA variable */ +int CRYPTO_alloc_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad, + int idx); + +/* + * Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular + * index (relative to the class type involved) + */ +int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val); +void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* + * This function cleans up all "ex_data" state. It mustn't be called under + * potential race-conditions. + */ +#define CRYPTO_cleanup_all_ex_data() \ + while (0) \ + continue + +/* + * The old locking functions have been removed completely without compatibility + * macros. This is because the old functions either could not properly report + * errors, or the returned error values were not clearly documented. + * Replacing the locking functions with no-ops would cause race condition + * issues in the affected applications. It is far better for them to fail at + * compile time. + * On the other hand, the locking callbacks are no longer used. Consequently, + * the callback management functions can be safely replaced with no-op macros. + */ +#define CRYPTO_num_locks() (1) +#define CRYPTO_set_locking_callback(func) +#define CRYPTO_get_locking_callback() (NULL) +#define CRYPTO_set_add_lock_callback(func) +#define CRYPTO_get_add_lock_callback() (NULL) + +/* + * These defines where used in combination with the old locking callbacks, + * they are not called anymore, but old code that's not called might still + * use them. + */ +#define CRYPTO_LOCK 1 +#define CRYPTO_UNLOCK 2 +#define CRYPTO_READ 4 +#define CRYPTO_WRITE 8 + +/* This structure is no longer used */ +typedef struct crypto_threadid_st { + int dummy; +} CRYPTO_THREADID; +/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */ +#define CRYPTO_THREADID_set_numeric(id, val) +#define CRYPTO_THREADID_set_pointer(id, ptr) +#define CRYPTO_THREADID_set_callback(threadid_func) (0) +#define CRYPTO_THREADID_get_callback() (NULL) +#define CRYPTO_THREADID_current(id) +#define CRYPTO_THREADID_cmp(a, b) (-1) +#define CRYPTO_THREADID_cpy(dest, src) +#define CRYPTO_THREADID_hash(id) (0UL) + +#ifndef OPENSSL_NO_DEPRECATED_1_0_0 +#define CRYPTO_set_id_callback(func) +#define CRYPTO_get_id_callback() (NULL) +#define CRYPTO_thread_id() (0UL) +#endif /* OPENSSL_NO_DEPRECATED_1_0_0 */ + +#define CRYPTO_set_dynlock_create_callback(dyn_create_function) +#define CRYPTO_set_dynlock_lock_callback(dyn_lock_function) +#define CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function) +#define CRYPTO_get_dynlock_create_callback() (NULL) +#define CRYPTO_get_dynlock_lock_callback() (NULL) +#define CRYPTO_get_dynlock_destroy_callback() (NULL) +#endif /* OPENSSL_NO_DEPRECATED_1_1_0 */ + +typedef void *(*CRYPTO_malloc_fn)(size_t num, const char *file, int line); +typedef void *(*CRYPTO_realloc_fn)(void *addr, size_t num, const char *file, + int line); +typedef void (*CRYPTO_free_fn)(void *addr, const char *file, int line); +int CRYPTO_set_mem_functions(CRYPTO_malloc_fn malloc_fn, + CRYPTO_realloc_fn realloc_fn, + CRYPTO_free_fn free_fn); +void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, + CRYPTO_realloc_fn *realloc_fn, + CRYPTO_free_fn *free_fn); + +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +char *CRYPTO_strdup(const char *str, const char *file, int line); +char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +void CRYPTO_free(void *ptr, const char *file, int line); +void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); +void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); +void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, + const char *file, int line); + +int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); +int CRYPTO_secure_malloc_done(void); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +void CRYPTO_secure_free(void *ptr, const char *file, int line); +void CRYPTO_secure_clear_free(void *ptr, size_t num, + const char *file, int line); +int CRYPTO_secure_allocated(const void *ptr); +int CRYPTO_secure_malloc_initialized(void); +size_t CRYPTO_secure_actual_size(void *ptr); +size_t CRYPTO_secure_used(void); + +void OPENSSL_cleanse(void *ptr, size_t len); + +#ifndef OPENSSL_NO_CRYPTO_MDEBUG +/* + * The following can be used to detect memory leaks in the library. If + * used, it turns on malloc checking + */ +#define CRYPTO_MEM_CHECK_OFF 0x0 /* Control only */ +#define CRYPTO_MEM_CHECK_ON 0x1 /* Control and mode bit */ +#define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ +#define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ + +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +#define CRYPTO_MEM_CHECK_MAX_FS 256 + +void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define OPENSSL_mem_debug_push(info) \ + CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_mem_debug_pop() \ + CRYPTO_mem_debug_pop() +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int CRYPTO_set_mem_debug(int flag); +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_ctrl(int mode); +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_push(const char *info, + const char *file, int line); +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_pop(void); +OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_malloc(void *addr, size_t num, + int flag, + const char *file, int line); +OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, + size_t num, int flag, + const char *file, int line); +OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_free(void *addr, int flag, + const char *file, int line); +OSSL_DEPRECATEDIN_3_0 +int CRYPTO_mem_leaks_cb(int (*cb)(const char *str, size_t len, void *u), + void *u); +#endif +#ifndef OPENSSL_NO_STDIO +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks_fp(FILE *); +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks(BIO *bio); +#endif +#endif /* OPENSSL_NO_CRYPTO_MDEBUG */ + +/* die if we have to */ +ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OpenSSLDie(f, l, a) OPENSSL_die((a), (f), (l)) +#endif +#define OPENSSL_assert(e) \ + (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1)) + +int OPENSSL_isservice(void); + +void OPENSSL_init(void); +#ifdef OPENSSL_SYS_UNIX +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_prepare(void); +OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_parent(void); +OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_child(void); +#endif +#endif + +struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result); +int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec); +int OPENSSL_gmtime_diff(int *pday, int *psec, + const struct tm *from, const struct tm *to); + +/* + * CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal. + * It takes an amount of time dependent on |len|, but independent of the + * contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements + * into a defined order as the return value when a != b is undefined, other + * than to be non-zero. + */ +int CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len); + +/* Standard initialisation options */ +#define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L +#define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L +#define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L +#define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L +#define OPENSSL_INIT_NO_ADD_ALL_CIPHERS 0x00000010L +#define OPENSSL_INIT_NO_ADD_ALL_DIGESTS 0x00000020L +#define OPENSSL_INIT_LOAD_CONFIG 0x00000040L +#define OPENSSL_INIT_NO_LOAD_CONFIG 0x00000080L +#define OPENSSL_INIT_ASYNC 0x00000100L +#define OPENSSL_INIT_ENGINE_RDRAND 0x00000200L +#define OPENSSL_INIT_ENGINE_DYNAMIC 0x00000400L +#define OPENSSL_INIT_ENGINE_OPENSSL 0x00000800L +#define OPENSSL_INIT_ENGINE_CRYPTODEV 0x00001000L +#define OPENSSL_INIT_ENGINE_CAPI 0x00002000L +#define OPENSSL_INIT_ENGINE_PADLOCK 0x00004000L +#define OPENSSL_INIT_ENGINE_AFALG 0x00008000L +/* FREE: 0x00010000L */ +#define OPENSSL_INIT_ATFORK 0x00020000L +/* OPENSSL_INIT_BASE_ONLY 0x00040000L */ +#define OPENSSL_INIT_NO_ATEXIT 0x00080000L +/* OPENSSL_INIT flag range 0x03f00000 reserved for OPENSSL_init_ssl() */ +/* FREE: 0x04000000L */ +/* FREE: 0x08000000L */ +/* FREE: 0x10000000L */ +/* FREE: 0x20000000L */ +/* FREE: 0x40000000L */ +/* FREE: 0x80000000L */ +/* Max OPENSSL_INIT flag value is 0x80000000 */ + +/* openssl and dasync not counted as builtin */ +#define OPENSSL_INIT_ENGINE_ALL_BUILTIN \ + (OPENSSL_INIT_ENGINE_RDRAND | OPENSSL_INIT_ENGINE_DYNAMIC \ + | OPENSSL_INIT_ENGINE_CRYPTODEV | OPENSSL_INIT_ENGINE_CAPI | OPENSSL_INIT_ENGINE_PADLOCK) + +/* Library initialisation functions */ +void OPENSSL_cleanup(void); +int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); +int OPENSSL_atexit(void (*handler)(void)); +void OPENSSL_thread_stop(void); +void OPENSSL_thread_stop_ex(OSSL_LIB_CTX *ctx); + +/* Low-level control of initialization */ +OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void); +#ifndef OPENSSL_NO_STDIO +int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings, + const char *config_filename); +void OPENSSL_INIT_set_config_file_flags(OPENSSL_INIT_SETTINGS *settings, + unsigned long flags); +int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings, + const char *config_appname); +#endif +void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings); + +#if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG) +#if defined(_WIN32) +#if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include in order to use this */ +typedef DWORD CRYPTO_THREAD_LOCAL; +typedef DWORD CRYPTO_THREAD_ID; + +typedef LONG CRYPTO_ONCE; +#define CRYPTO_ONCE_STATIC_INIT 0 +#endif +#else +#if defined(__TANDEM) && defined(_SPT_MODEL_) +#define SPT_THREAD_SIGNAL 1 +#define SPT_THREAD_AWARE 1 +#include +#else +#include +#endif +typedef pthread_once_t CRYPTO_ONCE; +typedef pthread_key_t CRYPTO_THREAD_LOCAL; +typedef pthread_t CRYPTO_THREAD_ID; + +#define CRYPTO_ONCE_STATIC_INIT PTHREAD_ONCE_INIT +#endif +#endif + +#if !defined(CRYPTO_ONCE_STATIC_INIT) +typedef unsigned int CRYPTO_ONCE; +typedef unsigned int CRYPTO_THREAD_LOCAL; +typedef unsigned int CRYPTO_THREAD_ID; +#define CRYPTO_ONCE_STATIC_INIT 0 +#endif + +int CRYPTO_THREAD_run_once(CRYPTO_ONCE *once, void (*init)(void)); + +int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *)); +void *CRYPTO_THREAD_get_local(CRYPTO_THREAD_LOCAL *key); +int CRYPTO_THREAD_set_local(CRYPTO_THREAD_LOCAL *key, void *val); +int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key); + +CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void); +int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b); + +OSSL_LIB_CTX *OSSL_LIB_CTX_new(void); +OSSL_LIB_CTX *OSSL_LIB_CTX_new_from_dispatch(const OSSL_CORE_HANDLE *handle, + const OSSL_DISPATCH *in); +OSSL_LIB_CTX *OSSL_LIB_CTX_new_child(const OSSL_CORE_HANDLE *handle, + const OSSL_DISPATCH *in); +int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); +void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); +OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); +OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ct.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ct.h new file mode 100644 index 00000000000000..0b60803f98cad9 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ct.h @@ -0,0 +1,574 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/ct.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CT_H +#define OPENSSL_CT_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CT_H +#endif + +#include + +#ifndef OPENSSL_NO_CT +#include +#include +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +/* Minimum RSA key size, from RFC6962 */ +#define SCT_MIN_RSA_BITS 2048 + +/* All hashes are SHA256 in v1 of Certificate Transparency */ +#define CT_V1_HASHLEN SHA256_DIGEST_LENGTH + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SCT, SCT, SCT) +#define sk_SCT_num(sk) OPENSSL_sk_num(ossl_check_const_SCT_sk_type(sk)) +#define sk_SCT_value(sk, idx) ((SCT *)OPENSSL_sk_value(ossl_check_const_SCT_sk_type(sk), (idx))) +#define sk_SCT_new(cmp) ((STACK_OF(SCT) *)OPENSSL_sk_new(ossl_check_SCT_compfunc_type(cmp))) +#define sk_SCT_new_null() ((STACK_OF(SCT) *)OPENSSL_sk_new_null()) +#define sk_SCT_new_reserve(cmp, n) ((STACK_OF(SCT) *)OPENSSL_sk_new_reserve(ossl_check_SCT_compfunc_type(cmp), (n))) +#define sk_SCT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SCT_sk_type(sk), (n)) +#define sk_SCT_free(sk) OPENSSL_sk_free(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_zero(sk) OPENSSL_sk_zero(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_delete(sk, i) ((SCT *)OPENSSL_sk_delete(ossl_check_SCT_sk_type(sk), (i))) +#define sk_SCT_delete_ptr(sk, ptr) ((SCT *)OPENSSL_sk_delete_ptr(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr))) +#define sk_SCT_push(sk, ptr) OPENSSL_sk_push(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_pop(sk) ((SCT *)OPENSSL_sk_pop(ossl_check_SCT_sk_type(sk))) +#define sk_SCT_shift(sk) ((SCT *)OPENSSL_sk_shift(ossl_check_SCT_sk_type(sk))) +#define sk_SCT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SCT_sk_type(sk),ossl_check_SCT_freefunc_type(freefunc)) +#define sk_SCT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), (idx)) +#define sk_SCT_set(sk, idx, ptr) ((SCT *)OPENSSL_sk_set(ossl_check_SCT_sk_type(sk), (idx), ossl_check_SCT_type(ptr))) +#define sk_SCT_find(sk, ptr) OPENSSL_sk_find(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), pnum) +#define sk_SCT_sort(sk) OPENSSL_sk_sort(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SCT_sk_type(sk)) +#define sk_SCT_dup(sk) ((STACK_OF(SCT) *)OPENSSL_sk_dup(ossl_check_const_SCT_sk_type(sk))) +#define sk_SCT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SCT) *)OPENSSL_sk_deep_copy(ossl_check_const_SCT_sk_type(sk), ossl_check_SCT_copyfunc_type(copyfunc), ossl_check_SCT_freefunc_type(freefunc))) +#define sk_SCT_set_cmp_func(sk, cmp) ((sk_SCT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SCT_sk_type(sk), ossl_check_SCT_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CTLOG, CTLOG, CTLOG) +#define sk_CTLOG_num(sk) OPENSSL_sk_num(ossl_check_const_CTLOG_sk_type(sk)) +#define sk_CTLOG_value(sk, idx) ((CTLOG *)OPENSSL_sk_value(ossl_check_const_CTLOG_sk_type(sk), (idx))) +#define sk_CTLOG_new(cmp) ((STACK_OF(CTLOG) *)OPENSSL_sk_new(ossl_check_CTLOG_compfunc_type(cmp))) +#define sk_CTLOG_new_null() ((STACK_OF(CTLOG) *)OPENSSL_sk_new_null()) +#define sk_CTLOG_new_reserve(cmp, n) ((STACK_OF(CTLOG) *)OPENSSL_sk_new_reserve(ossl_check_CTLOG_compfunc_type(cmp), (n))) +#define sk_CTLOG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CTLOG_sk_type(sk), (n)) +#define sk_CTLOG_free(sk) OPENSSL_sk_free(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_zero(sk) OPENSSL_sk_zero(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_delete(sk, i) ((CTLOG *)OPENSSL_sk_delete(ossl_check_CTLOG_sk_type(sk), (i))) +#define sk_CTLOG_delete_ptr(sk, ptr) ((CTLOG *)OPENSSL_sk_delete_ptr(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr))) +#define sk_CTLOG_push(sk, ptr) OPENSSL_sk_push(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_pop(sk) ((CTLOG *)OPENSSL_sk_pop(ossl_check_CTLOG_sk_type(sk))) +#define sk_CTLOG_shift(sk) ((CTLOG *)OPENSSL_sk_shift(ossl_check_CTLOG_sk_type(sk))) +#define sk_CTLOG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CTLOG_sk_type(sk),ossl_check_CTLOG_freefunc_type(freefunc)) +#define sk_CTLOG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), (idx)) +#define sk_CTLOG_set(sk, idx, ptr) ((CTLOG *)OPENSSL_sk_set(ossl_check_CTLOG_sk_type(sk), (idx), ossl_check_CTLOG_type(ptr))) +#define sk_CTLOG_find(sk, ptr) OPENSSL_sk_find(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), pnum) +#define sk_CTLOG_sort(sk) OPENSSL_sk_sort(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CTLOG_sk_type(sk)) +#define sk_CTLOG_dup(sk) ((STACK_OF(CTLOG) *)OPENSSL_sk_dup(ossl_check_const_CTLOG_sk_type(sk))) +#define sk_CTLOG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CTLOG) *)OPENSSL_sk_deep_copy(ossl_check_const_CTLOG_sk_type(sk), ossl_check_CTLOG_copyfunc_type(copyfunc), ossl_check_CTLOG_freefunc_type(freefunc))) +#define sk_CTLOG_set_cmp_func(sk, cmp) ((sk_CTLOG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_compfunc_type(cmp))) + +/* clang-format on */ + +typedef enum { + CT_LOG_ENTRY_TYPE_NOT_SET = -1, + CT_LOG_ENTRY_TYPE_X509 = 0, + CT_LOG_ENTRY_TYPE_PRECERT = 1 +} ct_log_entry_type_t; + +typedef enum { + SCT_VERSION_NOT_SET = -1, + SCT_VERSION_V1 = 0 +} sct_version_t; + +typedef enum { + SCT_SOURCE_UNKNOWN, + SCT_SOURCE_TLS_EXTENSION, + SCT_SOURCE_X509V3_EXTENSION, + SCT_SOURCE_OCSP_STAPLED_RESPONSE +} sct_source_t; + +typedef enum { + SCT_VALIDATION_STATUS_NOT_SET, + SCT_VALIDATION_STATUS_UNKNOWN_LOG, + SCT_VALIDATION_STATUS_VALID, + SCT_VALIDATION_STATUS_INVALID, + SCT_VALIDATION_STATUS_UNVERIFIED, + SCT_VALIDATION_STATUS_UNKNOWN_VERSION +} sct_validation_status_t; + +/****************************************** + * CT policy evaluation context functions * + ******************************************/ + +/* + * Creates a new, empty policy evaluation context associated with the given + * library context and property query string. + * The caller is responsible for calling CT_POLICY_EVAL_CTX_free when finished + * with the CT_POLICY_EVAL_CTX. + */ +CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, + const char *propq); + +/* + * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library + * context and property query string is used. + */ +CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new(void); + +/* Deletes a policy evaluation context and anything it owns. */ +void CT_POLICY_EVAL_CTX_free(CT_POLICY_EVAL_CTX *ctx); + +/* Gets the peer certificate that the SCTs are for */ +X509 *CT_POLICY_EVAL_CTX_get0_cert(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the certificate associated with the received SCTs. + * Increments the reference count of cert. + * Returns 1 on success, 0 otherwise. + */ +int CT_POLICY_EVAL_CTX_set1_cert(CT_POLICY_EVAL_CTX *ctx, X509 *cert); + +/* Gets the issuer of the aforementioned certificate */ +X509 *CT_POLICY_EVAL_CTX_get0_issuer(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the issuer of the certificate associated with the received SCTs. + * Increments the reference count of issuer. + * Returns 1 on success, 0 otherwise. + */ +int CT_POLICY_EVAL_CTX_set1_issuer(CT_POLICY_EVAL_CTX *ctx, X509 *issuer); + +/* Gets the CT logs that are trusted sources of SCTs */ +const CTLOG_STORE *CT_POLICY_EVAL_CTX_get0_log_store(const CT_POLICY_EVAL_CTX *ctx); + +/* Sets the log store that is in use. It must outlive the CT_POLICY_EVAL_CTX. */ +void CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE(CT_POLICY_EVAL_CTX *ctx, + CTLOG_STORE *log_store); + +/* + * Gets the time, in milliseconds since the Unix epoch, that will be used as the + * current time when checking whether an SCT was issued in the future. + * Such SCTs will fail validation, as required by RFC6962. + */ +uint64_t CT_POLICY_EVAL_CTX_get_time(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the time to evaluate SCTs against, in milliseconds since the Unix epoch. + * If an SCT's timestamp is after this time, it will be interpreted as having + * been issued in the future. RFC6962 states that "TLS clients MUST reject SCTs + * whose timestamp is in the future", so an SCT will not validate in this case. + */ +void CT_POLICY_EVAL_CTX_set_time(CT_POLICY_EVAL_CTX *ctx, uint64_t time_in_ms); + +/***************** + * SCT functions * + *****************/ + +/* + * Creates a new, blank SCT. + * The caller is responsible for calling SCT_free when finished with the SCT. + */ +SCT *SCT_new(void); + +/* + * Creates a new SCT from some base64-encoded strings. + * The caller is responsible for calling SCT_free when finished with the SCT. + */ +SCT *SCT_new_from_base64(unsigned char version, + const char *logid_base64, + ct_log_entry_type_t entry_type, + uint64_t timestamp, + const char *extensions_base64, + const char *signature_base64); + +/* + * Frees the SCT and the underlying data structures. + */ +void SCT_free(SCT *sct); + +/* + * Free a stack of SCTs, and the underlying SCTs themselves. + * Intended to be compatible with X509V3_EXT_FREE. + */ +void SCT_LIST_free(STACK_OF(SCT) *a); + +/* + * Returns the version of the SCT. + */ +sct_version_t SCT_get_version(const SCT *sct); + +/* + * Set the version of an SCT. + * Returns 1 on success, 0 if the version is unrecognized. + */ +__owur int SCT_set_version(SCT *sct, sct_version_t version); + +/* + * Returns the log entry type of the SCT. + */ +ct_log_entry_type_t SCT_get_log_entry_type(const SCT *sct); + +/* + * Set the log entry type of an SCT. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_log_entry_type(SCT *sct, ct_log_entry_type_t entry_type); + +/* + * Gets the ID of the log that an SCT came from. + * Ownership of the log ID remains with the SCT. + * Returns the length of the log ID. + */ +size_t SCT_get0_log_id(const SCT *sct, unsigned char **log_id); + +/* + * Set the log ID of an SCT to point directly to the *log_id specified. + * The SCT takes ownership of the specified pointer. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set0_log_id(SCT *sct, unsigned char *log_id, size_t log_id_len); + +/* + * Set the log ID of an SCT. + * This makes a copy of the log_id. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_log_id(SCT *sct, const unsigned char *log_id, + size_t log_id_len); + +/* + * Returns the timestamp for the SCT (epoch time in milliseconds). + */ +uint64_t SCT_get_timestamp(const SCT *sct); + +/* + * Set the timestamp of an SCT (epoch time in milliseconds). + */ +void SCT_set_timestamp(SCT *sct, uint64_t timestamp); + +/* + * Return the NID for the signature used by the SCT. + * For CT v1, this will be either NID_sha256WithRSAEncryption or + * NID_ecdsa_with_SHA256 (or NID_undef if incorrect/unset). + */ +int SCT_get_signature_nid(const SCT *sct); + +/* + * Set the signature type of an SCT + * For CT v1, this should be either NID_sha256WithRSAEncryption or + * NID_ecdsa_with_SHA256. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_signature_nid(SCT *sct, int nid); + +/* + * Set *ext to point to the extension data for the SCT. ext must not be NULL. + * The SCT retains ownership of this pointer. + * Returns length of the data pointed to. + */ +size_t SCT_get0_extensions(const SCT *sct, unsigned char **ext); + +/* + * Set the extensions of an SCT to point directly to the *ext specified. + * The SCT takes ownership of the specified pointer. + */ +void SCT_set0_extensions(SCT *sct, unsigned char *ext, size_t ext_len); + +/* + * Set the extensions of an SCT. + * This takes a copy of the ext. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_extensions(SCT *sct, const unsigned char *ext, + size_t ext_len); + +/* + * Set *sig to point to the signature for the SCT. sig must not be NULL. + * The SCT retains ownership of this pointer. + * Returns length of the data pointed to. + */ +size_t SCT_get0_signature(const SCT *sct, unsigned char **sig); + +/* + * Set the signature of an SCT to point directly to the *sig specified. + * The SCT takes ownership of the specified pointer. + */ +void SCT_set0_signature(SCT *sct, unsigned char *sig, size_t sig_len); + +/* + * Set the signature of an SCT to be a copy of the *sig specified. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_signature(SCT *sct, const unsigned char *sig, + size_t sig_len); + +/* + * The origin of this SCT, e.g. TLS extension, OCSP response, etc. + */ +sct_source_t SCT_get_source(const SCT *sct); + +/* + * Set the origin of this SCT, e.g. TLS extension, OCSP response, etc. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_source(SCT *sct, sct_source_t source); + +/* + * Returns a text string describing the validation status of |sct|. + */ +const char *SCT_validation_status_string(const SCT *sct); + +/* + * Pretty-prints an |sct| to |out|. + * It will be indented by the number of spaces specified by |indent|. + * If |logs| is not NULL, it will be used to lookup the CT log that the SCT came + * from, so that the log name can be printed. + */ +void SCT_print(const SCT *sct, BIO *out, int indent, const CTLOG_STORE *logs); + +/* + * Pretty-prints an |sct_list| to |out|. + * It will be indented by the number of spaces specified by |indent|. + * SCTs will be delimited by |separator|. + * If |logs| is not NULL, it will be used to lookup the CT log that each SCT + * came from, so that the log names can be printed. + */ +void SCT_LIST_print(const STACK_OF(SCT) *sct_list, BIO *out, int indent, + const char *separator, const CTLOG_STORE *logs); + +/* + * Gets the last result of validating this SCT. + * If it has not been validated yet, returns SCT_VALIDATION_STATUS_NOT_SET. + */ +sct_validation_status_t SCT_get_validation_status(const SCT *sct); + +/* + * Validates the given SCT with the provided context. + * Sets the "validation_status" field of the SCT. + * Returns 1 if the SCT is valid and the signature verifies. + * Returns 0 if the SCT is invalid or could not be verified. + * Returns -1 if an error occurs. + */ +__owur int SCT_validate(SCT *sct, const CT_POLICY_EVAL_CTX *ctx); + +/* + * Validates the given list of SCTs with the provided context. + * Sets the "validation_status" field of each SCT. + * Returns 1 if there are no invalid SCTs and all signatures verify. + * Returns 0 if at least one SCT is invalid or could not be verified. + * Returns a negative integer if an error occurs. + */ +__owur int SCT_LIST_validate(const STACK_OF(SCT) *scts, + CT_POLICY_EVAL_CTX *ctx); + +/********************************* + * SCT parsing and serialization * + *********************************/ + +/* + * Serialize (to TLS format) a stack of SCTs and return the length. + * "a" must not be NULL. + * If "pp" is NULL, just return the length of what would have been serialized. + * If "pp" is not NULL and "*pp" is null, function will allocate a new pointer + * for data that caller is responsible for freeing (only if function returns + * successfully). + * If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring + * that "*pp" is large enough to accept all of the serialized data. + * Returns < 0 on error, >= 0 indicating bytes written (or would have been) + * on success. + */ +__owur int i2o_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp); + +/* + * Convert TLS format SCT list to a stack of SCTs. + * If "a" or "*a" is NULL, a new stack will be created that the caller is + * responsible for freeing (by calling SCT_LIST_free). + * "**pp" and "*pp" must not be NULL. + * Upon success, "*pp" will point to after the last bytes read, and a stack + * will be returned. + * Upon failure, a NULL pointer will be returned, and the position of "*pp" is + * not defined. + */ +STACK_OF(SCT) *o2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp, + size_t len); + +/* + * Serialize (to DER format) a stack of SCTs and return the length. + * "a" must not be NULL. + * If "pp" is NULL, just returns the length of what would have been serialized. + * If "pp" is not NULL and "*pp" is null, function will allocate a new pointer + * for data that caller is responsible for freeing (only if function returns + * successfully). + * If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring + * that "*pp" is large enough to accept all of the serialized data. + * Returns < 0 on error, >= 0 indicating bytes written (or would have been) + * on success. + */ +__owur int i2d_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp); + +/* + * Parses an SCT list in DER format and returns it. + * If "a" or "*a" is NULL, a new stack will be created that the caller is + * responsible for freeing (by calling SCT_LIST_free). + * "**pp" and "*pp" must not be NULL. + * Upon success, "*pp" will point to after the last bytes read, and a stack + * will be returned. + * Upon failure, a NULL pointer will be returned, and the position of "*pp" is + * not defined. + */ +STACK_OF(SCT) *d2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp, + long len); + +/* + * Serialize (to TLS format) an |sct| and write it to |out|. + * If |out| is null, no SCT will be output but the length will still be returned. + * If |out| points to a null pointer, a string will be allocated to hold the + * TLS-format SCT. It is the responsibility of the caller to free it. + * If |out| points to an allocated string, the TLS-format SCT will be written + * to it. + * The length of the SCT in TLS format will be returned. + */ +__owur int i2o_SCT(const SCT *sct, unsigned char **out); + +/* + * Parses an SCT in TLS format and returns it. + * If |psct| is not null, it will end up pointing to the parsed SCT. If it + * already points to a non-null pointer, the pointer will be free'd. + * |in| should be a pointer to a string containing the TLS-format SCT. + * |in| will be advanced to the end of the SCT if parsing succeeds. + * |len| should be the length of the SCT in |in|. + * Returns NULL if an error occurs. + * If the SCT is an unsupported version, only the SCT's 'sct' and 'sct_len' + * fields will be populated (with |in| and |len| respectively). + */ +SCT *o2i_SCT(SCT **psct, const unsigned char **in, size_t len); + +/******************** + * CT log functions * + ********************/ + +/* + * Creates a new CT log instance with the given |public_key| and |name| and + * associates it with the give library context |libctx| and property query + * string |propq|. + * Takes ownership of |public_key| but copies |name|. + * Returns NULL if malloc fails or if |public_key| cannot be converted to DER. + * Should be deleted by the caller using CTLOG_free when no longer needed. + */ +CTLOG *CTLOG_new_ex(EVP_PKEY *public_key, const char *name, OSSL_LIB_CTX *libctx, + const char *propq); + +/* + * The same as CTLOG_new_ex except that the default library context and + * property query string are used. + */ +CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name); + +/* + * Creates a new CTLOG instance with the base64-encoded SubjectPublicKeyInfo DER + * in |pkey_base64| and associated with the given library context |libctx| and + * property query string |propq|. The |name| is a string to help users identify + * this log. + * Returns 1 on success, 0 on failure. + * Should be deleted by the caller using CTLOG_free when no longer needed. + */ +int CTLOG_new_from_base64_ex(CTLOG **ct_log, const char *pkey_base64, + const char *name, OSSL_LIB_CTX *libctx, + const char *propq); + +/* + * The same as CTLOG_new_from_base64_ex() except that the default + * library context and property query string are used. + * Returns 1 on success, 0 on failure. + */ +int CTLOG_new_from_base64(CTLOG **ct_log, + const char *pkey_base64, const char *name); + +/* + * Deletes a CT log instance and its fields. + */ +void CTLOG_free(CTLOG *log); + +/* Gets the name of the CT log */ +const char *CTLOG_get0_name(const CTLOG *log); +/* Gets the ID of the CT log */ +void CTLOG_get0_log_id(const CTLOG *log, const uint8_t **log_id, + size_t *log_id_len); +/* Gets the public key of the CT log */ +EVP_PKEY *CTLOG_get0_public_key(const CTLOG *log); + +/************************** + * CT log store functions * + **************************/ + +/* + * Creates a new CT log store and associates it with the given libctx and + * property query string. + * Should be deleted by the caller using CTLOG_STORE_free when no longer needed. + */ +CTLOG_STORE *CTLOG_STORE_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +/* + * Same as CTLOG_STORE_new_ex except that the default libctx and + * property query string are used. + * Should be deleted by the caller using CTLOG_STORE_free when no longer needed. + */ +CTLOG_STORE *CTLOG_STORE_new(void); + +/* + * Deletes a CT log store and all of the CT log instances held within. + */ +void CTLOG_STORE_free(CTLOG_STORE *store); + +/* + * Finds a CT log in the store based on its log ID. + * Returns the CT log, or NULL if no match is found. + */ +const CTLOG *CTLOG_STORE_get0_log_by_id(const CTLOG_STORE *store, + const uint8_t *log_id, + size_t log_id_len); + +/* + * Loads a CT log list into a |store| from a |file|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_file(CTLOG_STORE *store, const char *file); + +/* + * Loads the default CT log list into a |store|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_default_file(CTLOG_STORE *store); + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/err.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/err.h new file mode 100644 index 00000000000000..a15ac6ac1f7856 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/err.h @@ -0,0 +1,517 @@ +/* + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ERR_H +#define OPENSSL_ERR_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ERR_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#include +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_FILENAMES +#define ERR_PUT_error(l, f, r, fn, ln) ERR_put_error(l, f, r, fn, ln) +#else +#define ERR_PUT_error(l, f, r, fn, ln) ERR_put_error(l, f, r, NULL, 0) +#endif +#endif + +#include +#include + +#define ERR_TXT_MALLOCED 0x01 +#define ERR_TXT_STRING 0x02 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) || defined(OSSL_FORCE_ERR_STATE) +#define ERR_FLAG_MARK 0x01 +#define ERR_FLAG_CLEAR 0x02 + +#define ERR_NUM_ERRORS 16 +struct err_state_st { + int err_flags[ERR_NUM_ERRORS]; + int err_marks[ERR_NUM_ERRORS]; + unsigned long err_buffer[ERR_NUM_ERRORS]; + char *err_data[ERR_NUM_ERRORS]; + size_t err_data_size[ERR_NUM_ERRORS]; + int err_data_flags[ERR_NUM_ERRORS]; + char *err_file[ERR_NUM_ERRORS]; + int err_line[ERR_NUM_ERRORS]; + char *err_func[ERR_NUM_ERRORS]; + int top, bottom; +}; +#endif + +/* library */ +#define ERR_LIB_NONE 1 +#define ERR_LIB_SYS 2 +#define ERR_LIB_BN 3 +#define ERR_LIB_RSA 4 +#define ERR_LIB_DH 5 +#define ERR_LIB_EVP 6 +#define ERR_LIB_BUF 7 +#define ERR_LIB_OBJ 8 +#define ERR_LIB_PEM 9 +#define ERR_LIB_DSA 10 +#define ERR_LIB_X509 11 +/* #define ERR_LIB_METH 12 */ +#define ERR_LIB_ASN1 13 +#define ERR_LIB_CONF 14 +#define ERR_LIB_CRYPTO 15 +#define ERR_LIB_EC 16 +#define ERR_LIB_SSL 20 +/* #define ERR_LIB_SSL23 21 */ +/* #define ERR_LIB_SSL2 22 */ +/* #define ERR_LIB_SSL3 23 */ +/* #define ERR_LIB_RSAREF 30 */ +/* #define ERR_LIB_PROXY 31 */ +#define ERR_LIB_BIO 32 +#define ERR_LIB_PKCS7 33 +#define ERR_LIB_X509V3 34 +#define ERR_LIB_PKCS12 35 +#define ERR_LIB_RAND 36 +#define ERR_LIB_DSO 37 +#define ERR_LIB_ENGINE 38 +#define ERR_LIB_OCSP 39 +#define ERR_LIB_UI 40 +#define ERR_LIB_COMP 41 +#define ERR_LIB_ECDSA 42 +#define ERR_LIB_ECDH 43 +#define ERR_LIB_OSSL_STORE 44 +#define ERR_LIB_FIPS 45 +#define ERR_LIB_CMS 46 +#define ERR_LIB_TS 47 +#define ERR_LIB_HMAC 48 +/* # define ERR_LIB_JPAKE 49 */ +#define ERR_LIB_CT 50 +#define ERR_LIB_ASYNC 51 +#define ERR_LIB_KDF 52 +#define ERR_LIB_SM2 53 +#define ERR_LIB_ESS 54 +#define ERR_LIB_PROP 55 +#define ERR_LIB_CRMF 56 +#define ERR_LIB_PROV 57 +#define ERR_LIB_CMP 58 +#define ERR_LIB_OSSL_ENCODER 59 +#define ERR_LIB_OSSL_DECODER 60 +#define ERR_LIB_HTTP 61 + +#define ERR_LIB_USER 128 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define ASN1err(f, r) ERR_raise_data(ERR_LIB_ASN1, (r), NULL) +#define ASYNCerr(f, r) ERR_raise_data(ERR_LIB_ASYNC, (r), NULL) +#define BIOerr(f, r) ERR_raise_data(ERR_LIB_BIO, (r), NULL) +#define BNerr(f, r) ERR_raise_data(ERR_LIB_BN, (r), NULL) +#define BUFerr(f, r) ERR_raise_data(ERR_LIB_BUF, (r), NULL) +#define CMPerr(f, r) ERR_raise_data(ERR_LIB_CMP, (r), NULL) +#define CMSerr(f, r) ERR_raise_data(ERR_LIB_CMS, (r), NULL) +#define COMPerr(f, r) ERR_raise_data(ERR_LIB_COMP, (r), NULL) +#define CONFerr(f, r) ERR_raise_data(ERR_LIB_CONF, (r), NULL) +#define CRMFerr(f, r) ERR_raise_data(ERR_LIB_CRMF, (r), NULL) +#define CRYPTOerr(f, r) ERR_raise_data(ERR_LIB_CRYPTO, (r), NULL) +#define CTerr(f, r) ERR_raise_data(ERR_LIB_CT, (r), NULL) +#define DHerr(f, r) ERR_raise_data(ERR_LIB_DH, (r), NULL) +#define DSAerr(f, r) ERR_raise_data(ERR_LIB_DSA, (r), NULL) +#define DSOerr(f, r) ERR_raise_data(ERR_LIB_DSO, (r), NULL) +#define ECDHerr(f, r) ERR_raise_data(ERR_LIB_ECDH, (r), NULL) +#define ECDSAerr(f, r) ERR_raise_data(ERR_LIB_ECDSA, (r), NULL) +#define ECerr(f, r) ERR_raise_data(ERR_LIB_EC, (r), NULL) +#define ENGINEerr(f, r) ERR_raise_data(ERR_LIB_ENGINE, (r), NULL) +#define ESSerr(f, r) ERR_raise_data(ERR_LIB_ESS, (r), NULL) +#define EVPerr(f, r) ERR_raise_data(ERR_LIB_EVP, (r), NULL) +#define FIPSerr(f, r) ERR_raise_data(ERR_LIB_FIPS, (r), NULL) +#define HMACerr(f, r) ERR_raise_data(ERR_LIB_HMAC, (r), NULL) +#define HTTPerr(f, r) ERR_raise_data(ERR_LIB_HTTP, (r), NULL) +#define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL) +#define OBJerr(f, r) ERR_raise_data(ERR_LIB_OBJ, (r), NULL) +#define OCSPerr(f, r) ERR_raise_data(ERR_LIB_OCSP, (r), NULL) +#define OSSL_STOREerr(f, r) ERR_raise_data(ERR_LIB_OSSL_STORE, (r), NULL) +#define PEMerr(f, r) ERR_raise_data(ERR_LIB_PEM, (r), NULL) +#define PKCS12err(f, r) ERR_raise_data(ERR_LIB_PKCS12, (r), NULL) +#define PKCS7err(f, r) ERR_raise_data(ERR_LIB_PKCS7, (r), NULL) +#define PROPerr(f, r) ERR_raise_data(ERR_LIB_PROP, (r), NULL) +#define PROVerr(f, r) ERR_raise_data(ERR_LIB_PROV, (r), NULL) +#define RANDerr(f, r) ERR_raise_data(ERR_LIB_RAND, (r), NULL) +#define RSAerr(f, r) ERR_raise_data(ERR_LIB_RSA, (r), NULL) +#define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL) +#define SM2err(f, r) ERR_raise_data(ERR_LIB_SM2, (r), NULL) +#define SSLerr(f, r) ERR_raise_data(ERR_LIB_SSL, (r), NULL) +#define SYSerr(f, r) ERR_raise_data(ERR_LIB_SYS, (r), NULL) +#define TSerr(f, r) ERR_raise_data(ERR_LIB_TS, (r), NULL) +#define UIerr(f, r) ERR_raise_data(ERR_LIB_UI, (r), NULL) +#define X509V3err(f, r) ERR_raise_data(ERR_LIB_X509V3, (r), NULL) +#define X509err(f, r) ERR_raise_data(ERR_LIB_X509, (r), NULL) +#endif + +/*- + * The error code packs differently depending on if it records a system + * error or an OpenSSL error. + * + * A system error packs like this (we follow POSIX and only allow positive + * numbers that fit in an |int|): + * + * +-+-------------------------------------------------------------+ + * |1| system error number | + * +-+-------------------------------------------------------------+ + * + * An OpenSSL error packs like this: + * + * <---------------------------- 32 bits --------------------------> + * <--- 8 bits ---><------------------ 23 bits -----------------> + * +-+---------------+---------------------------------------------+ + * |0| library | reason | + * +-+---------------+---------------------------------------------+ + * + * A few of the reason bits are reserved as flags with special meaning: + * + * <5 bits-<>--------- 19 bits -----------------> + * +-------+-+-----------------------------------+ + * | rflags| | reason | + * +-------+-+-----------------------------------+ + * ^ + * | + * ERR_RFLAG_FATAL = ERR_R_FATAL + * + * The reason flags are part of the overall reason code for practical + * reasons, as they provide an easy way to place different types of + * reason codes in different numeric ranges. + * + * The currently known reason flags are: + * + * ERR_RFLAG_FATAL Flags that the reason code is considered fatal. + * For backward compatibility reasons, this flag + * is also the code for ERR_R_FATAL (that reason + * code served the dual purpose of flag and reason + * code in one in pre-3.0 OpenSSL). + * ERR_RFLAG_COMMON Flags that the reason code is common to all + * libraries. All ERR_R_ macros must use this flag, + * and no other _R_ macro is allowed to use it. + */ + +/* Macros to help decode recorded system errors */ +#define ERR_SYSTEM_FLAG ((unsigned int)INT_MAX + 1) +#define ERR_SYSTEM_MASK ((unsigned int)INT_MAX) + +/* + * Macros to help decode recorded OpenSSL errors + * As expressed above, RFLAGS and REASON overlap by one bit to allow + * ERR_R_FATAL to use ERR_RFLAG_FATAL as its reason code. + */ +#define ERR_LIB_OFFSET 23L +#define ERR_LIB_MASK 0xFF +#define ERR_RFLAGS_OFFSET 18L +#define ERR_RFLAGS_MASK 0x1F +#define ERR_REASON_MASK 0X7FFFFF + +/* + * Reason flags are defined pre-shifted to easily combine with the reason + * number. + */ +#define ERR_RFLAG_FATAL (0x1 << ERR_RFLAGS_OFFSET) +#define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET) + +#define ERR_SYSTEM_ERROR(errcode) (((errcode) & ERR_SYSTEM_FLAG) != 0) + +static ossl_unused ossl_inline int ERR_GET_LIB(unsigned long errcode) +{ + if (ERR_SYSTEM_ERROR(errcode)) + return ERR_LIB_SYS; + return (errcode >> ERR_LIB_OFFSET) & ERR_LIB_MASK; +} + +static ossl_unused ossl_inline int ERR_GET_RFLAGS(unsigned long errcode) +{ + if (ERR_SYSTEM_ERROR(errcode)) + return 0; + return errcode & (ERR_RFLAGS_MASK << ERR_RFLAGS_OFFSET); +} + +static ossl_unused ossl_inline int ERR_GET_REASON(unsigned long errcode) +{ + if (ERR_SYSTEM_ERROR(errcode)) + return errcode & ERR_SYSTEM_MASK; + return errcode & ERR_REASON_MASK; +} + +static ossl_unused ossl_inline int ERR_FATAL_ERROR(unsigned long errcode) +{ + return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_FATAL) != 0; +} + +static ossl_unused ossl_inline int ERR_COMMON_ERROR(unsigned long errcode) +{ + return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_COMMON) != 0; +} + +/* + * ERR_PACK is a helper macro to properly pack OpenSSL error codes and may + * only be used for that purpose. System errors are packed internally. + * ERR_PACK takes reason flags and reason code combined in |reason|. + * ERR_PACK ignores |func|, that parameter is just legacy from pre-3.0 OpenSSL. + */ +#define ERR_PACK(lib, func, reason) \ + ((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK))) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SYS_F_FOPEN 0 +#define SYS_F_CONNECT 0 +#define SYS_F_GETSERVBYNAME 0 +#define SYS_F_SOCKET 0 +#define SYS_F_IOCTLSOCKET 0 +#define SYS_F_BIND 0 +#define SYS_F_LISTEN 0 +#define SYS_F_ACCEPT 0 +#define SYS_F_WSASTARTUP 0 +#define SYS_F_OPENDIR 0 +#define SYS_F_FREAD 0 +#define SYS_F_GETADDRINFO 0 +#define SYS_F_GETNAMEINFO 0 +#define SYS_F_SETSOCKOPT 0 +#define SYS_F_GETSOCKOPT 0 +#define SYS_F_GETSOCKNAME 0 +#define SYS_F_GETHOSTBYNAME 0 +#define SYS_F_FFLUSH 0 +#define SYS_F_OPEN 0 +#define SYS_F_CLOSE 0 +#define SYS_F_IOCTL 0 +#define SYS_F_STAT 0 +#define SYS_F_FCNTL 0 +#define SYS_F_FSTAT 0 +#define SYS_F_SENDFILE 0 +#endif + +/* + * All ERR_R_ codes must be combined with ERR_RFLAG_COMMON. + */ + +/* "we came from here" global reason codes, range 1..255 */ +#define ERR_R_SYS_LIB (ERR_LIB_SYS /* 2 */ | ERR_RFLAG_COMMON) +#define ERR_R_BN_LIB (ERR_LIB_BN /* 3 */ | ERR_RFLAG_COMMON) +#define ERR_R_RSA_LIB (ERR_LIB_RSA /* 4 */ | ERR_RFLAG_COMMON) +#define ERR_R_DH_LIB (ERR_LIB_DH /* 5 */ | ERR_RFLAG_COMMON) +#define ERR_R_EVP_LIB (ERR_LIB_EVP /* 6 */ | ERR_RFLAG_COMMON) +#define ERR_R_BUF_LIB (ERR_LIB_BUF /* 7 */ | ERR_RFLAG_COMMON) +#define ERR_R_OBJ_LIB (ERR_LIB_OBJ /* 8 */ | ERR_RFLAG_COMMON) +#define ERR_R_PEM_LIB (ERR_LIB_PEM /* 9 */ | ERR_RFLAG_COMMON) +#define ERR_R_DSA_LIB (ERR_LIB_DSA /* 10 */ | ERR_RFLAG_COMMON) +#define ERR_R_X509_LIB (ERR_LIB_X509 /* 11 */ | ERR_RFLAG_COMMON) +#define ERR_R_ASN1_LIB (ERR_LIB_ASN1 /* 13 */ | ERR_RFLAG_COMMON) +#define ERR_R_CONF_LIB (ERR_LIB_CONF /* 14 */ | ERR_RFLAG_COMMON) +#define ERR_R_CRYPTO_LIB (ERR_LIB_CRYPTO /* 15 */ | ERR_RFLAG_COMMON) +#define ERR_R_EC_LIB (ERR_LIB_EC /* 16 */ | ERR_RFLAG_COMMON) +#define ERR_R_SSL_LIB (ERR_LIB_SSL /* 20 */ | ERR_RFLAG_COMMON) +#define ERR_R_BIO_LIB (ERR_LIB_BIO /* 32 */ | ERR_RFLAG_COMMON) +#define ERR_R_PKCS7_LIB (ERR_LIB_PKCS7 /* 33 */ | ERR_RFLAG_COMMON) +#define ERR_R_X509V3_LIB (ERR_LIB_X509V3 /* 34 */ | ERR_RFLAG_COMMON) +#define ERR_R_PKCS12_LIB (ERR_LIB_PKCS12 /* 35 */ | ERR_RFLAG_COMMON) +#define ERR_R_RAND_LIB (ERR_LIB_RAND /* 36 */ | ERR_RFLAG_COMMON) +#define ERR_R_DSO_LIB (ERR_LIB_DSO /* 37 */ | ERR_RFLAG_COMMON) +#define ERR_R_ENGINE_LIB (ERR_LIB_ENGINE /* 38 */ | ERR_RFLAG_COMMON) +#define ERR_R_UI_LIB (ERR_LIB_UI /* 40 */ | ERR_RFLAG_COMMON) +#define ERR_R_ECDSA_LIB (ERR_LIB_ECDSA /* 42 */ | ERR_RFLAG_COMMON) +#define ERR_R_OSSL_STORE_LIB (ERR_LIB_OSSL_STORE /* 44 */ | ERR_RFLAG_COMMON) +#define ERR_R_CMS_LIB (ERR_LIB_CMS /* 46 */ | ERR_RFLAG_COMMON) +#define ERR_R_TS_LIB (ERR_LIB_TS /* 47 */ | ERR_RFLAG_COMMON) +#define ERR_R_CT_LIB (ERR_LIB_CT /* 50 */ | ERR_RFLAG_COMMON) +#define ERR_R_PROV_LIB (ERR_LIB_PROV /* 57 */ | ERR_RFLAG_COMMON) +#define ERR_R_ESS_LIB (ERR_LIB_ESS /* 54 */ | ERR_RFLAG_COMMON) +#define ERR_R_CMP_LIB (ERR_LIB_CMP /* 58 */ | ERR_RFLAG_COMMON) +#define ERR_R_OSSL_ENCODER_LIB (ERR_LIB_OSSL_ENCODER /* 59 */ | ERR_RFLAG_COMMON) +#define ERR_R_OSSL_DECODER_LIB (ERR_LIB_OSSL_DECODER /* 60 */ | ERR_RFLAG_COMMON) + +/* Other common error codes, range 256..2^ERR_RFLAGS_OFFSET-1 */ +#define ERR_R_FATAL (ERR_RFLAG_FATAL | ERR_RFLAG_COMMON) +#define ERR_R_MALLOC_FAILURE (256 | ERR_R_FATAL) +#define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (257 | ERR_R_FATAL) +#define ERR_R_PASSED_NULL_PARAMETER (258 | ERR_R_FATAL) +#define ERR_R_INTERNAL_ERROR (259 | ERR_R_FATAL) +#define ERR_R_DISABLED (260 | ERR_R_FATAL) +#define ERR_R_INIT_FAIL (261 | ERR_R_FATAL) +#define ERR_R_PASSED_INVALID_ARGUMENT (262 | ERR_RFLAG_COMMON) +#define ERR_R_OPERATION_FAIL (263 | ERR_R_FATAL) +#define ERR_R_INVALID_PROVIDER_FUNCTIONS (264 | ERR_R_FATAL) +#define ERR_R_INTERRUPTED_OR_CANCELLED (265 | ERR_RFLAG_COMMON) +#define ERR_R_NESTED_ASN1_ERROR (266 | ERR_RFLAG_COMMON) +#define ERR_R_MISSING_ASN1_EOS (267 | ERR_RFLAG_COMMON) +#define ERR_R_UNSUPPORTED (268 | ERR_RFLAG_COMMON) +#define ERR_R_FETCH_FAILED (269 | ERR_RFLAG_COMMON) +#define ERR_R_INVALID_PROPERTY_DEFINITION (270 | ERR_RFLAG_COMMON) +#define ERR_R_UNABLE_TO_GET_READ_LOCK (271 | ERR_R_FATAL) +#define ERR_R_UNABLE_TO_GET_WRITE_LOCK (272 | ERR_R_FATAL) + +typedef struct ERR_string_data_st { + unsigned long error; + const char *string; +} ERR_STRING_DATA; + +/* clang-format off */ +DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) +#define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_delete(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_delete(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_retrieve(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_retrieve(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_error(lh) OPENSSL_LH_error(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_num_items(lh) OPENSSL_LH_num_items(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh), dl) +#define lh_ERR_STRING_DATA_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +/* 12 lines and some on an 80 column terminal */ +#define ERR_MAX_DATA_SIZE 1024 + +/* Building blocks */ +void ERR_new(void); +void ERR_set_debug(const char *file, int line, const char *func); +void ERR_set_error(int lib, int reason, const char *fmt, ...); +void ERR_vset_error(int lib, int reason, const char *fmt, va_list args); + +/* Main error raising functions */ +#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL) +#define ERR_raise_data \ + (ERR_new(), \ + ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \ + ERR_set_error) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* Backward compatibility */ +#define ERR_put_error(lib, func, reason, file, line) \ + (ERR_new(), \ + ERR_set_debug((file), (line), OPENSSL_FUNC), \ + ERR_set_error((lib), (reason), NULL)) +#endif + +void ERR_set_error_data(char *data, int flags); + +unsigned long ERR_get_error(void); +unsigned long ERR_get_error_all(const char **file, int *line, + const char **func, + const char **data, int *flags); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +unsigned long ERR_get_error_line(const char **file, int *line); +OSSL_DEPRECATEDIN_3_0 +unsigned long ERR_get_error_line_data(const char **file, int *line, + const char **data, int *flags); +#endif +unsigned long ERR_peek_error(void); +unsigned long ERR_peek_error_line(const char **file, int *line); +unsigned long ERR_peek_error_func(const char **func); +unsigned long ERR_peek_error_data(const char **data, int *flags); +unsigned long ERR_peek_error_all(const char **file, int *line, + const char **func, + const char **data, int *flags); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +unsigned long ERR_peek_error_line_data(const char **file, int *line, + const char **data, int *flags); +#endif +unsigned long ERR_peek_last_error(void); +unsigned long ERR_peek_last_error_line(const char **file, int *line); +unsigned long ERR_peek_last_error_func(const char **func); +unsigned long ERR_peek_last_error_data(const char **data, int *flags); +unsigned long ERR_peek_last_error_all(const char **file, int *line, + const char **func, + const char **data, int *flags); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +unsigned long ERR_peek_last_error_line_data(const char **file, int *line, + const char **data, int *flags); +#endif + +void ERR_clear_error(void); + +char *ERR_error_string(unsigned long e, char *buf); +void ERR_error_string_n(unsigned long e, char *buf, size_t len); +const char *ERR_lib_error_string(unsigned long e); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *ERR_func_error_string(unsigned long e); +#endif +const char *ERR_reason_error_string(unsigned long e); + +void ERR_print_errors_cb(int (*cb)(const char *str, size_t len, void *u), + void *u); +#ifndef OPENSSL_NO_STDIO +void ERR_print_errors_fp(FILE *fp); +#endif +void ERR_print_errors(BIO *bp); + +void ERR_add_error_data(int num, ...); +void ERR_add_error_vdata(int num, va_list args); +void ERR_add_error_txt(const char *sepr, const char *txt); +void ERR_add_error_mem_bio(const char *sep, BIO *bio); + +int ERR_load_strings(int lib, ERR_STRING_DATA *str); +int ERR_load_strings_const(const ERR_STRING_DATA *str); +int ERR_unload_strings(int lib, ERR_STRING_DATA *str); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define ERR_load_crypto_strings() \ + OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) +#define ERR_free_strings() \ + while (0) \ + continue +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void ERR_remove_thread_state(void *); +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_0_0 +OSSL_DEPRECATEDIN_1_0_0 void ERR_remove_state(unsigned long pid); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 ERR_STATE *ERR_get_state(void); +#endif + +int ERR_get_next_error_library(void); + +int ERR_set_mark(void); +int ERR_pop_to_mark(void); +int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ess.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ess.h new file mode 100644 index 00000000000000..82f38894763dde --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ess.h @@ -0,0 +1,131 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/ess.h.in + * + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ESS_H +#define OPENSSL_ESS_H +#pragma once + +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ESS_issuer_serial ESS_ISSUER_SERIAL; +typedef struct ESS_cert_id ESS_CERT_ID; +typedef struct ESS_signing_cert ESS_SIGNING_CERT; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID, ESS_CERT_ID, ESS_CERT_ID) +#define sk_ESS_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_value(sk, idx) ((ESS_CERT_ID *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_sk_type(sk), (idx))) +#define sk_ESS_CERT_ID_new(cmp) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_compfunc_type(cmp))) +#define sk_ESS_CERT_ID_new_null() ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_ESS_CERT_ID_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_compfunc_type(cmp), (n))) +#define sk_ESS_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_sk_type(sk), (n)) +#define sk_ESS_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_delete(sk, i) ((ESS_CERT_ID *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_sk_type(sk), (i))) +#define sk_ESS_CERT_ID_delete_ptr(sk, ptr) ((ESS_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr))) +#define sk_ESS_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_pop(sk) ((ESS_CERT_ID *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_shift(sk) ((ESS_CERT_ID *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_sk_type(sk),ossl_check_ESS_CERT_ID_freefunc_type(freefunc)) +#define sk_ESS_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), (idx)) +#define sk_ESS_CERT_ID_set(sk, idx, ptr) ((ESS_CERT_ID *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_type(ptr))) +#define sk_ESS_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), pnum) +#define sk_ESS_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_dup(sk) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_freefunc_type(freefunc))) +#define sk_ESS_CERT_ID_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; +typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID_V2, ESS_CERT_ID_V2, ESS_CERT_ID_V2) +#define sk_ESS_CERT_ID_V2_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_value(sk, idx) ((ESS_CERT_ID_V2 *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), (idx))) +#define sk_ESS_CERT_ID_V2_new(cmp) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) +#define sk_ESS_CERT_ID_V2_new_null() ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_null()) +#define sk_ESS_CERT_ID_V2_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp), (n))) +#define sk_ESS_CERT_ID_V2_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (n)) +#define sk_ESS_CERT_ID_V2_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_delete(sk, i) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (i))) +#define sk_ESS_CERT_ID_V2_delete_ptr(sk, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr))) +#define sk_ESS_CERT_ID_V2_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_pop(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_shift(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk),ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc)) +#define sk_ESS_CERT_ID_V2_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), (idx)) +#define sk_ESS_CERT_ID_V2_set(sk, idx, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_V2_type(ptr))) +#define sk_ESS_CERT_ID_V2_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), pnum) +#define sk_ESS_CERT_ID_V2_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_dup(sk) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc))) +#define sk_ESS_CERT_ID_V2_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_V2_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_ISSUER_SERIAL) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_ISSUER_SERIAL, ESS_ISSUER_SERIAL) +DECLARE_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL) + +DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID, ESS_CERT_ID) +DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID) + +DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT) +DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT) + +DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID_V2) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID_V2, ESS_CERT_ID_V2) +DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID_V2) + +DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT_V2) +DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT_V2) + +ESS_SIGNING_CERT *OSSL_ESS_signing_cert_new_init(const X509 *signcert, + const STACK_OF(X509) *certs, + int set_issuer_serial); +ESS_SIGNING_CERT_V2 *OSSL_ESS_signing_cert_v2_new_init(const EVP_MD *hash_alg, + const X509 *signcert, + const STACK_OF(X509) *certs, + int set_issuer_serial); +int OSSL_ESS_check_signing_certs(const ESS_SIGNING_CERT *ss, + const ESS_SIGNING_CERT_V2 *ssv2, + const STACK_OF(X509) *chain, + int require_signing_cert); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/fipskey.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/fipskey.h new file mode 100644 index 00000000000000..2defbe7b232a77 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/fipskey.h @@ -0,0 +1,47 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/fipskey.h.in + * + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_FIPSKEY_H +#define OPENSSL_FIPSKEY_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The FIPS validation HMAC key, usable as an array initializer. + */ +/* clang-format off */ +#define FIPS_KEY_ELEMENTS \ + 0xf4, 0x55, 0x66, 0x50, 0xac, 0x31, 0xd3, 0x54, 0x61, 0x61, 0x0b, 0xac, 0x4e, 0xd8, 0x1b, 0x1a, 0x18, 0x1b, 0x2d, 0x8a, 0x43, 0xea, 0x28, 0x54, 0xcb, 0xae, 0x22, 0xca, 0x74, 0x56, 0x08, 0x13 +/* clang-format on */ + +/* + * The FIPS validation key, as a string. + */ +/* clang-format off */ +#define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* clang-format on */ + +/* + * The FIPS provider vendor name, as a string. + */ +/* clang-format off */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/lhash.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/lhash.h new file mode 100644 index 00000000000000..dab9372b0b67dc --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/lhash.h @@ -0,0 +1,417 @@ +/* + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +/* + * Header for dynamic hash table routines Author - Eric Young + */ + +#ifndef OPENSSL_LHASH_H +#define OPENSSL_LHASH_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_LHASH_H +#endif + +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct lhash_node_st OPENSSL_LH_NODE; +typedef int (*OPENSSL_LH_COMPFUNC)(const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK)(const void *, const void *, OPENSSL_LH_COMPFUNC cfn); +typedef unsigned long (*OPENSSL_LH_HASHFUNC)(const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK)(const void *, OPENSSL_LH_HASHFUNC hfn); +typedef void (*OPENSSL_LH_DOALL_FUNC)(void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK)(void *, OPENSSL_LH_DOALL_FUNC doall); +typedef void (*OPENSSL_LH_DOALL_FUNCARG)(void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK)(void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); +typedef struct lhash_st OPENSSL_LHASH; + +/* + * Macros for declaring and implementing type-safe wrappers for LHASH + * callbacks. This way, callbacks can be provided to LHASH structures without + * function pointer casting and the macro-defined callbacks provide + * per-variable casting before deferring to the underlying type-specific + * callbacks. NB: It is possible to place a "static" in front of both the + * DECLARE and IMPLEMENT macros if the functions are strictly internal. + */ + +/* First: "hash" functions */ +#define DECLARE_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *); +#define IMPLEMENT_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *arg) \ + { \ + const o_type *a = arg; \ + return name##_hash(a); \ + } +#define LHASH_HASH_FN(name) name##_LHASH_HASH + +/* Second: "compare" functions */ +#define DECLARE_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *, const void *); +#define IMPLEMENT_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *arg1, const void *arg2) \ + { \ + const o_type *a = arg1; \ + const o_type *b = arg2; \ + return name##_cmp(a, b); \ + } +#define LHASH_COMP_FN(name) name##_LHASH_COMP + +/* Fourth: "doall_arg" functions */ +#define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *, void *); +#define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) \ + { \ + o_type *a = arg1; \ + a_type *b = arg2; \ + name##_doall_arg(a, b); \ + } +#define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG + +#define LH_LOAD_MULT 256 + +int OPENSSL_LH_error(OPENSSL_LHASH *lh); +OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); +void OPENSSL_LH_free(OPENSSL_LHASH *lh); +void OPENSSL_LH_flush(OPENSSL_LHASH *lh); +void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); +void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); +void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); +void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + +unsigned long OPENSSL_LH_strhash(const char *c); +unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); +unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); +void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); + +#ifndef OPENSSL_NO_STDIO +#ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define _LHASH OPENSSL_LHASH +#define LHASH_NODE OPENSSL_LH_NODE +#define lh_error OPENSSL_LH_error +#define lh_new OPENSSL_LH_new +#define lh_free OPENSSL_LH_free +#define lh_insert OPENSSL_LH_insert +#define lh_delete OPENSSL_LH_delete +#define lh_retrieve OPENSSL_LH_retrieve +#define lh_doall OPENSSL_LH_doall +#define lh_doall_arg OPENSSL_LH_doall_arg +#define lh_strhash OPENSSL_LH_strhash +#define lh_num_items OPENSSL_LH_num_items +#ifndef OPENSSL_NO_STDIO +#define lh_stats OPENSSL_LH_stats +#define lh_node_stats OPENSSL_LH_node_stats +#define lh_node_usage_stats OPENSSL_LH_node_usage_stats +#endif +#define lh_stats_bio OPENSSL_LH_stats_bio +#define lh_node_stats_bio OPENSSL_LH_node_stats_bio +#define lh_node_usage_stats_bio OPENSSL_LH_node_usage_stats_bio +#endif + +/* Type checking... */ + +#define LHASH_OF(type) struct lhash_st_##type + +/* Helper macro for internal use */ +#define DEFINE_LHASH_OF_INTERNAL(type) \ + LHASH_OF(type) \ + { \ + union lh_##type##_dummy { \ + void *d1; \ + unsigned long d2; \ + int d3; \ + } dummy; \ + }; \ + typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ + typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ + typedef void (*lh_##type##_doallfunc)(type * a); \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type * \ + ossl_check_##type##_lh_plain_type(type *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + { \ + return (const OPENSSL_LHASH *)lh; \ + } \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + { \ + return (OPENSSL_LHASH *)lh; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + { \ + return (OPENSSL_LH_COMPFUNC)cmp; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + { \ + return (OPENSSL_LH_HASHFUNC)hfn; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + { \ + return (OPENSSL_LH_DOALL_FUNC)dfn; \ + } \ + LHASH_OF(type) + +#ifndef OPENSSL_NO_DEPRECATED_3_1 +#define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +#else +#define DEFINE_LHASH_OF_DEPRECATED(type) +#endif + +#define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) \ + { \ + union lh_##type##_dummy { \ + void *d1; \ + unsigned long d2; \ + int d3; \ + } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + { \ + return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + { \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ + { \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + } \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ + { \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ + { \ + OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ + (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ + } \ + LHASH_OF(type) + +#define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + +#define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ + int_implement_lhash_doall(type, argtype, const type) + +#define IMPLEMENT_LHASH_DOALL_ARG(type, argtype) \ + int_implement_lhash_doall(type, argtype, type) + +#define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ + void (*fn)(cbargtype *, argtype *), \ + argtype *arg) \ + { \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ + } \ + LHASH_OF(type) + +/* clang-format off */ +DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) +#define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_delete(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_retrieve(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) +#define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) +DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) +#define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_delete(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_retrieve(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh), dl) +#define lh_OPENSSL_CSTRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ocsp.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ocsp.h new file mode 100644 index 00000000000000..70a4f484d7e778 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ocsp.h @@ -0,0 +1,487 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/ocsp.h.in + * + * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_OCSP_H +#define OPENSSL_OCSP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OCSP_H +#endif + +#include +#include +#include + +/* + * These definitions are outside the OPENSSL_NO_OCSP guard because although for + * historical reasons they have OCSP_* names, they can actually be used + * independently of OCSP. E.g. see RFC5280 + */ +/*- + * CRLReason ::= ENUMERATED { + * unspecified (0), + * keyCompromise (1), + * cACompromise (2), + * affiliationChanged (3), + * superseded (4), + * cessationOfOperation (5), + * certificateHold (6), + * -- value 7 is not used + * removeFromCRL (8), + * privilegeWithdrawn (9), + * aACompromise (10) } + */ +#define OCSP_REVOKED_STATUS_NOSTATUS -1 +#define OCSP_REVOKED_STATUS_UNSPECIFIED 0 +#define OCSP_REVOKED_STATUS_KEYCOMPROMISE 1 +#define OCSP_REVOKED_STATUS_CACOMPROMISE 2 +#define OCSP_REVOKED_STATUS_AFFILIATIONCHANGED 3 +#define OCSP_REVOKED_STATUS_SUPERSEDED 4 +#define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION 5 +#define OCSP_REVOKED_STATUS_CERTIFICATEHOLD 6 +#define OCSP_REVOKED_STATUS_REMOVEFROMCRL 8 +#define OCSP_REVOKED_STATUS_PRIVILEGEWITHDRAWN 9 +#define OCSP_REVOKED_STATUS_AACOMPROMISE 10 + +#ifndef OPENSSL_NO_OCSP + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Various flags and values */ + +#define OCSP_DEFAULT_NONCE_LENGTH 16 + +#define OCSP_NOCERTS 0x1 +#define OCSP_NOINTERN 0x2 +#define OCSP_NOSIGS 0x4 +#define OCSP_NOCHAIN 0x8 +#define OCSP_NOVERIFY 0x10 +#define OCSP_NOEXPLICIT 0x20 +#define OCSP_NOCASIGN 0x40 +#define OCSP_NODELEGATED 0x80 +#define OCSP_NOCHECKS 0x100 +#define OCSP_TRUSTOTHER 0x200 +#define OCSP_RESPID_KEY 0x400 +#define OCSP_NOTIME 0x800 +#define OCSP_PARTIAL_CHAIN 0x1000 + +typedef struct ocsp_cert_id_st OCSP_CERTID; +typedef struct ocsp_one_request_st OCSP_ONEREQ; +typedef struct ocsp_req_info_st OCSP_REQINFO; +typedef struct ocsp_signature_st OCSP_SIGNATURE; +typedef struct ocsp_request_st OCSP_REQUEST; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_CERTID, OCSP_CERTID, OCSP_CERTID) +#define sk_OCSP_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_value(sk, idx) ((OCSP_CERTID *)OPENSSL_sk_value(ossl_check_const_OCSP_CERTID_sk_type(sk), (idx))) +#define sk_OCSP_CERTID_new(cmp) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new(ossl_check_OCSP_CERTID_compfunc_type(cmp))) +#define sk_OCSP_CERTID_new_null() ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_null()) +#define sk_OCSP_CERTID_new_reserve(cmp, n) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_CERTID_compfunc_type(cmp), (n))) +#define sk_OCSP_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_CERTID_sk_type(sk), (n)) +#define sk_OCSP_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_delete(sk, i) ((OCSP_CERTID *)OPENSSL_sk_delete(ossl_check_OCSP_CERTID_sk_type(sk), (i))) +#define sk_OCSP_CERTID_delete_ptr(sk, ptr) ((OCSP_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr))) +#define sk_OCSP_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_pop(sk) ((OCSP_CERTID *)OPENSSL_sk_pop(ossl_check_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_shift(sk) ((OCSP_CERTID *)OPENSSL_sk_shift(ossl_check_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_CERTID_sk_type(sk),ossl_check_OCSP_CERTID_freefunc_type(freefunc)) +#define sk_OCSP_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), (idx)) +#define sk_OCSP_CERTID_set(sk, idx, ptr) ((OCSP_CERTID *)OPENSSL_sk_set(ossl_check_OCSP_CERTID_sk_type(sk), (idx), ossl_check_OCSP_CERTID_type(ptr))) +#define sk_OCSP_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), pnum) +#define sk_OCSP_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_dup(sk) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_copyfunc_type(copyfunc), ossl_check_OCSP_CERTID_freefunc_type(freefunc))) +#define sk_OCSP_CERTID_set_cmp_func(sk, cmp) ((sk_OCSP_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_ONEREQ, OCSP_ONEREQ, OCSP_ONEREQ) +#define sk_OCSP_ONEREQ_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_value(sk, idx) ((OCSP_ONEREQ *)OPENSSL_sk_value(ossl_check_const_OCSP_ONEREQ_sk_type(sk), (idx))) +#define sk_OCSP_ONEREQ_new(cmp) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new(ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) +#define sk_OCSP_ONEREQ_new_null() ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_null()) +#define sk_OCSP_ONEREQ_new_reserve(cmp, n) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_ONEREQ_compfunc_type(cmp), (n))) +#define sk_OCSP_ONEREQ_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_ONEREQ_sk_type(sk), (n)) +#define sk_OCSP_ONEREQ_free(sk) OPENSSL_sk_free(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_delete(sk, i) ((OCSP_ONEREQ *)OPENSSL_sk_delete(ossl_check_OCSP_ONEREQ_sk_type(sk), (i))) +#define sk_OCSP_ONEREQ_delete_ptr(sk, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr))) +#define sk_OCSP_ONEREQ_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_pop(sk) ((OCSP_ONEREQ *)OPENSSL_sk_pop(ossl_check_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_shift(sk) ((OCSP_ONEREQ *)OPENSSL_sk_shift(ossl_check_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_ONEREQ_sk_type(sk),ossl_check_OCSP_ONEREQ_freefunc_type(freefunc)) +#define sk_OCSP_ONEREQ_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), (idx)) +#define sk_OCSP_ONEREQ_set(sk, idx, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_set(ossl_check_OCSP_ONEREQ_sk_type(sk), (idx), ossl_check_OCSP_ONEREQ_type(ptr))) +#define sk_OCSP_ONEREQ_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), pnum) +#define sk_OCSP_ONEREQ_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_dup(sk) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_dup(ossl_check_const_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_copyfunc_type(copyfunc), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc))) +#define sk_OCSP_ONEREQ_set_cmp_func(sk, cmp) ((sk_OCSP_ONEREQ_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) + +/* clang-format on */ + +#define OCSP_RESPONSE_STATUS_SUCCESSFUL 0 +#define OCSP_RESPONSE_STATUS_MALFORMEDREQUEST 1 +#define OCSP_RESPONSE_STATUS_INTERNALERROR 2 +#define OCSP_RESPONSE_STATUS_TRYLATER 3 +#define OCSP_RESPONSE_STATUS_SIGREQUIRED 5 +#define OCSP_RESPONSE_STATUS_UNAUTHORIZED 6 + +typedef struct ocsp_resp_bytes_st OCSP_RESPBYTES; + +#define V_OCSP_RESPID_NAME 0 +#define V_OCSP_RESPID_KEY 1 + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_RESPID, OCSP_RESPID, OCSP_RESPID) +#define sk_OCSP_RESPID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_value(sk, idx) ((OCSP_RESPID *)OPENSSL_sk_value(ossl_check_const_OCSP_RESPID_sk_type(sk), (idx))) +#define sk_OCSP_RESPID_new(cmp) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new(ossl_check_OCSP_RESPID_compfunc_type(cmp))) +#define sk_OCSP_RESPID_new_null() ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_null()) +#define sk_OCSP_RESPID_new_reserve(cmp, n) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_RESPID_compfunc_type(cmp), (n))) +#define sk_OCSP_RESPID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_RESPID_sk_type(sk), (n)) +#define sk_OCSP_RESPID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_delete(sk, i) ((OCSP_RESPID *)OPENSSL_sk_delete(ossl_check_OCSP_RESPID_sk_type(sk), (i))) +#define sk_OCSP_RESPID_delete_ptr(sk, ptr) ((OCSP_RESPID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr))) +#define sk_OCSP_RESPID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_pop(sk) ((OCSP_RESPID *)OPENSSL_sk_pop(ossl_check_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_shift(sk) ((OCSP_RESPID *)OPENSSL_sk_shift(ossl_check_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_RESPID_sk_type(sk),ossl_check_OCSP_RESPID_freefunc_type(freefunc)) +#define sk_OCSP_RESPID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), (idx)) +#define sk_OCSP_RESPID_set(sk, idx, ptr) ((OCSP_RESPID *)OPENSSL_sk_set(ossl_check_OCSP_RESPID_sk_type(sk), (idx), ossl_check_OCSP_RESPID_type(ptr))) +#define sk_OCSP_RESPID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), pnum) +#define sk_OCSP_RESPID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_dup(sk) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_copyfunc_type(copyfunc), ossl_check_OCSP_RESPID_freefunc_type(freefunc))) +#define sk_OCSP_RESPID_set_cmp_func(sk, cmp) ((sk_OCSP_RESPID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ocsp_revoked_info_st OCSP_REVOKEDINFO; + +#define V_OCSP_CERTSTATUS_GOOD 0 +#define V_OCSP_CERTSTATUS_REVOKED 1 +#define V_OCSP_CERTSTATUS_UNKNOWN 2 + +typedef struct ocsp_cert_status_st OCSP_CERTSTATUS; +typedef struct ocsp_single_response_st OCSP_SINGLERESP; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_SINGLERESP, OCSP_SINGLERESP, OCSP_SINGLERESP) +#define sk_OCSP_SINGLERESP_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_value(sk, idx) ((OCSP_SINGLERESP *)OPENSSL_sk_value(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), (idx))) +#define sk_OCSP_SINGLERESP_new(cmp) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) +#define sk_OCSP_SINGLERESP_new_null() ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_null()) +#define sk_OCSP_SINGLERESP_new_reserve(cmp, n) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp), (n))) +#define sk_OCSP_SINGLERESP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_SINGLERESP_sk_type(sk), (n)) +#define sk_OCSP_SINGLERESP_free(sk) OPENSSL_sk_free(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_delete(sk, i) ((OCSP_SINGLERESP *)OPENSSL_sk_delete(ossl_check_OCSP_SINGLERESP_sk_type(sk), (i))) +#define sk_OCSP_SINGLERESP_delete_ptr(sk, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr))) +#define sk_OCSP_SINGLERESP_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_pop(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_pop(ossl_check_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_shift(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_shift(ossl_check_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_SINGLERESP_sk_type(sk),ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc)) +#define sk_OCSP_SINGLERESP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), (idx)) +#define sk_OCSP_SINGLERESP_set(sk, idx, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_set(ossl_check_OCSP_SINGLERESP_sk_type(sk), (idx), ossl_check_OCSP_SINGLERESP_type(ptr))) +#define sk_OCSP_SINGLERESP_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), pnum) +#define sk_OCSP_SINGLERESP_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_dup(sk) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_dup(ossl_check_const_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_copyfunc_type(copyfunc), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc))) +#define sk_OCSP_SINGLERESP_set_cmp_func(sk, cmp) ((sk_OCSP_SINGLERESP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ocsp_response_data_st OCSP_RESPDATA; + +typedef struct ocsp_basic_response_st OCSP_BASICRESP; + +typedef struct ocsp_crl_id_st OCSP_CRLID; +typedef struct ocsp_service_locator_st OCSP_SERVICELOC; + +#define PEM_STRING_OCSP_REQUEST "OCSP REQUEST" +#define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE" + +#define d2i_OCSP_REQUEST_bio(bp, p) ASN1_d2i_bio_of(OCSP_REQUEST, OCSP_REQUEST_new, d2i_OCSP_REQUEST, bp, p) + +#define d2i_OCSP_RESPONSE_bio(bp, p) ASN1_d2i_bio_of(OCSP_RESPONSE, OCSP_RESPONSE_new, d2i_OCSP_RESPONSE, bp, p) + +#define PEM_read_bio_OCSP_REQUEST(bp, x, cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \ + (d2i_of_void *)d2i_OCSP_REQUEST, PEM_STRING_OCSP_REQUEST, \ + bp, (char **)(x), cb, NULL) + +#define PEM_read_bio_OCSP_RESPONSE(bp, x, cb) (OCSP_RESPONSE *)PEM_ASN1_read_bio( \ + (d2i_of_void *)d2i_OCSP_RESPONSE, PEM_STRING_OCSP_RESPONSE, \ + bp, (char **)(x), cb, NULL) + +#define PEM_write_bio_OCSP_REQUEST(bp, o) \ + PEM_ASN1_write_bio((i2d_of_void *)i2d_OCSP_REQUEST, PEM_STRING_OCSP_REQUEST, \ + bp, (char *)(o), NULL, NULL, 0, NULL, NULL) + +#define PEM_write_bio_OCSP_RESPONSE(bp, o) \ + PEM_ASN1_write_bio((i2d_of_void *)i2d_OCSP_RESPONSE, PEM_STRING_OCSP_RESPONSE, \ + bp, (char *)(o), NULL, NULL, 0, NULL, NULL) + +#define i2d_OCSP_RESPONSE_bio(bp, o) ASN1_i2d_bio_of(OCSP_RESPONSE, i2d_OCSP_RESPONSE, bp, o) + +#define i2d_OCSP_REQUEST_bio(bp, o) ASN1_i2d_bio_of(OCSP_REQUEST, i2d_OCSP_REQUEST, bp, o) + +#define ASN1_BIT_STRING_digest(data, type, md, len) \ + ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING), type, data, md, len) + +#define OCSP_CERTSTATUS_dup(cs) \ + (OCSP_CERTSTATUS *)ASN1_dup((i2d_of_void *)i2d_OCSP_CERTSTATUS, \ + (d2i_of_void *)d2i_OCSP_CERTSTATUS, (char *)(cs)) + +DECLARE_ASN1_DUP_FUNCTION(OCSP_CERTID) + +OSSL_HTTP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, + const OCSP_REQUEST *req, int buf_size); +OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef OSSL_HTTP_REQ_CTX OCSP_REQ_CTX; +#define OCSP_REQ_CTX_new(io, buf_size) \ + OSSL_HTTP_REQ_CTX_new(io, io, buf_size) +#define OCSP_REQ_CTX_free OSSL_HTTP_REQ_CTX_free +#define OCSP_REQ_CTX_http(rctx, op, path) \ + (OSSL_HTTP_REQ_CTX_set_expected(rctx, NULL, 1 /* asn1 */, 0, 0) && OSSL_HTTP_REQ_CTX_set_request_line(rctx, strcmp(op, "POST") == 0, NULL, NULL, path)) +#define OCSP_REQ_CTX_add1_header OSSL_HTTP_REQ_CTX_add1_header +#define OCSP_REQ_CTX_i2d(r, it, req) \ + OSSL_HTTP_REQ_CTX_set1_req(r, "application/ocsp-request", it, req) +#define OCSP_REQ_CTX_set1_req(r, req) \ + OCSP_REQ_CTX_i2d(r, ASN1_ITEM_rptr(OCSP_REQUEST), (ASN1_VALUE *)(req)) +#define OCSP_REQ_CTX_nbio OSSL_HTTP_REQ_CTX_nbio +#define OCSP_REQ_CTX_nbio_d2i OSSL_HTTP_REQ_CTX_nbio_d2i +#define OCSP_sendreq_nbio(p, r) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(r, (ASN1_VALUE **)(p), \ + ASN1_ITEM_rptr(OCSP_RESPONSE)) +#define OCSP_REQ_CTX_get0_mem_bio OSSL_HTTP_REQ_CTX_get0_mem_bio +#define OCSP_set_max_response_length OSSL_HTTP_REQ_CTX_set_max_response_length +#endif + +OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, const X509 *subject, + const X509 *issuer); + +OCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst, + const X509_NAME *issuerName, + const ASN1_BIT_STRING *issuerKey, + const ASN1_INTEGER *serialNumber); + +OCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid); + +int OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len); +int OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len); +int OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *bs); +int OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req); + +int OCSP_request_set1_name(OCSP_REQUEST *req, const X509_NAME *nm); +int OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert); + +int OCSP_request_sign(OCSP_REQUEST *req, + X509 *signer, + EVP_PKEY *key, + const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); + +int OCSP_response_status(OCSP_RESPONSE *resp); +OCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp); + +const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *bs); +const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs); +const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_signer(OCSP_BASICRESP *bs, X509 **signer, + STACK_OF(X509) *extra_certs); + +int OCSP_resp_count(OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx); +const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(const OCSP_BASICRESP *bs); +const STACK_OF(X509) *OCSP_resp_get0_certs(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_id(const OCSP_BASICRESP *bs, + const ASN1_OCTET_STRING **pid, + const X509_NAME **pname); +int OCSP_resp_get1_id(const OCSP_BASICRESP *bs, + ASN1_OCTET_STRING **pid, + X509_NAME **pname); + +int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last); +int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status, + int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd, + ASN1_GENERALIZEDTIME *nextupd, long sec, long maxsec); + +int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, + X509_STORE *store, unsigned long flags); + +#define OCSP_parse_url(url, host, port, path, ssl) \ + OSSL_HTTP_parse_url(url, ssl, NULL, host, port, NULL, path, NULL, NULL) + +int OCSP_id_issuer_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); +int OCSP_id_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); + +int OCSP_request_onereq_count(OCSP_REQUEST *req); +OCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i); +OCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one); +int OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, + ASN1_OCTET_STRING **pikeyHash, + ASN1_INTEGER **pserial, OCSP_CERTID *cid); +int OCSP_request_is_signed(OCSP_REQUEST *req); +OCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp, + OCSP_CERTID *cid, + int status, int reason, + ASN1_TIME *revtime, + ASN1_TIME *thisupd, + ASN1_TIME *nextupd); +int OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert); +int OCSP_basic_sign(OCSP_BASICRESP *brsp, + X509 *signer, EVP_PKEY *key, const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_basic_sign_ctx(OCSP_BASICRESP *brsp, + X509 *signer, EVP_MD_CTX *ctx, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_RESPID_set_by_name(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_set_by_key_ex(OCSP_RESPID *respid, X509 *cert, + OSSL_LIB_CTX *libctx, const char *propq); +int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_match_ex(OCSP_RESPID *respid, X509 *cert, OSSL_LIB_CTX *libctx, + const char *propq); +int OCSP_RESPID_match(OCSP_RESPID *respid, X509 *cert); + +X509_EXTENSION *OCSP_crlID_new(const char *url, long *n, char *tim); + +X509_EXTENSION *OCSP_accept_responses_new(char **oids); + +X509_EXTENSION *OCSP_archive_cutoff_new(char *tim); + +X509_EXTENSION *OCSP_url_svcloc_new(const X509_NAME *issuer, const char **urls); + +int OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x); +int OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos); +int OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos); +X509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc); +X509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc); +void *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit, + int *idx); +int OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc); + +int OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x); +int OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos); +int OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, const ASN1_OBJECT *obj, int lastpos); +int OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos); +X509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc); +X509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc); +void *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx); +int OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc); + +int OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x); +int OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos); +int OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc); +X509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc); +void *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit, + int *idx); +int OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc); + +int OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x); +int OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos); +int OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc); +X509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc); +void *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit, + int *idx); +int OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc); +const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x); + +DECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS) +DECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPID) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES) +DECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTID) +DECLARE_ASN1_FUNCTIONS(OCSP_REQUEST) +DECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE) +DECLARE_ASN1_FUNCTIONS(OCSP_REQINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_CRLID) +DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC) + +const char *OCSP_response_status_str(long s); +const char *OCSP_cert_status_str(long s); +const char *OCSP_crl_reason_str(long s); + +int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST *a, unsigned long flags); +int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE *o, unsigned long flags); + +int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, + X509_STORE *st, unsigned long flags); + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_OCSP) */ +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/opensslv.h new file mode 100644 index 00000000000000..8e9329bcc0dd5e --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/opensslv.h @@ -0,0 +1,131 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/opensslv.h.in + * + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_OPENSSLV_H +#define OPENSSL_OPENSSLV_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SECTION 1: VERSION DATA. These will change for each release + */ + +/* + * Base version macros + * + * These macros express version number MAJOR.MINOR.PATCH exactly + */ +/* clang-format off */ +# define OPENSSL_VERSION_MAJOR 3 +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_VERSION_MINOR 5 +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_VERSION_PATCH 7 +/* clang-format on */ + +/* + * Additional version information + * + * These are also part of the new version scheme, but aren't part + * of the version number itself. + */ + +/* Could be: #define OPENSSL_VERSION_PRE_RELEASE "-alpha.1" */ +/* clang-format off */ +# define OPENSSL_VERSION_PRE_RELEASE "" +/* clang-format on */ +/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+fips" */ +/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+vendor.1" */ +/* clang-format off */ +# define OPENSSL_VERSION_BUILD_METADATA "" +/* clang-format on */ + +/* + * Note: The OpenSSL Project will never define OPENSSL_VERSION_BUILD_METADATA + * to be anything but the empty string. Its use is entirely reserved for + * others + */ + +/* + * Shared library version + * + * This is strictly to express ABI version, which may or may not + * be related to the API version expressed with the macros above. + * This is defined in free form. + */ +/* clang-format off */ +# define OPENSSL_SHLIB_VERSION 3 +/* clang-format on */ + +/* + * SECTION 2: USEFUL MACROS + */ + +/* For checking general API compatibility when preprocessing */ +#define OPENSSL_VERSION_PREREQ(maj, min) \ + ((OPENSSL_VERSION_MAJOR << 16) + OPENSSL_VERSION_MINOR >= ((maj) << 16) + (min)) + +/* + * Macros to get the version in easily digested string form, both the short + * "MAJOR.MINOR.PATCH" variant (where MAJOR, MINOR and PATCH are replaced + * with the values from the corresponding OPENSSL_VERSION_ macros) and the + * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and + * OPENSSL_VERSION_BUILD_METADATA_STR appended. + */ +/* clang-format off */ +# define OPENSSL_VERSION_STR "3.5.7" +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_FULL_VERSION_STR "3.5.7" +/* clang-format on */ + +/* + * SECTION 3: ADDITIONAL METADATA + * + * These strings are defined separately to allow them to be parsable. + */ +/* clang-format off */ +# define OPENSSL_RELEASE_DATE "9 Jun 2026" +/* clang-format on */ + +/* + * SECTION 4: BACKWARD COMPATIBILITY + */ + +/* clang-format off */ +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026" +/* clang-format on */ + +/* clang-format off */ +/* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PP0L */ +# define OPENSSL_VERSION_NUMBER \ + ( (OPENSSL_VERSION_MAJOR<<28) \ + |(OPENSSL_VERSION_MINOR<<20) \ + |(OPENSSL_VERSION_PATCH<<4) \ + |0x0L ) +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OPENSSLV_H +#endif + +#endif /* OPENSSL_OPENSSLV_H */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/pkcs12.h new file mode 100644 index 00000000000000..f7e38ace03bc0b --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/pkcs12.h @@ -0,0 +1,370 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/pkcs12.h.in + * + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_PKCS12_H +#define OPENSSL_PKCS12_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PKCS12_H +#endif + +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define PKCS12_KEY_ID 1 +#define PKCS12_IV_ID 2 +#define PKCS12_MAC_ID 3 + +/* Default iteration count */ +#ifndef PKCS12_DEFAULT_ITER +#define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER +#endif + +#define PKCS12_MAC_KEY_LENGTH 20 + +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ +#define PKCS12_SALT_LEN 8 + +/* It's not clear if these are actually needed... */ +#define PKCS12_key_gen PKCS12_key_gen_utf8 +#define PKCS12_add_friendlyname PKCS12_add_friendlyname_utf8 + +/* MS key usage constants */ + +#define KEY_EX 0x10 +#define KEY_SIG 0x80 + +typedef struct PKCS12_MAC_DATA_st PKCS12_MAC_DATA; + +typedef struct PKCS12_st PKCS12; + +typedef struct PKCS12_SAFEBAG_st PKCS12_SAFEBAG; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS12_SAFEBAG, PKCS12_SAFEBAG, PKCS12_SAFEBAG) +#define sk_PKCS12_SAFEBAG_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_value(sk, idx) ((PKCS12_SAFEBAG *)OPENSSL_sk_value(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), (idx))) +#define sk_PKCS12_SAFEBAG_new(cmp) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) +#define sk_PKCS12_SAFEBAG_new_null() ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_null()) +#define sk_PKCS12_SAFEBAG_new_reserve(cmp, n) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_reserve(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp), (n))) +#define sk_PKCS12_SAFEBAG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (n)) +#define sk_PKCS12_SAFEBAG_free(sk) OPENSSL_sk_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_delete(sk, i) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (i))) +#define sk_PKCS12_SAFEBAG_delete_ptr(sk, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete_ptr(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr))) +#define sk_PKCS12_SAFEBAG_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_pop(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_pop(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_shift(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_shift(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk),ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc)) +#define sk_PKCS12_SAFEBAG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), (idx)) +#define sk_PKCS12_SAFEBAG_set(sk, idx, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_set(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (idx), ossl_check_PKCS12_SAFEBAG_type(ptr))) +#define sk_PKCS12_SAFEBAG_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), pnum) +#define sk_PKCS12_SAFEBAG_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_dup(sk) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_dup(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_copyfunc_type(copyfunc), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc))) +#define sk_PKCS12_SAFEBAG_set_cmp_func(sk, cmp) ((sk_PKCS12_SAFEBAG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs12_bag_st PKCS12_BAGS; + +#define PKCS12_ERROR 0 +#define PKCS12_OK 1 + +/* Compatibility macros */ + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 + +#define M_PKCS12_bag_type PKCS12_bag_type +#define M_PKCS12_cert_bag_type PKCS12_cert_bag_type +#define M_PKCS12_crl_bag_type PKCS12_cert_bag_type + +#define PKCS12_certbag2x509 PKCS12_SAFEBAG_get1_cert +#define PKCS12_certbag2scrl PKCS12_SAFEBAG_get1_crl +#define PKCS12_bag_type PKCS12_SAFEBAG_get_nid +#define PKCS12_cert_bag_type PKCS12_SAFEBAG_get_bag_nid +#define PKCS12_x5092certbag PKCS12_SAFEBAG_create_cert +#define PKCS12_x509crl2certbag PKCS12_SAFEBAG_create_crl +#define PKCS12_MAKE_KEYBAG PKCS12_SAFEBAG_create0_p8inf +#define PKCS12_MAKE_SHKEYBAG PKCS12_SAFEBAG_create_pkcs8_encrypt + +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +#endif + +ASN1_TYPE *PKCS8_get_attr(PKCS8_PRIV_KEY_INFO *p8, int attr_nid); +int PKCS12_mac_present(const PKCS12 *p12); +void PKCS12_get0_mac(const ASN1_OCTET_STRING **pmac, + const X509_ALGOR **pmacalg, + const ASN1_OCTET_STRING **psalt, + const ASN1_INTEGER **piter, + const PKCS12 *p12); + +const ASN1_TYPE *PKCS12_SAFEBAG_get0_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_type(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_nid(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); +const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); + +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); +X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); +X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); +const STACK_OF(PKCS12_SAFEBAG) * +PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); +const PKCS8_PRIV_KEY_INFO *PKCS12_SAFEBAG_get0_p8inf(const PKCS12_SAFEBAG *bag); +const X509_SIG *PKCS12_SAFEBAG_get0_pkcs8(const PKCS12_SAFEBAG *bag); + +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_cert(X509 *x509); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_crl(X509_CRL *crl); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_secret(int type, int vtype, const unsigned char *value, int len); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_p8inf(PKCS8_PRIV_KEY_INFO *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_pkcs8(X509_SIG *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt_ex(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf, + OSSL_LIB_CTX *ctx, + const char *propq); + +PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, + int nid1, int nid2); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(const X509_SIG *p8, const char *pass, + int passlen); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt_ex(const X509_SIG *p8, const char *pass, + int passlen, OSSL_LIB_CTX *ctx, + const char *propq); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey_ex(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen, + OSSL_LIB_CTX *ctx, + const char *propq); +X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8); +X509_SIG *PKCS8_encrypt_ex(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8, + OSSL_LIB_CTX *ctx, const char *propq); +X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); +X509_SIG *PKCS8_set0_pbe_ex(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe, + OSSL_LIB_CTX *ctx, const char *propq); +PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk); +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7); +PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags); +PKCS7 *PKCS12_pack_p7encdata_ex(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags, + OSSL_LIB_CTX *ctx, const char *propq); + +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass, + int passlen); + +int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes); +STACK_OF(PKCS7) *PKCS12_unpack_authsafes(const PKCS12 *p12); + +int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, + int namelen); +int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_utf8(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_CSPName_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag, + const unsigned char *name, int namelen); +int PKCS12_add1_attr_by_NID(PKCS12_SAFEBAG *bag, int nid, int type, + const unsigned char *bytes, int len); +int PKCS12_add1_attr_by_txt(PKCS12_SAFEBAG *bag, const char *attrname, int type, + const unsigned char *bytes, int len); +int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage); +ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, + int attr_nid); +char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); +const STACK_OF(X509_ATTRIBUTE) * +PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); +unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de); +unsigned char *PKCS12_pbe_crypt_ex(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de, OSSL_LIB_CTX *libctx, + const char *propq); +void *PKCS12_item_decrypt_d2i(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf); +void *PKCS12_item_decrypt_d2i_ex(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf, + OSSL_LIB_CTX *libctx, + const char *propq); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt_ex(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf, + OSSL_LIB_CTX *ctx, + const char *propq); +PKCS12 *PKCS12_init(int mode); +PKCS12 *PKCS12_init_ex(int mode, OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_asc_ex(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); +int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_uni_ex(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); +int PKCS12_key_gen_utf8(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_utf8_ex(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de); +int PKCS12_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); +int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *mac, unsigned int *maclen); +int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); +int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); +int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, + int saltlen, const EVP_MD *md_type); +unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2asc(const unsigned char *uni, int unilen); +unsigned char *OPENSSL_utf82uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2utf8(const unsigned char *uni, int unilen); + +DECLARE_ASN1_FUNCTIONS(PKCS12) +DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA) +DECLARE_ASN1_FUNCTIONS(PKCS12_SAFEBAG) +DECLARE_ASN1_FUNCTIONS(PKCS12_BAGS) + +DECLARE_ASN1_ITEM(PKCS12_SAFEBAGS) +DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) + +void PKCS12_PBE_add(void); +int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, + STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); +PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype); +PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); + +PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); +PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass); +PKCS12_SAFEBAG *PKCS12_add_key_ex(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass, + OSSL_LIB_CTX *ctx, const char *propq); + +PKCS12_SAFEBAG *PKCS12_add_secret(STACK_OF(PKCS12_SAFEBAG) **pbags, + int nid_type, const unsigned char *value, int len); +int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass); +int PKCS12_add_safe_ex(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass, + OSSL_LIB_CTX *ctx, const char *propq); + +PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); +PKCS12 *PKCS12_add_safes_ex(STACK_OF(PKCS7) *safes, int p7_nid, + OSSL_LIB_CTX *ctx, const char *propq); + +int i2d_PKCS12_bio(BIO *bp, const PKCS12 *p12); +#ifndef OPENSSL_NO_STDIO +int i2d_PKCS12_fp(FILE *fp, const PKCS12 *p12); +#endif +PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); +#ifndef OPENSSL_NO_STDIO +PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); +#endif +int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/pkcs7.h new file mode 100644 index 00000000000000..b6ab21e8b423f7 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/pkcs7.h @@ -0,0 +1,435 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/pkcs7.h.in + * + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_PKCS7_H +#define OPENSSL_PKCS7_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PKCS7_H +#endif + +#include +#include +#include + +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +Encryption_ID DES-CBC +Digest_ID MD5 +Digest_Encryption_ID rsaEncryption +Key_Encryption_ID rsaEncryption +*/ + +typedef struct PKCS7_CTX_st { + OSSL_LIB_CTX *libctx; + char *propq; +} PKCS7_CTX; + +typedef struct pkcs7_issuer_and_serial_st { + X509_NAME *issuer; + ASN1_INTEGER *serial; +} PKCS7_ISSUER_AND_SERIAL; + +typedef struct pkcs7_signer_info_st { + ASN1_INTEGER *version; /* version 1 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *digest_alg; + STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */ + X509_ALGOR *digest_enc_alg; /* confusing name, actually used for signing */ + ASN1_OCTET_STRING *enc_digest; /* confusing name, actually signature */ + STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */ + /* The private key to sign with */ + EVP_PKEY *pkey; + const PKCS7_CTX *ctx; +} PKCS7_SIGNER_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO) +#define sk_PKCS7_SIGNER_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_value(sk, idx) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), (idx))) +#define sk_PKCS7_SIGNER_INFO_new(cmp) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) +#define sk_PKCS7_SIGNER_INFO_new_null() ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_SIGNER_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp), (n))) +#define sk_PKCS7_SIGNER_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (n)) +#define sk_PKCS7_SIGNER_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_delete(sk, i) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (i))) +#define sk_PKCS7_SIGNER_INFO_delete_ptr(sk, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) +#define sk_PKCS7_SIGNER_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_pop(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_shift(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk),ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc)) +#define sk_PKCS7_SIGNER_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), (idx)) +#define sk_PKCS7_SIGNER_INFO_set(sk, idx, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (idx), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) +#define sk_PKCS7_SIGNER_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), pnum) +#define sk_PKCS7_SIGNER_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_dup(sk) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc))) +#define sk_PKCS7_SIGNER_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_SIGNER_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs7_recip_info_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *key_enc_algor; + ASN1_OCTET_STRING *enc_key; + X509 *cert; /* get the pub-key from this */ + const PKCS7_CTX *ctx; +} PKCS7_RECIP_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INFO) +#define sk_PKCS7_RECIP_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_value(sk, idx) ((PKCS7_RECIP_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), (idx))) +#define sk_PKCS7_RECIP_INFO_new(cmp) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) +#define sk_PKCS7_RECIP_INFO_new_null() ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_RECIP_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp), (n))) +#define sk_PKCS7_RECIP_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (n)) +#define sk_PKCS7_RECIP_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_delete(sk, i) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (i))) +#define sk_PKCS7_RECIP_INFO_delete_ptr(sk, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr))) +#define sk_PKCS7_RECIP_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_pop(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_shift(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk),ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc)) +#define sk_PKCS7_RECIP_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), (idx)) +#define sk_PKCS7_RECIP_INFO_set(sk, idx, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (idx), ossl_check_PKCS7_RECIP_INFO_type(ptr))) +#define sk_PKCS7_RECIP_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), pnum) +#define sk_PKCS7_RECIP_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_dup(sk) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc))) +#define sk_PKCS7_RECIP_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_RECIP_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs7_signed_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + struct pkcs7_st *contents; +} PKCS7_SIGNED; +/* + * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about + * merging the two + */ + +typedef struct pkcs7_enc_content_st { + ASN1_OBJECT *content_type; + X509_ALGOR *algorithm; + ASN1_OCTET_STRING *enc_data; /* [ 0 ] */ + const EVP_CIPHER *cipher; + const PKCS7_CTX *ctx; +} PKCS7_ENC_CONTENT; + +typedef struct pkcs7_enveloped_st { + ASN1_INTEGER *version; /* version 0 */ + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENVELOPE; + +typedef struct pkcs7_signedandenveloped_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + PKCS7_ENC_CONTENT *enc_data; + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; +} PKCS7_SIGN_ENVELOPE; + +typedef struct pkcs7_digest_st { + ASN1_INTEGER *version; /* version 0 */ + X509_ALGOR *md; /* md used */ + struct pkcs7_st *contents; + ASN1_OCTET_STRING *digest; +} PKCS7_DIGEST; + +typedef struct pkcs7_encrypted_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENCRYPT; + +typedef struct pkcs7_st { + /* + * The following is non NULL if it contains ASN1 encoding of this + * structure + */ + unsigned char *asn1; + long length; +#define PKCS7_S_HEADER 0 +#define PKCS7_S_BODY 1 +#define PKCS7_S_TAIL 2 + int state; /* used during processing */ + int detached; + ASN1_OBJECT *type; + /* content as defined by the type */ + /* + * all encryption/message digests are applied to the 'contents', leaving + * out the 'type' field. + */ + union { + char *ptr; + /* NID_pkcs7_data */ + ASN1_OCTET_STRING *data; + /* NID_pkcs7_signed */ + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ + /* NID_pkcs7_enveloped */ + PKCS7_ENVELOPE *enveloped; + /* NID_pkcs7_signedAndEnveloped */ + PKCS7_SIGN_ENVELOPE *signed_and_enveloped; + /* NID_pkcs7_digest */ + PKCS7_DIGEST *digest; + /* NID_pkcs7_encrypted */ + PKCS7_ENCRYPT *encrypted; + /* Anything else */ + ASN1_TYPE *other; + } d; + PKCS7_CTX ctx; +} PKCS7; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7, PKCS7, PKCS7) +#define sk_PKCS7_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_sk_type(sk)) +#define sk_PKCS7_value(sk, idx) ((PKCS7 *)OPENSSL_sk_value(ossl_check_const_PKCS7_sk_type(sk), (idx))) +#define sk_PKCS7_new(cmp) ((STACK_OF(PKCS7) *)OPENSSL_sk_new(ossl_check_PKCS7_compfunc_type(cmp))) +#define sk_PKCS7_new_null() ((STACK_OF(PKCS7) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_new_reserve(cmp, n) ((STACK_OF(PKCS7) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_compfunc_type(cmp), (n))) +#define sk_PKCS7_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_sk_type(sk), (n)) +#define sk_PKCS7_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_delete(sk, i) ((PKCS7 *)OPENSSL_sk_delete(ossl_check_PKCS7_sk_type(sk), (i))) +#define sk_PKCS7_delete_ptr(sk, ptr) ((PKCS7 *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr))) +#define sk_PKCS7_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_pop(sk) ((PKCS7 *)OPENSSL_sk_pop(ossl_check_PKCS7_sk_type(sk))) +#define sk_PKCS7_shift(sk) ((PKCS7 *)OPENSSL_sk_shift(ossl_check_PKCS7_sk_type(sk))) +#define sk_PKCS7_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_sk_type(sk),ossl_check_PKCS7_freefunc_type(freefunc)) +#define sk_PKCS7_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), (idx)) +#define sk_PKCS7_set(sk, idx, ptr) ((PKCS7 *)OPENSSL_sk_set(ossl_check_PKCS7_sk_type(sk), (idx), ossl_check_PKCS7_type(ptr))) +#define sk_PKCS7_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), pnum) +#define sk_PKCS7_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_sk_type(sk)) +#define sk_PKCS7_dup(sk) ((STACK_OF(PKCS7) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_sk_type(sk))) +#define sk_PKCS7_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_sk_type(sk), ossl_check_PKCS7_copyfunc_type(copyfunc), ossl_check_PKCS7_freefunc_type(freefunc))) +#define sk_PKCS7_set_cmp_func(sk, cmp) ((sk_PKCS7_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_compfunc_type(cmp))) + +/* clang-format on */ + +#define PKCS7_OP_SET_DETACHED_SIGNATURE 1 +#define PKCS7_OP_GET_DETACHED_SIGNATURE 2 + +#define PKCS7_get_signed_attributes(si) ((si)->auth_attr) +#define PKCS7_get_attributes(si) ((si)->unauth_attr) + +#define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed) +#define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted) +#define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped) +#define PKCS7_type_is_signedAndEnveloped(a) \ + (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped) +#define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data) +#define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest) + +#define PKCS7_set_detached(p, v) \ + PKCS7_ctrl(p, PKCS7_OP_SET_DETACHED_SIGNATURE, v, NULL) +#define PKCS7_get_detached(p) \ + PKCS7_ctrl(p, PKCS7_OP_GET_DETACHED_SIGNATURE, 0, NULL) + +#define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7)) + +/* S/MIME related flags */ + +#define PKCS7_TEXT 0x1 +#define PKCS7_NOCERTS 0x2 +#define PKCS7_NOSIGS 0x4 +#define PKCS7_NOCHAIN 0x8 +#define PKCS7_NOINTERN 0x10 +#define PKCS7_NOVERIFY 0x20 +#define PKCS7_DETACHED 0x40 +#define PKCS7_BINARY 0x80 +#define PKCS7_NOATTR 0x100 +#define PKCS7_NOSMIMECAP 0x200 +#define PKCS7_NOOLDMIMETYPE 0x400 +#define PKCS7_CRLFEOL 0x800 +#define PKCS7_STREAM 0x1000 +#define PKCS7_NOCRL 0x2000 +#define PKCS7_PARTIAL 0x4000 +#define PKCS7_REUSE_DIGEST 0x8000 +#define PKCS7_NO_DUAL_CONTENT 0x10000 + +/* Flags: for compatibility with older code */ + +#define SMIME_TEXT PKCS7_TEXT +#define SMIME_NOCERTS PKCS7_NOCERTS +#define SMIME_NOSIGS PKCS7_NOSIGS +#define SMIME_NOCHAIN PKCS7_NOCHAIN +#define SMIME_NOINTERN PKCS7_NOINTERN +#define SMIME_NOVERIFY PKCS7_NOVERIFY +#define SMIME_DETACHED PKCS7_DETACHED +#define SMIME_BINARY PKCS7_BINARY +#define SMIME_NOATTR PKCS7_NOATTR + +/* CRLF ASCII canonicalisation */ +#define SMIME_ASCIICRLF 0x80000 + +DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) + +int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, + const EVP_MD *type, unsigned char *md, + unsigned int *len); +#ifndef OPENSSL_NO_STDIO +PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7); +int i2d_PKCS7_fp(FILE *fp, const PKCS7 *p7); +#endif +DECLARE_ASN1_DUP_FUNCTION(PKCS7) +PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); +int i2d_PKCS7_bio(BIO *bp, const PKCS7 *p7); +int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); +int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); + +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT) +DECLARE_ASN1_FUNCTIONS(PKCS7) +PKCS7 *PKCS7_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN) +DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY) + +DECLARE_ASN1_NDEF_FUNCTION(PKCS7) +DECLARE_ASN1_PRINT_FUNCTION(PKCS7) + +long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg); + +int PKCS7_type_is_other(PKCS7 *p7); +int PKCS7_set_type(PKCS7 *p7, int type); +int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other); +int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data); +int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, + const EVP_MD *dgst); +int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); +int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); +int PKCS7_content_new(PKCS7 *p7, int nid); +int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, + BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, + X509 *signer); + +BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); +int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); +BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert); + +PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, + EVP_PKEY *pkey, const EVP_MD *dgst); +X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md); +STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7); + +PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); +void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk, + X509_ALGOR **pdig, X509_ALGOR **psig); +void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc); +int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); +int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); +int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher); +int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7); + +PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx); +ASN1_OCTET_STRING *PKCS7_get_octet_string(PKCS7 *p7); +ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type, + void *data); +int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype, + void *value); +ASN1_TYPE *PKCS7_get_attribute(const PKCS7_SIGNER_INFO *si, int nid); +ASN1_TYPE *PKCS7_get_signed_attribute(const PKCS7_SIGNER_INFO *si, int nid); +int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); + +PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags); +PKCS7 *PKCS7_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags, OSSL_LIB_CTX *libctx, + const char *propq); + +PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, + X509 *signcert, EVP_PKEY *pkey, + const EVP_MD *md, int flags); + +int PKCS7_final(PKCS7 *p7, BIO *data, int flags); +int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, + BIO *indata, BIO *out, int flags); +STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, + int flags); +PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, + int flags); +PKCS7 *PKCS7_encrypt_ex(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, int flags, + OSSL_LIB_CTX *libctx, const char *propq); +int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, + int flags); + +int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, + STACK_OF(X509_ALGOR) *cap); +STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si); +int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg); + +int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid); +int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t); +int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, + const unsigned char *md, int mdlen); + +int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags); +PKCS7 *SMIME_read_PKCS7_ex(BIO *bio, BIO **bcont, PKCS7 **p7); +PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); + +BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/safestack.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/safestack.h new file mode 100644 index 00000000000000..084f610b5bf705 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/safestack.h @@ -0,0 +1,303 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/safestack.h.in + * + * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SAFESTACK_H +#define OPENSSL_SAFESTACK_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SAFESTACK_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define STACK_OF(type) struct stack_st_##type + +/* Helper macro for internal use */ +#define SKM_DEFINE_STACK_OF_INTERNAL(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 *const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 * a); \ + typedef t3 *(*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_unused ossl_inline t2 *ossl_check_##t1##_type(t2 *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const OPENSSL_STACK *ossl_check_const_##t1##_sk_type(const STACK_OF(t1) *sk) \ + { \ + return (const OPENSSL_STACK *)sk; \ + } \ + static ossl_unused ossl_inline OPENSSL_STACK *ossl_check_##t1##_sk_type(STACK_OF(t1) *sk) \ + { \ + return (OPENSSL_STACK *)sk; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_compfunc ossl_check_##t1##_compfunc_type(sk_##t1##_compfunc cmp) \ + { \ + return (OPENSSL_sk_compfunc)cmp; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_copyfunc ossl_check_##t1##_copyfunc_type(sk_##t1##_copyfunc cpy) \ + { \ + return (OPENSSL_sk_copyfunc)cpy; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_freefunc ossl_check_##t1##_freefunc_type(sk_##t1##_freefunc fr) \ + { \ + return (OPENSSL_sk_freefunc)fr; \ + } + +#define SKM_DEFINE_STACK_OF(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 *const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 * a); \ + typedef t3 *(*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + { \ + return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ + { \ + return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_free((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + { \ + return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \ + (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ + { \ + OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ + { \ + return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_all(STACK_OF(t1) *sk, t2 *ptr, int *pnum) \ + { \ + return OPENSSL_sk_find_all((OPENSSL_STACK *)sk, (const void *)ptr, pnum); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_dup(const STACK_OF(t1) *sk) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ + sk_##t1##_copyfunc copyfunc, \ + sk_##t1##_freefunc freefunc) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, \ + (OPENSSL_sk_copyfunc)copyfunc, \ + (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ + { \ + return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \ + } + +#define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) +#define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) +#define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) +#define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ + SKM_DEFINE_STACK_OF(t1, const t2, t2) + +/*- + * Strings are special: normally an lhash entry will point to a single + * (somewhat) mutable object. In the case of strings: + * + * a) Instead of a single char, there is an array of chars, NUL-terminated. + * b) The string may have be immutable. + * + * So, they need their own declarations. Especially important for + * type-checking tools, such as Deputy. + * + * In practice, however, it appears to be hard to have a const + * string. For now, I'm settling for dealing with the fact it is a + * string at all. + */ +typedef char *OPENSSL_STRING; +typedef const char *OPENSSL_CSTRING; + +/*- + * Confusingly, LHASH_OF(STRING) deals with char ** throughout, but + * STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned + * above, instead of a single char each entry is a NUL-terminated array of + * chars. So, we have to implement STRING specially for STACK_OF. This is + * dealt with in the autogenerated macros below. + */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_STRING, char, char) +#define sk_OPENSSL_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_value(sk, idx) ((char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_STRING_sk_type(sk), (idx))) +#define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_STRING_compfunc_type(cmp))) +#define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_STRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_STRING_compfunc_type(cmp), (n))) +#define sk_OPENSSL_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_STRING_sk_type(sk), (n)) +#define sk_OPENSSL_STRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_delete(sk, i) ((char *)OPENSSL_sk_delete(ossl_check_OPENSSL_STRING_sk_type(sk), (i))) +#define sk_OPENSSL_STRING_delete_ptr(sk, ptr) ((char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))) +#define sk_OPENSSL_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_pop(sk) ((char *)OPENSSL_sk_pop(ossl_check_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_shift(sk) ((char *)OPENSSL_sk_shift(ossl_check_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_STRING_sk_type(sk),ossl_check_OPENSSL_STRING_freefunc_type(freefunc)) +#define sk_OPENSSL_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), (idx)) +#define sk_OPENSSL_STRING_set(sk, idx, ptr) ((char *)OPENSSL_sk_set(ossl_check_OPENSSL_STRING_sk_type(sk), (idx), ossl_check_OPENSSL_STRING_type(ptr))) +#define sk_OPENSSL_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), pnum) +#define sk_OPENSSL_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_dup(sk) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_STRING_freefunc_type(freefunc))) +#define sk_OPENSSL_STRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_CSTRING, const char, char) +#define sk_OPENSSL_CSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_value(sk, idx) ((const char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), (idx))) +#define sk_OPENSSL_CSTRING_new(cmp) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) +#define sk_OPENSSL_CSTRING_new_null() ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_CSTRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp), (n))) +#define sk_OPENSSL_CSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_CSTRING_sk_type(sk), (n)) +#define sk_OPENSSL_CSTRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_delete(sk, i) ((const char *)OPENSSL_sk_delete(ossl_check_OPENSSL_CSTRING_sk_type(sk), (i))) +#define sk_OPENSSL_CSTRING_delete_ptr(sk, ptr) ((const char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))) +#define sk_OPENSSL_CSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_pop(sk) ((const char *)OPENSSL_sk_pop(ossl_check_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_shift(sk) ((const char *)OPENSSL_sk_shift(ossl_check_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_CSTRING_sk_type(sk),ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc)) +#define sk_OPENSSL_CSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), (idx)) +#define sk_OPENSSL_CSTRING_set(sk, idx, ptr) ((const char *)OPENSSL_sk_set(ossl_check_OPENSSL_CSTRING_sk_type(sk), (idx), ossl_check_OPENSSL_CSTRING_type(ptr))) +#define sk_OPENSSL_CSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), pnum) +#define sk_OPENSSL_CSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_dup(sk) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc))) +#define sk_OPENSSL_CSTRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_CSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) + +/* clang-format on */ + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) +/* + * This is not used by OpenSSL. A block of bytes, NOT nul-terminated. + * These should also be distinguished from "normal" stacks. + */ +typedef void *OPENSSL_BLOCK; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_BLOCK, void, void) +#define sk_OPENSSL_BLOCK_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), (idx))) +#define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) +#define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_BLOCK_new_reserve(cmp, n) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp), (n))) +#define sk_OPENSSL_BLOCK_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_BLOCK_sk_type(sk), (n)) +#define sk_OPENSSL_BLOCK_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_OPENSSL_BLOCK_sk_type(sk), (i))) +#define sk_OPENSSL_BLOCK_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))) +#define sk_OPENSSL_BLOCK_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_BLOCK_sk_type(sk),ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc)) +#define sk_OPENSSL_BLOCK_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), (idx)) +#define sk_OPENSSL_BLOCK_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_OPENSSL_BLOCK_sk_type(sk), (idx), ossl_check_OPENSSL_BLOCK_type(ptr))) +#define sk_OPENSSL_BLOCK_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), pnum) +#define sk_OPENSSL_BLOCK_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_dup(sk) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_copyfunc_type(copyfunc), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc))) +#define sk_OPENSSL_BLOCK_set_cmp_func(sk, cmp) ((sk_OPENSSL_BLOCK_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) + +/* clang-format on */ +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/srp.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/srp.h new file mode 100644 index 00000000000000..4ef926d61fc8fa --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/srp.h @@ -0,0 +1,291 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/srp.h.in + * + * Copyright 2004-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2004, EdelKey Project. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + * + * Originally written by Christophe Renou and Peter Sylvester, + * for the EdelKey project. + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SRP_H +#define OPENSSL_SRP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SRP_H +#endif + +#include + +#ifndef OPENSSL_NO_SRP +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +typedef struct SRP_gN_cache_st { + char *b64_bn; + BIGNUM *bn; +} SRP_gN_cache; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN_cache, SRP_gN_cache, SRP_gN_cache) +#define sk_SRP_gN_cache_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_value(sk, idx) ((SRP_gN_cache *)OPENSSL_sk_value(ossl_check_const_SRP_gN_cache_sk_type(sk), (idx))) +#define sk_SRP_gN_cache_new(cmp) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new(ossl_check_SRP_gN_cache_compfunc_type(cmp))) +#define sk_SRP_gN_cache_new_null() ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_null()) +#define sk_SRP_gN_cache_new_reserve(cmp, n) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_cache_compfunc_type(cmp), (n))) +#define sk_SRP_gN_cache_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_cache_sk_type(sk), (n)) +#define sk_SRP_gN_cache_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_delete(sk, i) ((SRP_gN_cache *)OPENSSL_sk_delete(ossl_check_SRP_gN_cache_sk_type(sk), (i))) +#define sk_SRP_gN_cache_delete_ptr(sk, ptr) ((SRP_gN_cache *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))) +#define sk_SRP_gN_cache_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_pop(sk) ((SRP_gN_cache *)OPENSSL_sk_pop(ossl_check_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_shift(sk) ((SRP_gN_cache *)OPENSSL_sk_shift(ossl_check_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_cache_sk_type(sk),ossl_check_SRP_gN_cache_freefunc_type(freefunc)) +#define sk_SRP_gN_cache_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), (idx)) +#define sk_SRP_gN_cache_set(sk, idx, ptr) ((SRP_gN_cache *)OPENSSL_sk_set(ossl_check_SRP_gN_cache_sk_type(sk), (idx), ossl_check_SRP_gN_cache_type(ptr))) +#define sk_SRP_gN_cache_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), pnum) +#define sk_SRP_gN_cache_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_dup(sk) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_copyfunc_type(copyfunc), ossl_check_SRP_gN_cache_freefunc_type(freefunc))) +#define sk_SRP_gN_cache_set_cmp_func(sk, cmp) ((sk_SRP_gN_cache_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct SRP_user_pwd_st { + /* Owned by us. */ + char *id; + BIGNUM *s; + BIGNUM *v; + /* Not owned by us. */ + const BIGNUM *g; + const BIGNUM *N; + /* Owned by us. */ + char *info; +} SRP_user_pwd; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_user_pwd, SRP_user_pwd, SRP_user_pwd) +#define sk_SRP_user_pwd_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_value(sk, idx) ((SRP_user_pwd *)OPENSSL_sk_value(ossl_check_const_SRP_user_pwd_sk_type(sk), (idx))) +#define sk_SRP_user_pwd_new(cmp) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new(ossl_check_SRP_user_pwd_compfunc_type(cmp))) +#define sk_SRP_user_pwd_new_null() ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_null()) +#define sk_SRP_user_pwd_new_reserve(cmp, n) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_reserve(ossl_check_SRP_user_pwd_compfunc_type(cmp), (n))) +#define sk_SRP_user_pwd_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_user_pwd_sk_type(sk), (n)) +#define sk_SRP_user_pwd_free(sk) OPENSSL_sk_free(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_delete(sk, i) ((SRP_user_pwd *)OPENSSL_sk_delete(ossl_check_SRP_user_pwd_sk_type(sk), (i))) +#define sk_SRP_user_pwd_delete_ptr(sk, ptr) ((SRP_user_pwd *)OPENSSL_sk_delete_ptr(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))) +#define sk_SRP_user_pwd_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_pop(sk) ((SRP_user_pwd *)OPENSSL_sk_pop(ossl_check_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_shift(sk) ((SRP_user_pwd *)OPENSSL_sk_shift(ossl_check_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_user_pwd_sk_type(sk),ossl_check_SRP_user_pwd_freefunc_type(freefunc)) +#define sk_SRP_user_pwd_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), (idx)) +#define sk_SRP_user_pwd_set(sk, idx, ptr) ((SRP_user_pwd *)OPENSSL_sk_set(ossl_check_SRP_user_pwd_sk_type(sk), (idx), ossl_check_SRP_user_pwd_type(ptr))) +#define sk_SRP_user_pwd_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), pnum) +#define sk_SRP_user_pwd_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_dup(sk) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_dup(ossl_check_const_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_copyfunc_type(copyfunc), ossl_check_SRP_user_pwd_freefunc_type(freefunc))) +#define sk_SRP_user_pwd_set_cmp_func(sk, cmp) ((sk_SRP_user_pwd_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_compfunc_type(cmp))) + +/* clang-format on */ + +OSSL_DEPRECATEDIN_3_0 +SRP_user_pwd *SRP_user_pwd_new(void); +OSSL_DEPRECATEDIN_3_0 +void SRP_user_pwd_free(SRP_user_pwd *user_pwd); + +OSSL_DEPRECATEDIN_3_0 +void SRP_user_pwd_set_gN(SRP_user_pwd *user_pwd, const BIGNUM *g, + const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +int SRP_user_pwd_set1_ids(SRP_user_pwd *user_pwd, const char *id, + const char *info); +OSSL_DEPRECATEDIN_3_0 +int SRP_user_pwd_set0_sv(SRP_user_pwd *user_pwd, BIGNUM *s, BIGNUM *v); + +typedef struct SRP_VBASE_st { + STACK_OF(SRP_user_pwd) *users_pwd; + STACK_OF(SRP_gN_cache) *gN_cache; + /* to simulate a user */ + char *seed_key; + const BIGNUM *default_g; + const BIGNUM *default_N; +} SRP_VBASE; + +/* + * Internal structure storing N and g pair + */ +typedef struct SRP_gN_st { + char *id; + const BIGNUM *g; + const BIGNUM *N; +} SRP_gN; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN, SRP_gN, SRP_gN) +#define sk_SRP_gN_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_value(sk, idx) ((SRP_gN *)OPENSSL_sk_value(ossl_check_const_SRP_gN_sk_type(sk), (idx))) +#define sk_SRP_gN_new(cmp) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new(ossl_check_SRP_gN_compfunc_type(cmp))) +#define sk_SRP_gN_new_null() ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_null()) +#define sk_SRP_gN_new_reserve(cmp, n) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_compfunc_type(cmp), (n))) +#define sk_SRP_gN_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_sk_type(sk), (n)) +#define sk_SRP_gN_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_delete(sk, i) ((SRP_gN *)OPENSSL_sk_delete(ossl_check_SRP_gN_sk_type(sk), (i))) +#define sk_SRP_gN_delete_ptr(sk, ptr) ((SRP_gN *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))) +#define sk_SRP_gN_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_pop(sk) ((SRP_gN *)OPENSSL_sk_pop(ossl_check_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_shift(sk) ((SRP_gN *)OPENSSL_sk_shift(ossl_check_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_sk_type(sk),ossl_check_SRP_gN_freefunc_type(freefunc)) +#define sk_SRP_gN_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), (idx)) +#define sk_SRP_gN_set(sk, idx, ptr) ((SRP_gN *)OPENSSL_sk_set(ossl_check_SRP_gN_sk_type(sk), (idx), ossl_check_SRP_gN_type(ptr))) +#define sk_SRP_gN_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), pnum) +#define sk_SRP_gN_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_dup(sk) ((STACK_OF(SRP_gN) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_sk_type(sk), ossl_check_SRP_gN_copyfunc_type(copyfunc), ossl_check_SRP_gN_freefunc_type(freefunc))) +#define sk_SRP_gN_set_cmp_func(sk, cmp) ((sk_SRP_gN_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_compfunc_type(cmp))) + +/* clang-format on */ + +OSSL_DEPRECATEDIN_3_0 +SRP_VBASE *SRP_VBASE_new(char *seed_key); +OSSL_DEPRECATEDIN_3_0 +void SRP_VBASE_free(SRP_VBASE *vb); +OSSL_DEPRECATEDIN_3_0 +int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); + +OSSL_DEPRECATEDIN_3_0 +int SRP_VBASE_add0_user(SRP_VBASE *vb, SRP_user_pwd *user_pwd); + +/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ +OSSL_DEPRECATEDIN_3_0 +SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); + +OSSL_DEPRECATEDIN_3_0 +char *SRP_create_verifier_ex(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +char *SRP_create_verifier(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g); +OSSL_DEPRECATEDIN_3_0 +int SRP_create_verifier_BN_ex(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g, OSSL_LIB_CTX *libctx, + const char *propq); +OSSL_DEPRECATEDIN_3_0 +int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g); + +#define SRP_NO_ERROR 0 +#define SRP_ERR_VBASE_INCOMPLETE_FILE 1 +#define SRP_ERR_VBASE_BN_LIB 2 +#define SRP_ERR_OPEN_FILE 3 +#define SRP_ERR_MEMORY 4 + +#define DB_srptype 0 +#define DB_srpverifier 1 +#define DB_srpsalt 2 +#define DB_srpid 3 +#define DB_srpgN 4 +#define DB_srpinfo 5 +#undef DB_NUMBER +#define DB_NUMBER 6 + +#define DB_SRP_INDEX 'I' +#define DB_SRP_VALID 'V' +#define DB_SRP_REVOKED 'R' +#define DB_SRP_MODIF 'v' + +/* see srp.c */ +OSSL_DEPRECATEDIN_3_0 +char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +SRP_gN *SRP_get_default_gN(const char *id); + +/* server side .... */ +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, + const BIGNUM *b, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_B_ex(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v, OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v); + +OSSL_DEPRECATEDIN_3_0 +int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_u_ex(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); + +/* client side .... */ + +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_x_ex(const BIGNUM *s, const char *user, const char *pass, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_client_key_ex(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); +OSSL_DEPRECATEDIN_3_0 +int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); + +#define SRP_MINIMAL_N 1024 + +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/* This method ignores the configured seed and fails for an unknown user. */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 +SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ssl.h new file mode 100644 index 00000000000000..eaeeea7d10b407 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ssl.h @@ -0,0 +1,2940 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/ssl.h.in + * + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SSL_H +#define OPENSSL_SSL_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SSL_H +#endif + +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#endif +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* OpenSSL version number for ASN.1 encoding of the session information */ +/*- + * Version 0 - initial version + * Version 1 - added the optional peer certificate + */ +#define SSL_SESSION_ASN1_VERSION 0x0001 + +#define SSL_MAX_SSL_SESSION_ID_LENGTH 32 +#define SSL_MAX_SID_CTX_LENGTH 32 + +#define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512 / 8) +#define SSL_MAX_KEY_ARG_LENGTH 8 +/* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */ + +/* The maximum number of encrypt/decrypt pipelines we can support */ +#define SSL_MAX_PIPELINES 32 + +/* text strings for the ciphers */ + +/* These are used to specify which ciphers to use and not to use */ + +#define SSL_TXT_LOW "LOW" +#define SSL_TXT_MEDIUM "MEDIUM" +#define SSL_TXT_HIGH "HIGH" +#define SSL_TXT_FIPS "FIPS" + +#define SSL_TXT_aNULL "aNULL" +#define SSL_TXT_eNULL "eNULL" +#define SSL_TXT_NULL "NULL" + +#define SSL_TXT_kRSA "kRSA" +#define SSL_TXT_kDHr "kDHr" /* this cipher class has been removed */ +#define SSL_TXT_kDHd "kDHd" /* this cipher class has been removed */ +#define SSL_TXT_kDH "kDH" /* this cipher class has been removed */ +#define SSL_TXT_kEDH "kEDH" /* alias for kDHE */ +#define SSL_TXT_kDHE "kDHE" +#define SSL_TXT_kECDHr "kECDHr" /* this cipher class has been removed */ +#define SSL_TXT_kECDHe "kECDHe" /* this cipher class has been removed */ +#define SSL_TXT_kECDH "kECDH" /* this cipher class has been removed */ +#define SSL_TXT_kEECDH "kEECDH" /* alias for kECDHE */ +#define SSL_TXT_kECDHE "kECDHE" +#define SSL_TXT_kPSK "kPSK" +#define SSL_TXT_kRSAPSK "kRSAPSK" +#define SSL_TXT_kECDHEPSK "kECDHEPSK" +#define SSL_TXT_kDHEPSK "kDHEPSK" +#define SSL_TXT_kGOST "kGOST" +#define SSL_TXT_kGOST18 "kGOST18" +#define SSL_TXT_kSRP "kSRP" + +#define SSL_TXT_aRSA "aRSA" +#define SSL_TXT_aDSS "aDSS" +#define SSL_TXT_aDH "aDH" /* this cipher class has been removed */ +#define SSL_TXT_aECDH "aECDH" /* this cipher class has been removed */ +#define SSL_TXT_aECDSA "aECDSA" +#define SSL_TXT_aPSK "aPSK" +#define SSL_TXT_aGOST94 "aGOST94" +#define SSL_TXT_aGOST01 "aGOST01" +#define SSL_TXT_aGOST12 "aGOST12" +#define SSL_TXT_aGOST "aGOST" +#define SSL_TXT_aSRP "aSRP" + +#define SSL_TXT_DSS "DSS" +#define SSL_TXT_DH "DH" +#define SSL_TXT_DHE "DHE" /* same as "kDHE:-ADH" */ +#define SSL_TXT_EDH "EDH" /* alias for DHE */ +#define SSL_TXT_ADH "ADH" +#define SSL_TXT_RSA "RSA" +#define SSL_TXT_ECDH "ECDH" +#define SSL_TXT_EECDH "EECDH" /* alias for ECDHE" */ +#define SSL_TXT_ECDHE "ECDHE" /* same as "kECDHE:-AECDH" */ +#define SSL_TXT_AECDH "AECDH" +#define SSL_TXT_ECDSA "ECDSA" +#define SSL_TXT_PSK "PSK" +#define SSL_TXT_SRP "SRP" + +#define SSL_TXT_DES "DES" +#define SSL_TXT_3DES "3DES" +#define SSL_TXT_RC4 "RC4" +#define SSL_TXT_RC2 "RC2" +#define SSL_TXT_IDEA "IDEA" +#define SSL_TXT_SEED "SEED" +#define SSL_TXT_AES128 "AES128" +#define SSL_TXT_AES256 "AES256" +#define SSL_TXT_AES "AES" +#define SSL_TXT_AES_GCM "AESGCM" +#define SSL_TXT_AES_CCM "AESCCM" +#define SSL_TXT_AES_CCM_8 "AESCCM8" +#define SSL_TXT_CAMELLIA128 "CAMELLIA128" +#define SSL_TXT_CAMELLIA256 "CAMELLIA256" +#define SSL_TXT_CAMELLIA "CAMELLIA" +#define SSL_TXT_CHACHA20 "CHACHA20" +#define SSL_TXT_GOST "GOST89" +#define SSL_TXT_ARIA "ARIA" +#define SSL_TXT_ARIA_GCM "ARIAGCM" +#define SSL_TXT_ARIA128 "ARIA128" +#define SSL_TXT_ARIA256 "ARIA256" +#define SSL_TXT_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912" +#define SSL_TXT_CBC "CBC" + +#define SSL_TXT_MD5 "MD5" +#define SSL_TXT_SHA1 "SHA1" +#define SSL_TXT_SHA "SHA" /* same as "SHA1" */ +#define SSL_TXT_GOST94 "GOST94" +#define SSL_TXT_GOST89MAC "GOST89MAC" +#define SSL_TXT_GOST12 "GOST12" +#define SSL_TXT_GOST89MAC12 "GOST89MAC12" +#define SSL_TXT_SHA256 "SHA256" +#define SSL_TXT_SHA384 "SHA384" + +#define SSL_TXT_SSLV3 "SSLv3" +#define SSL_TXT_TLSV1 "TLSv1" +#define SSL_TXT_TLSV1_1 "TLSv1.1" +#define SSL_TXT_TLSV1_2 "TLSv1.2" + +#define SSL_TXT_ALL "ALL" + +/*- + * COMPLEMENTOF* definitions. These identifiers are used to (de-select) + * ciphers normally not being used. + * Example: "RC4" will activate all ciphers using RC4 including ciphers + * without authentication, which would normally disabled by DEFAULT (due + * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" + * will make sure that it is also disabled in the specific selection. + * COMPLEMENTOF* identifiers are portable between version, as adjustments + * to the default cipher setup will also be included here. + * + * COMPLEMENTOFDEFAULT does not experience the same special treatment that + * DEFAULT gets, as only selection is being done and no sorting as needed + * for DEFAULT. + */ +#define SSL_TXT_CMPALL "COMPLEMENTOFALL" +#define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" + +/* + * The following cipher list is used by default. It also is substituted when + * an application-defined cipher list string starts with 'DEFAULT'. + * This applies to ciphersuites for TLSv1.2 and below. + * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list() + * Update both macro and function simultaneously + */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" +/* + * This is the default set of TLSv1.3 ciphersuites + * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites() + * Update both macro and function simultaneously + */ +#define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_CHACHA20_POLY1305_SHA256:" \ + "TLS_AES_128_GCM_SHA256" +#endif +/* + * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always + * starts with a reasonable order, and all we have to do for DEFAULT is + * throwing out anonymous and unencrypted ciphersuites! (The latter are not + * actually enabled by ALL, but "ALL:RSA" would enable some of them.) + */ + +/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ +#define SSL_SENT_SHUTDOWN 1 +#define SSL_RECEIVED_SHUTDOWN 2 + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 +#define SSL_FILETYPE_PEM X509_FILETYPE_PEM + +/* + * This is needed to stop compilers complaining about the 'struct ssl_st *' + * function parameters used to prototype callbacks in SSL_CTX. + */ +typedef struct ssl_st *ssl_crock_st; +typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; +typedef struct ssl_method_st SSL_METHOD; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct ssl_session_st SSL_SESSION; +typedef struct tls_sigalgs_st TLS_SIGALGS; +typedef struct ssl_conf_ctx_st SSL_CONF_CTX; + +STACK_OF(SSL_CIPHER); + +/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ +typedef struct srtp_protection_profile_st { + const char *name; + unsigned long id; +} SRTP_PROTECTION_PROFILE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE) +#define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx))) +#define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) +#define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null()) +#define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n))) +#define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n)) +#define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i))) +#define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) +#define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk),ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)) +#define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx)) +#define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) +#define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum) +#define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))) +#define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, + int len, void *arg); +typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, + STACK_OF(SSL_CIPHER) *peer_ciphers, + const SSL_CIPHER **cipher, void *arg); + +/* Extension context codes */ +/* This extension is only allowed in TLS */ +#define SSL_EXT_TLS_ONLY 0x00001 +/* This extension is only allowed in DTLS */ +#define SSL_EXT_DTLS_ONLY 0x00002 +/* Some extensions may be allowed in DTLS but we don't implement them for it */ +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 +/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ +#define SSL_EXT_SSL3_ALLOWED 0x00008 +/* Extension is only defined for TLS1.2 and below */ +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 +/* Extension is only defined for TLS1.3 and above */ +#define SSL_EXT_TLS1_3_ONLY 0x00020 +/* Ignore this extension during parsing if we are resuming */ +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 +/* Really means TLS1.2 or below */ +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 + +/* Typedefs for handling custom extensions */ + +typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type, + const unsigned char **out, size_t *outlen, + int *al, void *add_arg); + +typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type, + const unsigned char *out, void *add_arg); + +typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type, + const unsigned char *in, size_t inlen, + int *al, void *parse_arg); + +typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char **out, + size_t *outlen, X509 *x, + size_t chainidx, + int *al, void *add_arg); + +typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *out, + void *add_arg); + +typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *in, + size_t inlen, X509 *x, + size_t chainidx, + int *al, void *parse_arg); + +/* Typedef for verification callback */ +typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); + +/* Typedef for SSL async callback */ +typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); + +#define SSL_OP_BIT(n) ((uint64_t)1 << (uint64_t)n) + +/* + * SSL/TLS connection options. + */ +/* Disable Extended master secret */ +#define SSL_OP_NO_EXTENDED_MASTER_SECRET SSL_OP_BIT(0) +/* Cleanse plaintext copies of data delivered to the application */ +#define SSL_OP_CLEANSE_PLAINTEXT SSL_OP_BIT(1) +/* Allow initial connection to servers that don't support RI */ +#define SSL_OP_LEGACY_SERVER_CONNECT SSL_OP_BIT(2) +/* Enable support for Kernel TLS */ +#define SSL_OP_ENABLE_KTLS SSL_OP_BIT(3) +#define SSL_OP_TLSEXT_PADDING SSL_OP_BIT(4) +#define SSL_OP_SAFARI_ECDHE_ECDSA_BUG SSL_OP_BIT(6) +#define SSL_OP_IGNORE_UNEXPECTED_EOF SSL_OP_BIT(7) +#define SSL_OP_ALLOW_CLIENT_RENEGOTIATION SSL_OP_BIT(8) +#define SSL_OP_DISABLE_TLSEXT_CA_NAMES SSL_OP_BIT(9) +/* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ +#define SSL_OP_ALLOW_NO_DHE_KEX SSL_OP_BIT(10) +/* + * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added + * in OpenSSL 0.9.6d. Usually (depending on the application protocol) + * the workaround is not needed. Unfortunately some broken SSL/TLS + * implementations cannot handle it at all, which is why we include it + * in SSL_OP_ALL. Added in 0.9.6e + */ +#define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS SSL_OP_BIT(11) +/* DTLS options */ +#define SSL_OP_NO_QUERY_MTU SSL_OP_BIT(12) +/* Turn on Cookie Exchange (on relevant for servers) */ +#define SSL_OP_COOKIE_EXCHANGE SSL_OP_BIT(13) +/* Don't use RFC4507 ticket extension */ +#define SSL_OP_NO_TICKET SSL_OP_BIT(14) +#ifndef OPENSSL_NO_DTLS1_METHOD +/* + * Use Cisco's version identifier of DTLS_BAD_VER + * (only with deprecated DTLSv1_client_method()) + */ +#define SSL_OP_CISCO_ANYCONNECT SSL_OP_BIT(15) +#endif +/* As server, disallow session resumption on renegotiation */ +#define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION SSL_OP_BIT(16) +/* Don't use compression even if supported */ +#define SSL_OP_NO_COMPRESSION SSL_OP_BIT(17) +/* Permit unsafe legacy renegotiation */ +#define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION SSL_OP_BIT(18) +/* Disable encrypt-then-mac */ +#define SSL_OP_NO_ENCRYPT_THEN_MAC SSL_OP_BIT(19) +/* + * Enable TLSv1.3 Compatibility mode. This is on by default. A future + * version of OpenSSL may have this disabled by default. + */ +#define SSL_OP_ENABLE_MIDDLEBOX_COMPAT SSL_OP_BIT(20) +/* + * Prioritize Chacha20Poly1305 when client does. + * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE + */ +#define SSL_OP_PRIORITIZE_CHACHA SSL_OP_BIT(21) +/* + * Set on servers to choose the cipher according to server's preferences. + */ +#define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) +/* + * If set, a server will allow a client to issue an SSLv3.0 version + * number as latest version supported in the premaster secret, even when + * TLSv1.0 (version 3.1) was announced in the client hello. Normally + * this is forbidden to prevent version rollback attacks. + */ +#define SSL_OP_TLS_ROLLBACK_BUG SSL_OP_BIT(23) +/* + * Switches off automatic TLSv1.3 anti-replay protection for early data. + * This is a server-side option only (no effect on the client). + */ +#define SSL_OP_NO_ANTI_REPLAY SSL_OP_BIT(24) +#define SSL_OP_NO_SSLv3 SSL_OP_BIT(25) +#define SSL_OP_NO_TLSv1 SSL_OP_BIT(26) +#define SSL_OP_NO_TLSv1_2 SSL_OP_BIT(27) +#define SSL_OP_NO_TLSv1_1 SSL_OP_BIT(28) +#define SSL_OP_NO_TLSv1_3 SSL_OP_BIT(29) +#define SSL_OP_NO_DTLSv1 SSL_OP_BIT(26) +#define SSL_OP_NO_DTLSv1_2 SSL_OP_BIT(27) +/* Disallow all renegotiation */ +#define SSL_OP_NO_RENEGOTIATION SSL_OP_BIT(30) +/* + * Make server add server-hello extension from early version of + * cryptopro draft, when GOST ciphersuite is negotiated. Required for + * interoperability with CryptoPro CSP 3.x + */ +#define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +#define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +#define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) +/* Enable KTLS TX zerocopy on Linux */ +#define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) + +/* + * Option "collections." + */ +#define SSL_OP_NO_SSL_MASK \ + (SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 \ + | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3) +#define SSL_OP_NO_DTLS_MASK \ + (SSL_OP_NO_DTLSv1 | SSL_OP_NO_DTLSv1_2) + +/* Various bug workarounds that should be rather harmless. */ +#define SSL_OP_ALL \ + (SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \ + | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG) + +/* + * OBSOLETE OPTIONS retained for compatibility + */ + +#define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 +#define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 +#define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 +#define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 +#define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 +#define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +#define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 +#define SSL_OP_TLS_D5_BUG 0x0 +#define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 +#define SSL_OP_SINGLE_ECDH_USE 0x0 +#define SSL_OP_SINGLE_DH_USE 0x0 +#define SSL_OP_EPHEMERAL_RSA 0x0 +#define SSL_OP_NO_SSLv2 0x0 +#define SSL_OP_PKCS1_CHECK_1 0x0 +#define SSL_OP_PKCS1_CHECK_2 0x0 +#define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 +#define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x0 + +/* + * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success + * when just a single record has been written): + */ +#define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001U +/* + * Make it possible to retry SSL_write() with changed buffer location (buffer + * contents must stay the same!); this is not the default to avoid the + * misconception that non-blocking SSL_write() behaves like non-blocking + * write(): + */ +#define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U +/* + * Never bother the application with retries if the transport is blocking: + */ +#define SSL_MODE_AUTO_RETRY 0x00000004U +/* Don't attempt to automatically build certificate chain */ +#define SSL_MODE_NO_AUTO_CHAIN 0x00000008U +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) Released buffers are freed. + */ +#define SSL_MODE_RELEASE_BUFFERS 0x00000010U +/* + * Send the current time in the Random fields of the ClientHello and + * ServerHello records for compatibility with hypothetical implementations + * that require it. + */ +#define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U +#define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U +/* + * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications + * that reconnect with a downgraded protocol version; see + * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your + * application attempts a normal handshake. Only use this in explicit + * fallback retries, following the guidance in + * draft-ietf-tls-downgrade-scsv-00. + */ +#define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U +/* + * Support Asynchronous operation + */ +#define SSL_MODE_ASYNC 0x00000100U + +/* + * When using DTLS/SCTP, include the terminating zero in the label + * used for computing the endpoint-pair shared secret. Required for + * interoperability with implementations having this bug like these + * older version of OpenSSL: + * - OpenSSL 1.0.0 series + * - OpenSSL 1.0.1 series + * - OpenSSL 1.0.2 series + * - OpenSSL 1.1.0 series + * - OpenSSL 1.1.1 and 1.1.1a + */ +#define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certificate chain algorithms. When this is set we enforce them. + */ +#define SSL_CERT_FLAG_TLS_STRICT 0x00000001U + +/* Suite B modes, takes same values as certificate verify flags */ +#define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +#define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +#define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 + +/* Perform all sorts of protocol violations for testing purposes */ +#define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 + +/* Flags for building certificate chains */ +/* Treat any existing certificates as untrusted CAs */ +#define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 +/* Don't include root CA in chain */ +#define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 +/* Just check certificates already there */ +#define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 +/* Ignore verification errors */ +#define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 +/* Clear verification errors from queue */ +#define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 + +/* Flags returned by SSL_check_chain */ +/* Certificate can be used with this session */ +#define CERT_PKEY_VALID 0x1 +/* Certificate can also be used for signing */ +#define CERT_PKEY_SIGN 0x2 +/* EE certificate signing algorithm OK */ +#define CERT_PKEY_EE_SIGNATURE 0x10 +/* CA signature algorithms OK */ +#define CERT_PKEY_CA_SIGNATURE 0x20 +/* EE certificate parameters OK */ +#define CERT_PKEY_EE_PARAM 0x40 +/* CA certificate parameters OK */ +#define CERT_PKEY_CA_PARAM 0x80 +/* Signing explicitly allowed as opposed to SHA1 fallback */ +#define CERT_PKEY_EXPLICIT_SIGN 0x100 +/* Client CA issuer names match (always set for server cert) */ +#define CERT_PKEY_ISSUER_NAME 0x200 +/* Cert type matches client types (always set for server cert) */ +#define CERT_PKEY_CERT_TYPE 0x400 +/* Cert chain suitable to Suite B */ +#define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +#define CERT_PKEY_RPK 0x1000 + +#define SSL_CONF_FLAG_CMDLINE 0x1 +#define SSL_CONF_FLAG_FILE 0x2 +#define SSL_CONF_FLAG_CLIENT 0x4 +#define SSL_CONF_FLAG_SERVER 0x8 +#define SSL_CONF_FLAG_SHOW_ERRORS 0x10 +#define SSL_CONF_FLAG_CERTIFICATE 0x20 +#define SSL_CONF_FLAG_REQUIRE_PRIVATE 0x40 +/* Configuration value types */ +#define SSL_CONF_TYPE_UNKNOWN 0x0 +#define SSL_CONF_TYPE_STRING 0x1 +#define SSL_CONF_TYPE_FILE 0x2 +#define SSL_CONF_TYPE_DIR 0x3 +#define SSL_CONF_TYPE_NONE 0x4 +#define SSL_CONF_TYPE_STORE 0x5 + +/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */ +#define SSL_COOKIE_LENGTH 4096 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +uint64_t SSL_CTX_get_options(const SSL_CTX *ctx); +uint64_t SSL_get_options(const SSL *s); +uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op); +uint64_t SSL_clear_options(SSL *s, uint64_t op); +uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op); +uint64_t SSL_set_options(SSL *s, uint64_t op); + +#define SSL_CTX_set_mode(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_MODE, (op), NULL) +#define SSL_CTX_clear_mode(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CLEAR_MODE, (op), NULL) +#define SSL_CTX_get_mode(ctx) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_MODE, 0, NULL) +#define SSL_clear_mode(ssl, op) \ + SSL_ctrl((ssl), SSL_CTRL_CLEAR_MODE, (op), NULL) +#define SSL_set_mode(ssl, op) \ + SSL_ctrl((ssl), SSL_CTRL_MODE, (op), NULL) +#define SSL_get_mode(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_MODE, 0, NULL) +#define SSL_set_mtu(ssl, mtu) \ + SSL_ctrl((ssl), SSL_CTRL_SET_MTU, (mtu), NULL) +#define DTLS_set_link_mtu(ssl, mtu) \ + SSL_ctrl((ssl), DTLS_CTRL_SET_LINK_MTU, (mtu), NULL) +#define DTLS_get_link_min_mtu(ssl) \ + SSL_ctrl((ssl), DTLS_CTRL_GET_LINK_MIN_MTU, 0, NULL) + +#define SSL_get_secure_renegotiation_support(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) + +#define SSL_CTX_set_cert_flags(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CERT_FLAGS, (op), NULL) +#define SSL_set_cert_flags(s, op) \ + SSL_ctrl((s), SSL_CTRL_CERT_FLAGS, (op), NULL) +#define SSL_CTX_clear_cert_flags(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CLEAR_CERT_FLAGS, (op), NULL) +#define SSL_clear_cert_flags(s, op) \ + SSL_ctrl((s), SSL_CTRL_CLEAR_CERT_FLAGS, (op), NULL) + +void SSL_CTX_set_msg_callback(SSL_CTX *ctx, + void (*cb)(int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +void SSL_set_msg_callback(SSL *ssl, + void (*cb)(int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +#define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) +#define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) + +#define SSL_get_extms_support(s) \ + SSL_ctrl((s), SSL_CTRL_GET_EXTMS_SUPPORT, 0, NULL) + +#ifndef OPENSSL_NO_SRP +/* see tls_srp.c */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s, + int *ad); +OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s); +#endif +#endif + +/* 100k max cert list */ +#define SSL_MAX_CERT_LIST_DEFAULT (1024 * 100) + +#define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024 * 20) + +/* + * This callback type is used inside SSL_CTX, SSL, and in the functions that + * set them. It is used to override the generation of SSL/TLS session IDs in + * a server. Return value should be zero on an error, non-zero to proceed. + * Also, callbacks should themselves check if the id they generate is unique + * otherwise the SSL handshake will fail with an error - callbacks can do + * this using the 'ssl' value they're passed by; + * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in + * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32 + * bytes. The callback can alter this length to be less if desired. It is + * also an error for the callback to set the size to zero. + */ +typedef int (*GEN_SESSION_CB)(SSL *ssl, unsigned char *id, + unsigned int *id_len); + +#define SSL_SESS_CACHE_OFF 0x0000 +#define SSL_SESS_CACHE_CLIENT 0x0001 +#define SSL_SESS_CACHE_SERVER 0x0002 +#define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT | SSL_SESS_CACHE_SERVER) +#define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 +/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ +#define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 +#define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 +#define SSL_SESS_CACHE_NO_INTERNAL \ + (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP | SSL_SESS_CACHE_NO_INTERNAL_STORE) +#define SSL_SESS_CACHE_UPDATE_TIME 0x0400 + +LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); +#define SSL_CTX_sess_number(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_NUMBER, 0, NULL) +#define SSL_CTX_sess_connect(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT, 0, NULL) +#define SSL_CTX_sess_connect_good(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT_GOOD, 0, NULL) +#define SSL_CTX_sess_connect_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT_RENEGOTIATE, 0, NULL) +#define SSL_CTX_sess_accept(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT, 0, NULL) +#define SSL_CTX_sess_accept_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT_RENEGOTIATE, 0, NULL) +#define SSL_CTX_sess_accept_good(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT_GOOD, 0, NULL) +#define SSL_CTX_sess_hits(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_HIT, 0, NULL) +#define SSL_CTX_sess_cb_hits(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CB_HIT, 0, NULL) +#define SSL_CTX_sess_misses(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_MISSES, 0, NULL) +#define SSL_CTX_sess_timeouts(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_TIMEOUTS, 0, NULL) +#define SSL_CTX_sess_cache_full(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CACHE_FULL, 0, NULL) + +void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, + int (*new_session_cb)(struct ssl_st *ssl, + SSL_SESSION *sess)); +int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))(struct ssl_st *ssl, + SSL_SESSION *sess); +void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, + void (*remove_session_cb)(struct ssl_ctx_st + *ctx, + SSL_SESSION *sess)); +void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx))(struct ssl_ctx_st *ctx, + SSL_SESSION *sess); +void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, + SSL_SESSION *(*get_session_cb)(struct ssl_st + *ssl, + const unsigned char + *data, + int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(struct ssl_st *ssl, + const unsigned char *data, + int len, int *copy); +void SSL_CTX_set_info_callback(SSL_CTX *ctx, + void (*cb)(const SSL *ssl, int type, int val)); +void (*SSL_CTX_get_info_callback(SSL_CTX *ctx))(const SSL *ssl, int type, + int val); +void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, + int (*client_cert_cb)(SSL *ssl, X509 **x509, + EVP_PKEY **pkey)); +int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL *ssl, X509 **x509, + EVP_PKEY **pkey); +#ifndef OPENSSL_NO_ENGINE +__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); +#endif +void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb)(SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb)(SSL *ssl, + const unsigned char *cookie, + unsigned int + cookie_len)); + +void SSL_CTX_set_stateless_cookie_generate_cb( + SSL_CTX *ctx, + int (*gen_stateless_cookie_cb)(SSL *ssl, + unsigned char *cookie, + size_t *cookie_len)); +void SSL_CTX_set_stateless_cookie_verify_cb( + SSL_CTX *ctx, + int (*verify_stateless_cookie_cb)(SSL *ssl, + const unsigned char *cookie, + size_t cookie_len)); +#ifndef OPENSSL_NO_NEXTPROTONEG + +typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned int *outlen, + void *arg); +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + SSL_CTX_npn_advertised_cb_func cb, + void *arg); +#define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb + +typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + SSL_CTX_npn_select_cb_func cb, + void *arg); +#define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb + +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +#define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated +#endif + +__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *in, unsigned int inlen, + const unsigned char *client, + unsigned int client_len); + +#define OPENSSL_NPN_UNSUPPORTED 0 +#define OPENSSL_NPN_NEGOTIATED 1 +#define OPENSSL_NPN_NO_OVERLAP 2 + +__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned int protos_len); +__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned int protos_len); +typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + SSL_CTX_alpn_select_cb_func cb, + void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned int *len); + +#ifndef OPENSSL_NO_PSK +/* + * the maximum length of the buffer given to callbacks containing the + * resulting identity/psk + */ +#define PSK_MAX_IDENTITY_LEN 256 +#define PSK_MAX_PSK_LEN 512 +typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl, + const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb); +void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb); + +typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl, + const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb); +void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb); + +__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); +const char *SSL_get_psk_identity_hint(const SSL *s); +const char *SSL_get_psk_identity(const SSL *s); +#endif + +typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl, + const unsigned char *identity, + size_t identity_len, + SSL_SESSION **sess); +typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, + const unsigned char **id, + size_t *idlen, + SSL_SESSION **sess); + +void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb); +void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx, + SSL_psk_find_session_cb_func cb); +void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb); +void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, + SSL_psk_use_session_cb_func cb); + +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx, + unsigned int ext_type); + +__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + unsigned int context, + SSL_custom_ext_add_cb_ex add_cb, + SSL_custom_ext_free_cb_ex free_cb, + void *add_arg, + SSL_custom_ext_parse_cb_ex parse_cb, + void *parse_arg); + +__owur int SSL_extension_supported(unsigned int ext_type); + +#define SSL_NOTHING 1 +#define SSL_WRITING 2 +#define SSL_READING 3 +#define SSL_X509_LOOKUP 4 +#define SSL_ASYNC_PAUSED 5 +#define SSL_ASYNC_NO_JOBS 6 +#define SSL_CLIENT_HELLO_CB 7 +#define SSL_RETRY_VERIFY 8 + +/* These will only be used when doing non-blocking IO */ +#define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) +#define SSL_want_read(s) (SSL_want(s) == SSL_READING) +#define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) +#define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) +#define SSL_want_retry_verify(s) (SSL_want(s) == SSL_RETRY_VERIFY) +#define SSL_want_async(s) (SSL_want(s) == SSL_ASYNC_PAUSED) +#define SSL_want_async_job(s) (SSL_want(s) == SSL_ASYNC_NO_JOBS) +#define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB) + +#define SSL_MAC_FLAG_READ_MAC_STREAM 1 +#define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 +#define SSL_MAC_FLAG_READ_MAC_TLSTREE 4 +#define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8 + +/* + * A callback for logging out TLS key material. This callback should log out + * |line| followed by a newline. + */ +typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line); + +/* + * SSL_CTX_set_keylog_callback configures a callback to log key material. This + * is intended for debugging use with tools like Wireshark. The cb function + * should log line followed by a newline. + */ +void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb); + +/* + * SSL_CTX_get_keylog_callback returns the callback configured by + * SSL_CTX_set_keylog_callback. + */ +SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx); + +int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data); +uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx); +int SSL_set_max_early_data(SSL *s, uint32_t max_early_data); +uint32_t SSL_get_max_early_data(const SSL *s); +int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data); +uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx); +int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data); +uint32_t SSL_get_recv_max_early_data(const SSL *s); + +#ifdef __cplusplus +} +#endif + +#include +#include +#include /* This is mostly sslv3 with a few tweaks */ +#include /* Datagram TLS */ +#include /* Support for the use_srtp extension */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These need to be after the above set of includes due to a compiler bug + * in VisualStudio 2015 + */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) +#define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx))) +#define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp))) +#define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null()) +#define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n))) +#define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n)) +#define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i))) +#define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))) +#define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk),ossl_check_SSL_CIPHER_freefunc_type(freefunc)) +#define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx)) +#define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr))) +#define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum) +#define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) +#define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) + +/* clang-format on */ + +/* compatibility */ +#define SSL_set_app_data(s, arg) (SSL_set_ex_data(s, 0, (char *)(arg))) +#define SSL_get_app_data(s) (SSL_get_ex_data(s, 0)) +#define SSL_SESSION_set_app_data(s, a) (SSL_SESSION_set_ex_data(s, 0, \ + (char *)(a))) +#define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s, 0)) +#define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx, 0)) +#define SSL_CTX_set_app_data(ctx, arg) (SSL_CTX_set_ex_data(ctx, 0, \ + (char *)(arg))) +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug); +#endif + +/* TLSv1.3 KeyUpdate message types */ +/* -1 used so that this is an invalid value for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NONE -1 +/* Values as defined for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NOT_REQUESTED 0 +#define SSL_KEY_UPDATE_REQUESTED 1 + +/* + * The valid handshake states (one for each type message sent and one for each + * type of message received). There are also two "special" states: + * TLS = TLS or DTLS state + * DTLS = DTLS specific state + * CR/SR = Client Read/Server Read + * CW/SW = Client Write/Server Write + * + * The "special" states are: + * TLS_ST_BEFORE = No handshake has been initiated yet + * TLS_ST_OK = A handshake has been successfully completed + */ +typedef enum { + TLS_ST_BEFORE, + TLS_ST_OK, + DTLS_ST_CR_HELLO_VERIFY_REQUEST, + TLS_ST_CR_SRVR_HELLO, + TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, + TLS_ST_CR_CERT_STATUS, + TLS_ST_CR_KEY_EXCH, + TLS_ST_CR_CERT_REQ, + TLS_ST_CR_SRVR_DONE, + TLS_ST_CR_SESSION_TICKET, + TLS_ST_CR_CHANGE, + TLS_ST_CR_FINISHED, + TLS_ST_CW_CLNT_HELLO, + TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, + TLS_ST_CW_KEY_EXCH, + TLS_ST_CW_CERT_VRFY, + TLS_ST_CW_CHANGE, + TLS_ST_CW_NEXT_PROTO, + TLS_ST_CW_FINISHED, + TLS_ST_SW_HELLO_REQ, + TLS_ST_SR_CLNT_HELLO, + DTLS_ST_SW_HELLO_VERIFY_REQUEST, + TLS_ST_SW_SRVR_HELLO, + TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, + TLS_ST_SW_KEY_EXCH, + TLS_ST_SW_CERT_REQ, + TLS_ST_SW_SRVR_DONE, + TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, + TLS_ST_SR_KEY_EXCH, + TLS_ST_SR_CERT_VRFY, + TLS_ST_SR_NEXT_PROTO, + TLS_ST_SR_CHANGE, + TLS_ST_SR_FINISHED, + TLS_ST_SW_SESSION_TICKET, + TLS_ST_SW_CERT_STATUS, + TLS_ST_SW_CHANGE, + TLS_ST_SW_FINISHED, + TLS_ST_SW_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_CERT_VRFY, + TLS_ST_SW_CERT_VRFY, + TLS_ST_CR_HELLO_REQ, + TLS_ST_SW_KEY_UPDATE, + TLS_ST_CW_KEY_UPDATE, + TLS_ST_SR_KEY_UPDATE, + TLS_ST_CR_KEY_UPDATE, + TLS_ST_EARLY_DATA, + TLS_ST_PENDING_EARLY_DATA_END, + TLS_ST_CW_END_OF_EARLY_DATA, + TLS_ST_SR_END_OF_EARLY_DATA +} OSSL_HANDSHAKE_STATE; + +/* + * Most of the following state values are no longer used and are defined to be + * the closest equivalent value in the current state machine code. Not all + * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT + * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP, + * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT. + */ + +#define SSL_ST_CONNECT 0x1000 +#define SSL_ST_ACCEPT 0x2000 + +#define SSL_ST_MASK 0x0FFF + +#define SSL_CB_LOOP 0x01 +#define SSL_CB_EXIT 0x02 +#define SSL_CB_READ 0x04 +#define SSL_CB_WRITE 0x08 +#define SSL_CB_ALERT 0x4000 /* used in callback */ +#define SSL_CB_READ_ALERT (SSL_CB_ALERT | SSL_CB_READ) +#define SSL_CB_WRITE_ALERT (SSL_CB_ALERT | SSL_CB_WRITE) +#define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT | SSL_CB_LOOP) +#define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT | SSL_CB_EXIT) +#define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT | SSL_CB_LOOP) +#define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT | SSL_CB_EXIT) +#define SSL_CB_HANDSHAKE_START 0x10 +#define SSL_CB_HANDSHAKE_DONE 0x20 + +/* Is the SSL_connection established? */ +#define SSL_in_connect_init(a) (SSL_in_init(a) && !SSL_is_server(a)) +#define SSL_in_accept_init(a) (SSL_in_init(a) && SSL_is_server(a)) +int SSL_in_init(const SSL *s); +int SSL_in_before(const SSL *s); +int SSL_is_init_finished(const SSL *s); + +/* + * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you + * should not need these + */ +#define SSL_ST_READ_HEADER 0xF0 +#define SSL_ST_READ_BODY 0xF1 +#define SSL_ST_READ_DONE 0xF2 + +/*- + * Obtain latest Finished message + * -- that we sent (SSL_get_finished) + * -- that we expected from peer (SSL_get_peer_finished). + * Returns length (0 == no Finished so far), copies up to 'count' bytes. + */ +size_t SSL_get_finished(const SSL *s, void *buf, size_t count); +size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); + +/* + * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are + * 'ored' with SSL_VERIFY_PEER if they are desired + */ +#define SSL_VERIFY_NONE 0x00 +#define SSL_VERIFY_PEER 0x01 +#define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 +#define SSL_VERIFY_CLIENT_ONCE 0x04 +#define SSL_VERIFY_POST_HANDSHAKE 0x08 + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OpenSSL_add_ssl_algorithms() SSL_library_init() +#define SSLeay_add_ssl_algorithms() SSL_library_init() +#endif + +/* More backward compatibility */ +#define SSL_get_cipher(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +#define SSL_get_cipher_bits(s, np) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(s), np) +#define SSL_get_cipher_version(s) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(s)) +#define SSL_get_cipher_name(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +#define SSL_get_time(a) SSL_SESSION_get_time(a) +#define SSL_set_time(a, b) SSL_SESSION_set_time((a), (b)) +#define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) +#define SSL_set_timeout(a, b) SSL_SESSION_set_timeout((a), (b)) + +#define d2i_SSL_SESSION_bio(bp, s_id) ASN1_d2i_bio_of(SSL_SESSION, SSL_SESSION_new, d2i_SSL_SESSION, bp, s_id) +#define i2d_SSL_SESSION_bio(bp, s_id) ASN1_i2d_bio_of(SSL_SESSION, i2d_SSL_SESSION, bp, s_id) + +DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) +#define SSL_AD_REASON_OFFSET 1000 /* offset to get SSL_R_... value \ + * from SSL_AD_... */ +/* These alert types are for SSLv3 and TLSv1 */ +#define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY +/* fatal */ +#define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE +/* fatal */ +#define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC +#define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED +#define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW +/* fatal */ +#define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE +/* fatal */ +#define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE +/* Not for TLS */ +#define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE +#define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE +#define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE +#define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED +#define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED +#define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN +/* fatal */ +#define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER +/* fatal */ +#define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA +/* fatal */ +#define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED +/* fatal */ +#define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR +#define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR +/* fatal */ +#define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION +/* fatal */ +#define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION +/* fatal */ +#define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY +/* fatal */ +#define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR +#define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED +#define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION +#define SSL_AD_MISSING_EXTENSION TLS13_AD_MISSING_EXTENSION +#define SSL_AD_CERTIFICATE_REQUIRED TLS13_AD_CERTIFICATE_REQUIRED +#define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION +#define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE +#define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME +#define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE +#define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE +/* fatal */ +#define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY +/* fatal */ +#define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK +#define SSL_AD_NO_APPLICATION_PROTOCOL TLS1_AD_NO_APPLICATION_PROTOCOL +#define SSL_ERROR_NONE 0 +#define SSL_ERROR_SSL 1 +#define SSL_ERROR_WANT_READ 2 +#define SSL_ERROR_WANT_WRITE 3 +#define SSL_ERROR_WANT_X509_LOOKUP 4 +#define SSL_ERROR_SYSCALL 5 /* look at error stack/return \ + * value/errno */ +#define SSL_ERROR_ZERO_RETURN 6 +#define SSL_ERROR_WANT_CONNECT 7 +#define SSL_ERROR_WANT_ACCEPT 8 +#define SSL_ERROR_WANT_ASYNC 9 +#define SSL_ERROR_WANT_ASYNC_JOB 10 +#define SSL_ERROR_WANT_CLIENT_HELLO_CB 11 +#define SSL_ERROR_WANT_RETRY_VERIFY 12 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTRL_SET_TMP_DH 3 +#define SSL_CTRL_SET_TMP_ECDH 4 +#define SSL_CTRL_SET_TMP_DH_CB 6 +#endif + +#define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 +#define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 +#define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 +#define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 +#define SSL_CTRL_GET_FLAGS 13 +#define SSL_CTRL_EXTRA_CHAIN_CERT 14 +#define SSL_CTRL_SET_MSG_CALLBACK 15 +#define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 +/* only applies to datagram connections */ +#define SSL_CTRL_SET_MTU 17 +/* Stats */ +#define SSL_CTRL_SESS_NUMBER 20 +#define SSL_CTRL_SESS_CONNECT 21 +#define SSL_CTRL_SESS_CONNECT_GOOD 22 +#define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 +#define SSL_CTRL_SESS_ACCEPT 24 +#define SSL_CTRL_SESS_ACCEPT_GOOD 25 +#define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 +#define SSL_CTRL_SESS_HIT 27 +#define SSL_CTRL_SESS_CB_HIT 28 +#define SSL_CTRL_SESS_MISSES 29 +#define SSL_CTRL_SESS_TIMEOUTS 30 +#define SSL_CTRL_SESS_CACHE_FULL 31 +#define SSL_CTRL_MODE 33 +#define SSL_CTRL_GET_READ_AHEAD 40 +#define SSL_CTRL_SET_READ_AHEAD 41 +#define SSL_CTRL_SET_SESS_CACHE_SIZE 42 +#define SSL_CTRL_GET_SESS_CACHE_SIZE 43 +#define SSL_CTRL_SET_SESS_CACHE_MODE 44 +#define SSL_CTRL_GET_SESS_CACHE_MODE 45 +#define SSL_CTRL_GET_MAX_CERT_LIST 50 +#define SSL_CTRL_SET_MAX_CERT_LIST 51 +#define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 +/* see tls1.h for macros based on these */ +#define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 +#define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 +#define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 +#define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 +#define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 +#define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 +#define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */ +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +#endif +#define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 +#define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 +#define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 +#define SSL_CTRL_SET_SRP_ARG 78 +#define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 +#define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 +#define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 +#define DTLS_CTRL_GET_TIMEOUT 73 +#define DTLS_CTRL_HANDLE_TIMEOUT 74 +#define SSL_CTRL_GET_RI_SUPPORT 76 +#define SSL_CTRL_CLEAR_MODE 78 +#define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB 79 +#define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 +#define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 +#define SSL_CTRL_CHAIN 88 +#define SSL_CTRL_CHAIN_CERT 89 +#define SSL_CTRL_GET_GROUPS 90 +#define SSL_CTRL_SET_GROUPS 91 +#define SSL_CTRL_SET_GROUPS_LIST 92 +#define SSL_CTRL_GET_SHARED_GROUP 93 +#define SSL_CTRL_SET_SIGALGS 97 +#define SSL_CTRL_SET_SIGALGS_LIST 98 +#define SSL_CTRL_CERT_FLAGS 99 +#define SSL_CTRL_CLEAR_CERT_FLAGS 100 +#define SSL_CTRL_SET_CLIENT_SIGALGS 101 +#define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 +#define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 +#define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 +#define SSL_CTRL_BUILD_CERT_CHAIN 105 +#define SSL_CTRL_SET_VERIFY_CERT_STORE 106 +#define SSL_CTRL_SET_CHAIN_CERT_STORE 107 +#define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 +#define SSL_CTRL_GET_PEER_TMP_KEY 109 +#define SSL_CTRL_GET_RAW_CIPHERLIST 110 +#define SSL_CTRL_GET_EC_POINT_FORMATS 111 +#define SSL_CTRL_GET_CHAIN_CERTS 115 +#define SSL_CTRL_SELECT_CURRENT_CERT 116 +#define SSL_CTRL_SET_CURRENT_CERT 117 +#define SSL_CTRL_SET_DH_AUTO 118 +#define DTLS_CTRL_SET_LINK_MTU 120 +#define DTLS_CTRL_GET_LINK_MIN_MTU 121 +#define SSL_CTRL_GET_EXTMS_SUPPORT 122 +#define SSL_CTRL_SET_MIN_PROTO_VERSION 123 +#define SSL_CTRL_SET_MAX_PROTO_VERSION 124 +#define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125 +#define SSL_CTRL_SET_MAX_PIPELINES 126 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE 127 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB 128 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG 129 +#define SSL_CTRL_GET_MIN_PROTO_VERSION 130 +#define SSL_CTRL_GET_MAX_PROTO_VERSION 131 +#define SSL_CTRL_GET_SIGNATURE_NID 132 +#define SSL_CTRL_GET_TMP_KEY 133 +#define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +#define SSL_CTRL_GET_IANA_GROUPS 135 +#define SSL_CTRL_SET_RETRY_VERIFY 136 +#define SSL_CTRL_GET_VERIFY_CERT_STORE 137 +#define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +#define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +#define SSL_CTRL_GET_SIGNATURE_NAME 140 +#define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 +#define SSL_CERT_SET_FIRST 1 +#define SSL_CERT_SET_NEXT 2 +#define SSL_CERT_SET_SERVER 3 +#define DTLSv1_get_timeout(ssl, arg) \ + SSL_ctrl(ssl, DTLS_CTRL_GET_TIMEOUT, 0, (void *)(arg)) +#define DTLSv1_handle_timeout(ssl) \ + SSL_ctrl(ssl, DTLS_CTRL_HANDLE_TIMEOUT, 0, NULL) +#define SSL_num_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_NUM_RENEGOTIATIONS, 0, NULL) +#define SSL_clear_num_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS, 0, NULL) +#define SSL_total_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_TOTAL_RENEGOTIATIONS, 0, NULL) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tmp_dh(ctx, dh) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TMP_DH, 0, (char *)(dh)) +#endif +#define SSL_CTX_set_dh_auto(ctx, onoff) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_DH_AUTO, onoff, NULL) +#define SSL_set_dh_auto(s, onoff) \ + SSL_ctrl(s, SSL_CTRL_SET_DH_AUTO, onoff, NULL) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_set_tmp_dh(ssl, dh) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TMP_DH, 0, (char *)(dh)) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tmp_ecdh(ctx, ecdh) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TMP_ECDH, 0, (char *)(ecdh)) +#define SSL_set_tmp_ecdh(ssl, ecdh) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TMP_ECDH, 0, (char *)(ecdh)) +#endif +#define SSL_CTX_add_extra_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_CTX_get_extra_chain_certs(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_EXTRA_CHAIN_CERTS, 0, px509) +#define SSL_CTX_get_extra_chain_certs_only(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_EXTRA_CHAIN_CERTS, 1, px509) +#define SSL_CTX_clear_extra_chain_certs(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS, 0, NULL) +#define SSL_CTX_set0_chain(ctx, sk) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN, 0, (char *)(sk)) +#define SSL_CTX_set1_chain(ctx, sk) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN, 1, (char *)(sk)) +#define SSL_CTX_add0_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_CTX_add1_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN_CERT, 1, (char *)(x509)) +#define SSL_CTX_get0_chain_certs(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_CHAIN_CERTS, 0, px509) +#define SSL_CTX_clear_chain_certs(ctx) \ + SSL_CTX_set0_chain(ctx, NULL) +#define SSL_CTX_build_cert_chain(ctx, flags) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +#define SSL_CTX_select_current_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SELECT_CURRENT_CERT, 0, (char *)(x509)) +#define SSL_CTX_set_current_cert(ctx, op) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CURRENT_CERT, op, NULL) +#define SSL_CTX_set0_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set1_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 1, (char *)(st)) +#define SSL_CTX_get0_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set0_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set1_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CHAIN_CERT_STORE, 1, (char *)(st)) +#define SSL_CTX_get0_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_set0_chain(s, sk) \ + SSL_ctrl(s, SSL_CTRL_CHAIN, 0, (char *)(sk)) +#define SSL_set1_chain(s, sk) \ + SSL_ctrl(s, SSL_CTRL_CHAIN, 1, (char *)(sk)) +#define SSL_add0_chain_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_add1_chain_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_CHAIN_CERT, 1, (char *)(x509)) +#define SSL_get0_chain_certs(s, px509) \ + SSL_ctrl(s, SSL_CTRL_GET_CHAIN_CERTS, 0, px509) +#define SSL_clear_chain_certs(s) \ + SSL_set0_chain(s, NULL) +#define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s, SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +#define SSL_select_current_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_SELECT_CURRENT_CERT, 0, (char *)(x509)) +#define SSL_set_current_cert(s, op) \ + SSL_ctrl(s, SSL_CTRL_SET_CURRENT_CERT, op, NULL) +#define SSL_set0_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_set1_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_VERIFY_CERT_STORE, 1, (char *)(st)) +#define SSL_get0_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_GET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_set0_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_set1_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_CHAIN_CERT_STORE, 1, (char *)(st)) +#define SSL_get0_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_GET_CHAIN_CERT_STORE, 0, (char *)(st)) + +#define SSL_get1_groups(s, glist) \ + SSL_ctrl(s, SSL_CTRL_GET_GROUPS, 0, (int *)(glist)) +#define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_IANA_GROUPS, 0, (uint16_t **)(plst)) +#define SSL_CTX_set1_groups(ctx, glist, glistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_GROUPS, glistlen, (int *)(glist)) +#define SSL_CTX_set1_groups_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_GROUPS_LIST, 0, (char *)(s)) +#define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) +#define SSL_set1_groups(s, glist, glistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_GROUPS, glistlen, (char *)(glist)) +#define SSL_set1_groups_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_GROUPS_LIST, 0, (char *)(str)) +#define SSL_get_shared_group(s, n) \ + SSL_ctrl(s, SSL_CTRL_GET_SHARED_GROUP, n, NULL) +#define SSL_get_negotiated_group(s) \ + SSL_ctrl(s, SSL_CTRL_GET_NEGOTIATED_GROUP, 0, NULL) +#define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SIGALGS, slistlen, (int *)(slist)) +#define SSL_CTX_set1_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SIGALGS_LIST, 0, (char *)(s)) +#define SSL_set1_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_SIGALGS, slistlen, (int *)(slist)) +#define SSL_set1_sigalgs_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_SIGALGS_LIST, 0, (char *)(str)) +#define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_SIGALGS, slistlen, (int *)(slist)) +#define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_SIGALGS_LIST, 0, (char *)(s)) +#define SSL_set1_client_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_SIGALGS, slistlen, (int *)(slist)) +#define SSL_set1_client_sigalgs_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_SIGALGS_LIST, 0, (char *)(str)) +#define SSL_get0_certificate_types(s, clist) \ + SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist)) +#define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_CERT_TYPES, clistlen, \ + (char *)(clist)) +#define SSL_set1_client_certificate_types(s, clist, clistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_CERT_TYPES, clistlen, (char *)(clist)) +#define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s, SSL_CTRL_GET_SIGNATURE_NAME, 0, (1 ? (str) : (const char **)NULL)) +#define SSL_get_signature_nid(s, pn) \ + SSL_ctrl(s, SSL_CTRL_GET_SIGNATURE_NID, 0, pn) +#define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_SIGNATURE_NAME, 0, (1 ? (str) : (const char **)NULL)) +#define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_SIGNATURE_NID, 0, pn) +#define SSL_get_peer_tmp_key(s, pk) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_TMP_KEY, 0, pk) +#define SSL_get_tmp_key(s, pk) \ + SSL_ctrl(s, SSL_CTRL_GET_TMP_KEY, 0, pk) +#define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_RAW_CIPHERLIST, 0, plst) +#define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_EC_POINT_FORMATS, 0, plst) +#define SSL_CTX_set_min_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +#define SSL_CTX_set_max_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +#define SSL_CTX_get_min_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +#define SSL_CTX_get_max_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +#define SSL_set_min_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +#define SSL_set_max_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +#define SSL_get_min_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +#define SSL_get_max_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) + +const char *SSL_get0_group_name(SSL *s); +const char *SSL_group_to_name(SSL *s, int id); + +/* Backwards compatibility, original 1.1.0 names */ +#define SSL_CTRL_GET_SERVER_TMP_KEY \ + SSL_CTRL_GET_PEER_TMP_KEY +#define SSL_get_server_tmp_key(s, pk) \ + SSL_get_peer_tmp_key(s, pk) + +int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey); +int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey); + +/* + * The following symbol names are old and obsolete. They are kept + * for compatibility reasons only and should not be used anymore. + */ +#define SSL_CTRL_GET_CURVES SSL_CTRL_GET_GROUPS +#define SSL_CTRL_SET_CURVES SSL_CTRL_SET_GROUPS +#define SSL_CTRL_SET_CURVES_LIST SSL_CTRL_SET_GROUPS_LIST +#define SSL_CTRL_GET_SHARED_CURVE SSL_CTRL_GET_SHARED_GROUP + +#define SSL_get1_curves SSL_get1_groups +#define SSL_CTX_set1_curves SSL_CTX_set1_groups +#define SSL_CTX_set1_curves_list SSL_CTX_set1_groups_list +#define SSL_set1_curves SSL_set1_groups +#define SSL_set1_curves_list SSL_set1_groups_list +#define SSL_get_shared_curve SSL_get_shared_group + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* Provide some compatibility macros for removed functionality. */ +#define SSL_CTX_need_tmp_RSA(ctx) 0 +#define SSL_CTX_set_tmp_rsa(ctx, rsa) 1 +#define SSL_need_tmp_RSA(ssl) 0 +#define SSL_set_tmp_rsa(ssl, rsa) 1 +#define SSL_CTX_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +#define SSL_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +/* + * We "pretend" to call the callback to avoid warnings about unused static + * functions. + */ +#define SSL_CTX_set_tmp_rsa_callback(ctx, cb) \ + while (0) \ + (cb)(NULL, 0, 0) +#define SSL_set_tmp_rsa_callback(ssl, cb) \ + while (0) \ + (cb)(NULL, 0, 0) +#endif +__owur const BIO_METHOD *BIO_f_ssl(void); +__owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client); +__owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx); +__owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); +__owur int BIO_ssl_copy_session_id(BIO *to, BIO *from); +void BIO_ssl_shutdown(BIO *ssl_bio); + +__owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); +__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); +__owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq, + const SSL_METHOD *meth); +int SSL_CTX_up_ref(SSL_CTX *ctx); +void SSL_CTX_free(SSL_CTX *); +__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx); +__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); +__owur int SSL_want(const SSL *s); +__owur int SSL_clear(SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); + +__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); +__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +__owur const char *OPENSSL_cipher_name(const char *rfc_name); +__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c); +__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c); +__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c); +__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c); + +__owur int SSL_get_fd(const SSL *s); +__owur int SSL_get_rfd(const SSL *s); +__owur int SSL_get_wfd(const SSL *s); +__owur const char *SSL_get_cipher_list(const SSL *s, int n); +__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size); +__owur int SSL_get_read_ahead(const SSL *s); +__owur int SSL_pending(const SSL *s); +__owur int SSL_has_pending(const SSL *s); +#ifndef OPENSSL_NO_SOCK +__owur int SSL_set_fd(SSL *s, int fd); +__owur int SSL_set_rfd(SSL *s, int fd); +__owur int SSL_set_wfd(SSL *s, int fd); +#endif +void SSL_set0_rbio(SSL *s, BIO *rbio); +void SSL_set0_wbio(SSL *s, BIO *wbio); +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +__owur BIO *SSL_get_rbio(const SSL *s); +__owur BIO *SSL_get_wbio(const SSL *s); +__owur int SSL_set_cipher_list(SSL *s, const char *str); +__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str); +__owur int SSL_set_ciphersuites(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +__owur int SSL_get_verify_mode(const SSL *s); +__owur int SSL_get_verify_depth(const SSL *s); +__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s); +void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback); +void SSL_set_verify_depth(SSL *s, int depth); +void SSL_set_cert_cb(SSL *s, int (*cb)(SSL *ssl, void *arg), void *arg); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, + const unsigned char *d, long len); +#endif +__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +__owur int SSL_use_certificate(SSL *ssl, X509 *x); +__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); +__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +/* serverinfo file format versions */ +#define SSL_SERVERINFOV1 1 +#define SSL_SERVERINFOV2 2 + +/* Set serverinfo data for the current active cert. */ +__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version, + const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); +#endif + +__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); +__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +#endif +__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +__owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, + int type); +/* PEM type */ +__owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); +__owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx, + const char *propq); +__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *file); +int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *dir); +int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *uri); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_load_error_strings() \ + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, \ + NULL) +#endif + +__owur const char *SSL_state_string(const SSL *s); +__owur const char *SSL_rstate_string(const SSL *s); +__owur const char *SSL_state_string_long(const SSL *s); +__owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") +__owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") +__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif +__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); +__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); +__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); + +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + +__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); +__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); +void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, + const unsigned char **alpn, + size_t *len); +__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s, + const unsigned char *alpn, + size_t len); +__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s); +__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher); +__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s); +__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s); +void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick, + size_t *len); +__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s); +__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s, + uint32_t max_early_data); +__owur int SSL_copy_session_id(SSL *to, const SSL *from); +__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); +__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid, + unsigned int sid_len); +__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s); + +__owur SSL_SESSION *SSL_SESSION_new(void); +__owur SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s, + unsigned int *len); +__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +#ifndef OPENSSL_NO_STDIO +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +#endif +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x); +int SSL_SESSION_up_ref(SSL_SESSION *ses); +void SSL_SESSION_free(SSL_SESSION *ses); +__owur int i2d_SSL_SESSION(const SSL_SESSION *in, unsigned char **pp); +__owur int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session); +int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session); +__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb); +__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb); +__owur int SSL_has_matching_session_id(const SSL *s, + const unsigned char *id, + unsigned int id_len); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, + long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); + +#ifdef OPENSSL_X509_H +__owur X509 *SSL_get0_peer_certificate(const SSL *s); +__owur X509 *SSL_get1_peer_certificate(const SSL *s); +/* Deprecated in 3.0.0 */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_get_peer_certificate SSL_get1_peer_certificate +#endif +#endif + +__owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); + +__owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +__owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +__owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx); +void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback); +void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); +void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, + int (*cb)(X509_STORE_CTX *, void *), + void *arg); +void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb)(SSL *ssl, void *arg), + void *arg); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +#endif +__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); +__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); +void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); +pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx); +void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx); +void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb); +void SSL_set_default_passwd_cb_userdata(SSL *s, void *u); +pem_password_cb *SSL_get_default_passwd_cb(SSL *s); +void *SSL_get_default_passwd_cb_userdata(SSL *s); + +__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx); +__owur int SSL_check_private_key(const SSL *ctx); + +__owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL *SSL_new(SSL_CTX *ctx); +int SSL_up_ref(SSL *s); +int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); +__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose); +__owur int SSL_set_purpose(SSL *ssl, int purpose); +__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); +__owur int SSL_set_trust(SSL *ssl, int trust); + +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); +__owur const char *SSL_get0_peername(SSL *s); +void SSL_set_hostflags(SSL *s, unsigned int flags); + +__owur int SSL_CTX_dane_enable(SSL_CTX *ctx); +__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md, + uint8_t mtype, uint8_t ord); +__owur int SSL_dane_enable(SSL *s, const char *basedomain); +__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector, + uint8_t mtype, const unsigned char *data, size_t dlen); +__owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki); +__owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector, + uint8_t *mtype, const unsigned char **data, + size_t *dlen); +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +SSL_DANE *SSL_get0_dane(SSL *ssl); +/* + * DANE flags + */ +unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags); +unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags); + +__owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); +__owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); + +__owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); +__owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); + +#ifndef OPENSSL_NO_SRP +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb)(SSL *, void *)); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb)(SSL *, void *)); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb)(SSL *, int *, void *)); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +OSSL_DEPRECATEDIN_3_0 +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +OSSL_DEPRECATEDIN_3_0 +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s); + +OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); +#endif +#endif + +/* + * ClientHello callback and helpers. + */ + +#define SSL_CLIENT_HELLO_SUCCESS 1 +#define SSL_CLIENT_HELLO_ERROR 0 +#define SSL_CLIENT_HELLO_RETRY (-1) + +typedef int (*SSL_client_hello_cb_fn)(SSL *s, int *al, void *arg); +void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, + void *arg); +typedef int (*SSL_new_pending_conn_cb_fn)(SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + +int SSL_client_hello_isv2(SSL *s); +unsigned int SSL_client_hello_get0_legacy_version(SSL *s); +size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_compression_methods(SSL *s, + const unsigned char **out); +int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); +int SSL_client_hello_get0_ext(SSL *s, unsigned int type, + const unsigned char **out, size_t *outlen); + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +#ifdef OSSL_ASYNC_FD +/* + * Windows application developer has to include windows.h to use these. + */ +__owur int SSL_waiting_for_async(SSL *s); +__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds); +__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +__owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback); +__owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg); +__owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback); +__owur int SSL_set_async_callback_arg(SSL *s, void *arg); +__owur int SSL_get_async_status(SSL *s, int *status); + +#endif +__owur int SSL_accept(SSL *ssl); +__owur int SSL_stateless(SSL *s); +__owur int SSL_connect(SSL *ssl); +__owur int SSL_read(SSL *ssl, void *buf, int num); +__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); + +#define SSL_READ_EARLY_DATA_ERROR 0 +#define SSL_READ_EARLY_DATA_SUCCESS 1 +#define SSL_READ_EARLY_DATA_FINISH 2 + +__owur int SSL_read_early_data(SSL *s, void *buf, size_t num, + size_t *readbytes); +__owur int SSL_peek(SSL *ssl, void *buf, int num); +__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); +__owur ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size, + int flags); +__owur int SSL_write(SSL *ssl, const void *buf, int num); +__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written); +__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num, + size_t *written); +long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); +long SSL_callback_ctrl(SSL *, int, void (*)(void)); +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); + +#define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + +#define SSL_EARLY_DATA_NOT_SENT 0 +#define SSL_EARLY_DATA_REJECTED 1 +#define SSL_EARLY_DATA_ACCEPTED 2 + +__owur int SSL_get_early_data_status(const SSL *s); + +__owur int SSL_get_error(const SSL *s, int ret_code); +__owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); + +/* This sets the 'default' SSL version that SSL_new() will create */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); +#endif + +#ifndef OPENSSL_NO_SSL3_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void); +#endif +#endif + +#define SSLv23_method TLS_method +#define SSLv23_server_method TLS_server_method +#define SSLv23_client_method TLS_client_method + +/* Negotiate highest available SSL/TLS version */ +__owur const SSL_METHOD *TLS_method(void); +__owur const SSL_METHOD *TLS_server_method(void); +__owur const SSL_METHOD *TLS_client_method(void); + +#ifndef OPENSSL_NO_TLS1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_TLS1_1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_TLS1_2_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_DTLS1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_DTLS1_2_METHOD +/* DTLSv1.2 */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void); +#endif +#endif + +__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +__owur size_t DTLS_get_data_mtu(const SSL *s); + +__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx); +__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s); + +__owur int SSL_do_handshake(SSL *s); +int SSL_key_update(SSL *s, int updatetype); +int SSL_get_key_update_type(const SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +__owur int SSL_renegotiate_pending(const SSL *s); +int SSL_new_session_ticket(SSL *s); +int SSL_shutdown(SSL *s); +__owur int SSL_verify_client_post_handshake(SSL *s); +void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); +void SSL_set_post_handshake_auth(SSL *s, int val); + +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s); +__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +__owur const char *SSL_alert_type_string_long(int value); +__owur const char *SSL_alert_type_string(int value); +__owur const char *SSL_alert_desc_string_long(int value); +__owur const char *SSL_alert_desc_string(int value); + +void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s); +__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx); +__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x); +__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x); +__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s); + +void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +__owur int SSL_add_client_CA(SSL *ssl, X509 *x); +__owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); + +void SSL_set_connect_state(SSL *s); +void SSL_set_accept_state(SSL *s); + +__owur long SSL_get_default_timeout(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_library_init() OPENSSL_init_ssl(0, NULL) +#endif + +__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk); + +__owur SSL *SSL_dup(SSL *ssl); + +__owur X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ +struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +__owur int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +__owur int SSL_get_shutdown(const SSL *ssl); +__owur int SSL_version(const SSL *ssl); +__owur int SSL_client_version(const SSL *s); +__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_store(SSL_CTX *ctx); +__owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile); +__owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath); +__owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore); +__owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx, + const char *CAfile, + const char *CApath); +#define SSL_get0_session SSL_get_session /* just peek at pointer */ +__owur SSL_SESSION *SSL_get_session(const SSL *ssl); +__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +__owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); +SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +void SSL_set_info_callback(SSL *ssl, + void (*cb)(const SSL *ssl, int type, int val)); +void (*SSL_get_info_callback(const SSL *ssl))(const SSL *ssl, int type, + int val); +__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl); + +void SSL_set_verify_result(SSL *ssl, long v); +__owur long SSL_get_verify_result(const SSL *ssl); +__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s); + +__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess, + unsigned char *out, size_t outlen); +__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess, + const unsigned char *in, size_t len); +uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess); + +#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef) +__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef) +__owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); +void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); +#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef) +__owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); +void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); + +__owur int SSL_get_ex_data_X509_STORE_CTX_idx(void); + +#define SSL_CTX_sess_set_cache_size(ctx, t) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SESS_CACHE_SIZE, t, NULL) +#define SSL_CTX_sess_get_cache_size(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_SESS_CACHE_SIZE, 0, NULL) +#define SSL_CTX_set_session_cache_mode(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SESS_CACHE_MODE, m, NULL) +#define SSL_CTX_get_session_cache_mode(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_SESS_CACHE_MODE, 0, NULL) + +#define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) +#define SSL_CTX_set_default_read_ahead(ctx, m) SSL_CTX_set_read_ahead(ctx, m) +#define SSL_CTX_get_read_ahead(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_READ_AHEAD, 0, NULL) +#define SSL_CTX_set_read_ahead(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_READ_AHEAD, m, NULL) +#define SSL_CTX_get_max_cert_list(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_CERT_LIST, 0, NULL) +#define SSL_CTX_set_max_cert_list(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_CERT_LIST, m, NULL) +#define SSL_get_max_cert_list(ssl) \ + SSL_ctrl(ssl, SSL_CTRL_GET_MAX_CERT_LIST, 0, NULL) +#define SSL_set_max_cert_list(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_CERT_LIST, m, NULL) + +#define SSL_CTX_set_max_send_fragment(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_SEND_FRAGMENT, m, NULL) +#define SSL_set_max_send_fragment(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_SEND_FRAGMENT, m, NULL) +#define SSL_CTX_set_split_send_fragment(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SPLIT_SEND_FRAGMENT, m, NULL) +#define SSL_set_split_send_fragment(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_SPLIT_SEND_FRAGMENT, m, NULL) +#define SSL_CTX_set_max_pipelines(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PIPELINES, m, NULL) +#define SSL_set_max_pipelines(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_PIPELINES, m, NULL) +#define SSL_set_retry_verify(ssl) \ + (SSL_ctrl(ssl, SSL_CTRL_SET_RETRY_VERIFY, 0, NULL) > 0) + +void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len); +void SSL_set_default_read_buffer_len(SSL *s, size_t len); + +#ifndef OPENSSL_NO_DH +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* NB: the |keylength| is only applicable when is_export is true */ +OSSL_DEPRECATEDIN_3_0 +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh)(SSL *ssl, int is_export, + int keylength)); +OSSL_DEPRECATEDIN_3_0 +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh)(SSL *ssl, int is_export, + int keylength)); +#endif +#endif + +__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s); +__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp); +__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp); +__owur int SSL_COMP_get_id(const SSL_COMP *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_COMP_free_compression_methods() \ + while (0) \ + continue +#endif +__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); +int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c); +int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c); +int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len, + int isv2format, STACK_OF(SSL_CIPHER) **sk, + STACK_OF(SSL_CIPHER) **scsvs); + +/* TLS extensions functions */ +__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +__owur int SSL_set_session_ticket_ext_cb(SSL *s, + tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +__owur int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn session_secret_cb, + void *arg); + +void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, + int (*cb)(SSL *ssl, + int + is_forward_secure)); + +void SSL_set_not_resumable_session_callback(SSL *ssl, + int (*cb)(SSL *ssl, + int is_forward_secure)); + +void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, + size_t (*cb)(SSL *ssl, int type, + size_t len, void *arg)); +void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); +int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); + +int SSL_set_record_padding_callback(SSL *ssl, + size_t (*cb)(SSL *ssl, int type, + size_t len, void *arg)); +void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); +void *SSL_get_record_padding_callback_arg(const SSL *ssl); +int SSL_set_block_padding(SSL *ssl, size_t block_size); +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); +int SSL_set_num_tickets(SSL *s, size_t num_tickets); +size_t SSL_get_num_tickets(const SSL *s); +int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); + +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +#ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +#endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +#define SSL_VALUE_CLASS_GENERIC 0 +#define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +#define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +#define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +#define SSL_VALUE_NONE 0 +#define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +#define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +#define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +#define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +#define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +#define SSL_VALUE_EVENT_HANDLING_MODE 6 +#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +#define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +#define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +#define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +#define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +#define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +#define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +#define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +#define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +#define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +#define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +#define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +#define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +#define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +#define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +#define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +#define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +#define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +#define SSL_POLL_EVENT_NONE 0 + +#define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +#define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +#define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +#define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +#define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +#define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +#define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +#define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +#define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +#define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +#define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +#define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +#define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +#define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +#define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +#define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +#define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +#define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +#define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +#define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +#define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +#define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +#define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +#define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_cache_hit(s) SSL_session_reused(s) +#endif + +__owur int SSL_session_reused(const SSL *s); +__owur int SSL_is_server(const SSL *s); + +__owur SSL_CONF_CTX *SSL_CONF_CTX_new(void); +int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); +void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); +unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); +__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, + unsigned int flags); +__owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); + +void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); +void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); + +__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +void SSL_add_ssl_module(void); +int SSL_config(SSL *s, const char *name); +int SSL_CTX_config(SSL_CTX *ctx, const char *name); + +#ifndef OPENSSL_NO_SSL_TRACE +void SSL_trace(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); +#endif + +#ifndef OPENSSL_NO_SOCK +int DTLSv1_listen(SSL *s, BIO_ADDR *client); +#endif + +#ifndef OPENSSL_NO_CT + +/* + * A callback for verifying that the received SCTs are sufficient. + * Expected to return 1 if they are sufficient, otherwise 0. + * May return a negative integer if an error occurs. + * A connection should be aborted if the SCTs are deemed insufficient. + */ +typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx, + const STACK_OF(SCT) *scts, void *arg); + +/* + * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate + * the received SCTs. + * If the callback returns a non-positive result, the connection is terminated. + * Call this function before beginning a handshake. + * If a NULL |callback| is provided, SCT validation is disabled. + * |arg| is arbitrary userdata that will be passed to the callback whenever it + * is invoked. Ownership of |arg| remains with the caller. + * + * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response + * will be requested. + */ +int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback, + void *arg); +int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx, + ssl_ct_validation_cb callback, + void *arg); +#define SSL_disable_ct(s) \ + ((void)SSL_set_validation_callback((s), NULL, NULL)) +#define SSL_CTX_disable_ct(ctx) \ + ((void)SSL_CTX_set_validation_callback((ctx), NULL, NULL)) + +/* + * The validation type enumerates the available behaviours of the built-in SSL + * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct(). + * The underlying callback is a static function in libssl. + */ +enum { + SSL_CT_VALIDATION_PERMISSIVE = 0, + SSL_CT_VALIDATION_STRICT +}; + +/* + * Enable CT by setting up a callback that implements one of the built-in + * validation variants. The SSL_CT_VALIDATION_PERMISSIVE variant always + * continues the handshake, the application can make appropriate decisions at + * handshake completion. The SSL_CT_VALIDATION_STRICT variant requires at + * least one valid SCT, or else handshake termination will be requested. The + * handshake may continue anyway if SSL_VERIFY_NONE is in effect. + */ +int SSL_enable_ct(SSL *s, int validation_mode); +int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode); + +/* + * Report whether a non-NULL callback is enabled. + */ +int SSL_ct_is_enabled(const SSL *s); +int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx); + +/* Gets the SCTs received from a connection */ +const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s); + +/* + * Loads the CT log list from the default location. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx); + +/* + * Loads the CT log list from the specified file path. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path); + +/* + * Sets the CT log list used by all SSL connections created from this SSL_CTX. + * Ownership of the CTLOG_STORE is transferred to the SSL_CTX. + */ +void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs); + +/* + * Gets the CT log list used by all SSL connections created from this SSL_CTX. + * This will be NULL unless one of the following functions has been called: + * - SSL_CTX_set_default_ctlog_list_file + * - SSL_CTX_set_ctlog_list_file + * - SSL_CTX_set_ctlog_store + */ +const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx); + +#endif /* OPENSSL_NO_CT */ + +/* What the "other" parameter contains in security callback */ +/* Mask for type */ +#define SSL_SECOP_OTHER_TYPE 0xffff0000 +#define SSL_SECOP_OTHER_NONE 0 +#define SSL_SECOP_OTHER_CIPHER (1 << 16) +#define SSL_SECOP_OTHER_CURVE (2 << 16) +#define SSL_SECOP_OTHER_DH (3 << 16) +#define SSL_SECOP_OTHER_PKEY (4 << 16) +#define SSL_SECOP_OTHER_SIGALG (5 << 16) +#define SSL_SECOP_OTHER_CERT (6 << 16) + +/* Indicated operation refers to peer key or certificate */ +#define SSL_SECOP_PEER 0x1000 + +/* Values for "op" parameter in security callback */ + +/* Called to filter ciphers */ +/* Ciphers client supports */ +#define SSL_SECOP_CIPHER_SUPPORTED (1 | SSL_SECOP_OTHER_CIPHER) +/* Cipher shared by client/server */ +#define SSL_SECOP_CIPHER_SHARED (2 | SSL_SECOP_OTHER_CIPHER) +/* Sanity check of cipher server selects */ +#define SSL_SECOP_CIPHER_CHECK (3 | SSL_SECOP_OTHER_CIPHER) +/* Curves supported by client */ +#define SSL_SECOP_CURVE_SUPPORTED (4 | SSL_SECOP_OTHER_CURVE) +/* Curves shared by client/server */ +#define SSL_SECOP_CURVE_SHARED (5 | SSL_SECOP_OTHER_CURVE) +/* Sanity check of curve server selects */ +#define SSL_SECOP_CURVE_CHECK (6 | SSL_SECOP_OTHER_CURVE) +/* Temporary DH key */ +#define SSL_SECOP_TMP_DH (7 | SSL_SECOP_OTHER_PKEY) +/* SSL/TLS version */ +#define SSL_SECOP_VERSION (9 | SSL_SECOP_OTHER_NONE) +/* Session tickets */ +#define SSL_SECOP_TICKET (10 | SSL_SECOP_OTHER_NONE) +/* Supported signature algorithms sent to peer */ +#define SSL_SECOP_SIGALG_SUPPORTED (11 | SSL_SECOP_OTHER_SIGALG) +/* Shared signature algorithm */ +#define SSL_SECOP_SIGALG_SHARED (12 | SSL_SECOP_OTHER_SIGALG) +/* Sanity check signature algorithm allowed */ +#define SSL_SECOP_SIGALG_CHECK (13 | SSL_SECOP_OTHER_SIGALG) +/* Used to get mask of supported public key signature algorithms */ +#define SSL_SECOP_SIGALG_MASK (14 | SSL_SECOP_OTHER_SIGALG) +/* Use to see if compression is allowed */ +#define SSL_SECOP_COMPRESSION (15 | SSL_SECOP_OTHER_NONE) +/* EE key in certificate */ +#define SSL_SECOP_EE_KEY (16 | SSL_SECOP_OTHER_CERT) +/* CA key in certificate */ +#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT) +/* CA digest algorithm in certificate */ +#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT) +/* Peer EE key in certificate */ +#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER) +/* Peer CA key in certificate */ +#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER) +/* Peer CA digest algorithm in certificate */ +#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER) + +void SSL_set_security_level(SSL *s, int level); +__owur int SSL_get_security_level(const SSL *s); +void SSL_set_security_callback(SSL *s, + int (*cb)(const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_get_security_callback(const SSL *s))(const SSL *s, + const SSL_CTX *ctx, int op, + int bits, int nid, void *other, + void *ex); +void SSL_set0_security_ex_data(SSL *s, void *ex); +__owur void *SSL_get0_security_ex_data(const SSL *s); + +void SSL_CTX_set_security_level(SSL_CTX *ctx, int level); +__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx); +void SSL_CTX_set_security_callback(SSL_CTX *ctx, + int (*cb)(const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx))(const SSL *s, + const SSL_CTX *ctx, + int op, int bits, + int nid, + void *other, + void *ex); +void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex); +__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx); + +/* OPENSSL_INIT flag 0x010000 reserved for internal use */ +#define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L +#define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L + +#define OPENSSL_INIT_SSL_DEFAULT \ + (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS) + +int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); + +#ifndef OPENSSL_NO_UNIT_TEST +__owur const struct openssl_ssl_test_functions *SSL_test_functions(void); +#endif + +__owur int SSL_free_buffers(SSL *ssl); +__owur int SSL_alloc_buffers(SSL *ssl); + +/* Status codes passed to the decrypt session ticket callback. Some of these + * are for internal use only and are never passed to the callback. */ +typedef int SSL_TICKET_STATUS; + +/* Support for ticket appdata */ +/* fatal error, malloc failure */ +#define SSL_TICKET_FATAL_ERR_MALLOC 0 +/* fatal error, either from parsing or decrypting the ticket */ +#define SSL_TICKET_FATAL_ERR_OTHER 1 +/* No ticket present */ +#define SSL_TICKET_NONE 2 +/* Empty ticket present */ +#define SSL_TICKET_EMPTY 3 +/* the ticket couldn't be decrypted */ +#define SSL_TICKET_NO_DECRYPT 4 +/* a ticket was successfully decrypted */ +#define SSL_TICKET_SUCCESS 5 +/* same as above but the ticket needs to be renewed */ +#define SSL_TICKET_SUCCESS_RENEW 6 + +/* Return codes for the decrypt session ticket callback */ +typedef int SSL_TICKET_RETURN; + +/* An error occurred */ +#define SSL_TICKET_RETURN_ABORT 0 +/* Do not use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE 1 +/* Do not use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE_RENEW 2 +/* Use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE 3 +/* Use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE_RENEW 4 + +typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg); +typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss, + const unsigned char *keyname, + size_t keyname_length, + SSL_TICKET_STATUS status, + void *arg); +int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx, + SSL_CTX_generate_session_ticket_fn gen_cb, + SSL_CTX_decrypt_session_ticket_fn dec_cb, + void *arg); +int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len); +int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len); + +typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us); + +void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb); + +typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); +void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg); +void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg); + +/* store the default cipher strings inside the library */ +const char *OSSL_default_cipher_list(void); +const char *OSSL_default_ciphersuites(void); + +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +#define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +#define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +#define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +#define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ui.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ui.h new file mode 100644 index 00000000000000..901af471fd0b16 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/ui.h @@ -0,0 +1,409 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/ui.h.in + * + * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_UI_H +#define OPENSSL_UI_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_UI_H +#endif + +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include +#include +#include +#include + +/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifdef OPENSSL_NO_UI_CONSOLE +#define OPENSSL_NO_UI +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * All the following functions return -1 or NULL on error and in some cases + * (UI_process()) -2 if interrupted or in some other way cancelled. When + * everything is fine, they return 0, a positive value or a non-NULL pointer, + * all depending on their purpose. + */ + +/* Creators and destructor. */ +UI *UI_new(void); +UI *UI_new_method(const UI_METHOD *method); +void UI_free(UI *ui); + +/*- + The following functions are used to add strings to be printed and prompt + strings to prompt for data. The names are UI_{add,dup}__string + and UI_{add,dup}_input_boolean. + + UI_{add,dup}__string have the following meanings: + add add a text or prompt string. The pointers given to these + functions are used verbatim, no copying is done. + dup make a copy of the text or prompt string, then add the copy + to the collection of strings in the user interface. + + The function is a name for the functionality that the given + string shall be used for. It can be one of: + input use the string as data prompt. + verify use the string as verification prompt. This + is used to verify a previous input. + info use the string for informational output. + error use the string for error output. + Honestly, there's currently no difference between info and error for the + moment. + + UI_{add,dup}_input_boolean have the same semantics for "add" and "dup", + and are typically used when one wants to prompt for a yes/no response. + + All of the functions in this group take a UI and a prompt string. + The string input and verify addition functions also take a flag argument, + a buffer for the result to end up with, a minimum input size and a maximum + input size (the result buffer MUST be large enough to be able to contain + the maximum number of characters). Additionally, the verify addition + functions takes another buffer to compare the result against. + The boolean input functions take an action description string (which should + be safe to ignore if the expected user action is obvious, for example with + a dialog box with an OK button and a Cancel button), a string of acceptable + characters to mean OK and to mean Cancel. The two last strings are checked + to make sure they don't have common characters. Additionally, the same + flag argument as for the string input is taken, as well as a result buffer. + The result buffer is required to be at least one byte long. Depending on + the answer, the first character from the OK or the Cancel character strings + will be stored in the first byte of the result buffer. No NUL will be + added, so the result is *not* a string. + + On success, the all return an index of the added information. That index + is useful when retrieving results with UI_get0_result(). */ +int UI_add_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_dup_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_add_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_dup_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_add_info_string(UI *ui, const char *text); +int UI_dup_info_string(UI *ui, const char *text); +int UI_add_error_string(UI *ui, const char *text); +int UI_dup_error_string(UI *ui, const char *text); + +/* These are the possible flags. They can be or'ed together. */ +/* Use to have echoing of input */ +#define UI_INPUT_FLAG_ECHO 0x01 +/* + * Use a default password. Where that password is found is completely up to + * the application, it might for example be in the user data set with + * UI_add_user_data(). It is not recommended to have more than one input in + * each UI being marked with this flag, or the application might get + * confused. + */ +#define UI_INPUT_FLAG_DEFAULT_PWD 0x02 + +/*- + * The user of these routines may want to define flags of their own. The core + * UI won't look at those, but will pass them on to the method routines. They + * must use higher bits so they don't get confused with the UI bits above. + * UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use. A good + * example of use is this: + * + * #define MY_UI_FLAG1 (0x01 << UI_INPUT_FLAG_USER_BASE) + * + */ +#define UI_INPUT_FLAG_USER_BASE 16 + +/*- + * The following function helps construct a prompt. + * phrase_desc is a textual short description of the phrase to enter, + * for example "pass phrase", and + * object_name is the name of the object + * (which might be a card name or a file name) or NULL. + * The returned string shall always be allocated on the heap with + * OPENSSL_malloc(), and need to be free'd with OPENSSL_free(). + * + * If the ui_method doesn't contain a pointer to a user-defined prompt + * constructor, a default string is built, looking like this: + * + * "Enter {phrase_desc} for {object_name}:" + * + * So, if phrase_desc has the value "pass phrase" and object_name has + * the value "foo.key", the resulting string is: + * + * "Enter pass phrase for foo.key:" + */ +char *UI_construct_prompt(UI *ui_method, + const char *phrase_desc, const char *object_name); + +/* + * The following function is used to store a pointer to user-specific data. + * Any previous such pointer will be returned and replaced. + * + * For callback purposes, this function makes a lot more sense than using + * ex_data, since the latter requires that different parts of OpenSSL or + * applications share the same ex_data index. + * + * Note that the UI_OpenSSL() method completely ignores the user data. Other + * methods may not, however. + */ +void *UI_add_user_data(UI *ui, void *user_data); +/* + * Alternatively, this function is used to duplicate the user data. + * This uses the duplicator method function. The destroy function will + * be used to free the user data in this case. + */ +int UI_dup_user_data(UI *ui, void *user_data); +/* We need a user data retrieving function as well. */ +void *UI_get0_user_data(UI *ui); + +/* Return the result associated with a prompt given with the index i. */ +const char *UI_get0_result(UI *ui, int i); +int UI_get_result_length(UI *ui, int i); + +/* When all strings have been added, process the whole thing. */ +int UI_process(UI *ui); + +/* + * Give a user interface parameterised control commands. This can be used to + * send down an integer, a data pointer or a function pointer, as well as be + * used to get information from a UI. + */ +int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f)(void)); + +/* The commands */ +/* + * Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the + * OpenSSL error stack before printing any info or added error messages and + * before any prompting. + */ +#define UI_CTRL_PRINT_ERRORS 1 +/* + * Check if a UI_process() is possible to do again with the same instance of + * a user interface. This makes UI_ctrl() return 1 if it is redoable, and 0 + * if not. + */ +#define UI_CTRL_IS_REDOABLE 2 + +/* Some methods may use extra data */ +#define UI_set_app_data(s, arg) UI_set_ex_data(s, 0, arg) +#define UI_get_app_data(s) UI_get_ex_data(s, 0) + +#define UI_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, l, p, newf, dupf, freef) +int UI_set_ex_data(UI *r, int idx, void *arg); +void *UI_get_ex_data(const UI *r, int idx); + +/* Use specific methods instead of the built-in one */ +void UI_set_default_method(const UI_METHOD *meth); +const UI_METHOD *UI_get_default_method(void); +const UI_METHOD *UI_get_method(UI *ui); +const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth); + +#ifndef OPENSSL_NO_UI_CONSOLE + +/* The method with all the built-in thingies */ +UI_METHOD *UI_OpenSSL(void); + +#endif + +/* + * NULL method. Literally does nothing, but may serve as a placeholder + * to avoid internal default. + */ +const UI_METHOD *UI_null(void); + +/* ---------- For method writers ---------- */ +/*- + A method contains a number of functions that implement the low level + of the User Interface. The functions are: + + an opener This function starts a session, maybe by opening + a channel to a tty, or by opening a window. + a writer This function is called to write a given string, + maybe to the tty, maybe as a field label in a + window. + a flusher This function is called to flush everything that + has been output so far. It can be used to actually + display a dialog box after it has been built. + a reader This function is called to read a given prompt, + maybe from the tty, maybe from a field in a + window. Note that it's called with all string + structures, not only the prompt ones, so it must + check such things itself. + a closer This function closes the session, maybe by closing + the channel to the tty, or closing the window. + + All these functions are expected to return: + + 0 on error. + 1 on success. + -1 on out-of-band events, for example if some prompting has + been canceled (by pressing Ctrl-C, for example). This is + only checked when returned by the flusher or the reader. + + The way this is used, the opener is first called, then the writer for all + strings, then the flusher, then the reader for all strings and finally the + closer. Note that if you want to prompt from a terminal or other command + line interface, the best is to have the reader also write the prompts + instead of having the writer do it. If you want to prompt from a dialog + box, the writer can be used to build up the contents of the box, and the + flusher to actually display the box and run the event loop until all data + has been given, after which the reader only grabs the given data and puts + them back into the UI strings. + + All method functions take a UI as argument. Additionally, the writer and + the reader take a UI_STRING. +*/ + +/* + * The UI_STRING type is the data structure that contains all the needed info + * about a string or a prompt, including test data for a verification prompt. + */ +typedef struct ui_string_st UI_STRING; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(UI_STRING, UI_STRING, UI_STRING) +#define sk_UI_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_value(sk, idx) ((UI_STRING *)OPENSSL_sk_value(ossl_check_const_UI_STRING_sk_type(sk), (idx))) +#define sk_UI_STRING_new(cmp) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new(ossl_check_UI_STRING_compfunc_type(cmp))) +#define sk_UI_STRING_new_null() ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_null()) +#define sk_UI_STRING_new_reserve(cmp, n) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_reserve(ossl_check_UI_STRING_compfunc_type(cmp), (n))) +#define sk_UI_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_UI_STRING_sk_type(sk), (n)) +#define sk_UI_STRING_free(sk) OPENSSL_sk_free(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_delete(sk, i) ((UI_STRING *)OPENSSL_sk_delete(ossl_check_UI_STRING_sk_type(sk), (i))) +#define sk_UI_STRING_delete_ptr(sk, ptr) ((UI_STRING *)OPENSSL_sk_delete_ptr(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))) +#define sk_UI_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_pop(sk) ((UI_STRING *)OPENSSL_sk_pop(ossl_check_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_shift(sk) ((UI_STRING *)OPENSSL_sk_shift(ossl_check_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_UI_STRING_sk_type(sk),ossl_check_UI_STRING_freefunc_type(freefunc)) +#define sk_UI_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), (idx)) +#define sk_UI_STRING_set(sk, idx, ptr) ((UI_STRING *)OPENSSL_sk_set(ossl_check_UI_STRING_sk_type(sk), (idx), ossl_check_UI_STRING_type(ptr))) +#define sk_UI_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), pnum) +#define sk_UI_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_dup(sk) ((STACK_OF(UI_STRING) *)OPENSSL_sk_dup(ossl_check_const_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(UI_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_UI_STRING_sk_type(sk), ossl_check_UI_STRING_copyfunc_type(copyfunc), ossl_check_UI_STRING_freefunc_type(freefunc))) +#define sk_UI_STRING_set_cmp_func(sk, cmp) ((sk_UI_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * The different types of strings that are currently supported. This is only + * needed by method authors. + */ +enum UI_string_types { + UIT_NONE = 0, + UIT_PROMPT, /* Prompt for a string */ + UIT_VERIFY, /* Prompt for a string and verify */ + UIT_BOOLEAN, /* Prompt for a yes/no response */ + UIT_INFO, /* Send info to the user */ + UIT_ERROR /* Send an error message to the user */ +}; + +/* Create and manipulate methods */ +UI_METHOD *UI_create_method(const char *name); +void UI_destroy_method(UI_METHOD *ui_method); +int UI_method_set_opener(UI_METHOD *method, int (*opener)(UI *ui)); +int UI_method_set_writer(UI_METHOD *method, + int (*writer)(UI *ui, UI_STRING *uis)); +int UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui)); +int UI_method_set_reader(UI_METHOD *method, + int (*reader)(UI *ui, UI_STRING *uis)); +int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui)); +int UI_method_set_data_duplicator(UI_METHOD *method, + void *(*duplicator)(UI *ui, void *ui_data), + void (*destructor)(UI *ui, void *ui_data)); +int UI_method_set_prompt_constructor(UI_METHOD *method, + char *(*prompt_constructor)(UI *ui, + const char + *phrase_desc, + const char + *object_name)); +int UI_method_set_ex_data(UI_METHOD *method, int idx, void *data); +int (*UI_method_get_opener(const UI_METHOD *method))(UI *); +int (*UI_method_get_writer(const UI_METHOD *method))(UI *, UI_STRING *); +int (*UI_method_get_flusher(const UI_METHOD *method))(UI *); +int (*UI_method_get_reader(const UI_METHOD *method))(UI *, UI_STRING *); +int (*UI_method_get_closer(const UI_METHOD *method))(UI *); +char *(*UI_method_get_prompt_constructor(const UI_METHOD *method))(UI *, const char *, const char *); +void *(*UI_method_get_data_duplicator(const UI_METHOD *method))(UI *, void *); +void (*UI_method_get_data_destructor(const UI_METHOD *method))(UI *, void *); +const void *UI_method_get_ex_data(const UI_METHOD *method, int idx); + +/* + * The following functions are helpers for method writers to access relevant + * data from a UI_STRING. + */ + +/* Return type of the UI_STRING */ +enum UI_string_types UI_get_string_type(UI_STRING *uis); +/* Return input flags of the UI_STRING */ +int UI_get_input_flags(UI_STRING *uis); +/* Return the actual string to output (the prompt, info or error) */ +const char *UI_get0_output_string(UI_STRING *uis); +/* + * Return the optional action string to output (the boolean prompt + * instruction) + */ +const char *UI_get0_action_string(UI_STRING *uis); +/* Return the result of a prompt */ +const char *UI_get0_result_string(UI_STRING *uis); +int UI_get_result_string_length(UI_STRING *uis); +/* + * Return the string to test the result against. Only useful with verifies. + */ +const char *UI_get0_test_string(UI_STRING *uis); +/* Return the required minimum size of the result */ +int UI_get_result_minsize(UI_STRING *uis); +/* Return the required maximum size of the result */ +int UI_get_result_maxsize(UI_STRING *uis); +/* Set the result of a UI_STRING. */ +int UI_set_result(UI *ui, UI_STRING *uis, const char *result); +int UI_set_result_ex(UI *ui, UI_STRING *uis, const char *result, int len); + +/* A couple of popular utility functions */ +int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt, + int verify); +int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt, + int verify); +UI_METHOD *UI_UTIL_wrap_read_pem_callback(pem_password_cb *cb, int rwflag); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/x509.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/x509.h new file mode 100644 index 00000000000000..30681e4fb698aa --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/x509.h @@ -0,0 +1,1301 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509.h.in + * + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_H +#define OPENSSL_X509_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509_H +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#endif + +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Needed stacks for types defined in other headers */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME, X509_NAME, X509_NAME) +#define sk_X509_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_value(sk, idx) ((X509_NAME *)OPENSSL_sk_value(ossl_check_const_X509_NAME_sk_type(sk), (idx))) +#define sk_X509_NAME_new(cmp) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new(ossl_check_X509_NAME_compfunc_type(cmp))) +#define sk_X509_NAME_new_null() ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_null()) +#define sk_X509_NAME_new_reserve(cmp, n) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_compfunc_type(cmp), (n))) +#define sk_X509_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_sk_type(sk), (n)) +#define sk_X509_NAME_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_delete(sk, i) ((X509_NAME *)OPENSSL_sk_delete(ossl_check_X509_NAME_sk_type(sk), (i))) +#define sk_X509_NAME_delete_ptr(sk, ptr) ((X509_NAME *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr))) +#define sk_X509_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_pop(sk) ((X509_NAME *)OPENSSL_sk_pop(ossl_check_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_shift(sk) ((X509_NAME *)OPENSSL_sk_shift(ossl_check_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_sk_type(sk),ossl_check_X509_NAME_freefunc_type(freefunc)) +#define sk_X509_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), (idx)) +#define sk_X509_NAME_set(sk, idx, ptr) ((X509_NAME *)OPENSSL_sk_set(ossl_check_X509_NAME_sk_type(sk), (idx), ossl_check_X509_NAME_type(ptr))) +#define sk_X509_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), pnum) +#define sk_X509_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_dup(sk) ((STACK_OF(X509_NAME) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_sk_type(sk), ossl_check_X509_NAME_copyfunc_type(copyfunc), ossl_check_X509_NAME_freefunc_type(freefunc))) +#define sk_X509_NAME_set_cmp_func(sk, cmp) ((sk_X509_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509, X509, X509) +#define sk_X509_num(sk) OPENSSL_sk_num(ossl_check_const_X509_sk_type(sk)) +#define sk_X509_value(sk, idx) ((X509 *)OPENSSL_sk_value(ossl_check_const_X509_sk_type(sk), (idx))) +#define sk_X509_new(cmp) ((STACK_OF(X509) *)OPENSSL_sk_new(ossl_check_X509_compfunc_type(cmp))) +#define sk_X509_new_null() ((STACK_OF(X509) *)OPENSSL_sk_new_null()) +#define sk_X509_new_reserve(cmp, n) ((STACK_OF(X509) *)OPENSSL_sk_new_reserve(ossl_check_X509_compfunc_type(cmp), (n))) +#define sk_X509_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_sk_type(sk), (n)) +#define sk_X509_free(sk) OPENSSL_sk_free(ossl_check_X509_sk_type(sk)) +#define sk_X509_zero(sk) OPENSSL_sk_zero(ossl_check_X509_sk_type(sk)) +#define sk_X509_delete(sk, i) ((X509 *)OPENSSL_sk_delete(ossl_check_X509_sk_type(sk), (i))) +#define sk_X509_delete_ptr(sk, ptr) ((X509 *)OPENSSL_sk_delete_ptr(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr))) +#define sk_X509_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_pop(sk) ((X509 *)OPENSSL_sk_pop(ossl_check_X509_sk_type(sk))) +#define sk_X509_shift(sk) ((X509 *)OPENSSL_sk_shift(ossl_check_X509_sk_type(sk))) +#define sk_X509_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_sk_type(sk),ossl_check_X509_freefunc_type(freefunc)) +#define sk_X509_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), (idx)) +#define sk_X509_set(sk, idx, ptr) ((X509 *)OPENSSL_sk_set(ossl_check_X509_sk_type(sk), (idx), ossl_check_X509_type(ptr))) +#define sk_X509_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), pnum) +#define sk_X509_sort(sk) OPENSSL_sk_sort(ossl_check_X509_sk_type(sk)) +#define sk_X509_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_sk_type(sk)) +#define sk_X509_dup(sk) ((STACK_OF(X509) *)OPENSSL_sk_dup(ossl_check_const_X509_sk_type(sk))) +#define sk_X509_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_sk_type(sk), ossl_check_X509_copyfunc_type(copyfunc), ossl_check_X509_freefunc_type(freefunc))) +#define sk_X509_set_cmp_func(sk, cmp) ((sk_X509_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_sk_type(sk), ossl_check_X509_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_REVOKED, X509_REVOKED, X509_REVOKED) +#define sk_X509_REVOKED_num(sk) OPENSSL_sk_num(ossl_check_const_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_value(sk, idx) ((X509_REVOKED *)OPENSSL_sk_value(ossl_check_const_X509_REVOKED_sk_type(sk), (idx))) +#define sk_X509_REVOKED_new(cmp) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new(ossl_check_X509_REVOKED_compfunc_type(cmp))) +#define sk_X509_REVOKED_new_null() ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_null()) +#define sk_X509_REVOKED_new_reserve(cmp, n) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_reserve(ossl_check_X509_REVOKED_compfunc_type(cmp), (n))) +#define sk_X509_REVOKED_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_REVOKED_sk_type(sk), (n)) +#define sk_X509_REVOKED_free(sk) OPENSSL_sk_free(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_zero(sk) OPENSSL_sk_zero(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_delete(sk, i) ((X509_REVOKED *)OPENSSL_sk_delete(ossl_check_X509_REVOKED_sk_type(sk), (i))) +#define sk_X509_REVOKED_delete_ptr(sk, ptr) ((X509_REVOKED *)OPENSSL_sk_delete_ptr(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr))) +#define sk_X509_REVOKED_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_pop(sk) ((X509_REVOKED *)OPENSSL_sk_pop(ossl_check_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_shift(sk) ((X509_REVOKED *)OPENSSL_sk_shift(ossl_check_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_REVOKED_sk_type(sk),ossl_check_X509_REVOKED_freefunc_type(freefunc)) +#define sk_X509_REVOKED_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), (idx)) +#define sk_X509_REVOKED_set(sk, idx, ptr) ((X509_REVOKED *)OPENSSL_sk_set(ossl_check_X509_REVOKED_sk_type(sk), (idx), ossl_check_X509_REVOKED_type(ptr))) +#define sk_X509_REVOKED_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), pnum) +#define sk_X509_REVOKED_sort(sk) OPENSSL_sk_sort(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_dup(sk) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_dup(ossl_check_const_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_copyfunc_type(copyfunc), ossl_check_X509_REVOKED_freefunc_type(freefunc))) +#define sk_X509_REVOKED_set_cmp_func(sk, cmp) ((sk_X509_REVOKED_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) +#define sk_X509_CRL_num(sk) OPENSSL_sk_num(ossl_check_const_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_value(sk, idx) ((X509_CRL *)OPENSSL_sk_value(ossl_check_const_X509_CRL_sk_type(sk), (idx))) +#define sk_X509_CRL_new(cmp) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new(ossl_check_X509_CRL_compfunc_type(cmp))) +#define sk_X509_CRL_new_null() ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_null()) +#define sk_X509_CRL_new_reserve(cmp, n) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_reserve(ossl_check_X509_CRL_compfunc_type(cmp), (n))) +#define sk_X509_CRL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_CRL_sk_type(sk), (n)) +#define sk_X509_CRL_free(sk) OPENSSL_sk_free(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_zero(sk) OPENSSL_sk_zero(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_delete(sk, i) ((X509_CRL *)OPENSSL_sk_delete(ossl_check_X509_CRL_sk_type(sk), (i))) +#define sk_X509_CRL_delete_ptr(sk, ptr) ((X509_CRL *)OPENSSL_sk_delete_ptr(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr))) +#define sk_X509_CRL_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_pop(sk) ((X509_CRL *)OPENSSL_sk_pop(ossl_check_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_shift(sk) ((X509_CRL *)OPENSSL_sk_shift(ossl_check_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_CRL_sk_type(sk),ossl_check_X509_CRL_freefunc_type(freefunc)) +#define sk_X509_CRL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), (idx)) +#define sk_X509_CRL_set(sk, idx, ptr) ((X509_CRL *)OPENSSL_sk_set(ossl_check_X509_CRL_sk_type(sk), (idx), ossl_check_X509_CRL_type(ptr))) +#define sk_X509_CRL_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), pnum) +#define sk_X509_CRL_sort(sk) OPENSSL_sk_sort(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_dup(sk) ((STACK_OF(X509_CRL) *)OPENSSL_sk_dup(ossl_check_const_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_CRL) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_CRL_sk_type(sk), ossl_check_X509_CRL_copyfunc_type(copyfunc), ossl_check_X509_CRL_freefunc_type(freefunc))) +#define sk_X509_CRL_set_cmp_func(sk, cmp) ((sk_X509_CRL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_compfunc_type(cmp))) + +/* clang-format on */ + +/* Flags for X509_get_signature_info() */ +/* Signature info is valid */ +#define X509_SIG_INFO_VALID 0x1 +/* Signature is suitable for TLS use */ +#define X509_SIG_INFO_TLS 0x2 + +#define X509_FILETYPE_PEM 1 +#define X509_FILETYPE_ASN1 2 +#define X509_FILETYPE_DEFAULT 3 + +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +#define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +#define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +#define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +#define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +#define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +#define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +#define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +#define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +#define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +#ifndef OPENSSL_NO_DEPRECATED_3_4 +#define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +#endif + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */; + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +typedef struct X509_sig_st X509_SIG; + +typedef struct X509_name_entry_st X509_NAME_ENTRY; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME_ENTRY, X509_NAME_ENTRY, X509_NAME_ENTRY) +#define sk_X509_NAME_ENTRY_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_value(sk, idx) ((X509_NAME_ENTRY *)OPENSSL_sk_value(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), (idx))) +#define sk_X509_NAME_ENTRY_new(cmp) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) +#define sk_X509_NAME_ENTRY_new_null() ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_null()) +#define sk_X509_NAME_ENTRY_new_reserve(cmp, n) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp), (n))) +#define sk_X509_NAME_ENTRY_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_ENTRY_sk_type(sk), (n)) +#define sk_X509_NAME_ENTRY_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_delete(sk, i) ((X509_NAME_ENTRY *)OPENSSL_sk_delete(ossl_check_X509_NAME_ENTRY_sk_type(sk), (i))) +#define sk_X509_NAME_ENTRY_delete_ptr(sk, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr))) +#define sk_X509_NAME_ENTRY_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_pop(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_pop(ossl_check_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_shift(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_shift(ossl_check_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_ENTRY_sk_type(sk),ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc)) +#define sk_X509_NAME_ENTRY_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), (idx)) +#define sk_X509_NAME_ENTRY_set(sk, idx, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_set(ossl_check_X509_NAME_ENTRY_sk_type(sk), (idx), ossl_check_X509_NAME_ENTRY_type(ptr))) +#define sk_X509_NAME_ENTRY_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), pnum) +#define sk_X509_NAME_ENTRY_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_dup(sk) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_copyfunc_type(copyfunc), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc))) +#define sk_X509_NAME_ENTRY_set_cmp_func(sk, cmp) ((sk_X509_NAME_ENTRY_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) + +/* clang-format on */ + +#define X509_EX_V_NETSCAPE_HACK 0x8000 +#define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st X509_EXTENSION; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_EXTENSION, X509_EXTENSION, X509_EXTENSION) +#define sk_X509_EXTENSION_num(sk) OPENSSL_sk_num(ossl_check_const_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_value(sk, idx) ((X509_EXTENSION *)OPENSSL_sk_value(ossl_check_const_X509_EXTENSION_sk_type(sk), (idx))) +#define sk_X509_EXTENSION_new(cmp) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new(ossl_check_X509_EXTENSION_compfunc_type(cmp))) +#define sk_X509_EXTENSION_new_null() ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_null()) +#define sk_X509_EXTENSION_new_reserve(cmp, n) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_reserve(ossl_check_X509_EXTENSION_compfunc_type(cmp), (n))) +#define sk_X509_EXTENSION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_EXTENSION_sk_type(sk), (n)) +#define sk_X509_EXTENSION_free(sk) OPENSSL_sk_free(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_zero(sk) OPENSSL_sk_zero(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_delete(sk, i) ((X509_EXTENSION *)OPENSSL_sk_delete(ossl_check_X509_EXTENSION_sk_type(sk), (i))) +#define sk_X509_EXTENSION_delete_ptr(sk, ptr) ((X509_EXTENSION *)OPENSSL_sk_delete_ptr(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr))) +#define sk_X509_EXTENSION_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_pop(sk) ((X509_EXTENSION *)OPENSSL_sk_pop(ossl_check_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_shift(sk) ((X509_EXTENSION *)OPENSSL_sk_shift(ossl_check_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_EXTENSION_sk_type(sk),ossl_check_X509_EXTENSION_freefunc_type(freefunc)) +#define sk_X509_EXTENSION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), (idx)) +#define sk_X509_EXTENSION_set(sk, idx, ptr) ((X509_EXTENSION *)OPENSSL_sk_set(ossl_check_X509_EXTENSION_sk_type(sk), (idx), ossl_check_X509_EXTENSION_type(ptr))) +#define sk_X509_EXTENSION_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), pnum) +#define sk_X509_EXTENSION_sort(sk) OPENSSL_sk_sort(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_dup(sk) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_dup(ossl_check_const_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_copyfunc_type(copyfunc), ossl_check_X509_EXTENSION_freefunc_type(freefunc))) +#define sk_X509_EXTENSION_set_cmp_func(sk, cmp) ((sk_X509_EXTENSION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_compfunc_type(cmp))) + +/* clang-format on */ +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; +typedef struct x509_attributes_st X509_ATTRIBUTE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_ATTRIBUTE, X509_ATTRIBUTE, X509_ATTRIBUTE) +#define sk_X509_ATTRIBUTE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_value(sk, idx) ((X509_ATTRIBUTE *)OPENSSL_sk_value(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), (idx))) +#define sk_X509_ATTRIBUTE_new(cmp) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) +#define sk_X509_ATTRIBUTE_new_null() ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_null()) +#define sk_X509_ATTRIBUTE_new_reserve(cmp, n) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_reserve(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp), (n))) +#define sk_X509_ATTRIBUTE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ATTRIBUTE_sk_type(sk), (n)) +#define sk_X509_ATTRIBUTE_free(sk) OPENSSL_sk_free(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_delete(sk, i) ((X509_ATTRIBUTE *)OPENSSL_sk_delete(ossl_check_X509_ATTRIBUTE_sk_type(sk), (i))) +#define sk_X509_ATTRIBUTE_delete_ptr(sk, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_delete_ptr(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr))) +#define sk_X509_ATTRIBUTE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_pop(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_pop(ossl_check_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_shift(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_shift(ossl_check_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ATTRIBUTE_sk_type(sk),ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc)) +#define sk_X509_ATTRIBUTE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), (idx)) +#define sk_X509_ATTRIBUTE_set(sk, idx, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_set(ossl_check_X509_ATTRIBUTE_sk_type(sk), (idx), ossl_check_X509_ATTRIBUTE_type(ptr))) +#define sk_X509_ATTRIBUTE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), pnum) +#define sk_X509_ATTRIBUTE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_dup(sk) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_dup(ossl_check_const_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_copyfunc_type(copyfunc), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc))) +#define sk_X509_ATTRIBUTE_set_cmp_func(sk, cmp) ((sk_X509_ATTRIBUTE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct X509_req_info_st X509_REQ_INFO; +typedef struct X509_req_st X509_REQ; +typedef struct x509_cert_aux_st X509_CERT_AUX; +typedef struct x509_cinf_st X509_CINF; + +/* Flags for X509_print_ex() */ + +#define X509_FLAG_COMPAT 0 +#define X509_FLAG_NO_HEADER 1L +#define X509_FLAG_NO_VERSION (1L << 1) +#define X509_FLAG_NO_SERIAL (1L << 2) +#define X509_FLAG_NO_SIGNAME (1L << 3) +#define X509_FLAG_NO_ISSUER (1L << 4) +#define X509_FLAG_NO_VALIDITY (1L << 5) +#define X509_FLAG_NO_SUBJECT (1L << 6) +#define X509_FLAG_NO_PUBKEY (1L << 7) +#define X509_FLAG_NO_EXTENSIONS (1L << 8) +#define X509_FLAG_NO_SIGDUMP (1L << 9) +#define X509_FLAG_NO_AUX (1L << 10) +#define X509_FLAG_NO_ATTRIBUTES (1L << 11) +#define X509_FLAG_NO_IDS (1L << 12) +#define X509_FLAG_EXTENSIONS_ONLY_KID (1L << 13) + +/* Flags specific to X509_NAME_print_ex() */ + +/* The field separator information */ + +#define XN_FLAG_SEP_MASK (0xf << 16) + +#define XN_FLAG_COMPAT 0 /* Traditional; use old X509_NAME_print */ +#define XN_FLAG_SEP_COMMA_PLUS (1 << 16) /* RFC2253 ,+ */ +#define XN_FLAG_SEP_CPLUS_SPC (2 << 16) /* ,+ spaced: more readable */ +#define XN_FLAG_SEP_SPLUS_SPC (3 << 16) /* ;+ spaced */ +#define XN_FLAG_SEP_MULTILINE (4 << 16) /* One line per field */ + +#define XN_FLAG_DN_REV (1 << 20) /* Reverse DN order */ + +/* How the field name is shown */ + +#define XN_FLAG_FN_MASK (0x3 << 21) + +#define XN_FLAG_FN_SN 0 /* Object short name */ +#define XN_FLAG_FN_LN (1 << 21) /* Object long name */ +#define XN_FLAG_FN_OID (2 << 21) /* Always use OIDs */ +#define XN_FLAG_FN_NONE (3 << 21) /* No field names */ + +#define XN_FLAG_SPC_EQ (1 << 23) /* Put spaces round '=' */ + +/* + * This determines if we dump fields we don't recognise: RFC2253 requires + * this. + */ + +#define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) + +#define XN_FLAG_FN_ALIGN (1 << 25) /* Align field names to 20 \ + * characters */ + +/* Complete set of RFC2253 flags */ + +#define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | XN_FLAG_SEP_COMMA_PLUS | XN_FLAG_DN_REV | XN_FLAG_FN_SN | XN_FLAG_DUMP_UNKNOWN_FIELDS) + +/* readable oneline form */ + +#define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | ASN1_STRFLGS_ESC_QUOTE | XN_FLAG_SEP_CPLUS_SPC | XN_FLAG_SPC_EQ | XN_FLAG_FN_SN) + +/* readable multiline form */ + +#define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | ASN1_STRFLGS_ESC_MSB | XN_FLAG_SEP_MULTILINE | XN_FLAG_SPC_EQ | XN_FLAG_FN_LN | XN_FLAG_FN_ALIGN) + +typedef struct X509_crl_info_st X509_CRL_INFO; + +typedef struct private_key_st { + int version; + /* The PKCS#8 data types */ + X509_ALGOR *enc_algor; + ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ + /* When decrypted, the following will not be NULL */ + EVP_PKEY *dec_pkey; + /* used to encrypt and decrypt */ + int key_length; + char *key_data; + int key_free; /* true if we should auto free key_data */ + /* expanded version of 'enc_algor' */ + EVP_CIPHER_INFO cipher; +} X509_PKEY; + +typedef struct X509_info_st { + X509 *x509; + X509_CRL *crl; + X509_PKEY *x_pkey; + EVP_CIPHER_INFO enc_cipher; + int enc_len; + char *enc_data; +} X509_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_INFO, X509_INFO, X509_INFO) +#define sk_X509_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_value(sk, idx) ((X509_INFO *)OPENSSL_sk_value(ossl_check_const_X509_INFO_sk_type(sk), (idx))) +#define sk_X509_INFO_new(cmp) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new(ossl_check_X509_INFO_compfunc_type(cmp))) +#define sk_X509_INFO_new_null() ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_null()) +#define sk_X509_INFO_new_reserve(cmp, n) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_reserve(ossl_check_X509_INFO_compfunc_type(cmp), (n))) +#define sk_X509_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_INFO_sk_type(sk), (n)) +#define sk_X509_INFO_free(sk) OPENSSL_sk_free(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_delete(sk, i) ((X509_INFO *)OPENSSL_sk_delete(ossl_check_X509_INFO_sk_type(sk), (i))) +#define sk_X509_INFO_delete_ptr(sk, ptr) ((X509_INFO *)OPENSSL_sk_delete_ptr(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr))) +#define sk_X509_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_pop(sk) ((X509_INFO *)OPENSSL_sk_pop(ossl_check_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_shift(sk) ((X509_INFO *)OPENSSL_sk_shift(ossl_check_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_INFO_sk_type(sk),ossl_check_X509_INFO_freefunc_type(freefunc)) +#define sk_X509_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), (idx)) +#define sk_X509_INFO_set(sk, idx, ptr) ((X509_INFO *)OPENSSL_sk_set(ossl_check_X509_INFO_sk_type(sk), (idx), ossl_check_X509_INFO_type(ptr))) +#define sk_X509_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), pnum) +#define sk_X509_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_dup(sk) ((STACK_OF(X509_INFO) *)OPENSSL_sk_dup(ossl_check_const_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_INFO_sk_type(sk), ossl_check_X509_INFO_copyfunc_type(copyfunc), ossl_check_X509_INFO_freefunc_type(freefunc))) +#define sk_X509_INFO_set_cmp_func(sk, cmp) ((sk_X509_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * The next 2 structures and their 8 routines are used to manipulate Netscape's + * spki structures - useful if you are writing a CA web page + */ +typedef struct Netscape_spkac_st { + X509_PUBKEY *pubkey; + ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ +} NETSCAPE_SPKAC; + +typedef struct Netscape_spki_st { + NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ + X509_ALGOR sig_algor; + ASN1_BIT_STRING *signature; +} NETSCAPE_SPKI; + +/* Netscape certificate sequence structure */ +typedef struct Netscape_certificate_sequence { + ASN1_OBJECT *type; + STACK_OF(X509) *certs; +} NETSCAPE_CERT_SEQUENCE; + +/*- Unused (and iv length is wrong) +typedef struct CBCParameter_st + { + unsigned char iv[8]; + } CBC_PARAM; +*/ + +/* Password based encryption structure */ + +typedef struct PBEPARAM_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; +} PBEPARAM; + +/* Password based encryption V2 structures */ + +typedef struct PBE2PARAM_st { + X509_ALGOR *keyfunc; + X509_ALGOR *encryption; +} PBE2PARAM; + +typedef struct PBKDF2PARAM_st { + /* Usually OCTET STRING but could be anything */ + ASN1_TYPE *salt; + ASN1_INTEGER *iter; + ASN1_INTEGER *keylength; + X509_ALGOR *prf; +} PBKDF2PARAM; + +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +#ifndef OPENSSL_NO_SCRYPT +typedef struct SCRYPT_PARAMS_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *costParameter; + ASN1_INTEGER *blockSize; + ASN1_INTEGER *parallelizationParameter; + ASN1_INTEGER *keyLength; +} SCRYPT_PARAMS; +#endif + +#ifdef __cplusplus +} +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define X509_EXT_PACK_UNKNOWN 1 +#define X509_EXT_PACK_STRING 2 + +#define X509_extract_key(x) X509_get_pubkey(x) /*****/ +#define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +#define X509_name_cmp(a, b) X509_NAME_cmp((a), (b)) + +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init)(X509_CRL *crl), + int (*crl_free)(X509_CRL *crl), + int (*crl_lookup)(X509_CRL *crl, + X509_REVOKED **ret, + const ASN1_INTEGER *serial, + const X509_NAME *issuer), + int (*crl_verify)(X509_CRL *crl, + EVP_PKEY *pk)); +void X509_CRL_METHOD_free(X509_CRL_METHOD *m); + +void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); +void *X509_CRL_get_meth_data(X509_CRL *crl); + +const char *X509_verify_cert_error_string(long n); + +int X509_verify(X509 *a, EVP_PKEY *r); +int X509_self_signed(X509 *cert, int verify_signature); + +int X509_REQ_verify_ex(X509_REQ *a, EVP_PKEY *r, OSSL_LIB_CTX *libctx, + const char *propq); +int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); +int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); +int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); + +NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); +char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); +EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); +int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); + +int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); + +int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); +int X509_signature_print(BIO *bp, const X509_ALGOR *alg, + const ASN1_STRING *sig); + +int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); +int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); +int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); +int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); + +int X509_pubkey_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +ASN1_OCTET_STRING *X509_digest_sig(const X509 *cert, + EVP_MD **md_used, int *md_is_fallback); +int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); + +X509 *X509_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); +X509_CRL *X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#include /* OSSL_HTTP_REQ_CTX_nbio_d2i */ +#define X509_http_nbio(rctx, pcert) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcert, ASN1_ITEM_rptr(X509)) +#define X509_CRL_http_nbio(rctx, pcrl) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcrl, ASN1_ITEM_rptr(X509_CRL)) +#endif + +#ifndef OPENSSL_NO_STDIO +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, const X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, const X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, const X509_REQ *req); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_fp(FILE *fp, const DSA *dsa); +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_fp(FILE *fp, const DSA *dsa); +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_fp(FILE *fp, const EC_KEY *eckey); +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_fp(FILE *fp, const EC_KEY *eckey); +#endif /* OPENSSL_NO_EC */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, const X509_SIG *p8); +X509_PUBKEY *d2i_X509_PUBKEY_fp(FILE *fp, X509_PUBKEY **xpk); +int i2d_X509_PUBKEY_fp(FILE *fp, const X509_PUBKEY *xpk); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, const PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, const EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); +#endif + +X509 *d2i_X509_bio(BIO *bp, X509 **x509); +int i2d_X509_bio(BIO *bp, const X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, const X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, const X509_REQ *req); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_bio(BIO *bp, const DSA *dsa); +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_bio(BIO *bp, const DSA *dsa); +#endif +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_bio(BIO *bp, const EC_KEY *eckey); +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_bio(BIO *bp, const EC_KEY *eckey); +#endif /* OPENSSL_NO_EC */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, const X509_SIG *p8); +X509_PUBKEY *d2i_X509_PUBKEY_bio(BIO *bp, X509_PUBKEY **xpk); +int i2d_X509_PUBKEY_bio(BIO *bp, const X509_PUBKEY *xpk); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, const PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, const EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); + +DECLARE_ASN1_DUP_FUNCTION(X509) +DECLARE_ASN1_DUP_FUNCTION(X509_ALGOR) +DECLARE_ASN1_DUP_FUNCTION(X509_ATTRIBUTE) +DECLARE_ASN1_DUP_FUNCTION(X509_CRL) +DECLARE_ASN1_DUP_FUNCTION(X509_EXTENSION) +DECLARE_ASN1_DUP_FUNCTION(X509_PUBKEY) +DECLARE_ASN1_DUP_FUNCTION(X509_REQ) +DECLARE_ASN1_DUP_FUNCTION(X509_REVOKED) +int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, + void *pval); +void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype, + const void **ppval, const X509_ALGOR *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); +int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); +int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src); + +DECLARE_ASN1_DUP_FUNCTION(X509_NAME) +DECLARE_ASN1_DUP_FUNCTION(X509_NAME_ENTRY) + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +int X509_cmp_timeframe(const X509_VERIFY_PARAM *vpm, + const ASN1_TIME *start, const ASN1_TIME *end); +ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); +ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, + int offset_day, long offset_sec, time_t *t); +ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); + +const char *X509_get_default_cert_area(void); +const char *X509_get_default_cert_dir(void); +const char *X509_get_default_cert_file(void); +const char *X509_get_default_cert_dir_env(void); +const char *X509_get_default_cert_file_env(void); +const char *X509_get_default_private_dir(void); + +X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); + +DECLARE_ASN1_FUNCTIONS(X509_ALGOR) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) +DECLARE_ASN1_FUNCTIONS(X509_VAL) + +DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) + +X509_PUBKEY *X509_PUBKEY_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get0(const X509_PUBKEY *key); +EVP_PKEY *X509_PUBKEY_get(const X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +long X509_get_pathlen(X509 *x); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(EVP_PKEY, PUBKEY) +EVP_PKEY *d2i_PUBKEY_ex(EVP_PKEY **a, const unsigned char **pp, long length, + OSSL_LIB_CTX *libctx, const char *propq); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSA_PUBKEY) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, DSA, DSA_PUBKEY) +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, EC_KEY, EC_PUBKEY) +#endif +#endif + +DECLARE_ASN1_FUNCTIONS(X509_SIG) +void X509_SIG_get0(const X509_SIG *sig, const X509_ALGOR **palg, + const ASN1_OCTET_STRING **pdigest); +void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **palg, + ASN1_OCTET_STRING **pdigest); + +DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) +DECLARE_ASN1_FUNCTIONS(X509_REQ) +X509_REQ *X509_REQ_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) +X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); + +DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) + +DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) + +DECLARE_ASN1_FUNCTIONS(X509_NAME) + +int X509_NAME_set(X509_NAME **xn, const X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) +DECLARE_ASN1_FUNCTIONS(X509) +X509 *X509_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) + +#define X509_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509, l, p, newf, dupf, freef) +int X509_set_ex_data(X509 *r, int idx, void *arg); +void *X509_get_ex_data(const X509 *r, int idx); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(X509, X509_AUX) + +int i2d_re_X509_tbs(X509 *x, unsigned char **pp); + +int X509_SIG_INFO_get(const X509_SIG_INFO *siginf, int *mdnid, int *pknid, + int *secbits, uint32_t *flags); +void X509_SIG_INFO_set(X509_SIG_INFO *siginf, int mdnid, int pknid, + int secbits, uint32_t flags); + +int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits, + uint32_t *flags); + +void X509_get0_signature(const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg, const X509 *x); +int X509_get_signature_nid(const X509 *x); + +void X509_set0_distinguishing_id(X509 *x, ASN1_OCTET_STRING *d_id); +ASN1_OCTET_STRING *X509_get0_distinguishing_id(X509 *x); +void X509_REQ_set0_distinguishing_id(X509_REQ *x, ASN1_OCTET_STRING *d_id); +ASN1_OCTET_STRING *X509_REQ_get0_distinguishing_id(X509_REQ *x); + +int X509_alias_set1(X509 *x, const unsigned char *name, int len); +int X509_keyid_set1(X509 *x, const unsigned char *id, int len); +unsigned char *X509_alias_get0(X509 *x, int *len); +unsigned char *X509_keyid_get0(X509 *x, int *len); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) +X509_CRL *X509_CRL_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, const ASN1_INTEGER *serial); +int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); + +X509_PKEY *X509_PKEY_new(void); +void X509_PKEY_free(X509_PKEY *a); + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) + +X509_INFO *X509_INFO_new(void); +void X509_INFO_free(X509_INFO *a); +char *X509_NAME_oneline(const X509_NAME *a, char *buf, int size); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); +OSSL_DEPRECATEDIN_3_0 +int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, X509_ALGOR *algor2, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey, + const EVP_MD *type); +#endif +int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, + unsigned char *md, unsigned int *len); +int ASN1_item_verify(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + EVP_PKEY *pkey); +int ASN1_item_verify_ctx(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + EVP_MD_CTX *ctx); +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2, + ASN1_BIT_STRING *signature, const void *data, + EVP_PKEY *pkey, const EVP_MD *md); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + const void *data, EVP_MD_CTX *ctx); + +#define X509_VERSION_1 0 +#define X509_VERSION_2 1 +#define X509_VERSION_3 2 + +long X509_get_version(const X509 *x); +int X509_set_version(X509 *x, long version); +int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); +ASN1_INTEGER *X509_get_serialNumber(X509 *x); +const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x); +int X509_set_issuer_name(X509 *x, const X509_NAME *name); +X509_NAME *X509_get_issuer_name(const X509 *a); +int X509_set_subject_name(X509 *x, const X509_NAME *name); +X509_NAME *X509_get_subject_name(const X509 *a); +const ASN1_TIME *X509_get0_notBefore(const X509 *x); +ASN1_TIME *X509_getm_notBefore(const X509 *x); +int X509_set1_notBefore(X509 *x, const ASN1_TIME *tm); +const ASN1_TIME *X509_get0_notAfter(const X509 *x); +ASN1_TIME *X509_getm_notAfter(const X509 *x); +int X509_set1_notAfter(X509 *x, const ASN1_TIME *tm); +int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); +int X509_up_ref(X509 *x); +int X509_get_signature_type(const X509 *x); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_get_notBefore X509_getm_notBefore +#define X509_get_notAfter X509_getm_notAfter +#define X509_set_notBefore X509_set1_notBefore +#define X509_set_notAfter X509_set1_notAfter +#endif + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x), &buf) + */ +X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x); +const STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x); +void X509_get0_uids(const X509 *x, const ASN1_BIT_STRING **piuid, + const ASN1_BIT_STRING **psuid); +const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x); + +EVP_PKEY *X509_get0_pubkey(const X509 *x); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); + +#define X509_REQ_VERSION_1 0 + +long X509_REQ_get_version(const X509_REQ *req); +int X509_REQ_set_version(X509_REQ *x, long version); +X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req); +int X509_REQ_set_subject_name(X509_REQ *req, const X509_NAME *name); +void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +void X509_REQ_set0_signature(X509_REQ *req, ASN1_BIT_STRING *psig); +int X509_REQ_set1_signature_algo(X509_REQ *req, X509_ALGOR *palg); +int X509_REQ_get_signature_nid(const X509_REQ *req); +int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); +X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); +int X509_REQ_extension_nid(int nid); +int *X509_REQ_get_extension_nids(void); +void X509_REQ_set_extension_nids(int *nids); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, + const STACK_OF(X509_EXTENSION) *exts, int nid); +int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); +int X509_REQ_get_attr_count(const X509_REQ *req); +int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); +int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); +X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); +int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); +int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_NID(X509_REQ *req, + int nid, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_txt(X509_REQ *req, + const char *attrname, int type, + const unsigned char *bytes, int len); + +#define X509_CRL_VERSION_1 0 +#define X509_CRL_VERSION_2 1 + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, const X509_NAME *name); +int X509_CRL_set1_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set1_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_sort(X509_CRL *crl); +int X509_CRL_up_ref(X509_CRL *crl); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate +#define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate +#endif + +long X509_CRL_get_version(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl); +OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl); +#endif +X509_NAME *X509_CRL_get_issuer(const X509_CRL *crl); +const STACK_OF(X509_EXTENSION) *X509_CRL_get0_extensions(const X509_CRL *crl); +STACK_OF(X509_REVOKED) *X509_CRL_get_REVOKED(X509_CRL *crl); +void X509_CRL_get0_signature(const X509_CRL *crl, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_CRL_get_signature_nid(const X509_CRL *crl); +int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp); + +const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(const X509_REVOKED *x); +int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); +const ASN1_TIME *X509_REVOKED_get0_revocationDate(const X509_REVOKED *x); +int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); +const STACK_OF(X509_EXTENSION) * +X509_REVOKED_get0_extensions(const X509_REVOKED *r); + +X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, + EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); + +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); + +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); +int X509_chain_check_suiteb(int *perror_depth, + X509 *x, STACK_OF(X509) *chain, + unsigned long flags); +int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); +STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); + +int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_and_serial_hash(X509 *a); + +int X509_issuer_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_name_hash(X509 *a); + +int X509_subject_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_subject_name_hash(X509 *x); + +#ifndef OPENSSL_NO_MD5 +unsigned long X509_issuer_name_hash_old(X509 *a); +unsigned long X509_subject_name_hash_old(X509 *x); +#endif + +#define X509_ADD_FLAG_DEFAULT 0 +#define X509_ADD_FLAG_UP_REF 0x1 +#define X509_ADD_FLAG_PREPEND 0x2 +#define X509_ADD_FLAG_NO_DUP 0x4 +#define X509_ADD_FLAG_NO_SS 0x8 +int X509_add_cert(STACK_OF(X509) *sk, X509 *cert, int flags); +int X509_add_certs(STACK_OF(X509) *sk, STACK_OF(X509) *certs, int flags); + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define X509_NAME_hash(x) X509_NAME_hash_ex(x, NULL, NULL, NULL) +OSSL_DEPRECATEDIN_3_0 int X509_certificate_type(const X509 *x, + const EVP_PKEY *pubkey); +#endif +unsigned long X509_NAME_hash_ex(const X509_NAME *x, OSSL_LIB_CTX *libctx, + const char *propq, int *ok); +unsigned long X509_NAME_hash_old(const X509_NAME *x); + +int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); +int X509_aux_print(BIO *out, X509 *x, int indent); +#ifndef OPENSSL_NO_STDIO +int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print_fp(FILE *bp, X509 *x); +int X509_CRL_print_fp(FILE *bp, X509_CRL *x); +int X509_REQ_print_fp(FILE *bp, X509_REQ *req); +int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent, + unsigned long flags); +#endif + +int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent, + unsigned long flags); +int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print(BIO *bp, X509 *x); +int X509_ocspid_print(BIO *bp, X509 *x); +int X509_CRL_print_ex(BIO *out, X509_CRL *x, unsigned long nmflag); +int X509_CRL_print(BIO *bp, X509_CRL *x); +int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, + unsigned long cflag); +int X509_REQ_print(BIO *bp, X509_REQ *req); + +int X509_NAME_entry_count(const X509_NAME *name); +int X509_NAME_get_text_by_NID(const X509_NAME *name, int nid, + char *buf, int len); +int X509_NAME_get_text_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj, + char *buf, int len); + +/* + * NOTE: you should be passing -1, not 0 as lastpos. The functions that use + * lastpos, search after that position on. + */ +int X509_NAME_get_index_by_NID(const X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj, + int lastpos); +X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc); +X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); +int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, + int loc, int set); +int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len, int loc, + int set); +int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, + const char *field, int type, + const unsigned char *bytes, + int len); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, + int type, + const unsigned char *bytes, + int len); +int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, + int len); +int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj); +int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, + const unsigned char *bytes, int len); +ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne); +ASN1_STRING *X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne); +int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne); + +int X509_NAME_get0_der(const X509_NAME *nm, const unsigned char **pder, + size_t *pderlen); + +int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); +int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, + int nid, int lastpos); +int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, + const ASN1_OBJECT *obj, int lastpos); +int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, + int crit, int lastpos); +X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); +X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, + X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); + +int X509_get_ext_count(const X509 *x); +int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(const X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(const X509 *x, int loc); +X509_EXTENSION *X509_delete_ext(X509 *x, int loc); +int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); +void *X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx); +int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_CRL_get_ext_count(const X509_CRL *x); +int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(const X509_CRL *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc); +X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); +int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); +void *X509_CRL_get_ext_d2i(const X509_CRL *x, int nid, int *crit, int *idx); +int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_REVOKED_get_ext_count(const X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x, int crit, + int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x, int loc); +X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); +int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); +void *X509_REVOKED_get_ext_d2i(const X509_REVOKED *x, int nid, int *crit, + int *idx); +int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, + unsigned long flags); + +X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, + int nid, int crit, + ASN1_OCTET_STRING *data); +X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, + const ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj); +int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); +int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); +ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); +ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); +int X509_EXTENSION_get_critical(const X509_EXTENSION *ex); + +int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); +int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, + int lastpos); +int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); +X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, + X509_ATTRIBUTE *attr); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) + **x, + const ASN1_OBJECT *obj, + int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) + **x, + int nid, int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) + **x, + const char *attrname, + int type, + const unsigned char *bytes, + int len); +void *X509at_get0_data_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *x, + const ASN1_OBJECT *obj, int lastpos, int type); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, + const ASN1_OBJECT *obj, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, + const char *atrname, int type, + const unsigned char *bytes, + int len); +int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); +int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, + const void *data, int len); +void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, + void *data); +int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr); +ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); +ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); + +int EVP_PKEY_get_attr_count(const EVP_PKEY *key); +int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); +int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); +X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); +int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); +int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, + int nid, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, + const char *attrname, int type, + const unsigned char *bytes, int len); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, const X509_NAME *name, + const ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) +#endif + +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen); +int PKCS5_pbe_set0_algor_ex(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen, + OSSL_LIB_CTX *libctx); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe_set_ex(int alg, int iter, + const unsigned char *salt, int saltlen, + OSSL_LIB_CTX *libctx); + +X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid); +X509_ALGOR *PKCS5_pbe2_set_iv_ex(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid, + OSSL_LIB_CTX *libctx); + +#ifndef OPENSSL_NO_SCRYPT +X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher, + const unsigned char *salt, int saltlen, + unsigned char *aiv, uint64_t N, uint64_t r, + uint64_t p); +#endif + +X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen); +X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen, + OSSL_LIB_CTX *libctx); + +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); +EVP_PKEY *EVP_PKCS82PKEY_ex(const PKCS8_PRIV_KEY_INFO *p8, OSSL_LIB_CTX *libctx, + const char *propq); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(const EVP_PKEY *pkey); + +int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, + int version, int ptype, void *pval, + unsigned char *penc, int penclen); +int PKCS8_pkey_get0(const ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + const X509_ALGOR **pa, const PKCS8_PRIV_KEY_INFO *p8); + +const STACK_OF(X509_ATTRIBUTE) * +PKCS8_pkey_get0_attrs(const PKCS8_PRIV_KEY_INFO *p8); +int PKCS8_pkey_add1_attr(PKCS8_PRIV_KEY_INFO *p8, X509_ATTRIBUTE *attr); +int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, + const unsigned char *bytes, int len); +int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, + int type, const unsigned char *bytes, int len); + +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); +int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, + int ptype, void *pval, + unsigned char *penc, int penclen); +int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, const X509_PUBKEY *pub); +int X509_PUBKEY_eq(const X509_PUBKEY *a, const X509_PUBKEY *b); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/x509_acert.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..ed45c1e9184bb0 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/x509_acert.h @@ -0,0 +1,312 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_ACERT_H +#define OPENSSL_X509_ACERT_H +#pragma once + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +#ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +#endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +#define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO *X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +#define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +#define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +#define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +#define OSSL_IETFAS_OCTETS 0 +#define OSSL_IETFAS_OID 1 +#define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +#define OSSL_TGT_TARGET_NAME 0 +#define OSSL_TGT_TARGET_GROUP 1 +#define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/x509_vfy.h new file mode 100644 index 00000000000000..22e713f1ec3d7d --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/x509_vfy.h @@ -0,0 +1,904 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_vfy.h.in + * + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_VFY_H +#define OPENSSL_X509_VFY_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509_VFY_H +#endif + +/* + * Protect against recursion, x509.h and x509_vfy.h each include the other. + */ +#ifndef OPENSSL_X509_H +#include +#endif + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +SSL_CTX -> X509_STORE + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + +SSL -> X509_STORE_CTX + ->X509_STORE + +The X509_STORE holds the tables etc for verification stuff. +A X509_STORE_CTX is used while validating a single certificate. +The X509_STORE has X509_LOOKUPs for looking up certs. +The X509_STORE then calls a function to actually verify the +certificate chain. +*/ + +typedef enum { + X509_LU_NONE = 0, + X509_LU_X509, + X509_LU_CRL +} X509_LOOKUP_TYPE; + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_LU_RETRY -1 +#define X509_LU_FAIL 0 +#endif + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_LOOKUP, X509_LOOKUP, X509_LOOKUP) +#define sk_X509_LOOKUP_num(sk) OPENSSL_sk_num(ossl_check_const_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_value(sk, idx) ((X509_LOOKUP *)OPENSSL_sk_value(ossl_check_const_X509_LOOKUP_sk_type(sk), (idx))) +#define sk_X509_LOOKUP_new(cmp) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new(ossl_check_X509_LOOKUP_compfunc_type(cmp))) +#define sk_X509_LOOKUP_new_null() ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_null()) +#define sk_X509_LOOKUP_new_reserve(cmp, n) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_reserve(ossl_check_X509_LOOKUP_compfunc_type(cmp), (n))) +#define sk_X509_LOOKUP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_LOOKUP_sk_type(sk), (n)) +#define sk_X509_LOOKUP_free(sk) OPENSSL_sk_free(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_zero(sk) OPENSSL_sk_zero(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_delete(sk, i) ((X509_LOOKUP *)OPENSSL_sk_delete(ossl_check_X509_LOOKUP_sk_type(sk), (i))) +#define sk_X509_LOOKUP_delete_ptr(sk, ptr) ((X509_LOOKUP *)OPENSSL_sk_delete_ptr(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr))) +#define sk_X509_LOOKUP_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_pop(sk) ((X509_LOOKUP *)OPENSSL_sk_pop(ossl_check_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_shift(sk) ((X509_LOOKUP *)OPENSSL_sk_shift(ossl_check_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_LOOKUP_sk_type(sk),ossl_check_X509_LOOKUP_freefunc_type(freefunc)) +#define sk_X509_LOOKUP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), (idx)) +#define sk_X509_LOOKUP_set(sk, idx, ptr) ((X509_LOOKUP *)OPENSSL_sk_set(ossl_check_X509_LOOKUP_sk_type(sk), (idx), ossl_check_X509_LOOKUP_type(ptr))) +#define sk_X509_LOOKUP_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), pnum) +#define sk_X509_LOOKUP_sort(sk) OPENSSL_sk_sort(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_dup(sk) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_dup(ossl_check_const_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_copyfunc_type(copyfunc), ossl_check_X509_LOOKUP_freefunc_type(freefunc))) +#define sk_X509_LOOKUP_set_cmp_func(sk, cmp) ((sk_X509_LOOKUP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_OBJECT, X509_OBJECT, X509_OBJECT) +#define sk_X509_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_value(sk, idx) ((X509_OBJECT *)OPENSSL_sk_value(ossl_check_const_X509_OBJECT_sk_type(sk), (idx))) +#define sk_X509_OBJECT_new(cmp) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new(ossl_check_X509_OBJECT_compfunc_type(cmp))) +#define sk_X509_OBJECT_new_null() ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_null()) +#define sk_X509_OBJECT_new_reserve(cmp, n) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_X509_OBJECT_compfunc_type(cmp), (n))) +#define sk_X509_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_OBJECT_sk_type(sk), (n)) +#define sk_X509_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_delete(sk, i) ((X509_OBJECT *)OPENSSL_sk_delete(ossl_check_X509_OBJECT_sk_type(sk), (i))) +#define sk_X509_OBJECT_delete_ptr(sk, ptr) ((X509_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr))) +#define sk_X509_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_pop(sk) ((X509_OBJECT *)OPENSSL_sk_pop(ossl_check_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_shift(sk) ((X509_OBJECT *)OPENSSL_sk_shift(ossl_check_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_OBJECT_sk_type(sk),ossl_check_X509_OBJECT_freefunc_type(freefunc)) +#define sk_X509_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), (idx)) +#define sk_X509_OBJECT_set(sk, idx, ptr) ((X509_OBJECT *)OPENSSL_sk_set(ossl_check_X509_OBJECT_sk_type(sk), (idx), ossl_check_X509_OBJECT_type(ptr))) +#define sk_X509_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), pnum) +#define sk_X509_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_dup(sk) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_copyfunc_type(copyfunc), ossl_check_X509_OBJECT_freefunc_type(freefunc))) +#define sk_X509_OBJECT_set_cmp_func(sk, cmp) ((sk_X509_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_VERIFY_PARAM, X509_VERIFY_PARAM, X509_VERIFY_PARAM) +#define sk_X509_VERIFY_PARAM_num(sk) OPENSSL_sk_num(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_value(sk, idx) ((X509_VERIFY_PARAM *)OPENSSL_sk_value(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), (idx))) +#define sk_X509_VERIFY_PARAM_new(cmp) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) +#define sk_X509_VERIFY_PARAM_new_null() ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_null()) +#define sk_X509_VERIFY_PARAM_new_reserve(cmp, n) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_reserve(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp), (n))) +#define sk_X509_VERIFY_PARAM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (n)) +#define sk_X509_VERIFY_PARAM_free(sk) OPENSSL_sk_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_zero(sk) OPENSSL_sk_zero(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_delete(sk, i) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (i))) +#define sk_X509_VERIFY_PARAM_delete_ptr(sk, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete_ptr(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr))) +#define sk_X509_VERIFY_PARAM_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_pop(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_pop(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_shift(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_shift(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk),ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc)) +#define sk_X509_VERIFY_PARAM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), (idx)) +#define sk_X509_VERIFY_PARAM_set(sk, idx, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_set(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (idx), ossl_check_X509_VERIFY_PARAM_type(ptr))) +#define sk_X509_VERIFY_PARAM_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), pnum) +#define sk_X509_VERIFY_PARAM_sort(sk) OPENSSL_sk_sort(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_dup(sk) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_dup(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_copyfunc_type(copyfunc), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc))) +#define sk_X509_VERIFY_PARAM_set_cmp_func(sk, cmp) ((sk_X509_VERIFY_PARAM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) + +/* clang-format on */ + +/* This is used for a table of trust checking functions */ +typedef struct x509_trust_st { + int trust; + int flags; + int (*check_trust)(struct x509_trust_st *, X509 *, int); + char *name; + int arg1; + void *arg2; +} X509_TRUST; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_TRUST, X509_TRUST, X509_TRUST) +#define sk_X509_TRUST_num(sk) OPENSSL_sk_num(ossl_check_const_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_value(sk, idx) ((X509_TRUST *)OPENSSL_sk_value(ossl_check_const_X509_TRUST_sk_type(sk), (idx))) +#define sk_X509_TRUST_new(cmp) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new(ossl_check_X509_TRUST_compfunc_type(cmp))) +#define sk_X509_TRUST_new_null() ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_null()) +#define sk_X509_TRUST_new_reserve(cmp, n) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_reserve(ossl_check_X509_TRUST_compfunc_type(cmp), (n))) +#define sk_X509_TRUST_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_TRUST_sk_type(sk), (n)) +#define sk_X509_TRUST_free(sk) OPENSSL_sk_free(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_zero(sk) OPENSSL_sk_zero(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_delete(sk, i) ((X509_TRUST *)OPENSSL_sk_delete(ossl_check_X509_TRUST_sk_type(sk), (i))) +#define sk_X509_TRUST_delete_ptr(sk, ptr) ((X509_TRUST *)OPENSSL_sk_delete_ptr(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr))) +#define sk_X509_TRUST_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_pop(sk) ((X509_TRUST *)OPENSSL_sk_pop(ossl_check_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_shift(sk) ((X509_TRUST *)OPENSSL_sk_shift(ossl_check_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_TRUST_sk_type(sk),ossl_check_X509_TRUST_freefunc_type(freefunc)) +#define sk_X509_TRUST_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), (idx)) +#define sk_X509_TRUST_set(sk, idx, ptr) ((X509_TRUST *)OPENSSL_sk_set(ossl_check_X509_TRUST_sk_type(sk), (idx), ossl_check_X509_TRUST_type(ptr))) +#define sk_X509_TRUST_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), pnum) +#define sk_X509_TRUST_sort(sk) OPENSSL_sk_sort(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_dup(sk) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_dup(ossl_check_const_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_copyfunc_type(copyfunc), ossl_check_X509_TRUST_freefunc_type(freefunc))) +#define sk_X509_TRUST_set_cmp_func(sk, cmp) ((sk_X509_TRUST_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_compfunc_type(cmp))) + +/* clang-format on */ + +/* standard trust ids */ +#define X509_TRUST_DEFAULT 0 /* Only valid in purpose settings */ +#define X509_TRUST_COMPAT 1 +#define X509_TRUST_SSL_CLIENT 2 +#define X509_TRUST_SSL_SERVER 3 +#define X509_TRUST_EMAIL 4 +#define X509_TRUST_OBJECT_SIGN 5 +#define X509_TRUST_OCSP_SIGN 6 +#define X509_TRUST_OCSP_REQUEST 7 +#define X509_TRUST_TSA 8 +/* Keep these up to date! */ +#define X509_TRUST_MIN 1 +#define X509_TRUST_MAX 8 + +/* trust_flags values */ +#define X509_TRUST_DYNAMIC (1U << 0) +#define X509_TRUST_DYNAMIC_NAME (1U << 1) +/* No compat trust if self-signed, preempts "DO_SS" */ +#define X509_TRUST_NO_SS_COMPAT (1U << 2) +/* Compat trust if no explicit accepted trust EKUs */ +#define X509_TRUST_DO_SS_COMPAT (1U << 3) +/* Accept "anyEKU" as a wildcard rejection OID and as a wildcard trust OID */ +#define X509_TRUST_OK_ANY_EKU (1U << 4) + +/* check_trust return codes */ +#define X509_TRUST_TRUSTED 1 +#define X509_TRUST_REJECTED 2 +#define X509_TRUST_UNTRUSTED 3 + +int X509_TRUST_set(int *t, int trust); +int X509_TRUST_get_count(void); +X509_TRUST *X509_TRUST_get0(int idx); +int X509_TRUST_get_by_id(int id); +int X509_TRUST_add(int id, int flags, int (*ck)(X509_TRUST *, X509 *, int), + const char *name, int arg1, void *arg2); +void X509_TRUST_cleanup(void); +int X509_TRUST_get_flags(const X509_TRUST *xp); +char *X509_TRUST_get0_name(const X509_TRUST *xp); +int X509_TRUST_get_trust(const X509_TRUST *xp); + +int X509_trusted(const X509 *x); +int X509_add1_trust_object(X509 *x, const ASN1_OBJECT *obj); +int X509_add1_reject_object(X509 *x, const ASN1_OBJECT *obj); +void X509_trust_clear(X509 *x); +void X509_reject_clear(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_trust_objects(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_reject_objects(X509 *x); + +int (*X509_TRUST_set_default(int (*trust)(int, X509 *, int)))(int, X509 *, + int); +int X509_check_trust(X509 *x, int id, int flags); + +int X509_verify_cert(X509_STORE_CTX *ctx); +int X509_STORE_CTX_verify(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_build_chain(X509 *target, STACK_OF(X509) *certs, + X509_STORE *store, int with_self_signed, + OSSL_LIB_CTX *libctx, const char *propq); + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); +int X509_STORE_CTX_print_verify_cb(int ok, X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer, + X509_STORE_CTX *ctx, X509 *x); +typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx, + X509 *x, X509 *issuer); +typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL **crl, X509 *x); +typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl); +typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL *crl, X509 *x); +typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx); +typedef STACK_OF(X509) + *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx, + const X509_NAME *nm); +typedef STACK_OF(X509_CRL) + *(*X509_STORE_CTX_lookup_crls_fn)(const X509_STORE_CTX *ctx, + const X509_NAME *nm); +typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx); + +void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); + +#define X509_STORE_CTX_set_app_data(ctx, data) \ + X509_STORE_CTX_set_ex_data(ctx, 0, data) +#define X509_STORE_CTX_get_app_data(ctx) \ + X509_STORE_CTX_get_ex_data(ctx, 0) + +#define X509_L_FILE_LOAD 1 +#define X509_L_ADD_DIR 2 +#define X509_L_ADD_STORE 3 +#define X509_L_LOAD_STORE 4 + +#define X509_LOOKUP_load_file(x, name, type) \ + X509_LOOKUP_ctrl((x), X509_L_FILE_LOAD, (name), (long)(type), NULL) + +#define X509_LOOKUP_add_dir(x, name, type) \ + X509_LOOKUP_ctrl((x), X509_L_ADD_DIR, (name), (long)(type), NULL) + +#define X509_LOOKUP_add_store(x, name) \ + X509_LOOKUP_ctrl((x), X509_L_ADD_STORE, (name), 0, NULL) + +#define X509_LOOKUP_load_store(x, name) \ + X509_LOOKUP_ctrl((x), X509_L_LOAD_STORE, (name), 0, NULL) + +#define X509_LOOKUP_load_file_ex(x, name, type, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_FILE_LOAD, (name), (long)(type), NULL, \ + (libctx), (propq)) + +#define X509_LOOKUP_load_store_ex(x, name, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_LOAD_STORE, (name), 0, NULL, \ + (libctx), (propq)) + +#define X509_LOOKUP_add_store_ex(x, name, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ + (libctx), (propq)) + +#define X509_V_OK 0 +#define X509_V_ERR_UNSPECIFIED 1 +#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 +#define X509_V_ERR_UNABLE_TO_GET_CRL 3 +#define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 +#define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 +#define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 +#define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 +#define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 +#define X509_V_ERR_CERT_NOT_YET_VALID 9 +#define X509_V_ERR_CERT_HAS_EXPIRED 10 +#define X509_V_ERR_CRL_NOT_YET_VALID 11 +#define X509_V_ERR_CRL_HAS_EXPIRED 12 +#define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 +#define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 +#define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 +#define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 +#define X509_V_ERR_OUT_OF_MEM 17 +#define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 +#define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 +#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 +#define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 +#define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 +#define X509_V_ERR_CERT_REVOKED 23 +#define X509_V_ERR_NO_ISSUER_PUBLIC_KEY 24 +#define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +#define X509_V_ERR_INVALID_PURPOSE 26 +#define X509_V_ERR_CERT_UNTRUSTED 27 +#define X509_V_ERR_CERT_REJECTED 28 + +/* These are 'informational' when looking for issuer cert */ +#define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +#define X509_V_ERR_AKID_SKID_MISMATCH 30 +#define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +#define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 +#define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +#define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +#define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +#define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +#define X509_V_ERR_INVALID_NON_CA 37 +#define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +#define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +#define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 +#define X509_V_ERR_INVALID_EXTENSION 41 +#define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +#define X509_V_ERR_NO_EXPLICIT_POLICY 43 +#define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +#define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 +#define X509_V_ERR_UNNESTED_RESOURCE 46 +#define X509_V_ERR_PERMITTED_VIOLATION 47 +#define X509_V_ERR_EXCLUDED_VIOLATION 48 +#define X509_V_ERR_SUBTREE_MINMAX 49 +/* The application is not happy */ +#define X509_V_ERR_APPLICATION_VERIFICATION 50 +#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +#define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +#define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 +/* Another issuer check debug option */ +#define X509_V_ERR_PATH_LOOP 55 +/* Suite B mode algorithm violation */ +#define X509_V_ERR_SUITE_B_INVALID_VERSION 56 +#define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 +#define X509_V_ERR_SUITE_B_INVALID_CURVE 58 +#define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 +#define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 +#define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 +/* Host, email and IP check errors */ +#define X509_V_ERR_HOSTNAME_MISMATCH 62 +#define X509_V_ERR_EMAIL_MISMATCH 63 +#define X509_V_ERR_IP_ADDRESS_MISMATCH 64 +/* DANE TLSA errors */ +#define X509_V_ERR_DANE_NO_MATCH 65 +/* security level errors */ +#define X509_V_ERR_EE_KEY_TOO_SMALL 66 +#define X509_V_ERR_CA_KEY_TOO_SMALL 67 +#define X509_V_ERR_CA_MD_TOO_WEAK 68 +/* Caller error */ +#define X509_V_ERR_INVALID_CALL 69 +/* Issuer lookup error */ +#define X509_V_ERR_STORE_LOOKUP 70 +/* Certificate transparency */ +#define X509_V_ERR_NO_VALID_SCTS 71 + +#define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 72 +/* OCSP status errors */ +#define X509_V_ERR_OCSP_VERIFY_NEEDED 73 /* Need OCSP verification */ +#define X509_V_ERR_OCSP_VERIFY_FAILED 74 /* Couldn't verify cert through OCSP */ +#define X509_V_ERR_OCSP_CERT_UNKNOWN 75 /* Certificate wasn't recognized by the OCSP responder */ + +#define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 76 +#define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 77 + +/* Errors in case a check in X509_V_FLAG_X509_STRICT mode fails */ +#define X509_V_ERR_SIGNATURE_ALGORITHM_INCONSISTENCY 78 +#define X509_V_ERR_INVALID_CA 79 +#define X509_V_ERR_PATHLEN_INVALID_FOR_NON_CA 80 +#define X509_V_ERR_PATHLEN_WITHOUT_KU_KEY_CERT_SIGN 81 +#define X509_V_ERR_KU_KEY_CERT_SIGN_INVALID_FOR_NON_CA 82 +#define X509_V_ERR_ISSUER_NAME_EMPTY 83 +#define X509_V_ERR_SUBJECT_NAME_EMPTY 84 +#define X509_V_ERR_MISSING_AUTHORITY_KEY_IDENTIFIER 85 +#define X509_V_ERR_MISSING_SUBJECT_KEY_IDENTIFIER 86 +#define X509_V_ERR_EMPTY_SUBJECT_ALT_NAME 87 +#define X509_V_ERR_EMPTY_SUBJECT_SAN_NOT_CRITICAL 88 +#define X509_V_ERR_CA_BCONS_NOT_CRITICAL 89 +#define X509_V_ERR_AUTHORITY_KEY_IDENTIFIER_CRITICAL 90 +#define X509_V_ERR_SUBJECT_KEY_IDENTIFIER_CRITICAL 91 +#define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 +#define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 +#define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +#define X509_V_ERR_RPK_UNTRUSTED 95 + +/* Certificate verify flags */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_V_FLAG_CB_ISSUER_CHECK 0x0 /* Deprecated */ +#endif +/* Use check time instead of current time */ +#define X509_V_FLAG_USE_CHECK_TIME 0x2 +/* Lookup CRLs */ +#define X509_V_FLAG_CRL_CHECK 0x4 +/* Lookup CRLs for whole chain */ +#define X509_V_FLAG_CRL_CHECK_ALL 0x8 +/* Ignore unhandled critical extensions */ +#define X509_V_FLAG_IGNORE_CRITICAL 0x10 +/* Disable workarounds for broken certificates */ +#define X509_V_FLAG_X509_STRICT 0x20 +/* Enable proxy certificate validation */ +#define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 +/* Enable policy checking */ +#define X509_V_FLAG_POLICY_CHECK 0x80 +/* Policy variable require-explicit-policy */ +#define X509_V_FLAG_EXPLICIT_POLICY 0x100 +/* Policy variable inhibit-any-policy */ +#define X509_V_FLAG_INHIBIT_ANY 0x200 +/* Policy variable inhibit-policy-mapping */ +#define X509_V_FLAG_INHIBIT_MAP 0x400 +/* Notify callback that policy is OK */ +#define X509_V_FLAG_NOTIFY_POLICY 0x800 +/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ +#define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 +/* Delta CRL support */ +#define X509_V_FLAG_USE_DELTAS 0x2000 +/* Check self-signed CA signature */ +#define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 +/* Use trusted store first */ +#define X509_V_FLAG_TRUSTED_FIRST 0x8000 +/* Suite B 128 bit only mode: not normally used */ +#define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +#define X509_V_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +#define X509_V_FLAG_SUITEB_128_LOS 0x30000 +/* Allow partial chains if at least one certificate is in trusted store */ +#define X509_V_FLAG_PARTIAL_CHAIN 0x80000 +/* + * If the initial chain is not trusted, do not attempt to build an alternative + * chain. Alternate chain checking was introduced in 1.1.0. Setting this flag + * will force the behaviour to match that of previous versions. + */ +#define X509_V_FLAG_NO_ALT_CHAINS 0x100000 +/* Do not check certificate/CRL validity against current time */ +#define X509_V_FLAG_NO_CHECK_TIME 0x200000 + +#define X509_VP_FLAG_DEFAULT 0x1 +#define X509_VP_FLAG_OVERWRITE 0x2 +#define X509_VP_FLAG_RESET_FLAGS 0x4 +#define X509_VP_FLAG_LOCKED 0x8 +#define X509_VP_FLAG_ONCE 0x10 + +/* Internal use: mask of policy related options */ +#define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ + | X509_V_FLAG_EXPLICIT_POLICY \ + | X509_V_FLAG_INHIBIT_ANY \ + | X509_V_FLAG_INHIBIT_MAP) + +int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, X509_LOOKUP_TYPE type, + const X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + X509_LOOKUP_TYPE type, + const X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +int X509_OBJECT_up_ref_count(X509_OBJECT *a); +X509_OBJECT *X509_OBJECT_new(void); +void X509_OBJECT_free(X509_OBJECT *a); +X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a); +X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a); +int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); +X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); +int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, + const X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, + const X509_NAME *nm); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); + +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); +#define X509_STORE_set_verify_func(ctx, func) \ + X509_STORE_set_verify((ctx), (func)) +void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_fn verify); +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, + X509_STORE_CTX_verify_cb verify_cb); +#define X509_STORE_set_verify_cb_func(ctx, func) \ + X509_STORE_set_verify_cb((ctx), (func)) +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, + X509_STORE_CTX_get_issuer_fn get_issuer); +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, + X509_STORE_CTX_check_issued_fn check_issued); +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, + X509_STORE_CTX_check_revocation_fn check_revocation); +X509_STORE_CTX_check_revocation_fn +X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, + X509_STORE_CTX_check_crl_fn check_crl); +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, + X509_STORE_CTX_cert_crl_fn cert_crl); +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, + X509_STORE_CTX_check_policy_fn check_policy); +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, + X509_STORE_CTX_lookup_certs_fn lookup_certs); +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, + X509_STORE_CTX_lookup_crls_fn lookup_crls); +#define X509_STORE_set_lookup_crls_cb(ctx, func) \ + X509_STORE_set_lookup_crls((ctx), (func)) +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, + X509_STORE_CTX_cleanup_fn cleanup); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); + +#define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); + +X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +X509_STORE_CTX *X509_STORE_CTX_new(void); + +int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + +void X509_STORE_CTX_free(X509_STORE_CTX *ctx); +int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, + X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY *rpk); +void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); + +X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_cb verify); +X509_STORE_CTX_verify_cb X509_STORE_CTX_get_verify_cb(const X509_STORE_CTX *ctx); +X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); +X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(const X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(const X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(const X509_STORE_CTX *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_STORE_CTX_get_chain X509_STORE_CTX_get0_chain +#define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted +#define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack +#define X509_STORE_get_by_subject X509_STORE_CTX_get_by_subject +#define X509_STORE_get1_certs X509_STORE_CTX_get1_certs +#define X509_STORE_get1_crls X509_STORE_CTX_get1_crls +/* the following macro is misspelled; use X509_STORE_get1_certs instead */ +#define X509_STORE_get1_cert X509_STORE_CTX_get1_certs +/* the following macro is misspelled; use X509_STORE_get1_crls instead */ +#define X509_STORE_get1_crl X509_STORE_CTX_get1_crls +#endif + +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); +X509_LOOKUP_METHOD *X509_LOOKUP_store(void); + +typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +typedef int (*X509_LOOKUP_ctrl_ex_fn)( + X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret, + OSSL_LIB_CTX *libctx, const char *propq); + +typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_subject_ex_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + X509_OBJECT *ret, + OSSL_LIB_CTX *libctx, + const char *propq); +typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + const ASN1_INTEGER *serial, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const unsigned char *bytes, + int len, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const char *str, + int len, + X509_OBJECT *ret); + +X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name); +void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method, + int (*new_item)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method, + void (*free_fn)(X509_LOOKUP *ctx)); +void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method, + int (*init)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method, + int (*shutdown)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method, + X509_LOOKUP_ctrl_fn ctrl_fn); +X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_subject_fn fn); +X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_issuer_serial(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_issuer_serial_fn fn); +X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_fingerprint_fn fn); +X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_alias_fn fn); +X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( + const X509_LOOKUP_METHOD *method); + +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); + +int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret); +X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + const X509_NAME *name); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +int X509_LOOKUP_ctrl_ex(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, + char **ret, OSSL_LIB_CTX *libctx, const char *propq); + +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_file_ex(X509_LOOKUP *ctx, const char *file, int type, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file_ex(X509_LOOKUP *ctx, const char *file, int type, + OSSL_LIB_CTX *libctx, const char *propq); + +X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); +void X509_LOOKUP_free(X509_LOOKUP *ctx); +int X509_LOOKUP_init(X509_LOOKUP *ctx); +int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret); +int X509_LOOKUP_by_subject_ex(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, + const ASN1_INTEGER *serial, + X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const char *str, int len, X509_OBJECT *ret); +int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); +void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); +X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); + +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); + +#define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) +int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); +void *X509_STORE_CTX_get_ex_data(const X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); +X509 *X509_STORE_CTX_get_current_cert(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); +X509 *X509_STORE_CTX_get0_current_issuer(const X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); +void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); +int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); +int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); +int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, + int purpose, int trust); +void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); +void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, + time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_num_untrusted(const X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); +int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); + +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +void X509_STORE_CTX_set0_dane(X509_STORE_CTX *ctx, SSL_DANE *dane); +#define DANE_FLAG_NO_DANE_EE_NAMECHECKS (1L << 0) + +/* X509_VERIFY_PARAM functions */ + +X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); +void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); +int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); +void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); +void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); +time_t X509_VERIFY_PARAM_get_time(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); +int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, + ASN1_OBJECT *policy); +int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, + STACK_OF(ASN1_OBJECT) *policies); + +int X509_VERIFY_PARAM_set_inh_flags(X509_VERIFY_PARAM *param, + uint32_t flags); +uint32_t X509_VERIFY_PARAM_get_inh_flags(const X509_VERIFY_PARAM *param); + +char *X509_VERIFY_PARAM_get0_host(X509_VERIFY_PARAM *param, int idx); +int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, + unsigned int flags); +unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param); +char *X509_VERIFY_PARAM_get0_peername(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); +char *X509_VERIFY_PARAM_get0_email(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +char *X509_VERIFY_PARAM_get1_ip_asc(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, + const unsigned char *ip, size_t iplen); +int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, + const char *ipasc); + +int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_auth_level(const X509_VERIFY_PARAM *param); +const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_count(void); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); +void X509_VERIFY_PARAM_table_cleanup(void); + +/* Non positive return values are errors */ +#define X509_PCY_TREE_FAILURE -2 /* Failure to satisfy explicit policy */ +#define X509_PCY_TREE_INVALID -1 /* Inconsistent or invalid extensions */ +#define X509_PCY_TREE_INTERNAL 0 /* Internal error, most likely malloc */ + +/* + * Positive return values form a bit mask, all but the first are internal to + * the library and don't appear in results from X509_policy_check(). + */ +#define X509_PCY_TREE_VALID 1 /* The policy tree is valid */ +#define X509_PCY_TREE_EMPTY 2 /* The policy tree is empty */ +#define X509_PCY_TREE_EXPLICIT 4 /* Explicit policy required */ + +int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, + STACK_OF(X509) *certs, + STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); + +void X509_policy_tree_free(X509_POLICY_TREE *tree); + +int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); +X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, + int i); + +STACK_OF(X509_POLICY_NODE) +*X509_policy_tree_get0_policies(const X509_POLICY_TREE *tree); + +STACK_OF(X509_POLICY_NODE) +*X509_policy_tree_get0_user_policies(const X509_POLICY_TREE *tree); + +int X509_policy_level_node_count(X509_POLICY_LEVEL *level); + +X509_POLICY_NODE *X509_policy_level_get0_node(const X509_POLICY_LEVEL *level, + int i); + +const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); + +STACK_OF(POLICYQUALINFO) +*X509_policy_node_get0_qualifiers(const X509_POLICY_NODE *node); +const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE *node); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/x509v3.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/x509v3.h new file mode 100644 index 00000000000000..5dd402d2a913e8 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/openssl/x509v3.h @@ -0,0 +1,2013 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509v3.h.in + * + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509V3_H +#define OPENSSL_X509V3_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509V3_H +#endif + +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward reference */ +struct v3_ext_method; +struct v3_ext_ctx; + +/* Useful typedefs */ + +typedef void *(*X509V3_EXT_NEW)(void); +typedef void (*X509V3_EXT_FREE)(void *); +typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); +typedef int (*X509V3_EXT_I2D)(const void *, unsigned char **); +typedef STACK_OF(CONF_VALUE) *(*X509V3_EXT_I2V)(const struct v3_ext_method *method, void *ext, + STACK_OF(CONF_VALUE) *extlist); +typedef void *(*X509V3_EXT_V2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, + STACK_OF(CONF_VALUE) *values); +typedef char *(*X509V3_EXT_I2S)(const struct v3_ext_method *method, + void *ext); +typedef void *(*X509V3_EXT_S2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); +typedef int (*X509V3_EXT_I2R)(const struct v3_ext_method *method, void *ext, + BIO *out, int indent); +typedef void *(*X509V3_EXT_R2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); + +/* V3 extension structure */ + +struct v3_ext_method { + int ext_nid; + int ext_flags; + /* If this is set the following four fields are ignored */ + ASN1_ITEM_EXP *it; + /* Old style ASN1 calls */ + X509V3_EXT_NEW ext_new; + X509V3_EXT_FREE ext_free; + X509V3_EXT_D2I d2i; + X509V3_EXT_I2D i2d; + /* The following pair is used for string extensions */ + X509V3_EXT_I2S i2s; + X509V3_EXT_S2I s2i; + /* The following pair is used for multi-valued extensions */ + X509V3_EXT_I2V i2v; + X509V3_EXT_V2I v2i; + /* The following are used for raw extensions */ + X509V3_EXT_I2R i2r; + X509V3_EXT_R2I r2i; + void *usr_data; /* Any extension specific data */ +}; + +typedef struct X509V3_CONF_METHOD_st { + char *(*get_string)(void *db, const char *section, const char *value); + STACK_OF(CONF_VALUE) *(*get_section)(void *db, const char *section); + void (*free_string)(void *db, char *string); + void (*free_section)(void *db, STACK_OF(CONF_VALUE) *section); +} X509V3_CONF_METHOD; + +/* Context specific info for producing X509 v3 extensions*/ +struct v3_ext_ctx { +#define X509V3_CTX_TEST 0x1 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define CTX_TEST X509V3_CTX_TEST +#endif +#define X509V3_CTX_REPLACE 0x2 + int flags; + X509 *issuer_cert; + X509 *subject_cert; + X509_REQ *subject_req; + X509_CRL *crl; + X509V3_CONF_METHOD *db_meth; + void *db; + EVP_PKEY *issuer_pkey; + /* Maybe more here */ +}; + +typedef struct v3_ext_method X509V3_EXT_METHOD; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509V3_EXT_METHOD, X509V3_EXT_METHOD, X509V3_EXT_METHOD) +#define sk_X509V3_EXT_METHOD_num(sk) OPENSSL_sk_num(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_value(sk, idx) ((X509V3_EXT_METHOD *)OPENSSL_sk_value(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), (idx))) +#define sk_X509V3_EXT_METHOD_new(cmp) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) +#define sk_X509V3_EXT_METHOD_new_null() ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_null()) +#define sk_X509V3_EXT_METHOD_new_reserve(cmp, n) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_reserve(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp), (n))) +#define sk_X509V3_EXT_METHOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (n)) +#define sk_X509V3_EXT_METHOD_free(sk) OPENSSL_sk_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_zero(sk) OPENSSL_sk_zero(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_delete(sk, i) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (i))) +#define sk_X509V3_EXT_METHOD_delete_ptr(sk, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete_ptr(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))) +#define sk_X509V3_EXT_METHOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_pop(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_pop(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_shift(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_shift(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk),ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc)) +#define sk_X509V3_EXT_METHOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), (idx)) +#define sk_X509V3_EXT_METHOD_set(sk, idx, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_set(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (idx), ossl_check_X509V3_EXT_METHOD_type(ptr))) +#define sk_X509V3_EXT_METHOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), pnum) +#define sk_X509V3_EXT_METHOD_sort(sk) OPENSSL_sk_sort(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_dup(sk) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_dup(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_deep_copy(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_copyfunc_type(copyfunc), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc))) +#define sk_X509V3_EXT_METHOD_set_cmp_func(sk, cmp) ((sk_X509V3_EXT_METHOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) + +/* clang-format on */ + +/* ext_flags values */ +#define X509V3_EXT_DYNAMIC 0x1 +#define X509V3_EXT_CTX_DEP 0x2 +#define X509V3_EXT_MULTILINE 0x4 + +typedef BIT_STRING_BITNAME ENUMERATED_NAMES; + +typedef struct BASIC_CONSTRAINTS_st { + int ca; + ASN1_INTEGER *pathlen; +} BASIC_CONSTRAINTS; + +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + +typedef struct PKEY_USAGE_PERIOD_st { + ASN1_GENERALIZEDTIME *notBefore; + ASN1_GENERALIZEDTIME *notAfter; +} PKEY_USAGE_PERIOD; + +typedef struct otherName_st { + ASN1_OBJECT *type_id; + ASN1_TYPE *value; +} OTHERNAME; + +typedef struct EDIPartyName_st { + ASN1_STRING *nameAssigner; + ASN1_STRING *partyName; +} EDIPARTYNAME; + +typedef struct GENERAL_NAME_st { +#define GEN_OTHERNAME 0 +#define GEN_EMAIL 1 +#define GEN_DNS 2 +#define GEN_X400 3 +#define GEN_DIRNAME 4 +#define GEN_EDIPARTY 5 +#define GEN_URI 6 +#define GEN_IPADD 7 +#define GEN_RID 8 + int type; + union { + char *ptr; + OTHERNAME *otherName; /* otherName */ + ASN1_IA5STRING *rfc822Name; + ASN1_IA5STRING *dNSName; + ASN1_STRING *x400Address; + X509_NAME *directoryName; + EDIPARTYNAME *ediPartyName; + ASN1_IA5STRING *uniformResourceIdentifier; + ASN1_OCTET_STRING *iPAddress; + ASN1_OBJECT *registeredID; + /* Old names */ + ASN1_OCTET_STRING *ip; /* iPAddress */ + X509_NAME *dirn; /* dirn */ + ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, + * uniformResourceIdentifier */ + ASN1_OBJECT *rid; /* registeredID */ + ASN1_TYPE *other; /* x400Address */ + } d; +} GENERAL_NAME; + +typedef struct ACCESS_DESCRIPTION_st { + ASN1_OBJECT *method; + GENERAL_NAME *location; +} ACCESS_DESCRIPTION; + +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) +#define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) +#define sk_ACCESS_DESCRIPTION_new(cmp) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) +#define sk_ACCESS_DESCRIPTION_new_null() ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_null()) +#define sk_ACCESS_DESCRIPTION_new_reserve(cmp, n) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_reserve(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp), (n))) +#define sk_ACCESS_DESCRIPTION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (n)) +#define sk_ACCESS_DESCRIPTION_free(sk) OPENSSL_sk_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_zero(sk) OPENSSL_sk_zero(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_delete(sk, i) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (i))) +#define sk_ACCESS_DESCRIPTION_delete_ptr(sk, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete_ptr(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))) +#define sk_ACCESS_DESCRIPTION_push(sk, ptr) OPENSSL_sk_push(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_pop(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_pop(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_shift(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_shift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk),ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc)) +#define sk_ACCESS_DESCRIPTION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), (idx)) +#define sk_ACCESS_DESCRIPTION_set(sk, idx, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_set(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (idx), ossl_check_ACCESS_DESCRIPTION_type(ptr))) +#define sk_ACCESS_DESCRIPTION_find(sk, ptr) OPENSSL_sk_find(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), pnum) +#define sk_ACCESS_DESCRIPTION_sort(sk) OPENSSL_sk_sort(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_dup(sk) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_dup(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_deep_copy(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_copyfunc_type(copyfunc), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc))) +#define sk_ACCESS_DESCRIPTION_set_cmp_func(sk, cmp) ((sk_ACCESS_DESCRIPTION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAME, GENERAL_NAME, GENERAL_NAME) +#define sk_GENERAL_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_value(sk, idx) ((GENERAL_NAME *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAME_sk_type(sk), (idx))) +#define sk_GENERAL_NAME_new(cmp) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new(ossl_check_GENERAL_NAME_compfunc_type(cmp))) +#define sk_GENERAL_NAME_new_null() ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_NAME_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAME_compfunc_type(cmp), (n))) +#define sk_GENERAL_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAME_sk_type(sk), (n)) +#define sk_GENERAL_NAME_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_delete(sk, i) ((GENERAL_NAME *)OPENSSL_sk_delete(ossl_check_GENERAL_NAME_sk_type(sk), (i))) +#define sk_GENERAL_NAME_delete_ptr(sk, ptr) ((GENERAL_NAME *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))) +#define sk_GENERAL_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_pop(sk) ((GENERAL_NAME *)OPENSSL_sk_pop(ossl_check_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_shift(sk) ((GENERAL_NAME *)OPENSSL_sk_shift(ossl_check_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAME_sk_type(sk),ossl_check_GENERAL_NAME_freefunc_type(freefunc)) +#define sk_GENERAL_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), (idx)) +#define sk_GENERAL_NAME_set(sk, idx, ptr) ((GENERAL_NAME *)OPENSSL_sk_set(ossl_check_GENERAL_NAME_sk_type(sk), (idx), ossl_check_GENERAL_NAME_type(ptr))) +#define sk_GENERAL_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), pnum) +#define sk_GENERAL_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_dup(sk) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_copyfunc_type(copyfunc), ossl_check_GENERAL_NAME_freefunc_type(freefunc))) +#define sk_GENERAL_NAME_set_cmp_func(sk, cmp) ((sk_GENERAL_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; +typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; +typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; +typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAMES, GENERAL_NAMES, GENERAL_NAMES) +#define sk_GENERAL_NAMES_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_value(sk, idx) ((GENERAL_NAMES *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAMES_sk_type(sk), (idx))) +#define sk_GENERAL_NAMES_new(cmp) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new(ossl_check_GENERAL_NAMES_compfunc_type(cmp))) +#define sk_GENERAL_NAMES_new_null() ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_NAMES_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAMES_compfunc_type(cmp), (n))) +#define sk_GENERAL_NAMES_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAMES_sk_type(sk), (n)) +#define sk_GENERAL_NAMES_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_delete(sk, i) ((GENERAL_NAMES *)OPENSSL_sk_delete(ossl_check_GENERAL_NAMES_sk_type(sk), (i))) +#define sk_GENERAL_NAMES_delete_ptr(sk, ptr) ((GENERAL_NAMES *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))) +#define sk_GENERAL_NAMES_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_pop(sk) ((GENERAL_NAMES *)OPENSSL_sk_pop(ossl_check_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_shift(sk) ((GENERAL_NAMES *)OPENSSL_sk_shift(ossl_check_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAMES_sk_type(sk),ossl_check_GENERAL_NAMES_freefunc_type(freefunc)) +#define sk_GENERAL_NAMES_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), (idx)) +#define sk_GENERAL_NAMES_set(sk, idx, ptr) ((GENERAL_NAMES *)OPENSSL_sk_set(ossl_check_GENERAL_NAMES_sk_type(sk), (idx), ossl_check_GENERAL_NAMES_type(ptr))) +#define sk_GENERAL_NAMES_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), pnum) +#define sk_GENERAL_NAMES_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_dup(sk) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_copyfunc_type(copyfunc), ossl_check_GENERAL_NAMES_freefunc_type(freefunc))) +#define sk_GENERAL_NAMES_set_cmp_func(sk, cmp) ((sk_GENERAL_NAMES_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct DIST_POINT_NAME_st { + int type; + union { + GENERAL_NAMES *fullname; + STACK_OF(X509_NAME_ENTRY) *relativename; + } name; + /* If relativename then this contains the full distribution point name */ + X509_NAME *dpname; +} DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) +/* All existing reasons */ +#define CRLDP_ALL_REASONS 0x807f + +#define CRL_REASON_NONE -1 +#define CRL_REASON_UNSPECIFIED 0 +#define CRL_REASON_KEY_COMPROMISE 1 +#define CRL_REASON_CA_COMPROMISE 2 +#define CRL_REASON_AFFILIATION_CHANGED 3 +#define CRL_REASON_SUPERSEDED 4 +#define CRL_REASON_CESSATION_OF_OPERATION 5 +#define CRL_REASON_CERTIFICATE_HOLD 6 +#define CRL_REASON_REMOVE_FROM_CRL 8 +#define CRL_REASON_PRIVILEGE_WITHDRAWN 9 +#define CRL_REASON_AA_COMPROMISE 10 + +struct DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + GENERAL_NAMES *CRLissuer; + int dp_reasons; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(DIST_POINT, DIST_POINT, DIST_POINT) +#define sk_DIST_POINT_num(sk) OPENSSL_sk_num(ossl_check_const_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_value(sk, idx) ((DIST_POINT *)OPENSSL_sk_value(ossl_check_const_DIST_POINT_sk_type(sk), (idx))) +#define sk_DIST_POINT_new(cmp) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new(ossl_check_DIST_POINT_compfunc_type(cmp))) +#define sk_DIST_POINT_new_null() ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_null()) +#define sk_DIST_POINT_new_reserve(cmp, n) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_reserve(ossl_check_DIST_POINT_compfunc_type(cmp), (n))) +#define sk_DIST_POINT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_DIST_POINT_sk_type(sk), (n)) +#define sk_DIST_POINT_free(sk) OPENSSL_sk_free(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_zero(sk) OPENSSL_sk_zero(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_delete(sk, i) ((DIST_POINT *)OPENSSL_sk_delete(ossl_check_DIST_POINT_sk_type(sk), (i))) +#define sk_DIST_POINT_delete_ptr(sk, ptr) ((DIST_POINT *)OPENSSL_sk_delete_ptr(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))) +#define sk_DIST_POINT_push(sk, ptr) OPENSSL_sk_push(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_pop(sk) ((DIST_POINT *)OPENSSL_sk_pop(ossl_check_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_shift(sk) ((DIST_POINT *)OPENSSL_sk_shift(ossl_check_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_DIST_POINT_sk_type(sk),ossl_check_DIST_POINT_freefunc_type(freefunc)) +#define sk_DIST_POINT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), (idx)) +#define sk_DIST_POINT_set(sk, idx, ptr) ((DIST_POINT *)OPENSSL_sk_set(ossl_check_DIST_POINT_sk_type(sk), (idx), ossl_check_DIST_POINT_type(ptr))) +#define sk_DIST_POINT_find(sk, ptr) OPENSSL_sk_find(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), pnum) +#define sk_DIST_POINT_sort(sk) OPENSSL_sk_sort(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_dup(sk) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_dup(ossl_check_const_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_deep_copy(ossl_check_const_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_copyfunc_type(copyfunc), ossl_check_DIST_POINT_freefunc_type(freefunc))) +#define sk_DIST_POINT_set_cmp_func(sk, cmp) ((sk_DIST_POINT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; + +struct AUTHORITY_KEYID_st { + ASN1_OCTET_STRING *keyid; + GENERAL_NAMES *issuer; + ASN1_INTEGER *serial; +}; + +/* Strong extranet structures */ + +typedef struct SXNET_ID_st { + ASN1_INTEGER *zone; + ASN1_OCTET_STRING *user; +} SXNETID; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SXNETID, SXNETID, SXNETID) +#define sk_SXNETID_num(sk) OPENSSL_sk_num(ossl_check_const_SXNETID_sk_type(sk)) +#define sk_SXNETID_value(sk, idx) ((SXNETID *)OPENSSL_sk_value(ossl_check_const_SXNETID_sk_type(sk), (idx))) +#define sk_SXNETID_new(cmp) ((STACK_OF(SXNETID) *)OPENSSL_sk_new(ossl_check_SXNETID_compfunc_type(cmp))) +#define sk_SXNETID_new_null() ((STACK_OF(SXNETID) *)OPENSSL_sk_new_null()) +#define sk_SXNETID_new_reserve(cmp, n) ((STACK_OF(SXNETID) *)OPENSSL_sk_new_reserve(ossl_check_SXNETID_compfunc_type(cmp), (n))) +#define sk_SXNETID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SXNETID_sk_type(sk), (n)) +#define sk_SXNETID_free(sk) OPENSSL_sk_free(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_zero(sk) OPENSSL_sk_zero(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_delete(sk, i) ((SXNETID *)OPENSSL_sk_delete(ossl_check_SXNETID_sk_type(sk), (i))) +#define sk_SXNETID_delete_ptr(sk, ptr) ((SXNETID *)OPENSSL_sk_delete_ptr(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))) +#define sk_SXNETID_push(sk, ptr) OPENSSL_sk_push(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_pop(sk) ((SXNETID *)OPENSSL_sk_pop(ossl_check_SXNETID_sk_type(sk))) +#define sk_SXNETID_shift(sk) ((SXNETID *)OPENSSL_sk_shift(ossl_check_SXNETID_sk_type(sk))) +#define sk_SXNETID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SXNETID_sk_type(sk),ossl_check_SXNETID_freefunc_type(freefunc)) +#define sk_SXNETID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), (idx)) +#define sk_SXNETID_set(sk, idx, ptr) ((SXNETID *)OPENSSL_sk_set(ossl_check_SXNETID_sk_type(sk), (idx), ossl_check_SXNETID_type(ptr))) +#define sk_SXNETID_find(sk, ptr) OPENSSL_sk_find(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), pnum) +#define sk_SXNETID_sort(sk) OPENSSL_sk_sort(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SXNETID_sk_type(sk)) +#define sk_SXNETID_dup(sk) ((STACK_OF(SXNETID) *)OPENSSL_sk_dup(ossl_check_const_SXNETID_sk_type(sk))) +#define sk_SXNETID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SXNETID) *)OPENSSL_sk_deep_copy(ossl_check_const_SXNETID_sk_type(sk), ossl_check_SXNETID_copyfunc_type(copyfunc), ossl_check_SXNETID_freefunc_type(freefunc))) +#define sk_SXNETID_set_cmp_func(sk, cmp) ((sk_SXNETID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct SXNET_st { + ASN1_INTEGER *version; + STACK_OF(SXNETID) *ids; +} SXNET; + +typedef struct ISSUER_SIGN_TOOL_st { + ASN1_UTF8STRING *signTool; + ASN1_UTF8STRING *cATool; + ASN1_UTF8STRING *signToolCert; + ASN1_UTF8STRING *cAToolCert; +} ISSUER_SIGN_TOOL; + +typedef struct NOTICEREF_st { + ASN1_STRING *organization; + STACK_OF(ASN1_INTEGER) *noticenos; +} NOTICEREF; + +typedef struct USERNOTICE_st { + NOTICEREF *noticeref; + ASN1_STRING *exptext; +} USERNOTICE; + +typedef struct POLICYQUALINFO_st { + ASN1_OBJECT *pqualid; + union { + ASN1_IA5STRING *cpsuri; + USERNOTICE *usernotice; + ASN1_TYPE *other; + } d; +} POLICYQUALINFO; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICYQUALINFO, POLICYQUALINFO, POLICYQUALINFO) +#define sk_POLICYQUALINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_value(sk, idx) ((POLICYQUALINFO *)OPENSSL_sk_value(ossl_check_const_POLICYQUALINFO_sk_type(sk), (idx))) +#define sk_POLICYQUALINFO_new(cmp) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new(ossl_check_POLICYQUALINFO_compfunc_type(cmp))) +#define sk_POLICYQUALINFO_new_null() ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_null()) +#define sk_POLICYQUALINFO_new_reserve(cmp, n) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYQUALINFO_compfunc_type(cmp), (n))) +#define sk_POLICYQUALINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYQUALINFO_sk_type(sk), (n)) +#define sk_POLICYQUALINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_delete(sk, i) ((POLICYQUALINFO *)OPENSSL_sk_delete(ossl_check_POLICYQUALINFO_sk_type(sk), (i))) +#define sk_POLICYQUALINFO_delete_ptr(sk, ptr) ((POLICYQUALINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))) +#define sk_POLICYQUALINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_pop(sk) ((POLICYQUALINFO *)OPENSSL_sk_pop(ossl_check_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_shift(sk) ((POLICYQUALINFO *)OPENSSL_sk_shift(ossl_check_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYQUALINFO_sk_type(sk),ossl_check_POLICYQUALINFO_freefunc_type(freefunc)) +#define sk_POLICYQUALINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), (idx)) +#define sk_POLICYQUALINFO_set(sk, idx, ptr) ((POLICYQUALINFO *)OPENSSL_sk_set(ossl_check_POLICYQUALINFO_sk_type(sk), (idx), ossl_check_POLICYQUALINFO_type(ptr))) +#define sk_POLICYQUALINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), pnum) +#define sk_POLICYQUALINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_dup(sk) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_copyfunc_type(copyfunc), ossl_check_POLICYQUALINFO_freefunc_type(freefunc))) +#define sk_POLICYQUALINFO_set_cmp_func(sk, cmp) ((sk_POLICYQUALINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct POLICYINFO_st { + ASN1_OBJECT *policyid; + STACK_OF(POLICYQUALINFO) *qualifiers; +} POLICYINFO; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICYINFO, POLICYINFO, POLICYINFO) +#define sk_POLICYINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_value(sk, idx) ((POLICYINFO *)OPENSSL_sk_value(ossl_check_const_POLICYINFO_sk_type(sk), (idx))) +#define sk_POLICYINFO_new(cmp) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new(ossl_check_POLICYINFO_compfunc_type(cmp))) +#define sk_POLICYINFO_new_null() ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_null()) +#define sk_POLICYINFO_new_reserve(cmp, n) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYINFO_compfunc_type(cmp), (n))) +#define sk_POLICYINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYINFO_sk_type(sk), (n)) +#define sk_POLICYINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_delete(sk, i) ((POLICYINFO *)OPENSSL_sk_delete(ossl_check_POLICYINFO_sk_type(sk), (i))) +#define sk_POLICYINFO_delete_ptr(sk, ptr) ((POLICYINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))) +#define sk_POLICYINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_pop(sk) ((POLICYINFO *)OPENSSL_sk_pop(ossl_check_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_shift(sk) ((POLICYINFO *)OPENSSL_sk_shift(ossl_check_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYINFO_sk_type(sk),ossl_check_POLICYINFO_freefunc_type(freefunc)) +#define sk_POLICYINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), (idx)) +#define sk_POLICYINFO_set(sk, idx, ptr) ((POLICYINFO *)OPENSSL_sk_set(ossl_check_POLICYINFO_sk_type(sk), (idx), ossl_check_POLICYINFO_type(ptr))) +#define sk_POLICYINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), pnum) +#define sk_POLICYINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_dup(sk) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_copyfunc_type(copyfunc), ossl_check_POLICYINFO_freefunc_type(freefunc))) +#define sk_POLICYINFO_set_cmp_func(sk, cmp) ((sk_POLICYINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; + +typedef struct POLICY_MAPPING_st { + ASN1_OBJECT *issuerDomainPolicy; + ASN1_OBJECT *subjectDomainPolicy; +} POLICY_MAPPING; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICY_MAPPING, POLICY_MAPPING, POLICY_MAPPING) +#define sk_POLICY_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_value(sk, idx) ((POLICY_MAPPING *)OPENSSL_sk_value(ossl_check_const_POLICY_MAPPING_sk_type(sk), (idx))) +#define sk_POLICY_MAPPING_new(cmp) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new(ossl_check_POLICY_MAPPING_compfunc_type(cmp))) +#define sk_POLICY_MAPPING_new_null() ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_POLICY_MAPPING_new_reserve(cmp, n) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_POLICY_MAPPING_compfunc_type(cmp), (n))) +#define sk_POLICY_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICY_MAPPING_sk_type(sk), (n)) +#define sk_POLICY_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_delete(sk, i) ((POLICY_MAPPING *)OPENSSL_sk_delete(ossl_check_POLICY_MAPPING_sk_type(sk), (i))) +#define sk_POLICY_MAPPING_delete_ptr(sk, ptr) ((POLICY_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))) +#define sk_POLICY_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_pop(sk) ((POLICY_MAPPING *)OPENSSL_sk_pop(ossl_check_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_shift(sk) ((POLICY_MAPPING *)OPENSSL_sk_shift(ossl_check_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICY_MAPPING_sk_type(sk),ossl_check_POLICY_MAPPING_freefunc_type(freefunc)) +#define sk_POLICY_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), (idx)) +#define sk_POLICY_MAPPING_set(sk, idx, ptr) ((POLICY_MAPPING *)OPENSSL_sk_set(ossl_check_POLICY_MAPPING_sk_type(sk), (idx), ossl_check_POLICY_MAPPING_type(ptr))) +#define sk_POLICY_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), pnum) +#define sk_POLICY_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_dup(sk) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_copyfunc_type(copyfunc), ossl_check_POLICY_MAPPING_freefunc_type(freefunc))) +#define sk_POLICY_MAPPING_set_cmp_func(sk, cmp) ((sk_POLICY_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; + +typedef struct GENERAL_SUBTREE_st { + GENERAL_NAME *base; + ASN1_INTEGER *minimum; + ASN1_INTEGER *maximum; +} GENERAL_SUBTREE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_SUBTREE, GENERAL_SUBTREE, GENERAL_SUBTREE) +#define sk_GENERAL_SUBTREE_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_value(sk, idx) ((GENERAL_SUBTREE *)OPENSSL_sk_value(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), (idx))) +#define sk_GENERAL_SUBTREE_new(cmp) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) +#define sk_GENERAL_SUBTREE_new_null() ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_SUBTREE_new_reserve(cmp, n) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp), (n))) +#define sk_GENERAL_SUBTREE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_SUBTREE_sk_type(sk), (n)) +#define sk_GENERAL_SUBTREE_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_delete(sk, i) ((GENERAL_SUBTREE *)OPENSSL_sk_delete(ossl_check_GENERAL_SUBTREE_sk_type(sk), (i))) +#define sk_GENERAL_SUBTREE_delete_ptr(sk, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))) +#define sk_GENERAL_SUBTREE_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_pop(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_pop(ossl_check_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_shift(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_shift(ossl_check_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_SUBTREE_sk_type(sk),ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc)) +#define sk_GENERAL_SUBTREE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), (idx)) +#define sk_GENERAL_SUBTREE_set(sk, idx, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_set(ossl_check_GENERAL_SUBTREE_sk_type(sk), (idx), ossl_check_GENERAL_SUBTREE_type(ptr))) +#define sk_GENERAL_SUBTREE_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), pnum) +#define sk_GENERAL_SUBTREE_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_dup(sk) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_copyfunc_type(copyfunc), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc))) +#define sk_GENERAL_SUBTREE_set_cmp_func(sk, cmp) ((sk_GENERAL_SUBTREE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) + +/* clang-format on */ + +struct NAME_CONSTRAINTS_st { + STACK_OF(GENERAL_SUBTREE) *permittedSubtrees; + STACK_OF(GENERAL_SUBTREE) *excludedSubtrees; +}; + +typedef struct POLICY_CONSTRAINTS_st { + ASN1_INTEGER *requireExplicitPolicy; + ASN1_INTEGER *inhibitPolicyMapping; +} POLICY_CONSTRAINTS; + +/* Proxy certificate structures, see RFC 3820 */ +typedef struct PROXY_POLICY_st { + ASN1_OBJECT *policyLanguage; + ASN1_OCTET_STRING *policy; +} PROXY_POLICY; + +typedef struct PROXY_CERT_INFO_EXTENSION_st { + ASN1_INTEGER *pcPathLengthConstraint; + PROXY_POLICY *proxyPolicy; +} PROXY_CERT_INFO_EXTENSION; + +DECLARE_ASN1_FUNCTIONS(PROXY_POLICY) +DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION) + +struct ISSUING_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + int onlyuser; + int onlyCA; + ASN1_BIT_STRING *onlysomereasons; + int indirectCRL; + int onlyattr; +}; + +/* Values in idp_flags field */ +/* IDP present */ +#define IDP_PRESENT 0x1 +/* IDP values inconsistent */ +#define IDP_INVALID 0x2 +/* onlyuser true */ +#define IDP_ONLYUSER 0x4 +/* onlyCA true */ +#define IDP_ONLYCA 0x8 +/* onlyattr true */ +#define IDP_ONLYATTR 0x10 +/* indirectCRL true */ +#define IDP_INDIRECT 0x20 +/* onlysomereasons present */ +#define IDP_REASONS 0x40 + +#define X509V3_conf_err(val) ERR_add_error_data(6, \ + "section:", (val)->section, \ + ",name:", (val)->name, ",value:", (val)->value) + +#define X509V3_set_ctx_test(ctx) \ + X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, X509V3_CTX_TEST) +#define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL; + +#define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \ + 0, 0, 0, 0, \ + 0, 0, \ + (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ + (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ + NULL, NULL, \ + table } + +#define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \ + 0, 0, 0, 0, \ + (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ + 0, 0, 0, 0, \ + NULL } + +#define EXT_UTF8STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_UTF8STRING), \ + 0, 0, 0, 0, \ + (X509V3_EXT_I2S)i2s_ASN1_UTF8STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_UTF8STRING, \ + 0, 0, 0, 0, \ + NULL } + +/* clang-format off */ +# define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +/* clang-format on */ + +/* X509_PURPOSE stuff */ + +#define EXFLAG_BCONS 0x1 +#define EXFLAG_KUSAGE 0x2 +#define EXFLAG_XKUSAGE 0x4 +#define EXFLAG_NSCERT 0x8 + +#define EXFLAG_CA 0x10 +#define EXFLAG_SI 0x20 /* self-issued, maybe not self-signed */ +#define EXFLAG_V1 0x40 +#define EXFLAG_INVALID 0x80 +/* EXFLAG_SET is set to indicate that some values have been precomputed */ +#define EXFLAG_SET 0x100 +#define EXFLAG_CRITICAL 0x200 +#define EXFLAG_PROXY 0x400 + +#define EXFLAG_INVALID_POLICY 0x800 +#define EXFLAG_FRESHEST 0x1000 +#define EXFLAG_SS 0x2000 /* cert is apparently self-signed */ + +#define EXFLAG_BCONS_CRITICAL 0x10000 +#define EXFLAG_AKID_CRITICAL 0x20000 +#define EXFLAG_SKID_CRITICAL 0x40000 +#define EXFLAG_SAN_CRITICAL 0x80000 +#define EXFLAG_NO_FINGERPRINT 0x100000 + +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +#define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +#define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +#define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +#define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +#define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +#define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +#define KU_CRL_SIGN X509v3_KU_CRL_SIGN +#define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +#define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY + +#define NS_SSL_CLIENT 0x80 +#define NS_SSL_SERVER 0x40 +#define NS_SMIME 0x20 +#define NS_OBJSIGN 0x10 +#define NS_SSL_CA 0x04 +#define NS_SMIME_CA 0x02 +#define NS_OBJSIGN_CA 0x01 +#define NS_ANY_CA (NS_SSL_CA | NS_SMIME_CA | NS_OBJSIGN_CA) + +#define XKU_SSL_SERVER 0x1 +#define XKU_SSL_CLIENT 0x2 +#define XKU_SMIME 0x4 +#define XKU_CODE_SIGN 0x8 +#define XKU_SGC 0x10 /* Netscape or MS Server-Gated Crypto */ +#define XKU_OCSP_SIGN 0x20 +#define XKU_TIMESTAMP 0x40 +#define XKU_DVCS 0x80 +#define XKU_ANYEKU 0x100 + +#define X509_PURPOSE_DYNAMIC 0x1 +#define X509_PURPOSE_DYNAMIC_NAME 0x2 + +typedef struct x509_purpose_st { + int purpose; + int trust; /* Default trust ID */ + int flags; + int (*check_purpose)(const struct x509_purpose_st *, const X509 *, int); + char *name; + char *sname; + void *usr_data; +} X509_PURPOSE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) +#define sk_X509_PURPOSE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_value(sk, idx) ((X509_PURPOSE *)OPENSSL_sk_value(ossl_check_const_X509_PURPOSE_sk_type(sk), (idx))) +#define sk_X509_PURPOSE_new(cmp) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new(ossl_check_X509_PURPOSE_compfunc_type(cmp))) +#define sk_X509_PURPOSE_new_null() ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_null()) +#define sk_X509_PURPOSE_new_reserve(cmp, n) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_reserve(ossl_check_X509_PURPOSE_compfunc_type(cmp), (n))) +#define sk_X509_PURPOSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_PURPOSE_sk_type(sk), (n)) +#define sk_X509_PURPOSE_free(sk) OPENSSL_sk_free(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_delete(sk, i) ((X509_PURPOSE *)OPENSSL_sk_delete(ossl_check_X509_PURPOSE_sk_type(sk), (i))) +#define sk_X509_PURPOSE_delete_ptr(sk, ptr) ((X509_PURPOSE *)OPENSSL_sk_delete_ptr(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))) +#define sk_X509_PURPOSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_pop(sk) ((X509_PURPOSE *)OPENSSL_sk_pop(ossl_check_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_shift(sk) ((X509_PURPOSE *)OPENSSL_sk_shift(ossl_check_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_PURPOSE_sk_type(sk),ossl_check_X509_PURPOSE_freefunc_type(freefunc)) +#define sk_X509_PURPOSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), (idx)) +#define sk_X509_PURPOSE_set(sk, idx, ptr) ((X509_PURPOSE *)OPENSSL_sk_set(ossl_check_X509_PURPOSE_sk_type(sk), (idx), ossl_check_X509_PURPOSE_type(ptr))) +#define sk_X509_PURPOSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), pnum) +#define sk_X509_PURPOSE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_dup(sk) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_dup(ossl_check_const_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_copyfunc_type(copyfunc), ossl_check_X509_PURPOSE_freefunc_type(freefunc))) +#define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) + +/* clang-format on */ + +#define X509_PURPOSE_DEFAULT_ANY 0 +#define X509_PURPOSE_SSL_CLIENT 1 +#define X509_PURPOSE_SSL_SERVER 2 +#define X509_PURPOSE_NS_SSL_SERVER 3 +#define X509_PURPOSE_SMIME_SIGN 4 +#define X509_PURPOSE_SMIME_ENCRYPT 5 +#define X509_PURPOSE_CRL_SIGN 6 +#define X509_PURPOSE_ANY 7 +#define X509_PURPOSE_OCSP_HELPER 8 +#define X509_PURPOSE_TIMESTAMP_SIGN 9 +#define X509_PURPOSE_CODE_SIGN 10 + +#define X509_PURPOSE_MIN 1 +#define X509_PURPOSE_MAX 10 + +/* Flags for X509V3_EXT_print() */ + +#define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) +/* Return error for unknown extensions */ +#define X509V3_EXT_DEFAULT 0 +/* Print error for unknown extensions */ +#define X509V3_EXT_ERROR_UNKNOWN (1L << 16) +/* ASN1 parse unknown extensions */ +#define X509V3_EXT_PARSE_UNKNOWN (2L << 16) +/* BIO_dump unknown extensions */ +#define X509V3_EXT_DUMP_UNKNOWN (3L << 16) + +/* Flags for X509V3_add1_i2d */ + +#define X509V3_ADD_OP_MASK 0xfL +#define X509V3_ADD_DEFAULT 0L +#define X509V3_ADD_APPEND 1L +#define X509V3_ADD_REPLACE 2L +#define X509V3_ADD_REPLACE_EXISTING 3L +#define X509V3_ADD_KEEP_EXISTING 4L +#define X509V3_ADD_DELETE 5L +#define X509V3_ADD_SILENT 0x10 + +DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) + +DECLARE_ASN1_FUNCTIONS(SXNET) +DECLARE_ASN1_FUNCTIONS(SXNETID) + +DECLARE_ASN1_FUNCTIONS(ISSUER_SIGN_TOOL) + +int SXNET_add_id_asc(SXNET **psx, const char *zone, const char *user, int userlen); +int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, const char *user, + int userlen); +int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, const char *user, + int userlen); + +ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, const char *zone); +ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone); +ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone); + +DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID) + +DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD) + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAME) +DECLARE_ASN1_DUP_FUNCTION(GENERAL_NAME) +int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b); + +ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, + STACK_OF(CONF_VALUE) *nval); +STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + ASN1_BIT_STRING *bits, + STACK_OF(CONF_VALUE) *extlist); +char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); +ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); +char *i2s_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, ASN1_UTF8STRING *utf8); +ASN1_UTF8STRING *s2i_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, + GENERAL_NAME *gen, + STACK_OF(CONF_VALUE) *ret); +int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen); + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES) + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, + GENERAL_NAMES *gen, + STACK_OF(CONF_VALUE) *extlist); +GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); + +DECLARE_ASN1_FUNCTIONS(OTHERNAME) +DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) +int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b); +void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value); +void *GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype); +int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, + ASN1_OBJECT *oid, ASN1_TYPE *value); +int GENERAL_NAME_get0_otherName(const GENERAL_NAME *gen, + ASN1_OBJECT **poid, ASN1_TYPE **pvalue); + +char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + const ASN1_OCTET_STRING *ia5); +ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) +int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TLS_FEATURE) + +DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) +DECLARE_ASN1_FUNCTIONS(POLICYINFO) +DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO) +DECLARE_ASN1_FUNCTIONS(USERNOTICE) +DECLARE_ASN1_FUNCTIONS(NOTICEREF) + +DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) +DECLARE_ASN1_FUNCTIONS(DIST_POINT) +DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) +DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT) + +int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, const X509_NAME *iname); + +int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc); +int NAME_CONSTRAINTS_check_CN(X509 *x, NAME_CONSTRAINTS *nc); + +DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) +DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) + +DECLARE_ASN1_ITEM(POLICY_MAPPING) +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) +DECLARE_ASN1_ITEM(POLICY_MAPPINGS) + +DECLARE_ASN1_ITEM(GENERAL_SUBTREE) +DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE) + +DECLARE_ASN1_ITEM(NAME_CONSTRAINTS) +DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS) + +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS) +DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS) + +GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, int gen_type, + const char *value, int is_nc); + +#ifdef OPENSSL_CONF_H +GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf); +GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf, + int is_nc); + +void X509V3_conf_free(CONF_VALUE *val); + +X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, const char *name, + const char *value); +int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, const char *section, + STACK_OF(X509_EXTENSION) **sk); +int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509 *cert); +int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_REQ *req); +int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_CRL *crl); + +X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, + X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *name, const char *value); +int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509 *cert); +int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_REQ *req); +int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_CRL *crl); + +int X509V3_add_value_bool_nf(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool); +int X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint); +void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); +void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash); +#endif + +char *X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section); +STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section); +void X509V3_string_free(X509V3_CTX *ctx, char *str); +void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section); +void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, + X509_REQ *req, X509_CRL *crl, int flags); +/* For API backward compatibility, this is separate from X509V3_set_ctx(): */ +int X509V3_set_issuer_pkey(X509V3_CTX *ctx, EVP_PKEY *pkey); + +int X509V3_add_value(const char *name, const char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_uchar(const char *name, const unsigned char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_bool(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint, + STACK_OF(CONF_VALUE) **extlist); +char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint); +ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value); +char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint); +char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, + const ASN1_ENUMERATED *aint); +int X509V3_EXT_add(X509V3_EXT_METHOD *ext); +int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist); +int X509V3_EXT_add_alias(int nid_to, int nid_from); +void X509V3_EXT_cleanup(void); + +const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); +const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); +int X509V3_add_standard_extensions(void); +STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line); +void *X509V3_EXT_d2i(X509_EXTENSION *ext); +void *X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, + int *idx); + +X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); +int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, + int crit, unsigned long flags); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* The new declarations are in crypto.h, but the old ones were here. */ +#define hex_to_string OPENSSL_buf2hexstr +#define string_to_hex OPENSSL_hexstr2buf +#endif + +void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, + int ml); +int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, + int indent); +#ifndef OPENSSL_NO_STDIO +int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); +#endif +int X509V3_extensions_print(BIO *out, const char *title, + const STACK_OF(X509_EXTENSION) *exts, + unsigned long flag, int indent); + +int X509_check_ca(X509 *x); +int X509_check_purpose(X509 *x, int id, int ca); +int X509_supported_extension(X509_EXTENSION *ex); +int X509_check_issued(X509 *issuer, X509 *subject); +int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); +void X509_set_proxy_flag(X509 *x); +void X509_set_proxy_pathlen(X509 *x, long l); +long X509_get_proxy_pathlen(X509 *x); + +uint32_t X509_get_extension_flags(X509 *x); +uint32_t X509_get_key_usage(X509 *x); +uint32_t X509_get_extended_key_usage(X509 *x); +const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x); +const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x); +const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); +const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); + +int X509_PURPOSE_get_count(void); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); +int X509_PURPOSE_get_by_sname(const char *sname); +int X509_PURPOSE_get_by_id(int id); +int X509_PURPOSE_add(int id, int trust, int flags, + int (*ck)(const X509_PURPOSE *, const X509 *, int), + const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); +char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); +char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); +int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); +int X509_PURPOSE_set(int *p, int purpose); + +STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); +STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); +void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); +STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + +/* Flags for X509_check_* functions */ + +/* + * Always check subject name for host match even if subject alt names present + */ +#define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1 +/* Disable wildcard matching for dnsName fields and common name. */ +#define X509_CHECK_FLAG_NO_WILDCARDS 0x2 +/* Wildcards must not match a partial label. */ +#define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4 +/* Allow (non-partial) wildcards to match multiple labels. */ +#define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8 +/* Constraint verifier subdomain patterns to match a single labels. */ +#define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10 +/* Never check the subject CN */ +#define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 0x20 +/* + * Match reference identifiers starting with "." to any sub-domain. + * This is a non-public flag, turned on implicitly when the subject + * reference identity is a DNS name. + */ +#define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000 + +int X509_check_host(X509 *x, const char *chk, size_t chklen, + unsigned int flags, char **peername); +int X509_check_email(X509 *x, const char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags); + +ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc); +ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc); +int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk, + unsigned long chtype); + +void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent); +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_POLICY_NODE, X509_POLICY_NODE, X509_POLICY_NODE) +#define sk_X509_POLICY_NODE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_value(sk, idx) ((X509_POLICY_NODE *)OPENSSL_sk_value(ossl_check_const_X509_POLICY_NODE_sk_type(sk), (idx))) +#define sk_X509_POLICY_NODE_new(cmp) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new(ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) +#define sk_X509_POLICY_NODE_new_null() ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_null()) +#define sk_X509_POLICY_NODE_new_reserve(cmp, n) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_reserve(ossl_check_X509_POLICY_NODE_compfunc_type(cmp), (n))) +#define sk_X509_POLICY_NODE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_POLICY_NODE_sk_type(sk), (n)) +#define sk_X509_POLICY_NODE_free(sk) OPENSSL_sk_free(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_delete(sk, i) ((X509_POLICY_NODE *)OPENSSL_sk_delete(ossl_check_X509_POLICY_NODE_sk_type(sk), (i))) +#define sk_X509_POLICY_NODE_delete_ptr(sk, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_delete_ptr(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))) +#define sk_X509_POLICY_NODE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_pop(sk) ((X509_POLICY_NODE *)OPENSSL_sk_pop(ossl_check_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_shift(sk) ((X509_POLICY_NODE *)OPENSSL_sk_shift(ossl_check_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_POLICY_NODE_sk_type(sk),ossl_check_X509_POLICY_NODE_freefunc_type(freefunc)) +#define sk_X509_POLICY_NODE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), (idx)) +#define sk_X509_POLICY_NODE_set(sk, idx, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_set(ossl_check_X509_POLICY_NODE_sk_type(sk), (idx), ossl_check_X509_POLICY_NODE_type(ptr))) +#define sk_X509_POLICY_NODE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), pnum) +#define sk_X509_POLICY_NODE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_dup(sk) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_dup(ossl_check_const_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_copyfunc_type(copyfunc), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc))) +#define sk_X509_POLICY_NODE_set_cmp_func(sk, cmp) ((sk_X509_POLICY_NODE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) + +/* clang-format on */ + +#ifndef OPENSSL_NO_RFC3779 +typedef struct ASRange_st { + ASN1_INTEGER *min, *max; +} ASRange; + +#define ASIdOrRange_id 0 +#define ASIdOrRange_range 1 + +typedef struct ASIdOrRange_st { + int type; + union { + ASN1_INTEGER *id; + ASRange *range; + } u; +} ASIdOrRange; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASIdOrRange, ASIdOrRange, ASIdOrRange) +#define sk_ASIdOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_value(sk, idx) ((ASIdOrRange *)OPENSSL_sk_value(ossl_check_const_ASIdOrRange_sk_type(sk), (idx))) +#define sk_ASIdOrRange_new(cmp) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new(ossl_check_ASIdOrRange_compfunc_type(cmp))) +#define sk_ASIdOrRange_new_null() ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_null()) +#define sk_ASIdOrRange_new_reserve(cmp, n) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_reserve(ossl_check_ASIdOrRange_compfunc_type(cmp), (n))) +#define sk_ASIdOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASIdOrRange_sk_type(sk), (n)) +#define sk_ASIdOrRange_free(sk) OPENSSL_sk_free(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_delete(sk, i) ((ASIdOrRange *)OPENSSL_sk_delete(ossl_check_ASIdOrRange_sk_type(sk), (i))) +#define sk_ASIdOrRange_delete_ptr(sk, ptr) ((ASIdOrRange *)OPENSSL_sk_delete_ptr(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))) +#define sk_ASIdOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_pop(sk) ((ASIdOrRange *)OPENSSL_sk_pop(ossl_check_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_shift(sk) ((ASIdOrRange *)OPENSSL_sk_shift(ossl_check_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASIdOrRange_sk_type(sk),ossl_check_ASIdOrRange_freefunc_type(freefunc)) +#define sk_ASIdOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), (idx)) +#define sk_ASIdOrRange_set(sk, idx, ptr) ((ASIdOrRange *)OPENSSL_sk_set(ossl_check_ASIdOrRange_sk_type(sk), (idx), ossl_check_ASIdOrRange_type(ptr))) +#define sk_ASIdOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), pnum) +#define sk_ASIdOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_dup(sk) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_dup(ossl_check_const_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_copyfunc_type(copyfunc), ossl_check_ASIdOrRange_freefunc_type(freefunc))) +#define sk_ASIdOrRange_set_cmp_func(sk, cmp) ((sk_ASIdOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(ASIdOrRange) ASIdOrRanges; + +#define ASIdentifierChoice_inherit 0 +#define ASIdentifierChoice_asIdsOrRanges 1 + +typedef struct ASIdentifierChoice_st { + int type; + union { + ASN1_NULL *inherit; + ASIdOrRanges *asIdsOrRanges; + } u; +} ASIdentifierChoice; + +typedef struct ASIdentifiers_st { + ASIdentifierChoice *asnum, *rdi; +} ASIdentifiers; + +DECLARE_ASN1_FUNCTIONS(ASRange) +DECLARE_ASN1_FUNCTIONS(ASIdOrRange) +DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice) +DECLARE_ASN1_FUNCTIONS(ASIdentifiers) + +typedef struct IPAddressRange_st { + ASN1_BIT_STRING *min, *max; +} IPAddressRange; + +#define IPAddressOrRange_addressPrefix 0 +#define IPAddressOrRange_addressRange 1 + +typedef struct IPAddressOrRange_st { + int type; + union { + ASN1_BIT_STRING *addressPrefix; + IPAddressRange *addressRange; + } u; +} IPAddressOrRange; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(IPAddressOrRange, IPAddressOrRange, IPAddressOrRange) +#define sk_IPAddressOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_value(sk, idx) ((IPAddressOrRange *)OPENSSL_sk_value(ossl_check_const_IPAddressOrRange_sk_type(sk), (idx))) +#define sk_IPAddressOrRange_new(cmp) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new(ossl_check_IPAddressOrRange_compfunc_type(cmp))) +#define sk_IPAddressOrRange_new_null() ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_null()) +#define sk_IPAddressOrRange_new_reserve(cmp, n) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressOrRange_compfunc_type(cmp), (n))) +#define sk_IPAddressOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressOrRange_sk_type(sk), (n)) +#define sk_IPAddressOrRange_free(sk) OPENSSL_sk_free(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_delete(sk, i) ((IPAddressOrRange *)OPENSSL_sk_delete(ossl_check_IPAddressOrRange_sk_type(sk), (i))) +#define sk_IPAddressOrRange_delete_ptr(sk, ptr) ((IPAddressOrRange *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))) +#define sk_IPAddressOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_pop(sk) ((IPAddressOrRange *)OPENSSL_sk_pop(ossl_check_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_shift(sk) ((IPAddressOrRange *)OPENSSL_sk_shift(ossl_check_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressOrRange_sk_type(sk),ossl_check_IPAddressOrRange_freefunc_type(freefunc)) +#define sk_IPAddressOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), (idx)) +#define sk_IPAddressOrRange_set(sk, idx, ptr) ((IPAddressOrRange *)OPENSSL_sk_set(ossl_check_IPAddressOrRange_sk_type(sk), (idx), ossl_check_IPAddressOrRange_type(ptr))) +#define sk_IPAddressOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), pnum) +#define sk_IPAddressOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_dup(sk) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_dup(ossl_check_const_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_copyfunc_type(copyfunc), ossl_check_IPAddressOrRange_freefunc_type(freefunc))) +#define sk_IPAddressOrRange_set_cmp_func(sk, cmp) ((sk_IPAddressOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; + +#define IPAddressChoice_inherit 0 +#define IPAddressChoice_addressesOrRanges 1 + +typedef struct IPAddressChoice_st { + int type; + union { + ASN1_NULL *inherit; + IPAddressOrRanges *addressesOrRanges; + } u; +} IPAddressChoice; + +typedef struct IPAddressFamily_st { + ASN1_OCTET_STRING *addressFamily; + IPAddressChoice *ipAddressChoice; +} IPAddressFamily; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(IPAddressFamily, IPAddressFamily, IPAddressFamily) +#define sk_IPAddressFamily_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_value(sk, idx) ((IPAddressFamily *)OPENSSL_sk_value(ossl_check_const_IPAddressFamily_sk_type(sk), (idx))) +#define sk_IPAddressFamily_new(cmp) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new(ossl_check_IPAddressFamily_compfunc_type(cmp))) +#define sk_IPAddressFamily_new_null() ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_null()) +#define sk_IPAddressFamily_new_reserve(cmp, n) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressFamily_compfunc_type(cmp), (n))) +#define sk_IPAddressFamily_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressFamily_sk_type(sk), (n)) +#define sk_IPAddressFamily_free(sk) OPENSSL_sk_free(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_delete(sk, i) ((IPAddressFamily *)OPENSSL_sk_delete(ossl_check_IPAddressFamily_sk_type(sk), (i))) +#define sk_IPAddressFamily_delete_ptr(sk, ptr) ((IPAddressFamily *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))) +#define sk_IPAddressFamily_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_pop(sk) ((IPAddressFamily *)OPENSSL_sk_pop(ossl_check_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_shift(sk) ((IPAddressFamily *)OPENSSL_sk_shift(ossl_check_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressFamily_sk_type(sk),ossl_check_IPAddressFamily_freefunc_type(freefunc)) +#define sk_IPAddressFamily_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), (idx)) +#define sk_IPAddressFamily_set(sk, idx, ptr) ((IPAddressFamily *)OPENSSL_sk_set(ossl_check_IPAddressFamily_sk_type(sk), (idx), ossl_check_IPAddressFamily_type(ptr))) +#define sk_IPAddressFamily_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), pnum) +#define sk_IPAddressFamily_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_dup(sk) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_dup(ossl_check_const_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_copyfunc_type(copyfunc), ossl_check_IPAddressFamily_freefunc_type(freefunc))) +#define sk_IPAddressFamily_set_cmp_func(sk, cmp) ((sk_IPAddressFamily_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(IPAddressFamily) IPAddrBlocks; + +DECLARE_ASN1_FUNCTIONS(IPAddressRange) +DECLARE_ASN1_FUNCTIONS(IPAddressOrRange) +DECLARE_ASN1_FUNCTIONS(IPAddressChoice) +DECLARE_ASN1_FUNCTIONS(IPAddressFamily) + +/* + * API tag for elements of the ASIdentifer SEQUENCE. + */ +#define V3_ASID_ASNUM 0 +#define V3_ASID_RDI 1 + +/* + * AFI values, assigned by IANA. It'd be nice to make the AFI + * handling code totally generic, but there are too many little things + * that would need to be defined for other address families for it to + * be worth the trouble. + */ +#define IANA_AFI_IPV4 1 +#define IANA_AFI_IPV6 2 + +/* + * Utilities to construct and extract values from RFC3779 extensions, + * since some of the encodings (particularly for IP address prefixes + * and ranges) are a bit tedious to work with directly. + */ +int X509v3_asid_add_inherit(ASIdentifiers *asid, int which); +int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which, + ASN1_INTEGER *min, ASN1_INTEGER *max); +int X509v3_addr_add_inherit(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi); +int X509v3_addr_add_prefix(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *a, const int prefixlen); +int X509v3_addr_add_range(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *min, unsigned char *max); +unsigned X509v3_addr_get_afi(const IPAddressFamily *f); +int X509v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi, + unsigned char *min, unsigned char *max, + const int length); + +/* + * Canonical forms. + */ +int X509v3_asid_is_canonical(ASIdentifiers *asid); +int X509v3_addr_is_canonical(IPAddrBlocks *addr); +int X509v3_asid_canonize(ASIdentifiers *asid); +int X509v3_addr_canonize(IPAddrBlocks *addr); + +/* + * Tests for inheritance and containment. + */ +int X509v3_asid_inherits(ASIdentifiers *asid); +int X509v3_addr_inherits(IPAddrBlocks *addr); +int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b); +int X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b); + +/* + * Check whether RFC 3779 extensions nest properly in chains. + */ +int X509v3_asid_validate_path(X509_STORE_CTX *); +int X509v3_addr_validate_path(X509_STORE_CTX *); +int X509v3_asid_validate_resource_set(STACK_OF(X509) *chain, + ASIdentifiers *ext, + int allow_inheritance); +int X509v3_addr_validate_resource_set(STACK_OF(X509) *chain, + IPAddrBlocks *ext, int allow_inheritance); + +#endif /* OPENSSL_NO_RFC3779 */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING, ASN1_STRING, ASN1_STRING) +#define sk_ASN1_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_value(sk, idx) ((ASN1_STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_sk_type(sk), (idx))) +#define sk_ASN1_STRING_new(cmp) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_compfunc_type(cmp))) +#define sk_ASN1_STRING_new_null() ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_compfunc_type(cmp), (n))) +#define sk_ASN1_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_sk_type(sk), (n)) +#define sk_ASN1_STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_delete(sk, i) ((ASN1_STRING *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_sk_type(sk), (i))) +#define sk_ASN1_STRING_delete_ptr(sk, ptr) ((ASN1_STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))) +#define sk_ASN1_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_pop(sk) ((ASN1_STRING *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_shift(sk) ((ASN1_STRING *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_sk_type(sk),ossl_check_ASN1_STRING_freefunc_type(freefunc)) +#define sk_ASN1_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), (idx)) +#define sk_ASN1_STRING_set(sk, idx, ptr) ((ASN1_STRING *)OPENSSL_sk_set(ossl_check_ASN1_STRING_sk_type(sk), (idx), ossl_check_ASN1_STRING_type(ptr))) +#define sk_ASN1_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), pnum) +#define sk_ASN1_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_dup(sk) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_freefunc_type(freefunc))) +#define sk_ASN1_STRING_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * Admission Syntax + */ +typedef struct NamingAuthority_st NAMING_AUTHORITY; +typedef struct ProfessionInfo_st PROFESSION_INFO; +typedef struct Admissions_st ADMISSIONS; +typedef struct AdmissionSyntax_st ADMISSION_SYNTAX; +DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY) +DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO) +DECLARE_ASN1_FUNCTIONS(ADMISSIONS) +DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PROFESSION_INFO, PROFESSION_INFO, PROFESSION_INFO) +#define sk_PROFESSION_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_value(sk, idx) ((PROFESSION_INFO *)OPENSSL_sk_value(ossl_check_const_PROFESSION_INFO_sk_type(sk), (idx))) +#define sk_PROFESSION_INFO_new(cmp) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new(ossl_check_PROFESSION_INFO_compfunc_type(cmp))) +#define sk_PROFESSION_INFO_new_null() ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_null()) +#define sk_PROFESSION_INFO_new_reserve(cmp, n) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PROFESSION_INFO_compfunc_type(cmp), (n))) +#define sk_PROFESSION_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PROFESSION_INFO_sk_type(sk), (n)) +#define sk_PROFESSION_INFO_free(sk) OPENSSL_sk_free(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_delete(sk, i) ((PROFESSION_INFO *)OPENSSL_sk_delete(ossl_check_PROFESSION_INFO_sk_type(sk), (i))) +#define sk_PROFESSION_INFO_delete_ptr(sk, ptr) ((PROFESSION_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))) +#define sk_PROFESSION_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_pop(sk) ((PROFESSION_INFO *)OPENSSL_sk_pop(ossl_check_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_shift(sk) ((PROFESSION_INFO *)OPENSSL_sk_shift(ossl_check_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PROFESSION_INFO_sk_type(sk),ossl_check_PROFESSION_INFO_freefunc_type(freefunc)) +#define sk_PROFESSION_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), (idx)) +#define sk_PROFESSION_INFO_set(sk, idx, ptr) ((PROFESSION_INFO *)OPENSSL_sk_set(ossl_check_PROFESSION_INFO_sk_type(sk), (idx), ossl_check_PROFESSION_INFO_type(ptr))) +#define sk_PROFESSION_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), pnum) +#define sk_PROFESSION_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_dup(sk) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_dup(ossl_check_const_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_copyfunc_type(copyfunc), ossl_check_PROFESSION_INFO_freefunc_type(freefunc))) +#define sk_PROFESSION_INFO_set_cmp_func(sk, cmp) ((sk_PROFESSION_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(ADMISSIONS, ADMISSIONS, ADMISSIONS) +#define sk_ADMISSIONS_num(sk) OPENSSL_sk_num(ossl_check_const_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_value(sk, idx) ((ADMISSIONS *)OPENSSL_sk_value(ossl_check_const_ADMISSIONS_sk_type(sk), (idx))) +#define sk_ADMISSIONS_new(cmp) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new(ossl_check_ADMISSIONS_compfunc_type(cmp))) +#define sk_ADMISSIONS_new_null() ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_null()) +#define sk_ADMISSIONS_new_reserve(cmp, n) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_reserve(ossl_check_ADMISSIONS_compfunc_type(cmp), (n))) +#define sk_ADMISSIONS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ADMISSIONS_sk_type(sk), (n)) +#define sk_ADMISSIONS_free(sk) OPENSSL_sk_free(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_zero(sk) OPENSSL_sk_zero(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_delete(sk, i) ((ADMISSIONS *)OPENSSL_sk_delete(ossl_check_ADMISSIONS_sk_type(sk), (i))) +#define sk_ADMISSIONS_delete_ptr(sk, ptr) ((ADMISSIONS *)OPENSSL_sk_delete_ptr(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))) +#define sk_ADMISSIONS_push(sk, ptr) OPENSSL_sk_push(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_pop(sk) ((ADMISSIONS *)OPENSSL_sk_pop(ossl_check_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_shift(sk) ((ADMISSIONS *)OPENSSL_sk_shift(ossl_check_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ADMISSIONS_sk_type(sk),ossl_check_ADMISSIONS_freefunc_type(freefunc)) +#define sk_ADMISSIONS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), (idx)) +#define sk_ADMISSIONS_set(sk, idx, ptr) ((ADMISSIONS *)OPENSSL_sk_set(ossl_check_ADMISSIONS_sk_type(sk), (idx), ossl_check_ADMISSIONS_type(ptr))) +#define sk_ADMISSIONS_find(sk, ptr) OPENSSL_sk_find(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), pnum) +#define sk_ADMISSIONS_sort(sk) OPENSSL_sk_sort(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_dup(sk) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_dup(ossl_check_const_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_deep_copy(ossl_check_const_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_copyfunc_type(copyfunc), ossl_check_ADMISSIONS_freefunc_type(freefunc))) +#define sk_ADMISSIONS_set_cmp_func(sk, cmp) ((sk_ADMISSIONS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_compfunc_type(cmp))) + +/* clang-format on */ +typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS; + +const ASN1_OBJECT *NAMING_AUTHORITY_get0_authorityId( + const NAMING_AUTHORITY *n); +const ASN1_IA5STRING *NAMING_AUTHORITY_get0_authorityURL( + const NAMING_AUTHORITY *n); +const ASN1_STRING *NAMING_AUTHORITY_get0_authorityText( + const NAMING_AUTHORITY *n); +void NAMING_AUTHORITY_set0_authorityId(NAMING_AUTHORITY *n, + ASN1_OBJECT *namingAuthorityId); +void NAMING_AUTHORITY_set0_authorityURL(NAMING_AUTHORITY *n, + ASN1_IA5STRING *namingAuthorityUrl); +void NAMING_AUTHORITY_set0_authorityText(NAMING_AUTHORITY *n, + ASN1_STRING *namingAuthorityText); + +const GENERAL_NAME *ADMISSION_SYNTAX_get0_admissionAuthority( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_admissionAuthority( + ADMISSION_SYNTAX *as, GENERAL_NAME *aa); +const STACK_OF(ADMISSIONS) *ADMISSION_SYNTAX_get0_contentsOfAdmissions( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_contentsOfAdmissions( + ADMISSION_SYNTAX *as, STACK_OF(ADMISSIONS) *a); +const GENERAL_NAME *ADMISSIONS_get0_admissionAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_admissionAuthority(ADMISSIONS *a, GENERAL_NAME *aa); +const NAMING_AUTHORITY *ADMISSIONS_get0_namingAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_namingAuthority(ADMISSIONS *a, NAMING_AUTHORITY *na); +const PROFESSION_INFOS *ADMISSIONS_get0_professionInfos(const ADMISSIONS *a); +void ADMISSIONS_set0_professionInfos(ADMISSIONS *a, PROFESSION_INFOS *pi); +const ASN1_OCTET_STRING *PROFESSION_INFO_get0_addProfessionInfo( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_addProfessionInfo( + PROFESSION_INFO *pi, ASN1_OCTET_STRING *aos); +const NAMING_AUTHORITY *PROFESSION_INFO_get0_namingAuthority( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_namingAuthority( + PROFESSION_INFO *pi, NAMING_AUTHORITY *na); +const STACK_OF(ASN1_STRING) *PROFESSION_INFO_get0_professionItems( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionItems( + PROFESSION_INFO *pi, STACK_OF(ASN1_STRING) *as); +const STACK_OF(ASN1_OBJECT) *PROFESSION_INFO_get0_professionOIDs( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionOIDs( + PROFESSION_INFO *pi, STACK_OF(ASN1_OBJECT) *po); +const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_registrationNumber( + PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); + +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +#define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +#define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +#define OSSL_NAMED_DAY_TYPE_INT 0 +#define OSSL_NAMED_DAY_TYPE_BIT 1 +#define OSSL_NAMED_DAY_INT_SUN 1 +#define OSSL_NAMED_DAY_INT_MON 2 +#define OSSL_NAMED_DAY_INT_TUE 3 +#define OSSL_NAMED_DAY_INT_WED 4 +#define OSSL_NAMED_DAY_INT_THU 5 +#define OSSL_NAMED_DAY_INT_FRI 6 +#define OSSL_NAMED_DAY_INT_SAT 7 +#define OSSL_NAMED_DAY_BIT_SUN 0 +#define OSSL_NAMED_DAY_BIT_MON 1 +#define OSSL_NAMED_DAY_BIT_TUE 2 +#define OSSL_NAMED_DAY_BIT_WED 3 +#define OSSL_NAMED_DAY_BIT_THU 4 +#define OSSL_NAMED_DAY_BIT_FRI 5 +#define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +#define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +#define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +#define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +#define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +#define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +#define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +#define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +#define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +#define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +#define OSSL_TIME_SPEC_DAY_BIT_MON 1 +#define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +#define OSSL_TIME_SPEC_DAY_BIT_WED 3 +#define OSSL_TIME_SPEC_DAY_BIT_THU 4 +#define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +#define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +#define OSSL_TIME_SPEC_DAY_INT_SUN 1 +#define OSSL_TIME_SPEC_DAY_INT_MON 2 +#define OSSL_TIME_SPEC_DAY_INT_TUE 3 +#define OSSL_TIME_SPEC_DAY_INT_WED 4 +#define OSSL_TIME_SPEC_DAY_INT_THU 5 +#define OSSL_TIME_SPEC_DAY_INT_FRI 6 +#define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +#define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +#define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +#define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +#define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +#define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +#define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +#define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +#define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +#define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +#define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +#define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +#define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +#define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +#define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +#define OSSL_TIME_SPEC_INT_MONTH_APR 4 +#define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +#define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +#define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +#define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +#define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +#define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +#define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +#define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +#define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +#define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +#define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +#define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +#define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +#define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +#define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +#define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +#define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +#define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +#define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +#define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +#define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +#define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + +/* clang-format on */ + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +#define OSSL_ATTR_MAP_TYPE 0 +#define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + +/* clang-format on */ + +#define OSSL_AAA_ATTRIBUTE_TYPE 0 +#define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/include/progs.h b/deps/openssl/config/archs/linux64-riscv64/asm/include/progs.h new file mode 100644 index 00000000000000..2214340fa813ac --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/include/progs.h @@ -0,0 +1,125 @@ +/* + * WARNING: do not edit! + * Generated by apps/progs.pl + * + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "function.h" + +extern int asn1parse_main(int argc, char *argv[]); +extern int ca_main(int argc, char *argv[]); +extern int ciphers_main(int argc, char *argv[]); +extern int cmp_main(int argc, char *argv[]); +extern int cms_main(int argc, char *argv[]); +extern int crl_main(int argc, char *argv[]); +extern int crl2pkcs7_main(int argc, char *argv[]); +extern int dgst_main(int argc, char *argv[]); +extern int dhparam_main(int argc, char *argv[]); +extern int dsa_main(int argc, char *argv[]); +extern int dsaparam_main(int argc, char *argv[]); +extern int ec_main(int argc, char *argv[]); +extern int ecparam_main(int argc, char *argv[]); +extern int enc_main(int argc, char *argv[]); +extern int engine_main(int argc, char *argv[]); +extern int errstr_main(int argc, char *argv[]); +extern int fipsinstall_main(int argc, char *argv[]); +extern int gendsa_main(int argc, char *argv[]); +extern int genpkey_main(int argc, char *argv[]); +extern int genrsa_main(int argc, char *argv[]); +extern int help_main(int argc, char *argv[]); +extern int info_main(int argc, char *argv[]); +extern int kdf_main(int argc, char *argv[]); +extern int list_main(int argc, char *argv[]); +extern int mac_main(int argc, char *argv[]); +extern int nseq_main(int argc, char *argv[]); +extern int ocsp_main(int argc, char *argv[]); +extern int passwd_main(int argc, char *argv[]); +extern int pkcs12_main(int argc, char *argv[]); +extern int pkcs7_main(int argc, char *argv[]); +extern int pkcs8_main(int argc, char *argv[]); +extern int pkey_main(int argc, char *argv[]); +extern int pkeyparam_main(int argc, char *argv[]); +extern int pkeyutl_main(int argc, char *argv[]); +extern int prime_main(int argc, char *argv[]); +extern int rand_main(int argc, char *argv[]); +extern int rehash_main(int argc, char *argv[]); +extern int req_main(int argc, char *argv[]); +extern int rsa_main(int argc, char *argv[]); +extern int rsautl_main(int argc, char *argv[]); +extern int s_client_main(int argc, char *argv[]); +extern int s_server_main(int argc, char *argv[]); +extern int s_time_main(int argc, char *argv[]); +extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); +extern int smime_main(int argc, char *argv[]); +extern int speed_main(int argc, char *argv[]); +extern int spkac_main(int argc, char *argv[]); +extern int srp_main(int argc, char *argv[]); +extern int storeutl_main(int argc, char *argv[]); +extern int ts_main(int argc, char *argv[]); +extern int verify_main(int argc, char *argv[]); +extern int version_main(int argc, char *argv[]); +extern int x509_main(int argc, char *argv[]); + +extern const OPTIONS asn1parse_options[]; +extern const OPTIONS ca_options[]; +extern const OPTIONS ciphers_options[]; +extern const OPTIONS cmp_options[]; +extern const OPTIONS cms_options[]; +extern const OPTIONS crl_options[]; +extern const OPTIONS crl2pkcs7_options[]; +extern const OPTIONS dgst_options[]; +extern const OPTIONS dhparam_options[]; +extern const OPTIONS dsa_options[]; +extern const OPTIONS dsaparam_options[]; +extern const OPTIONS ec_options[]; +extern const OPTIONS ecparam_options[]; +extern const OPTIONS enc_options[]; +extern const OPTIONS engine_options[]; +extern const OPTIONS errstr_options[]; +extern const OPTIONS fipsinstall_options[]; +extern const OPTIONS gendsa_options[]; +extern const OPTIONS genpkey_options[]; +extern const OPTIONS genrsa_options[]; +extern const OPTIONS help_options[]; +extern const OPTIONS info_options[]; +extern const OPTIONS kdf_options[]; +extern const OPTIONS list_options[]; +extern const OPTIONS mac_options[]; +extern const OPTIONS nseq_options[]; +extern const OPTIONS ocsp_options[]; +extern const OPTIONS passwd_options[]; +extern const OPTIONS pkcs12_options[]; +extern const OPTIONS pkcs7_options[]; +extern const OPTIONS pkcs8_options[]; +extern const OPTIONS pkey_options[]; +extern const OPTIONS pkeyparam_options[]; +extern const OPTIONS pkeyutl_options[]; +extern const OPTIONS prime_options[]; +extern const OPTIONS rand_options[]; +extern const OPTIONS rehash_options[]; +extern const OPTIONS req_options[]; +extern const OPTIONS rsa_options[]; +extern const OPTIONS rsautl_options[]; +extern const OPTIONS s_client_options[]; +extern const OPTIONS s_server_options[]; +extern const OPTIONS s_time_options[]; +extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; +extern const OPTIONS smime_options[]; +extern const OPTIONS speed_options[]; +extern const OPTIONS spkac_options[]; +extern const OPTIONS srp_options[]; +extern const OPTIONS storeutl_options[]; +extern const OPTIONS ts_options[]; +extern const OPTIONS verify_options[]; +extern const OPTIONS version_options[]; +extern const OPTIONS x509_options[]; + +extern FUNCTION functions[]; diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/openssl-cl.gypi b/deps/openssl/config/archs/linux64-riscv64/asm/openssl-cl.gypi new file mode 100644 index 00000000000000..fce000ec02a54f --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/openssl-cl.gypi @@ -0,0 +1,116 @@ +{ + 'variables': { + 'openssl_defines_linux64-riscv64': [ + 'NDEBUG', + 'OPENSSL_USE_NODELETE', + 'OPENSSL_BUILDING_OPENSSL', + 'BROTLI', + 'ZLIB', + 'ZSTD', + 'AES_ASM', + 'GHASH_ASM', + 'INCLUDE_C_CHACHA20', + 'INCLUDE_C_SHA256', + 'INCLUDE_C_SHA512', + 'OPENSSL_CPUID_OBJ', + 'OPENSSL_SM3_ASM', + 'SHA256_ASM', + 'SHA512_ASM', + 'SM4_ASM', + 'OPENSSL_PIC', + ], + 'openssl_cflags_linux64-riscv64': [ + '-Wa,--noexecstack', + '-Wall -O3', + '-pthread', + '-Wall -O3', + ], + 'openssl_ex_libs_linux64-riscv64': [ + '-lm -ldl -pthread', + ], + 'openssl_cli_srcs_linux64-riscv64': [ + 'openssl/apps/lib/cmp_mock_srv.c', + 'openssl/apps/asn1parse.c', + 'openssl/apps/ca.c', + 'openssl/apps/ciphers.c', + 'openssl/apps/cmp.c', + 'openssl/apps/cms.c', + 'openssl/apps/crl.c', + 'openssl/apps/crl2pkcs7.c', + 'openssl/apps/dgst.c', + 'openssl/apps/dhparam.c', + 'openssl/apps/dsa.c', + 'openssl/apps/dsaparam.c', + 'openssl/apps/ec.c', + 'openssl/apps/ecparam.c', + 'openssl/apps/enc.c', + 'openssl/apps/engine.c', + 'openssl/apps/errstr.c', + 'openssl/apps/fipsinstall.c', + 'openssl/apps/gendsa.c', + 'openssl/apps/genpkey.c', + 'openssl/apps/genrsa.c', + 'openssl/apps/info.c', + 'openssl/apps/kdf.c', + 'openssl/apps/list.c', + 'openssl/apps/mac.c', + 'openssl/apps/nseq.c', + 'openssl/apps/ocsp.c', + 'openssl/apps/openssl.c', + 'openssl/apps/passwd.c', + 'openssl/apps/pkcs12.c', + 'openssl/apps/pkcs7.c', + 'openssl/apps/pkcs8.c', + 'openssl/apps/pkey.c', + 'openssl/apps/pkeyparam.c', + 'openssl/apps/pkeyutl.c', + 'openssl/apps/prime.c', + './config/archs/linux64-riscv64/asm/apps/progs.c', + 'openssl/apps/rand.c', + 'openssl/apps/rehash.c', + 'openssl/apps/req.c', + 'openssl/apps/rsa.c', + 'openssl/apps/rsautl.c', + 'openssl/apps/s_client.c', + 'openssl/apps/s_server.c', + 'openssl/apps/s_time.c', + 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', + 'openssl/apps/smime.c', + 'openssl/apps/speed.c', + 'openssl/apps/spkac.c', + 'openssl/apps/srp.c', + 'openssl/apps/storeutl.c', + 'openssl/apps/ts.c', + 'openssl/apps/verify.c', + 'openssl/apps/version.c', + 'openssl/apps/x509.c', + 'openssl/apps/lib/app_libctx.c', + 'openssl/apps/lib/app_params.c', + 'openssl/apps/lib/app_provider.c', + 'openssl/apps/lib/app_rand.c', + 'openssl/apps/lib/app_x509.c', + 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', + 'openssl/apps/lib/apps_ui.c', + 'openssl/apps/lib/columns.c', + 'openssl/apps/lib/engine.c', + 'openssl/apps/lib/engine_loader.c', + 'openssl/apps/lib/fmt.c', + 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', + 'openssl/apps/lib/names.c', + 'openssl/apps/lib/opt.c', + 'openssl/apps/lib/s_cb.c', + 'openssl/apps/lib/s_socket.c', + 'openssl/apps/lib/tlssrp_depr.c', + ], + }, + 'defines': ['<@(openssl_defines_linux64-riscv64)'], + 'include_dirs': [ + './include', + ], + 'cflags' : ['<@(openssl_cflags_linux64-riscv64)'], + 'libraries': ['<@(openssl_ex_libs_linux64-riscv64)'], + 'sources': ['<@(openssl_cli_srcs_linux64-riscv64)'], +} diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/openssl-fips.gypi b/deps/openssl/config/archs/linux64-riscv64/asm/openssl-fips.gypi new file mode 100644 index 00000000000000..b519976463aac9 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/openssl-fips.gypi @@ -0,0 +1,393 @@ +{ + 'variables': { + 'openssl_sources': [ + 'openssl/crypto/aes/aes_cbc.c', + 'openssl/crypto/aes/aes_ecb.c', + 'openssl/crypto/aes/aes_misc.c', + 'openssl/crypto/bn/bn_add.c', + 'openssl/crypto/bn/bn_asm.c', + 'openssl/crypto/bn/bn_blind.c', + 'openssl/crypto/bn/bn_const.c', + 'openssl/crypto/bn/bn_conv.c', + 'openssl/crypto/bn/bn_ctx.c', + 'openssl/crypto/bn/bn_dh.c', + 'openssl/crypto/bn/bn_div.c', + 'openssl/crypto/bn/bn_exp.c', + 'openssl/crypto/bn/bn_exp2.c', + 'openssl/crypto/bn/bn_gcd.c', + 'openssl/crypto/bn/bn_gf2m.c', + 'openssl/crypto/bn/bn_intern.c', + 'openssl/crypto/bn/bn_kron.c', + 'openssl/crypto/bn/bn_lib.c', + 'openssl/crypto/bn/bn_mod.c', + 'openssl/crypto/bn/bn_mont.c', + 'openssl/crypto/bn/bn_mpi.c', + 'openssl/crypto/bn/bn_mul.c', + 'openssl/crypto/bn/bn_nist.c', + 'openssl/crypto/bn/bn_prime.c', + 'openssl/crypto/bn/bn_rand.c', + 'openssl/crypto/bn/bn_recp.c', + 'openssl/crypto/bn/bn_rsa_fips186_4.c', + 'openssl/crypto/bn/bn_shift.c', + 'openssl/crypto/bn/bn_sqr.c', + 'openssl/crypto/bn/bn_sqrt.c', + 'openssl/crypto/bn/bn_word.c', + 'openssl/crypto/buffer/buffer.c', + 'openssl/crypto/cmac/cmac.c', + 'openssl/crypto/des/des_enc.c', + 'openssl/crypto/des/ecb3_enc.c', + 'openssl/crypto/des/fcrypt_b.c', + 'openssl/crypto/des/set_key.c', + 'openssl/crypto/dh/dh_backend.c', + 'openssl/crypto/dh/dh_check.c', + 'openssl/crypto/dh/dh_gen.c', + 'openssl/crypto/dh/dh_group_params.c', + 'openssl/crypto/dh/dh_kdf.c', + 'openssl/crypto/dh/dh_key.c', + 'openssl/crypto/dh/dh_lib.c', + 'openssl/crypto/dsa/dsa_backend.c', + 'openssl/crypto/dsa/dsa_check.c', + 'openssl/crypto/dsa/dsa_gen.c', + 'openssl/crypto/dsa/dsa_key.c', + 'openssl/crypto/dsa/dsa_lib.c', + 'openssl/crypto/dsa/dsa_ossl.c', + 'openssl/crypto/dsa/dsa_sign.c', + 'openssl/crypto/dsa/dsa_vrf.c', + 'openssl/crypto/ec/curve448/arch_32/f_impl32.c', + 'openssl/crypto/ec/curve448/arch_64/f_impl64.c', + 'openssl/crypto/ec/curve448/curve448.c', + 'openssl/crypto/ec/curve448/curve448_tables.c', + 'openssl/crypto/ec/curve448/eddsa.c', + 'openssl/crypto/ec/curve448/f_generic.c', + 'openssl/crypto/ec/curve448/scalar.c', + 'openssl/crypto/ec/curve25519.c', + 'openssl/crypto/ec/ec2_oct.c', + 'openssl/crypto/ec/ec2_smpl.c', + 'openssl/crypto/ec/ec_asn1.c', + 'openssl/crypto/ec/ec_backend.c', + 'openssl/crypto/ec/ec_check.c', + 'openssl/crypto/ec/ec_curve.c', + 'openssl/crypto/ec/ec_cvt.c', + 'openssl/crypto/ec/ec_key.c', + 'openssl/crypto/ec/ec_kmeth.c', + 'openssl/crypto/ec/ec_lib.c', + 'openssl/crypto/ec/ec_mult.c', + 'openssl/crypto/ec/ec_oct.c', + 'openssl/crypto/ec/ecdh_kdf.c', + 'openssl/crypto/ec/ecdh_ossl.c', + 'openssl/crypto/ec/ecdsa_ossl.c', + 'openssl/crypto/ec/ecdsa_sign.c', + 'openssl/crypto/ec/ecdsa_vrf.c', + 'openssl/crypto/ec/ecp_mont.c', + 'openssl/crypto/ec/ecp_nist.c', + 'openssl/crypto/ec/ecp_oct.c', + 'openssl/crypto/ec/ecp_smpl.c', + 'openssl/crypto/ec/ecx_backend.c', + 'openssl/crypto/ec/ecx_key.c', + 'openssl/crypto/evp/asymcipher.c', + 'openssl/crypto/evp/dh_support.c', + 'openssl/crypto/evp/digest.c', + 'openssl/crypto/evp/ec_support.c', + 'openssl/crypto/evp/evp_enc.c', + 'openssl/crypto/evp/evp_fetch.c', + 'openssl/crypto/evp/evp_lib.c', + 'openssl/crypto/evp/evp_rand.c', + 'openssl/crypto/evp/evp_utils.c', + 'openssl/crypto/evp/exchange.c', + 'openssl/crypto/evp/kdf_lib.c', + 'openssl/crypto/evp/kdf_meth.c', + 'openssl/crypto/evp/kem.c', + 'openssl/crypto/evp/keymgmt_lib.c', + 'openssl/crypto/evp/keymgmt_meth.c', + 'openssl/crypto/evp/mac_lib.c', + 'openssl/crypto/evp/mac_meth.c', + 'openssl/crypto/evp/p_lib.c', + 'openssl/crypto/evp/pmeth_check.c', + 'openssl/crypto/evp/pmeth_gn.c', + 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', + 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', + 'openssl/crypto/ffc/ffc_backend.c', + 'openssl/crypto/ffc/ffc_dh.c', + 'openssl/crypto/ffc/ffc_key_generate.c', + 'openssl/crypto/ffc/ffc_key_validate.c', + 'openssl/crypto/ffc/ffc_params.c', + 'openssl/crypto/ffc/ffc_params_generate.c', + 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', + 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/lhash/lhash.c', + 'openssl/crypto/asn1_dsa.c', + 'openssl/crypto/bsearch.c', + 'openssl/crypto/context.c', + 'openssl/crypto/core_algorithm.c', + 'openssl/crypto/core_fetch.c', + 'openssl/crypto/core_namemap.c', + 'openssl/crypto/cpuid.c', + 'openssl/crypto/cryptlib.c', + 'openssl/crypto/ctype.c', + 'openssl/crypto/der_writer.c', + 'openssl/crypto/ex_data.c', + 'openssl/crypto/initthread.c', + 'openssl/crypto/o_str.c', + 'openssl/crypto/packet.c', + 'openssl/crypto/param_build.c', + 'openssl/crypto/param_build_set.c', + 'openssl/crypto/params.c', + 'openssl/crypto/params_dup.c', + 'openssl/crypto/params_from_text.c', + 'openssl/crypto/provider_core.c', + 'openssl/crypto/provider_predefined.c', + 'openssl/crypto/riscvcap.c', + 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sparse_array.c', + 'openssl/crypto/threads_lib.c', + 'openssl/crypto/threads_none.c', + 'openssl/crypto/threads_pthread.c', + 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', + 'openssl/crypto/modes/cbc128.c', + 'openssl/crypto/modes/ccm128.c', + 'openssl/crypto/modes/cfb128.c', + 'openssl/crypto/modes/ctr128.c', + 'openssl/crypto/modes/gcm128.c', + 'openssl/crypto/modes/ofb128.c', + 'openssl/crypto/modes/wrap128.c', + 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', + 'openssl/crypto/property/defn_cache.c', + 'openssl/crypto/property/property.c', + 'openssl/crypto/property/property_parse.c', + 'openssl/crypto/property/property_query.c', + 'openssl/crypto/property/property_string.c', + 'openssl/crypto/rand/rand_lib.c', + 'openssl/crypto/rsa/rsa_acvp_test_params.c', + 'openssl/crypto/rsa/rsa_backend.c', + 'openssl/crypto/rsa/rsa_chk.c', + 'openssl/crypto/rsa/rsa_crpt.c', + 'openssl/crypto/rsa/rsa_gen.c', + 'openssl/crypto/rsa/rsa_lib.c', + 'openssl/crypto/rsa/rsa_mp_names.c', + 'openssl/crypto/rsa/rsa_none.c', + 'openssl/crypto/rsa/rsa_oaep.c', + 'openssl/crypto/rsa/rsa_ossl.c', + 'openssl/crypto/rsa/rsa_pk1.c', + 'openssl/crypto/rsa/rsa_pss.c', + 'openssl/crypto/rsa/rsa_schemes.c', + 'openssl/crypto/rsa/rsa_sign.c', + 'openssl/crypto/rsa/rsa_sp800_56b_check.c', + 'openssl/crypto/rsa/rsa_sp800_56b_gen.c', + 'openssl/crypto/rsa/rsa_x931.c', + 'openssl/crypto/sha/keccak1600.c', + 'openssl/crypto/sha/sha1dgst.c', + 'openssl/crypto/sha/sha256.c', + 'openssl/crypto/sha/sha3.c', + 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/sha/sha_riscv.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', + 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', + 'openssl/providers/common/der/der_rsa_sig.c', + 'openssl/providers/common/bio_prov.c', + 'openssl/providers/common/capabilities.c', + 'openssl/providers/common/digest_to_nid.c', + 'openssl/providers/common/provider_seeding.c', + 'openssl/providers/common/provider_util.c', + 'openssl/providers/common/securitycheck.c', + 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', + 'openssl/providers/fips/fipsprov.c', + 'openssl/providers/fips/self_test.c', + 'openssl/providers/fips/self_test_kats.c', + 'openssl/providers/implementations/asymciphers/rsa_enc.c', + 'openssl/providers/implementations/ciphers/cipher_aes.c', + 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c', + 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_wrp.c', + 'openssl/providers/implementations/ciphers/cipher_aes_xts.c', + 'openssl/providers/implementations/ciphers/cipher_aes_xts_fips.c', + 'openssl/providers/implementations/ciphers/cipher_aes_xts_hw.c', + 'openssl/providers/implementations/ciphers/cipher_cts.c', + 'openssl/providers/implementations/ciphers/cipher_tdes.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_hw.c', + 'openssl/providers/implementations/digests/sha2_prov.c', + 'openssl/providers/implementations/digests/sha3_prov.c', + 'openssl/providers/implementations/exchange/dh_exch.c', + 'openssl/providers/implementations/exchange/ecdh_exch.c', + 'openssl/providers/implementations/exchange/ecx_exch.c', + 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/kbkdf.c', + 'openssl/providers/implementations/kdfs/pbkdf2.c', + 'openssl/providers/implementations/kdfs/pbkdf2_fips.c', + 'openssl/providers/implementations/kdfs/sshkdf.c', + 'openssl/providers/implementations/kdfs/sskdf.c', + 'openssl/providers/implementations/kdfs/tls1_prf.c', + 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', + 'openssl/providers/implementations/kem/rsa_kem.c', + 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', + 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ec_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', + 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', + 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', + 'openssl/providers/implementations/macs/cmac_prov.c', + 'openssl/providers/implementations/macs/gmac_prov.c', + 'openssl/providers/implementations/macs/hmac_prov.c', + 'openssl/providers/implementations/macs/kmac_prov.c', + 'openssl/providers/implementations/rands/drbg.c', + 'openssl/providers/implementations/rands/drbg_ctr.c', + 'openssl/providers/implementations/rands/drbg_hash.c', + 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', + 'openssl/providers/implementations/rands/test_rng.c', + 'openssl/providers/implementations/signature/dsa_sig.c', + 'openssl/providers/implementations/signature/ecdsa_sig.c', + 'openssl/providers/implementations/signature/eddsa_sig.c', + 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', + 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', + 'openssl/providers/common/der/der_dsa_key.c', + 'openssl/providers/common/der/der_dsa_sig.c', + 'openssl/providers/common/der/der_ec_key.c', + 'openssl/providers/common/der/der_ec_sig.c', + 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', + 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', + 'openssl/providers/common/provider_ctx.c', + 'openssl/providers/common/provider_err.c', + 'openssl/providers/implementations/ciphers/ciphercommon.c', + 'openssl/providers/implementations/ciphers/ciphercommon_block.c', + 'openssl/providers/implementations/ciphers/ciphercommon_ccm.c', + 'openssl/providers/implementations/ciphers/ciphercommon_ccm_hw.c', + 'openssl/providers/implementations/ciphers/ciphercommon_gcm.c', + 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', + 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', + 'openssl/providers/implementations/digests/digestcommon.c', + 'openssl/ssl/record/methods/tls_pad.c', + 'openssl/providers/fips/fips_entry.c', + + ], + 'openssl_sources_linux64-riscv64': [ + './config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zkn.s', + './config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s', + './config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvkb-zvkned.s', + './config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvkned.s', + './config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64.s', + './config/archs/linux64-riscv64/asm/crypto/chacha/chacha-riscv64-v-zbb-zvkb.s', + './config/archs/linux64-riscv64/asm/crypto/chacha/chacha-riscv64-v-zbb.s', + './config/archs/linux64-riscv64/asm/crypto/params_idx.c', + './config/archs/linux64-riscv64/asm/crypto/riscv64cpuid.s', + './config/archs/linux64-riscv64/asm/crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s', + './config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64-zvkb-zvbc.s', + './config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64-zvkg.s', + './config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64.s', + './config/archs/linux64-riscv64/asm/crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S', + './config/archs/linux64-riscv64/asm/crypto/sha/sha512-riscv64-zvkb-zvknhb.S', + './config/archs/linux64-riscv64/asm/crypto/sm3/sm3-riscv64-zvksh.S', + './config/archs/linux64-riscv64/asm/crypto/sm4/sm4-riscv64-zvksed.s', + './config/archs/linux64-riscv64/asm/providers/common/der/der_sm2_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_digests_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_dsa_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_ec_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_ecx_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_ml_dsa_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_rsa_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_slh_dsa_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_wrap_gen.c', + './config/archs/linux64-riscv64/asm/providers/legacy.ld', + './config/archs/linux64-riscv64/asm/providers/fips.ld', + + ], + 'openssl_defines_linux64-riscv64': [ + 'NDEBUG', + 'OPENSSL_USE_NODELETE', + 'OPENSSL_BUILDING_OPENSSL', + 'BROTLI', + 'ZLIB', + 'ZSTD', + 'AES_ASM', + 'FIPS_MODULE', + 'GHASH_ASM', + 'INCLUDE_C_SHA256', + 'INCLUDE_C_SHA512', + 'OPENSSL_CPUID_OBJ', + 'SHA256_ASM', + 'SHA512_ASM', + 'SM4_ASM', + 'FIPS_MODULE', + ], + 'openssl_cflags_linux64-riscv64': [ + '-Wa,--noexecstack', + '-Wall -O3', + '-pthread', + '-Wall -O3', + ], + 'openssl_ex_libs_linux64-riscv64': [ + '-lm -ldl -pthread', + ], + 'linker_script': '<(PRODUCT_DIR)/../../deps/openssl/config/archs/linux64-riscv64/asm/providers/fips.ld' + }, + 'include_dirs': [ + '.', + './include', + './crypto', + './crypto/include/internal', + './providers/common/include', + ], + 'defines': ['<@(openssl_defines_linux64-riscv64)'], + 'cflags': ['<@(openssl_cflags_linux64-riscv64)'], + 'libraries': ['<@(openssl_ex_libs_linux64-riscv64)'], + 'ldflags': ['-Wl,--version-script=<@(linker_script)'], + 'sources': ['<@(openssl_sources)', '<@(openssl_sources_linux64-riscv64)'], + 'direct_dependent_settings': { + 'include_dirs': ['./include', '.'], + 'defines': ['<@(openssl_defines_linux64-riscv64)'], + }, +} diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/openssl.gypi b/deps/openssl/config/archs/linux64-riscv64/asm/openssl.gypi new file mode 100644 index 00000000000000..966cbebc680a9e --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/openssl.gypi @@ -0,0 +1,1196 @@ +{ + 'variables': { + 'openssl_sources': [ + 'openssl/ssl/bio_ssl.c', + 'openssl/ssl/d1_lib.c', + 'openssl/ssl/d1_msg.c', + 'openssl/ssl/d1_srtp.c', + 'openssl/ssl/methods.c', + 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', + 'openssl/ssl/s3_enc.c', + 'openssl/ssl/s3_lib.c', + 'openssl/ssl/s3_msg.c', + 'openssl/ssl/ssl_asn1.c', + 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', + 'openssl/ssl/ssl_ciph.c', + 'openssl/ssl/ssl_conf.c', + 'openssl/ssl/ssl_err_legacy.c', + 'openssl/ssl/ssl_init.c', + 'openssl/ssl/ssl_lib.c', + 'openssl/ssl/ssl_mcnf.c', + 'openssl/ssl/ssl_rsa.c', + 'openssl/ssl/ssl_rsa_legacy.c', + 'openssl/ssl/ssl_sess.c', + 'openssl/ssl/ssl_stat.c', + 'openssl/ssl/ssl_txt.c', + 'openssl/ssl/ssl_utst.c', + 'openssl/ssl/t1_enc.c', + 'openssl/ssl/t1_lib.c', + 'openssl/ssl/t1_trce.c', + 'openssl/ssl/tls13_enc.c', + 'openssl/ssl/tls_depr.c', + 'openssl/ssl/tls_srp.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', + 'openssl/ssl/record/rec_layer_d1.c', + 'openssl/ssl/record/rec_layer_s3.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', + 'openssl/ssl/statem/extensions.c', + 'openssl/ssl/statem/extensions_clnt.c', + 'openssl/ssl/statem/extensions_cust.c', + 'openssl/ssl/statem/extensions_srvr.c', + 'openssl/ssl/statem/statem.c', + 'openssl/ssl/statem/statem_clnt.c', + 'openssl/ssl/statem/statem_dtls.c', + 'openssl/ssl/statem/statem_lib.c', + 'openssl/ssl/statem/statem_srvr.c', + 'openssl/crypto/aes/aes_cbc.c', + 'openssl/crypto/aes/aes_cfb.c', + 'openssl/crypto/aes/aes_ecb.c', + 'openssl/crypto/aes/aes_ige.c', + 'openssl/crypto/aes/aes_misc.c', + 'openssl/crypto/aes/aes_ofb.c', + 'openssl/crypto/aes/aes_wrap.c', + 'openssl/crypto/aria/aria.c', + 'openssl/crypto/asn1/a_bitstr.c', + 'openssl/crypto/asn1/a_d2i_fp.c', + 'openssl/crypto/asn1/a_digest.c', + 'openssl/crypto/asn1/a_dup.c', + 'openssl/crypto/asn1/a_gentm.c', + 'openssl/crypto/asn1/a_i2d_fp.c', + 'openssl/crypto/asn1/a_int.c', + 'openssl/crypto/asn1/a_mbstr.c', + 'openssl/crypto/asn1/a_object.c', + 'openssl/crypto/asn1/a_octet.c', + 'openssl/crypto/asn1/a_print.c', + 'openssl/crypto/asn1/a_sign.c', + 'openssl/crypto/asn1/a_strex.c', + 'openssl/crypto/asn1/a_strnid.c', + 'openssl/crypto/asn1/a_time.c', + 'openssl/crypto/asn1/a_type.c', + 'openssl/crypto/asn1/a_utctm.c', + 'openssl/crypto/asn1/a_utf8.c', + 'openssl/crypto/asn1/a_verify.c', + 'openssl/crypto/asn1/ameth_lib.c', + 'openssl/crypto/asn1/asn1_err.c', + 'openssl/crypto/asn1/asn1_gen.c', + 'openssl/crypto/asn1/asn1_item_list.c', + 'openssl/crypto/asn1/asn1_lib.c', + 'openssl/crypto/asn1/asn1_parse.c', + 'openssl/crypto/asn1/asn_mime.c', + 'openssl/crypto/asn1/asn_moid.c', + 'openssl/crypto/asn1/asn_mstbl.c', + 'openssl/crypto/asn1/asn_pack.c', + 'openssl/crypto/asn1/bio_asn1.c', + 'openssl/crypto/asn1/bio_ndef.c', + 'openssl/crypto/asn1/d2i_param.c', + 'openssl/crypto/asn1/d2i_pr.c', + 'openssl/crypto/asn1/d2i_pu.c', + 'openssl/crypto/asn1/evp_asn1.c', + 'openssl/crypto/asn1/f_int.c', + 'openssl/crypto/asn1/f_string.c', + 'openssl/crypto/asn1/i2d_evp.c', + 'openssl/crypto/asn1/n_pkey.c', + 'openssl/crypto/asn1/nsseq.c', + 'openssl/crypto/asn1/p5_pbe.c', + 'openssl/crypto/asn1/p5_pbev2.c', + 'openssl/crypto/asn1/p5_scrypt.c', + 'openssl/crypto/asn1/p8_pkey.c', + 'openssl/crypto/asn1/t_bitst.c', + 'openssl/crypto/asn1/t_pkey.c', + 'openssl/crypto/asn1/t_spki.c', + 'openssl/crypto/asn1/tasn_dec.c', + 'openssl/crypto/asn1/tasn_enc.c', + 'openssl/crypto/asn1/tasn_fre.c', + 'openssl/crypto/asn1/tasn_new.c', + 'openssl/crypto/asn1/tasn_prn.c', + 'openssl/crypto/asn1/tasn_scn.c', + 'openssl/crypto/asn1/tasn_typ.c', + 'openssl/crypto/asn1/tasn_utl.c', + 'openssl/crypto/asn1/x_algor.c', + 'openssl/crypto/asn1/x_bignum.c', + 'openssl/crypto/asn1/x_info.c', + 'openssl/crypto/asn1/x_int64.c', + 'openssl/crypto/asn1/x_long.c', + 'openssl/crypto/asn1/x_pkey.c', + 'openssl/crypto/asn1/x_sig.c', + 'openssl/crypto/asn1/x_spki.c', + 'openssl/crypto/asn1/x_val.c', + 'openssl/crypto/async/arch/async_null.c', + 'openssl/crypto/async/arch/async_posix.c', + 'openssl/crypto/async/arch/async_win.c', + 'openssl/crypto/async/async.c', + 'openssl/crypto/async/async_err.c', + 'openssl/crypto/async/async_wait.c', + 'openssl/crypto/bf/bf_cfb64.c', + 'openssl/crypto/bf/bf_ecb.c', + 'openssl/crypto/bf/bf_enc.c', + 'openssl/crypto/bf/bf_ofb64.c', + 'openssl/crypto/bf/bf_skey.c', + 'openssl/crypto/bio/bf_buff.c', + 'openssl/crypto/bio/bf_lbuf.c', + 'openssl/crypto/bio/bf_nbio.c', + 'openssl/crypto/bio/bf_null.c', + 'openssl/crypto/bio/bf_prefix.c', + 'openssl/crypto/bio/bf_readbuff.c', + 'openssl/crypto/bio/bio_addr.c', + 'openssl/crypto/bio/bio_cb.c', + 'openssl/crypto/bio/bio_dump.c', + 'openssl/crypto/bio/bio_err.c', + 'openssl/crypto/bio/bio_lib.c', + 'openssl/crypto/bio/bio_meth.c', + 'openssl/crypto/bio/bio_print.c', + 'openssl/crypto/bio/bio_sock.c', + 'openssl/crypto/bio/bio_sock2.c', + 'openssl/crypto/bio/bss_acpt.c', + 'openssl/crypto/bio/bss_bio.c', + 'openssl/crypto/bio/bss_conn.c', + 'openssl/crypto/bio/bss_core.c', + 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', + 'openssl/crypto/bio/bss_fd.c', + 'openssl/crypto/bio/bss_file.c', + 'openssl/crypto/bio/bss_log.c', + 'openssl/crypto/bio/bss_mem.c', + 'openssl/crypto/bio/bss_null.c', + 'openssl/crypto/bio/bss_sock.c', + 'openssl/crypto/bio/ossl_core_bio.c', + 'openssl/crypto/bn/bn_add.c', + 'openssl/crypto/bn/bn_asm.c', + 'openssl/crypto/bn/bn_blind.c', + 'openssl/crypto/bn/bn_const.c', + 'openssl/crypto/bn/bn_conv.c', + 'openssl/crypto/bn/bn_ctx.c', + 'openssl/crypto/bn/bn_depr.c', + 'openssl/crypto/bn/bn_dh.c', + 'openssl/crypto/bn/bn_div.c', + 'openssl/crypto/bn/bn_err.c', + 'openssl/crypto/bn/bn_exp.c', + 'openssl/crypto/bn/bn_exp2.c', + 'openssl/crypto/bn/bn_gcd.c', + 'openssl/crypto/bn/bn_gf2m.c', + 'openssl/crypto/bn/bn_intern.c', + 'openssl/crypto/bn/bn_kron.c', + 'openssl/crypto/bn/bn_lib.c', + 'openssl/crypto/bn/bn_mod.c', + 'openssl/crypto/bn/bn_mont.c', + 'openssl/crypto/bn/bn_mpi.c', + 'openssl/crypto/bn/bn_mul.c', + 'openssl/crypto/bn/bn_nist.c', + 'openssl/crypto/bn/bn_prime.c', + 'openssl/crypto/bn/bn_print.c', + 'openssl/crypto/bn/bn_rand.c', + 'openssl/crypto/bn/bn_recp.c', + 'openssl/crypto/bn/bn_rsa_fips186_4.c', + 'openssl/crypto/bn/bn_shift.c', + 'openssl/crypto/bn/bn_sqr.c', + 'openssl/crypto/bn/bn_sqrt.c', + 'openssl/crypto/bn/bn_srp.c', + 'openssl/crypto/bn/bn_word.c', + 'openssl/crypto/bn/bn_x931p.c', + 'openssl/crypto/buffer/buf_err.c', + 'openssl/crypto/buffer/buffer.c', + 'openssl/crypto/camellia/camellia.c', + 'openssl/crypto/camellia/cmll_cbc.c', + 'openssl/crypto/camellia/cmll_cfb.c', + 'openssl/crypto/camellia/cmll_ctr.c', + 'openssl/crypto/camellia/cmll_ecb.c', + 'openssl/crypto/camellia/cmll_misc.c', + 'openssl/crypto/camellia/cmll_ofb.c', + 'openssl/crypto/cast/c_cfb64.c', + 'openssl/crypto/cast/c_ecb.c', + 'openssl/crypto/cast/c_enc.c', + 'openssl/crypto/cast/c_ofb64.c', + 'openssl/crypto/cast/c_skey.c', + 'openssl/crypto/chacha/chacha_enc.c', + 'openssl/crypto/chacha/chacha_riscv.c', + 'openssl/crypto/cmac/cmac.c', + 'openssl/crypto/cmp/cmp_asn.c', + 'openssl/crypto/cmp/cmp_client.c', + 'openssl/crypto/cmp/cmp_ctx.c', + 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', + 'openssl/crypto/cmp/cmp_hdr.c', + 'openssl/crypto/cmp/cmp_http.c', + 'openssl/crypto/cmp/cmp_msg.c', + 'openssl/crypto/cmp/cmp_protect.c', + 'openssl/crypto/cmp/cmp_server.c', + 'openssl/crypto/cmp/cmp_status.c', + 'openssl/crypto/cmp/cmp_util.c', + 'openssl/crypto/cmp/cmp_vfy.c', + 'openssl/crypto/cms/cms_asn1.c', + 'openssl/crypto/cms/cms_att.c', + 'openssl/crypto/cms/cms_cd.c', + 'openssl/crypto/cms/cms_dd.c', + 'openssl/crypto/cms/cms_dh.c', + 'openssl/crypto/cms/cms_ec.c', + 'openssl/crypto/cms/cms_enc.c', + 'openssl/crypto/cms/cms_env.c', + 'openssl/crypto/cms/cms_err.c', + 'openssl/crypto/cms/cms_ess.c', + 'openssl/crypto/cms/cms_io.c', + 'openssl/crypto/cms/cms_kari.c', + 'openssl/crypto/cms/cms_lib.c', + 'openssl/crypto/cms/cms_pwri.c', + 'openssl/crypto/cms/cms_rsa.c', + 'openssl/crypto/cms/cms_sd.c', + 'openssl/crypto/cms/cms_smime.c', + 'openssl/crypto/comp/c_brotli.c', + 'openssl/crypto/comp/c_zlib.c', + 'openssl/crypto/comp/c_zstd.c', + 'openssl/crypto/comp/comp_err.c', + 'openssl/crypto/comp/comp_lib.c', + 'openssl/crypto/conf/conf_api.c', + 'openssl/crypto/conf/conf_def.c', + 'openssl/crypto/conf/conf_err.c', + 'openssl/crypto/conf/conf_lib.c', + 'openssl/crypto/conf/conf_mall.c', + 'openssl/crypto/conf/conf_mod.c', + 'openssl/crypto/conf/conf_sap.c', + 'openssl/crypto/conf/conf_ssl.c', + 'openssl/crypto/crmf/crmf_asn.c', + 'openssl/crypto/crmf/crmf_err.c', + 'openssl/crypto/crmf/crmf_lib.c', + 'openssl/crypto/crmf/crmf_pbm.c', + 'openssl/crypto/ct/ct_b64.c', + 'openssl/crypto/ct/ct_err.c', + 'openssl/crypto/ct/ct_log.c', + 'openssl/crypto/ct/ct_oct.c', + 'openssl/crypto/ct/ct_policy.c', + 'openssl/crypto/ct/ct_prn.c', + 'openssl/crypto/ct/ct_sct.c', + 'openssl/crypto/ct/ct_sct_ctx.c', + 'openssl/crypto/ct/ct_vfy.c', + 'openssl/crypto/ct/ct_x509v3.c', + 'openssl/crypto/des/cbc_cksm.c', + 'openssl/crypto/des/cbc_enc.c', + 'openssl/crypto/des/cfb64ede.c', + 'openssl/crypto/des/cfb64enc.c', + 'openssl/crypto/des/cfb_enc.c', + 'openssl/crypto/des/des_enc.c', + 'openssl/crypto/des/ecb3_enc.c', + 'openssl/crypto/des/ecb_enc.c', + 'openssl/crypto/des/fcrypt.c', + 'openssl/crypto/des/fcrypt_b.c', + 'openssl/crypto/des/ofb64ede.c', + 'openssl/crypto/des/ofb64enc.c', + 'openssl/crypto/des/ofb_enc.c', + 'openssl/crypto/des/pcbc_enc.c', + 'openssl/crypto/des/qud_cksm.c', + 'openssl/crypto/des/rand_key.c', + 'openssl/crypto/des/set_key.c', + 'openssl/crypto/des/str2key.c', + 'openssl/crypto/des/xcbc_enc.c', + 'openssl/crypto/dh/dh_ameth.c', + 'openssl/crypto/dh/dh_asn1.c', + 'openssl/crypto/dh/dh_backend.c', + 'openssl/crypto/dh/dh_check.c', + 'openssl/crypto/dh/dh_depr.c', + 'openssl/crypto/dh/dh_err.c', + 'openssl/crypto/dh/dh_gen.c', + 'openssl/crypto/dh/dh_group_params.c', + 'openssl/crypto/dh/dh_kdf.c', + 'openssl/crypto/dh/dh_key.c', + 'openssl/crypto/dh/dh_lib.c', + 'openssl/crypto/dh/dh_meth.c', + 'openssl/crypto/dh/dh_pmeth.c', + 'openssl/crypto/dh/dh_prn.c', + 'openssl/crypto/dh/dh_rfc5114.c', + 'openssl/crypto/dsa/dsa_ameth.c', + 'openssl/crypto/dsa/dsa_asn1.c', + 'openssl/crypto/dsa/dsa_backend.c', + 'openssl/crypto/dsa/dsa_check.c', + 'openssl/crypto/dsa/dsa_depr.c', + 'openssl/crypto/dsa/dsa_err.c', + 'openssl/crypto/dsa/dsa_gen.c', + 'openssl/crypto/dsa/dsa_key.c', + 'openssl/crypto/dsa/dsa_lib.c', + 'openssl/crypto/dsa/dsa_meth.c', + 'openssl/crypto/dsa/dsa_ossl.c', + 'openssl/crypto/dsa/dsa_pmeth.c', + 'openssl/crypto/dsa/dsa_prn.c', + 'openssl/crypto/dsa/dsa_sign.c', + 'openssl/crypto/dsa/dsa_vrf.c', + 'openssl/crypto/dso/dso_dl.c', + 'openssl/crypto/dso/dso_dlfcn.c', + 'openssl/crypto/dso/dso_err.c', + 'openssl/crypto/dso/dso_lib.c', + 'openssl/crypto/dso/dso_openssl.c', + 'openssl/crypto/dso/dso_vms.c', + 'openssl/crypto/dso/dso_win32.c', + 'openssl/crypto/ec/curve448/arch_32/f_impl32.c', + 'openssl/crypto/ec/curve448/arch_64/f_impl64.c', + 'openssl/crypto/ec/curve448/curve448.c', + 'openssl/crypto/ec/curve448/curve448_tables.c', + 'openssl/crypto/ec/curve448/eddsa.c', + 'openssl/crypto/ec/curve448/f_generic.c', + 'openssl/crypto/ec/curve448/scalar.c', + 'openssl/crypto/ec/curve25519.c', + 'openssl/crypto/ec/ec2_oct.c', + 'openssl/crypto/ec/ec2_smpl.c', + 'openssl/crypto/ec/ec_ameth.c', + 'openssl/crypto/ec/ec_asn1.c', + 'openssl/crypto/ec/ec_backend.c', + 'openssl/crypto/ec/ec_check.c', + 'openssl/crypto/ec/ec_curve.c', + 'openssl/crypto/ec/ec_cvt.c', + 'openssl/crypto/ec/ec_deprecated.c', + 'openssl/crypto/ec/ec_err.c', + 'openssl/crypto/ec/ec_key.c', + 'openssl/crypto/ec/ec_kmeth.c', + 'openssl/crypto/ec/ec_lib.c', + 'openssl/crypto/ec/ec_mult.c', + 'openssl/crypto/ec/ec_oct.c', + 'openssl/crypto/ec/ec_pmeth.c', + 'openssl/crypto/ec/ec_print.c', + 'openssl/crypto/ec/ecdh_kdf.c', + 'openssl/crypto/ec/ecdh_ossl.c', + 'openssl/crypto/ec/ecdsa_ossl.c', + 'openssl/crypto/ec/ecdsa_sign.c', + 'openssl/crypto/ec/ecdsa_vrf.c', + 'openssl/crypto/ec/eck_prn.c', + 'openssl/crypto/ec/ecp_mont.c', + 'openssl/crypto/ec/ecp_nist.c', + 'openssl/crypto/ec/ecp_oct.c', + 'openssl/crypto/ec/ecp_smpl.c', + 'openssl/crypto/ec/ecx_backend.c', + 'openssl/crypto/ec/ecx_key.c', + 'openssl/crypto/ec/ecx_meth.c', + 'openssl/crypto/encode_decode/decoder_err.c', + 'openssl/crypto/encode_decode/decoder_lib.c', + 'openssl/crypto/encode_decode/decoder_meth.c', + 'openssl/crypto/encode_decode/decoder_pkey.c', + 'openssl/crypto/encode_decode/encoder_err.c', + 'openssl/crypto/encode_decode/encoder_lib.c', + 'openssl/crypto/encode_decode/encoder_meth.c', + 'openssl/crypto/encode_decode/encoder_pkey.c', + 'openssl/crypto/engine/eng_all.c', + 'openssl/crypto/engine/eng_cnf.c', + 'openssl/crypto/engine/eng_ctrl.c', + 'openssl/crypto/engine/eng_dyn.c', + 'openssl/crypto/engine/eng_err.c', + 'openssl/crypto/engine/eng_fat.c', + 'openssl/crypto/engine/eng_init.c', + 'openssl/crypto/engine/eng_lib.c', + 'openssl/crypto/engine/eng_list.c', + 'openssl/crypto/engine/eng_openssl.c', + 'openssl/crypto/engine/eng_pkey.c', + 'openssl/crypto/engine/eng_rdrand.c', + 'openssl/crypto/engine/eng_table.c', + 'openssl/crypto/engine/tb_asnmth.c', + 'openssl/crypto/engine/tb_cipher.c', + 'openssl/crypto/engine/tb_dh.c', + 'openssl/crypto/engine/tb_digest.c', + 'openssl/crypto/engine/tb_dsa.c', + 'openssl/crypto/engine/tb_eckey.c', + 'openssl/crypto/engine/tb_pkmeth.c', + 'openssl/crypto/engine/tb_rand.c', + 'openssl/crypto/engine/tb_rsa.c', + 'openssl/crypto/err/err.c', + 'openssl/crypto/err/err_all.c', + 'openssl/crypto/err/err_all_legacy.c', + 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', + 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', + 'openssl/crypto/ess/ess_asn1.c', + 'openssl/crypto/ess/ess_err.c', + 'openssl/crypto/ess/ess_lib.c', + 'openssl/crypto/evp/asymcipher.c', + 'openssl/crypto/evp/bio_b64.c', + 'openssl/crypto/evp/bio_enc.c', + 'openssl/crypto/evp/bio_md.c', + 'openssl/crypto/evp/bio_ok.c', + 'openssl/crypto/evp/c_allc.c', + 'openssl/crypto/evp/c_alld.c', + 'openssl/crypto/evp/cmeth_lib.c', + 'openssl/crypto/evp/ctrl_params_translate.c', + 'openssl/crypto/evp/dh_ctrl.c', + 'openssl/crypto/evp/dh_support.c', + 'openssl/crypto/evp/digest.c', + 'openssl/crypto/evp/dsa_ctrl.c', + 'openssl/crypto/evp/e_aes.c', + 'openssl/crypto/evp/e_aes_cbc_hmac_sha1.c', + 'openssl/crypto/evp/e_aes_cbc_hmac_sha256.c', + 'openssl/crypto/evp/e_aria.c', + 'openssl/crypto/evp/e_bf.c', + 'openssl/crypto/evp/e_camellia.c', + 'openssl/crypto/evp/e_cast.c', + 'openssl/crypto/evp/e_chacha20_poly1305.c', + 'openssl/crypto/evp/e_des.c', + 'openssl/crypto/evp/e_des3.c', + 'openssl/crypto/evp/e_idea.c', + 'openssl/crypto/evp/e_null.c', + 'openssl/crypto/evp/e_old.c', + 'openssl/crypto/evp/e_rc2.c', + 'openssl/crypto/evp/e_rc4.c', + 'openssl/crypto/evp/e_rc4_hmac_md5.c', + 'openssl/crypto/evp/e_rc5.c', + 'openssl/crypto/evp/e_seed.c', + 'openssl/crypto/evp/e_sm4.c', + 'openssl/crypto/evp/e_xcbc_d.c', + 'openssl/crypto/evp/ec_ctrl.c', + 'openssl/crypto/evp/ec_support.c', + 'openssl/crypto/evp/encode.c', + 'openssl/crypto/evp/evp_cnf.c', + 'openssl/crypto/evp/evp_enc.c', + 'openssl/crypto/evp/evp_err.c', + 'openssl/crypto/evp/evp_fetch.c', + 'openssl/crypto/evp/evp_key.c', + 'openssl/crypto/evp/evp_lib.c', + 'openssl/crypto/evp/evp_pbe.c', + 'openssl/crypto/evp/evp_pkey.c', + 'openssl/crypto/evp/evp_rand.c', + 'openssl/crypto/evp/evp_utils.c', + 'openssl/crypto/evp/exchange.c', + 'openssl/crypto/evp/kdf_lib.c', + 'openssl/crypto/evp/kdf_meth.c', + 'openssl/crypto/evp/kem.c', + 'openssl/crypto/evp/keymgmt_lib.c', + 'openssl/crypto/evp/keymgmt_meth.c', + 'openssl/crypto/evp/legacy_blake2.c', + 'openssl/crypto/evp/legacy_md4.c', + 'openssl/crypto/evp/legacy_md5.c', + 'openssl/crypto/evp/legacy_md5_sha1.c', + 'openssl/crypto/evp/legacy_mdc2.c', + 'openssl/crypto/evp/legacy_ripemd.c', + 'openssl/crypto/evp/legacy_sha.c', + 'openssl/crypto/evp/legacy_wp.c', + 'openssl/crypto/evp/m_null.c', + 'openssl/crypto/evp/m_sigver.c', + 'openssl/crypto/evp/mac_lib.c', + 'openssl/crypto/evp/mac_meth.c', + 'openssl/crypto/evp/names.c', + 'openssl/crypto/evp/p5_crpt.c', + 'openssl/crypto/evp/p5_crpt2.c', + 'openssl/crypto/evp/p_dec.c', + 'openssl/crypto/evp/p_enc.c', + 'openssl/crypto/evp/p_legacy.c', + 'openssl/crypto/evp/p_lib.c', + 'openssl/crypto/evp/p_open.c', + 'openssl/crypto/evp/p_seal.c', + 'openssl/crypto/evp/p_sign.c', + 'openssl/crypto/evp/p_verify.c', + 'openssl/crypto/evp/pbe_scrypt.c', + 'openssl/crypto/evp/pmeth_check.c', + 'openssl/crypto/evp/pmeth_gn.c', + 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', + 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', + 'openssl/crypto/ffc/ffc_backend.c', + 'openssl/crypto/ffc/ffc_dh.c', + 'openssl/crypto/ffc/ffc_key_generate.c', + 'openssl/crypto/ffc/ffc_key_validate.c', + 'openssl/crypto/ffc/ffc_params.c', + 'openssl/crypto/ffc/ffc_params_generate.c', + 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', + 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', + 'openssl/crypto/http/http_client.c', + 'openssl/crypto/http/http_err.c', + 'openssl/crypto/http/http_lib.c', + 'openssl/crypto/idea/i_cbc.c', + 'openssl/crypto/idea/i_cfb64.c', + 'openssl/crypto/idea/i_ecb.c', + 'openssl/crypto/idea/i_ofb64.c', + 'openssl/crypto/idea/i_skey.c', + 'openssl/crypto/kdf/kdf_err.c', + 'openssl/crypto/lhash/lh_stats.c', + 'openssl/crypto/lhash/lhash.c', + 'openssl/crypto/asn1_dsa.c', + 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', + 'openssl/crypto/context.c', + 'openssl/crypto/core_algorithm.c', + 'openssl/crypto/core_fetch.c', + 'openssl/crypto/core_namemap.c', + 'openssl/crypto/cpt_err.c', + 'openssl/crypto/cpuid.c', + 'openssl/crypto/cryptlib.c', + 'openssl/crypto/ctype.c', + 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', + 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', + 'openssl/crypto/ebcdic.c', + 'openssl/crypto/ex_data.c', + 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', + 'openssl/crypto/info.c', + 'openssl/crypto/init.c', + 'openssl/crypto/initthread.c', + 'openssl/crypto/mem.c', + 'openssl/crypto/mem_sec.c', + 'openssl/crypto/o_dir.c', + 'openssl/crypto/o_fopen.c', + 'openssl/crypto/o_init.c', + 'openssl/crypto/o_str.c', + 'openssl/crypto/o_time.c', + 'openssl/crypto/packet.c', + 'openssl/crypto/param_build.c', + 'openssl/crypto/param_build_set.c', + 'openssl/crypto/params.c', + 'openssl/crypto/params_dup.c', + 'openssl/crypto/params_from_text.c', + 'openssl/crypto/passphrase.c', + 'openssl/crypto/provider.c', + 'openssl/crypto/provider_child.c', + 'openssl/crypto/provider_conf.c', + 'openssl/crypto/provider_core.c', + 'openssl/crypto/provider_predefined.c', + 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', + 'openssl/crypto/riscvcap.c', + 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', + 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', + 'openssl/crypto/threads_lib.c', + 'openssl/crypto/threads_none.c', + 'openssl/crypto/threads_pthread.c', + 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/trace.c', + 'openssl/crypto/uid.c', + 'openssl/crypto/md4/md4_dgst.c', + 'openssl/crypto/md4/md4_one.c', + 'openssl/crypto/md5/md5_dgst.c', + 'openssl/crypto/md5/md5_one.c', + 'openssl/crypto/md5/md5_sha1.c', + 'openssl/crypto/mdc2/mdc2_one.c', + 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', + 'openssl/crypto/modes/cbc128.c', + 'openssl/crypto/modes/ccm128.c', + 'openssl/crypto/modes/cfb128.c', + 'openssl/crypto/modes/ctr128.c', + 'openssl/crypto/modes/cts128.c', + 'openssl/crypto/modes/gcm128.c', + 'openssl/crypto/modes/ocb128.c', + 'openssl/crypto/modes/ofb128.c', + 'openssl/crypto/modes/siv128.c', + 'openssl/crypto/modes/wrap128.c', + 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', + 'openssl/crypto/objects/o_names.c', + 'openssl/crypto/objects/obj_dat.c', + 'openssl/crypto/objects/obj_err.c', + 'openssl/crypto/objects/obj_lib.c', + 'openssl/crypto/objects/obj_xref.c', + 'openssl/crypto/ocsp/ocsp_asn.c', + 'openssl/crypto/ocsp/ocsp_cl.c', + 'openssl/crypto/ocsp/ocsp_err.c', + 'openssl/crypto/ocsp/ocsp_ext.c', + 'openssl/crypto/ocsp/ocsp_http.c', + 'openssl/crypto/ocsp/ocsp_lib.c', + 'openssl/crypto/ocsp/ocsp_prn.c', + 'openssl/crypto/ocsp/ocsp_srv.c', + 'openssl/crypto/ocsp/ocsp_vfy.c', + 'openssl/crypto/ocsp/v3_ocsp.c', + 'openssl/crypto/pem/pem_all.c', + 'openssl/crypto/pem/pem_err.c', + 'openssl/crypto/pem/pem_info.c', + 'openssl/crypto/pem/pem_lib.c', + 'openssl/crypto/pem/pem_oth.c', + 'openssl/crypto/pem/pem_pk8.c', + 'openssl/crypto/pem/pem_pkey.c', + 'openssl/crypto/pem/pem_sign.c', + 'openssl/crypto/pem/pem_x509.c', + 'openssl/crypto/pem/pem_xaux.c', + 'openssl/crypto/pem/pvkfmt.c', + 'openssl/crypto/pkcs12/p12_add.c', + 'openssl/crypto/pkcs12/p12_asn.c', + 'openssl/crypto/pkcs12/p12_attr.c', + 'openssl/crypto/pkcs12/p12_crpt.c', + 'openssl/crypto/pkcs12/p12_crt.c', + 'openssl/crypto/pkcs12/p12_decr.c', + 'openssl/crypto/pkcs12/p12_init.c', + 'openssl/crypto/pkcs12/p12_key.c', + 'openssl/crypto/pkcs12/p12_kiss.c', + 'openssl/crypto/pkcs12/p12_mutl.c', + 'openssl/crypto/pkcs12/p12_npas.c', + 'openssl/crypto/pkcs12/p12_p8d.c', + 'openssl/crypto/pkcs12/p12_p8e.c', + 'openssl/crypto/pkcs12/p12_sbag.c', + 'openssl/crypto/pkcs12/p12_utl.c', + 'openssl/crypto/pkcs12/pk12err.c', + 'openssl/crypto/pkcs7/bio_pk7.c', + 'openssl/crypto/pkcs7/pk7_asn1.c', + 'openssl/crypto/pkcs7/pk7_attr.c', + 'openssl/crypto/pkcs7/pk7_doit.c', + 'openssl/crypto/pkcs7/pk7_lib.c', + 'openssl/crypto/pkcs7/pk7_mime.c', + 'openssl/crypto/pkcs7/pk7_smime.c', + 'openssl/crypto/pkcs7/pkcs7err.c', + 'openssl/crypto/poly1305/poly1305.c', + 'openssl/crypto/property/defn_cache.c', + 'openssl/crypto/property/property.c', + 'openssl/crypto/property/property_err.c', + 'openssl/crypto/property/property_parse.c', + 'openssl/crypto/property/property_query.c', + 'openssl/crypto/property/property_string.c', + 'openssl/crypto/rand/prov_seed.c', + 'openssl/crypto/rand/rand_deprecated.c', + 'openssl/crypto/rand/rand_err.c', + 'openssl/crypto/rand/rand_lib.c', + 'openssl/crypto/rand/rand_meth.c', + 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', + 'openssl/crypto/rand/randfile.c', + 'openssl/crypto/rc2/rc2_cbc.c', + 'openssl/crypto/rc2/rc2_ecb.c', + 'openssl/crypto/rc2/rc2_skey.c', + 'openssl/crypto/rc2/rc2cfb64.c', + 'openssl/crypto/rc2/rc2ofb64.c', + 'openssl/crypto/rc4/rc4_enc.c', + 'openssl/crypto/rc4/rc4_skey.c', + 'openssl/crypto/ripemd/rmd_dgst.c', + 'openssl/crypto/ripemd/rmd_one.c', + 'openssl/crypto/rsa/rsa_ameth.c', + 'openssl/crypto/rsa/rsa_asn1.c', + 'openssl/crypto/rsa/rsa_backend.c', + 'openssl/crypto/rsa/rsa_chk.c', + 'openssl/crypto/rsa/rsa_crpt.c', + 'openssl/crypto/rsa/rsa_depr.c', + 'openssl/crypto/rsa/rsa_err.c', + 'openssl/crypto/rsa/rsa_gen.c', + 'openssl/crypto/rsa/rsa_lib.c', + 'openssl/crypto/rsa/rsa_meth.c', + 'openssl/crypto/rsa/rsa_mp.c', + 'openssl/crypto/rsa/rsa_mp_names.c', + 'openssl/crypto/rsa/rsa_none.c', + 'openssl/crypto/rsa/rsa_oaep.c', + 'openssl/crypto/rsa/rsa_ossl.c', + 'openssl/crypto/rsa/rsa_pk1.c', + 'openssl/crypto/rsa/rsa_pmeth.c', + 'openssl/crypto/rsa/rsa_prn.c', + 'openssl/crypto/rsa/rsa_pss.c', + 'openssl/crypto/rsa/rsa_saos.c', + 'openssl/crypto/rsa/rsa_schemes.c', + 'openssl/crypto/rsa/rsa_sign.c', + 'openssl/crypto/rsa/rsa_sp800_56b_check.c', + 'openssl/crypto/rsa/rsa_sp800_56b_gen.c', + 'openssl/crypto/rsa/rsa_x931.c', + 'openssl/crypto/rsa/rsa_x931g.c', + 'openssl/crypto/seed/seed.c', + 'openssl/crypto/seed/seed_cbc.c', + 'openssl/crypto/seed/seed_cfb.c', + 'openssl/crypto/seed/seed_ecb.c', + 'openssl/crypto/seed/seed_ofb.c', + 'openssl/crypto/sha/keccak1600.c', + 'openssl/crypto/sha/sha1_one.c', + 'openssl/crypto/sha/sha1dgst.c', + 'openssl/crypto/sha/sha256.c', + 'openssl/crypto/sha/sha3.c', + 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/sha/sha_riscv.c', + 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', + 'openssl/crypto/sm2/sm2_crypt.c', + 'openssl/crypto/sm2/sm2_err.c', + 'openssl/crypto/sm2/sm2_key.c', + 'openssl/crypto/sm2/sm2_sign.c', + 'openssl/crypto/sm3/legacy_sm3.c', + 'openssl/crypto/sm3/sm3.c', + 'openssl/crypto/sm3/sm3_riscv.c', + 'openssl/crypto/sm4/sm4.c', + 'openssl/crypto/srp/srp_lib.c', + 'openssl/crypto/srp/srp_vfy.c', + 'openssl/crypto/stack/stack.c', + 'openssl/crypto/store/store_err.c', + 'openssl/crypto/store/store_init.c', + 'openssl/crypto/store/store_lib.c', + 'openssl/crypto/store/store_meth.c', + 'openssl/crypto/store/store_register.c', + 'openssl/crypto/store/store_result.c', + 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', + 'openssl/crypto/ts/ts_asn1.c', + 'openssl/crypto/ts/ts_conf.c', + 'openssl/crypto/ts/ts_err.c', + 'openssl/crypto/ts/ts_lib.c', + 'openssl/crypto/ts/ts_req_print.c', + 'openssl/crypto/ts/ts_req_utils.c', + 'openssl/crypto/ts/ts_rsp_print.c', + 'openssl/crypto/ts/ts_rsp_sign.c', + 'openssl/crypto/ts/ts_rsp_utils.c', + 'openssl/crypto/ts/ts_rsp_verify.c', + 'openssl/crypto/ts/ts_verify_ctx.c', + 'openssl/crypto/txt_db/txt_db.c', + 'openssl/crypto/ui/ui_err.c', + 'openssl/crypto/ui/ui_lib.c', + 'openssl/crypto/ui/ui_null.c', + 'openssl/crypto/ui/ui_openssl.c', + 'openssl/crypto/ui/ui_util.c', + 'openssl/crypto/whrlpool/wp_block.c', + 'openssl/crypto/whrlpool/wp_dgst.c', + 'openssl/crypto/x509/by_dir.c', + 'openssl/crypto/x509/by_file.c', + 'openssl/crypto/x509/by_store.c', + 'openssl/crypto/x509/pcy_cache.c', + 'openssl/crypto/x509/pcy_data.c', + 'openssl/crypto/x509/pcy_lib.c', + 'openssl/crypto/x509/pcy_map.c', + 'openssl/crypto/x509/pcy_node.c', + 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', + 'openssl/crypto/x509/t_crl.c', + 'openssl/crypto/x509/t_req.c', + 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', + 'openssl/crypto/x509/v3_addr.c', + 'openssl/crypto/x509/v3_admis.c', + 'openssl/crypto/x509/v3_akeya.c', + 'openssl/crypto/x509/v3_akid.c', + 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', + 'openssl/crypto/x509/v3_bcons.c', + 'openssl/crypto/x509/v3_bitst.c', + 'openssl/crypto/x509/v3_conf.c', + 'openssl/crypto/x509/v3_cpols.c', + 'openssl/crypto/x509/v3_crld.c', + 'openssl/crypto/x509/v3_enum.c', + 'openssl/crypto/x509/v3_extku.c', + 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', + 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', + 'openssl/crypto/x509/v3_info.c', + 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', + 'openssl/crypto/x509/v3_ist.c', + 'openssl/crypto/x509/v3_lib.c', + 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', + 'openssl/crypto/x509/v3_pci.c', + 'openssl/crypto/x509/v3_pcia.c', + 'openssl/crypto/x509/v3_pcons.c', + 'openssl/crypto/x509/v3_pku.c', + 'openssl/crypto/x509/v3_pmaps.c', + 'openssl/crypto/x509/v3_prn.c', + 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', + 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', + 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', + 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', + 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', + 'openssl/crypto/x509/v3_utf8.c', + 'openssl/crypto/x509/v3_utl.c', + 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', + 'openssl/crypto/x509/x509_att.c', + 'openssl/crypto/x509/x509_cmp.c', + 'openssl/crypto/x509/x509_d2.c', + 'openssl/crypto/x509/x509_def.c', + 'openssl/crypto/x509/x509_err.c', + 'openssl/crypto/x509/x509_ext.c', + 'openssl/crypto/x509/x509_lu.c', + 'openssl/crypto/x509/x509_meth.c', + 'openssl/crypto/x509/x509_obj.c', + 'openssl/crypto/x509/x509_r2x.c', + 'openssl/crypto/x509/x509_req.c', + 'openssl/crypto/x509/x509_set.c', + 'openssl/crypto/x509/x509_trust.c', + 'openssl/crypto/x509/x509_txt.c', + 'openssl/crypto/x509/x509_v3.c', + 'openssl/crypto/x509/x509_vfy.c', + 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', + 'openssl/crypto/x509/x509cset.c', + 'openssl/crypto/x509/x509name.c', + 'openssl/crypto/x509/x509rset.c', + 'openssl/crypto/x509/x509spki.c', + 'openssl/crypto/x509/x509type.c', + 'openssl/crypto/x509/x_all.c', + 'openssl/crypto/x509/x_attrib.c', + 'openssl/crypto/x509/x_crl.c', + 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', + 'openssl/crypto/x509/x_name.c', + 'openssl/crypto/x509/x_pubkey.c', + 'openssl/crypto/x509/x_req.c', + 'openssl/crypto/x509/x_x509.c', + 'openssl/crypto/x509/x_x509a.c', + 'openssl/engines/e_capi.c', + 'openssl/engines/e_padlock.c', + 'openssl/providers/baseprov.c', + 'openssl/providers/defltprov.c', + 'openssl/providers/nullprov.c', + 'openssl/providers/prov_running.c', + 'openssl/providers/common/der/der_rsa_sig.c', + 'openssl/providers/common/der/der_sm2_key.c', + 'openssl/providers/common/der/der_sm2_sig.c', + 'openssl/providers/common/bio_prov.c', + 'openssl/providers/common/capabilities.c', + 'openssl/providers/common/digest_to_nid.c', + 'openssl/providers/common/provider_seeding.c', + 'openssl/providers/common/provider_util.c', + 'openssl/providers/common/securitycheck.c', + 'openssl/providers/common/securitycheck_default.c', + 'openssl/providers/implementations/asymciphers/rsa_enc.c', + 'openssl/providers/implementations/asymciphers/sm2_enc.c', + 'openssl/providers/implementations/ciphers/cipher_aes.c', + 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c', + 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', + 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_wrp.c', + 'openssl/providers/implementations/ciphers/cipher_aes_xts.c', + 'openssl/providers/implementations/ciphers/cipher_aes_xts_fips.c', + 'openssl/providers/implementations/ciphers/cipher_aes_xts_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aria.c', + 'openssl/providers/implementations/ciphers/cipher_aria_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_aria_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aria_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_aria_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aria_hw.c', + 'openssl/providers/implementations/ciphers/cipher_camellia.c', + 'openssl/providers/implementations/ciphers/cipher_camellia_hw.c', + 'openssl/providers/implementations/ciphers/cipher_chacha20.c', + 'openssl/providers/implementations/ciphers/cipher_chacha20_hw.c', + 'openssl/providers/implementations/ciphers/cipher_chacha20_poly1305.c', + 'openssl/providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c', + 'openssl/providers/implementations/ciphers/cipher_cts.c', + 'openssl/providers/implementations/ciphers/cipher_null.c', + 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', + 'openssl/providers/implementations/ciphers/cipher_tdes.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_default_hw.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_hw.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_wrap.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_wrap_hw.c', + 'openssl/providers/implementations/digests/blake2_prov.c', + 'openssl/providers/implementations/digests/blake2b_prov.c', + 'openssl/providers/implementations/digests/blake2s_prov.c', + 'openssl/providers/implementations/digests/md5_prov.c', + 'openssl/providers/implementations/digests/md5_sha1_prov.c', + 'openssl/providers/implementations/digests/null_prov.c', + 'openssl/providers/implementations/digests/ripemd_prov.c', + 'openssl/providers/implementations/digests/sha2_prov.c', + 'openssl/providers/implementations/digests/sha3_prov.c', + 'openssl/providers/implementations/digests/sm3_prov.c', + 'openssl/providers/implementations/encode_decode/decode_der2key.c', + 'openssl/providers/implementations/encode_decode/decode_epki2pki.c', + 'openssl/providers/implementations/encode_decode/decode_msblob2key.c', + 'openssl/providers/implementations/encode_decode/decode_pem2der.c', + 'openssl/providers/implementations/encode_decode/decode_pvk2key.c', + 'openssl/providers/implementations/encode_decode/decode_spki2typespki.c', + 'openssl/providers/implementations/encode_decode/encode_key2any.c', + 'openssl/providers/implementations/encode_decode/encode_key2blob.c', + 'openssl/providers/implementations/encode_decode/encode_key2ms.c', + 'openssl/providers/implementations/encode_decode/encode_key2text.c', + 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', + 'openssl/providers/implementations/exchange/dh_exch.c', + 'openssl/providers/implementations/exchange/ecdh_exch.c', + 'openssl/providers/implementations/exchange/ecx_exch.c', + 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', + 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', + 'openssl/providers/implementations/kdfs/kbkdf.c', + 'openssl/providers/implementations/kdfs/krb5kdf.c', + 'openssl/providers/implementations/kdfs/pbkdf2.c', + 'openssl/providers/implementations/kdfs/pbkdf2_fips.c', + 'openssl/providers/implementations/kdfs/pkcs12kdf.c', + 'openssl/providers/implementations/kdfs/scrypt.c', + 'openssl/providers/implementations/kdfs/sshkdf.c', + 'openssl/providers/implementations/kdfs/sskdf.c', + 'openssl/providers/implementations/kdfs/tls1_prf.c', + 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', + 'openssl/providers/implementations/kem/rsa_kem.c', + 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', + 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ec_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', + 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', + 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', + 'openssl/providers/implementations/macs/blake2b_mac.c', + 'openssl/providers/implementations/macs/blake2s_mac.c', + 'openssl/providers/implementations/macs/cmac_prov.c', + 'openssl/providers/implementations/macs/gmac_prov.c', + 'openssl/providers/implementations/macs/hmac_prov.c', + 'openssl/providers/implementations/macs/kmac_prov.c', + 'openssl/providers/implementations/macs/poly1305_prov.c', + 'openssl/providers/implementations/macs/siphash_prov.c', + 'openssl/providers/implementations/rands/drbg.c', + 'openssl/providers/implementations/rands/drbg_ctr.c', + 'openssl/providers/implementations/rands/drbg_hash.c', + 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', + 'openssl/providers/implementations/rands/test_rng.c', + 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', + 'openssl/providers/implementations/rands/seeding/rand_tsc.c', + 'openssl/providers/implementations/rands/seeding/rand_unix.c', + 'openssl/providers/implementations/rands/seeding/rand_win.c', + 'openssl/providers/implementations/signature/dsa_sig.c', + 'openssl/providers/implementations/signature/ecdsa_sig.c', + 'openssl/providers/implementations/signature/eddsa_sig.c', + 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', + 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/providers/implementations/storemgmt/file_store.c', + 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', + 'openssl/providers/common/der/der_dsa_key.c', + 'openssl/providers/common/der/der_dsa_sig.c', + 'openssl/providers/common/der/der_ec_key.c', + 'openssl/providers/common/der/der_ec_sig.c', + 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', + 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', + 'openssl/providers/common/provider_ctx.c', + 'openssl/providers/common/provider_err.c', + 'openssl/providers/implementations/ciphers/ciphercommon.c', + 'openssl/providers/implementations/ciphers/ciphercommon_block.c', + 'openssl/providers/implementations/ciphers/ciphercommon_ccm.c', + 'openssl/providers/implementations/ciphers/ciphercommon_ccm_hw.c', + 'openssl/providers/implementations/ciphers/ciphercommon_gcm.c', + 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', + 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', + 'openssl/providers/implementations/digests/digestcommon.c', + 'openssl/ssl/record/methods/tls_pad.c', + 'openssl/providers/implementations/ciphers/cipher_blowfish.c', + 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', + 'openssl/providers/implementations/ciphers/cipher_cast5.c', + 'openssl/providers/implementations/ciphers/cipher_cast5_hw.c', + 'openssl/providers/implementations/ciphers/cipher_des.c', + 'openssl/providers/implementations/ciphers/cipher_des_hw.c', + 'openssl/providers/implementations/ciphers/cipher_desx.c', + 'openssl/providers/implementations/ciphers/cipher_desx_hw.c', + 'openssl/providers/implementations/ciphers/cipher_idea.c', + 'openssl/providers/implementations/ciphers/cipher_idea_hw.c', + 'openssl/providers/implementations/ciphers/cipher_rc2.c', + 'openssl/providers/implementations/ciphers/cipher_rc2_hw.c', + 'openssl/providers/implementations/ciphers/cipher_rc4.c', + 'openssl/providers/implementations/ciphers/cipher_rc4_hmac_md5.c', + 'openssl/providers/implementations/ciphers/cipher_rc4_hmac_md5_hw.c', + 'openssl/providers/implementations/ciphers/cipher_rc4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_seed.c', + 'openssl/providers/implementations/ciphers/cipher_seed_hw.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', + 'openssl/providers/implementations/digests/md4_prov.c', + 'openssl/providers/implementations/digests/mdc2_prov.c', + 'openssl/providers/implementations/digests/ripemd_prov.c', + 'openssl/providers/implementations/digests/wp_prov.c', + 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', + 'openssl/providers/prov_running.c', + 'openssl/providers/legacyprov.c', + ], + 'openssl_sources_linux64-riscv64': [ + './config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zkn.s', + './config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s', + './config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvkb-zvkned.s', + './config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64-zvkned.s', + './config/archs/linux64-riscv64/asm/crypto/aes/aes-riscv64.s', + './config/archs/linux64-riscv64/asm/crypto/chacha/chacha-riscv64-v-zbb-zvkb.s', + './config/archs/linux64-riscv64/asm/crypto/chacha/chacha-riscv64-v-zbb.s', + './config/archs/linux64-riscv64/asm/crypto/params_idx.c', + './config/archs/linux64-riscv64/asm/crypto/riscv64cpuid.s', + './config/archs/linux64-riscv64/asm/crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s', + './config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64-zvkb-zvbc.s', + './config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64-zvkg.s', + './config/archs/linux64-riscv64/asm/crypto/modes/ghash-riscv64.s', + './config/archs/linux64-riscv64/asm/crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S', + './config/archs/linux64-riscv64/asm/crypto/sha/sha512-riscv64-zvkb-zvknhb.S', + './config/archs/linux64-riscv64/asm/crypto/sm3/sm3-riscv64-zvksh.S', + './config/archs/linux64-riscv64/asm/crypto/sm4/sm4-riscv64-zvksed.s', + './config/archs/linux64-riscv64/asm/providers/common/der/der_sm2_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_digests_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_dsa_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_ec_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_ecx_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_ml_dsa_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_rsa_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_slh_dsa_gen.c', + './config/archs/linux64-riscv64/asm/providers/common/der/der_wrap_gen.c', + './config/archs/linux64-riscv64/asm/providers/legacy.ld', + './config/archs/linux64-riscv64/asm/providers/fips.ld', + ], + 'openssl_defines_linux64-riscv64': [ + 'NDEBUG', + 'OPENSSL_USE_NODELETE', + 'OPENSSL_BUILDING_OPENSSL', + 'BROTLI', + 'ZLIB', + 'ZSTD', + 'AES_ASM', + 'GHASH_ASM', + 'INCLUDE_C_CHACHA20', + 'INCLUDE_C_SHA256', + 'INCLUDE_C_SHA512', + 'OPENSSL_CPUID_OBJ', + 'OPENSSL_SM3_ASM', + 'SHA256_ASM', + 'SHA512_ASM', + 'SM4_ASM', + 'OPENSSL_PIC', + ], + 'openssl_defines_exported_linux64-riscv64': [ + 'NDEBUG', + 'OPENSSL_USE_NODELETE', + 'OPENSSL_BUILDING_OPENSSL', + 'AES_ASM', + 'GHASH_ASM', + 'INCLUDE_C_CHACHA20', + 'INCLUDE_C_SHA256', + 'INCLUDE_C_SHA512', + 'OPENSSL_CPUID_OBJ', + 'OPENSSL_SM3_ASM', + 'SHA256_ASM', + 'SHA512_ASM', + 'SM4_ASM', + 'OPENSSL_PIC', + ], + 'openssl_cflags_linux64-riscv64': [ + '-Wa,--noexecstack', + '-Wall -O3', + '-pthread', + '-Wall -O3', + ], + 'openssl_ex_libs_linux64-riscv64': [ + '-lm -ldl -pthread', + ], + }, + 'include_dirs': [ + '.', + './include', + './crypto', + './crypto/include/internal', + './providers/common/include', + ], + 'defines': ['<@(openssl_defines_linux64-riscv64)'], + 'cflags' : ['<@(openssl_cflags_linux64-riscv64)'], + 'libraries': ['<@(openssl_ex_libs_linux64-riscv64)'], + 'sources': ['<@(openssl_sources)', '<@(openssl_sources_linux64-riscv64)'], + 'direct_dependent_settings': { + 'include_dirs': ['./include', '.'], + 'defines': ['<@(openssl_defines_exported_linux64-riscv64)'], + }, +} diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_digests_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_digests_gen.c new file mode 100644 index 00000000000000..340f5148298d37 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_digests_gen.c @@ -0,0 +1,162 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_digests_gen.c.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_digests.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * sigAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 3 } + */ +const unsigned char ossl_der_oid_sigAlgs[DER_OID_SZ_sigAlgs] = { + DER_OID_V_sigAlgs +}; + +/* + * id-sha1 OBJECT IDENTIFIER ::= { iso(1) + * identified-organization(3) oiw(14) + * secsig(3) algorithms(2) 26 } + */ +const unsigned char ossl_der_oid_id_sha1[DER_OID_SZ_id_sha1] = { + DER_OID_V_id_sha1 +}; + +/* + * id-md2 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 } + */ +const unsigned char ossl_der_oid_id_md2[DER_OID_SZ_id_md2] = { + DER_OID_V_id_md2 +}; + +/* + * id-md5 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } + */ +const unsigned char ossl_der_oid_id_md5[DER_OID_SZ_id_md5] = { + DER_OID_V_id_md5 +}; + +/* + * id-sha256 OBJECT IDENTIFIER ::= { hashAlgs 1 } + */ +const unsigned char ossl_der_oid_id_sha256[DER_OID_SZ_id_sha256] = { + DER_OID_V_id_sha256 +}; + +/* + * id-sha384 OBJECT IDENTIFIER ::= { hashAlgs 2 } + */ +const unsigned char ossl_der_oid_id_sha384[DER_OID_SZ_id_sha384] = { + DER_OID_V_id_sha384 +}; + +/* + * id-sha512 OBJECT IDENTIFIER ::= { hashAlgs 3 } + */ +const unsigned char ossl_der_oid_id_sha512[DER_OID_SZ_id_sha512] = { + DER_OID_V_id_sha512 +}; + +/* + * id-sha224 OBJECT IDENTIFIER ::= { hashAlgs 4 } + */ +const unsigned char ossl_der_oid_id_sha224[DER_OID_SZ_id_sha224] = { + DER_OID_V_id_sha224 +}; + +/* + * id-sha512-224 OBJECT IDENTIFIER ::= { hashAlgs 5 } + */ +const unsigned char ossl_der_oid_id_sha512_224[DER_OID_SZ_id_sha512_224] = { + DER_OID_V_id_sha512_224 +}; + +/* + * id-sha512-256 OBJECT IDENTIFIER ::= { hashAlgs 6 } + */ +const unsigned char ossl_der_oid_id_sha512_256[DER_OID_SZ_id_sha512_256] = { + DER_OID_V_id_sha512_256 +}; + +/* + * id-sha3-224 OBJECT IDENTIFIER ::= { hashAlgs 7 } + */ +const unsigned char ossl_der_oid_id_sha3_224[DER_OID_SZ_id_sha3_224] = { + DER_OID_V_id_sha3_224 +}; + +/* + * id-sha3-256 OBJECT IDENTIFIER ::= { hashAlgs 8 } + */ +const unsigned char ossl_der_oid_id_sha3_256[DER_OID_SZ_id_sha3_256] = { + DER_OID_V_id_sha3_256 +}; + +/* + * id-sha3-384 OBJECT IDENTIFIER ::= { hashAlgs 9 } + */ +const unsigned char ossl_der_oid_id_sha3_384[DER_OID_SZ_id_sha3_384] = { + DER_OID_V_id_sha3_384 +}; + +/* + * id-sha3-512 OBJECT IDENTIFIER ::= { hashAlgs 10 } + */ +const unsigned char ossl_der_oid_id_sha3_512[DER_OID_SZ_id_sha3_512] = { + DER_OID_V_id_sha3_512 +}; + +/* + * id-shake128 OBJECT IDENTIFIER ::= { hashAlgs 11 } + */ +const unsigned char ossl_der_oid_id_shake128[DER_OID_SZ_id_shake128] = { + DER_OID_V_id_shake128 +}; + +/* + * id-shake256 OBJECT IDENTIFIER ::= { hashAlgs 12 } + */ +const unsigned char ossl_der_oid_id_shake256[DER_OID_SZ_id_shake256] = { + DER_OID_V_id_shake256 +}; + +/* + * id-shake128-len OBJECT IDENTIFIER ::= { hashAlgs 17 } + */ +const unsigned char ossl_der_oid_id_shake128_len[DER_OID_SZ_id_shake128_len] = { + DER_OID_V_id_shake128_len +}; + +/* + * id-shake256-len OBJECT IDENTIFIER ::= { hashAlgs 18 } + */ +const unsigned char ossl_der_oid_id_shake256_len[DER_OID_SZ_id_shake256_len] = { + DER_OID_V_id_shake256_len +}; + +/* + * id-KMACWithSHAKE128 OBJECT IDENTIFIER ::={hashAlgs 19} + */ +const unsigned char ossl_der_oid_id_KMACWithSHAKE128[DER_OID_SZ_id_KMACWithSHAKE128] = { + DER_OID_V_id_KMACWithSHAKE128 +}; + +/* + * id-KMACWithSHAKE256 OBJECT IDENTIFIER ::={ hashAlgs 20} + */ +const unsigned char ossl_der_oid_id_KMACWithSHAKE256[DER_OID_SZ_id_KMACWithSHAKE256] = { + DER_OID_V_id_KMACWithSHAKE256 +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_dsa_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_dsa_gen.c new file mode 100644 index 00000000000000..02598156050181 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_dsa_gen.c @@ -0,0 +1,96 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_dsa_gen.c.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * DSA low level APIs are deprecated for public use, but still ok for + * internal use. + */ +#include "internal/deprecated.h" + +#include "prov/der_dsa.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-dsa OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } + */ +const unsigned char ossl_der_oid_id_dsa[DER_OID_SZ_id_dsa] = { + DER_OID_V_id_dsa +}; + +/* + * id-dsa-with-sha1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha1[DER_OID_SZ_id_dsa_with_sha1] = { + DER_OID_V_id_dsa_with_sha1 +}; + +/* + * id-dsa-with-sha224 OBJECT IDENTIFIER ::= { sigAlgs 1 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha224[DER_OID_SZ_id_dsa_with_sha224] = { + DER_OID_V_id_dsa_with_sha224 +}; + +/* + * id-dsa-with-sha256 OBJECT IDENTIFIER ::= { sigAlgs 2 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha256[DER_OID_SZ_id_dsa_with_sha256] = { + DER_OID_V_id_dsa_with_sha256 +}; + +/* + * id-dsa-with-sha384 OBJECT IDENTIFIER ::= { sigAlgs 3 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha384[DER_OID_SZ_id_dsa_with_sha384] = { + DER_OID_V_id_dsa_with_sha384 +}; + +/* + * id-dsa-with-sha512 OBJECT IDENTIFIER ::= { sigAlgs 4 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha512[DER_OID_SZ_id_dsa_with_sha512] = { + DER_OID_V_id_dsa_with_sha512 +}; + +/* + * id-dsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 5 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha3_224[DER_OID_SZ_id_dsa_with_sha3_224] = { + DER_OID_V_id_dsa_with_sha3_224 +}; + +/* + * id-dsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 6 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha3_256[DER_OID_SZ_id_dsa_with_sha3_256] = { + DER_OID_V_id_dsa_with_sha3_256 +}; + +/* + * id-dsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 7 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha3_384[DER_OID_SZ_id_dsa_with_sha3_384] = { + DER_OID_V_id_dsa_with_sha3_384 +}; + +/* + * id-dsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 8 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha3_512[DER_OID_SZ_id_dsa_with_sha3_512] = { + DER_OID_V_id_dsa_with_sha3_512 +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_ec_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_ec_gen.c new file mode 100644 index 00000000000000..49ce209ec40afa --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_ec_gen.c @@ -0,0 +1,281 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ec_gen.c.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ec.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { id-ecSigType 1 } + */ +const unsigned char ossl_der_oid_ecdsa_with_SHA1[DER_OID_SZ_ecdsa_with_SHA1] = { + DER_OID_V_ecdsa_with_SHA1 +}; + +/* + * id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 } + */ +const unsigned char ossl_der_oid_id_ecPublicKey[DER_OID_SZ_id_ecPublicKey] = { + DER_OID_V_id_ecPublicKey +}; + +/* + * c2pnb163v1 OBJECT IDENTIFIER ::= { c-TwoCurve 1 } + */ +const unsigned char ossl_der_oid_c2pnb163v1[DER_OID_SZ_c2pnb163v1] = { + DER_OID_V_c2pnb163v1 +}; + +/* + * c2pnb163v2 OBJECT IDENTIFIER ::= { c-TwoCurve 2 } + */ +const unsigned char ossl_der_oid_c2pnb163v2[DER_OID_SZ_c2pnb163v2] = { + DER_OID_V_c2pnb163v2 +}; + +/* + * c2pnb163v3 OBJECT IDENTIFIER ::= { c-TwoCurve 3 } + */ +const unsigned char ossl_der_oid_c2pnb163v3[DER_OID_SZ_c2pnb163v3] = { + DER_OID_V_c2pnb163v3 +}; + +/* + * c2pnb176w1 OBJECT IDENTIFIER ::= { c-TwoCurve 4 } + */ +const unsigned char ossl_der_oid_c2pnb176w1[DER_OID_SZ_c2pnb176w1] = { + DER_OID_V_c2pnb176w1 +}; + +/* + * c2tnb191v1 OBJECT IDENTIFIER ::= { c-TwoCurve 5 } + */ +const unsigned char ossl_der_oid_c2tnb191v1[DER_OID_SZ_c2tnb191v1] = { + DER_OID_V_c2tnb191v1 +}; + +/* + * c2tnb191v2 OBJECT IDENTIFIER ::= { c-TwoCurve 6 } + */ +const unsigned char ossl_der_oid_c2tnb191v2[DER_OID_SZ_c2tnb191v2] = { + DER_OID_V_c2tnb191v2 +}; + +/* + * c2tnb191v3 OBJECT IDENTIFIER ::= { c-TwoCurve 7 } + */ +const unsigned char ossl_der_oid_c2tnb191v3[DER_OID_SZ_c2tnb191v3] = { + DER_OID_V_c2tnb191v3 +}; + +/* + * c2onb191v4 OBJECT IDENTIFIER ::= { c-TwoCurve 8 } + */ +const unsigned char ossl_der_oid_c2onb191v4[DER_OID_SZ_c2onb191v4] = { + DER_OID_V_c2onb191v4 +}; + +/* + * c2onb191v5 OBJECT IDENTIFIER ::= { c-TwoCurve 9 } + */ +const unsigned char ossl_der_oid_c2onb191v5[DER_OID_SZ_c2onb191v5] = { + DER_OID_V_c2onb191v5 +}; + +/* + * c2pnb208w1 OBJECT IDENTIFIER ::= { c-TwoCurve 10 } + */ +const unsigned char ossl_der_oid_c2pnb208w1[DER_OID_SZ_c2pnb208w1] = { + DER_OID_V_c2pnb208w1 +}; + +/* + * c2tnb239v1 OBJECT IDENTIFIER ::= { c-TwoCurve 11 } + */ +const unsigned char ossl_der_oid_c2tnb239v1[DER_OID_SZ_c2tnb239v1] = { + DER_OID_V_c2tnb239v1 +}; + +/* + * c2tnb239v2 OBJECT IDENTIFIER ::= { c-TwoCurve 12 } + */ +const unsigned char ossl_der_oid_c2tnb239v2[DER_OID_SZ_c2tnb239v2] = { + DER_OID_V_c2tnb239v2 +}; + +/* + * c2tnb239v3 OBJECT IDENTIFIER ::= { c-TwoCurve 13 } + */ +const unsigned char ossl_der_oid_c2tnb239v3[DER_OID_SZ_c2tnb239v3] = { + DER_OID_V_c2tnb239v3 +}; + +/* + * c2onb239v4 OBJECT IDENTIFIER ::= { c-TwoCurve 14 } + */ +const unsigned char ossl_der_oid_c2onb239v4[DER_OID_SZ_c2onb239v4] = { + DER_OID_V_c2onb239v4 +}; + +/* + * c2onb239v5 OBJECT IDENTIFIER ::= { c-TwoCurve 15 } + */ +const unsigned char ossl_der_oid_c2onb239v5[DER_OID_SZ_c2onb239v5] = { + DER_OID_V_c2onb239v5 +}; + +/* + * c2pnb272w1 OBJECT IDENTIFIER ::= { c-TwoCurve 16 } + */ +const unsigned char ossl_der_oid_c2pnb272w1[DER_OID_SZ_c2pnb272w1] = { + DER_OID_V_c2pnb272w1 +}; + +/* + * c2pnb304w1 OBJECT IDENTIFIER ::= { c-TwoCurve 17 } + */ +const unsigned char ossl_der_oid_c2pnb304w1[DER_OID_SZ_c2pnb304w1] = { + DER_OID_V_c2pnb304w1 +}; + +/* + * c2tnb359v1 OBJECT IDENTIFIER ::= { c-TwoCurve 18 } + */ +const unsigned char ossl_der_oid_c2tnb359v1[DER_OID_SZ_c2tnb359v1] = { + DER_OID_V_c2tnb359v1 +}; + +/* + * c2pnb368w1 OBJECT IDENTIFIER ::= { c-TwoCurve 19 } + */ +const unsigned char ossl_der_oid_c2pnb368w1[DER_OID_SZ_c2pnb368w1] = { + DER_OID_V_c2pnb368w1 +}; + +/* + * c2tnb431r1 OBJECT IDENTIFIER ::= { c-TwoCurve 20 } + */ +const unsigned char ossl_der_oid_c2tnb431r1[DER_OID_SZ_c2tnb431r1] = { + DER_OID_V_c2tnb431r1 +}; + +/* + * prime192v1 OBJECT IDENTIFIER ::= { primeCurve 1 } + */ +const unsigned char ossl_der_oid_prime192v1[DER_OID_SZ_prime192v1] = { + DER_OID_V_prime192v1 +}; + +/* + * prime192v2 OBJECT IDENTIFIER ::= { primeCurve 2 } + */ +const unsigned char ossl_der_oid_prime192v2[DER_OID_SZ_prime192v2] = { + DER_OID_V_prime192v2 +}; + +/* + * prime192v3 OBJECT IDENTIFIER ::= { primeCurve 3 } + */ +const unsigned char ossl_der_oid_prime192v3[DER_OID_SZ_prime192v3] = { + DER_OID_V_prime192v3 +}; + +/* + * prime239v1 OBJECT IDENTIFIER ::= { primeCurve 4 } + */ +const unsigned char ossl_der_oid_prime239v1[DER_OID_SZ_prime239v1] = { + DER_OID_V_prime239v1 +}; + +/* + * prime239v2 OBJECT IDENTIFIER ::= { primeCurve 5 } + */ +const unsigned char ossl_der_oid_prime239v2[DER_OID_SZ_prime239v2] = { + DER_OID_V_prime239v2 +}; + +/* + * prime239v3 OBJECT IDENTIFIER ::= { primeCurve 6 } + */ +const unsigned char ossl_der_oid_prime239v3[DER_OID_SZ_prime239v3] = { + DER_OID_V_prime239v3 +}; + +/* + * prime256v1 OBJECT IDENTIFIER ::= { primeCurve 7 } + */ +const unsigned char ossl_der_oid_prime256v1[DER_OID_SZ_prime256v1] = { + DER_OID_V_prime256v1 +}; + +/* + * ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 1 } + */ +const unsigned char ossl_der_oid_ecdsa_with_SHA224[DER_OID_SZ_ecdsa_with_SHA224] = { + DER_OID_V_ecdsa_with_SHA224 +}; + +/* + * ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 } + */ +const unsigned char ossl_der_oid_ecdsa_with_SHA256[DER_OID_SZ_ecdsa_with_SHA256] = { + DER_OID_V_ecdsa_with_SHA256 +}; + +/* + * ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 } + */ +const unsigned char ossl_der_oid_ecdsa_with_SHA384[DER_OID_SZ_ecdsa_with_SHA384] = { + DER_OID_V_ecdsa_with_SHA384 +}; + +/* + * ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 } + */ +const unsigned char ossl_der_oid_ecdsa_with_SHA512[DER_OID_SZ_ecdsa_with_SHA512] = { + DER_OID_V_ecdsa_with_SHA512 +}; + +/* + * id-ecdsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 9 } + */ +const unsigned char ossl_der_oid_id_ecdsa_with_sha3_224[DER_OID_SZ_id_ecdsa_with_sha3_224] = { + DER_OID_V_id_ecdsa_with_sha3_224 +}; + +/* + * id-ecdsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 10 } + */ +const unsigned char ossl_der_oid_id_ecdsa_with_sha3_256[DER_OID_SZ_id_ecdsa_with_sha3_256] = { + DER_OID_V_id_ecdsa_with_sha3_256 +}; + +/* + * id-ecdsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 11 } + */ +const unsigned char ossl_der_oid_id_ecdsa_with_sha3_384[DER_OID_SZ_id_ecdsa_with_sha3_384] = { + DER_OID_V_id_ecdsa_with_sha3_384 +}; + +/* + * id-ecdsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 12 } + */ +const unsigned char ossl_der_oid_id_ecdsa_with_sha3_512[DER_OID_SZ_id_ecdsa_with_sha3_512] = { + DER_OID_V_id_ecdsa_with_sha3_512 +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_ecx_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_ecx_gen.c new file mode 100644 index 00000000000000..64d73e3fc5255f --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_ecx_gen.c @@ -0,0 +1,46 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ecx_gen.c.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ecx.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-X25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 110 } + */ +const unsigned char ossl_der_oid_id_X25519[DER_OID_SZ_id_X25519] = { + DER_OID_V_id_X25519 +}; + +/* + * id-X448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 111 } + */ +const unsigned char ossl_der_oid_id_X448[DER_OID_SZ_id_X448] = { + DER_OID_V_id_X448 +}; + +/* + * id-Ed25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 112 } + */ +const unsigned char ossl_der_oid_id_Ed25519[DER_OID_SZ_id_Ed25519] = { + DER_OID_V_id_Ed25519 +}; + +/* + * id-Ed448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 113 } + */ +const unsigned char ossl_der_oid_id_Ed448[DER_OID_SZ_id_Ed448] = { + DER_OID_V_id_Ed448 +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..69f4e852123187 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,39 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_rsa_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_rsa_gen.c new file mode 100644 index 00000000000000..911b6e58936f19 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_rsa_gen.c @@ -0,0 +1,176 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_rsa_gen.c.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_rsa.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * hashAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 2 } + */ +const unsigned char ossl_der_oid_hashAlgs[DER_OID_SZ_hashAlgs] = { + DER_OID_V_hashAlgs +}; + +/* + * rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } + */ +const unsigned char ossl_der_oid_rsaEncryption[DER_OID_SZ_rsaEncryption] = { + DER_OID_V_rsaEncryption +}; + +/* + * id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 } + */ +const unsigned char ossl_der_oid_id_RSAES_OAEP[DER_OID_SZ_id_RSAES_OAEP] = { + DER_OID_V_id_RSAES_OAEP +}; + +/* + * id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 } + */ +const unsigned char ossl_der_oid_id_pSpecified[DER_OID_SZ_id_pSpecified] = { + DER_OID_V_id_pSpecified +}; + +/* + * id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } + */ +const unsigned char ossl_der_oid_id_RSASSA_PSS[DER_OID_SZ_id_RSASSA_PSS] = { + DER_OID_V_id_RSASSA_PSS +}; + +/* + * md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } + */ +const unsigned char ossl_der_oid_md2WithRSAEncryption[DER_OID_SZ_md2WithRSAEncryption] = { + DER_OID_V_md2WithRSAEncryption +}; + +/* + * md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } + */ +const unsigned char ossl_der_oid_md5WithRSAEncryption[DER_OID_SZ_md5WithRSAEncryption] = { + DER_OID_V_md5WithRSAEncryption +}; + +/* + * sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } + */ +const unsigned char ossl_der_oid_sha1WithRSAEncryption[DER_OID_SZ_sha1WithRSAEncryption] = { + DER_OID_V_sha1WithRSAEncryption +}; + +/* + * sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 } + */ +const unsigned char ossl_der_oid_sha224WithRSAEncryption[DER_OID_SZ_sha224WithRSAEncryption] = { + DER_OID_V_sha224WithRSAEncryption +}; + +/* + * sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 } + */ +const unsigned char ossl_der_oid_sha256WithRSAEncryption[DER_OID_SZ_sha256WithRSAEncryption] = { + DER_OID_V_sha256WithRSAEncryption +}; + +/* + * sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 } + */ +const unsigned char ossl_der_oid_sha384WithRSAEncryption[DER_OID_SZ_sha384WithRSAEncryption] = { + DER_OID_V_sha384WithRSAEncryption +}; + +/* + * sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 } + */ +const unsigned char ossl_der_oid_sha512WithRSAEncryption[DER_OID_SZ_sha512WithRSAEncryption] = { + DER_OID_V_sha512WithRSAEncryption +}; + +/* + * sha512-224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 15 } + */ +const unsigned char ossl_der_oid_sha512_224WithRSAEncryption[DER_OID_SZ_sha512_224WithRSAEncryption] = { + DER_OID_V_sha512_224WithRSAEncryption +}; + +/* + * sha512-256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 16 } + */ +const unsigned char ossl_der_oid_sha512_256WithRSAEncryption[DER_OID_SZ_sha512_256WithRSAEncryption] = { + DER_OID_V_sha512_256WithRSAEncryption +}; + +/* + * id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 } + */ +const unsigned char ossl_der_oid_id_mgf1[DER_OID_SZ_id_mgf1] = { + DER_OID_V_id_mgf1 +}; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 13 } + */ +const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_224[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224] = { + DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_224 +}; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 14 } + */ +const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_256[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256] = { + DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_256 +}; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 15 } + */ +const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_384[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384] = { + DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_384 +}; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 16 } + */ +const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_512[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512] = { + DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_512 +}; + +/* + * md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 } + */ +const unsigned char ossl_der_oid_md4WithRSAEncryption[DER_OID_SZ_md4WithRSAEncryption] = { + DER_OID_V_md4WithRSAEncryption +}; + +/* + * ripemd160WithRSAEncryption OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) teletrust(36) algorithm(3) signatureAlgorithm(3) rsaSignature(1) 2 + * } + */ +const unsigned char ossl_der_oid_ripemd160WithRSAEncryption[DER_OID_SZ_ripemd160WithRSAEncryption] = { + DER_OID_V_ripemd160WithRSAEncryption +}; + +/* + * mdc2WithRSASignature OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) mdc2WithRSASignature(14) + * } + */ +const unsigned char ossl_der_oid_mdc2WithRSASignature[DER_OID_SZ_mdc2WithRSASignature] = { + DER_OID_V_mdc2WithRSASignature +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..81adc3b658697c --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,102 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_sm2_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_sm2_gen.c new file mode 100644 index 00000000000000..6488058af2d2b1 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_sm2_gen.c @@ -0,0 +1,32 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_sm2_gen.c.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_sm2.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * sm2-with-SM3 OBJECT IDENTIFIER ::= { sm-scheme 501 } + */ +const unsigned char ossl_der_oid_sm2_with_SM3[DER_OID_SZ_sm2_with_SM3] = { + DER_OID_V_sm2_with_SM3 +}; + +/* + * curveSM2 OBJECT IDENTIFIER ::= { sm-scheme 301 } + */ +const unsigned char ossl_der_oid_curveSM2[DER_OID_SZ_curveSM2] = { + DER_OID_V_curveSM2 +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_wrap_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_wrap_gen.c new file mode 100644 index 00000000000000..def5c3524185a3 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/der/der_wrap_gen.c @@ -0,0 +1,48 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_wrap_gen.c.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_wrap.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-alg-CMS3DESwrap OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 6 + * } + */ +const unsigned char ossl_der_oid_id_alg_CMS3DESwrap[DER_OID_SZ_id_alg_CMS3DESwrap] = { + DER_OID_V_id_alg_CMS3DESwrap +}; + +/* + * id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 } + */ +const unsigned char ossl_der_oid_id_aes128_wrap[DER_OID_SZ_id_aes128_wrap] = { + DER_OID_V_id_aes128_wrap +}; + +/* + * id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 } + */ +const unsigned char ossl_der_oid_id_aes192_wrap[DER_OID_SZ_id_aes192_wrap] = { + DER_OID_V_id_aes192_wrap +}; + +/* + * id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 } + */ +const unsigned char ossl_der_oid_id_aes256_wrap[DER_OID_SZ_id_aes256_wrap] = { + DER_OID_V_id_aes256_wrap +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_digests.h b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_digests.h new file mode 100644 index 00000000000000..c6531033f27941 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_digests.h @@ -0,0 +1,162 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_digests.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * sigAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 3 } + */ +#define DER_OID_V_sigAlgs DER_P_OBJECT, 8, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03 +#define DER_OID_SZ_sigAlgs 10 +extern const unsigned char ossl_der_oid_sigAlgs[DER_OID_SZ_sigAlgs]; + +/* + * id-sha1 OBJECT IDENTIFIER ::= { iso(1) + * identified-organization(3) oiw(14) + * secsig(3) algorithms(2) 26 } + */ +#define DER_OID_V_id_sha1 DER_P_OBJECT, 5, 0x2B, 0x0E, 0x03, 0x02, 0x1A +#define DER_OID_SZ_id_sha1 7 +extern const unsigned char ossl_der_oid_id_sha1[DER_OID_SZ_id_sha1]; + +/* + * id-md2 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 } + */ +#define DER_OID_V_id_md2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x02 +#define DER_OID_SZ_id_md2 10 +extern const unsigned char ossl_der_oid_id_md2[DER_OID_SZ_id_md2]; + +/* + * id-md5 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } + */ +#define DER_OID_V_id_md5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05 +#define DER_OID_SZ_id_md5 10 +extern const unsigned char ossl_der_oid_id_md5[DER_OID_SZ_id_md5]; + +/* + * id-sha256 OBJECT IDENTIFIER ::= { hashAlgs 1 } + */ +#define DER_OID_V_id_sha256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01 +#define DER_OID_SZ_id_sha256 11 +extern const unsigned char ossl_der_oid_id_sha256[DER_OID_SZ_id_sha256]; + +/* + * id-sha384 OBJECT IDENTIFIER ::= { hashAlgs 2 } + */ +#define DER_OID_V_id_sha384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02 +#define DER_OID_SZ_id_sha384 11 +extern const unsigned char ossl_der_oid_id_sha384[DER_OID_SZ_id_sha384]; + +/* + * id-sha512 OBJECT IDENTIFIER ::= { hashAlgs 3 } + */ +#define DER_OID_V_id_sha512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03 +#define DER_OID_SZ_id_sha512 11 +extern const unsigned char ossl_der_oid_id_sha512[DER_OID_SZ_id_sha512]; + +/* + * id-sha224 OBJECT IDENTIFIER ::= { hashAlgs 4 } + */ +#define DER_OID_V_id_sha224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04 +#define DER_OID_SZ_id_sha224 11 +extern const unsigned char ossl_der_oid_id_sha224[DER_OID_SZ_id_sha224]; + +/* + * id-sha512-224 OBJECT IDENTIFIER ::= { hashAlgs 5 } + */ +#define DER_OID_V_id_sha512_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x05 +#define DER_OID_SZ_id_sha512_224 11 +extern const unsigned char ossl_der_oid_id_sha512_224[DER_OID_SZ_id_sha512_224]; + +/* + * id-sha512-256 OBJECT IDENTIFIER ::= { hashAlgs 6 } + */ +#define DER_OID_V_id_sha512_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x06 +#define DER_OID_SZ_id_sha512_256 11 +extern const unsigned char ossl_der_oid_id_sha512_256[DER_OID_SZ_id_sha512_256]; + +/* + * id-sha3-224 OBJECT IDENTIFIER ::= { hashAlgs 7 } + */ +#define DER_OID_V_id_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x07 +#define DER_OID_SZ_id_sha3_224 11 +extern const unsigned char ossl_der_oid_id_sha3_224[DER_OID_SZ_id_sha3_224]; + +/* + * id-sha3-256 OBJECT IDENTIFIER ::= { hashAlgs 8 } + */ +#define DER_OID_V_id_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x08 +#define DER_OID_SZ_id_sha3_256 11 +extern const unsigned char ossl_der_oid_id_sha3_256[DER_OID_SZ_id_sha3_256]; + +/* + * id-sha3-384 OBJECT IDENTIFIER ::= { hashAlgs 9 } + */ +#define DER_OID_V_id_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x09 +#define DER_OID_SZ_id_sha3_384 11 +extern const unsigned char ossl_der_oid_id_sha3_384[DER_OID_SZ_id_sha3_384]; + +/* + * id-sha3-512 OBJECT IDENTIFIER ::= { hashAlgs 10 } + */ +#define DER_OID_V_id_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0A +#define DER_OID_SZ_id_sha3_512 11 +extern const unsigned char ossl_der_oid_id_sha3_512[DER_OID_SZ_id_sha3_512]; + +/* + * id-shake128 OBJECT IDENTIFIER ::= { hashAlgs 11 } + */ +#define DER_OID_V_id_shake128 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0B +#define DER_OID_SZ_id_shake128 11 +extern const unsigned char ossl_der_oid_id_shake128[DER_OID_SZ_id_shake128]; + +/* + * id-shake256 OBJECT IDENTIFIER ::= { hashAlgs 12 } + */ +#define DER_OID_V_id_shake256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0C +#define DER_OID_SZ_id_shake256 11 +extern const unsigned char ossl_der_oid_id_shake256[DER_OID_SZ_id_shake256]; + +/* + * id-shake128-len OBJECT IDENTIFIER ::= { hashAlgs 17 } + */ +#define DER_OID_V_id_shake128_len DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x11 +#define DER_OID_SZ_id_shake128_len 11 +extern const unsigned char ossl_der_oid_id_shake128_len[DER_OID_SZ_id_shake128_len]; + +/* + * id-shake256-len OBJECT IDENTIFIER ::= { hashAlgs 18 } + */ +#define DER_OID_V_id_shake256_len DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x12 +#define DER_OID_SZ_id_shake256_len 11 +extern const unsigned char ossl_der_oid_id_shake256_len[DER_OID_SZ_id_shake256_len]; + +/* + * id-KMACWithSHAKE128 OBJECT IDENTIFIER ::={hashAlgs 19} + */ +#define DER_OID_V_id_KMACWithSHAKE128 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x13 +#define DER_OID_SZ_id_KMACWithSHAKE128 11 +extern const unsigned char ossl_der_oid_id_KMACWithSHAKE128[DER_OID_SZ_id_KMACWithSHAKE128]; + +/* + * id-KMACWithSHAKE256 OBJECT IDENTIFIER ::={ hashAlgs 20} + */ +#define DER_OID_V_id_KMACWithSHAKE256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x14 +#define DER_OID_SZ_id_KMACWithSHAKE256 11 +extern const unsigned char ossl_der_oid_id_KMACWithSHAKE256[DER_OID_SZ_id_KMACWithSHAKE256]; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_dsa.h b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_dsa.h new file mode 100644 index 00000000000000..3dcd57ebec4383 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_dsa.h @@ -0,0 +1,96 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_dsa.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-dsa OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } + */ +#define DER_OID_V_id_dsa DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x38, 0x04, 0x01 +#define DER_OID_SZ_id_dsa 9 +extern const unsigned char ossl_der_oid_id_dsa[DER_OID_SZ_id_dsa]; + +/* + * id-dsa-with-sha1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } + */ +#define DER_OID_V_id_dsa_with_sha1 DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x38, 0x04, 0x03 +#define DER_OID_SZ_id_dsa_with_sha1 9 +extern const unsigned char ossl_der_oid_id_dsa_with_sha1[DER_OID_SZ_id_dsa_with_sha1]; + +/* + * id-dsa-with-sha224 OBJECT IDENTIFIER ::= { sigAlgs 1 } + */ +#define DER_OID_V_id_dsa_with_sha224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x01 +#define DER_OID_SZ_id_dsa_with_sha224 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha224[DER_OID_SZ_id_dsa_with_sha224]; + +/* + * id-dsa-with-sha256 OBJECT IDENTIFIER ::= { sigAlgs 2 } + */ +#define DER_OID_V_id_dsa_with_sha256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x02 +#define DER_OID_SZ_id_dsa_with_sha256 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha256[DER_OID_SZ_id_dsa_with_sha256]; + +/* + * id-dsa-with-sha384 OBJECT IDENTIFIER ::= { sigAlgs 3 } + */ +#define DER_OID_V_id_dsa_with_sha384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x03 +#define DER_OID_SZ_id_dsa_with_sha384 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha384[DER_OID_SZ_id_dsa_with_sha384]; + +/* + * id-dsa-with-sha512 OBJECT IDENTIFIER ::= { sigAlgs 4 } + */ +#define DER_OID_V_id_dsa_with_sha512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x04 +#define DER_OID_SZ_id_dsa_with_sha512 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha512[DER_OID_SZ_id_dsa_with_sha512]; + +/* + * id-dsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 5 } + */ +#define DER_OID_V_id_dsa_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x05 +#define DER_OID_SZ_id_dsa_with_sha3_224 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha3_224[DER_OID_SZ_id_dsa_with_sha3_224]; + +/* + * id-dsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 6 } + */ +#define DER_OID_V_id_dsa_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x06 +#define DER_OID_SZ_id_dsa_with_sha3_256 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha3_256[DER_OID_SZ_id_dsa_with_sha3_256]; + +/* + * id-dsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 7 } + */ +#define DER_OID_V_id_dsa_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x07 +#define DER_OID_SZ_id_dsa_with_sha3_384 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha3_384[DER_OID_SZ_id_dsa_with_sha3_384]; + +/* + * id-dsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 8 } + */ +#define DER_OID_V_id_dsa_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x08 +#define DER_OID_SZ_id_dsa_with_sha3_512 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha3_512[DER_OID_SZ_id_dsa_with_sha3_512]; + +/* clang-format on */ + +/* Subject Public Key Info */ +int ossl_DER_w_algorithmIdentifier_DSA(WPACKET *pkt, int tag, DSA *dsa); +/* Signature */ +int ossl_DER_w_algorithmIdentifier_DSA_with_MD(WPACKET *pkt, int tag, + DSA *dsa, int mdnid); diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_ec.h b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_ec.h new file mode 100644 index 00000000000000..059c77d38ea794 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_ec.h @@ -0,0 +1,288 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ec.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "crypto/ec.h" +#include "internal/der.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { id-ecSigType 1 } + */ +#define DER_OID_V_ecdsa_with_SHA1 DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x01 +#define DER_OID_SZ_ecdsa_with_SHA1 9 +extern const unsigned char ossl_der_oid_ecdsa_with_SHA1[DER_OID_SZ_ecdsa_with_SHA1]; + +/* + * id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 } + */ +#define DER_OID_V_id_ecPublicKey DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01 +#define DER_OID_SZ_id_ecPublicKey 9 +extern const unsigned char ossl_der_oid_id_ecPublicKey[DER_OID_SZ_id_ecPublicKey]; + +/* + * c2pnb163v1 OBJECT IDENTIFIER ::= { c-TwoCurve 1 } + */ +#define DER_OID_V_c2pnb163v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x01 +#define DER_OID_SZ_c2pnb163v1 10 +extern const unsigned char ossl_der_oid_c2pnb163v1[DER_OID_SZ_c2pnb163v1]; + +/* + * c2pnb163v2 OBJECT IDENTIFIER ::= { c-TwoCurve 2 } + */ +#define DER_OID_V_c2pnb163v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x02 +#define DER_OID_SZ_c2pnb163v2 10 +extern const unsigned char ossl_der_oid_c2pnb163v2[DER_OID_SZ_c2pnb163v2]; + +/* + * c2pnb163v3 OBJECT IDENTIFIER ::= { c-TwoCurve 3 } + */ +#define DER_OID_V_c2pnb163v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x03 +#define DER_OID_SZ_c2pnb163v3 10 +extern const unsigned char ossl_der_oid_c2pnb163v3[DER_OID_SZ_c2pnb163v3]; + +/* + * c2pnb176w1 OBJECT IDENTIFIER ::= { c-TwoCurve 4 } + */ +#define DER_OID_V_c2pnb176w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x04 +#define DER_OID_SZ_c2pnb176w1 10 +extern const unsigned char ossl_der_oid_c2pnb176w1[DER_OID_SZ_c2pnb176w1]; + +/* + * c2tnb191v1 OBJECT IDENTIFIER ::= { c-TwoCurve 5 } + */ +#define DER_OID_V_c2tnb191v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x05 +#define DER_OID_SZ_c2tnb191v1 10 +extern const unsigned char ossl_der_oid_c2tnb191v1[DER_OID_SZ_c2tnb191v1]; + +/* + * c2tnb191v2 OBJECT IDENTIFIER ::= { c-TwoCurve 6 } + */ +#define DER_OID_V_c2tnb191v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x06 +#define DER_OID_SZ_c2tnb191v2 10 +extern const unsigned char ossl_der_oid_c2tnb191v2[DER_OID_SZ_c2tnb191v2]; + +/* + * c2tnb191v3 OBJECT IDENTIFIER ::= { c-TwoCurve 7 } + */ +#define DER_OID_V_c2tnb191v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x07 +#define DER_OID_SZ_c2tnb191v3 10 +extern const unsigned char ossl_der_oid_c2tnb191v3[DER_OID_SZ_c2tnb191v3]; + +/* + * c2onb191v4 OBJECT IDENTIFIER ::= { c-TwoCurve 8 } + */ +#define DER_OID_V_c2onb191v4 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x08 +#define DER_OID_SZ_c2onb191v4 10 +extern const unsigned char ossl_der_oid_c2onb191v4[DER_OID_SZ_c2onb191v4]; + +/* + * c2onb191v5 OBJECT IDENTIFIER ::= { c-TwoCurve 9 } + */ +#define DER_OID_V_c2onb191v5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x09 +#define DER_OID_SZ_c2onb191v5 10 +extern const unsigned char ossl_der_oid_c2onb191v5[DER_OID_SZ_c2onb191v5]; + +/* + * c2pnb208w1 OBJECT IDENTIFIER ::= { c-TwoCurve 10 } + */ +#define DER_OID_V_c2pnb208w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0A +#define DER_OID_SZ_c2pnb208w1 10 +extern const unsigned char ossl_der_oid_c2pnb208w1[DER_OID_SZ_c2pnb208w1]; + +/* + * c2tnb239v1 OBJECT IDENTIFIER ::= { c-TwoCurve 11 } + */ +#define DER_OID_V_c2tnb239v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0B +#define DER_OID_SZ_c2tnb239v1 10 +extern const unsigned char ossl_der_oid_c2tnb239v1[DER_OID_SZ_c2tnb239v1]; + +/* + * c2tnb239v2 OBJECT IDENTIFIER ::= { c-TwoCurve 12 } + */ +#define DER_OID_V_c2tnb239v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0C +#define DER_OID_SZ_c2tnb239v2 10 +extern const unsigned char ossl_der_oid_c2tnb239v2[DER_OID_SZ_c2tnb239v2]; + +/* + * c2tnb239v3 OBJECT IDENTIFIER ::= { c-TwoCurve 13 } + */ +#define DER_OID_V_c2tnb239v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0D +#define DER_OID_SZ_c2tnb239v3 10 +extern const unsigned char ossl_der_oid_c2tnb239v3[DER_OID_SZ_c2tnb239v3]; + +/* + * c2onb239v4 OBJECT IDENTIFIER ::= { c-TwoCurve 14 } + */ +#define DER_OID_V_c2onb239v4 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0E +#define DER_OID_SZ_c2onb239v4 10 +extern const unsigned char ossl_der_oid_c2onb239v4[DER_OID_SZ_c2onb239v4]; + +/* + * c2onb239v5 OBJECT IDENTIFIER ::= { c-TwoCurve 15 } + */ +#define DER_OID_V_c2onb239v5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0F +#define DER_OID_SZ_c2onb239v5 10 +extern const unsigned char ossl_der_oid_c2onb239v5[DER_OID_SZ_c2onb239v5]; + +/* + * c2pnb272w1 OBJECT IDENTIFIER ::= { c-TwoCurve 16 } + */ +#define DER_OID_V_c2pnb272w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x10 +#define DER_OID_SZ_c2pnb272w1 10 +extern const unsigned char ossl_der_oid_c2pnb272w1[DER_OID_SZ_c2pnb272w1]; + +/* + * c2pnb304w1 OBJECT IDENTIFIER ::= { c-TwoCurve 17 } + */ +#define DER_OID_V_c2pnb304w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x11 +#define DER_OID_SZ_c2pnb304w1 10 +extern const unsigned char ossl_der_oid_c2pnb304w1[DER_OID_SZ_c2pnb304w1]; + +/* + * c2tnb359v1 OBJECT IDENTIFIER ::= { c-TwoCurve 18 } + */ +#define DER_OID_V_c2tnb359v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x12 +#define DER_OID_SZ_c2tnb359v1 10 +extern const unsigned char ossl_der_oid_c2tnb359v1[DER_OID_SZ_c2tnb359v1]; + +/* + * c2pnb368w1 OBJECT IDENTIFIER ::= { c-TwoCurve 19 } + */ +#define DER_OID_V_c2pnb368w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x13 +#define DER_OID_SZ_c2pnb368w1 10 +extern const unsigned char ossl_der_oid_c2pnb368w1[DER_OID_SZ_c2pnb368w1]; + +/* + * c2tnb431r1 OBJECT IDENTIFIER ::= { c-TwoCurve 20 } + */ +#define DER_OID_V_c2tnb431r1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x14 +#define DER_OID_SZ_c2tnb431r1 10 +extern const unsigned char ossl_der_oid_c2tnb431r1[DER_OID_SZ_c2tnb431r1]; + +/* + * prime192v1 OBJECT IDENTIFIER ::= { primeCurve 1 } + */ +#define DER_OID_V_prime192v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x01 +#define DER_OID_SZ_prime192v1 10 +extern const unsigned char ossl_der_oid_prime192v1[DER_OID_SZ_prime192v1]; + +/* + * prime192v2 OBJECT IDENTIFIER ::= { primeCurve 2 } + */ +#define DER_OID_V_prime192v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x02 +#define DER_OID_SZ_prime192v2 10 +extern const unsigned char ossl_der_oid_prime192v2[DER_OID_SZ_prime192v2]; + +/* + * prime192v3 OBJECT IDENTIFIER ::= { primeCurve 3 } + */ +#define DER_OID_V_prime192v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x03 +#define DER_OID_SZ_prime192v3 10 +extern const unsigned char ossl_der_oid_prime192v3[DER_OID_SZ_prime192v3]; + +/* + * prime239v1 OBJECT IDENTIFIER ::= { primeCurve 4 } + */ +#define DER_OID_V_prime239v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x04 +#define DER_OID_SZ_prime239v1 10 +extern const unsigned char ossl_der_oid_prime239v1[DER_OID_SZ_prime239v1]; + +/* + * prime239v2 OBJECT IDENTIFIER ::= { primeCurve 5 } + */ +#define DER_OID_V_prime239v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x05 +#define DER_OID_SZ_prime239v2 10 +extern const unsigned char ossl_der_oid_prime239v2[DER_OID_SZ_prime239v2]; + +/* + * prime239v3 OBJECT IDENTIFIER ::= { primeCurve 6 } + */ +#define DER_OID_V_prime239v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x06 +#define DER_OID_SZ_prime239v3 10 +extern const unsigned char ossl_der_oid_prime239v3[DER_OID_SZ_prime239v3]; + +/* + * prime256v1 OBJECT IDENTIFIER ::= { primeCurve 7 } + */ +#define DER_OID_V_prime256v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07 +#define DER_OID_SZ_prime256v1 10 +extern const unsigned char ossl_der_oid_prime256v1[DER_OID_SZ_prime256v1]; + +/* + * ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 1 } + */ +#define DER_OID_V_ecdsa_with_SHA224 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x01 +#define DER_OID_SZ_ecdsa_with_SHA224 10 +extern const unsigned char ossl_der_oid_ecdsa_with_SHA224[DER_OID_SZ_ecdsa_with_SHA224]; + +/* + * ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 } + */ +#define DER_OID_V_ecdsa_with_SHA256 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02 +#define DER_OID_SZ_ecdsa_with_SHA256 10 +extern const unsigned char ossl_der_oid_ecdsa_with_SHA256[DER_OID_SZ_ecdsa_with_SHA256]; + +/* + * ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 } + */ +#define DER_OID_V_ecdsa_with_SHA384 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x03 +#define DER_OID_SZ_ecdsa_with_SHA384 10 +extern const unsigned char ossl_der_oid_ecdsa_with_SHA384[DER_OID_SZ_ecdsa_with_SHA384]; + +/* + * ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 } + */ +#define DER_OID_V_ecdsa_with_SHA512 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x04 +#define DER_OID_SZ_ecdsa_with_SHA512 10 +extern const unsigned char ossl_der_oid_ecdsa_with_SHA512[DER_OID_SZ_ecdsa_with_SHA512]; + +/* + * id-ecdsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 9 } + */ +#define DER_OID_V_id_ecdsa_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x09 +#define DER_OID_SZ_id_ecdsa_with_sha3_224 11 +extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_224[DER_OID_SZ_id_ecdsa_with_sha3_224]; + +/* + * id-ecdsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 10 } + */ +#define DER_OID_V_id_ecdsa_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0A +#define DER_OID_SZ_id_ecdsa_with_sha3_256 11 +extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_256[DER_OID_SZ_id_ecdsa_with_sha3_256]; + +/* + * id-ecdsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 11 } + */ +#define DER_OID_V_id_ecdsa_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0B +#define DER_OID_SZ_id_ecdsa_with_sha3_384 11 +extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_384[DER_OID_SZ_id_ecdsa_with_sha3_384]; + +/* + * id-ecdsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 12 } + */ +#define DER_OID_V_id_ecdsa_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0C +#define DER_OID_SZ_id_ecdsa_with_sha3_512 11 +extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_512[DER_OID_SZ_id_ecdsa_with_sha3_512]; + +/* clang-format on */ + +/* Subject Public Key Info */ +int ossl_DER_w_algorithmIdentifier_EC(WPACKET *pkt, int cont, EC_KEY *ec); +/* Signature */ +int ossl_DER_w_algorithmIdentifier_ECDSA_with_MD(WPACKET *pkt, int cont, + EC_KEY *ec, int mdnid); diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_ecx.h b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_ecx.h new file mode 100644 index 00000000000000..80e15fad803d19 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_ecx.h @@ -0,0 +1,52 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ecx.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ecx.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-X25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 110 } + */ +#define DER_OID_V_id_X25519 DER_P_OBJECT, 3, 0x2B, 0x65, 0x6E +#define DER_OID_SZ_id_X25519 5 +extern const unsigned char ossl_der_oid_id_X25519[DER_OID_SZ_id_X25519]; + +/* + * id-X448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 111 } + */ +#define DER_OID_V_id_X448 DER_P_OBJECT, 3, 0x2B, 0x65, 0x6F +#define DER_OID_SZ_id_X448 5 +extern const unsigned char ossl_der_oid_id_X448[DER_OID_SZ_id_X448]; + +/* + * id-Ed25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 112 } + */ +#define DER_OID_V_id_Ed25519 DER_P_OBJECT, 3, 0x2B, 0x65, 0x70 +#define DER_OID_SZ_id_Ed25519 5 +extern const unsigned char ossl_der_oid_id_Ed25519[DER_OID_SZ_id_Ed25519]; + +/* + * id-Ed448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 113 } + */ +#define DER_OID_V_id_Ed448 DER_P_OBJECT, 3, 0x2B, 0x65, 0x71 +#define DER_OID_SZ_id_Ed448 5 +extern const unsigned char ossl_der_oid_id_Ed448[DER_OID_SZ_id_Ed448]; + +/* clang-format on */ + +int ossl_DER_w_algorithmIdentifier_ED25519(WPACKET *pkt, int cont, ECX_KEY *ec); +int ossl_DER_w_algorithmIdentifier_ED448(WPACKET *pkt, int cont, ECX_KEY *ec); +int ossl_DER_w_algorithmIdentifier_X25519(WPACKET *pkt, int cont, ECX_KEY *ec); +int ossl_DER_w_algorithmIdentifier_X448(WPACKET *pkt, int cont, ECX_KEY *ec); diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..a6c4c87d7824f7 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,42 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + +/* clang-format on */ + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_rsa.h b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_rsa.h new file mode 100644 index 00000000000000..9c374ceb2b0ea6 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_rsa.h @@ -0,0 +1,189 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_rsa.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "crypto/rsa.h" +#include "internal/der.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * hashAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 2 } + */ +#define DER_OID_V_hashAlgs DER_P_OBJECT, 8, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02 +#define DER_OID_SZ_hashAlgs 10 +extern const unsigned char ossl_der_oid_hashAlgs[DER_OID_SZ_hashAlgs]; + +/* + * rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } + */ +#define DER_OID_V_rsaEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01 +#define DER_OID_SZ_rsaEncryption 11 +extern const unsigned char ossl_der_oid_rsaEncryption[DER_OID_SZ_rsaEncryption]; + +/* + * id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 } + */ +#define DER_OID_V_id_RSAES_OAEP DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x07 +#define DER_OID_SZ_id_RSAES_OAEP 11 +extern const unsigned char ossl_der_oid_id_RSAES_OAEP[DER_OID_SZ_id_RSAES_OAEP]; + +/* + * id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 } + */ +#define DER_OID_V_id_pSpecified DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x09 +#define DER_OID_SZ_id_pSpecified 11 +extern const unsigned char ossl_der_oid_id_pSpecified[DER_OID_SZ_id_pSpecified]; + +/* + * id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } + */ +#define DER_OID_V_id_RSASSA_PSS DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0A +#define DER_OID_SZ_id_RSASSA_PSS 11 +extern const unsigned char ossl_der_oid_id_RSASSA_PSS[DER_OID_SZ_id_RSASSA_PSS]; + +/* + * md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } + */ +#define DER_OID_V_md2WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x02 +#define DER_OID_SZ_md2WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_md2WithRSAEncryption[DER_OID_SZ_md2WithRSAEncryption]; + +/* + * md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } + */ +#define DER_OID_V_md5WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04 +#define DER_OID_SZ_md5WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_md5WithRSAEncryption[DER_OID_SZ_md5WithRSAEncryption]; + +/* + * sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } + */ +#define DER_OID_V_sha1WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05 +#define DER_OID_SZ_sha1WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_sha1WithRSAEncryption[DER_OID_SZ_sha1WithRSAEncryption]; + +/* + * sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 } + */ +#define DER_OID_V_sha224WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0E +#define DER_OID_SZ_sha224WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_sha224WithRSAEncryption[DER_OID_SZ_sha224WithRSAEncryption]; + +/* + * sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 } + */ +#define DER_OID_V_sha256WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B +#define DER_OID_SZ_sha256WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_sha256WithRSAEncryption[DER_OID_SZ_sha256WithRSAEncryption]; + +/* + * sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 } + */ +#define DER_OID_V_sha384WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0C +#define DER_OID_SZ_sha384WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_sha384WithRSAEncryption[DER_OID_SZ_sha384WithRSAEncryption]; + +/* + * sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 } + */ +#define DER_OID_V_sha512WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0D +#define DER_OID_SZ_sha512WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_sha512WithRSAEncryption[DER_OID_SZ_sha512WithRSAEncryption]; + +/* + * sha512-224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 15 } + */ +#define DER_OID_V_sha512_224WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0F +#define DER_OID_SZ_sha512_224WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_sha512_224WithRSAEncryption[DER_OID_SZ_sha512_224WithRSAEncryption]; + +/* + * sha512-256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 16 } + */ +#define DER_OID_V_sha512_256WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x10 +#define DER_OID_SZ_sha512_256WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_sha512_256WithRSAEncryption[DER_OID_SZ_sha512_256WithRSAEncryption]; + +/* + * id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 } + */ +#define DER_OID_V_id_mgf1 DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x08 +#define DER_OID_SZ_id_mgf1 11 +extern const unsigned char ossl_der_oid_id_mgf1[DER_OID_SZ_id_mgf1]; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 13 } + */ +#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0D +#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224 11 +extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_224[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224]; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 14 } + */ +#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0E +#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256 11 +extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_256[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256]; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 15 } + */ +#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0F +#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384 11 +extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_384[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384]; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 16 } + */ +#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x10 +#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512 11 +extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_512[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512]; + +/* + * md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 } + */ +#define DER_OID_V_md4WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x03 +#define DER_OID_SZ_md4WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_md4WithRSAEncryption[DER_OID_SZ_md4WithRSAEncryption]; + +/* + * ripemd160WithRSAEncryption OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) teletrust(36) algorithm(3) signatureAlgorithm(3) rsaSignature(1) 2 + * } + */ +#define DER_OID_V_ripemd160WithRSAEncryption DER_P_OBJECT, 6, 0x2B, 0x24, 0x03, 0x03, 0x01, 0x02 +#define DER_OID_SZ_ripemd160WithRSAEncryption 8 +extern const unsigned char ossl_der_oid_ripemd160WithRSAEncryption[DER_OID_SZ_ripemd160WithRSAEncryption]; + +/* + * mdc2WithRSASignature OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) mdc2WithRSASignature(14) + * } + */ +#define DER_OID_V_mdc2WithRSASignature DER_P_OBJECT, 5, 0x2B, 0x0E, 0x03, 0x02, 0x0E +#define DER_OID_SZ_mdc2WithRSASignature 7 +extern const unsigned char ossl_der_oid_mdc2WithRSASignature[DER_OID_SZ_mdc2WithRSASignature]; + +/* clang-format on */ + +/* PSS parameters */ +int ossl_DER_w_RSASSA_PSS_params(WPACKET *pkt, int tag, + const RSA_PSS_PARAMS_30 *pss); +/* Subject Public Key Info */ +int ossl_DER_w_algorithmIdentifier_RSA(WPACKET *pkt, int tag, RSA *rsa); +int ossl_DER_w_algorithmIdentifier_RSA_PSS(WPACKET *pkt, int tag, + int rsa_type, + const RSA_PSS_PARAMS_30 *pss); +/* Signature */ +int ossl_DER_w_algorithmIdentifier_MDWithRSAEncryption(WPACKET *pkt, int tag, + int mdnid); diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..eaf1ab14fd0032 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,105 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + +/* clang-format on */ + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_sm2.h b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_sm2.h new file mode 100644 index 00000000000000..a6ab7b7166d3c8 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_sm2.h @@ -0,0 +1,39 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_sm2.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "crypto/ec.h" +#include "internal/der.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * sm2-with-SM3 OBJECT IDENTIFIER ::= { sm-scheme 501 } + */ +#define DER_OID_V_sm2_with_SM3 DER_P_OBJECT, 8, 0x2A, 0x81, 0x1C, 0xCF, 0x55, 0x01, 0x83, 0x75 +#define DER_OID_SZ_sm2_with_SM3 10 +extern const unsigned char ossl_der_oid_sm2_with_SM3[DER_OID_SZ_sm2_with_SM3]; + +/* + * curveSM2 OBJECT IDENTIFIER ::= { sm-scheme 301 } + */ +#define DER_OID_V_curveSM2 DER_P_OBJECT, 8, 0x2A, 0x81, 0x1C, 0xCF, 0x55, 0x01, 0x82, 0x2D +#define DER_OID_SZ_curveSM2 10 +extern const unsigned char ossl_der_oid_curveSM2[DER_OID_SZ_curveSM2]; + +/* clang-format on */ + +/* Subject Public Key Info */ +int ossl_DER_w_algorithmIdentifier_SM2(WPACKET *pkt, int cont, EC_KEY *ec); +/* Signature */ +int ossl_DER_w_algorithmIdentifier_SM2_with_MD(WPACKET *pkt, int cont, + EC_KEY *ec, int mdnid); diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_wrap.h b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_wrap.h new file mode 100644 index 00000000000000..56d4777bb3d2ff --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/common/include/prov/der_wrap.h @@ -0,0 +1,48 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_wrap.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-alg-CMS3DESwrap OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 6 + * } + */ +#define DER_OID_V_id_alg_CMS3DESwrap DER_P_OBJECT, 11, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x10, 0x03, 0x06 +#define DER_OID_SZ_id_alg_CMS3DESwrap 13 +extern const unsigned char ossl_der_oid_id_alg_CMS3DESwrap[DER_OID_SZ_id_alg_CMS3DESwrap]; + +/* + * id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 } + */ +#define DER_OID_V_id_aes128_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x05 +#define DER_OID_SZ_id_aes128_wrap 11 +extern const unsigned char ossl_der_oid_id_aes128_wrap[DER_OID_SZ_id_aes128_wrap]; + +/* + * id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 } + */ +#define DER_OID_V_id_aes192_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x19 +#define DER_OID_SZ_id_aes192_wrap 11 +extern const unsigned char ossl_der_oid_id_aes192_wrap[DER_OID_SZ_id_aes192_wrap]; + +/* + * id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 } + */ +#define DER_OID_V_id_aes256_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2D +#define DER_OID_SZ_id_aes256_wrap 11 +extern const unsigned char ossl_der_oid_id_aes256_wrap[DER_OID_SZ_id_aes256_wrap]; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/fips.ld b/deps/openssl/config/archs/linux64-riscv64/asm/providers/fips.ld new file mode 100644 index 00000000000000..1debaaa7ff652d --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/fips.ld @@ -0,0 +1,5 @@ +{ + global: + OSSL_provider_init; + local: *; +}; diff --git a/deps/openssl/config/archs/linux64-riscv64/asm/providers/legacy.ld b/deps/openssl/config/archs/linux64-riscv64/asm/providers/legacy.ld new file mode 100644 index 00000000000000..1debaaa7ff652d --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm/providers/legacy.ld @@ -0,0 +1,5 @@ +{ + global: + OSSL_provider_init; + local: *; +}; diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/apps/progs.c b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/apps/progs.c new file mode 100644 index 00000000000000..317acf5bc8b2d0 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/apps/progs.c @@ -0,0 +1,404 @@ +/* + * WARNING: do not edit! + * Generated by apps/progs.pl + * + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "progs.h" + +FUNCTION functions[] = { + {FT_general, "asn1parse", asn1parse_main, asn1parse_options, NULL, NULL}, + {FT_general, "ca", ca_main, ca_options, NULL, NULL}, +#ifndef OPENSSL_NO_SOCK + {FT_general, "ciphers", ciphers_main, ciphers_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_CMP + {FT_general, "cmp", cmp_main, cmp_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_CMS + {FT_general, "cms", cms_main, cms_options, NULL, NULL}, +#endif + {FT_general, "crl", crl_main, crl_options, NULL, NULL}, + {FT_general, "crl2pkcs7", crl2pkcs7_main, crl2pkcs7_options, NULL, NULL}, + {FT_general, "dgst", dgst_main, dgst_options, NULL, NULL}, +#ifndef OPENSSL_NO_DH + {FT_general, "dhparam", dhparam_main, dhparam_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_DSA + {FT_general, "dsa", dsa_main, dsa_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_DSA + {FT_general, "dsaparam", dsaparam_main, dsaparam_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_EC + {FT_general, "ec", ec_main, ec_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_EC + {FT_general, "ecparam", ecparam_main, ecparam_options, NULL, NULL}, +#endif + {FT_general, "enc", enc_main, enc_options, NULL, NULL}, +#ifndef OPENSSL_NO_ENGINE + {FT_general, "engine", engine_main, engine_options, NULL, NULL}, +#endif + {FT_general, "errstr", errstr_main, errstr_options, NULL, NULL}, + {FT_general, "fipsinstall", fipsinstall_main, fipsinstall_options, NULL, NULL}, +#ifndef OPENSSL_NO_DSA + {FT_general, "gendsa", gendsa_main, gendsa_options, NULL, NULL}, +#endif + {FT_general, "genpkey", genpkey_main, genpkey_options, NULL, NULL}, +#ifndef OPENSSL_NO_RSA + {FT_general, "genrsa", genrsa_main, genrsa_options, NULL, NULL}, +#endif + {FT_general, "help", help_main, help_options, NULL, NULL}, + {FT_general, "info", info_main, info_options, NULL, NULL}, + {FT_general, "kdf", kdf_main, kdf_options, NULL, NULL}, + {FT_general, "list", list_main, list_options, NULL, NULL}, + {FT_general, "mac", mac_main, mac_options, NULL, NULL}, + {FT_general, "nseq", nseq_main, nseq_options, NULL, NULL}, +#ifndef OPENSSL_NO_OCSP + {FT_general, "ocsp", ocsp_main, ocsp_options, NULL, NULL}, +#endif + {FT_general, "passwd", passwd_main, passwd_options, NULL, NULL}, + {FT_general, "pkcs12", pkcs12_main, pkcs12_options, NULL, NULL}, + {FT_general, "pkcs7", pkcs7_main, pkcs7_options, NULL, NULL}, + {FT_general, "pkcs8", pkcs8_main, pkcs8_options, NULL, NULL}, + {FT_general, "pkey", pkey_main, pkey_options, NULL, NULL}, + {FT_general, "pkeyparam", pkeyparam_main, pkeyparam_options, NULL, NULL}, + {FT_general, "pkeyutl", pkeyutl_main, pkeyutl_options, NULL, NULL}, + {FT_general, "prime", prime_main, prime_options, NULL, NULL}, + {FT_general, "rand", rand_main, rand_options, NULL, NULL}, + {FT_general, "rehash", rehash_main, rehash_options, NULL, NULL}, + {FT_general, "req", req_main, req_options, NULL, NULL}, + {FT_general, "rsa", rsa_main, rsa_options, NULL, NULL}, +#if !defined(OPENSSL_NO_DEPRECATED_3_0) && !defined(OPENSSL_NO_RSA) + {FT_general, "rsautl", rsautl_main, rsautl_options, "pkeyutl", "3.0"}, +#endif +#ifndef OPENSSL_NO_SOCK + {FT_general, "s_client", s_client_main, s_client_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_SOCK + {FT_general, "s_server", s_server_main, s_server_options, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_SOCK + {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, +#endif + {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, + {FT_general, "skeyutl", skeyutl_main, skeyutl_options, NULL, NULL}, + {FT_general, "smime", smime_main, smime_options, NULL, NULL}, + {FT_general, "speed", speed_main, speed_options, NULL, NULL}, + {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, +#ifndef OPENSSL_NO_SRP + {FT_general, "srp", srp_main, srp_options, NULL, NULL}, +#endif + {FT_general, "storeutl", storeutl_main, storeutl_options, NULL, NULL}, +#ifndef OPENSSL_NO_TS + {FT_general, "ts", ts_main, ts_options, NULL, NULL}, +#endif + {FT_general, "verify", verify_main, verify_options, NULL, NULL}, + {FT_general, "version", version_main, version_options, NULL, NULL}, + {FT_general, "x509", x509_main, x509_options, NULL, NULL}, +#ifndef OPENSSL_NO_MD2 + {FT_md, "md2", dgst_main, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_MD4 + {FT_md, "md4", dgst_main, NULL, NULL}, +#endif + {FT_md, "md5", dgst_main, NULL, NULL}, + {FT_md, "sha1", dgst_main, NULL, NULL}, + {FT_md, "sha224", dgst_main, NULL, NULL}, + {FT_md, "sha256", dgst_main, NULL, NULL}, + {FT_md, "sha384", dgst_main, NULL, NULL}, + {FT_md, "sha512", dgst_main, NULL, NULL}, + {FT_md, "sha512-224", dgst_main, NULL, NULL}, + {FT_md, "sha512-256", dgst_main, NULL, NULL}, + {FT_md, "sha3-224", dgst_main, NULL, NULL}, + {FT_md, "sha3-256", dgst_main, NULL, NULL}, + {FT_md, "sha3-384", dgst_main, NULL, NULL}, + {FT_md, "sha3-512", dgst_main, NULL, NULL}, + {FT_md, "shake128", dgst_main, NULL, NULL}, + {FT_md, "shake256", dgst_main, NULL, NULL}, +#ifndef OPENSSL_NO_MDC2 + {FT_md, "mdc2", dgst_main, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_RMD160 + {FT_md, "rmd160", dgst_main, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_BLAKE2 + {FT_md, "blake2b512", dgst_main, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_BLAKE2 + {FT_md, "blake2s256", dgst_main, NULL, NULL}, +#endif +#ifndef OPENSSL_NO_SM3 + {FT_md, "sm3", dgst_main, NULL, NULL}, +#endif + {FT_cipher, "aes-128-cbc", enc_main, enc_options, NULL}, + {FT_cipher, "aes-128-ecb", enc_main, enc_options, NULL}, + {FT_cipher, "aes-192-cbc", enc_main, enc_options, NULL}, + {FT_cipher, "aes-192-ecb", enc_main, enc_options, NULL}, + {FT_cipher, "aes-256-cbc", enc_main, enc_options, NULL}, + {FT_cipher, "aes-256-ecb", enc_main, enc_options, NULL}, +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-ctr", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cfb1", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cfb8", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-ctr", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cfb1", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cfb8", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-ctr", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cfb1", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cfb8", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-128-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-128-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-192-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-192-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-256-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, +#endif + {FT_cipher, "base64", enc_main, enc_options, NULL}, +#ifndef OPENSSL_NO_ZLIB + {FT_cipher, "zlib", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_BROTLI + {FT_cipher, "brotli", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_ZSTD + {FT_cipher, "zstd", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des3", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "desx", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC4 + {FT_cipher, "rc4", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC4 + {FT_cipher, "rc4-40", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-64-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-40-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-cbc", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-ecb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-cfb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-ofb", enc_main, enc_options, NULL}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-ctr", enc_main, enc_options, NULL}, +#endif + {0, NULL, NULL, NULL, NULL} +}; diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/configdata.pm new file mode 100644 index 00000000000000..0063924e8a2ad7 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/configdata.pm @@ -0,0 +1,25808 @@ +#! /usr/bin/env perl +# -*- mode: perl -*- + +package configdata; + +use strict; +use warnings; + +use Exporter; +our @ISA = qw(Exporter); +our @EXPORT = qw( + %config %target %disabled %withargs %unified_info + @disablables @disablables_int +); + +our %config = ( + "AR" => "ar", + "ARFLAGS" => [ + "qc" + ], + "AS" => "as", + "ASFLAGS" => [], + "CC" => "../config/fake_gcc.pl", + "CFLAGS" => [ + "-Wall -O3" + ], + "CPPDEFINES" => [], + "CPPFLAGS" => [], + "CPPINCLUDES" => [], + "CXX" => "g++", + "CXXFLAGS" => [ + "-Wall -O3" + ], + "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", + "FIPS_VENDOR" => "OpenSSL FIPS Provider", + "HASHBANGPERL" => "/usr/bin/env perl", + "LD" => "ld", + "LDFLAGS" => [], + "LDLIBS" => [], + "OBJCOPY" => "objcopy", + "PERL" => "/usr/bin/perl", + "RANLIB" => "ranlib", + "RC" => "windres", + "RCFLAGS" => [], + "api" => "30500", + "b32" => "0", + "b64" => "0", + "b64l" => "1", + "bn_ll" => "0", + "build_file" => "Makefile", + "build_file_templates" => [ + "Configurations/common0.tmpl", + "Configurations/unix-Makefile.tmpl" + ], + "build_infos" => [ + "./build.info", + "crypto/build.info", + "ssl/build.info", + "apps/build.info", + "util/build.info", + "tools/build.info", + "fuzz/build.info", + "providers/build.info", + "doc/build.info", + "engines/build.info", + "exporters/build.info", + "crypto/objects/build.info", + "crypto/buffer/build.info", + "crypto/bio/build.info", + "crypto/stack/build.info", + "crypto/lhash/build.info", + "crypto/hashtable/build.info", + "crypto/rand/build.info", + "crypto/evp/build.info", + "crypto/asn1/build.info", + "crypto/pem/build.info", + "crypto/x509/build.info", + "crypto/conf/build.info", + "crypto/txt_db/build.info", + "crypto/pkcs7/build.info", + "crypto/pkcs12/build.info", + "crypto/ui/build.info", + "crypto/kdf/build.info", + "crypto/store/build.info", + "crypto/property/build.info", + "crypto/md4/build.info", + "crypto/md5/build.info", + "crypto/sha/build.info", + "crypto/mdc2/build.info", + "crypto/ml_kem/build.info", + "crypto/hmac/build.info", + "crypto/ripemd/build.info", + "crypto/whrlpool/build.info", + "crypto/poly1305/build.info", + "crypto/siphash/build.info", + "crypto/sm3/build.info", + "crypto/des/build.info", + "crypto/aes/build.info", + "crypto/rc2/build.info", + "crypto/rc4/build.info", + "crypto/idea/build.info", + "crypto/aria/build.info", + "crypto/bf/build.info", + "crypto/cast/build.info", + "crypto/camellia/build.info", + "crypto/seed/build.info", + "crypto/sm4/build.info", + "crypto/chacha/build.info", + "crypto/modes/build.info", + "crypto/bn/build.info", + "crypto/ec/build.info", + "crypto/rsa/build.info", + "crypto/dsa/build.info", + "crypto/dh/build.info", + "crypto/sm2/build.info", + "crypto/dso/build.info", + "crypto/engine/build.info", + "crypto/err/build.info", + "crypto/comp/build.info", + "crypto/http/build.info", + "crypto/ocsp/build.info", + "crypto/cms/build.info", + "crypto/ts/build.info", + "crypto/srp/build.info", + "crypto/cmac/build.info", + "crypto/ct/build.info", + "crypto/async/build.info", + "crypto/ess/build.info", + "crypto/crmf/build.info", + "crypto/cmp/build.info", + "crypto/encode_decode/build.info", + "crypto/ffc/build.info", + "crypto/hpke/build.info", + "crypto/thread/build.info", + "crypto/ml_dsa/build.info", + "crypto/slh_dsa/build.info", + "ssl/record/build.info", + "ssl/rio/build.info", + "ssl/quic/build.info", + "apps/lib/build.info", + "providers/common/build.info", + "providers/implementations/build.info", + "providers/fips/build.info", + "doc/man1/build.info", + "ssl/record/methods/build.info", + "providers/common/der/build.info", + "providers/implementations/digests/build.info", + "providers/implementations/ciphers/build.info", + "providers/implementations/rands/build.info", + "providers/implementations/macs/build.info", + "providers/implementations/kdfs/build.info", + "providers/implementations/exchange/build.info", + "providers/implementations/keymgmt/build.info", + "providers/implementations/signature/build.info", + "providers/implementations/asymciphers/build.info", + "providers/implementations/encode_decode/build.info", + "providers/implementations/storemgmt/build.info", + "providers/implementations/kem/build.info", + "providers/implementations/skeymgmt/build.info", + "providers/implementations/rands/seeding/build.info" + ], + "build_metadata" => "", + "build_type" => "release", + "builddir" => ".", + "cflags" => [ + "-Wa,--noexecstack" + ], + "conf_files" => [ + "Configurations/00-base-templates.conf", + "Configurations/10-main.conf" + ], + "cppflags" => [], + "cxxflags" => [], + "defines" => [ + "NDEBUG" + ], + "dynamic_engines" => "0", + "ex_libs" => [], + "full_version" => "3.5.7", + "includes" => [], + "lflags" => [], + "lib_defines" => [ + "OPENSSL_PIC" + ], + "libdir" => "", + "major" => "3", + "makedep_scheme" => "gcc", + "minor" => "5", + "openssl_api_defines" => [ + "OPENSSL_CONFIGURED_API=30500" + ], + "openssl_feature_defines" => [ + "OPENSSL_RAND_SEED_OS", + "OPENSSL_THREADS", + "OPENSSL_NO_AFALGENG", + "OPENSSL_NO_ASAN", + "OPENSSL_NO_BROTLI_DYNAMIC", + "OPENSSL_NO_CRYPTO_MDEBUG", + "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", + "OPENSSL_NO_DEMOS", + "OPENSSL_NO_DEVCRYPTOENG", + "OPENSSL_NO_EC_NISTP_64_GCC_128", + "OPENSSL_NO_EGD", + "OPENSSL_NO_EXTERNAL_TESTS", + "OPENSSL_NO_FIPS_JITTER", + "OPENSSL_NO_FUZZ_AFL", + "OPENSSL_NO_FUZZ_LIBFUZZER", + "OPENSSL_NO_H3DEMO", + "OPENSSL_NO_HQINTEROP", + "OPENSSL_NO_JITTER", + "OPENSSL_NO_KTLS", + "OPENSSL_NO_LOADERENG", + "OPENSSL_NO_MD2", + "OPENSSL_NO_MSAN", + "OPENSSL_NO_PIE", + "OPENSSL_NO_RC5", + "OPENSSL_NO_SCTP", + "OPENSSL_NO_SSL3", + "OPENSSL_NO_SSL3_METHOD", + "OPENSSL_NO_SSLKEYLOG", + "OPENSSL_NO_TESTS", + "OPENSSL_NO_TFO", + "OPENSSL_NO_TRACE", + "OPENSSL_NO_UBSAN", + "OPENSSL_NO_UNIT_TEST", + "OPENSSL_NO_UPLINK", + "OPENSSL_NO_WEAK_SSL_CIPHERS", + "OPENSSL_NO_WINSTORE", + "OPENSSL_NO_ZLIB_DYNAMIC", + "OPENSSL_NO_ZSTD_DYNAMIC", + "OPENSSL_NO_DYNAMIC_ENGINE" + ], + "openssl_other_defines" => [ + "OPENSSL_NO_KTLS" + ], + "openssl_sys_defines" => [], + "openssldir" => "", + "options" => "enable-ssl-trace enable-fips enable-zlib --with-zlib-include=../../zlib enable-brotli --with-brotli-include=../../brotli/c/include enable-zstd --with-zstd-include=../../zstd/lib no-afalgeng no-asan no-brotli-dynamic no-buildtest-c++ no-crypto-mdebug no-crypto-mdebug-backtrace no-demos no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fips-jitter no-fuzz-afl no-fuzz-libfuzzer no-h3demo no-hqinterop no-jitter no-ktls no-loadereng no-md2 no-msan no-pie no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-sslkeylog no-tests no-tfo no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-winstore no-zlib-dynamic no-zstd-dynamic", + "patch" => "7", + "perl_archname" => "x86_64-linux-thread-multi", + "perl_cmd" => "/usr/bin/perl", + "perl_version" => "5.42.2", + "perlargv" => [ + "no-tests", + "no-shared", + "no-afalgeng", + "enable-ssl-trace", + "enable-fips", + "zlib", + "--with-zlib-include=../../zlib", + "enable-brotli", + "--with-brotli-include=../../brotli/c/include", + "enable-zstd", + "--with-zstd-include=../../zstd/lib", + "linux64-riscv64" + ], + "perlenv" => { + "AR" => "ar", + "ARFLAGS" => undef, + "AS" => "as", + "ASFLAGS" => undef, + "BUILDFILE" => undef, + "CC" => "../config/fake_gcc.pl", + "CFLAGS" => undef, + "CPP" => undef, + "CPPDEFINES" => undef, + "CPPFLAGS" => undef, + "CPPINCLUDES" => undef, + "CROSS_COMPILE" => undef, + "CXX" => "g++", + "CXXFLAGS" => undef, + "HASHBANGPERL" => undef, + "LD" => "ld", + "LDFLAGS" => undef, + "LDLIBS" => undef, + "MT" => undef, + "MTFLAGS" => undef, + "OBJCOPY" => "objcopy", + "OPENSSL_LOCAL_CONFIG_DIR" => undef, + "PERL" => undef, + "RANLIB" => "ranlib", + "RC" => undef, + "RCFLAGS" => undef, + "RM" => undef, + "WINDRES" => undef, + "__CNF_CFLAGS" => undef, + "__CNF_CPPDEFINES" => undef, + "__CNF_CPPFLAGS" => undef, + "__CNF_CPPINCLUDES" => undef, + "__CNF_CXXFLAGS" => undef, + "__CNF_LDFLAGS" => undef, + "__CNF_LDLIBS" => undef + }, + "prefix" => "", + "prerelease" => "", + "processor" => "", + "rc4_int" => "unsigned char", + "release_date" => "9 Jun 2026", + "shlib_version" => "3", + "sourcedir" => ".", + "target" => "linux64-riscv64", + "version" => "3.5.7" +); +our %target = ( + "AR" => "ar", + "ARFLAGS" => "qc", + "CC" => "gcc", + "CFLAGS" => "-Wall -O3", + "CXX" => "g++", + "CXXFLAGS" => "-Wall -O3", + "HASHBANGPERL" => "/usr/bin/env perl", + "OBJCOPY" => "objcopy", + "RANLIB" => "ranlib", + "RC" => "windres", + "_conf_fname_int" => [ + "Configurations/00-base-templates.conf", + "Configurations/00-base-templates.conf", + "Configurations/10-main.conf", + "Configurations/10-main.conf", + "Configurations/10-main.conf", + "Configurations/shared-info.pl" + ], + "asm_arch" => "riscv64", + "bin_cflags" => "", + "bin_lflags" => "", + "bn_ops" => "SIXTY_FOUR_BIT_LONG RC4_CHAR", + "build_file" => "Makefile", + "build_scheme" => [ + "unified", + "unix" + ], + "cflags" => "-pthread", + "cppflags" => "", + "cxxflags" => "-std=c++11 -pthread", + "defines" => [ + "OPENSSL_BUILDING_OPENSSL", + "BROTLI", + "ZLIB", + "ZSTD" + ], + "disable" => [], + "dso_ldflags" => "-Wl,-z,defs", + "dso_scheme" => "dlfcn", + "enable" => [ + "afalgeng" + ], + "ex_libs" => "-lz -lbrotlienc -lbrotlidec -lbrotlicommon -lm -lzstd -ldl -pthread", + "includes" => [ + "../../brotli/c/include", + "../../zlib", + "../../zstd/lib" + ], + "lflags" => "", + "lib_cflags" => "", + "lib_cppflags" => "-DOPENSSL_USE_NODELETE", + "lib_defines" => [], + "module_cflags" => "-fPIC", + "module_cxxflags" => undef, + "module_ldflags" => "-Wl,-znodelete -shared -Wl,-Bsymbolic", + "perl_platform" => "Unix", + "perlasm_scheme" => "linux64", + "shared_cflag" => "-fPIC", + "shared_defflag" => "-Wl,--version-script=", + "shared_defines" => [], + "shared_ldflag" => "-Wl,-znodelete -shared -Wl,-Bsymbolic", + "shared_rcflag" => "", + "shared_sonameflag" => "-Wl,-soname=", + "shared_target" => "linux-shared", + "template" => "1", + "thread_defines" => [], + "thread_scheme" => "pthreads", + "unistd" => "" +); +our @disablables = ( + "acvp-tests", + "afalgeng", + "apps", + "argon2", + "aria", + "asan", + "asm", + "async", + "atexit", + "autoalginit", + "autoerrinit", + "autoload-config", + "bf", + "blake2", + "brotli", + "brotli-dynamic", + "buildtest-c++", + "bulk", + "cached-fetch", + "camellia", + "capieng", + "winstore", + "cast", + "chacha", + "cmac", + "cmp", + "cms", + "comp", + "crypto-mdebug", + "ct", + "default-thread-pool", + "demos", + "h3demo", + "hqinterop", + "deprecated", + "des", + "devcryptoeng", + "dgram", + "dh", + "docs", + "dsa", + "dso", + "dtls", + "dynamic-engine", + "ec", + "ec2m", + "ec_nistp_64_gcc_128", + "ecdh", + "ecdsa", + "ecx", + "egd", + "engine", + "err", + "external-tests", + "filenames", + "fips", + "fips-securitychecks", + "fips-post", + "fips-jitter", + "fuzz-afl", + "fuzz-libfuzzer", + "gost", + "http", + "idea", + "integrity-only-ciphers", + "jitter", + "ktls", + "legacy", + "loadereng", + "makedepend", + "md2", + "md4", + "mdc2", + "ml-dsa", + "ml-kem", + "module", + "msan", + "multiblock", + "nextprotoneg", + "ocb", + "ocsp", + "padlockeng", + "pic", + "pie", + "pinshared", + "poly1305", + "posix-io", + "psk", + "quic", + "unstable-qlog", + "rc2", + "rc4", + "rc5", + "rdrand", + "rfc3779", + "rmd160", + "scrypt", + "sctp", + "secure-memory", + "seed", + "shared", + "siphash", + "siv", + "slh-dsa", + "sm2", + "sm2-precomp", + "sm3", + "sm4", + "sock", + "srp", + "srtp", + "sse2", + "ssl", + "ssl-trace", + "static-engine", + "stdio", + "sslkeylog", + "tests", + "tfo", + "thread-pool", + "threads", + "tls", + "tls-deprecated-ec", + "trace", + "ts", + "ubsan", + "ui-console", + "unit-test", + "uplink", + "weak-ssl-ciphers", + "whirlpool", + "zlib", + "zlib-dynamic", + "zstd", + "zstd-dynamic", + "ssl3", + "ssl3-method", + "tls1", + "tls1-method", + "tls1_1", + "tls1_1-method", + "tls1_2", + "tls1_2-method", + "tls1_3", + "dtls1", + "dtls1-method", + "dtls1_2", + "dtls1_2-method" +); +our @disablables_int = ( + "crmf" +); +our %disabled = ( + "afalgeng" => "option", + "asan" => "default", + "brotli-dynamic" => "default", + "buildtest-c++" => "default", + "crypto-mdebug" => "default", + "crypto-mdebug-backtrace" => "default", + "demos" => "default", + "devcryptoeng" => "default", + "dynamic-engine" => "cascade", + "ec_nistp_64_gcc_128" => "default", + "egd" => "default", + "external-tests" => "default", + "fips-jitter" => "default", + "fuzz-afl" => "default", + "fuzz-libfuzzer" => "default", + "h3demo" => "default", + "hqinterop" => "default", + "jitter" => "default", + "ktls" => "default", + "loadereng" => "cascade", + "md2" => "default", + "msan" => "default", + "pie" => "default", + "rc5" => "default", + "sctp" => "default", + "shared" => "option", + "ssl3" => "default", + "ssl3-method" => "default", + "sslkeylog" => "default", + "tests" => "option", + "tfo" => "default", + "trace" => "default", + "ubsan" => "default", + "unit-test" => "default", + "uplink" => "no uplink_arch", + "weak-ssl-ciphers" => "default", + "winstore" => "not-windows", + "zlib-dynamic" => "default", + "zstd-dynamic" => "default" +); +our %withargs = ( + "brotli_include" => "../../brotli/c/include", + "zlib_include" => "../../zlib", + "zstd_include" => "../../zstd/lib" +); +our %unified_info = ( + "attributes" => { + "depends" => { + "doc/man1/openssl-asn1parse.pod" => { + "doc/man1/openssl-asn1parse.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-ca.pod" => { + "doc/man1/openssl-ca.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-ciphers.pod" => { + "doc/man1/openssl-ciphers.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-cmds.pod" => { + "doc/man1/openssl-cmds.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-cmp.pod" => { + "doc/man1/openssl-cmp.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-cms.pod" => { + "doc/man1/openssl-cms.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-crl.pod" => { + "doc/man1/openssl-crl.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-crl2pkcs7.pod" => { + "doc/man1/openssl-crl2pkcs7.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-dgst.pod" => { + "doc/man1/openssl-dgst.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-dhparam.pod" => { + "doc/man1/openssl-dhparam.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-dsa.pod" => { + "doc/man1/openssl-dsa.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-dsaparam.pod" => { + "doc/man1/openssl-dsaparam.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-ec.pod" => { + "doc/man1/openssl-ec.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-ecparam.pod" => { + "doc/man1/openssl-ecparam.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-enc.pod" => { + "doc/man1/openssl-enc.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-engine.pod" => { + "doc/man1/openssl-engine.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-errstr.pod" => { + "doc/man1/openssl-errstr.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-fipsinstall.pod" => { + "doc/man1/openssl-fipsinstall.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-gendsa.pod" => { + "doc/man1/openssl-gendsa.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-genpkey.pod" => { + "doc/man1/openssl-genpkey.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-genrsa.pod" => { + "doc/man1/openssl-genrsa.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-info.pod" => { + "doc/man1/openssl-info.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-kdf.pod" => { + "doc/man1/openssl-kdf.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-list.pod" => { + "doc/man1/openssl-list.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-mac.pod" => { + "doc/man1/openssl-mac.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-nseq.pod" => { + "doc/man1/openssl-nseq.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-ocsp.pod" => { + "doc/man1/openssl-ocsp.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-passwd.pod" => { + "doc/man1/openssl-passwd.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-pkcs12.pod" => { + "doc/man1/openssl-pkcs12.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-pkcs7.pod" => { + "doc/man1/openssl-pkcs7.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-pkcs8.pod" => { + "doc/man1/openssl-pkcs8.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-pkey.pod" => { + "doc/man1/openssl-pkey.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-pkeyparam.pod" => { + "doc/man1/openssl-pkeyparam.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-pkeyutl.pod" => { + "doc/man1/openssl-pkeyutl.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-prime.pod" => { + "doc/man1/openssl-prime.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-rand.pod" => { + "doc/man1/openssl-rand.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-rehash.pod" => { + "doc/man1/openssl-rehash.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-req.pod" => { + "doc/man1/openssl-req.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-rsa.pod" => { + "doc/man1/openssl-rsa.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-rsautl.pod" => { + "doc/man1/openssl-rsautl.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-s_client.pod" => { + "doc/man1/openssl-s_client.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-s_server.pod" => { + "doc/man1/openssl-s_server.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-s_time.pod" => { + "doc/man1/openssl-s_time.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-sess_id.pod" => { + "doc/man1/openssl-sess_id.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-skeyutl.pod" => { + "doc/man1/openssl-skeyutl.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-smime.pod" => { + "doc/man1/openssl-smime.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-speed.pod" => { + "doc/man1/openssl-speed.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-spkac.pod" => { + "doc/man1/openssl-spkac.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-srp.pod" => { + "doc/man1/openssl-srp.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-storeutl.pod" => { + "doc/man1/openssl-storeutl.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-ts.pod" => { + "doc/man1/openssl-ts.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-verify.pod" => { + "doc/man1/openssl-verify.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-version.pod" => { + "doc/man1/openssl-version.pod.in" => { + "pod" => "1" + } + }, + "doc/man1/openssl-x509.pod" => { + "doc/man1/openssl-x509.pod.in" => { + "pod" => "1" + } + }, + "doc/man7/openssl_user_macros.pod" => { + "doc/man7/openssl_user_macros.pod.in" => { + "pod" => "1" + } + }, + "providers/libcommon.a" => { + "libcrypto" => { + "weak" => "1" + } + } + }, + "generate" => { + "exporters/OpenSSLConfig.cmake" => { + "exporter" => "cmake" + }, + "exporters/OpenSSLConfigVersion.cmake" => { + "exporter" => "cmake" + }, + "exporters/libcrypto.pc" => { + "exporter" => "pkg-config" + }, + "exporters/libssl.pc" => { + "exporter" => "pkg-config" + }, + "exporters/openssl.pc" => { + "exporter" => "pkg-config" + }, + "include/openssl/configuration.h" => { + "skip" => "1" + } + }, + "libraries" => { + "apps/libapps.a" => { + "noinst" => "1" + }, + "providers/libcommon.a" => { + "noinst" => "1" + }, + "providers/libdefault.a" => { + "noinst" => "1" + }, + "providers/libfips.a" => { + "noinst" => "1" + }, + "providers/liblegacy.a" => { + "noinst" => "1" + }, + "providers/libtemplate.a" => { + "noinst" => "1" + } + }, + "modules" => { + "providers/fips" => { + "fips" => "1" + } + }, + "scripts" => { + "apps/CA.pl" => { + "misc" => "1" + }, + "apps/tsget.pl" => { + "linkname" => "tsget", + "misc" => "1" + }, + "util/shlib_wrap.sh" => { + "noinst" => "1" + }, + "util/wrap.pl" => { + "noinst" => "1" + } + }, + "sources" => { + "apps/openssl" => { + "apps/openssl-bin-progs.o" => { + "nocheck" => "1" + } + }, + "apps/openssl-bin-progs.o" => { + "apps/progs.c" => { + "nocheck" => "1" + } + }, + "apps/progs.o" => {} + } + }, + "defines" => { + "libcrypto" => [ + "AES_ASM", + "GHASH_ASM", + "INCLUDE_C_CHACHA20", + "INCLUDE_C_SHA256", + "INCLUDE_C_SHA512", + "OPENSSL_CPUID_OBJ", + "OPENSSL_SM3_ASM", + "SHA256_ASM", + "SHA512_ASM", + "SM4_ASM" + ], + "providers/fips" => [ + "FIPS_MODULE" + ], + "providers/libcommon.a" => [ + "OPENSSL_CPUID_OBJ" + ], + "providers/libdefault.a" => [ + "AES_ASM", + "GHASH_ASM", + "INCLUDE_C_SHA256", + "INCLUDE_C_SHA512", + "OPENSSL_CPUID_OBJ", + "SHA256_ASM", + "SHA512_ASM", + "SM4_ASM" + ], + "providers/libfips.a" => [ + "AES_ASM", + "FIPS_MODULE", + "GHASH_ASM", + "INCLUDE_C_SHA256", + "INCLUDE_C_SHA512", + "OPENSSL_CPUID_OBJ", + "SHA256_ASM", + "SHA512_ASM", + "SM4_ASM" + ] + }, + "depends" => { + "" => [ + "OpenSSLConfigVersion.cmake", + "crypto/params_idx.c", + "exporters/OpenSSLConfigVersion.cmake", + "exporters/openssl.pc", + "include/crypto/bn_conf.h", + "include/crypto/dso_conf.h", + "include/internal/param_names.h", + "include/openssl/asn1.h", + "include/openssl/asn1t.h", + "include/openssl/bio.h", + "include/openssl/cmp.h", + "include/openssl/cms.h", + "include/openssl/comp.h", + "include/openssl/conf.h", + "include/openssl/core_names.h", + "include/openssl/crmf.h", + "include/openssl/crypto.h", + "include/openssl/ct.h", + "include/openssl/err.h", + "include/openssl/ess.h", + "include/openssl/fipskey.h", + "include/openssl/lhash.h", + "include/openssl/ocsp.h", + "include/openssl/opensslv.h", + "include/openssl/pkcs12.h", + "include/openssl/pkcs7.h", + "include/openssl/safestack.h", + "include/openssl/srp.h", + "include/openssl/ssl.h", + "include/openssl/ui.h", + "include/openssl/x509.h", + "include/openssl/x509_acert.h", + "include/openssl/x509_vfy.h", + "include/openssl/x509v3.h", + "openssl.pc" + ], + "OpenSSLConfig.cmake" => [ + "builddata.pm" + ], + "OpenSSLConfigVersion.cmake" => [ + "OpenSSLConfig.cmake", + "builddata.pm" + ], + "apps/lib/openssl-bin-cmp_mock_srv.o" => [ + "apps/progs.h" + ], + "apps/openssl" => [ + "apps/libapps.a", + "libssl" + ], + "apps/openssl-bin-asn1parse.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-ca.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-ciphers.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-cmp.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-cms.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-crl.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-crl2pkcs7.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-dgst.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-dhparam.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-dsa.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-dsaparam.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-ec.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-ecparam.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-enc.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-engine.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-errstr.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-fipsinstall.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-gendsa.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-genpkey.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-genrsa.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-info.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-kdf.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-list.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-mac.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-nseq.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-ocsp.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-openssl.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-passwd.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-pkcs12.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-pkcs7.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-pkcs8.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-pkey.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-pkeyparam.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-pkeyutl.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-prime.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-progs.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-rand.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-rehash.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-req.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-rsa.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-rsautl.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-s_client.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-s_server.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-s_time.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-sess_id.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-smime.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-speed.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-spkac.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-srp.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-storeutl.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-ts.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-verify.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-version.o" => [ + "apps/progs.h" + ], + "apps/openssl-bin-x509.o" => [ + "apps/progs.h" + ], + "apps/progs.c" => [ + "configdata.pm" + ], + "apps/progs.h" => [ + "apps/progs.c" + ], + "build_modules_nodep" => [ + "providers/fipsmodule.cnf" + ], + "crypto/aes/aes-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/aes/aesni-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/aes/aest4-sparcv9.S" => [ + "crypto/perlasm/sparcv9_modes.pl" + ], + "crypto/aes/vpaes-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/bf/bf-586.S" => [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl" + ], + "crypto/bn/bn-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/bn/co-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/bn/x86-gf2m.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/bn/x86-mont.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/camellia/cmll-x86.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/camellia/cmllt4-sparcv9.S" => [ + "crypto/perlasm/sparcv9_modes.pl" + ], + "crypto/cast/cast-586.S" => [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl" + ], + "crypto/des/crypt586.S" => [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl" + ], + "crypto/des/des-586.S" => [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl" + ], + "crypto/libcrypto-lib-cversion.o" => [ + "crypto/buildinf.h" + ], + "crypto/libcrypto-lib-info.o" => [ + "crypto/buildinf.h" + ], + "crypto/params_idx.c" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "crypto/rc4/rc4-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/ripemd/rmd-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/sha/sha1-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/sha/sha256-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/sha/sha512-586.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/whrlpool/wp-mmx.S" => [ + "crypto/perlasm/x86asm.pl" + ], + "crypto/x86cpuid.s" => [ + "crypto/perlasm/x86asm.pl" + ], + "doc/html/man1/CA.pl.html" => [ + "doc/man1/CA.pl.pod" + ], + "doc/html/man1/openssl-asn1parse.html" => [ + "doc/man1/openssl-asn1parse.pod" + ], + "doc/html/man1/openssl-ca.html" => [ + "doc/man1/openssl-ca.pod" + ], + "doc/html/man1/openssl-ciphers.html" => [ + "doc/man1/openssl-ciphers.pod" + ], + "doc/html/man1/openssl-cmds.html" => [ + "doc/man1/openssl-cmds.pod" + ], + "doc/html/man1/openssl-cmp.html" => [ + "doc/man1/openssl-cmp.pod" + ], + "doc/html/man1/openssl-cms.html" => [ + "doc/man1/openssl-cms.pod" + ], + "doc/html/man1/openssl-crl.html" => [ + "doc/man1/openssl-crl.pod" + ], + "doc/html/man1/openssl-crl2pkcs7.html" => [ + "doc/man1/openssl-crl2pkcs7.pod" + ], + "doc/html/man1/openssl-dgst.html" => [ + "doc/man1/openssl-dgst.pod" + ], + "doc/html/man1/openssl-dhparam.html" => [ + "doc/man1/openssl-dhparam.pod" + ], + "doc/html/man1/openssl-dsa.html" => [ + "doc/man1/openssl-dsa.pod" + ], + "doc/html/man1/openssl-dsaparam.html" => [ + "doc/man1/openssl-dsaparam.pod" + ], + "doc/html/man1/openssl-ec.html" => [ + "doc/man1/openssl-ec.pod" + ], + "doc/html/man1/openssl-ecparam.html" => [ + "doc/man1/openssl-ecparam.pod" + ], + "doc/html/man1/openssl-enc.html" => [ + "doc/man1/openssl-enc.pod" + ], + "doc/html/man1/openssl-engine.html" => [ + "doc/man1/openssl-engine.pod" + ], + "doc/html/man1/openssl-errstr.html" => [ + "doc/man1/openssl-errstr.pod" + ], + "doc/html/man1/openssl-fipsinstall.html" => [ + "doc/man1/openssl-fipsinstall.pod" + ], + "doc/html/man1/openssl-format-options.html" => [ + "doc/man1/openssl-format-options.pod" + ], + "doc/html/man1/openssl-gendsa.html" => [ + "doc/man1/openssl-gendsa.pod" + ], + "doc/html/man1/openssl-genpkey.html" => [ + "doc/man1/openssl-genpkey.pod" + ], + "doc/html/man1/openssl-genrsa.html" => [ + "doc/man1/openssl-genrsa.pod" + ], + "doc/html/man1/openssl-info.html" => [ + "doc/man1/openssl-info.pod" + ], + "doc/html/man1/openssl-kdf.html" => [ + "doc/man1/openssl-kdf.pod" + ], + "doc/html/man1/openssl-list.html" => [ + "doc/man1/openssl-list.pod" + ], + "doc/html/man1/openssl-mac.html" => [ + "doc/man1/openssl-mac.pod" + ], + "doc/html/man1/openssl-namedisplay-options.html" => [ + "doc/man1/openssl-namedisplay-options.pod" + ], + "doc/html/man1/openssl-nseq.html" => [ + "doc/man1/openssl-nseq.pod" + ], + "doc/html/man1/openssl-ocsp.html" => [ + "doc/man1/openssl-ocsp.pod" + ], + "doc/html/man1/openssl-passphrase-options.html" => [ + "doc/man1/openssl-passphrase-options.pod" + ], + "doc/html/man1/openssl-passwd.html" => [ + "doc/man1/openssl-passwd.pod" + ], + "doc/html/man1/openssl-pkcs12.html" => [ + "doc/man1/openssl-pkcs12.pod" + ], + "doc/html/man1/openssl-pkcs7.html" => [ + "doc/man1/openssl-pkcs7.pod" + ], + "doc/html/man1/openssl-pkcs8.html" => [ + "doc/man1/openssl-pkcs8.pod" + ], + "doc/html/man1/openssl-pkey.html" => [ + "doc/man1/openssl-pkey.pod" + ], + "doc/html/man1/openssl-pkeyparam.html" => [ + "doc/man1/openssl-pkeyparam.pod" + ], + "doc/html/man1/openssl-pkeyutl.html" => [ + "doc/man1/openssl-pkeyutl.pod" + ], + "doc/html/man1/openssl-prime.html" => [ + "doc/man1/openssl-prime.pod" + ], + "doc/html/man1/openssl-rand.html" => [ + "doc/man1/openssl-rand.pod" + ], + "doc/html/man1/openssl-rehash.html" => [ + "doc/man1/openssl-rehash.pod" + ], + "doc/html/man1/openssl-req.html" => [ + "doc/man1/openssl-req.pod" + ], + "doc/html/man1/openssl-rsa.html" => [ + "doc/man1/openssl-rsa.pod" + ], + "doc/html/man1/openssl-rsautl.html" => [ + "doc/man1/openssl-rsautl.pod" + ], + "doc/html/man1/openssl-s_client.html" => [ + "doc/man1/openssl-s_client.pod" + ], + "doc/html/man1/openssl-s_server.html" => [ + "doc/man1/openssl-s_server.pod" + ], + "doc/html/man1/openssl-s_time.html" => [ + "doc/man1/openssl-s_time.pod" + ], + "doc/html/man1/openssl-sess_id.html" => [ + "doc/man1/openssl-sess_id.pod" + ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], + "doc/html/man1/openssl-smime.html" => [ + "doc/man1/openssl-smime.pod" + ], + "doc/html/man1/openssl-speed.html" => [ + "doc/man1/openssl-speed.pod" + ], + "doc/html/man1/openssl-spkac.html" => [ + "doc/man1/openssl-spkac.pod" + ], + "doc/html/man1/openssl-srp.html" => [ + "doc/man1/openssl-srp.pod" + ], + "doc/html/man1/openssl-storeutl.html" => [ + "doc/man1/openssl-storeutl.pod" + ], + "doc/html/man1/openssl-ts.html" => [ + "doc/man1/openssl-ts.pod" + ], + "doc/html/man1/openssl-verification-options.html" => [ + "doc/man1/openssl-verification-options.pod" + ], + "doc/html/man1/openssl-verify.html" => [ + "doc/man1/openssl-verify.pod" + ], + "doc/html/man1/openssl-version.html" => [ + "doc/man1/openssl-version.pod" + ], + "doc/html/man1/openssl-x509.html" => [ + "doc/man1/openssl-x509.pod" + ], + "doc/html/man1/openssl.html" => [ + "doc/man1/openssl.pod" + ], + "doc/html/man1/tsget.html" => [ + "doc/man1/tsget.pod" + ], + "doc/html/man3/ADMISSIONS.html" => [ + "doc/man3/ADMISSIONS.pod" + ], + "doc/html/man3/ASN1_EXTERN_FUNCS.html" => [ + "doc/man3/ASN1_EXTERN_FUNCS.pod" + ], + "doc/html/man3/ASN1_INTEGER_get_int64.html" => [ + "doc/man3/ASN1_INTEGER_get_int64.pod" + ], + "doc/html/man3/ASN1_INTEGER_new.html" => [ + "doc/man3/ASN1_INTEGER_new.pod" + ], + "doc/html/man3/ASN1_ITEM_lookup.html" => [ + "doc/man3/ASN1_ITEM_lookup.pod" + ], + "doc/html/man3/ASN1_OBJECT_new.html" => [ + "doc/man3/ASN1_OBJECT_new.pod" + ], + "doc/html/man3/ASN1_STRING_TABLE_add.html" => [ + "doc/man3/ASN1_STRING_TABLE_add.pod" + ], + "doc/html/man3/ASN1_STRING_length.html" => [ + "doc/man3/ASN1_STRING_length.pod" + ], + "doc/html/man3/ASN1_STRING_new.html" => [ + "doc/man3/ASN1_STRING_new.pod" + ], + "doc/html/man3/ASN1_STRING_print_ex.html" => [ + "doc/man3/ASN1_STRING_print_ex.pod" + ], + "doc/html/man3/ASN1_TIME_set.html" => [ + "doc/man3/ASN1_TIME_set.pod" + ], + "doc/html/man3/ASN1_TYPE_get.html" => [ + "doc/man3/ASN1_TYPE_get.pod" + ], + "doc/html/man3/ASN1_aux_cb.html" => [ + "doc/man3/ASN1_aux_cb.pod" + ], + "doc/html/man3/ASN1_generate_nconf.html" => [ + "doc/man3/ASN1_generate_nconf.pod" + ], + "doc/html/man3/ASN1_item_d2i_bio.html" => [ + "doc/man3/ASN1_item_d2i_bio.pod" + ], + "doc/html/man3/ASN1_item_new.html" => [ + "doc/man3/ASN1_item_new.pod" + ], + "doc/html/man3/ASN1_item_sign.html" => [ + "doc/man3/ASN1_item_sign.pod" + ], + "doc/html/man3/ASYNC_WAIT_CTX_new.html" => [ + "doc/man3/ASYNC_WAIT_CTX_new.pod" + ], + "doc/html/man3/ASYNC_start_job.html" => [ + "doc/man3/ASYNC_start_job.pod" + ], + "doc/html/man3/BF_encrypt.html" => [ + "doc/man3/BF_encrypt.pod" + ], + "doc/html/man3/BIO_ADDR.html" => [ + "doc/man3/BIO_ADDR.pod" + ], + "doc/html/man3/BIO_ADDRINFO.html" => [ + "doc/man3/BIO_ADDRINFO.pod" + ], + "doc/html/man3/BIO_connect.html" => [ + "doc/man3/BIO_connect.pod" + ], + "doc/html/man3/BIO_ctrl.html" => [ + "doc/man3/BIO_ctrl.pod" + ], + "doc/html/man3/BIO_f_base64.html" => [ + "doc/man3/BIO_f_base64.pod" + ], + "doc/html/man3/BIO_f_buffer.html" => [ + "doc/man3/BIO_f_buffer.pod" + ], + "doc/html/man3/BIO_f_cipher.html" => [ + "doc/man3/BIO_f_cipher.pod" + ], + "doc/html/man3/BIO_f_md.html" => [ + "doc/man3/BIO_f_md.pod" + ], + "doc/html/man3/BIO_f_null.html" => [ + "doc/man3/BIO_f_null.pod" + ], + "doc/html/man3/BIO_f_prefix.html" => [ + "doc/man3/BIO_f_prefix.pod" + ], + "doc/html/man3/BIO_f_readbuffer.html" => [ + "doc/man3/BIO_f_readbuffer.pod" + ], + "doc/html/man3/BIO_f_ssl.html" => [ + "doc/man3/BIO_f_ssl.pod" + ], + "doc/html/man3/BIO_find_type.html" => [ + "doc/man3/BIO_find_type.pod" + ], + "doc/html/man3/BIO_get_data.html" => [ + "doc/man3/BIO_get_data.pod" + ], + "doc/html/man3/BIO_get_ex_new_index.html" => [ + "doc/man3/BIO_get_ex_new_index.pod" + ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], + "doc/html/man3/BIO_meth_new.html" => [ + "doc/man3/BIO_meth_new.pod" + ], + "doc/html/man3/BIO_new.html" => [ + "doc/man3/BIO_new.pod" + ], + "doc/html/man3/BIO_new_CMS.html" => [ + "doc/man3/BIO_new_CMS.pod" + ], + "doc/html/man3/BIO_parse_hostserv.html" => [ + "doc/man3/BIO_parse_hostserv.pod" + ], + "doc/html/man3/BIO_printf.html" => [ + "doc/man3/BIO_printf.pod" + ], + "doc/html/man3/BIO_push.html" => [ + "doc/man3/BIO_push.pod" + ], + "doc/html/man3/BIO_read.html" => [ + "doc/man3/BIO_read.pod" + ], + "doc/html/man3/BIO_s_accept.html" => [ + "doc/man3/BIO_s_accept.pod" + ], + "doc/html/man3/BIO_s_bio.html" => [ + "doc/man3/BIO_s_bio.pod" + ], + "doc/html/man3/BIO_s_connect.html" => [ + "doc/man3/BIO_s_connect.pod" + ], + "doc/html/man3/BIO_s_core.html" => [ + "doc/man3/BIO_s_core.pod" + ], + "doc/html/man3/BIO_s_datagram.html" => [ + "doc/man3/BIO_s_datagram.pod" + ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], + "doc/html/man3/BIO_s_fd.html" => [ + "doc/man3/BIO_s_fd.pod" + ], + "doc/html/man3/BIO_s_file.html" => [ + "doc/man3/BIO_s_file.pod" + ], + "doc/html/man3/BIO_s_mem.html" => [ + "doc/man3/BIO_s_mem.pod" + ], + "doc/html/man3/BIO_s_null.html" => [ + "doc/man3/BIO_s_null.pod" + ], + "doc/html/man3/BIO_s_socket.html" => [ + "doc/man3/BIO_s_socket.pod" + ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], + "doc/html/man3/BIO_set_callback.html" => [ + "doc/man3/BIO_set_callback.pod" + ], + "doc/html/man3/BIO_set_flags.html" => [ + "doc/man3/BIO_set_flags.pod" + ], + "doc/html/man3/BIO_should_retry.html" => [ + "doc/man3/BIO_should_retry.pod" + ], + "doc/html/man3/BIO_socket_wait.html" => [ + "doc/man3/BIO_socket_wait.pod" + ], + "doc/html/man3/BN_BLINDING_new.html" => [ + "doc/man3/BN_BLINDING_new.pod" + ], + "doc/html/man3/BN_CTX_new.html" => [ + "doc/man3/BN_CTX_new.pod" + ], + "doc/html/man3/BN_CTX_start.html" => [ + "doc/man3/BN_CTX_start.pod" + ], + "doc/html/man3/BN_add.html" => [ + "doc/man3/BN_add.pod" + ], + "doc/html/man3/BN_add_word.html" => [ + "doc/man3/BN_add_word.pod" + ], + "doc/html/man3/BN_bn2bin.html" => [ + "doc/man3/BN_bn2bin.pod" + ], + "doc/html/man3/BN_cmp.html" => [ + "doc/man3/BN_cmp.pod" + ], + "doc/html/man3/BN_copy.html" => [ + "doc/man3/BN_copy.pod" + ], + "doc/html/man3/BN_generate_prime.html" => [ + "doc/man3/BN_generate_prime.pod" + ], + "doc/html/man3/BN_mod_exp_mont.html" => [ + "doc/man3/BN_mod_exp_mont.pod" + ], + "doc/html/man3/BN_mod_inverse.html" => [ + "doc/man3/BN_mod_inverse.pod" + ], + "doc/html/man3/BN_mod_mul_montgomery.html" => [ + "doc/man3/BN_mod_mul_montgomery.pod" + ], + "doc/html/man3/BN_mod_mul_reciprocal.html" => [ + "doc/man3/BN_mod_mul_reciprocal.pod" + ], + "doc/html/man3/BN_new.html" => [ + "doc/man3/BN_new.pod" + ], + "doc/html/man3/BN_num_bytes.html" => [ + "doc/man3/BN_num_bytes.pod" + ], + "doc/html/man3/BN_rand.html" => [ + "doc/man3/BN_rand.pod" + ], + "doc/html/man3/BN_security_bits.html" => [ + "doc/man3/BN_security_bits.pod" + ], + "doc/html/man3/BN_set_bit.html" => [ + "doc/man3/BN_set_bit.pod" + ], + "doc/html/man3/BN_swap.html" => [ + "doc/man3/BN_swap.pod" + ], + "doc/html/man3/BN_zero.html" => [ + "doc/man3/BN_zero.pod" + ], + "doc/html/man3/BUF_MEM_new.html" => [ + "doc/man3/BUF_MEM_new.pod" + ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], + "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ + "doc/man3/CMS_EncryptedData_decrypt.pod" + ], + "doc/html/man3/CMS_EncryptedData_encrypt.html" => [ + "doc/man3/CMS_EncryptedData_encrypt.pod" + ], + "doc/html/man3/CMS_EncryptedData_set1_key.html" => [ + "doc/man3/CMS_EncryptedData_set1_key.pod" + ], + "doc/html/man3/CMS_EnvelopedData_create.html" => [ + "doc/man3/CMS_EnvelopedData_create.pod" + ], + "doc/html/man3/CMS_add0_cert.html" => [ + "doc/man3/CMS_add0_cert.pod" + ], + "doc/html/man3/CMS_add1_recipient_cert.html" => [ + "doc/man3/CMS_add1_recipient_cert.pod" + ], + "doc/html/man3/CMS_add1_signer.html" => [ + "doc/man3/CMS_add1_signer.pod" + ], + "doc/html/man3/CMS_compress.html" => [ + "doc/man3/CMS_compress.pod" + ], + "doc/html/man3/CMS_data_create.html" => [ + "doc/man3/CMS_data_create.pod" + ], + "doc/html/man3/CMS_decrypt.html" => [ + "doc/man3/CMS_decrypt.pod" + ], + "doc/html/man3/CMS_digest_create.html" => [ + "doc/man3/CMS_digest_create.pod" + ], + "doc/html/man3/CMS_encrypt.html" => [ + "doc/man3/CMS_encrypt.pod" + ], + "doc/html/man3/CMS_final.html" => [ + "doc/man3/CMS_final.pod" + ], + "doc/html/man3/CMS_get0_RecipientInfos.html" => [ + "doc/man3/CMS_get0_RecipientInfos.pod" + ], + "doc/html/man3/CMS_get0_SignerInfos.html" => [ + "doc/man3/CMS_get0_SignerInfos.pod" + ], + "doc/html/man3/CMS_get0_type.html" => [ + "doc/man3/CMS_get0_type.pod" + ], + "doc/html/man3/CMS_get1_ReceiptRequest.html" => [ + "doc/man3/CMS_get1_ReceiptRequest.pod" + ], + "doc/html/man3/CMS_sign.html" => [ + "doc/man3/CMS_sign.pod" + ], + "doc/html/man3/CMS_sign_receipt.html" => [ + "doc/man3/CMS_sign_receipt.pod" + ], + "doc/html/man3/CMS_signed_get_attr.html" => [ + "doc/man3/CMS_signed_get_attr.pod" + ], + "doc/html/man3/CMS_uncompress.html" => [ + "doc/man3/CMS_uncompress.pod" + ], + "doc/html/man3/CMS_verify.html" => [ + "doc/man3/CMS_verify.pod" + ], + "doc/html/man3/CMS_verify_receipt.html" => [ + "doc/man3/CMS_verify_receipt.pod" + ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], + "doc/html/man3/CONF_modules_free.html" => [ + "doc/man3/CONF_modules_free.pod" + ], + "doc/html/man3/CONF_modules_load_file.html" => [ + "doc/man3/CONF_modules_load_file.pod" + ], + "doc/html/man3/CRYPTO_THREAD_run_once.html" => [ + "doc/man3/CRYPTO_THREAD_run_once.pod" + ], + "doc/html/man3/CRYPTO_get_ex_new_index.html" => [ + "doc/man3/CRYPTO_get_ex_new_index.pod" + ], + "doc/html/man3/CRYPTO_memcmp.html" => [ + "doc/man3/CRYPTO_memcmp.pod" + ], + "doc/html/man3/CTLOG_STORE_get0_log_by_id.html" => [ + "doc/man3/CTLOG_STORE_get0_log_by_id.pod" + ], + "doc/html/man3/CTLOG_STORE_new.html" => [ + "doc/man3/CTLOG_STORE_new.pod" + ], + "doc/html/man3/CTLOG_new.html" => [ + "doc/man3/CTLOG_new.pod" + ], + "doc/html/man3/CT_POLICY_EVAL_CTX_new.html" => [ + "doc/man3/CT_POLICY_EVAL_CTX_new.pod" + ], + "doc/html/man3/DEFINE_STACK_OF.html" => [ + "doc/man3/DEFINE_STACK_OF.pod" + ], + "doc/html/man3/DES_random_key.html" => [ + "doc/man3/DES_random_key.pod" + ], + "doc/html/man3/DH_generate_key.html" => [ + "doc/man3/DH_generate_key.pod" + ], + "doc/html/man3/DH_generate_parameters.html" => [ + "doc/man3/DH_generate_parameters.pod" + ], + "doc/html/man3/DH_get0_pqg.html" => [ + "doc/man3/DH_get0_pqg.pod" + ], + "doc/html/man3/DH_get_1024_160.html" => [ + "doc/man3/DH_get_1024_160.pod" + ], + "doc/html/man3/DH_meth_new.html" => [ + "doc/man3/DH_meth_new.pod" + ], + "doc/html/man3/DH_new.html" => [ + "doc/man3/DH_new.pod" + ], + "doc/html/man3/DH_new_by_nid.html" => [ + "doc/man3/DH_new_by_nid.pod" + ], + "doc/html/man3/DH_set_method.html" => [ + "doc/man3/DH_set_method.pod" + ], + "doc/html/man3/DH_size.html" => [ + "doc/man3/DH_size.pod" + ], + "doc/html/man3/DSA_SIG_new.html" => [ + "doc/man3/DSA_SIG_new.pod" + ], + "doc/html/man3/DSA_do_sign.html" => [ + "doc/man3/DSA_do_sign.pod" + ], + "doc/html/man3/DSA_dup_DH.html" => [ + "doc/man3/DSA_dup_DH.pod" + ], + "doc/html/man3/DSA_generate_key.html" => [ + "doc/man3/DSA_generate_key.pod" + ], + "doc/html/man3/DSA_generate_parameters.html" => [ + "doc/man3/DSA_generate_parameters.pod" + ], + "doc/html/man3/DSA_get0_pqg.html" => [ + "doc/man3/DSA_get0_pqg.pod" + ], + "doc/html/man3/DSA_meth_new.html" => [ + "doc/man3/DSA_meth_new.pod" + ], + "doc/html/man3/DSA_new.html" => [ + "doc/man3/DSA_new.pod" + ], + "doc/html/man3/DSA_set_method.html" => [ + "doc/man3/DSA_set_method.pod" + ], + "doc/html/man3/DSA_sign.html" => [ + "doc/man3/DSA_sign.pod" + ], + "doc/html/man3/DSA_size.html" => [ + "doc/man3/DSA_size.pod" + ], + "doc/html/man3/DTLS_get_data_mtu.html" => [ + "doc/man3/DTLS_get_data_mtu.pod" + ], + "doc/html/man3/DTLS_set_timer_cb.html" => [ + "doc/man3/DTLS_set_timer_cb.pod" + ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], + "doc/html/man3/DTLSv1_listen.html" => [ + "doc/man3/DTLSv1_listen.pod" + ], + "doc/html/man3/ECDSA_SIG_new.html" => [ + "doc/man3/ECDSA_SIG_new.pod" + ], + "doc/html/man3/ECDSA_sign.html" => [ + "doc/man3/ECDSA_sign.pod" + ], + "doc/html/man3/ECPKParameters_print.html" => [ + "doc/man3/ECPKParameters_print.pod" + ], + "doc/html/man3/EC_GFp_simple_method.html" => [ + "doc/man3/EC_GFp_simple_method.pod" + ], + "doc/html/man3/EC_GROUP_copy.html" => [ + "doc/man3/EC_GROUP_copy.pod" + ], + "doc/html/man3/EC_GROUP_new.html" => [ + "doc/man3/EC_GROUP_new.pod" + ], + "doc/html/man3/EC_KEY_get_enc_flags.html" => [ + "doc/man3/EC_KEY_get_enc_flags.pod" + ], + "doc/html/man3/EC_KEY_new.html" => [ + "doc/man3/EC_KEY_new.pod" + ], + "doc/html/man3/EC_POINT_add.html" => [ + "doc/man3/EC_POINT_add.pod" + ], + "doc/html/man3/EC_POINT_new.html" => [ + "doc/man3/EC_POINT_new.pod" + ], + "doc/html/man3/ENGINE_add.html" => [ + "doc/man3/ENGINE_add.pod" + ], + "doc/html/man3/ERR_GET_LIB.html" => [ + "doc/man3/ERR_GET_LIB.pod" + ], + "doc/html/man3/ERR_clear_error.html" => [ + "doc/man3/ERR_clear_error.pod" + ], + "doc/html/man3/ERR_error_string.html" => [ + "doc/man3/ERR_error_string.pod" + ], + "doc/html/man3/ERR_get_error.html" => [ + "doc/man3/ERR_get_error.pod" + ], + "doc/html/man3/ERR_load_crypto_strings.html" => [ + "doc/man3/ERR_load_crypto_strings.pod" + ], + "doc/html/man3/ERR_load_strings.html" => [ + "doc/man3/ERR_load_strings.pod" + ], + "doc/html/man3/ERR_new.html" => [ + "doc/man3/ERR_new.pod" + ], + "doc/html/man3/ERR_print_errors.html" => [ + "doc/man3/ERR_print_errors.pod" + ], + "doc/html/man3/ERR_put_error.html" => [ + "doc/man3/ERR_put_error.pod" + ], + "doc/html/man3/ERR_remove_state.html" => [ + "doc/man3/ERR_remove_state.pod" + ], + "doc/html/man3/ERR_set_mark.html" => [ + "doc/man3/ERR_set_mark.pod" + ], + "doc/html/man3/EVP_ASYM_CIPHER_free.html" => [ + "doc/man3/EVP_ASYM_CIPHER_free.pod" + ], + "doc/html/man3/EVP_BytesToKey.html" => [ + "doc/man3/EVP_BytesToKey.pod" + ], + "doc/html/man3/EVP_CIPHER_CTX_get_app_data.html" => [ + "doc/man3/EVP_CIPHER_CTX_get_app_data.pod" + ], + "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html" => [ + "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" + ], + "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html" => [ + "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" + ], + "doc/html/man3/EVP_CIPHER_meth_new.html" => [ + "doc/man3/EVP_CIPHER_meth_new.pod" + ], + "doc/html/man3/EVP_DigestInit.html" => [ + "doc/man3/EVP_DigestInit.pod" + ], + "doc/html/man3/EVP_DigestSignInit.html" => [ + "doc/man3/EVP_DigestSignInit.pod" + ], + "doc/html/man3/EVP_DigestVerifyInit.html" => [ + "doc/man3/EVP_DigestVerifyInit.pod" + ], + "doc/html/man3/EVP_EncodeInit.html" => [ + "doc/man3/EVP_EncodeInit.pod" + ], + "doc/html/man3/EVP_EncryptInit.html" => [ + "doc/man3/EVP_EncryptInit.pod" + ], + "doc/html/man3/EVP_KDF.html" => [ + "doc/man3/EVP_KDF.pod" + ], + "doc/html/man3/EVP_KEM_free.html" => [ + "doc/man3/EVP_KEM_free.pod" + ], + "doc/html/man3/EVP_KEYEXCH_free.html" => [ + "doc/man3/EVP_KEYEXCH_free.pod" + ], + "doc/html/man3/EVP_KEYMGMT.html" => [ + "doc/man3/EVP_KEYMGMT.pod" + ], + "doc/html/man3/EVP_MAC.html" => [ + "doc/man3/EVP_MAC.pod" + ], + "doc/html/man3/EVP_MD_meth_new.html" => [ + "doc/man3/EVP_MD_meth_new.pod" + ], + "doc/html/man3/EVP_OpenInit.html" => [ + "doc/man3/EVP_OpenInit.pod" + ], + "doc/html/man3/EVP_PBE_CipherInit.html" => [ + "doc/man3/EVP_PBE_CipherInit.pod" + ], + "doc/html/man3/EVP_PKEY2PKCS8.html" => [ + "doc/man3/EVP_PKEY2PKCS8.pod" + ], + "doc/html/man3/EVP_PKEY_ASN1_METHOD.html" => [ + "doc/man3/EVP_PKEY_ASN1_METHOD.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_ctrl.html" => [ + "doc/man3/EVP_PKEY_CTX_ctrl.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html" => [ + "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ + "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_new.html" => [ + "doc/man3/EVP_PKEY_CTX_new.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html" => [ + "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html" => [ + "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_params.html" => [ + "doc/man3/EVP_PKEY_CTX_set_params.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html" => [ + "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html" => [ + "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html" => [ + "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" + ], + "doc/html/man3/EVP_PKEY_asn1_get_count.html" => [ + "doc/man3/EVP_PKEY_asn1_get_count.pod" + ], + "doc/html/man3/EVP_PKEY_check.html" => [ + "doc/man3/EVP_PKEY_check.pod" + ], + "doc/html/man3/EVP_PKEY_copy_parameters.html" => [ + "doc/man3/EVP_PKEY_copy_parameters.pod" + ], + "doc/html/man3/EVP_PKEY_decapsulate.html" => [ + "doc/man3/EVP_PKEY_decapsulate.pod" + ], + "doc/html/man3/EVP_PKEY_decrypt.html" => [ + "doc/man3/EVP_PKEY_decrypt.pod" + ], + "doc/html/man3/EVP_PKEY_derive.html" => [ + "doc/man3/EVP_PKEY_derive.pod" + ], + "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html" => [ + "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" + ], + "doc/html/man3/EVP_PKEY_encapsulate.html" => [ + "doc/man3/EVP_PKEY_encapsulate.pod" + ], + "doc/html/man3/EVP_PKEY_encrypt.html" => [ + "doc/man3/EVP_PKEY_encrypt.pod" + ], + "doc/html/man3/EVP_PKEY_fromdata.html" => [ + "doc/man3/EVP_PKEY_fromdata.pod" + ], + "doc/html/man3/EVP_PKEY_get_attr.html" => [ + "doc/man3/EVP_PKEY_get_attr.pod" + ], + "doc/html/man3/EVP_PKEY_get_default_digest_nid.html" => [ + "doc/man3/EVP_PKEY_get_default_digest_nid.pod" + ], + "doc/html/man3/EVP_PKEY_get_field_type.html" => [ + "doc/man3/EVP_PKEY_get_field_type.pod" + ], + "doc/html/man3/EVP_PKEY_get_group_name.html" => [ + "doc/man3/EVP_PKEY_get_group_name.pod" + ], + "doc/html/man3/EVP_PKEY_get_size.html" => [ + "doc/man3/EVP_PKEY_get_size.pod" + ], + "doc/html/man3/EVP_PKEY_gettable_params.html" => [ + "doc/man3/EVP_PKEY_gettable_params.pod" + ], + "doc/html/man3/EVP_PKEY_is_a.html" => [ + "doc/man3/EVP_PKEY_is_a.pod" + ], + "doc/html/man3/EVP_PKEY_keygen.html" => [ + "doc/man3/EVP_PKEY_keygen.pod" + ], + "doc/html/man3/EVP_PKEY_meth_get_count.html" => [ + "doc/man3/EVP_PKEY_meth_get_count.pod" + ], + "doc/html/man3/EVP_PKEY_meth_new.html" => [ + "doc/man3/EVP_PKEY_meth_new.pod" + ], + "doc/html/man3/EVP_PKEY_new.html" => [ + "doc/man3/EVP_PKEY_new.pod" + ], + "doc/html/man3/EVP_PKEY_print_private.html" => [ + "doc/man3/EVP_PKEY_print_private.pod" + ], + "doc/html/man3/EVP_PKEY_set1_RSA.html" => [ + "doc/man3/EVP_PKEY_set1_RSA.pod" + ], + "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html" => [ + "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" + ], + "doc/html/man3/EVP_PKEY_set_type.html" => [ + "doc/man3/EVP_PKEY_set_type.pod" + ], + "doc/html/man3/EVP_PKEY_settable_params.html" => [ + "doc/man3/EVP_PKEY_settable_params.pod" + ], + "doc/html/man3/EVP_PKEY_sign.html" => [ + "doc/man3/EVP_PKEY_sign.pod" + ], + "doc/html/man3/EVP_PKEY_todata.html" => [ + "doc/man3/EVP_PKEY_todata.pod" + ], + "doc/html/man3/EVP_PKEY_verify.html" => [ + "doc/man3/EVP_PKEY_verify.pod" + ], + "doc/html/man3/EVP_PKEY_verify_recover.html" => [ + "doc/man3/EVP_PKEY_verify_recover.pod" + ], + "doc/html/man3/EVP_RAND.html" => [ + "doc/man3/EVP_RAND.pod" + ], + "doc/html/man3/EVP_SIGNATURE.html" => [ + "doc/man3/EVP_SIGNATURE.pod" + ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], + "doc/html/man3/EVP_SealInit.html" => [ + "doc/man3/EVP_SealInit.pod" + ], + "doc/html/man3/EVP_SignInit.html" => [ + "doc/man3/EVP_SignInit.pod" + ], + "doc/html/man3/EVP_VerifyInit.html" => [ + "doc/man3/EVP_VerifyInit.pod" + ], + "doc/html/man3/EVP_aes_128_gcm.html" => [ + "doc/man3/EVP_aes_128_gcm.pod" + ], + "doc/html/man3/EVP_aria_128_gcm.html" => [ + "doc/man3/EVP_aria_128_gcm.pod" + ], + "doc/html/man3/EVP_bf_cbc.html" => [ + "doc/man3/EVP_bf_cbc.pod" + ], + "doc/html/man3/EVP_blake2b512.html" => [ + "doc/man3/EVP_blake2b512.pod" + ], + "doc/html/man3/EVP_camellia_128_ecb.html" => [ + "doc/man3/EVP_camellia_128_ecb.pod" + ], + "doc/html/man3/EVP_cast5_cbc.html" => [ + "doc/man3/EVP_cast5_cbc.pod" + ], + "doc/html/man3/EVP_chacha20.html" => [ + "doc/man3/EVP_chacha20.pod" + ], + "doc/html/man3/EVP_des_cbc.html" => [ + "doc/man3/EVP_des_cbc.pod" + ], + "doc/html/man3/EVP_desx_cbc.html" => [ + "doc/man3/EVP_desx_cbc.pod" + ], + "doc/html/man3/EVP_idea_cbc.html" => [ + "doc/man3/EVP_idea_cbc.pod" + ], + "doc/html/man3/EVP_md2.html" => [ + "doc/man3/EVP_md2.pod" + ], + "doc/html/man3/EVP_md4.html" => [ + "doc/man3/EVP_md4.pod" + ], + "doc/html/man3/EVP_md5.html" => [ + "doc/man3/EVP_md5.pod" + ], + "doc/html/man3/EVP_mdc2.html" => [ + "doc/man3/EVP_mdc2.pod" + ], + "doc/html/man3/EVP_rc2_cbc.html" => [ + "doc/man3/EVP_rc2_cbc.pod" + ], + "doc/html/man3/EVP_rc4.html" => [ + "doc/man3/EVP_rc4.pod" + ], + "doc/html/man3/EVP_rc5_32_12_16_cbc.html" => [ + "doc/man3/EVP_rc5_32_12_16_cbc.pod" + ], + "doc/html/man3/EVP_ripemd160.html" => [ + "doc/man3/EVP_ripemd160.pod" + ], + "doc/html/man3/EVP_seed_cbc.html" => [ + "doc/man3/EVP_seed_cbc.pod" + ], + "doc/html/man3/EVP_set_default_properties.html" => [ + "doc/man3/EVP_set_default_properties.pod" + ], + "doc/html/man3/EVP_sha1.html" => [ + "doc/man3/EVP_sha1.pod" + ], + "doc/html/man3/EVP_sha224.html" => [ + "doc/man3/EVP_sha224.pod" + ], + "doc/html/man3/EVP_sha3_224.html" => [ + "doc/man3/EVP_sha3_224.pod" + ], + "doc/html/man3/EVP_sm3.html" => [ + "doc/man3/EVP_sm3.pod" + ], + "doc/html/man3/EVP_sm4_cbc.html" => [ + "doc/man3/EVP_sm4_cbc.pod" + ], + "doc/html/man3/EVP_whirlpool.html" => [ + "doc/man3/EVP_whirlpool.pod" + ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], + "doc/html/man3/HMAC.html" => [ + "doc/man3/HMAC.pod" + ], + "doc/html/man3/MD5.html" => [ + "doc/man3/MD5.pod" + ], + "doc/html/man3/MDC2_Init.html" => [ + "doc/man3/MDC2_Init.pod" + ], + "doc/html/man3/NCONF_new_ex.html" => [ + "doc/man3/NCONF_new_ex.pod" + ], + "doc/html/man3/OBJ_nid2obj.html" => [ + "doc/man3/OBJ_nid2obj.pod" + ], + "doc/html/man3/OCSP_REQUEST_new.html" => [ + "doc/man3/OCSP_REQUEST_new.pod" + ], + "doc/html/man3/OCSP_cert_to_id.html" => [ + "doc/man3/OCSP_cert_to_id.pod" + ], + "doc/html/man3/OCSP_request_add1_nonce.html" => [ + "doc/man3/OCSP_request_add1_nonce.pod" + ], + "doc/html/man3/OCSP_resp_find_status.html" => [ + "doc/man3/OCSP_resp_find_status.pod" + ], + "doc/html/man3/OCSP_response_status.html" => [ + "doc/man3/OCSP_response_status.pod" + ], + "doc/html/man3/OCSP_sendreq_new.html" => [ + "doc/man3/OCSP_sendreq_new.pod" + ], + "doc/html/man3/OPENSSL_Applink.html" => [ + "doc/man3/OPENSSL_Applink.pod" + ], + "doc/html/man3/OPENSSL_FILE.html" => [ + "doc/man3/OPENSSL_FILE.pod" + ], + "doc/html/man3/OPENSSL_LH_COMPFUNC.html" => [ + "doc/man3/OPENSSL_LH_COMPFUNC.pod" + ], + "doc/html/man3/OPENSSL_LH_stats.html" => [ + "doc/man3/OPENSSL_LH_stats.pod" + ], + "doc/html/man3/OPENSSL_config.html" => [ + "doc/man3/OPENSSL_config.pod" + ], + "doc/html/man3/OPENSSL_fork_prepare.html" => [ + "doc/man3/OPENSSL_fork_prepare.pod" + ], + "doc/html/man3/OPENSSL_gmtime.html" => [ + "doc/man3/OPENSSL_gmtime.pod" + ], + "doc/html/man3/OPENSSL_hexchar2int.html" => [ + "doc/man3/OPENSSL_hexchar2int.pod" + ], + "doc/html/man3/OPENSSL_ia32cap.html" => [ + "doc/man3/OPENSSL_ia32cap.pod" + ], + "doc/html/man3/OPENSSL_init_crypto.html" => [ + "doc/man3/OPENSSL_init_crypto.pod" + ], + "doc/html/man3/OPENSSL_init_ssl.html" => [ + "doc/man3/OPENSSL_init_ssl.pod" + ], + "doc/html/man3/OPENSSL_instrument_bus.html" => [ + "doc/man3/OPENSSL_instrument_bus.pod" + ], + "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ + "doc/man3/OPENSSL_load_builtin_modules.pod" + ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], + "doc/html/man3/OPENSSL_malloc.html" => [ + "doc/man3/OPENSSL_malloc.pod" + ], + "doc/html/man3/OPENSSL_ppccap.html" => [ + "doc/man3/OPENSSL_ppccap.pod" + ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], + "doc/html/man3/OPENSSL_s390xcap.html" => [ + "doc/man3/OPENSSL_s390xcap.pod" + ], + "doc/html/man3/OPENSSL_secure_malloc.html" => [ + "doc/man3/OPENSSL_secure_malloc.pod" + ], + "doc/html/man3/OPENSSL_strcasecmp.html" => [ + "doc/man3/OPENSSL_strcasecmp.pod" + ], + "doc/html/man3/OSSL_ALGORITHM.html" => [ + "doc/man3/OSSL_ALGORITHM.pod" + ], + "doc/html/man3/OSSL_CALLBACK.html" => [ + "doc/man3/OSSL_CALLBACK.pod" + ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], + "doc/html/man3/OSSL_CMP_CTX_new.html" => [ + "doc/man3/OSSL_CMP_CTX_new.pod" + ], + "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ + "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" + ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], + "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ + "doc/man3/OSSL_CMP_ITAV_set0.pod" + ], + "doc/html/man3/OSSL_CMP_MSG_get0_header.html" => [ + "doc/man3/OSSL_CMP_MSG_get0_header.pod" + ], + "doc/html/man3/OSSL_CMP_MSG_http_perform.html" => [ + "doc/man3/OSSL_CMP_MSG_http_perform.pod" + ], + "doc/html/man3/OSSL_CMP_SRV_CTX_new.html" => [ + "doc/man3/OSSL_CMP_SRV_CTX_new.pod" + ], + "doc/html/man3/OSSL_CMP_STATUSINFO_new.html" => [ + "doc/man3/OSSL_CMP_STATUSINFO_new.pod" + ], + "doc/html/man3/OSSL_CMP_exec_certreq.html" => [ + "doc/man3/OSSL_CMP_exec_certreq.pod" + ], + "doc/html/man3/OSSL_CMP_log_open.html" => [ + "doc/man3/OSSL_CMP_log_open.pod" + ], + "doc/html/man3/OSSL_CMP_validate_msg.html" => [ + "doc/man3/OSSL_CMP_validate_msg.pod" + ], + "doc/html/man3/OSSL_CORE_MAKE_FUNC.html" => [ + "doc/man3/OSSL_CORE_MAKE_FUNC.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html" => [ + "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html" => [ + "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" + ], + "doc/html/man3/OSSL_CRMF_pbmp_new.html" => [ + "doc/man3/OSSL_CRMF_pbmp_new.pod" + ], + "doc/html/man3/OSSL_DECODER.html" => [ + "doc/man3/OSSL_DECODER.pod" + ], + "doc/html/man3/OSSL_DECODER_CTX.html" => [ + "doc/man3/OSSL_DECODER_CTX.pod" + ], + "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html" => [ + "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" + ], + "doc/html/man3/OSSL_DECODER_from_bio.html" => [ + "doc/man3/OSSL_DECODER_from_bio.pod" + ], + "doc/html/man3/OSSL_DISPATCH.html" => [ + "doc/man3/OSSL_DISPATCH.pod" + ], + "doc/html/man3/OSSL_ENCODER.html" => [ + "doc/man3/OSSL_ENCODER.pod" + ], + "doc/html/man3/OSSL_ENCODER_CTX.html" => [ + "doc/man3/OSSL_ENCODER_CTX.pod" + ], + "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html" => [ + "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" + ], + "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ + "doc/man3/OSSL_ENCODER_to_bio.pod" + ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], + "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ + "doc/man3/OSSL_ESS_check_signing_certs.pod" + ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], + "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ + "doc/man3/OSSL_HTTP_REQ_CTX.pod" + ], + "doc/html/man3/OSSL_HTTP_parse_url.html" => [ + "doc/man3/OSSL_HTTP_parse_url.pod" + ], + "doc/html/man3/OSSL_HTTP_transfer.html" => [ + "doc/man3/OSSL_HTTP_transfer.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], + "doc/html/man3/OSSL_ITEM.html" => [ + "doc/man3/OSSL_ITEM.pod" + ], + "doc/html/man3/OSSL_LIB_CTX.html" => [ + "doc/man3/OSSL_LIB_CTX.pod" + ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], + "doc/html/man3/OSSL_PARAM.html" => [ + "doc/man3/OSSL_PARAM.pod" + ], + "doc/html/man3/OSSL_PARAM_BLD.html" => [ + "doc/man3/OSSL_PARAM_BLD.pod" + ], + "doc/html/man3/OSSL_PARAM_allocate_from_text.html" => [ + "doc/man3/OSSL_PARAM_allocate_from_text.pod" + ], + "doc/html/man3/OSSL_PARAM_dup.html" => [ + "doc/man3/OSSL_PARAM_dup.pod" + ], + "doc/html/man3/OSSL_PARAM_int.html" => [ + "doc/man3/OSSL_PARAM_int.pod" + ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], + "doc/html/man3/OSSL_PROVIDER.html" => [ + "doc/man3/OSSL_PROVIDER.pod" + ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], + "doc/html/man3/OSSL_SELF_TEST_new.html" => [ + "doc/man3/OSSL_SELF_TEST_new.pod" + ], + "doc/html/man3/OSSL_SELF_TEST_set_callback.html" => [ + "doc/man3/OSSL_SELF_TEST_set_callback.pod" + ], + "doc/html/man3/OSSL_STORE_INFO.html" => [ + "doc/man3/OSSL_STORE_INFO.pod" + ], + "doc/html/man3/OSSL_STORE_LOADER.html" => [ + "doc/man3/OSSL_STORE_LOADER.pod" + ], + "doc/html/man3/OSSL_STORE_SEARCH.html" => [ + "doc/man3/OSSL_STORE_SEARCH.pod" + ], + "doc/html/man3/OSSL_STORE_attach.html" => [ + "doc/man3/OSSL_STORE_attach.pod" + ], + "doc/html/man3/OSSL_STORE_expect.html" => [ + "doc/man3/OSSL_STORE_expect.pod" + ], + "doc/html/man3/OSSL_STORE_open.html" => [ + "doc/man3/OSSL_STORE_open.pod" + ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], + "doc/html/man3/OSSL_trace_enabled.html" => [ + "doc/man3/OSSL_trace_enabled.pod" + ], + "doc/html/man3/OSSL_trace_get_category_num.html" => [ + "doc/man3/OSSL_trace_get_category_num.pod" + ], + "doc/html/man3/OSSL_trace_set_channel.html" => [ + "doc/man3/OSSL_trace_set_channel.pod" + ], + "doc/html/man3/OpenSSL_add_all_algorithms.html" => [ + "doc/man3/OpenSSL_add_all_algorithms.pod" + ], + "doc/html/man3/OpenSSL_version.html" => [ + "doc/man3/OpenSSL_version.pod" + ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], + "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ + "doc/man3/PEM_X509_INFO_read_bio_ex.pod" + ], + "doc/html/man3/PEM_bytes_read_bio.html" => [ + "doc/man3/PEM_bytes_read_bio.pod" + ], + "doc/html/man3/PEM_read.html" => [ + "doc/man3/PEM_read.pod" + ], + "doc/html/man3/PEM_read_CMS.html" => [ + "doc/man3/PEM_read_CMS.pod" + ], + "doc/html/man3/PEM_read_bio_PrivateKey.html" => [ + "doc/man3/PEM_read_bio_PrivateKey.pod" + ], + "doc/html/man3/PEM_read_bio_ex.html" => [ + "doc/man3/PEM_read_bio_ex.pod" + ], + "doc/html/man3/PEM_write_bio_CMS_stream.html" => [ + "doc/man3/PEM_write_bio_CMS_stream.pod" + ], + "doc/html/man3/PEM_write_bio_PKCS7_stream.html" => [ + "doc/man3/PEM_write_bio_PKCS7_stream.pod" + ], + "doc/html/man3/PKCS12_PBE_keyivgen.html" => [ + "doc/man3/PKCS12_PBE_keyivgen.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_create_cert.html" => [ + "doc/man3/PKCS12_SAFEBAG_create_cert.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ + "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], + "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ + "doc/man3/PKCS12_add1_attr_by_NID.pod" + ], + "doc/html/man3/PKCS12_add_CSPName_asc.html" => [ + "doc/man3/PKCS12_add_CSPName_asc.pod" + ], + "doc/html/man3/PKCS12_add_cert.html" => [ + "doc/man3/PKCS12_add_cert.pod" + ], + "doc/html/man3/PKCS12_add_friendlyname_asc.html" => [ + "doc/man3/PKCS12_add_friendlyname_asc.pod" + ], + "doc/html/man3/PKCS12_add_localkeyid.html" => [ + "doc/man3/PKCS12_add_localkeyid.pod" + ], + "doc/html/man3/PKCS12_add_safe.html" => [ + "doc/man3/PKCS12_add_safe.pod" + ], + "doc/html/man3/PKCS12_create.html" => [ + "doc/man3/PKCS12_create.pod" + ], + "doc/html/man3/PKCS12_decrypt_skey.html" => [ + "doc/man3/PKCS12_decrypt_skey.pod" + ], + "doc/html/man3/PKCS12_gen_mac.html" => [ + "doc/man3/PKCS12_gen_mac.pod" + ], + "doc/html/man3/PKCS12_get_friendlyname.html" => [ + "doc/man3/PKCS12_get_friendlyname.pod" + ], + "doc/html/man3/PKCS12_init.html" => [ + "doc/man3/PKCS12_init.pod" + ], + "doc/html/man3/PKCS12_item_decrypt_d2i.html" => [ + "doc/man3/PKCS12_item_decrypt_d2i.pod" + ], + "doc/html/man3/PKCS12_key_gen_utf8_ex.html" => [ + "doc/man3/PKCS12_key_gen_utf8_ex.pod" + ], + "doc/html/man3/PKCS12_newpass.html" => [ + "doc/man3/PKCS12_newpass.pod" + ], + "doc/html/man3/PKCS12_pack_p7encdata.html" => [ + "doc/man3/PKCS12_pack_p7encdata.pod" + ], + "doc/html/man3/PKCS12_parse.html" => [ + "doc/man3/PKCS12_parse.pod" + ], + "doc/html/man3/PKCS5_PBE_keyivgen.html" => [ + "doc/man3/PKCS5_PBE_keyivgen.pod" + ], + "doc/html/man3/PKCS5_PBKDF2_HMAC.html" => [ + "doc/man3/PKCS5_PBKDF2_HMAC.pod" + ], + "doc/html/man3/PKCS7_decrypt.html" => [ + "doc/man3/PKCS7_decrypt.pod" + ], + "doc/html/man3/PKCS7_encrypt.html" => [ + "doc/man3/PKCS7_encrypt.pod" + ], + "doc/html/man3/PKCS7_get_octet_string.html" => [ + "doc/man3/PKCS7_get_octet_string.pod" + ], + "doc/html/man3/PKCS7_sign.html" => [ + "doc/man3/PKCS7_sign.pod" + ], + "doc/html/man3/PKCS7_sign_add_signer.html" => [ + "doc/man3/PKCS7_sign_add_signer.pod" + ], + "doc/html/man3/PKCS7_type_is_other.html" => [ + "doc/man3/PKCS7_type_is_other.pod" + ], + "doc/html/man3/PKCS7_verify.html" => [ + "doc/man3/PKCS7_verify.pod" + ], + "doc/html/man3/PKCS8_encrypt.html" => [ + "doc/man3/PKCS8_encrypt.pod" + ], + "doc/html/man3/PKCS8_pkey_add1_attr.html" => [ + "doc/man3/PKCS8_pkey_add1_attr.pod" + ], + "doc/html/man3/RAND_add.html" => [ + "doc/man3/RAND_add.pod" + ], + "doc/html/man3/RAND_bytes.html" => [ + "doc/man3/RAND_bytes.pod" + ], + "doc/html/man3/RAND_cleanup.html" => [ + "doc/man3/RAND_cleanup.pod" + ], + "doc/html/man3/RAND_egd.html" => [ + "doc/man3/RAND_egd.pod" + ], + "doc/html/man3/RAND_get0_primary.html" => [ + "doc/man3/RAND_get0_primary.pod" + ], + "doc/html/man3/RAND_load_file.html" => [ + "doc/man3/RAND_load_file.pod" + ], + "doc/html/man3/RAND_set_DRBG_type.html" => [ + "doc/man3/RAND_set_DRBG_type.pod" + ], + "doc/html/man3/RAND_set_rand_method.html" => [ + "doc/man3/RAND_set_rand_method.pod" + ], + "doc/html/man3/RC4_set_key.html" => [ + "doc/man3/RC4_set_key.pod" + ], + "doc/html/man3/RIPEMD160_Init.html" => [ + "doc/man3/RIPEMD160_Init.pod" + ], + "doc/html/man3/RSA_blinding_on.html" => [ + "doc/man3/RSA_blinding_on.pod" + ], + "doc/html/man3/RSA_check_key.html" => [ + "doc/man3/RSA_check_key.pod" + ], + "doc/html/man3/RSA_generate_key.html" => [ + "doc/man3/RSA_generate_key.pod" + ], + "doc/html/man3/RSA_get0_key.html" => [ + "doc/man3/RSA_get0_key.pod" + ], + "doc/html/man3/RSA_meth_new.html" => [ + "doc/man3/RSA_meth_new.pod" + ], + "doc/html/man3/RSA_new.html" => [ + "doc/man3/RSA_new.pod" + ], + "doc/html/man3/RSA_padding_add_PKCS1_type_1.html" => [ + "doc/man3/RSA_padding_add_PKCS1_type_1.pod" + ], + "doc/html/man3/RSA_print.html" => [ + "doc/man3/RSA_print.pod" + ], + "doc/html/man3/RSA_private_encrypt.html" => [ + "doc/man3/RSA_private_encrypt.pod" + ], + "doc/html/man3/RSA_public_encrypt.html" => [ + "doc/man3/RSA_public_encrypt.pod" + ], + "doc/html/man3/RSA_set_method.html" => [ + "doc/man3/RSA_set_method.pod" + ], + "doc/html/man3/RSA_sign.html" => [ + "doc/man3/RSA_sign.pod" + ], + "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html" => [ + "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" + ], + "doc/html/man3/RSA_size.html" => [ + "doc/man3/RSA_size.pod" + ], + "doc/html/man3/SCT_new.html" => [ + "doc/man3/SCT_new.pod" + ], + "doc/html/man3/SCT_print.html" => [ + "doc/man3/SCT_print.pod" + ], + "doc/html/man3/SCT_validate.html" => [ + "doc/man3/SCT_validate.pod" + ], + "doc/html/man3/SHA256_Init.html" => [ + "doc/man3/SHA256_Init.pod" + ], + "doc/html/man3/SMIME_read_ASN1.html" => [ + "doc/man3/SMIME_read_ASN1.pod" + ], + "doc/html/man3/SMIME_read_CMS.html" => [ + "doc/man3/SMIME_read_CMS.pod" + ], + "doc/html/man3/SMIME_read_PKCS7.html" => [ + "doc/man3/SMIME_read_PKCS7.pod" + ], + "doc/html/man3/SMIME_write_ASN1.html" => [ + "doc/man3/SMIME_write_ASN1.pod" + ], + "doc/html/man3/SMIME_write_CMS.html" => [ + "doc/man3/SMIME_write_CMS.pod" + ], + "doc/html/man3/SMIME_write_PKCS7.html" => [ + "doc/man3/SMIME_write_PKCS7.pod" + ], + "doc/html/man3/SRP_Calc_B.html" => [ + "doc/man3/SRP_Calc_B.pod" + ], + "doc/html/man3/SRP_VBASE_new.html" => [ + "doc/man3/SRP_VBASE_new.pod" + ], + "doc/html/man3/SRP_create_verifier.html" => [ + "doc/man3/SRP_create_verifier.pod" + ], + "doc/html/man3/SRP_user_pwd_new.html" => [ + "doc/man3/SRP_user_pwd_new.pod" + ], + "doc/html/man3/SSL_CIPHER_get_name.html" => [ + "doc/man3/SSL_CIPHER_get_name.pod" + ], + "doc/html/man3/SSL_COMP_add_compression_method.html" => [ + "doc/man3/SSL_COMP_add_compression_method.pod" + ], + "doc/html/man3/SSL_CONF_CTX_new.html" => [ + "doc/man3/SSL_CONF_CTX_new.pod" + ], + "doc/html/man3/SSL_CONF_CTX_set1_prefix.html" => [ + "doc/man3/SSL_CONF_CTX_set1_prefix.pod" + ], + "doc/html/man3/SSL_CONF_CTX_set_flags.html" => [ + "doc/man3/SSL_CONF_CTX_set_flags.pod" + ], + "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html" => [ + "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" + ], + "doc/html/man3/SSL_CONF_cmd.html" => [ + "doc/man3/SSL_CONF_cmd.pod" + ], + "doc/html/man3/SSL_CONF_cmd_argv.html" => [ + "doc/man3/SSL_CONF_cmd_argv.pod" + ], + "doc/html/man3/SSL_CTX_add1_chain_cert.html" => [ + "doc/man3/SSL_CTX_add1_chain_cert.pod" + ], + "doc/html/man3/SSL_CTX_add_extra_chain_cert.html" => [ + "doc/man3/SSL_CTX_add_extra_chain_cert.pod" + ], + "doc/html/man3/SSL_CTX_add_session.html" => [ + "doc/man3/SSL_CTX_add_session.pod" + ], + "doc/html/man3/SSL_CTX_config.html" => [ + "doc/man3/SSL_CTX_config.pod" + ], + "doc/html/man3/SSL_CTX_ctrl.html" => [ + "doc/man3/SSL_CTX_ctrl.pod" + ], + "doc/html/man3/SSL_CTX_dane_enable.html" => [ + "doc/man3/SSL_CTX_dane_enable.pod" + ], + "doc/html/man3/SSL_CTX_flush_sessions.html" => [ + "doc/man3/SSL_CTX_flush_sessions.pod" + ], + "doc/html/man3/SSL_CTX_free.html" => [ + "doc/man3/SSL_CTX_free.pod" + ], + "doc/html/man3/SSL_CTX_get0_param.html" => [ + "doc/man3/SSL_CTX_get0_param.pod" + ], + "doc/html/man3/SSL_CTX_get_verify_mode.html" => [ + "doc/man3/SSL_CTX_get_verify_mode.pod" + ], + "doc/html/man3/SSL_CTX_has_client_custom_ext.html" => [ + "doc/man3/SSL_CTX_has_client_custom_ext.pod" + ], + "doc/html/man3/SSL_CTX_load_verify_locations.html" => [ + "doc/man3/SSL_CTX_load_verify_locations.pod" + ], + "doc/html/man3/SSL_CTX_new.html" => [ + "doc/man3/SSL_CTX_new.pod" + ], + "doc/html/man3/SSL_CTX_sess_number.html" => [ + "doc/man3/SSL_CTX_sess_number.pod" + ], + "doc/html/man3/SSL_CTX_sess_set_cache_size.html" => [ + "doc/man3/SSL_CTX_sess_set_cache_size.pod" + ], + "doc/html/man3/SSL_CTX_sess_set_get_cb.html" => [ + "doc/man3/SSL_CTX_sess_set_get_cb.pod" + ], + "doc/html/man3/SSL_CTX_sessions.html" => [ + "doc/man3/SSL_CTX_sessions.pod" + ], + "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ + "doc/man3/SSL_CTX_set0_CA_list.pod" + ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], + "doc/html/man3/SSL_CTX_set1_curves.html" => [ + "doc/man3/SSL_CTX_set1_curves.pod" + ], + "doc/html/man3/SSL_CTX_set1_sigalgs.html" => [ + "doc/man3/SSL_CTX_set1_sigalgs.pod" + ], + "doc/html/man3/SSL_CTX_set1_verify_cert_store.html" => [ + "doc/man3/SSL_CTX_set1_verify_cert_store.pod" + ], + "doc/html/man3/SSL_CTX_set_alpn_select_cb.html" => [ + "doc/man3/SSL_CTX_set_alpn_select_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_cert_cb.html" => [ + "doc/man3/SSL_CTX_set_cert_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_cert_store.html" => [ + "doc/man3/SSL_CTX_set_cert_store.pod" + ], + "doc/html/man3/SSL_CTX_set_cert_verify_callback.html" => [ + "doc/man3/SSL_CTX_set_cert_verify_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_cipher_list.html" => [ + "doc/man3/SSL_CTX_set_cipher_list.pod" + ], + "doc/html/man3/SSL_CTX_set_client_cert_cb.html" => [ + "doc/man3/SSL_CTX_set_client_cert_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_client_hello_cb.html" => [ + "doc/man3/SSL_CTX_set_client_hello_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_ct_validation_callback.html" => [ + "doc/man3/SSL_CTX_set_ct_validation_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_ctlog_list_file.html" => [ + "doc/man3/SSL_CTX_set_ctlog_list_file.pod" + ], + "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ + "doc/man3/SSL_CTX_set_default_passwd_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], + "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ + "doc/man3/SSL_CTX_set_generate_session_id.pod" + ], + "doc/html/man3/SSL_CTX_set_info_callback.html" => [ + "doc/man3/SSL_CTX_set_info_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_keylog_callback.html" => [ + "doc/man3/SSL_CTX_set_keylog_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_max_cert_list.html" => [ + "doc/man3/SSL_CTX_set_max_cert_list.pod" + ], + "doc/html/man3/SSL_CTX_set_min_proto_version.html" => [ + "doc/man3/SSL_CTX_set_min_proto_version.pod" + ], + "doc/html/man3/SSL_CTX_set_mode.html" => [ + "doc/man3/SSL_CTX_set_mode.pod" + ], + "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ + "doc/man3/SSL_CTX_set_msg_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ + "doc/man3/SSL_CTX_set_num_tickets.pod" + ], + "doc/html/man3/SSL_CTX_set_options.html" => [ + "doc/man3/SSL_CTX_set_options.pod" + ], + "doc/html/man3/SSL_CTX_set_psk_client_callback.html" => [ + "doc/man3/SSL_CTX_set_psk_client_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_quiet_shutdown.html" => [ + "doc/man3/SSL_CTX_set_quiet_shutdown.pod" + ], + "doc/html/man3/SSL_CTX_set_read_ahead.html" => [ + "doc/man3/SSL_CTX_set_read_ahead.pod" + ], + "doc/html/man3/SSL_CTX_set_record_padding_callback.html" => [ + "doc/man3/SSL_CTX_set_record_padding_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_security_level.html" => [ + "doc/man3/SSL_CTX_set_security_level.pod" + ], + "doc/html/man3/SSL_CTX_set_session_cache_mode.html" => [ + "doc/man3/SSL_CTX_set_session_cache_mode.pod" + ], + "doc/html/man3/SSL_CTX_set_session_id_context.html" => [ + "doc/man3/SSL_CTX_set_session_id_context.pod" + ], + "doc/html/man3/SSL_CTX_set_session_ticket_cb.html" => [ + "doc/man3/SSL_CTX_set_session_ticket_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_split_send_fragment.html" => [ + "doc/man3/SSL_CTX_set_split_send_fragment.pod" + ], + "doc/html/man3/SSL_CTX_set_srp_password.html" => [ + "doc/man3/SSL_CTX_set_srp_password.pod" + ], + "doc/html/man3/SSL_CTX_set_ssl_version.html" => [ + "doc/man3/SSL_CTX_set_ssl_version.pod" + ], + "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html" => [ + "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_timeout.html" => [ + "doc/man3/SSL_CTX_set_timeout.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html" => [ + "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html" => [ + "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html" => [ + "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html" => [ + "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" + ], + "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html" => [ + "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_tmp_ecdh.html" => [ + "doc/man3/SSL_CTX_set_tmp_ecdh.pod" + ], + "doc/html/man3/SSL_CTX_set_verify.html" => [ + "doc/man3/SSL_CTX_set_verify.pod" + ], + "doc/html/man3/SSL_CTX_use_certificate.html" => [ + "doc/man3/SSL_CTX_use_certificate.pod" + ], + "doc/html/man3/SSL_CTX_use_psk_identity_hint.html" => [ + "doc/man3/SSL_CTX_use_psk_identity_hint.pod" + ], + "doc/html/man3/SSL_CTX_use_serverinfo.html" => [ + "doc/man3/SSL_CTX_use_serverinfo.pod" + ], + "doc/html/man3/SSL_SESSION_free.html" => [ + "doc/man3/SSL_SESSION_free.pod" + ], + "doc/html/man3/SSL_SESSION_get0_cipher.html" => [ + "doc/man3/SSL_SESSION_get0_cipher.pod" + ], + "doc/html/man3/SSL_SESSION_get0_hostname.html" => [ + "doc/man3/SSL_SESSION_get0_hostname.pod" + ], + "doc/html/man3/SSL_SESSION_get0_id_context.html" => [ + "doc/man3/SSL_SESSION_get0_id_context.pod" + ], + "doc/html/man3/SSL_SESSION_get0_peer.html" => [ + "doc/man3/SSL_SESSION_get0_peer.pod" + ], + "doc/html/man3/SSL_SESSION_get_compress_id.html" => [ + "doc/man3/SSL_SESSION_get_compress_id.pod" + ], + "doc/html/man3/SSL_SESSION_get_protocol_version.html" => [ + "doc/man3/SSL_SESSION_get_protocol_version.pod" + ], + "doc/html/man3/SSL_SESSION_get_time.html" => [ + "doc/man3/SSL_SESSION_get_time.pod" + ], + "doc/html/man3/SSL_SESSION_has_ticket.html" => [ + "doc/man3/SSL_SESSION_has_ticket.pod" + ], + "doc/html/man3/SSL_SESSION_is_resumable.html" => [ + "doc/man3/SSL_SESSION_is_resumable.pod" + ], + "doc/html/man3/SSL_SESSION_print.html" => [ + "doc/man3/SSL_SESSION_print.pod" + ], + "doc/html/man3/SSL_SESSION_set1_id.html" => [ + "doc/man3/SSL_SESSION_set1_id.pod" + ], + "doc/html/man3/SSL_accept.html" => [ + "doc/man3/SSL_accept.pod" + ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], + "doc/html/man3/SSL_alert_type_string.html" => [ + "doc/man3/SSL_alert_type_string.pod" + ], + "doc/html/man3/SSL_alloc_buffers.html" => [ + "doc/man3/SSL_alloc_buffers.pod" + ], + "doc/html/man3/SSL_check_chain.html" => [ + "doc/man3/SSL_check_chain.pod" + ], + "doc/html/man3/SSL_clear.html" => [ + "doc/man3/SSL_clear.pod" + ], + "doc/html/man3/SSL_connect.html" => [ + "doc/man3/SSL_connect.pod" + ], + "doc/html/man3/SSL_do_handshake.html" => [ + "doc/man3/SSL_do_handshake.pod" + ], + "doc/html/man3/SSL_export_keying_material.html" => [ + "doc/man3/SSL_export_keying_material.pod" + ], + "doc/html/man3/SSL_extension_supported.html" => [ + "doc/man3/SSL_extension_supported.pod" + ], + "doc/html/man3/SSL_free.html" => [ + "doc/man3/SSL_free.pod" + ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], + "doc/html/man3/SSL_get0_peer_scts.html" => [ + "doc/man3/SSL_get0_peer_scts.pod" + ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], + "doc/html/man3/SSL_get_SSL_CTX.html" => [ + "doc/man3/SSL_get_SSL_CTX.pod" + ], + "doc/html/man3/SSL_get_all_async_fds.html" => [ + "doc/man3/SSL_get_all_async_fds.pod" + ], + "doc/html/man3/SSL_get_certificate.html" => [ + "doc/man3/SSL_get_certificate.pod" + ], + "doc/html/man3/SSL_get_ciphers.html" => [ + "doc/man3/SSL_get_ciphers.pod" + ], + "doc/html/man3/SSL_get_client_random.html" => [ + "doc/man3/SSL_get_client_random.pod" + ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], + "doc/html/man3/SSL_get_current_cipher.html" => [ + "doc/man3/SSL_get_current_cipher.pod" + ], + "doc/html/man3/SSL_get_default_timeout.html" => [ + "doc/man3/SSL_get_default_timeout.pod" + ], + "doc/html/man3/SSL_get_error.html" => [ + "doc/man3/SSL_get_error.pod" + ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], + "doc/html/man3/SSL_get_extms_support.html" => [ + "doc/man3/SSL_get_extms_support.pod" + ], + "doc/html/man3/SSL_get_fd.html" => [ + "doc/man3/SSL_get_fd.pod" + ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], + "doc/html/man3/SSL_get_peer_cert_chain.html" => [ + "doc/man3/SSL_get_peer_cert_chain.pod" + ], + "doc/html/man3/SSL_get_peer_certificate.html" => [ + "doc/man3/SSL_get_peer_certificate.pod" + ], + "doc/html/man3/SSL_get_peer_signature_nid.html" => [ + "doc/man3/SSL_get_peer_signature_nid.pod" + ], + "doc/html/man3/SSL_get_peer_tmp_key.html" => [ + "doc/man3/SSL_get_peer_tmp_key.pod" + ], + "doc/html/man3/SSL_get_psk_identity.html" => [ + "doc/man3/SSL_get_psk_identity.pod" + ], + "doc/html/man3/SSL_get_rbio.html" => [ + "doc/man3/SSL_get_rbio.pod" + ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], + "doc/html/man3/SSL_get_session.html" => [ + "doc/man3/SSL_get_session.pod" + ], + "doc/html/man3/SSL_get_shared_sigalgs.html" => [ + "doc/man3/SSL_get_shared_sigalgs.pod" + ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], + "doc/html/man3/SSL_get_verify_result.html" => [ + "doc/man3/SSL_get_verify_result.pod" + ], + "doc/html/man3/SSL_get_version.html" => [ + "doc/man3/SSL_get_version.pod" + ], + "doc/html/man3/SSL_group_to_name.html" => [ + "doc/man3/SSL_group_to_name.pod" + ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], + "doc/html/man3/SSL_in_init.html" => [ + "doc/man3/SSL_in_init.pod" + ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], + "doc/html/man3/SSL_key_update.html" => [ + "doc/man3/SSL_key_update.pod" + ], + "doc/html/man3/SSL_library_init.html" => [ + "doc/man3/SSL_library_init.pod" + ], + "doc/html/man3/SSL_load_client_CA_file.html" => [ + "doc/man3/SSL_load_client_CA_file.pod" + ], + "doc/html/man3/SSL_new.html" => [ + "doc/man3/SSL_new.pod" + ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], + "doc/html/man3/SSL_pending.html" => [ + "doc/man3/SSL_pending.pod" + ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], + "doc/html/man3/SSL_read.html" => [ + "doc/man3/SSL_read.pod" + ], + "doc/html/man3/SSL_read_early_data.html" => [ + "doc/man3/SSL_read_early_data.pod" + ], + "doc/html/man3/SSL_rstate_string.html" => [ + "doc/man3/SSL_rstate_string.pod" + ], + "doc/html/man3/SSL_session_reused.html" => [ + "doc/man3/SSL_session_reused.pod" + ], + "doc/html/man3/SSL_set1_host.html" => [ + "doc/man3/SSL_set1_host.pod" + ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], + "doc/html/man3/SSL_set_async_callback.html" => [ + "doc/man3/SSL_set_async_callback.pod" + ], + "doc/html/man3/SSL_set_bio.html" => [ + "doc/man3/SSL_set_bio.pod" + ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], + "doc/html/man3/SSL_set_connect_state.html" => [ + "doc/man3/SSL_set_connect_state.pod" + ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], + "doc/html/man3/SSL_set_fd.html" => [ + "doc/man3/SSL_set_fd.pod" + ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], + "doc/html/man3/SSL_set_retry_verify.html" => [ + "doc/man3/SSL_set_retry_verify.pod" + ], + "doc/html/man3/SSL_set_session.html" => [ + "doc/man3/SSL_set_session.pod" + ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], + "doc/html/man3/SSL_set_shutdown.html" => [ + "doc/man3/SSL_set_shutdown.pod" + ], + "doc/html/man3/SSL_set_verify_result.html" => [ + "doc/man3/SSL_set_verify_result.pod" + ], + "doc/html/man3/SSL_shutdown.html" => [ + "doc/man3/SSL_shutdown.pod" + ], + "doc/html/man3/SSL_state_string.html" => [ + "doc/man3/SSL_state_string.pod" + ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], + "doc/html/man3/SSL_want.html" => [ + "doc/man3/SSL_want.pod" + ], + "doc/html/man3/SSL_write.html" => [ + "doc/man3/SSL_write.pod" + ], + "doc/html/man3/TS_RESP_CTX_new.html" => [ + "doc/man3/TS_RESP_CTX_new.pod" + ], + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" + ], + "doc/html/man3/UI_STRING.html" => [ + "doc/man3/UI_STRING.pod" + ], + "doc/html/man3/UI_UTIL_read_pw.html" => [ + "doc/man3/UI_UTIL_read_pw.pod" + ], + "doc/html/man3/UI_create_method.html" => [ + "doc/man3/UI_create_method.pod" + ], + "doc/html/man3/UI_new.html" => [ + "doc/man3/UI_new.pod" + ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], + "doc/html/man3/X509V3_get_d2i.html" => [ + "doc/man3/X509V3_get_d2i.pod" + ], + "doc/html/man3/X509V3_set_ctx.html" => [ + "doc/man3/X509V3_set_ctx.pod" + ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], + "doc/html/man3/X509_ALGOR_dup.html" => [ + "doc/man3/X509_ALGOR_dup.pod" + ], + "doc/html/man3/X509_ATTRIBUTE.html" => [ + "doc/man3/X509_ATTRIBUTE.pod" + ], + "doc/html/man3/X509_CRL_get0_by_serial.html" => [ + "doc/man3/X509_CRL_get0_by_serial.pod" + ], + "doc/html/man3/X509_EXTENSION_set_object.html" => [ + "doc/man3/X509_EXTENSION_set_object.pod" + ], + "doc/html/man3/X509_LOOKUP.html" => [ + "doc/man3/X509_LOOKUP.pod" + ], + "doc/html/man3/X509_LOOKUP_hash_dir.html" => [ + "doc/man3/X509_LOOKUP_hash_dir.pod" + ], + "doc/html/man3/X509_LOOKUP_meth_new.html" => [ + "doc/man3/X509_LOOKUP_meth_new.pod" + ], + "doc/html/man3/X509_NAME_ENTRY_get_object.html" => [ + "doc/man3/X509_NAME_ENTRY_get_object.pod" + ], + "doc/html/man3/X509_NAME_add_entry_by_txt.html" => [ + "doc/man3/X509_NAME_add_entry_by_txt.pod" + ], + "doc/html/man3/X509_NAME_get0_der.html" => [ + "doc/man3/X509_NAME_get0_der.pod" + ], + "doc/html/man3/X509_NAME_get_index_by_NID.html" => [ + "doc/man3/X509_NAME_get_index_by_NID.pod" + ], + "doc/html/man3/X509_NAME_print_ex.html" => [ + "doc/man3/X509_NAME_print_ex.pod" + ], + "doc/html/man3/X509_PUBKEY_new.html" => [ + "doc/man3/X509_PUBKEY_new.pod" + ], + "doc/html/man3/X509_REQ_get_attr.html" => [ + "doc/man3/X509_REQ_get_attr.pod" + ], + "doc/html/man3/X509_REQ_get_extensions.html" => [ + "doc/man3/X509_REQ_get_extensions.pod" + ], + "doc/html/man3/X509_SIG_get0.html" => [ + "doc/man3/X509_SIG_get0.pod" + ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], + "doc/html/man3/X509_STORE_CTX_get_error.html" => [ + "doc/man3/X509_STORE_CTX_get_error.pod" + ], + "doc/html/man3/X509_STORE_CTX_new.html" => [ + "doc/man3/X509_STORE_CTX_new.pod" + ], + "doc/html/man3/X509_STORE_CTX_set_verify_cb.html" => [ + "doc/man3/X509_STORE_CTX_set_verify_cb.pod" + ], + "doc/html/man3/X509_STORE_add_cert.html" => [ + "doc/man3/X509_STORE_add_cert.pod" + ], + "doc/html/man3/X509_STORE_get0_param.html" => [ + "doc/man3/X509_STORE_get0_param.pod" + ], + "doc/html/man3/X509_STORE_new.html" => [ + "doc/man3/X509_STORE_new.pod" + ], + "doc/html/man3/X509_STORE_set_verify_cb_func.html" => [ + "doc/man3/X509_STORE_set_verify_cb_func.pod" + ], + "doc/html/man3/X509_VERIFY_PARAM_set_flags.html" => [ + "doc/man3/X509_VERIFY_PARAM_set_flags.pod" + ], + "doc/html/man3/X509_add_cert.html" => [ + "doc/man3/X509_add_cert.pod" + ], + "doc/html/man3/X509_check_ca.html" => [ + "doc/man3/X509_check_ca.pod" + ], + "doc/html/man3/X509_check_host.html" => [ + "doc/man3/X509_check_host.pod" + ], + "doc/html/man3/X509_check_issued.html" => [ + "doc/man3/X509_check_issued.pod" + ], + "doc/html/man3/X509_check_private_key.html" => [ + "doc/man3/X509_check_private_key.pod" + ], + "doc/html/man3/X509_check_purpose.html" => [ + "doc/man3/X509_check_purpose.pod" + ], + "doc/html/man3/X509_cmp.html" => [ + "doc/man3/X509_cmp.pod" + ], + "doc/html/man3/X509_cmp_time.html" => [ + "doc/man3/X509_cmp_time.pod" + ], + "doc/html/man3/X509_digest.html" => [ + "doc/man3/X509_digest.pod" + ], + "doc/html/man3/X509_dup.html" => [ + "doc/man3/X509_dup.pod" + ], + "doc/html/man3/X509_get0_distinguishing_id.html" => [ + "doc/man3/X509_get0_distinguishing_id.pod" + ], + "doc/html/man3/X509_get0_notBefore.html" => [ + "doc/man3/X509_get0_notBefore.pod" + ], + "doc/html/man3/X509_get0_signature.html" => [ + "doc/man3/X509_get0_signature.pod" + ], + "doc/html/man3/X509_get0_uids.html" => [ + "doc/man3/X509_get0_uids.pod" + ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], + "doc/html/man3/X509_get_extension_flags.html" => [ + "doc/man3/X509_get_extension_flags.pod" + ], + "doc/html/man3/X509_get_pubkey.html" => [ + "doc/man3/X509_get_pubkey.pod" + ], + "doc/html/man3/X509_get_serialNumber.html" => [ + "doc/man3/X509_get_serialNumber.pod" + ], + "doc/html/man3/X509_get_subject_name.html" => [ + "doc/man3/X509_get_subject_name.pod" + ], + "doc/html/man3/X509_get_version.html" => [ + "doc/man3/X509_get_version.pod" + ], + "doc/html/man3/X509_load_http.html" => [ + "doc/man3/X509_load_http.pod" + ], + "doc/html/man3/X509_new.html" => [ + "doc/man3/X509_new.pod" + ], + "doc/html/man3/X509_sign.html" => [ + "doc/man3/X509_sign.pod" + ], + "doc/html/man3/X509_verify.html" => [ + "doc/man3/X509_verify.pod" + ], + "doc/html/man3/X509_verify_cert.html" => [ + "doc/man3/X509_verify_cert.pod" + ], + "doc/html/man3/X509v3_get_ext_by_NID.html" => [ + "doc/man3/X509v3_get_ext_by_NID.pod" + ], + "doc/html/man3/b2i_PVK_bio_ex.html" => [ + "doc/man3/b2i_PVK_bio_ex.pod" + ], + "doc/html/man3/d2i_PKCS8PrivateKey_bio.html" => [ + "doc/man3/d2i_PKCS8PrivateKey_bio.pod" + ], + "doc/html/man3/d2i_PrivateKey.html" => [ + "doc/man3/d2i_PrivateKey.pod" + ], + "doc/html/man3/d2i_RSAPrivateKey.html" => [ + "doc/man3/d2i_RSAPrivateKey.pod" + ], + "doc/html/man3/d2i_SSL_SESSION.html" => [ + "doc/man3/d2i_SSL_SESSION.pod" + ], + "doc/html/man3/d2i_X509.html" => [ + "doc/man3/d2i_X509.pod" + ], + "doc/html/man3/i2d_CMS_bio_stream.html" => [ + "doc/man3/i2d_CMS_bio_stream.pod" + ], + "doc/html/man3/i2d_PKCS7_bio_stream.html" => [ + "doc/man3/i2d_PKCS7_bio_stream.pod" + ], + "doc/html/man3/i2d_re_X509_tbs.html" => [ + "doc/man3/i2d_re_X509_tbs.pod" + ], + "doc/html/man3/o2i_SCT_LIST.html" => [ + "doc/man3/o2i_SCT_LIST.pod" + ], + "doc/html/man3/s2i_ASN1_IA5STRING.html" => [ + "doc/man3/s2i_ASN1_IA5STRING.pod" + ], + "doc/html/man5/config.html" => [ + "doc/man5/config.pod" + ], + "doc/html/man5/fips_config.html" => [ + "doc/man5/fips_config.pod" + ], + "doc/html/man5/x509v3_config.html" => [ + "doc/man5/x509v3_config.pod" + ], + "doc/html/man7/EVP_ASYM_CIPHER-RSA.html" => [ + "doc/man7/EVP_ASYM_CIPHER-RSA.pod" + ], + "doc/html/man7/EVP_ASYM_CIPHER-SM2.html" => [ + "doc/man7/EVP_ASYM_CIPHER-SM2.pod" + ], + "doc/html/man7/EVP_CIPHER-AES.html" => [ + "doc/man7/EVP_CIPHER-AES.pod" + ], + "doc/html/man7/EVP_CIPHER-ARIA.html" => [ + "doc/man7/EVP_CIPHER-ARIA.pod" + ], + "doc/html/man7/EVP_CIPHER-BLOWFISH.html" => [ + "doc/man7/EVP_CIPHER-BLOWFISH.pod" + ], + "doc/html/man7/EVP_CIPHER-CAMELLIA.html" => [ + "doc/man7/EVP_CIPHER-CAMELLIA.pod" + ], + "doc/html/man7/EVP_CIPHER-CAST.html" => [ + "doc/man7/EVP_CIPHER-CAST.pod" + ], + "doc/html/man7/EVP_CIPHER-CHACHA.html" => [ + "doc/man7/EVP_CIPHER-CHACHA.pod" + ], + "doc/html/man7/EVP_CIPHER-DES.html" => [ + "doc/man7/EVP_CIPHER-DES.pod" + ], + "doc/html/man7/EVP_CIPHER-IDEA.html" => [ + "doc/man7/EVP_CIPHER-IDEA.pod" + ], + "doc/html/man7/EVP_CIPHER-NULL.html" => [ + "doc/man7/EVP_CIPHER-NULL.pod" + ], + "doc/html/man7/EVP_CIPHER-RC2.html" => [ + "doc/man7/EVP_CIPHER-RC2.pod" + ], + "doc/html/man7/EVP_CIPHER-RC4.html" => [ + "doc/man7/EVP_CIPHER-RC4.pod" + ], + "doc/html/man7/EVP_CIPHER-RC5.html" => [ + "doc/man7/EVP_CIPHER-RC5.pod" + ], + "doc/html/man7/EVP_CIPHER-SEED.html" => [ + "doc/man7/EVP_CIPHER-SEED.pod" + ], + "doc/html/man7/EVP_CIPHER-SM4.html" => [ + "doc/man7/EVP_CIPHER-SM4.pod" + ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], + "doc/html/man7/EVP_KDF-HKDF.html" => [ + "doc/man7/EVP_KDF-HKDF.pod" + ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], + "doc/html/man7/EVP_KDF-KB.html" => [ + "doc/man7/EVP_KDF-KB.pod" + ], + "doc/html/man7/EVP_KDF-KRB5KDF.html" => [ + "doc/man7/EVP_KDF-KRB5KDF.pod" + ], + "doc/html/man7/EVP_KDF-PBKDF1.html" => [ + "doc/man7/EVP_KDF-PBKDF1.pod" + ], + "doc/html/man7/EVP_KDF-PBKDF2.html" => [ + "doc/man7/EVP_KDF-PBKDF2.pod" + ], + "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ + "doc/man7/EVP_KDF-PKCS12KDF.pod" + ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], + "doc/html/man7/EVP_KDF-SCRYPT.html" => [ + "doc/man7/EVP_KDF-SCRYPT.pod" + ], + "doc/html/man7/EVP_KDF-SS.html" => [ + "doc/man7/EVP_KDF-SS.pod" + ], + "doc/html/man7/EVP_KDF-SSHKDF.html" => [ + "doc/man7/EVP_KDF-SSHKDF.pod" + ], + "doc/html/man7/EVP_KDF-TLS13_KDF.html" => [ + "doc/man7/EVP_KDF-TLS13_KDF.pod" + ], + "doc/html/man7/EVP_KDF-TLS1_PRF.html" => [ + "doc/man7/EVP_KDF-TLS1_PRF.pod" + ], + "doc/html/man7/EVP_KDF-X942-ASN1.html" => [ + "doc/man7/EVP_KDF-X942-ASN1.pod" + ], + "doc/html/man7/EVP_KDF-X942-CONCAT.html" => [ + "doc/man7/EVP_KDF-X942-CONCAT.pod" + ], + "doc/html/man7/EVP_KDF-X963.html" => [ + "doc/man7/EVP_KDF-X963.pod" + ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], + "doc/html/man7/EVP_KEM-RSA.html" => [ + "doc/man7/EVP_KEM-RSA.pod" + ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], + "doc/html/man7/EVP_KEYEXCH-DH.html" => [ + "doc/man7/EVP_KEYEXCH-DH.pod" + ], + "doc/html/man7/EVP_KEYEXCH-ECDH.html" => [ + "doc/man7/EVP_KEYEXCH-ECDH.pod" + ], + "doc/html/man7/EVP_KEYEXCH-X25519.html" => [ + "doc/man7/EVP_KEYEXCH-X25519.pod" + ], + "doc/html/man7/EVP_MAC-BLAKE2.html" => [ + "doc/man7/EVP_MAC-BLAKE2.pod" + ], + "doc/html/man7/EVP_MAC-CMAC.html" => [ + "doc/man7/EVP_MAC-CMAC.pod" + ], + "doc/html/man7/EVP_MAC-GMAC.html" => [ + "doc/man7/EVP_MAC-GMAC.pod" + ], + "doc/html/man7/EVP_MAC-HMAC.html" => [ + "doc/man7/EVP_MAC-HMAC.pod" + ], + "doc/html/man7/EVP_MAC-KMAC.html" => [ + "doc/man7/EVP_MAC-KMAC.pod" + ], + "doc/html/man7/EVP_MAC-Poly1305.html" => [ + "doc/man7/EVP_MAC-Poly1305.pod" + ], + "doc/html/man7/EVP_MAC-Siphash.html" => [ + "doc/man7/EVP_MAC-Siphash.pod" + ], + "doc/html/man7/EVP_MD-BLAKE2.html" => [ + "doc/man7/EVP_MD-BLAKE2.pod" + ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], + "doc/html/man7/EVP_MD-MD2.html" => [ + "doc/man7/EVP_MD-MD2.pod" + ], + "doc/html/man7/EVP_MD-MD4.html" => [ + "doc/man7/EVP_MD-MD4.pod" + ], + "doc/html/man7/EVP_MD-MD5-SHA1.html" => [ + "doc/man7/EVP_MD-MD5-SHA1.pod" + ], + "doc/html/man7/EVP_MD-MD5.html" => [ + "doc/man7/EVP_MD-MD5.pod" + ], + "doc/html/man7/EVP_MD-MDC2.html" => [ + "doc/man7/EVP_MD-MDC2.pod" + ], + "doc/html/man7/EVP_MD-NULL.html" => [ + "doc/man7/EVP_MD-NULL.pod" + ], + "doc/html/man7/EVP_MD-RIPEMD160.html" => [ + "doc/man7/EVP_MD-RIPEMD160.pod" + ], + "doc/html/man7/EVP_MD-SHA1.html" => [ + "doc/man7/EVP_MD-SHA1.pod" + ], + "doc/html/man7/EVP_MD-SHA2.html" => [ + "doc/man7/EVP_MD-SHA2.pod" + ], + "doc/html/man7/EVP_MD-SHA3.html" => [ + "doc/man7/EVP_MD-SHA3.pod" + ], + "doc/html/man7/EVP_MD-SHAKE.html" => [ + "doc/man7/EVP_MD-SHAKE.pod" + ], + "doc/html/man7/EVP_MD-SM3.html" => [ + "doc/man7/EVP_MD-SM3.pod" + ], + "doc/html/man7/EVP_MD-WHIRLPOOL.html" => [ + "doc/man7/EVP_MD-WHIRLPOOL.pod" + ], + "doc/html/man7/EVP_MD-common.html" => [ + "doc/man7/EVP_MD-common.pod" + ], + "doc/html/man7/EVP_PKEY-DH.html" => [ + "doc/man7/EVP_PKEY-DH.pod" + ], + "doc/html/man7/EVP_PKEY-DSA.html" => [ + "doc/man7/EVP_PKEY-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-EC.html" => [ + "doc/man7/EVP_PKEY-EC.pod" + ], + "doc/html/man7/EVP_PKEY-FFC.html" => [ + "doc/man7/EVP_PKEY-FFC.pod" + ], + "doc/html/man7/EVP_PKEY-HMAC.html" => [ + "doc/man7/EVP_PKEY-HMAC.pod" + ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], + "doc/html/man7/EVP_PKEY-RSA.html" => [ + "doc/man7/EVP_PKEY-RSA.pod" + ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-SM2.html" => [ + "doc/man7/EVP_PKEY-SM2.pod" + ], + "doc/html/man7/EVP_PKEY-X25519.html" => [ + "doc/man7/EVP_PKEY-X25519.pod" + ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], + "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ + "doc/man7/EVP_RAND-CTR-DRBG.pod" + ], + "doc/html/man7/EVP_RAND-HASH-DRBG.html" => [ + "doc/man7/EVP_RAND-HASH-DRBG.pod" + ], + "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ + "doc/man7/EVP_RAND-HMAC-DRBG.pod" + ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], + "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ + "doc/man7/EVP_RAND-SEED-SRC.pod" + ], + "doc/html/man7/EVP_RAND-TEST-RAND.html" => [ + "doc/man7/EVP_RAND-TEST-RAND.pod" + ], + "doc/html/man7/EVP_RAND.html" => [ + "doc/man7/EVP_RAND.pod" + ], + "doc/html/man7/EVP_SIGNATURE-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-DSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-ECDSA.html" => [ + "doc/man7/EVP_SIGNATURE-ECDSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-ED25519.html" => [ + "doc/man7/EVP_SIGNATURE-ED25519.pod" + ], + "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ + "doc/man7/EVP_SIGNATURE-HMAC.pod" + ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ + "doc/man7/EVP_SIGNATURE-RSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], + "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ + "doc/man7/OSSL_PROVIDER-FIPS.pod" + ], + "doc/html/man7/OSSL_PROVIDER-base.html" => [ + "doc/man7/OSSL_PROVIDER-base.pod" + ], + "doc/html/man7/OSSL_PROVIDER-default.html" => [ + "doc/man7/OSSL_PROVIDER-default.pod" + ], + "doc/html/man7/OSSL_PROVIDER-legacy.html" => [ + "doc/man7/OSSL_PROVIDER-legacy.pod" + ], + "doc/html/man7/OSSL_PROVIDER-null.html" => [ + "doc/man7/OSSL_PROVIDER-null.pod" + ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], + "doc/html/man7/RAND.html" => [ + "doc/man7/RAND.pod" + ], + "doc/html/man7/RSA-PSS.html" => [ + "doc/man7/RSA-PSS.pod" + ], + "doc/html/man7/X25519.html" => [ + "doc/man7/X25519.pod" + ], + "doc/html/man7/bio.html" => [ + "doc/man7/bio.pod" + ], + "doc/html/man7/ct.html" => [ + "doc/man7/ct.pod" + ], + "doc/html/man7/des_modes.html" => [ + "doc/man7/des_modes.pod" + ], + "doc/html/man7/evp.html" => [ + "doc/man7/evp.pod" + ], + "doc/html/man7/fips_module.html" => [ + "doc/man7/fips_module.pod" + ], + "doc/html/man7/life_cycle-cipher.html" => [ + "doc/man7/life_cycle-cipher.pod" + ], + "doc/html/man7/life_cycle-digest.html" => [ + "doc/man7/life_cycle-digest.pod" + ], + "doc/html/man7/life_cycle-kdf.html" => [ + "doc/man7/life_cycle-kdf.pod" + ], + "doc/html/man7/life_cycle-mac.html" => [ + "doc/man7/life_cycle-mac.pod" + ], + "doc/html/man7/life_cycle-pkey.html" => [ + "doc/man7/life_cycle-pkey.pod" + ], + "doc/html/man7/life_cycle-rand.html" => [ + "doc/man7/life_cycle-rand.pod" + ], + "doc/html/man7/openssl-core.h.html" => [ + "doc/man7/openssl-core.h.pod" + ], + "doc/html/man7/openssl-core_dispatch.h.html" => [ + "doc/man7/openssl-core_dispatch.h.pod" + ], + "doc/html/man7/openssl-core_names.h.html" => [ + "doc/man7/openssl-core_names.h.pod" + ], + "doc/html/man7/openssl-env.html" => [ + "doc/man7/openssl-env.pod" + ], + "doc/html/man7/openssl-glossary.html" => [ + "doc/man7/openssl-glossary.pod" + ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], + "doc/html/man7/openssl-threads.html" => [ + "doc/man7/openssl-threads.pod" + ], + "doc/html/man7/openssl_user_macros.html" => [ + "doc/man7/openssl_user_macros.pod" + ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], + "doc/html/man7/ossl_store-file.html" => [ + "doc/man7/ossl_store-file.pod" + ], + "doc/html/man7/ossl_store.html" => [ + "doc/man7/ossl_store.pod" + ], + "doc/html/man7/passphrase-encoding.html" => [ + "doc/man7/passphrase-encoding.pod" + ], + "doc/html/man7/property.html" => [ + "doc/man7/property.pod" + ], + "doc/html/man7/provider-asym_cipher.html" => [ + "doc/man7/provider-asym_cipher.pod" + ], + "doc/html/man7/provider-base.html" => [ + "doc/man7/provider-base.pod" + ], + "doc/html/man7/provider-cipher.html" => [ + "doc/man7/provider-cipher.pod" + ], + "doc/html/man7/provider-decoder.html" => [ + "doc/man7/provider-decoder.pod" + ], + "doc/html/man7/provider-digest.html" => [ + "doc/man7/provider-digest.pod" + ], + "doc/html/man7/provider-encoder.html" => [ + "doc/man7/provider-encoder.pod" + ], + "doc/html/man7/provider-kdf.html" => [ + "doc/man7/provider-kdf.pod" + ], + "doc/html/man7/provider-kem.html" => [ + "doc/man7/provider-kem.pod" + ], + "doc/html/man7/provider-keyexch.html" => [ + "doc/man7/provider-keyexch.pod" + ], + "doc/html/man7/provider-keymgmt.html" => [ + "doc/man7/provider-keymgmt.pod" + ], + "doc/html/man7/provider-mac.html" => [ + "doc/man7/provider-mac.pod" + ], + "doc/html/man7/provider-object.html" => [ + "doc/man7/provider-object.pod" + ], + "doc/html/man7/provider-rand.html" => [ + "doc/man7/provider-rand.pod" + ], + "doc/html/man7/provider-signature.html" => [ + "doc/man7/provider-signature.pod" + ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], + "doc/html/man7/provider-storemgmt.html" => [ + "doc/man7/provider-storemgmt.pod" + ], + "doc/html/man7/provider.html" => [ + "doc/man7/provider.pod" + ], + "doc/html/man7/proxy-certificates.html" => [ + "doc/man7/proxy-certificates.pod" + ], + "doc/html/man7/x509.html" => [ + "doc/man7/x509.pod" + ], + "doc/man/man1/CA.pl.1" => [ + "doc/man1/CA.pl.pod" + ], + "doc/man/man1/openssl-asn1parse.1" => [ + "doc/man1/openssl-asn1parse.pod" + ], + "doc/man/man1/openssl-ca.1" => [ + "doc/man1/openssl-ca.pod" + ], + "doc/man/man1/openssl-ciphers.1" => [ + "doc/man1/openssl-ciphers.pod" + ], + "doc/man/man1/openssl-cmds.1" => [ + "doc/man1/openssl-cmds.pod" + ], + "doc/man/man1/openssl-cmp.1" => [ + "doc/man1/openssl-cmp.pod" + ], + "doc/man/man1/openssl-cms.1" => [ + "doc/man1/openssl-cms.pod" + ], + "doc/man/man1/openssl-crl.1" => [ + "doc/man1/openssl-crl.pod" + ], + "doc/man/man1/openssl-crl2pkcs7.1" => [ + "doc/man1/openssl-crl2pkcs7.pod" + ], + "doc/man/man1/openssl-dgst.1" => [ + "doc/man1/openssl-dgst.pod" + ], + "doc/man/man1/openssl-dhparam.1" => [ + "doc/man1/openssl-dhparam.pod" + ], + "doc/man/man1/openssl-dsa.1" => [ + "doc/man1/openssl-dsa.pod" + ], + "doc/man/man1/openssl-dsaparam.1" => [ + "doc/man1/openssl-dsaparam.pod" + ], + "doc/man/man1/openssl-ec.1" => [ + "doc/man1/openssl-ec.pod" + ], + "doc/man/man1/openssl-ecparam.1" => [ + "doc/man1/openssl-ecparam.pod" + ], + "doc/man/man1/openssl-enc.1" => [ + "doc/man1/openssl-enc.pod" + ], + "doc/man/man1/openssl-engine.1" => [ + "doc/man1/openssl-engine.pod" + ], + "doc/man/man1/openssl-errstr.1" => [ + "doc/man1/openssl-errstr.pod" + ], + "doc/man/man1/openssl-fipsinstall.1" => [ + "doc/man1/openssl-fipsinstall.pod" + ], + "doc/man/man1/openssl-format-options.1" => [ + "doc/man1/openssl-format-options.pod" + ], + "doc/man/man1/openssl-gendsa.1" => [ + "doc/man1/openssl-gendsa.pod" + ], + "doc/man/man1/openssl-genpkey.1" => [ + "doc/man1/openssl-genpkey.pod" + ], + "doc/man/man1/openssl-genrsa.1" => [ + "doc/man1/openssl-genrsa.pod" + ], + "doc/man/man1/openssl-info.1" => [ + "doc/man1/openssl-info.pod" + ], + "doc/man/man1/openssl-kdf.1" => [ + "doc/man1/openssl-kdf.pod" + ], + "doc/man/man1/openssl-list.1" => [ + "doc/man1/openssl-list.pod" + ], + "doc/man/man1/openssl-mac.1" => [ + "doc/man1/openssl-mac.pod" + ], + "doc/man/man1/openssl-namedisplay-options.1" => [ + "doc/man1/openssl-namedisplay-options.pod" + ], + "doc/man/man1/openssl-nseq.1" => [ + "doc/man1/openssl-nseq.pod" + ], + "doc/man/man1/openssl-ocsp.1" => [ + "doc/man1/openssl-ocsp.pod" + ], + "doc/man/man1/openssl-passphrase-options.1" => [ + "doc/man1/openssl-passphrase-options.pod" + ], + "doc/man/man1/openssl-passwd.1" => [ + "doc/man1/openssl-passwd.pod" + ], + "doc/man/man1/openssl-pkcs12.1" => [ + "doc/man1/openssl-pkcs12.pod" + ], + "doc/man/man1/openssl-pkcs7.1" => [ + "doc/man1/openssl-pkcs7.pod" + ], + "doc/man/man1/openssl-pkcs8.1" => [ + "doc/man1/openssl-pkcs8.pod" + ], + "doc/man/man1/openssl-pkey.1" => [ + "doc/man1/openssl-pkey.pod" + ], + "doc/man/man1/openssl-pkeyparam.1" => [ + "doc/man1/openssl-pkeyparam.pod" + ], + "doc/man/man1/openssl-pkeyutl.1" => [ + "doc/man1/openssl-pkeyutl.pod" + ], + "doc/man/man1/openssl-prime.1" => [ + "doc/man1/openssl-prime.pod" + ], + "doc/man/man1/openssl-rand.1" => [ + "doc/man1/openssl-rand.pod" + ], + "doc/man/man1/openssl-rehash.1" => [ + "doc/man1/openssl-rehash.pod" + ], + "doc/man/man1/openssl-req.1" => [ + "doc/man1/openssl-req.pod" + ], + "doc/man/man1/openssl-rsa.1" => [ + "doc/man1/openssl-rsa.pod" + ], + "doc/man/man1/openssl-rsautl.1" => [ + "doc/man1/openssl-rsautl.pod" + ], + "doc/man/man1/openssl-s_client.1" => [ + "doc/man1/openssl-s_client.pod" + ], + "doc/man/man1/openssl-s_server.1" => [ + "doc/man1/openssl-s_server.pod" + ], + "doc/man/man1/openssl-s_time.1" => [ + "doc/man1/openssl-s_time.pod" + ], + "doc/man/man1/openssl-sess_id.1" => [ + "doc/man1/openssl-sess_id.pod" + ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], + "doc/man/man1/openssl-smime.1" => [ + "doc/man1/openssl-smime.pod" + ], + "doc/man/man1/openssl-speed.1" => [ + "doc/man1/openssl-speed.pod" + ], + "doc/man/man1/openssl-spkac.1" => [ + "doc/man1/openssl-spkac.pod" + ], + "doc/man/man1/openssl-srp.1" => [ + "doc/man1/openssl-srp.pod" + ], + "doc/man/man1/openssl-storeutl.1" => [ + "doc/man1/openssl-storeutl.pod" + ], + "doc/man/man1/openssl-ts.1" => [ + "doc/man1/openssl-ts.pod" + ], + "doc/man/man1/openssl-verification-options.1" => [ + "doc/man1/openssl-verification-options.pod" + ], + "doc/man/man1/openssl-verify.1" => [ + "doc/man1/openssl-verify.pod" + ], + "doc/man/man1/openssl-version.1" => [ + "doc/man1/openssl-version.pod" + ], + "doc/man/man1/openssl-x509.1" => [ + "doc/man1/openssl-x509.pod" + ], + "doc/man/man1/openssl.1" => [ + "doc/man1/openssl.pod" + ], + "doc/man/man1/tsget.1" => [ + "doc/man1/tsget.pod" + ], + "doc/man/man3/ADMISSIONS.3" => [ + "doc/man3/ADMISSIONS.pod" + ], + "doc/man/man3/ASN1_EXTERN_FUNCS.3" => [ + "doc/man3/ASN1_EXTERN_FUNCS.pod" + ], + "doc/man/man3/ASN1_INTEGER_get_int64.3" => [ + "doc/man3/ASN1_INTEGER_get_int64.pod" + ], + "doc/man/man3/ASN1_INTEGER_new.3" => [ + "doc/man3/ASN1_INTEGER_new.pod" + ], + "doc/man/man3/ASN1_ITEM_lookup.3" => [ + "doc/man3/ASN1_ITEM_lookup.pod" + ], + "doc/man/man3/ASN1_OBJECT_new.3" => [ + "doc/man3/ASN1_OBJECT_new.pod" + ], + "doc/man/man3/ASN1_STRING_TABLE_add.3" => [ + "doc/man3/ASN1_STRING_TABLE_add.pod" + ], + "doc/man/man3/ASN1_STRING_length.3" => [ + "doc/man3/ASN1_STRING_length.pod" + ], + "doc/man/man3/ASN1_STRING_new.3" => [ + "doc/man3/ASN1_STRING_new.pod" + ], + "doc/man/man3/ASN1_STRING_print_ex.3" => [ + "doc/man3/ASN1_STRING_print_ex.pod" + ], + "doc/man/man3/ASN1_TIME_set.3" => [ + "doc/man3/ASN1_TIME_set.pod" + ], + "doc/man/man3/ASN1_TYPE_get.3" => [ + "doc/man3/ASN1_TYPE_get.pod" + ], + "doc/man/man3/ASN1_aux_cb.3" => [ + "doc/man3/ASN1_aux_cb.pod" + ], + "doc/man/man3/ASN1_generate_nconf.3" => [ + "doc/man3/ASN1_generate_nconf.pod" + ], + "doc/man/man3/ASN1_item_d2i_bio.3" => [ + "doc/man3/ASN1_item_d2i_bio.pod" + ], + "doc/man/man3/ASN1_item_new.3" => [ + "doc/man3/ASN1_item_new.pod" + ], + "doc/man/man3/ASN1_item_sign.3" => [ + "doc/man3/ASN1_item_sign.pod" + ], + "doc/man/man3/ASYNC_WAIT_CTX_new.3" => [ + "doc/man3/ASYNC_WAIT_CTX_new.pod" + ], + "doc/man/man3/ASYNC_start_job.3" => [ + "doc/man3/ASYNC_start_job.pod" + ], + "doc/man/man3/BF_encrypt.3" => [ + "doc/man3/BF_encrypt.pod" + ], + "doc/man/man3/BIO_ADDR.3" => [ + "doc/man3/BIO_ADDR.pod" + ], + "doc/man/man3/BIO_ADDRINFO.3" => [ + "doc/man3/BIO_ADDRINFO.pod" + ], + "doc/man/man3/BIO_connect.3" => [ + "doc/man3/BIO_connect.pod" + ], + "doc/man/man3/BIO_ctrl.3" => [ + "doc/man3/BIO_ctrl.pod" + ], + "doc/man/man3/BIO_f_base64.3" => [ + "doc/man3/BIO_f_base64.pod" + ], + "doc/man/man3/BIO_f_buffer.3" => [ + "doc/man3/BIO_f_buffer.pod" + ], + "doc/man/man3/BIO_f_cipher.3" => [ + "doc/man3/BIO_f_cipher.pod" + ], + "doc/man/man3/BIO_f_md.3" => [ + "doc/man3/BIO_f_md.pod" + ], + "doc/man/man3/BIO_f_null.3" => [ + "doc/man3/BIO_f_null.pod" + ], + "doc/man/man3/BIO_f_prefix.3" => [ + "doc/man3/BIO_f_prefix.pod" + ], + "doc/man/man3/BIO_f_readbuffer.3" => [ + "doc/man3/BIO_f_readbuffer.pod" + ], + "doc/man/man3/BIO_f_ssl.3" => [ + "doc/man3/BIO_f_ssl.pod" + ], + "doc/man/man3/BIO_find_type.3" => [ + "doc/man3/BIO_find_type.pod" + ], + "doc/man/man3/BIO_get_data.3" => [ + "doc/man3/BIO_get_data.pod" + ], + "doc/man/man3/BIO_get_ex_new_index.3" => [ + "doc/man3/BIO_get_ex_new_index.pod" + ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], + "doc/man/man3/BIO_meth_new.3" => [ + "doc/man3/BIO_meth_new.pod" + ], + "doc/man/man3/BIO_new.3" => [ + "doc/man3/BIO_new.pod" + ], + "doc/man/man3/BIO_new_CMS.3" => [ + "doc/man3/BIO_new_CMS.pod" + ], + "doc/man/man3/BIO_parse_hostserv.3" => [ + "doc/man3/BIO_parse_hostserv.pod" + ], + "doc/man/man3/BIO_printf.3" => [ + "doc/man3/BIO_printf.pod" + ], + "doc/man/man3/BIO_push.3" => [ + "doc/man3/BIO_push.pod" + ], + "doc/man/man3/BIO_read.3" => [ + "doc/man3/BIO_read.pod" + ], + "doc/man/man3/BIO_s_accept.3" => [ + "doc/man3/BIO_s_accept.pod" + ], + "doc/man/man3/BIO_s_bio.3" => [ + "doc/man3/BIO_s_bio.pod" + ], + "doc/man/man3/BIO_s_connect.3" => [ + "doc/man3/BIO_s_connect.pod" + ], + "doc/man/man3/BIO_s_core.3" => [ + "doc/man3/BIO_s_core.pod" + ], + "doc/man/man3/BIO_s_datagram.3" => [ + "doc/man3/BIO_s_datagram.pod" + ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], + "doc/man/man3/BIO_s_fd.3" => [ + "doc/man3/BIO_s_fd.pod" + ], + "doc/man/man3/BIO_s_file.3" => [ + "doc/man3/BIO_s_file.pod" + ], + "doc/man/man3/BIO_s_mem.3" => [ + "doc/man3/BIO_s_mem.pod" + ], + "doc/man/man3/BIO_s_null.3" => [ + "doc/man3/BIO_s_null.pod" + ], + "doc/man/man3/BIO_s_socket.3" => [ + "doc/man3/BIO_s_socket.pod" + ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], + "doc/man/man3/BIO_set_callback.3" => [ + "doc/man3/BIO_set_callback.pod" + ], + "doc/man/man3/BIO_set_flags.3" => [ + "doc/man3/BIO_set_flags.pod" + ], + "doc/man/man3/BIO_should_retry.3" => [ + "doc/man3/BIO_should_retry.pod" + ], + "doc/man/man3/BIO_socket_wait.3" => [ + "doc/man3/BIO_socket_wait.pod" + ], + "doc/man/man3/BN_BLINDING_new.3" => [ + "doc/man3/BN_BLINDING_new.pod" + ], + "doc/man/man3/BN_CTX_new.3" => [ + "doc/man3/BN_CTX_new.pod" + ], + "doc/man/man3/BN_CTX_start.3" => [ + "doc/man3/BN_CTX_start.pod" + ], + "doc/man/man3/BN_add.3" => [ + "doc/man3/BN_add.pod" + ], + "doc/man/man3/BN_add_word.3" => [ + "doc/man3/BN_add_word.pod" + ], + "doc/man/man3/BN_bn2bin.3" => [ + "doc/man3/BN_bn2bin.pod" + ], + "doc/man/man3/BN_cmp.3" => [ + "doc/man3/BN_cmp.pod" + ], + "doc/man/man3/BN_copy.3" => [ + "doc/man3/BN_copy.pod" + ], + "doc/man/man3/BN_generate_prime.3" => [ + "doc/man3/BN_generate_prime.pod" + ], + "doc/man/man3/BN_mod_exp_mont.3" => [ + "doc/man3/BN_mod_exp_mont.pod" + ], + "doc/man/man3/BN_mod_inverse.3" => [ + "doc/man3/BN_mod_inverse.pod" + ], + "doc/man/man3/BN_mod_mul_montgomery.3" => [ + "doc/man3/BN_mod_mul_montgomery.pod" + ], + "doc/man/man3/BN_mod_mul_reciprocal.3" => [ + "doc/man3/BN_mod_mul_reciprocal.pod" + ], + "doc/man/man3/BN_new.3" => [ + "doc/man3/BN_new.pod" + ], + "doc/man/man3/BN_num_bytes.3" => [ + "doc/man3/BN_num_bytes.pod" + ], + "doc/man/man3/BN_rand.3" => [ + "doc/man3/BN_rand.pod" + ], + "doc/man/man3/BN_security_bits.3" => [ + "doc/man3/BN_security_bits.pod" + ], + "doc/man/man3/BN_set_bit.3" => [ + "doc/man3/BN_set_bit.pod" + ], + "doc/man/man3/BN_swap.3" => [ + "doc/man3/BN_swap.pod" + ], + "doc/man/man3/BN_zero.3" => [ + "doc/man3/BN_zero.pod" + ], + "doc/man/man3/BUF_MEM_new.3" => [ + "doc/man3/BUF_MEM_new.pod" + ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], + "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ + "doc/man3/CMS_EncryptedData_decrypt.pod" + ], + "doc/man/man3/CMS_EncryptedData_encrypt.3" => [ + "doc/man3/CMS_EncryptedData_encrypt.pod" + ], + "doc/man/man3/CMS_EncryptedData_set1_key.3" => [ + "doc/man3/CMS_EncryptedData_set1_key.pod" + ], + "doc/man/man3/CMS_EnvelopedData_create.3" => [ + "doc/man3/CMS_EnvelopedData_create.pod" + ], + "doc/man/man3/CMS_add0_cert.3" => [ + "doc/man3/CMS_add0_cert.pod" + ], + "doc/man/man3/CMS_add1_recipient_cert.3" => [ + "doc/man3/CMS_add1_recipient_cert.pod" + ], + "doc/man/man3/CMS_add1_signer.3" => [ + "doc/man3/CMS_add1_signer.pod" + ], + "doc/man/man3/CMS_compress.3" => [ + "doc/man3/CMS_compress.pod" + ], + "doc/man/man3/CMS_data_create.3" => [ + "doc/man3/CMS_data_create.pod" + ], + "doc/man/man3/CMS_decrypt.3" => [ + "doc/man3/CMS_decrypt.pod" + ], + "doc/man/man3/CMS_digest_create.3" => [ + "doc/man3/CMS_digest_create.pod" + ], + "doc/man/man3/CMS_encrypt.3" => [ + "doc/man3/CMS_encrypt.pod" + ], + "doc/man/man3/CMS_final.3" => [ + "doc/man3/CMS_final.pod" + ], + "doc/man/man3/CMS_get0_RecipientInfos.3" => [ + "doc/man3/CMS_get0_RecipientInfos.pod" + ], + "doc/man/man3/CMS_get0_SignerInfos.3" => [ + "doc/man3/CMS_get0_SignerInfos.pod" + ], + "doc/man/man3/CMS_get0_type.3" => [ + "doc/man3/CMS_get0_type.pod" + ], + "doc/man/man3/CMS_get1_ReceiptRequest.3" => [ + "doc/man3/CMS_get1_ReceiptRequest.pod" + ], + "doc/man/man3/CMS_sign.3" => [ + "doc/man3/CMS_sign.pod" + ], + "doc/man/man3/CMS_sign_receipt.3" => [ + "doc/man3/CMS_sign_receipt.pod" + ], + "doc/man/man3/CMS_signed_get_attr.3" => [ + "doc/man3/CMS_signed_get_attr.pod" + ], + "doc/man/man3/CMS_uncompress.3" => [ + "doc/man3/CMS_uncompress.pod" + ], + "doc/man/man3/CMS_verify.3" => [ + "doc/man3/CMS_verify.pod" + ], + "doc/man/man3/CMS_verify_receipt.3" => [ + "doc/man3/CMS_verify_receipt.pod" + ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], + "doc/man/man3/CONF_modules_free.3" => [ + "doc/man3/CONF_modules_free.pod" + ], + "doc/man/man3/CONF_modules_load_file.3" => [ + "doc/man3/CONF_modules_load_file.pod" + ], + "doc/man/man3/CRYPTO_THREAD_run_once.3" => [ + "doc/man3/CRYPTO_THREAD_run_once.pod" + ], + "doc/man/man3/CRYPTO_get_ex_new_index.3" => [ + "doc/man3/CRYPTO_get_ex_new_index.pod" + ], + "doc/man/man3/CRYPTO_memcmp.3" => [ + "doc/man3/CRYPTO_memcmp.pod" + ], + "doc/man/man3/CTLOG_STORE_get0_log_by_id.3" => [ + "doc/man3/CTLOG_STORE_get0_log_by_id.pod" + ], + "doc/man/man3/CTLOG_STORE_new.3" => [ + "doc/man3/CTLOG_STORE_new.pod" + ], + "doc/man/man3/CTLOG_new.3" => [ + "doc/man3/CTLOG_new.pod" + ], + "doc/man/man3/CT_POLICY_EVAL_CTX_new.3" => [ + "doc/man3/CT_POLICY_EVAL_CTX_new.pod" + ], + "doc/man/man3/DEFINE_STACK_OF.3" => [ + "doc/man3/DEFINE_STACK_OF.pod" + ], + "doc/man/man3/DES_random_key.3" => [ + "doc/man3/DES_random_key.pod" + ], + "doc/man/man3/DH_generate_key.3" => [ + "doc/man3/DH_generate_key.pod" + ], + "doc/man/man3/DH_generate_parameters.3" => [ + "doc/man3/DH_generate_parameters.pod" + ], + "doc/man/man3/DH_get0_pqg.3" => [ + "doc/man3/DH_get0_pqg.pod" + ], + "doc/man/man3/DH_get_1024_160.3" => [ + "doc/man3/DH_get_1024_160.pod" + ], + "doc/man/man3/DH_meth_new.3" => [ + "doc/man3/DH_meth_new.pod" + ], + "doc/man/man3/DH_new.3" => [ + "doc/man3/DH_new.pod" + ], + "doc/man/man3/DH_new_by_nid.3" => [ + "doc/man3/DH_new_by_nid.pod" + ], + "doc/man/man3/DH_set_method.3" => [ + "doc/man3/DH_set_method.pod" + ], + "doc/man/man3/DH_size.3" => [ + "doc/man3/DH_size.pod" + ], + "doc/man/man3/DSA_SIG_new.3" => [ + "doc/man3/DSA_SIG_new.pod" + ], + "doc/man/man3/DSA_do_sign.3" => [ + "doc/man3/DSA_do_sign.pod" + ], + "doc/man/man3/DSA_dup_DH.3" => [ + "doc/man3/DSA_dup_DH.pod" + ], + "doc/man/man3/DSA_generate_key.3" => [ + "doc/man3/DSA_generate_key.pod" + ], + "doc/man/man3/DSA_generate_parameters.3" => [ + "doc/man3/DSA_generate_parameters.pod" + ], + "doc/man/man3/DSA_get0_pqg.3" => [ + "doc/man3/DSA_get0_pqg.pod" + ], + "doc/man/man3/DSA_meth_new.3" => [ + "doc/man3/DSA_meth_new.pod" + ], + "doc/man/man3/DSA_new.3" => [ + "doc/man3/DSA_new.pod" + ], + "doc/man/man3/DSA_set_method.3" => [ + "doc/man3/DSA_set_method.pod" + ], + "doc/man/man3/DSA_sign.3" => [ + "doc/man3/DSA_sign.pod" + ], + "doc/man/man3/DSA_size.3" => [ + "doc/man3/DSA_size.pod" + ], + "doc/man/man3/DTLS_get_data_mtu.3" => [ + "doc/man3/DTLS_get_data_mtu.pod" + ], + "doc/man/man3/DTLS_set_timer_cb.3" => [ + "doc/man3/DTLS_set_timer_cb.pod" + ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], + "doc/man/man3/DTLSv1_listen.3" => [ + "doc/man3/DTLSv1_listen.pod" + ], + "doc/man/man3/ECDSA_SIG_new.3" => [ + "doc/man3/ECDSA_SIG_new.pod" + ], + "doc/man/man3/ECDSA_sign.3" => [ + "doc/man3/ECDSA_sign.pod" + ], + "doc/man/man3/ECPKParameters_print.3" => [ + "doc/man3/ECPKParameters_print.pod" + ], + "doc/man/man3/EC_GFp_simple_method.3" => [ + "doc/man3/EC_GFp_simple_method.pod" + ], + "doc/man/man3/EC_GROUP_copy.3" => [ + "doc/man3/EC_GROUP_copy.pod" + ], + "doc/man/man3/EC_GROUP_new.3" => [ + "doc/man3/EC_GROUP_new.pod" + ], + "doc/man/man3/EC_KEY_get_enc_flags.3" => [ + "doc/man3/EC_KEY_get_enc_flags.pod" + ], + "doc/man/man3/EC_KEY_new.3" => [ + "doc/man3/EC_KEY_new.pod" + ], + "doc/man/man3/EC_POINT_add.3" => [ + "doc/man3/EC_POINT_add.pod" + ], + "doc/man/man3/EC_POINT_new.3" => [ + "doc/man3/EC_POINT_new.pod" + ], + "doc/man/man3/ENGINE_add.3" => [ + "doc/man3/ENGINE_add.pod" + ], + "doc/man/man3/ERR_GET_LIB.3" => [ + "doc/man3/ERR_GET_LIB.pod" + ], + "doc/man/man3/ERR_clear_error.3" => [ + "doc/man3/ERR_clear_error.pod" + ], + "doc/man/man3/ERR_error_string.3" => [ + "doc/man3/ERR_error_string.pod" + ], + "doc/man/man3/ERR_get_error.3" => [ + "doc/man3/ERR_get_error.pod" + ], + "doc/man/man3/ERR_load_crypto_strings.3" => [ + "doc/man3/ERR_load_crypto_strings.pod" + ], + "doc/man/man3/ERR_load_strings.3" => [ + "doc/man3/ERR_load_strings.pod" + ], + "doc/man/man3/ERR_new.3" => [ + "doc/man3/ERR_new.pod" + ], + "doc/man/man3/ERR_print_errors.3" => [ + "doc/man3/ERR_print_errors.pod" + ], + "doc/man/man3/ERR_put_error.3" => [ + "doc/man3/ERR_put_error.pod" + ], + "doc/man/man3/ERR_remove_state.3" => [ + "doc/man3/ERR_remove_state.pod" + ], + "doc/man/man3/ERR_set_mark.3" => [ + "doc/man3/ERR_set_mark.pod" + ], + "doc/man/man3/EVP_ASYM_CIPHER_free.3" => [ + "doc/man3/EVP_ASYM_CIPHER_free.pod" + ], + "doc/man/man3/EVP_BytesToKey.3" => [ + "doc/man3/EVP_BytesToKey.pod" + ], + "doc/man/man3/EVP_CIPHER_CTX_get_app_data.3" => [ + "doc/man3/EVP_CIPHER_CTX_get_app_data.pod" + ], + "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3" => [ + "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" + ], + "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3" => [ + "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" + ], + "doc/man/man3/EVP_CIPHER_meth_new.3" => [ + "doc/man3/EVP_CIPHER_meth_new.pod" + ], + "doc/man/man3/EVP_DigestInit.3" => [ + "doc/man3/EVP_DigestInit.pod" + ], + "doc/man/man3/EVP_DigestSignInit.3" => [ + "doc/man3/EVP_DigestSignInit.pod" + ], + "doc/man/man3/EVP_DigestVerifyInit.3" => [ + "doc/man3/EVP_DigestVerifyInit.pod" + ], + "doc/man/man3/EVP_EncodeInit.3" => [ + "doc/man3/EVP_EncodeInit.pod" + ], + "doc/man/man3/EVP_EncryptInit.3" => [ + "doc/man3/EVP_EncryptInit.pod" + ], + "doc/man/man3/EVP_KDF.3" => [ + "doc/man3/EVP_KDF.pod" + ], + "doc/man/man3/EVP_KEM_free.3" => [ + "doc/man3/EVP_KEM_free.pod" + ], + "doc/man/man3/EVP_KEYEXCH_free.3" => [ + "doc/man3/EVP_KEYEXCH_free.pod" + ], + "doc/man/man3/EVP_KEYMGMT.3" => [ + "doc/man3/EVP_KEYMGMT.pod" + ], + "doc/man/man3/EVP_MAC.3" => [ + "doc/man3/EVP_MAC.pod" + ], + "doc/man/man3/EVP_MD_meth_new.3" => [ + "doc/man3/EVP_MD_meth_new.pod" + ], + "doc/man/man3/EVP_OpenInit.3" => [ + "doc/man3/EVP_OpenInit.pod" + ], + "doc/man/man3/EVP_PBE_CipherInit.3" => [ + "doc/man3/EVP_PBE_CipherInit.pod" + ], + "doc/man/man3/EVP_PKEY2PKCS8.3" => [ + "doc/man3/EVP_PKEY2PKCS8.pod" + ], + "doc/man/man3/EVP_PKEY_ASN1_METHOD.3" => [ + "doc/man3/EVP_PKEY_ASN1_METHOD.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_ctrl.3" => [ + "doc/man3/EVP_PKEY_CTX_ctrl.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3" => [ + "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ + "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_new.3" => [ + "doc/man3/EVP_PKEY_CTX_new.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3" => [ + "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3" => [ + "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_params.3" => [ + "doc/man3/EVP_PKEY_CTX_set_params.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3" => [ + "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3" => [ + "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3" => [ + "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" + ], + "doc/man/man3/EVP_PKEY_asn1_get_count.3" => [ + "doc/man3/EVP_PKEY_asn1_get_count.pod" + ], + "doc/man/man3/EVP_PKEY_check.3" => [ + "doc/man3/EVP_PKEY_check.pod" + ], + "doc/man/man3/EVP_PKEY_copy_parameters.3" => [ + "doc/man3/EVP_PKEY_copy_parameters.pod" + ], + "doc/man/man3/EVP_PKEY_decapsulate.3" => [ + "doc/man3/EVP_PKEY_decapsulate.pod" + ], + "doc/man/man3/EVP_PKEY_decrypt.3" => [ + "doc/man3/EVP_PKEY_decrypt.pod" + ], + "doc/man/man3/EVP_PKEY_derive.3" => [ + "doc/man3/EVP_PKEY_derive.pod" + ], + "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3" => [ + "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" + ], + "doc/man/man3/EVP_PKEY_encapsulate.3" => [ + "doc/man3/EVP_PKEY_encapsulate.pod" + ], + "doc/man/man3/EVP_PKEY_encrypt.3" => [ + "doc/man3/EVP_PKEY_encrypt.pod" + ], + "doc/man/man3/EVP_PKEY_fromdata.3" => [ + "doc/man3/EVP_PKEY_fromdata.pod" + ], + "doc/man/man3/EVP_PKEY_get_attr.3" => [ + "doc/man3/EVP_PKEY_get_attr.pod" + ], + "doc/man/man3/EVP_PKEY_get_default_digest_nid.3" => [ + "doc/man3/EVP_PKEY_get_default_digest_nid.pod" + ], + "doc/man/man3/EVP_PKEY_get_field_type.3" => [ + "doc/man3/EVP_PKEY_get_field_type.pod" + ], + "doc/man/man3/EVP_PKEY_get_group_name.3" => [ + "doc/man3/EVP_PKEY_get_group_name.pod" + ], + "doc/man/man3/EVP_PKEY_get_size.3" => [ + "doc/man3/EVP_PKEY_get_size.pod" + ], + "doc/man/man3/EVP_PKEY_gettable_params.3" => [ + "doc/man3/EVP_PKEY_gettable_params.pod" + ], + "doc/man/man3/EVP_PKEY_is_a.3" => [ + "doc/man3/EVP_PKEY_is_a.pod" + ], + "doc/man/man3/EVP_PKEY_keygen.3" => [ + "doc/man3/EVP_PKEY_keygen.pod" + ], + "doc/man/man3/EVP_PKEY_meth_get_count.3" => [ + "doc/man3/EVP_PKEY_meth_get_count.pod" + ], + "doc/man/man3/EVP_PKEY_meth_new.3" => [ + "doc/man3/EVP_PKEY_meth_new.pod" + ], + "doc/man/man3/EVP_PKEY_new.3" => [ + "doc/man3/EVP_PKEY_new.pod" + ], + "doc/man/man3/EVP_PKEY_print_private.3" => [ + "doc/man3/EVP_PKEY_print_private.pod" + ], + "doc/man/man3/EVP_PKEY_set1_RSA.3" => [ + "doc/man3/EVP_PKEY_set1_RSA.pod" + ], + "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3" => [ + "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" + ], + "doc/man/man3/EVP_PKEY_set_type.3" => [ + "doc/man3/EVP_PKEY_set_type.pod" + ], + "doc/man/man3/EVP_PKEY_settable_params.3" => [ + "doc/man3/EVP_PKEY_settable_params.pod" + ], + "doc/man/man3/EVP_PKEY_sign.3" => [ + "doc/man3/EVP_PKEY_sign.pod" + ], + "doc/man/man3/EVP_PKEY_todata.3" => [ + "doc/man3/EVP_PKEY_todata.pod" + ], + "doc/man/man3/EVP_PKEY_verify.3" => [ + "doc/man3/EVP_PKEY_verify.pod" + ], + "doc/man/man3/EVP_PKEY_verify_recover.3" => [ + "doc/man3/EVP_PKEY_verify_recover.pod" + ], + "doc/man/man3/EVP_RAND.3" => [ + "doc/man3/EVP_RAND.pod" + ], + "doc/man/man3/EVP_SIGNATURE.3" => [ + "doc/man3/EVP_SIGNATURE.pod" + ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], + "doc/man/man3/EVP_SealInit.3" => [ + "doc/man3/EVP_SealInit.pod" + ], + "doc/man/man3/EVP_SignInit.3" => [ + "doc/man3/EVP_SignInit.pod" + ], + "doc/man/man3/EVP_VerifyInit.3" => [ + "doc/man3/EVP_VerifyInit.pod" + ], + "doc/man/man3/EVP_aes_128_gcm.3" => [ + "doc/man3/EVP_aes_128_gcm.pod" + ], + "doc/man/man3/EVP_aria_128_gcm.3" => [ + "doc/man3/EVP_aria_128_gcm.pod" + ], + "doc/man/man3/EVP_bf_cbc.3" => [ + "doc/man3/EVP_bf_cbc.pod" + ], + "doc/man/man3/EVP_blake2b512.3" => [ + "doc/man3/EVP_blake2b512.pod" + ], + "doc/man/man3/EVP_camellia_128_ecb.3" => [ + "doc/man3/EVP_camellia_128_ecb.pod" + ], + "doc/man/man3/EVP_cast5_cbc.3" => [ + "doc/man3/EVP_cast5_cbc.pod" + ], + "doc/man/man3/EVP_chacha20.3" => [ + "doc/man3/EVP_chacha20.pod" + ], + "doc/man/man3/EVP_des_cbc.3" => [ + "doc/man3/EVP_des_cbc.pod" + ], + "doc/man/man3/EVP_desx_cbc.3" => [ + "doc/man3/EVP_desx_cbc.pod" + ], + "doc/man/man3/EVP_idea_cbc.3" => [ + "doc/man3/EVP_idea_cbc.pod" + ], + "doc/man/man3/EVP_md2.3" => [ + "doc/man3/EVP_md2.pod" + ], + "doc/man/man3/EVP_md4.3" => [ + "doc/man3/EVP_md4.pod" + ], + "doc/man/man3/EVP_md5.3" => [ + "doc/man3/EVP_md5.pod" + ], + "doc/man/man3/EVP_mdc2.3" => [ + "doc/man3/EVP_mdc2.pod" + ], + "doc/man/man3/EVP_rc2_cbc.3" => [ + "doc/man3/EVP_rc2_cbc.pod" + ], + "doc/man/man3/EVP_rc4.3" => [ + "doc/man3/EVP_rc4.pod" + ], + "doc/man/man3/EVP_rc5_32_12_16_cbc.3" => [ + "doc/man3/EVP_rc5_32_12_16_cbc.pod" + ], + "doc/man/man3/EVP_ripemd160.3" => [ + "doc/man3/EVP_ripemd160.pod" + ], + "doc/man/man3/EVP_seed_cbc.3" => [ + "doc/man3/EVP_seed_cbc.pod" + ], + "doc/man/man3/EVP_set_default_properties.3" => [ + "doc/man3/EVP_set_default_properties.pod" + ], + "doc/man/man3/EVP_sha1.3" => [ + "doc/man3/EVP_sha1.pod" + ], + "doc/man/man3/EVP_sha224.3" => [ + "doc/man3/EVP_sha224.pod" + ], + "doc/man/man3/EVP_sha3_224.3" => [ + "doc/man3/EVP_sha3_224.pod" + ], + "doc/man/man3/EVP_sm3.3" => [ + "doc/man3/EVP_sm3.pod" + ], + "doc/man/man3/EVP_sm4_cbc.3" => [ + "doc/man3/EVP_sm4_cbc.pod" + ], + "doc/man/man3/EVP_whirlpool.3" => [ + "doc/man3/EVP_whirlpool.pod" + ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], + "doc/man/man3/HMAC.3" => [ + "doc/man3/HMAC.pod" + ], + "doc/man/man3/MD5.3" => [ + "doc/man3/MD5.pod" + ], + "doc/man/man3/MDC2_Init.3" => [ + "doc/man3/MDC2_Init.pod" + ], + "doc/man/man3/NCONF_new_ex.3" => [ + "doc/man3/NCONF_new_ex.pod" + ], + "doc/man/man3/OBJ_nid2obj.3" => [ + "doc/man3/OBJ_nid2obj.pod" + ], + "doc/man/man3/OCSP_REQUEST_new.3" => [ + "doc/man3/OCSP_REQUEST_new.pod" + ], + "doc/man/man3/OCSP_cert_to_id.3" => [ + "doc/man3/OCSP_cert_to_id.pod" + ], + "doc/man/man3/OCSP_request_add1_nonce.3" => [ + "doc/man3/OCSP_request_add1_nonce.pod" + ], + "doc/man/man3/OCSP_resp_find_status.3" => [ + "doc/man3/OCSP_resp_find_status.pod" + ], + "doc/man/man3/OCSP_response_status.3" => [ + "doc/man3/OCSP_response_status.pod" + ], + "doc/man/man3/OCSP_sendreq_new.3" => [ + "doc/man3/OCSP_sendreq_new.pod" + ], + "doc/man/man3/OPENSSL_Applink.3" => [ + "doc/man3/OPENSSL_Applink.pod" + ], + "doc/man/man3/OPENSSL_FILE.3" => [ + "doc/man3/OPENSSL_FILE.pod" + ], + "doc/man/man3/OPENSSL_LH_COMPFUNC.3" => [ + "doc/man3/OPENSSL_LH_COMPFUNC.pod" + ], + "doc/man/man3/OPENSSL_LH_stats.3" => [ + "doc/man3/OPENSSL_LH_stats.pod" + ], + "doc/man/man3/OPENSSL_config.3" => [ + "doc/man3/OPENSSL_config.pod" + ], + "doc/man/man3/OPENSSL_fork_prepare.3" => [ + "doc/man3/OPENSSL_fork_prepare.pod" + ], + "doc/man/man3/OPENSSL_gmtime.3" => [ + "doc/man3/OPENSSL_gmtime.pod" + ], + "doc/man/man3/OPENSSL_hexchar2int.3" => [ + "doc/man3/OPENSSL_hexchar2int.pod" + ], + "doc/man/man3/OPENSSL_ia32cap.3" => [ + "doc/man3/OPENSSL_ia32cap.pod" + ], + "doc/man/man3/OPENSSL_init_crypto.3" => [ + "doc/man3/OPENSSL_init_crypto.pod" + ], + "doc/man/man3/OPENSSL_init_ssl.3" => [ + "doc/man3/OPENSSL_init_ssl.pod" + ], + "doc/man/man3/OPENSSL_instrument_bus.3" => [ + "doc/man3/OPENSSL_instrument_bus.pod" + ], + "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ + "doc/man3/OPENSSL_load_builtin_modules.pod" + ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], + "doc/man/man3/OPENSSL_malloc.3" => [ + "doc/man3/OPENSSL_malloc.pod" + ], + "doc/man/man3/OPENSSL_ppccap.3" => [ + "doc/man3/OPENSSL_ppccap.pod" + ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], + "doc/man/man3/OPENSSL_s390xcap.3" => [ + "doc/man3/OPENSSL_s390xcap.pod" + ], + "doc/man/man3/OPENSSL_secure_malloc.3" => [ + "doc/man3/OPENSSL_secure_malloc.pod" + ], + "doc/man/man3/OPENSSL_strcasecmp.3" => [ + "doc/man3/OPENSSL_strcasecmp.pod" + ], + "doc/man/man3/OSSL_ALGORITHM.3" => [ + "doc/man3/OSSL_ALGORITHM.pod" + ], + "doc/man/man3/OSSL_CALLBACK.3" => [ + "doc/man3/OSSL_CALLBACK.pod" + ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], + "doc/man/man3/OSSL_CMP_CTX_new.3" => [ + "doc/man3/OSSL_CMP_CTX_new.pod" + ], + "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ + "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" + ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], + "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ + "doc/man3/OSSL_CMP_ITAV_set0.pod" + ], + "doc/man/man3/OSSL_CMP_MSG_get0_header.3" => [ + "doc/man3/OSSL_CMP_MSG_get0_header.pod" + ], + "doc/man/man3/OSSL_CMP_MSG_http_perform.3" => [ + "doc/man3/OSSL_CMP_MSG_http_perform.pod" + ], + "doc/man/man3/OSSL_CMP_SRV_CTX_new.3" => [ + "doc/man3/OSSL_CMP_SRV_CTX_new.pod" + ], + "doc/man/man3/OSSL_CMP_STATUSINFO_new.3" => [ + "doc/man3/OSSL_CMP_STATUSINFO_new.pod" + ], + "doc/man/man3/OSSL_CMP_exec_certreq.3" => [ + "doc/man3/OSSL_CMP_exec_certreq.pod" + ], + "doc/man/man3/OSSL_CMP_log_open.3" => [ + "doc/man3/OSSL_CMP_log_open.pod" + ], + "doc/man/man3/OSSL_CMP_validate_msg.3" => [ + "doc/man3/OSSL_CMP_validate_msg.pod" + ], + "doc/man/man3/OSSL_CORE_MAKE_FUNC.3" => [ + "doc/man3/OSSL_CORE_MAKE_FUNC.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3" => [ + "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3" => [ + "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" + ], + "doc/man/man3/OSSL_CRMF_pbmp_new.3" => [ + "doc/man3/OSSL_CRMF_pbmp_new.pod" + ], + "doc/man/man3/OSSL_DECODER.3" => [ + "doc/man3/OSSL_DECODER.pod" + ], + "doc/man/man3/OSSL_DECODER_CTX.3" => [ + "doc/man3/OSSL_DECODER_CTX.pod" + ], + "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3" => [ + "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" + ], + "doc/man/man3/OSSL_DECODER_from_bio.3" => [ + "doc/man3/OSSL_DECODER_from_bio.pod" + ], + "doc/man/man3/OSSL_DISPATCH.3" => [ + "doc/man3/OSSL_DISPATCH.pod" + ], + "doc/man/man3/OSSL_ENCODER.3" => [ + "doc/man3/OSSL_ENCODER.pod" + ], + "doc/man/man3/OSSL_ENCODER_CTX.3" => [ + "doc/man3/OSSL_ENCODER_CTX.pod" + ], + "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3" => [ + "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" + ], + "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ + "doc/man3/OSSL_ENCODER_to_bio.pod" + ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], + "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ + "doc/man3/OSSL_ESS_check_signing_certs.pod" + ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], + "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ + "doc/man3/OSSL_HTTP_REQ_CTX.pod" + ], + "doc/man/man3/OSSL_HTTP_parse_url.3" => [ + "doc/man3/OSSL_HTTP_parse_url.pod" + ], + "doc/man/man3/OSSL_HTTP_transfer.3" => [ + "doc/man3/OSSL_HTTP_transfer.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], + "doc/man/man3/OSSL_ITEM.3" => [ + "doc/man3/OSSL_ITEM.pod" + ], + "doc/man/man3/OSSL_LIB_CTX.3" => [ + "doc/man3/OSSL_LIB_CTX.pod" + ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], + "doc/man/man3/OSSL_PARAM.3" => [ + "doc/man3/OSSL_PARAM.pod" + ], + "doc/man/man3/OSSL_PARAM_BLD.3" => [ + "doc/man3/OSSL_PARAM_BLD.pod" + ], + "doc/man/man3/OSSL_PARAM_allocate_from_text.3" => [ + "doc/man3/OSSL_PARAM_allocate_from_text.pod" + ], + "doc/man/man3/OSSL_PARAM_dup.3" => [ + "doc/man3/OSSL_PARAM_dup.pod" + ], + "doc/man/man3/OSSL_PARAM_int.3" => [ + "doc/man3/OSSL_PARAM_int.pod" + ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], + "doc/man/man3/OSSL_PROVIDER.3" => [ + "doc/man3/OSSL_PROVIDER.pod" + ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], + "doc/man/man3/OSSL_SELF_TEST_new.3" => [ + "doc/man3/OSSL_SELF_TEST_new.pod" + ], + "doc/man/man3/OSSL_SELF_TEST_set_callback.3" => [ + "doc/man3/OSSL_SELF_TEST_set_callback.pod" + ], + "doc/man/man3/OSSL_STORE_INFO.3" => [ + "doc/man3/OSSL_STORE_INFO.pod" + ], + "doc/man/man3/OSSL_STORE_LOADER.3" => [ + "doc/man3/OSSL_STORE_LOADER.pod" + ], + "doc/man/man3/OSSL_STORE_SEARCH.3" => [ + "doc/man3/OSSL_STORE_SEARCH.pod" + ], + "doc/man/man3/OSSL_STORE_attach.3" => [ + "doc/man3/OSSL_STORE_attach.pod" + ], + "doc/man/man3/OSSL_STORE_expect.3" => [ + "doc/man3/OSSL_STORE_expect.pod" + ], + "doc/man/man3/OSSL_STORE_open.3" => [ + "doc/man3/OSSL_STORE_open.pod" + ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], + "doc/man/man3/OSSL_trace_enabled.3" => [ + "doc/man3/OSSL_trace_enabled.pod" + ], + "doc/man/man3/OSSL_trace_get_category_num.3" => [ + "doc/man3/OSSL_trace_get_category_num.pod" + ], + "doc/man/man3/OSSL_trace_set_channel.3" => [ + "doc/man3/OSSL_trace_set_channel.pod" + ], + "doc/man/man3/OpenSSL_add_all_algorithms.3" => [ + "doc/man3/OpenSSL_add_all_algorithms.pod" + ], + "doc/man/man3/OpenSSL_version.3" => [ + "doc/man3/OpenSSL_version.pod" + ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], + "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ + "doc/man3/PEM_X509_INFO_read_bio_ex.pod" + ], + "doc/man/man3/PEM_bytes_read_bio.3" => [ + "doc/man3/PEM_bytes_read_bio.pod" + ], + "doc/man/man3/PEM_read.3" => [ + "doc/man3/PEM_read.pod" + ], + "doc/man/man3/PEM_read_CMS.3" => [ + "doc/man3/PEM_read_CMS.pod" + ], + "doc/man/man3/PEM_read_bio_PrivateKey.3" => [ + "doc/man3/PEM_read_bio_PrivateKey.pod" + ], + "doc/man/man3/PEM_read_bio_ex.3" => [ + "doc/man3/PEM_read_bio_ex.pod" + ], + "doc/man/man3/PEM_write_bio_CMS_stream.3" => [ + "doc/man3/PEM_write_bio_CMS_stream.pod" + ], + "doc/man/man3/PEM_write_bio_PKCS7_stream.3" => [ + "doc/man3/PEM_write_bio_PKCS7_stream.pod" + ], + "doc/man/man3/PKCS12_PBE_keyivgen.3" => [ + "doc/man3/PKCS12_PBE_keyivgen.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_create_cert.3" => [ + "doc/man3/PKCS12_SAFEBAG_create_cert.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ + "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], + "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ + "doc/man3/PKCS12_add1_attr_by_NID.pod" + ], + "doc/man/man3/PKCS12_add_CSPName_asc.3" => [ + "doc/man3/PKCS12_add_CSPName_asc.pod" + ], + "doc/man/man3/PKCS12_add_cert.3" => [ + "doc/man3/PKCS12_add_cert.pod" + ], + "doc/man/man3/PKCS12_add_friendlyname_asc.3" => [ + "doc/man3/PKCS12_add_friendlyname_asc.pod" + ], + "doc/man/man3/PKCS12_add_localkeyid.3" => [ + "doc/man3/PKCS12_add_localkeyid.pod" + ], + "doc/man/man3/PKCS12_add_safe.3" => [ + "doc/man3/PKCS12_add_safe.pod" + ], + "doc/man/man3/PKCS12_create.3" => [ + "doc/man3/PKCS12_create.pod" + ], + "doc/man/man3/PKCS12_decrypt_skey.3" => [ + "doc/man3/PKCS12_decrypt_skey.pod" + ], + "doc/man/man3/PKCS12_gen_mac.3" => [ + "doc/man3/PKCS12_gen_mac.pod" + ], + "doc/man/man3/PKCS12_get_friendlyname.3" => [ + "doc/man3/PKCS12_get_friendlyname.pod" + ], + "doc/man/man3/PKCS12_init.3" => [ + "doc/man3/PKCS12_init.pod" + ], + "doc/man/man3/PKCS12_item_decrypt_d2i.3" => [ + "doc/man3/PKCS12_item_decrypt_d2i.pod" + ], + "doc/man/man3/PKCS12_key_gen_utf8_ex.3" => [ + "doc/man3/PKCS12_key_gen_utf8_ex.pod" + ], + "doc/man/man3/PKCS12_newpass.3" => [ + "doc/man3/PKCS12_newpass.pod" + ], + "doc/man/man3/PKCS12_pack_p7encdata.3" => [ + "doc/man3/PKCS12_pack_p7encdata.pod" + ], + "doc/man/man3/PKCS12_parse.3" => [ + "doc/man3/PKCS12_parse.pod" + ], + "doc/man/man3/PKCS5_PBE_keyivgen.3" => [ + "doc/man3/PKCS5_PBE_keyivgen.pod" + ], + "doc/man/man3/PKCS5_PBKDF2_HMAC.3" => [ + "doc/man3/PKCS5_PBKDF2_HMAC.pod" + ], + "doc/man/man3/PKCS7_decrypt.3" => [ + "doc/man3/PKCS7_decrypt.pod" + ], + "doc/man/man3/PKCS7_encrypt.3" => [ + "doc/man3/PKCS7_encrypt.pod" + ], + "doc/man/man3/PKCS7_get_octet_string.3" => [ + "doc/man3/PKCS7_get_octet_string.pod" + ], + "doc/man/man3/PKCS7_sign.3" => [ + "doc/man3/PKCS7_sign.pod" + ], + "doc/man/man3/PKCS7_sign_add_signer.3" => [ + "doc/man3/PKCS7_sign_add_signer.pod" + ], + "doc/man/man3/PKCS7_type_is_other.3" => [ + "doc/man3/PKCS7_type_is_other.pod" + ], + "doc/man/man3/PKCS7_verify.3" => [ + "doc/man3/PKCS7_verify.pod" + ], + "doc/man/man3/PKCS8_encrypt.3" => [ + "doc/man3/PKCS8_encrypt.pod" + ], + "doc/man/man3/PKCS8_pkey_add1_attr.3" => [ + "doc/man3/PKCS8_pkey_add1_attr.pod" + ], + "doc/man/man3/RAND_add.3" => [ + "doc/man3/RAND_add.pod" + ], + "doc/man/man3/RAND_bytes.3" => [ + "doc/man3/RAND_bytes.pod" + ], + "doc/man/man3/RAND_cleanup.3" => [ + "doc/man3/RAND_cleanup.pod" + ], + "doc/man/man3/RAND_egd.3" => [ + "doc/man3/RAND_egd.pod" + ], + "doc/man/man3/RAND_get0_primary.3" => [ + "doc/man3/RAND_get0_primary.pod" + ], + "doc/man/man3/RAND_load_file.3" => [ + "doc/man3/RAND_load_file.pod" + ], + "doc/man/man3/RAND_set_DRBG_type.3" => [ + "doc/man3/RAND_set_DRBG_type.pod" + ], + "doc/man/man3/RAND_set_rand_method.3" => [ + "doc/man3/RAND_set_rand_method.pod" + ], + "doc/man/man3/RC4_set_key.3" => [ + "doc/man3/RC4_set_key.pod" + ], + "doc/man/man3/RIPEMD160_Init.3" => [ + "doc/man3/RIPEMD160_Init.pod" + ], + "doc/man/man3/RSA_blinding_on.3" => [ + "doc/man3/RSA_blinding_on.pod" + ], + "doc/man/man3/RSA_check_key.3" => [ + "doc/man3/RSA_check_key.pod" + ], + "doc/man/man3/RSA_generate_key.3" => [ + "doc/man3/RSA_generate_key.pod" + ], + "doc/man/man3/RSA_get0_key.3" => [ + "doc/man3/RSA_get0_key.pod" + ], + "doc/man/man3/RSA_meth_new.3" => [ + "doc/man3/RSA_meth_new.pod" + ], + "doc/man/man3/RSA_new.3" => [ + "doc/man3/RSA_new.pod" + ], + "doc/man/man3/RSA_padding_add_PKCS1_type_1.3" => [ + "doc/man3/RSA_padding_add_PKCS1_type_1.pod" + ], + "doc/man/man3/RSA_print.3" => [ + "doc/man3/RSA_print.pod" + ], + "doc/man/man3/RSA_private_encrypt.3" => [ + "doc/man3/RSA_private_encrypt.pod" + ], + "doc/man/man3/RSA_public_encrypt.3" => [ + "doc/man3/RSA_public_encrypt.pod" + ], + "doc/man/man3/RSA_set_method.3" => [ + "doc/man3/RSA_set_method.pod" + ], + "doc/man/man3/RSA_sign.3" => [ + "doc/man3/RSA_sign.pod" + ], + "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3" => [ + "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" + ], + "doc/man/man3/RSA_size.3" => [ + "doc/man3/RSA_size.pod" + ], + "doc/man/man3/SCT_new.3" => [ + "doc/man3/SCT_new.pod" + ], + "doc/man/man3/SCT_print.3" => [ + "doc/man3/SCT_print.pod" + ], + "doc/man/man3/SCT_validate.3" => [ + "doc/man3/SCT_validate.pod" + ], + "doc/man/man3/SHA256_Init.3" => [ + "doc/man3/SHA256_Init.pod" + ], + "doc/man/man3/SMIME_read_ASN1.3" => [ + "doc/man3/SMIME_read_ASN1.pod" + ], + "doc/man/man3/SMIME_read_CMS.3" => [ + "doc/man3/SMIME_read_CMS.pod" + ], + "doc/man/man3/SMIME_read_PKCS7.3" => [ + "doc/man3/SMIME_read_PKCS7.pod" + ], + "doc/man/man3/SMIME_write_ASN1.3" => [ + "doc/man3/SMIME_write_ASN1.pod" + ], + "doc/man/man3/SMIME_write_CMS.3" => [ + "doc/man3/SMIME_write_CMS.pod" + ], + "doc/man/man3/SMIME_write_PKCS7.3" => [ + "doc/man3/SMIME_write_PKCS7.pod" + ], + "doc/man/man3/SRP_Calc_B.3" => [ + "doc/man3/SRP_Calc_B.pod" + ], + "doc/man/man3/SRP_VBASE_new.3" => [ + "doc/man3/SRP_VBASE_new.pod" + ], + "doc/man/man3/SRP_create_verifier.3" => [ + "doc/man3/SRP_create_verifier.pod" + ], + "doc/man/man3/SRP_user_pwd_new.3" => [ + "doc/man3/SRP_user_pwd_new.pod" + ], + "doc/man/man3/SSL_CIPHER_get_name.3" => [ + "doc/man3/SSL_CIPHER_get_name.pod" + ], + "doc/man/man3/SSL_COMP_add_compression_method.3" => [ + "doc/man3/SSL_COMP_add_compression_method.pod" + ], + "doc/man/man3/SSL_CONF_CTX_new.3" => [ + "doc/man3/SSL_CONF_CTX_new.pod" + ], + "doc/man/man3/SSL_CONF_CTX_set1_prefix.3" => [ + "doc/man3/SSL_CONF_CTX_set1_prefix.pod" + ], + "doc/man/man3/SSL_CONF_CTX_set_flags.3" => [ + "doc/man3/SSL_CONF_CTX_set_flags.pod" + ], + "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3" => [ + "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" + ], + "doc/man/man3/SSL_CONF_cmd.3" => [ + "doc/man3/SSL_CONF_cmd.pod" + ], + "doc/man/man3/SSL_CONF_cmd_argv.3" => [ + "doc/man3/SSL_CONF_cmd_argv.pod" + ], + "doc/man/man3/SSL_CTX_add1_chain_cert.3" => [ + "doc/man3/SSL_CTX_add1_chain_cert.pod" + ], + "doc/man/man3/SSL_CTX_add_extra_chain_cert.3" => [ + "doc/man3/SSL_CTX_add_extra_chain_cert.pod" + ], + "doc/man/man3/SSL_CTX_add_session.3" => [ + "doc/man3/SSL_CTX_add_session.pod" + ], + "doc/man/man3/SSL_CTX_config.3" => [ + "doc/man3/SSL_CTX_config.pod" + ], + "doc/man/man3/SSL_CTX_ctrl.3" => [ + "doc/man3/SSL_CTX_ctrl.pod" + ], + "doc/man/man3/SSL_CTX_dane_enable.3" => [ + "doc/man3/SSL_CTX_dane_enable.pod" + ], + "doc/man/man3/SSL_CTX_flush_sessions.3" => [ + "doc/man3/SSL_CTX_flush_sessions.pod" + ], + "doc/man/man3/SSL_CTX_free.3" => [ + "doc/man3/SSL_CTX_free.pod" + ], + "doc/man/man3/SSL_CTX_get0_param.3" => [ + "doc/man3/SSL_CTX_get0_param.pod" + ], + "doc/man/man3/SSL_CTX_get_verify_mode.3" => [ + "doc/man3/SSL_CTX_get_verify_mode.pod" + ], + "doc/man/man3/SSL_CTX_has_client_custom_ext.3" => [ + "doc/man3/SSL_CTX_has_client_custom_ext.pod" + ], + "doc/man/man3/SSL_CTX_load_verify_locations.3" => [ + "doc/man3/SSL_CTX_load_verify_locations.pod" + ], + "doc/man/man3/SSL_CTX_new.3" => [ + "doc/man3/SSL_CTX_new.pod" + ], + "doc/man/man3/SSL_CTX_sess_number.3" => [ + "doc/man3/SSL_CTX_sess_number.pod" + ], + "doc/man/man3/SSL_CTX_sess_set_cache_size.3" => [ + "doc/man3/SSL_CTX_sess_set_cache_size.pod" + ], + "doc/man/man3/SSL_CTX_sess_set_get_cb.3" => [ + "doc/man3/SSL_CTX_sess_set_get_cb.pod" + ], + "doc/man/man3/SSL_CTX_sessions.3" => [ + "doc/man3/SSL_CTX_sessions.pod" + ], + "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ + "doc/man3/SSL_CTX_set0_CA_list.pod" + ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], + "doc/man/man3/SSL_CTX_set1_curves.3" => [ + "doc/man3/SSL_CTX_set1_curves.pod" + ], + "doc/man/man3/SSL_CTX_set1_sigalgs.3" => [ + "doc/man3/SSL_CTX_set1_sigalgs.pod" + ], + "doc/man/man3/SSL_CTX_set1_verify_cert_store.3" => [ + "doc/man3/SSL_CTX_set1_verify_cert_store.pod" + ], + "doc/man/man3/SSL_CTX_set_alpn_select_cb.3" => [ + "doc/man3/SSL_CTX_set_alpn_select_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_cert_cb.3" => [ + "doc/man3/SSL_CTX_set_cert_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_cert_store.3" => [ + "doc/man3/SSL_CTX_set_cert_store.pod" + ], + "doc/man/man3/SSL_CTX_set_cert_verify_callback.3" => [ + "doc/man3/SSL_CTX_set_cert_verify_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_cipher_list.3" => [ + "doc/man3/SSL_CTX_set_cipher_list.pod" + ], + "doc/man/man3/SSL_CTX_set_client_cert_cb.3" => [ + "doc/man3/SSL_CTX_set_client_cert_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_client_hello_cb.3" => [ + "doc/man3/SSL_CTX_set_client_hello_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_ct_validation_callback.3" => [ + "doc/man3/SSL_CTX_set_ct_validation_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_ctlog_list_file.3" => [ + "doc/man3/SSL_CTX_set_ctlog_list_file.pod" + ], + "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ + "doc/man3/SSL_CTX_set_default_passwd_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], + "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ + "doc/man3/SSL_CTX_set_generate_session_id.pod" + ], + "doc/man/man3/SSL_CTX_set_info_callback.3" => [ + "doc/man3/SSL_CTX_set_info_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_keylog_callback.3" => [ + "doc/man3/SSL_CTX_set_keylog_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_max_cert_list.3" => [ + "doc/man3/SSL_CTX_set_max_cert_list.pod" + ], + "doc/man/man3/SSL_CTX_set_min_proto_version.3" => [ + "doc/man3/SSL_CTX_set_min_proto_version.pod" + ], + "doc/man/man3/SSL_CTX_set_mode.3" => [ + "doc/man3/SSL_CTX_set_mode.pod" + ], + "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ + "doc/man3/SSL_CTX_set_msg_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ + "doc/man3/SSL_CTX_set_num_tickets.pod" + ], + "doc/man/man3/SSL_CTX_set_options.3" => [ + "doc/man3/SSL_CTX_set_options.pod" + ], + "doc/man/man3/SSL_CTX_set_psk_client_callback.3" => [ + "doc/man3/SSL_CTX_set_psk_client_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_quiet_shutdown.3" => [ + "doc/man3/SSL_CTX_set_quiet_shutdown.pod" + ], + "doc/man/man3/SSL_CTX_set_read_ahead.3" => [ + "doc/man3/SSL_CTX_set_read_ahead.pod" + ], + "doc/man/man3/SSL_CTX_set_record_padding_callback.3" => [ + "doc/man3/SSL_CTX_set_record_padding_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_security_level.3" => [ + "doc/man3/SSL_CTX_set_security_level.pod" + ], + "doc/man/man3/SSL_CTX_set_session_cache_mode.3" => [ + "doc/man3/SSL_CTX_set_session_cache_mode.pod" + ], + "doc/man/man3/SSL_CTX_set_session_id_context.3" => [ + "doc/man3/SSL_CTX_set_session_id_context.pod" + ], + "doc/man/man3/SSL_CTX_set_session_ticket_cb.3" => [ + "doc/man3/SSL_CTX_set_session_ticket_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_split_send_fragment.3" => [ + "doc/man3/SSL_CTX_set_split_send_fragment.pod" + ], + "doc/man/man3/SSL_CTX_set_srp_password.3" => [ + "doc/man3/SSL_CTX_set_srp_password.pod" + ], + "doc/man/man3/SSL_CTX_set_ssl_version.3" => [ + "doc/man3/SSL_CTX_set_ssl_version.pod" + ], + "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3" => [ + "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_timeout.3" => [ + "doc/man3/SSL_CTX_set_timeout.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3" => [ + "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3" => [ + "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3" => [ + "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3" => [ + "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" + ], + "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3" => [ + "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_tmp_ecdh.3" => [ + "doc/man3/SSL_CTX_set_tmp_ecdh.pod" + ], + "doc/man/man3/SSL_CTX_set_verify.3" => [ + "doc/man3/SSL_CTX_set_verify.pod" + ], + "doc/man/man3/SSL_CTX_use_certificate.3" => [ + "doc/man3/SSL_CTX_use_certificate.pod" + ], + "doc/man/man3/SSL_CTX_use_psk_identity_hint.3" => [ + "doc/man3/SSL_CTX_use_psk_identity_hint.pod" + ], + "doc/man/man3/SSL_CTX_use_serverinfo.3" => [ + "doc/man3/SSL_CTX_use_serverinfo.pod" + ], + "doc/man/man3/SSL_SESSION_free.3" => [ + "doc/man3/SSL_SESSION_free.pod" + ], + "doc/man/man3/SSL_SESSION_get0_cipher.3" => [ + "doc/man3/SSL_SESSION_get0_cipher.pod" + ], + "doc/man/man3/SSL_SESSION_get0_hostname.3" => [ + "doc/man3/SSL_SESSION_get0_hostname.pod" + ], + "doc/man/man3/SSL_SESSION_get0_id_context.3" => [ + "doc/man3/SSL_SESSION_get0_id_context.pod" + ], + "doc/man/man3/SSL_SESSION_get0_peer.3" => [ + "doc/man3/SSL_SESSION_get0_peer.pod" + ], + "doc/man/man3/SSL_SESSION_get_compress_id.3" => [ + "doc/man3/SSL_SESSION_get_compress_id.pod" + ], + "doc/man/man3/SSL_SESSION_get_protocol_version.3" => [ + "doc/man3/SSL_SESSION_get_protocol_version.pod" + ], + "doc/man/man3/SSL_SESSION_get_time.3" => [ + "doc/man3/SSL_SESSION_get_time.pod" + ], + "doc/man/man3/SSL_SESSION_has_ticket.3" => [ + "doc/man3/SSL_SESSION_has_ticket.pod" + ], + "doc/man/man3/SSL_SESSION_is_resumable.3" => [ + "doc/man3/SSL_SESSION_is_resumable.pod" + ], + "doc/man/man3/SSL_SESSION_print.3" => [ + "doc/man3/SSL_SESSION_print.pod" + ], + "doc/man/man3/SSL_SESSION_set1_id.3" => [ + "doc/man3/SSL_SESSION_set1_id.pod" + ], + "doc/man/man3/SSL_accept.3" => [ + "doc/man3/SSL_accept.pod" + ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], + "doc/man/man3/SSL_alert_type_string.3" => [ + "doc/man3/SSL_alert_type_string.pod" + ], + "doc/man/man3/SSL_alloc_buffers.3" => [ + "doc/man3/SSL_alloc_buffers.pod" + ], + "doc/man/man3/SSL_check_chain.3" => [ + "doc/man3/SSL_check_chain.pod" + ], + "doc/man/man3/SSL_clear.3" => [ + "doc/man3/SSL_clear.pod" + ], + "doc/man/man3/SSL_connect.3" => [ + "doc/man3/SSL_connect.pod" + ], + "doc/man/man3/SSL_do_handshake.3" => [ + "doc/man3/SSL_do_handshake.pod" + ], + "doc/man/man3/SSL_export_keying_material.3" => [ + "doc/man3/SSL_export_keying_material.pod" + ], + "doc/man/man3/SSL_extension_supported.3" => [ + "doc/man3/SSL_extension_supported.pod" + ], + "doc/man/man3/SSL_free.3" => [ + "doc/man3/SSL_free.pod" + ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], + "doc/man/man3/SSL_get0_peer_scts.3" => [ + "doc/man3/SSL_get0_peer_scts.pod" + ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], + "doc/man/man3/SSL_get_SSL_CTX.3" => [ + "doc/man3/SSL_get_SSL_CTX.pod" + ], + "doc/man/man3/SSL_get_all_async_fds.3" => [ + "doc/man3/SSL_get_all_async_fds.pod" + ], + "doc/man/man3/SSL_get_certificate.3" => [ + "doc/man3/SSL_get_certificate.pod" + ], + "doc/man/man3/SSL_get_ciphers.3" => [ + "doc/man3/SSL_get_ciphers.pod" + ], + "doc/man/man3/SSL_get_client_random.3" => [ + "doc/man3/SSL_get_client_random.pod" + ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], + "doc/man/man3/SSL_get_current_cipher.3" => [ + "doc/man3/SSL_get_current_cipher.pod" + ], + "doc/man/man3/SSL_get_default_timeout.3" => [ + "doc/man3/SSL_get_default_timeout.pod" + ], + "doc/man/man3/SSL_get_error.3" => [ + "doc/man3/SSL_get_error.pod" + ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], + "doc/man/man3/SSL_get_extms_support.3" => [ + "doc/man3/SSL_get_extms_support.pod" + ], + "doc/man/man3/SSL_get_fd.3" => [ + "doc/man3/SSL_get_fd.pod" + ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], + "doc/man/man3/SSL_get_peer_cert_chain.3" => [ + "doc/man3/SSL_get_peer_cert_chain.pod" + ], + "doc/man/man3/SSL_get_peer_certificate.3" => [ + "doc/man3/SSL_get_peer_certificate.pod" + ], + "doc/man/man3/SSL_get_peer_signature_nid.3" => [ + "doc/man3/SSL_get_peer_signature_nid.pod" + ], + "doc/man/man3/SSL_get_peer_tmp_key.3" => [ + "doc/man3/SSL_get_peer_tmp_key.pod" + ], + "doc/man/man3/SSL_get_psk_identity.3" => [ + "doc/man3/SSL_get_psk_identity.pod" + ], + "doc/man/man3/SSL_get_rbio.3" => [ + "doc/man3/SSL_get_rbio.pod" + ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], + "doc/man/man3/SSL_get_session.3" => [ + "doc/man3/SSL_get_session.pod" + ], + "doc/man/man3/SSL_get_shared_sigalgs.3" => [ + "doc/man3/SSL_get_shared_sigalgs.pod" + ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], + "doc/man/man3/SSL_get_verify_result.3" => [ + "doc/man3/SSL_get_verify_result.pod" + ], + "doc/man/man3/SSL_get_version.3" => [ + "doc/man3/SSL_get_version.pod" + ], + "doc/man/man3/SSL_group_to_name.3" => [ + "doc/man3/SSL_group_to_name.pod" + ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], + "doc/man/man3/SSL_in_init.3" => [ + "doc/man3/SSL_in_init.pod" + ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], + "doc/man/man3/SSL_key_update.3" => [ + "doc/man3/SSL_key_update.pod" + ], + "doc/man/man3/SSL_library_init.3" => [ + "doc/man3/SSL_library_init.pod" + ], + "doc/man/man3/SSL_load_client_CA_file.3" => [ + "doc/man3/SSL_load_client_CA_file.pod" + ], + "doc/man/man3/SSL_new.3" => [ + "doc/man3/SSL_new.pod" + ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], + "doc/man/man3/SSL_pending.3" => [ + "doc/man3/SSL_pending.pod" + ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], + "doc/man/man3/SSL_read.3" => [ + "doc/man3/SSL_read.pod" + ], + "doc/man/man3/SSL_read_early_data.3" => [ + "doc/man3/SSL_read_early_data.pod" + ], + "doc/man/man3/SSL_rstate_string.3" => [ + "doc/man3/SSL_rstate_string.pod" + ], + "doc/man/man3/SSL_session_reused.3" => [ + "doc/man3/SSL_session_reused.pod" + ], + "doc/man/man3/SSL_set1_host.3" => [ + "doc/man3/SSL_set1_host.pod" + ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], + "doc/man/man3/SSL_set_async_callback.3" => [ + "doc/man3/SSL_set_async_callback.pod" + ], + "doc/man/man3/SSL_set_bio.3" => [ + "doc/man3/SSL_set_bio.pod" + ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], + "doc/man/man3/SSL_set_connect_state.3" => [ + "doc/man3/SSL_set_connect_state.pod" + ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], + "doc/man/man3/SSL_set_fd.3" => [ + "doc/man3/SSL_set_fd.pod" + ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], + "doc/man/man3/SSL_set_retry_verify.3" => [ + "doc/man3/SSL_set_retry_verify.pod" + ], + "doc/man/man3/SSL_set_session.3" => [ + "doc/man3/SSL_set_session.pod" + ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], + "doc/man/man3/SSL_set_shutdown.3" => [ + "doc/man3/SSL_set_shutdown.pod" + ], + "doc/man/man3/SSL_set_verify_result.3" => [ + "doc/man3/SSL_set_verify_result.pod" + ], + "doc/man/man3/SSL_shutdown.3" => [ + "doc/man3/SSL_shutdown.pod" + ], + "doc/man/man3/SSL_state_string.3" => [ + "doc/man3/SSL_state_string.pod" + ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], + "doc/man/man3/SSL_want.3" => [ + "doc/man3/SSL_want.pod" + ], + "doc/man/man3/SSL_write.3" => [ + "doc/man3/SSL_write.pod" + ], + "doc/man/man3/TS_RESP_CTX_new.3" => [ + "doc/man3/TS_RESP_CTX_new.pod" + ], + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" + ], + "doc/man/man3/UI_STRING.3" => [ + "doc/man3/UI_STRING.pod" + ], + "doc/man/man3/UI_UTIL_read_pw.3" => [ + "doc/man3/UI_UTIL_read_pw.pod" + ], + "doc/man/man3/UI_create_method.3" => [ + "doc/man3/UI_create_method.pod" + ], + "doc/man/man3/UI_new.3" => [ + "doc/man3/UI_new.pod" + ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], + "doc/man/man3/X509V3_get_d2i.3" => [ + "doc/man3/X509V3_get_d2i.pod" + ], + "doc/man/man3/X509V3_set_ctx.3" => [ + "doc/man3/X509V3_set_ctx.pod" + ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], + "doc/man/man3/X509_ALGOR_dup.3" => [ + "doc/man3/X509_ALGOR_dup.pod" + ], + "doc/man/man3/X509_ATTRIBUTE.3" => [ + "doc/man3/X509_ATTRIBUTE.pod" + ], + "doc/man/man3/X509_CRL_get0_by_serial.3" => [ + "doc/man3/X509_CRL_get0_by_serial.pod" + ], + "doc/man/man3/X509_EXTENSION_set_object.3" => [ + "doc/man3/X509_EXTENSION_set_object.pod" + ], + "doc/man/man3/X509_LOOKUP.3" => [ + "doc/man3/X509_LOOKUP.pod" + ], + "doc/man/man3/X509_LOOKUP_hash_dir.3" => [ + "doc/man3/X509_LOOKUP_hash_dir.pod" + ], + "doc/man/man3/X509_LOOKUP_meth_new.3" => [ + "doc/man3/X509_LOOKUP_meth_new.pod" + ], + "doc/man/man3/X509_NAME_ENTRY_get_object.3" => [ + "doc/man3/X509_NAME_ENTRY_get_object.pod" + ], + "doc/man/man3/X509_NAME_add_entry_by_txt.3" => [ + "doc/man3/X509_NAME_add_entry_by_txt.pod" + ], + "doc/man/man3/X509_NAME_get0_der.3" => [ + "doc/man3/X509_NAME_get0_der.pod" + ], + "doc/man/man3/X509_NAME_get_index_by_NID.3" => [ + "doc/man3/X509_NAME_get_index_by_NID.pod" + ], + "doc/man/man3/X509_NAME_print_ex.3" => [ + "doc/man3/X509_NAME_print_ex.pod" + ], + "doc/man/man3/X509_PUBKEY_new.3" => [ + "doc/man3/X509_PUBKEY_new.pod" + ], + "doc/man/man3/X509_REQ_get_attr.3" => [ + "doc/man3/X509_REQ_get_attr.pod" + ], + "doc/man/man3/X509_REQ_get_extensions.3" => [ + "doc/man3/X509_REQ_get_extensions.pod" + ], + "doc/man/man3/X509_SIG_get0.3" => [ + "doc/man3/X509_SIG_get0.pod" + ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], + "doc/man/man3/X509_STORE_CTX_get_error.3" => [ + "doc/man3/X509_STORE_CTX_get_error.pod" + ], + "doc/man/man3/X509_STORE_CTX_new.3" => [ + "doc/man3/X509_STORE_CTX_new.pod" + ], + "doc/man/man3/X509_STORE_CTX_set_verify_cb.3" => [ + "doc/man3/X509_STORE_CTX_set_verify_cb.pod" + ], + "doc/man/man3/X509_STORE_add_cert.3" => [ + "doc/man3/X509_STORE_add_cert.pod" + ], + "doc/man/man3/X509_STORE_get0_param.3" => [ + "doc/man3/X509_STORE_get0_param.pod" + ], + "doc/man/man3/X509_STORE_new.3" => [ + "doc/man3/X509_STORE_new.pod" + ], + "doc/man/man3/X509_STORE_set_verify_cb_func.3" => [ + "doc/man3/X509_STORE_set_verify_cb_func.pod" + ], + "doc/man/man3/X509_VERIFY_PARAM_set_flags.3" => [ + "doc/man3/X509_VERIFY_PARAM_set_flags.pod" + ], + "doc/man/man3/X509_add_cert.3" => [ + "doc/man3/X509_add_cert.pod" + ], + "doc/man/man3/X509_check_ca.3" => [ + "doc/man3/X509_check_ca.pod" + ], + "doc/man/man3/X509_check_host.3" => [ + "doc/man3/X509_check_host.pod" + ], + "doc/man/man3/X509_check_issued.3" => [ + "doc/man3/X509_check_issued.pod" + ], + "doc/man/man3/X509_check_private_key.3" => [ + "doc/man3/X509_check_private_key.pod" + ], + "doc/man/man3/X509_check_purpose.3" => [ + "doc/man3/X509_check_purpose.pod" + ], + "doc/man/man3/X509_cmp.3" => [ + "doc/man3/X509_cmp.pod" + ], + "doc/man/man3/X509_cmp_time.3" => [ + "doc/man3/X509_cmp_time.pod" + ], + "doc/man/man3/X509_digest.3" => [ + "doc/man3/X509_digest.pod" + ], + "doc/man/man3/X509_dup.3" => [ + "doc/man3/X509_dup.pod" + ], + "doc/man/man3/X509_get0_distinguishing_id.3" => [ + "doc/man3/X509_get0_distinguishing_id.pod" + ], + "doc/man/man3/X509_get0_notBefore.3" => [ + "doc/man3/X509_get0_notBefore.pod" + ], + "doc/man/man3/X509_get0_signature.3" => [ + "doc/man3/X509_get0_signature.pod" + ], + "doc/man/man3/X509_get0_uids.3" => [ + "doc/man3/X509_get0_uids.pod" + ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], + "doc/man/man3/X509_get_extension_flags.3" => [ + "doc/man3/X509_get_extension_flags.pod" + ], + "doc/man/man3/X509_get_pubkey.3" => [ + "doc/man3/X509_get_pubkey.pod" + ], + "doc/man/man3/X509_get_serialNumber.3" => [ + "doc/man3/X509_get_serialNumber.pod" + ], + "doc/man/man3/X509_get_subject_name.3" => [ + "doc/man3/X509_get_subject_name.pod" + ], + "doc/man/man3/X509_get_version.3" => [ + "doc/man3/X509_get_version.pod" + ], + "doc/man/man3/X509_load_http.3" => [ + "doc/man3/X509_load_http.pod" + ], + "doc/man/man3/X509_new.3" => [ + "doc/man3/X509_new.pod" + ], + "doc/man/man3/X509_sign.3" => [ + "doc/man3/X509_sign.pod" + ], + "doc/man/man3/X509_verify.3" => [ + "doc/man3/X509_verify.pod" + ], + "doc/man/man3/X509_verify_cert.3" => [ + "doc/man3/X509_verify_cert.pod" + ], + "doc/man/man3/X509v3_get_ext_by_NID.3" => [ + "doc/man3/X509v3_get_ext_by_NID.pod" + ], + "doc/man/man3/b2i_PVK_bio_ex.3" => [ + "doc/man3/b2i_PVK_bio_ex.pod" + ], + "doc/man/man3/d2i_PKCS8PrivateKey_bio.3" => [ + "doc/man3/d2i_PKCS8PrivateKey_bio.pod" + ], + "doc/man/man3/d2i_PrivateKey.3" => [ + "doc/man3/d2i_PrivateKey.pod" + ], + "doc/man/man3/d2i_RSAPrivateKey.3" => [ + "doc/man3/d2i_RSAPrivateKey.pod" + ], + "doc/man/man3/d2i_SSL_SESSION.3" => [ + "doc/man3/d2i_SSL_SESSION.pod" + ], + "doc/man/man3/d2i_X509.3" => [ + "doc/man3/d2i_X509.pod" + ], + "doc/man/man3/i2d_CMS_bio_stream.3" => [ + "doc/man3/i2d_CMS_bio_stream.pod" + ], + "doc/man/man3/i2d_PKCS7_bio_stream.3" => [ + "doc/man3/i2d_PKCS7_bio_stream.pod" + ], + "doc/man/man3/i2d_re_X509_tbs.3" => [ + "doc/man3/i2d_re_X509_tbs.pod" + ], + "doc/man/man3/o2i_SCT_LIST.3" => [ + "doc/man3/o2i_SCT_LIST.pod" + ], + "doc/man/man3/s2i_ASN1_IA5STRING.3" => [ + "doc/man3/s2i_ASN1_IA5STRING.pod" + ], + "doc/man/man5/config.5" => [ + "doc/man5/config.pod" + ], + "doc/man/man5/fips_config.5" => [ + "doc/man5/fips_config.pod" + ], + "doc/man/man5/x509v3_config.5" => [ + "doc/man5/x509v3_config.pod" + ], + "doc/man/man7/EVP_ASYM_CIPHER-RSA.7" => [ + "doc/man7/EVP_ASYM_CIPHER-RSA.pod" + ], + "doc/man/man7/EVP_ASYM_CIPHER-SM2.7" => [ + "doc/man7/EVP_ASYM_CIPHER-SM2.pod" + ], + "doc/man/man7/EVP_CIPHER-AES.7" => [ + "doc/man7/EVP_CIPHER-AES.pod" + ], + "doc/man/man7/EVP_CIPHER-ARIA.7" => [ + "doc/man7/EVP_CIPHER-ARIA.pod" + ], + "doc/man/man7/EVP_CIPHER-BLOWFISH.7" => [ + "doc/man7/EVP_CIPHER-BLOWFISH.pod" + ], + "doc/man/man7/EVP_CIPHER-CAMELLIA.7" => [ + "doc/man7/EVP_CIPHER-CAMELLIA.pod" + ], + "doc/man/man7/EVP_CIPHER-CAST.7" => [ + "doc/man7/EVP_CIPHER-CAST.pod" + ], + "doc/man/man7/EVP_CIPHER-CHACHA.7" => [ + "doc/man7/EVP_CIPHER-CHACHA.pod" + ], + "doc/man/man7/EVP_CIPHER-DES.7" => [ + "doc/man7/EVP_CIPHER-DES.pod" + ], + "doc/man/man7/EVP_CIPHER-IDEA.7" => [ + "doc/man7/EVP_CIPHER-IDEA.pod" + ], + "doc/man/man7/EVP_CIPHER-NULL.7" => [ + "doc/man7/EVP_CIPHER-NULL.pod" + ], + "doc/man/man7/EVP_CIPHER-RC2.7" => [ + "doc/man7/EVP_CIPHER-RC2.pod" + ], + "doc/man/man7/EVP_CIPHER-RC4.7" => [ + "doc/man7/EVP_CIPHER-RC4.pod" + ], + "doc/man/man7/EVP_CIPHER-RC5.7" => [ + "doc/man7/EVP_CIPHER-RC5.pod" + ], + "doc/man/man7/EVP_CIPHER-SEED.7" => [ + "doc/man7/EVP_CIPHER-SEED.pod" + ], + "doc/man/man7/EVP_CIPHER-SM4.7" => [ + "doc/man7/EVP_CIPHER-SM4.pod" + ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], + "doc/man/man7/EVP_KDF-HKDF.7" => [ + "doc/man7/EVP_KDF-HKDF.pod" + ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], + "doc/man/man7/EVP_KDF-KB.7" => [ + "doc/man7/EVP_KDF-KB.pod" + ], + "doc/man/man7/EVP_KDF-KRB5KDF.7" => [ + "doc/man7/EVP_KDF-KRB5KDF.pod" + ], + "doc/man/man7/EVP_KDF-PBKDF1.7" => [ + "doc/man7/EVP_KDF-PBKDF1.pod" + ], + "doc/man/man7/EVP_KDF-PBKDF2.7" => [ + "doc/man7/EVP_KDF-PBKDF2.pod" + ], + "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ + "doc/man7/EVP_KDF-PKCS12KDF.pod" + ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], + "doc/man/man7/EVP_KDF-SCRYPT.7" => [ + "doc/man7/EVP_KDF-SCRYPT.pod" + ], + "doc/man/man7/EVP_KDF-SS.7" => [ + "doc/man7/EVP_KDF-SS.pod" + ], + "doc/man/man7/EVP_KDF-SSHKDF.7" => [ + "doc/man7/EVP_KDF-SSHKDF.pod" + ], + "doc/man/man7/EVP_KDF-TLS13_KDF.7" => [ + "doc/man7/EVP_KDF-TLS13_KDF.pod" + ], + "doc/man/man7/EVP_KDF-TLS1_PRF.7" => [ + "doc/man7/EVP_KDF-TLS1_PRF.pod" + ], + "doc/man/man7/EVP_KDF-X942-ASN1.7" => [ + "doc/man7/EVP_KDF-X942-ASN1.pod" + ], + "doc/man/man7/EVP_KDF-X942-CONCAT.7" => [ + "doc/man7/EVP_KDF-X942-CONCAT.pod" + ], + "doc/man/man7/EVP_KDF-X963.7" => [ + "doc/man7/EVP_KDF-X963.pod" + ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], + "doc/man/man7/EVP_KEM-RSA.7" => [ + "doc/man7/EVP_KEM-RSA.pod" + ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], + "doc/man/man7/EVP_KEYEXCH-DH.7" => [ + "doc/man7/EVP_KEYEXCH-DH.pod" + ], + "doc/man/man7/EVP_KEYEXCH-ECDH.7" => [ + "doc/man7/EVP_KEYEXCH-ECDH.pod" + ], + "doc/man/man7/EVP_KEYEXCH-X25519.7" => [ + "doc/man7/EVP_KEYEXCH-X25519.pod" + ], + "doc/man/man7/EVP_MAC-BLAKE2.7" => [ + "doc/man7/EVP_MAC-BLAKE2.pod" + ], + "doc/man/man7/EVP_MAC-CMAC.7" => [ + "doc/man7/EVP_MAC-CMAC.pod" + ], + "doc/man/man7/EVP_MAC-GMAC.7" => [ + "doc/man7/EVP_MAC-GMAC.pod" + ], + "doc/man/man7/EVP_MAC-HMAC.7" => [ + "doc/man7/EVP_MAC-HMAC.pod" + ], + "doc/man/man7/EVP_MAC-KMAC.7" => [ + "doc/man7/EVP_MAC-KMAC.pod" + ], + "doc/man/man7/EVP_MAC-Poly1305.7" => [ + "doc/man7/EVP_MAC-Poly1305.pod" + ], + "doc/man/man7/EVP_MAC-Siphash.7" => [ + "doc/man7/EVP_MAC-Siphash.pod" + ], + "doc/man/man7/EVP_MD-BLAKE2.7" => [ + "doc/man7/EVP_MD-BLAKE2.pod" + ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], + "doc/man/man7/EVP_MD-MD2.7" => [ + "doc/man7/EVP_MD-MD2.pod" + ], + "doc/man/man7/EVP_MD-MD4.7" => [ + "doc/man7/EVP_MD-MD4.pod" + ], + "doc/man/man7/EVP_MD-MD5-SHA1.7" => [ + "doc/man7/EVP_MD-MD5-SHA1.pod" + ], + "doc/man/man7/EVP_MD-MD5.7" => [ + "doc/man7/EVP_MD-MD5.pod" + ], + "doc/man/man7/EVP_MD-MDC2.7" => [ + "doc/man7/EVP_MD-MDC2.pod" + ], + "doc/man/man7/EVP_MD-NULL.7" => [ + "doc/man7/EVP_MD-NULL.pod" + ], + "doc/man/man7/EVP_MD-RIPEMD160.7" => [ + "doc/man7/EVP_MD-RIPEMD160.pod" + ], + "doc/man/man7/EVP_MD-SHA1.7" => [ + "doc/man7/EVP_MD-SHA1.pod" + ], + "doc/man/man7/EVP_MD-SHA2.7" => [ + "doc/man7/EVP_MD-SHA2.pod" + ], + "doc/man/man7/EVP_MD-SHA3.7" => [ + "doc/man7/EVP_MD-SHA3.pod" + ], + "doc/man/man7/EVP_MD-SHAKE.7" => [ + "doc/man7/EVP_MD-SHAKE.pod" + ], + "doc/man/man7/EVP_MD-SM3.7" => [ + "doc/man7/EVP_MD-SM3.pod" + ], + "doc/man/man7/EVP_MD-WHIRLPOOL.7" => [ + "doc/man7/EVP_MD-WHIRLPOOL.pod" + ], + "doc/man/man7/EVP_MD-common.7" => [ + "doc/man7/EVP_MD-common.pod" + ], + "doc/man/man7/EVP_PKEY-DH.7" => [ + "doc/man7/EVP_PKEY-DH.pod" + ], + "doc/man/man7/EVP_PKEY-DSA.7" => [ + "doc/man7/EVP_PKEY-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-EC.7" => [ + "doc/man7/EVP_PKEY-EC.pod" + ], + "doc/man/man7/EVP_PKEY-FFC.7" => [ + "doc/man7/EVP_PKEY-FFC.pod" + ], + "doc/man/man7/EVP_PKEY-HMAC.7" => [ + "doc/man7/EVP_PKEY-HMAC.pod" + ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], + "doc/man/man7/EVP_PKEY-RSA.7" => [ + "doc/man7/EVP_PKEY-RSA.pod" + ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-SM2.7" => [ + "doc/man7/EVP_PKEY-SM2.pod" + ], + "doc/man/man7/EVP_PKEY-X25519.7" => [ + "doc/man7/EVP_PKEY-X25519.pod" + ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], + "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ + "doc/man7/EVP_RAND-CTR-DRBG.pod" + ], + "doc/man/man7/EVP_RAND-HASH-DRBG.7" => [ + "doc/man7/EVP_RAND-HASH-DRBG.pod" + ], + "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ + "doc/man7/EVP_RAND-HMAC-DRBG.pod" + ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], + "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ + "doc/man7/EVP_RAND-SEED-SRC.pod" + ], + "doc/man/man7/EVP_RAND-TEST-RAND.7" => [ + "doc/man7/EVP_RAND-TEST-RAND.pod" + ], + "doc/man/man7/EVP_RAND.7" => [ + "doc/man7/EVP_RAND.pod" + ], + "doc/man/man7/EVP_SIGNATURE-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-DSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-ECDSA.7" => [ + "doc/man7/EVP_SIGNATURE-ECDSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-ED25519.7" => [ + "doc/man7/EVP_SIGNATURE-ED25519.pod" + ], + "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ + "doc/man7/EVP_SIGNATURE-HMAC.pod" + ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ + "doc/man7/EVP_SIGNATURE-RSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], + "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ + "doc/man7/OSSL_PROVIDER-FIPS.pod" + ], + "doc/man/man7/OSSL_PROVIDER-base.7" => [ + "doc/man7/OSSL_PROVIDER-base.pod" + ], + "doc/man/man7/OSSL_PROVIDER-default.7" => [ + "doc/man7/OSSL_PROVIDER-default.pod" + ], + "doc/man/man7/OSSL_PROVIDER-legacy.7" => [ + "doc/man7/OSSL_PROVIDER-legacy.pod" + ], + "doc/man/man7/OSSL_PROVIDER-null.7" => [ + "doc/man7/OSSL_PROVIDER-null.pod" + ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], + "doc/man/man7/RAND.7" => [ + "doc/man7/RAND.pod" + ], + "doc/man/man7/RSA-PSS.7" => [ + "doc/man7/RSA-PSS.pod" + ], + "doc/man/man7/X25519.7" => [ + "doc/man7/X25519.pod" + ], + "doc/man/man7/bio.7" => [ + "doc/man7/bio.pod" + ], + "doc/man/man7/ct.7" => [ + "doc/man7/ct.pod" + ], + "doc/man/man7/des_modes.7" => [ + "doc/man7/des_modes.pod" + ], + "doc/man/man7/evp.7" => [ + "doc/man7/evp.pod" + ], + "doc/man/man7/fips_module.7" => [ + "doc/man7/fips_module.pod" + ], + "doc/man/man7/life_cycle-cipher.7" => [ + "doc/man7/life_cycle-cipher.pod" + ], + "doc/man/man7/life_cycle-digest.7" => [ + "doc/man7/life_cycle-digest.pod" + ], + "doc/man/man7/life_cycle-kdf.7" => [ + "doc/man7/life_cycle-kdf.pod" + ], + "doc/man/man7/life_cycle-mac.7" => [ + "doc/man7/life_cycle-mac.pod" + ], + "doc/man/man7/life_cycle-pkey.7" => [ + "doc/man7/life_cycle-pkey.pod" + ], + "doc/man/man7/life_cycle-rand.7" => [ + "doc/man7/life_cycle-rand.pod" + ], + "doc/man/man7/openssl-core.h.7" => [ + "doc/man7/openssl-core.h.pod" + ], + "doc/man/man7/openssl-core_dispatch.h.7" => [ + "doc/man7/openssl-core_dispatch.h.pod" + ], + "doc/man/man7/openssl-core_names.h.7" => [ + "doc/man7/openssl-core_names.h.pod" + ], + "doc/man/man7/openssl-env.7" => [ + "doc/man7/openssl-env.pod" + ], + "doc/man/man7/openssl-glossary.7" => [ + "doc/man7/openssl-glossary.pod" + ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], + "doc/man/man7/openssl-threads.7" => [ + "doc/man7/openssl-threads.pod" + ], + "doc/man/man7/openssl_user_macros.7" => [ + "doc/man7/openssl_user_macros.pod" + ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], + "doc/man/man7/ossl_store-file.7" => [ + "doc/man7/ossl_store-file.pod" + ], + "doc/man/man7/ossl_store.7" => [ + "doc/man7/ossl_store.pod" + ], + "doc/man/man7/passphrase-encoding.7" => [ + "doc/man7/passphrase-encoding.pod" + ], + "doc/man/man7/property.7" => [ + "doc/man7/property.pod" + ], + "doc/man/man7/provider-asym_cipher.7" => [ + "doc/man7/provider-asym_cipher.pod" + ], + "doc/man/man7/provider-base.7" => [ + "doc/man7/provider-base.pod" + ], + "doc/man/man7/provider-cipher.7" => [ + "doc/man7/provider-cipher.pod" + ], + "doc/man/man7/provider-decoder.7" => [ + "doc/man7/provider-decoder.pod" + ], + "doc/man/man7/provider-digest.7" => [ + "doc/man7/provider-digest.pod" + ], + "doc/man/man7/provider-encoder.7" => [ + "doc/man7/provider-encoder.pod" + ], + "doc/man/man7/provider-kdf.7" => [ + "doc/man7/provider-kdf.pod" + ], + "doc/man/man7/provider-kem.7" => [ + "doc/man7/provider-kem.pod" + ], + "doc/man/man7/provider-keyexch.7" => [ + "doc/man7/provider-keyexch.pod" + ], + "doc/man/man7/provider-keymgmt.7" => [ + "doc/man7/provider-keymgmt.pod" + ], + "doc/man/man7/provider-mac.7" => [ + "doc/man7/provider-mac.pod" + ], + "doc/man/man7/provider-object.7" => [ + "doc/man7/provider-object.pod" + ], + "doc/man/man7/provider-rand.7" => [ + "doc/man7/provider-rand.pod" + ], + "doc/man/man7/provider-signature.7" => [ + "doc/man7/provider-signature.pod" + ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], + "doc/man/man7/provider-storemgmt.7" => [ + "doc/man7/provider-storemgmt.pod" + ], + "doc/man/man7/provider.7" => [ + "doc/man7/provider.pod" + ], + "doc/man/man7/proxy-certificates.7" => [ + "doc/man7/proxy-certificates.pod" + ], + "doc/man/man7/x509.7" => [ + "doc/man7/x509.pod" + ], + "doc/man1/openssl-asn1parse.pod" => [ + "doc/man1/openssl-asn1parse.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-ca.pod" => [ + "doc/man1/openssl-ca.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-ciphers.pod" => [ + "doc/man1/openssl-ciphers.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-cmds.pod" => [ + "doc/man1/openssl-cmds.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-cmp.pod" => [ + "doc/man1/openssl-cmp.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-cms.pod" => [ + "doc/man1/openssl-cms.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-crl.pod" => [ + "doc/man1/openssl-crl.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-crl2pkcs7.pod" => [ + "doc/man1/openssl-crl2pkcs7.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-dgst.pod" => [ + "doc/man1/openssl-dgst.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-dhparam.pod" => [ + "doc/man1/openssl-dhparam.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-dsa.pod" => [ + "doc/man1/openssl-dsa.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-dsaparam.pod" => [ + "doc/man1/openssl-dsaparam.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-ec.pod" => [ + "doc/man1/openssl-ec.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-ecparam.pod" => [ + "doc/man1/openssl-ecparam.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-enc.pod" => [ + "doc/man1/openssl-enc.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-engine.pod" => [ + "doc/man1/openssl-engine.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-errstr.pod" => [ + "doc/man1/openssl-errstr.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-fipsinstall.pod" => [ + "doc/man1/openssl-fipsinstall.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-gendsa.pod" => [ + "doc/man1/openssl-gendsa.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-genpkey.pod" => [ + "doc/man1/openssl-genpkey.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-genrsa.pod" => [ + "doc/man1/openssl-genrsa.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-info.pod" => [ + "doc/man1/openssl-info.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-kdf.pod" => [ + "doc/man1/openssl-kdf.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-list.pod" => [ + "doc/man1/openssl-list.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-mac.pod" => [ + "doc/man1/openssl-mac.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-nseq.pod" => [ + "doc/man1/openssl-nseq.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-ocsp.pod" => [ + "doc/man1/openssl-ocsp.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-passwd.pod" => [ + "doc/man1/openssl-passwd.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-pkcs12.pod" => [ + "doc/man1/openssl-pkcs12.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-pkcs7.pod" => [ + "doc/man1/openssl-pkcs7.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-pkcs8.pod" => [ + "doc/man1/openssl-pkcs8.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-pkey.pod" => [ + "doc/man1/openssl-pkey.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-pkeyparam.pod" => [ + "doc/man1/openssl-pkeyparam.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-pkeyutl.pod" => [ + "doc/man1/openssl-pkeyutl.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-prime.pod" => [ + "doc/man1/openssl-prime.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-rand.pod" => [ + "doc/man1/openssl-rand.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-rehash.pod" => [ + "doc/man1/openssl-rehash.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-req.pod" => [ + "doc/man1/openssl-req.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-rsa.pod" => [ + "doc/man1/openssl-rsa.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-rsautl.pod" => [ + "doc/man1/openssl-rsautl.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-s_client.pod" => [ + "doc/man1/openssl-s_client.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-s_server.pod" => [ + "doc/man1/openssl-s_server.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-s_time.pod" => [ + "doc/man1/openssl-s_time.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-sess_id.pod" => [ + "doc/man1/openssl-sess_id.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-smime.pod" => [ + "doc/man1/openssl-smime.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-speed.pod" => [ + "doc/man1/openssl-speed.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-spkac.pod" => [ + "doc/man1/openssl-spkac.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-srp.pod" => [ + "doc/man1/openssl-srp.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-storeutl.pod" => [ + "doc/man1/openssl-storeutl.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-ts.pod" => [ + "doc/man1/openssl-ts.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-verify.pod" => [ + "doc/man1/openssl-verify.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-version.pod" => [ + "doc/man1/openssl-version.pod.in", + "doc/perlvars.pm" + ], + "doc/man1/openssl-x509.pod" => [ + "doc/man1/openssl-x509.pod.in", + "doc/perlvars.pm" + ], + "doc/man7/openssl_user_macros.pod" => [ + "doc/man7/openssl_user_macros.pod.in" + ], + "exporters/OpenSSLConfig.cmake" => [ + "installdata.pm" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/OpenSSLConfig.cmake", + "installdata.pm" + ], + "exporters/libcrypto.pc" => [ + "installdata.pm" + ], + "exporters/libssl.pc" => [ + "installdata.pm" + ], + "exporters/openssl.pc" => [ + "exporters/libcrypto.pc", + "exporters/libssl.pc", + "installdata.pm" + ], + "include/internal/param_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "include/openssl/core_names.h" => [ + "util/perl|OpenSSL/paramnames.pm" + ], + "libcrypto.ld" => [ + "configdata.pm", + "util/perl/OpenSSL/Ordinals.pm" + ], + "libcrypto.pc" => [ + "builddata.pm" + ], + "libssl" => [ + "libcrypto" + ], + "libssl.ld" => [ + "configdata.pm", + "util/perl/OpenSSL/Ordinals.pm" + ], + "libssl.pc" => [ + "builddata.pm" + ], + "openssl.pc" => [ + "builddata.pm", + "libcrypto.pc", + "libssl.pc" + ], + "providers/common/der/der_digests_gen.c" => [ + "providers/common/der/DIGESTS.asn1", + "providers/common/der/NIST.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_dsa_gen.c" => [ + "providers/common/der/DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_ec_gen.c" => [ + "providers/common/der/EC.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_ecx_gen.c" => [ + "providers/common/der/ECX.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_rsa_gen.c" => [ + "providers/common/der/NIST.asn1", + "providers/common/der/RSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_sm2_gen.c" => [ + "providers/common/der/SM2.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/der/der_wrap_gen.c" => [ + "providers/common/der/oids_to_c.pm", + "providers/common/der/wrap.asn1" + ], + "providers/common/der/libcommon-lib-der_digests_gen.o" => [ + "providers/common/include/prov/der_digests.h" + ], + "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ + "providers/common/include/prov/der_dsa.h" + ], + "providers/common/der/libcommon-lib-der_dsa_key.o" => [ + "providers/common/include/prov/der_digests.h", + "providers/common/include/prov/der_dsa.h" + ], + "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ + "providers/common/include/prov/der_digests.h", + "providers/common/include/prov/der_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ec_gen.o" => [ + "providers/common/include/prov/der_ec.h" + ], + "providers/common/der/libcommon-lib-der_ec_key.o" => [ + "providers/common/include/prov/der_digests.h", + "providers/common/include/prov/der_ec.h" + ], + "providers/common/der/libcommon-lib-der_ec_sig.o" => [ + "providers/common/include/prov/der_digests.h", + "providers/common/include/prov/der_ec.h" + ], + "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ + "providers/common/include/prov/der_ecx.h" + ], + "providers/common/der/libcommon-lib-der_ecx_key.o" => [ + "providers/common/include/prov/der_ecx.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ + "providers/common/include/prov/der_rsa.h" + ], + "providers/common/der/libcommon-lib-der_rsa_key.o" => [ + "providers/common/include/prov/der_digests.h", + "providers/common/include/prov/der_rsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ + "providers/common/include/prov/der_wrap.h" + ], + "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ + "providers/common/include/prov/der_digests.h", + "providers/common/include/prov/der_rsa.h" + ], + "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ + "providers/common/include/prov/der_sm2.h" + ], + "providers/common/der/libdefault-lib-der_sm2_key.o" => [ + "providers/common/include/prov/der_ec.h", + "providers/common/include/prov/der_sm2.h" + ], + "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ + "providers/common/include/prov/der_ec.h", + "providers/common/include/prov/der_sm2.h" + ], + "providers/common/der/libfips-lib-der_rsa_sig.o" => [ + "providers/common/include/prov/der_digests.h", + "providers/common/include/prov/der_rsa.h" + ], + "providers/common/include/prov/der_digests.h" => [ + "providers/common/der/DIGESTS.asn1", + "providers/common/der/NIST.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_dsa.h" => [ + "providers/common/der/DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_ec.h" => [ + "providers/common/der/EC.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_ecx.h" => [ + "providers/common/der/ECX.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der/ML_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_rsa.h" => [ + "providers/common/der/NIST.asn1", + "providers/common/der/RSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der/SLH_DSA.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_sm2.h" => [ + "providers/common/der/SM2.asn1", + "providers/common/der/oids_to_c.pm" + ], + "providers/common/include/prov/der_wrap.h" => [ + "providers/common/der/oids_to_c.pm", + "providers/common/der/wrap.asn1" + ], + "providers/fips" => [ + "providers/libfips.a" + ], + "providers/fipsmodule.cnf" => [ + "providers/fips" + ], + "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ + "providers/common/include/prov/der_rsa.h" + ], + "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ + "providers/common/include/prov/der_wrap.h" + ], + "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ + "providers/common/include/prov/der_wrap.h" + ], + "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ + "providers/common/include/prov/der_dsa.h" + ], + "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ + "providers/common/include/prov/der_ec.h" + ], + "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ + "providers/common/include/prov/der_ecx.h" + ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ + "providers/common/include/prov/der_rsa.h" + ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ + "providers/common/include/prov/der_sm2.h" + ], + "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ + "providers/common/include/prov/der_dsa.h" + ], + "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ + "providers/common/include/prov/der_ec.h" + ], + "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ + "providers/common/include/prov/der_ecx.h" + ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov/der_ml_dsa.h" + ], + "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ + "providers/common/include/prov/der_rsa.h" + ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov/der_slh_dsa.h" + ], + "providers/legacy" => [ + "libcrypto", + "providers/liblegacy.a" + ], + "providers/libcommon.a" => [ + "libcrypto" + ], + "providers/libdefault.a" => [ + "providers/libcommon.a" + ], + "providers/liblegacy.a" => [ + "providers/libcommon.a" + ], + "util/wrap.pl" => [ + "configdata.pm" + ] + }, + "dirinfo" => { + "apps" => { + "products" => { + "bin" => [ + "apps/openssl" + ], + "script" => [ + "apps/CA.pl", + "apps/tsget.pl" + ] + } + }, + "apps/lib" => { + "deps" => [ + "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/lib/libapps-lib-app_libctx.o", + "apps/lib/libapps-lib-app_params.o", + "apps/lib/libapps-lib-app_provider.o", + "apps/lib/libapps-lib-app_rand.o", + "apps/lib/libapps-lib-app_x509.o", + "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", + "apps/lib/libapps-lib-apps_ui.o", + "apps/lib/libapps-lib-columns.o", + "apps/lib/libapps-lib-engine.o", + "apps/lib/libapps-lib-engine_loader.o", + "apps/lib/libapps-lib-fmt.o", + "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", + "apps/lib/libapps-lib-names.o", + "apps/lib/libapps-lib-opt.o", + "apps/lib/libapps-lib-s_cb.o", + "apps/lib/libapps-lib-s_socket.o", + "apps/lib/libapps-lib-tlssrp_depr.o" + ], + "products" => { + "bin" => [ + "apps/openssl" + ], + "lib" => [ + "apps/libapps.a" + ] + } + }, + "crypto" => { + "deps" => [ + "crypto/libcrypto-lib-asn1_dsa.o", + "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", + "crypto/libcrypto-lib-context.o", + "crypto/libcrypto-lib-core_algorithm.o", + "crypto/libcrypto-lib-core_fetch.o", + "crypto/libcrypto-lib-core_namemap.o", + "crypto/libcrypto-lib-cpt_err.o", + "crypto/libcrypto-lib-cpuid.o", + "crypto/libcrypto-lib-cryptlib.o", + "crypto/libcrypto-lib-ctype.o", + "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", + "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", + "crypto/libcrypto-lib-ebcdic.o", + "crypto/libcrypto-lib-ex_data.o", + "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", + "crypto/libcrypto-lib-info.o", + "crypto/libcrypto-lib-init.o", + "crypto/libcrypto-lib-initthread.o", + "crypto/libcrypto-lib-mem.o", + "crypto/libcrypto-lib-mem_sec.o", + "crypto/libcrypto-lib-o_dir.o", + "crypto/libcrypto-lib-o_fopen.o", + "crypto/libcrypto-lib-o_init.o", + "crypto/libcrypto-lib-o_str.o", + "crypto/libcrypto-lib-o_time.o", + "crypto/libcrypto-lib-packet.o", + "crypto/libcrypto-lib-param_build.o", + "crypto/libcrypto-lib-param_build_set.o", + "crypto/libcrypto-lib-params.o", + "crypto/libcrypto-lib-params_dup.o", + "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", + "crypto/libcrypto-lib-passphrase.o", + "crypto/libcrypto-lib-provider.o", + "crypto/libcrypto-lib-provider_child.o", + "crypto/libcrypto-lib-provider_conf.o", + "crypto/libcrypto-lib-provider_core.o", + "crypto/libcrypto-lib-provider_predefined.o", + "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", + "crypto/libcrypto-lib-riscv64cpuid.o", + "crypto/libcrypto-lib-riscvcap.o", + "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", + "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", + "crypto/libcrypto-lib-threads_lib.o", + "crypto/libcrypto-lib-threads_none.o", + "crypto/libcrypto-lib-threads_pthread.o", + "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", + "crypto/libcrypto-lib-trace.o", + "crypto/libcrypto-lib-uid.o", + "crypto/libfips-lib-asn1_dsa.o", + "crypto/libfips-lib-bsearch.o", + "crypto/libfips-lib-context.o", + "crypto/libfips-lib-core_algorithm.o", + "crypto/libfips-lib-core_fetch.o", + "crypto/libfips-lib-core_namemap.o", + "crypto/libfips-lib-cpuid.o", + "crypto/libfips-lib-cryptlib.o", + "crypto/libfips-lib-ctype.o", + "crypto/libfips-lib-der_writer.o", + "crypto/libfips-lib-ex_data.o", + "crypto/libfips-lib-initthread.o", + "crypto/libfips-lib-o_str.o", + "crypto/libfips-lib-packet.o", + "crypto/libfips-lib-param_build.o", + "crypto/libfips-lib-param_build_set.o", + "crypto/libfips-lib-params.o", + "crypto/libfips-lib-params_dup.o", + "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", + "crypto/libfips-lib-provider_core.o", + "crypto/libfips-lib-provider_predefined.o", + "crypto/libfips-lib-riscv64cpuid.o", + "crypto/libfips-lib-riscvcap.o", + "crypto/libfips-lib-self_test_core.o", + "crypto/libfips-lib-sparse_array.o", + "crypto/libfips-lib-threads_lib.o", + "crypto/libfips-lib-threads_none.o", + "crypto/libfips-lib-threads_pthread.o", + "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/aes" => { + "deps" => [ + "crypto/aes/libcrypto-lib-aes-riscv64-zkn.o", + "crypto/aes/libcrypto-lib-aes-riscv64-zvbb-zvkg-zvkned.o", + "crypto/aes/libcrypto-lib-aes-riscv64-zvkb-zvkned.o", + "crypto/aes/libcrypto-lib-aes-riscv64-zvkned.o", + "crypto/aes/libcrypto-lib-aes-riscv64.o", + "crypto/aes/libcrypto-lib-aes_cbc.o", + "crypto/aes/libcrypto-lib-aes_cfb.o", + "crypto/aes/libcrypto-lib-aes_ecb.o", + "crypto/aes/libcrypto-lib-aes_ige.o", + "crypto/aes/libcrypto-lib-aes_misc.o", + "crypto/aes/libcrypto-lib-aes_ofb.o", + "crypto/aes/libcrypto-lib-aes_wrap.o", + "crypto/aes/libfips-lib-aes-riscv64-zkn.o", + "crypto/aes/libfips-lib-aes-riscv64-zvbb-zvkg-zvkned.o", + "crypto/aes/libfips-lib-aes-riscv64-zvkb-zvkned.o", + "crypto/aes/libfips-lib-aes-riscv64-zvkned.o", + "crypto/aes/libfips-lib-aes-riscv64.o", + "crypto/aes/libfips-lib-aes_cbc.o", + "crypto/aes/libfips-lib-aes_ecb.o", + "crypto/aes/libfips-lib-aes_misc.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/aria" => { + "deps" => [ + "crypto/aria/libcrypto-lib-aria.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/asn1" => { + "deps" => [ + "crypto/asn1/libcrypto-lib-a_bitstr.o", + "crypto/asn1/libcrypto-lib-a_d2i_fp.o", + "crypto/asn1/libcrypto-lib-a_digest.o", + "crypto/asn1/libcrypto-lib-a_dup.o", + "crypto/asn1/libcrypto-lib-a_gentm.o", + "crypto/asn1/libcrypto-lib-a_i2d_fp.o", + "crypto/asn1/libcrypto-lib-a_int.o", + "crypto/asn1/libcrypto-lib-a_mbstr.o", + "crypto/asn1/libcrypto-lib-a_object.o", + "crypto/asn1/libcrypto-lib-a_octet.o", + "crypto/asn1/libcrypto-lib-a_print.o", + "crypto/asn1/libcrypto-lib-a_sign.o", + "crypto/asn1/libcrypto-lib-a_strex.o", + "crypto/asn1/libcrypto-lib-a_strnid.o", + "crypto/asn1/libcrypto-lib-a_time.o", + "crypto/asn1/libcrypto-lib-a_type.o", + "crypto/asn1/libcrypto-lib-a_utctm.o", + "crypto/asn1/libcrypto-lib-a_utf8.o", + "crypto/asn1/libcrypto-lib-a_verify.o", + "crypto/asn1/libcrypto-lib-ameth_lib.o", + "crypto/asn1/libcrypto-lib-asn1_err.o", + "crypto/asn1/libcrypto-lib-asn1_gen.o", + "crypto/asn1/libcrypto-lib-asn1_item_list.o", + "crypto/asn1/libcrypto-lib-asn1_lib.o", + "crypto/asn1/libcrypto-lib-asn1_parse.o", + "crypto/asn1/libcrypto-lib-asn_mime.o", + "crypto/asn1/libcrypto-lib-asn_moid.o", + "crypto/asn1/libcrypto-lib-asn_mstbl.o", + "crypto/asn1/libcrypto-lib-asn_pack.o", + "crypto/asn1/libcrypto-lib-bio_asn1.o", + "crypto/asn1/libcrypto-lib-bio_ndef.o", + "crypto/asn1/libcrypto-lib-d2i_param.o", + "crypto/asn1/libcrypto-lib-d2i_pr.o", + "crypto/asn1/libcrypto-lib-d2i_pu.o", + "crypto/asn1/libcrypto-lib-evp_asn1.o", + "crypto/asn1/libcrypto-lib-f_int.o", + "crypto/asn1/libcrypto-lib-f_string.o", + "crypto/asn1/libcrypto-lib-i2d_evp.o", + "crypto/asn1/libcrypto-lib-n_pkey.o", + "crypto/asn1/libcrypto-lib-nsseq.o", + "crypto/asn1/libcrypto-lib-p5_pbe.o", + "crypto/asn1/libcrypto-lib-p5_pbev2.o", + "crypto/asn1/libcrypto-lib-p5_scrypt.o", + "crypto/asn1/libcrypto-lib-p8_pkey.o", + "crypto/asn1/libcrypto-lib-t_bitst.o", + "crypto/asn1/libcrypto-lib-t_pkey.o", + "crypto/asn1/libcrypto-lib-t_spki.o", + "crypto/asn1/libcrypto-lib-tasn_dec.o", + "crypto/asn1/libcrypto-lib-tasn_enc.o", + "crypto/asn1/libcrypto-lib-tasn_fre.o", + "crypto/asn1/libcrypto-lib-tasn_new.o", + "crypto/asn1/libcrypto-lib-tasn_prn.o", + "crypto/asn1/libcrypto-lib-tasn_scn.o", + "crypto/asn1/libcrypto-lib-tasn_typ.o", + "crypto/asn1/libcrypto-lib-tasn_utl.o", + "crypto/asn1/libcrypto-lib-x_algor.o", + "crypto/asn1/libcrypto-lib-x_bignum.o", + "crypto/asn1/libcrypto-lib-x_info.o", + "crypto/asn1/libcrypto-lib-x_int64.o", + "crypto/asn1/libcrypto-lib-x_long.o", + "crypto/asn1/libcrypto-lib-x_pkey.o", + "crypto/asn1/libcrypto-lib-x_sig.o", + "crypto/asn1/libcrypto-lib-x_spki.o", + "crypto/asn1/libcrypto-lib-x_val.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/async" => { + "deps" => [ + "crypto/async/libcrypto-lib-async.o", + "crypto/async/libcrypto-lib-async_err.o", + "crypto/async/libcrypto-lib-async_wait.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/async/arch" => { + "deps" => [ + "crypto/async/arch/libcrypto-lib-async_null.o", + "crypto/async/arch/libcrypto-lib-async_posix.o", + "crypto/async/arch/libcrypto-lib-async_win.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/bf" => { + "deps" => [ + "crypto/bf/libcrypto-lib-bf_cfb64.o", + "crypto/bf/libcrypto-lib-bf_ecb.o", + "crypto/bf/libcrypto-lib-bf_enc.o", + "crypto/bf/libcrypto-lib-bf_ofb64.o", + "crypto/bf/libcrypto-lib-bf_skey.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/bio" => { + "deps" => [ + "crypto/bio/libcrypto-lib-bf_buff.o", + "crypto/bio/libcrypto-lib-bf_lbuf.o", + "crypto/bio/libcrypto-lib-bf_nbio.o", + "crypto/bio/libcrypto-lib-bf_null.o", + "crypto/bio/libcrypto-lib-bf_prefix.o", + "crypto/bio/libcrypto-lib-bf_readbuff.o", + "crypto/bio/libcrypto-lib-bio_addr.o", + "crypto/bio/libcrypto-lib-bio_cb.o", + "crypto/bio/libcrypto-lib-bio_dump.o", + "crypto/bio/libcrypto-lib-bio_err.o", + "crypto/bio/libcrypto-lib-bio_lib.o", + "crypto/bio/libcrypto-lib-bio_meth.o", + "crypto/bio/libcrypto-lib-bio_print.o", + "crypto/bio/libcrypto-lib-bio_sock.o", + "crypto/bio/libcrypto-lib-bio_sock2.o", + "crypto/bio/libcrypto-lib-bss_acpt.o", + "crypto/bio/libcrypto-lib-bss_bio.o", + "crypto/bio/libcrypto-lib-bss_conn.o", + "crypto/bio/libcrypto-lib-bss_core.o", + "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", + "crypto/bio/libcrypto-lib-bss_fd.o", + "crypto/bio/libcrypto-lib-bss_file.o", + "crypto/bio/libcrypto-lib-bss_log.o", + "crypto/bio/libcrypto-lib-bss_mem.o", + "crypto/bio/libcrypto-lib-bss_null.o", + "crypto/bio/libcrypto-lib-bss_sock.o", + "crypto/bio/libcrypto-lib-ossl_core_bio.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/bn" => { + "deps" => [ + "crypto/bn/libcrypto-lib-bn_add.o", + "crypto/bn/libcrypto-lib-bn_asm.o", + "crypto/bn/libcrypto-lib-bn_blind.o", + "crypto/bn/libcrypto-lib-bn_const.o", + "crypto/bn/libcrypto-lib-bn_conv.o", + "crypto/bn/libcrypto-lib-bn_ctx.o", + "crypto/bn/libcrypto-lib-bn_depr.o", + "crypto/bn/libcrypto-lib-bn_dh.o", + "crypto/bn/libcrypto-lib-bn_div.o", + "crypto/bn/libcrypto-lib-bn_err.o", + "crypto/bn/libcrypto-lib-bn_exp.o", + "crypto/bn/libcrypto-lib-bn_exp2.o", + "crypto/bn/libcrypto-lib-bn_gcd.o", + "crypto/bn/libcrypto-lib-bn_gf2m.o", + "crypto/bn/libcrypto-lib-bn_intern.o", + "crypto/bn/libcrypto-lib-bn_kron.o", + "crypto/bn/libcrypto-lib-bn_lib.o", + "crypto/bn/libcrypto-lib-bn_mod.o", + "crypto/bn/libcrypto-lib-bn_mont.o", + "crypto/bn/libcrypto-lib-bn_mpi.o", + "crypto/bn/libcrypto-lib-bn_mul.o", + "crypto/bn/libcrypto-lib-bn_nist.o", + "crypto/bn/libcrypto-lib-bn_prime.o", + "crypto/bn/libcrypto-lib-bn_print.o", + "crypto/bn/libcrypto-lib-bn_rand.o", + "crypto/bn/libcrypto-lib-bn_recp.o", + "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o", + "crypto/bn/libcrypto-lib-bn_shift.o", + "crypto/bn/libcrypto-lib-bn_sqr.o", + "crypto/bn/libcrypto-lib-bn_sqrt.o", + "crypto/bn/libcrypto-lib-bn_srp.o", + "crypto/bn/libcrypto-lib-bn_word.o", + "crypto/bn/libcrypto-lib-bn_x931p.o", + "crypto/bn/libfips-lib-bn_add.o", + "crypto/bn/libfips-lib-bn_asm.o", + "crypto/bn/libfips-lib-bn_blind.o", + "crypto/bn/libfips-lib-bn_const.o", + "crypto/bn/libfips-lib-bn_conv.o", + "crypto/bn/libfips-lib-bn_ctx.o", + "crypto/bn/libfips-lib-bn_dh.o", + "crypto/bn/libfips-lib-bn_div.o", + "crypto/bn/libfips-lib-bn_exp.o", + "crypto/bn/libfips-lib-bn_exp2.o", + "crypto/bn/libfips-lib-bn_gcd.o", + "crypto/bn/libfips-lib-bn_gf2m.o", + "crypto/bn/libfips-lib-bn_intern.o", + "crypto/bn/libfips-lib-bn_kron.o", + "crypto/bn/libfips-lib-bn_lib.o", + "crypto/bn/libfips-lib-bn_mod.o", + "crypto/bn/libfips-lib-bn_mont.o", + "crypto/bn/libfips-lib-bn_mpi.o", + "crypto/bn/libfips-lib-bn_mul.o", + "crypto/bn/libfips-lib-bn_nist.o", + "crypto/bn/libfips-lib-bn_prime.o", + "crypto/bn/libfips-lib-bn_rand.o", + "crypto/bn/libfips-lib-bn_recp.o", + "crypto/bn/libfips-lib-bn_rsa_fips186_4.o", + "crypto/bn/libfips-lib-bn_shift.o", + "crypto/bn/libfips-lib-bn_sqr.o", + "crypto/bn/libfips-lib-bn_sqrt.o", + "crypto/bn/libfips-lib-bn_word.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/buffer" => { + "deps" => [ + "crypto/buffer/libcrypto-lib-buf_err.o", + "crypto/buffer/libcrypto-lib-buffer.o", + "crypto/buffer/libfips-lib-buffer.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/camellia" => { + "deps" => [ + "crypto/camellia/libcrypto-lib-camellia.o", + "crypto/camellia/libcrypto-lib-cmll_cbc.o", + "crypto/camellia/libcrypto-lib-cmll_cfb.o", + "crypto/camellia/libcrypto-lib-cmll_ctr.o", + "crypto/camellia/libcrypto-lib-cmll_ecb.o", + "crypto/camellia/libcrypto-lib-cmll_misc.o", + "crypto/camellia/libcrypto-lib-cmll_ofb.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/cast" => { + "deps" => [ + "crypto/cast/libcrypto-lib-c_cfb64.o", + "crypto/cast/libcrypto-lib-c_ecb.o", + "crypto/cast/libcrypto-lib-c_enc.o", + "crypto/cast/libcrypto-lib-c_ofb64.o", + "crypto/cast/libcrypto-lib-c_skey.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/chacha" => { + "deps" => [ + "crypto/chacha/libcrypto-lib-chacha-riscv64-v-zbb-zvkb.o", + "crypto/chacha/libcrypto-lib-chacha-riscv64-v-zbb.o", + "crypto/chacha/libcrypto-lib-chacha_enc.o", + "crypto/chacha/libcrypto-lib-chacha_riscv.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/cmac" => { + "deps" => [ + "crypto/cmac/libcrypto-lib-cmac.o", + "crypto/cmac/libfips-lib-cmac.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/cmp" => { + "deps" => [ + "crypto/cmp/libcrypto-lib-cmp_asn.o", + "crypto/cmp/libcrypto-lib-cmp_client.o", + "crypto/cmp/libcrypto-lib-cmp_ctx.o", + "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", + "crypto/cmp/libcrypto-lib-cmp_hdr.o", + "crypto/cmp/libcrypto-lib-cmp_http.o", + "crypto/cmp/libcrypto-lib-cmp_msg.o", + "crypto/cmp/libcrypto-lib-cmp_protect.o", + "crypto/cmp/libcrypto-lib-cmp_server.o", + "crypto/cmp/libcrypto-lib-cmp_status.o", + "crypto/cmp/libcrypto-lib-cmp_util.o", + "crypto/cmp/libcrypto-lib-cmp_vfy.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/cms" => { + "deps" => [ + "crypto/cms/libcrypto-lib-cms_asn1.o", + "crypto/cms/libcrypto-lib-cms_att.o", + "crypto/cms/libcrypto-lib-cms_cd.o", + "crypto/cms/libcrypto-lib-cms_dd.o", + "crypto/cms/libcrypto-lib-cms_dh.o", + "crypto/cms/libcrypto-lib-cms_ec.o", + "crypto/cms/libcrypto-lib-cms_enc.o", + "crypto/cms/libcrypto-lib-cms_env.o", + "crypto/cms/libcrypto-lib-cms_err.o", + "crypto/cms/libcrypto-lib-cms_ess.o", + "crypto/cms/libcrypto-lib-cms_io.o", + "crypto/cms/libcrypto-lib-cms_kari.o", + "crypto/cms/libcrypto-lib-cms_lib.o", + "crypto/cms/libcrypto-lib-cms_pwri.o", + "crypto/cms/libcrypto-lib-cms_rsa.o", + "crypto/cms/libcrypto-lib-cms_sd.o", + "crypto/cms/libcrypto-lib-cms_smime.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/comp" => { + "deps" => [ + "crypto/comp/libcrypto-lib-c_brotli.o", + "crypto/comp/libcrypto-lib-c_zlib.o", + "crypto/comp/libcrypto-lib-c_zstd.o", + "crypto/comp/libcrypto-lib-comp_err.o", + "crypto/comp/libcrypto-lib-comp_lib.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/conf" => { + "deps" => [ + "crypto/conf/libcrypto-lib-conf_api.o", + "crypto/conf/libcrypto-lib-conf_def.o", + "crypto/conf/libcrypto-lib-conf_err.o", + "crypto/conf/libcrypto-lib-conf_lib.o", + "crypto/conf/libcrypto-lib-conf_mall.o", + "crypto/conf/libcrypto-lib-conf_mod.o", + "crypto/conf/libcrypto-lib-conf_sap.o", + "crypto/conf/libcrypto-lib-conf_ssl.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/crmf" => { + "deps" => [ + "crypto/crmf/libcrypto-lib-crmf_asn.o", + "crypto/crmf/libcrypto-lib-crmf_err.o", + "crypto/crmf/libcrypto-lib-crmf_lib.o", + "crypto/crmf/libcrypto-lib-crmf_pbm.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/ct" => { + "deps" => [ + "crypto/ct/libcrypto-lib-ct_b64.o", + "crypto/ct/libcrypto-lib-ct_err.o", + "crypto/ct/libcrypto-lib-ct_log.o", + "crypto/ct/libcrypto-lib-ct_oct.o", + "crypto/ct/libcrypto-lib-ct_policy.o", + "crypto/ct/libcrypto-lib-ct_prn.o", + "crypto/ct/libcrypto-lib-ct_sct.o", + "crypto/ct/libcrypto-lib-ct_sct_ctx.o", + "crypto/ct/libcrypto-lib-ct_vfy.o", + "crypto/ct/libcrypto-lib-ct_x509v3.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/des" => { + "deps" => [ + "crypto/des/libcrypto-lib-cbc_cksm.o", + "crypto/des/libcrypto-lib-cbc_enc.o", + "crypto/des/libcrypto-lib-cfb64ede.o", + "crypto/des/libcrypto-lib-cfb64enc.o", + "crypto/des/libcrypto-lib-cfb_enc.o", + "crypto/des/libcrypto-lib-des_enc.o", + "crypto/des/libcrypto-lib-ecb3_enc.o", + "crypto/des/libcrypto-lib-ecb_enc.o", + "crypto/des/libcrypto-lib-fcrypt.o", + "crypto/des/libcrypto-lib-fcrypt_b.o", + "crypto/des/libcrypto-lib-ofb64ede.o", + "crypto/des/libcrypto-lib-ofb64enc.o", + "crypto/des/libcrypto-lib-ofb_enc.o", + "crypto/des/libcrypto-lib-pcbc_enc.o", + "crypto/des/libcrypto-lib-qud_cksm.o", + "crypto/des/libcrypto-lib-rand_key.o", + "crypto/des/libcrypto-lib-set_key.o", + "crypto/des/libcrypto-lib-str2key.o", + "crypto/des/libcrypto-lib-xcbc_enc.o", + "crypto/des/libfips-lib-des_enc.o", + "crypto/des/libfips-lib-ecb3_enc.o", + "crypto/des/libfips-lib-fcrypt_b.o", + "crypto/des/libfips-lib-set_key.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/dh" => { + "deps" => [ + "crypto/dh/libcrypto-lib-dh_ameth.o", + "crypto/dh/libcrypto-lib-dh_asn1.o", + "crypto/dh/libcrypto-lib-dh_backend.o", + "crypto/dh/libcrypto-lib-dh_check.o", + "crypto/dh/libcrypto-lib-dh_depr.o", + "crypto/dh/libcrypto-lib-dh_err.o", + "crypto/dh/libcrypto-lib-dh_gen.o", + "crypto/dh/libcrypto-lib-dh_group_params.o", + "crypto/dh/libcrypto-lib-dh_kdf.o", + "crypto/dh/libcrypto-lib-dh_key.o", + "crypto/dh/libcrypto-lib-dh_lib.o", + "crypto/dh/libcrypto-lib-dh_meth.o", + "crypto/dh/libcrypto-lib-dh_pmeth.o", + "crypto/dh/libcrypto-lib-dh_prn.o", + "crypto/dh/libcrypto-lib-dh_rfc5114.o", + "crypto/dh/libfips-lib-dh_backend.o", + "crypto/dh/libfips-lib-dh_check.o", + "crypto/dh/libfips-lib-dh_gen.o", + "crypto/dh/libfips-lib-dh_group_params.o", + "crypto/dh/libfips-lib-dh_kdf.o", + "crypto/dh/libfips-lib-dh_key.o", + "crypto/dh/libfips-lib-dh_lib.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/dsa" => { + "deps" => [ + "crypto/dsa/libcrypto-lib-dsa_ameth.o", + "crypto/dsa/libcrypto-lib-dsa_asn1.o", + "crypto/dsa/libcrypto-lib-dsa_backend.o", + "crypto/dsa/libcrypto-lib-dsa_check.o", + "crypto/dsa/libcrypto-lib-dsa_depr.o", + "crypto/dsa/libcrypto-lib-dsa_err.o", + "crypto/dsa/libcrypto-lib-dsa_gen.o", + "crypto/dsa/libcrypto-lib-dsa_key.o", + "crypto/dsa/libcrypto-lib-dsa_lib.o", + "crypto/dsa/libcrypto-lib-dsa_meth.o", + "crypto/dsa/libcrypto-lib-dsa_ossl.o", + "crypto/dsa/libcrypto-lib-dsa_pmeth.o", + "crypto/dsa/libcrypto-lib-dsa_prn.o", + "crypto/dsa/libcrypto-lib-dsa_sign.o", + "crypto/dsa/libcrypto-lib-dsa_vrf.o", + "crypto/dsa/libfips-lib-dsa_backend.o", + "crypto/dsa/libfips-lib-dsa_check.o", + "crypto/dsa/libfips-lib-dsa_gen.o", + "crypto/dsa/libfips-lib-dsa_key.o", + "crypto/dsa/libfips-lib-dsa_lib.o", + "crypto/dsa/libfips-lib-dsa_ossl.o", + "crypto/dsa/libfips-lib-dsa_sign.o", + "crypto/dsa/libfips-lib-dsa_vrf.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/dso" => { + "deps" => [ + "crypto/dso/libcrypto-lib-dso_dl.o", + "crypto/dso/libcrypto-lib-dso_dlfcn.o", + "crypto/dso/libcrypto-lib-dso_err.o", + "crypto/dso/libcrypto-lib-dso_lib.o", + "crypto/dso/libcrypto-lib-dso_openssl.o", + "crypto/dso/libcrypto-lib-dso_vms.o", + "crypto/dso/libcrypto-lib-dso_win32.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/ec" => { + "deps" => [ + "crypto/ec/libcrypto-lib-curve25519.o", + "crypto/ec/libcrypto-lib-ec2_oct.o", + "crypto/ec/libcrypto-lib-ec2_smpl.o", + "crypto/ec/libcrypto-lib-ec_ameth.o", + "crypto/ec/libcrypto-lib-ec_asn1.o", + "crypto/ec/libcrypto-lib-ec_backend.o", + "crypto/ec/libcrypto-lib-ec_check.o", + "crypto/ec/libcrypto-lib-ec_curve.o", + "crypto/ec/libcrypto-lib-ec_cvt.o", + "crypto/ec/libcrypto-lib-ec_deprecated.o", + "crypto/ec/libcrypto-lib-ec_err.o", + "crypto/ec/libcrypto-lib-ec_key.o", + "crypto/ec/libcrypto-lib-ec_kmeth.o", + "crypto/ec/libcrypto-lib-ec_lib.o", + "crypto/ec/libcrypto-lib-ec_mult.o", + "crypto/ec/libcrypto-lib-ec_oct.o", + "crypto/ec/libcrypto-lib-ec_pmeth.o", + "crypto/ec/libcrypto-lib-ec_print.o", + "crypto/ec/libcrypto-lib-ecdh_kdf.o", + "crypto/ec/libcrypto-lib-ecdh_ossl.o", + "crypto/ec/libcrypto-lib-ecdsa_ossl.o", + "crypto/ec/libcrypto-lib-ecdsa_sign.o", + "crypto/ec/libcrypto-lib-ecdsa_vrf.o", + "crypto/ec/libcrypto-lib-eck_prn.o", + "crypto/ec/libcrypto-lib-ecp_mont.o", + "crypto/ec/libcrypto-lib-ecp_nist.o", + "crypto/ec/libcrypto-lib-ecp_oct.o", + "crypto/ec/libcrypto-lib-ecp_smpl.o", + "crypto/ec/libcrypto-lib-ecx_backend.o", + "crypto/ec/libcrypto-lib-ecx_key.o", + "crypto/ec/libcrypto-lib-ecx_meth.o", + "crypto/ec/libfips-lib-curve25519.o", + "crypto/ec/libfips-lib-ec2_oct.o", + "crypto/ec/libfips-lib-ec2_smpl.o", + "crypto/ec/libfips-lib-ec_asn1.o", + "crypto/ec/libfips-lib-ec_backend.o", + "crypto/ec/libfips-lib-ec_check.o", + "crypto/ec/libfips-lib-ec_curve.o", + "crypto/ec/libfips-lib-ec_cvt.o", + "crypto/ec/libfips-lib-ec_key.o", + "crypto/ec/libfips-lib-ec_kmeth.o", + "crypto/ec/libfips-lib-ec_lib.o", + "crypto/ec/libfips-lib-ec_mult.o", + "crypto/ec/libfips-lib-ec_oct.o", + "crypto/ec/libfips-lib-ecdh_kdf.o", + "crypto/ec/libfips-lib-ecdh_ossl.o", + "crypto/ec/libfips-lib-ecdsa_ossl.o", + "crypto/ec/libfips-lib-ecdsa_sign.o", + "crypto/ec/libfips-lib-ecdsa_vrf.o", + "crypto/ec/libfips-lib-ecp_mont.o", + "crypto/ec/libfips-lib-ecp_nist.o", + "crypto/ec/libfips-lib-ecp_oct.o", + "crypto/ec/libfips-lib-ecp_smpl.o", + "crypto/ec/libfips-lib-ecx_backend.o", + "crypto/ec/libfips-lib-ecx_key.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ec/curve448" => { + "deps" => [ + "crypto/ec/curve448/libcrypto-lib-curve448.o", + "crypto/ec/curve448/libcrypto-lib-curve448_tables.o", + "crypto/ec/curve448/libcrypto-lib-eddsa.o", + "crypto/ec/curve448/libcrypto-lib-f_generic.o", + "crypto/ec/curve448/libcrypto-lib-scalar.o", + "crypto/ec/curve448/libfips-lib-curve448.o", + "crypto/ec/curve448/libfips-lib-curve448_tables.o", + "crypto/ec/curve448/libfips-lib-eddsa.o", + "crypto/ec/curve448/libfips-lib-f_generic.o", + "crypto/ec/curve448/libfips-lib-scalar.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ec/curve448/arch_32" => { + "deps" => [ + "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o", + "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ec/curve448/arch_64" => { + "deps" => [ + "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o", + "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/encode_decode" => { + "deps" => [ + "crypto/encode_decode/libcrypto-lib-decoder_err.o", + "crypto/encode_decode/libcrypto-lib-decoder_lib.o", + "crypto/encode_decode/libcrypto-lib-decoder_meth.o", + "crypto/encode_decode/libcrypto-lib-decoder_pkey.o", + "crypto/encode_decode/libcrypto-lib-encoder_err.o", + "crypto/encode_decode/libcrypto-lib-encoder_lib.o", + "crypto/encode_decode/libcrypto-lib-encoder_meth.o", + "crypto/encode_decode/libcrypto-lib-encoder_pkey.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/engine" => { + "deps" => [ + "crypto/engine/libcrypto-lib-eng_all.o", + "crypto/engine/libcrypto-lib-eng_cnf.o", + "crypto/engine/libcrypto-lib-eng_ctrl.o", + "crypto/engine/libcrypto-lib-eng_dyn.o", + "crypto/engine/libcrypto-lib-eng_err.o", + "crypto/engine/libcrypto-lib-eng_fat.o", + "crypto/engine/libcrypto-lib-eng_init.o", + "crypto/engine/libcrypto-lib-eng_lib.o", + "crypto/engine/libcrypto-lib-eng_list.o", + "crypto/engine/libcrypto-lib-eng_openssl.o", + "crypto/engine/libcrypto-lib-eng_pkey.o", + "crypto/engine/libcrypto-lib-eng_rdrand.o", + "crypto/engine/libcrypto-lib-eng_table.o", + "crypto/engine/libcrypto-lib-tb_asnmth.o", + "crypto/engine/libcrypto-lib-tb_cipher.o", + "crypto/engine/libcrypto-lib-tb_dh.o", + "crypto/engine/libcrypto-lib-tb_digest.o", + "crypto/engine/libcrypto-lib-tb_dsa.o", + "crypto/engine/libcrypto-lib-tb_eckey.o", + "crypto/engine/libcrypto-lib-tb_pkmeth.o", + "crypto/engine/libcrypto-lib-tb_rand.o", + "crypto/engine/libcrypto-lib-tb_rsa.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/err" => { + "deps" => [ + "crypto/err/libcrypto-lib-err.o", + "crypto/err/libcrypto-lib-err_all.o", + "crypto/err/libcrypto-lib-err_all_legacy.o", + "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/ess" => { + "deps" => [ + "crypto/ess/libcrypto-lib-ess_asn1.o", + "crypto/ess/libcrypto-lib-ess_err.o", + "crypto/ess/libcrypto-lib-ess_lib.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/evp" => { + "deps" => [ + "crypto/evp/libcrypto-lib-asymcipher.o", + "crypto/evp/libcrypto-lib-bio_b64.o", + "crypto/evp/libcrypto-lib-bio_enc.o", + "crypto/evp/libcrypto-lib-bio_md.o", + "crypto/evp/libcrypto-lib-bio_ok.o", + "crypto/evp/libcrypto-lib-c_allc.o", + "crypto/evp/libcrypto-lib-c_alld.o", + "crypto/evp/libcrypto-lib-cmeth_lib.o", + "crypto/evp/libcrypto-lib-ctrl_params_translate.o", + "crypto/evp/libcrypto-lib-dh_ctrl.o", + "crypto/evp/libcrypto-lib-dh_support.o", + "crypto/evp/libcrypto-lib-digest.o", + "crypto/evp/libcrypto-lib-dsa_ctrl.o", + "crypto/evp/libcrypto-lib-e_aes.o", + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o", + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o", + "crypto/evp/libcrypto-lib-e_aria.o", + "crypto/evp/libcrypto-lib-e_bf.o", + "crypto/evp/libcrypto-lib-e_camellia.o", + "crypto/evp/libcrypto-lib-e_cast.o", + "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o", + "crypto/evp/libcrypto-lib-e_des.o", + "crypto/evp/libcrypto-lib-e_des3.o", + "crypto/evp/libcrypto-lib-e_idea.o", + "crypto/evp/libcrypto-lib-e_null.o", + "crypto/evp/libcrypto-lib-e_old.o", + "crypto/evp/libcrypto-lib-e_rc2.o", + "crypto/evp/libcrypto-lib-e_rc4.o", + "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o", + "crypto/evp/libcrypto-lib-e_rc5.o", + "crypto/evp/libcrypto-lib-e_seed.o", + "crypto/evp/libcrypto-lib-e_sm4.o", + "crypto/evp/libcrypto-lib-e_xcbc_d.o", + "crypto/evp/libcrypto-lib-ec_ctrl.o", + "crypto/evp/libcrypto-lib-ec_support.o", + "crypto/evp/libcrypto-lib-encode.o", + "crypto/evp/libcrypto-lib-evp_cnf.o", + "crypto/evp/libcrypto-lib-evp_enc.o", + "crypto/evp/libcrypto-lib-evp_err.o", + "crypto/evp/libcrypto-lib-evp_fetch.o", + "crypto/evp/libcrypto-lib-evp_key.o", + "crypto/evp/libcrypto-lib-evp_lib.o", + "crypto/evp/libcrypto-lib-evp_pbe.o", + "crypto/evp/libcrypto-lib-evp_pkey.o", + "crypto/evp/libcrypto-lib-evp_rand.o", + "crypto/evp/libcrypto-lib-evp_utils.o", + "crypto/evp/libcrypto-lib-exchange.o", + "crypto/evp/libcrypto-lib-kdf_lib.o", + "crypto/evp/libcrypto-lib-kdf_meth.o", + "crypto/evp/libcrypto-lib-kem.o", + "crypto/evp/libcrypto-lib-keymgmt_lib.o", + "crypto/evp/libcrypto-lib-keymgmt_meth.o", + "crypto/evp/libcrypto-lib-legacy_blake2.o", + "crypto/evp/libcrypto-lib-legacy_md4.o", + "crypto/evp/libcrypto-lib-legacy_md5.o", + "crypto/evp/libcrypto-lib-legacy_md5_sha1.o", + "crypto/evp/libcrypto-lib-legacy_mdc2.o", + "crypto/evp/libcrypto-lib-legacy_ripemd.o", + "crypto/evp/libcrypto-lib-legacy_sha.o", + "crypto/evp/libcrypto-lib-legacy_wp.o", + "crypto/evp/libcrypto-lib-m_null.o", + "crypto/evp/libcrypto-lib-m_sigver.o", + "crypto/evp/libcrypto-lib-mac_lib.o", + "crypto/evp/libcrypto-lib-mac_meth.o", + "crypto/evp/libcrypto-lib-names.o", + "crypto/evp/libcrypto-lib-p5_crpt.o", + "crypto/evp/libcrypto-lib-p5_crpt2.o", + "crypto/evp/libcrypto-lib-p_dec.o", + "crypto/evp/libcrypto-lib-p_enc.o", + "crypto/evp/libcrypto-lib-p_legacy.o", + "crypto/evp/libcrypto-lib-p_lib.o", + "crypto/evp/libcrypto-lib-p_open.o", + "crypto/evp/libcrypto-lib-p_seal.o", + "crypto/evp/libcrypto-lib-p_sign.o", + "crypto/evp/libcrypto-lib-p_verify.o", + "crypto/evp/libcrypto-lib-pbe_scrypt.o", + "crypto/evp/libcrypto-lib-pmeth_check.o", + "crypto/evp/libcrypto-lib-pmeth_gn.o", + "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", + "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", + "crypto/evp/libfips-lib-asymcipher.o", + "crypto/evp/libfips-lib-dh_support.o", + "crypto/evp/libfips-lib-digest.o", + "crypto/evp/libfips-lib-ec_support.o", + "crypto/evp/libfips-lib-evp_enc.o", + "crypto/evp/libfips-lib-evp_fetch.o", + "crypto/evp/libfips-lib-evp_lib.o", + "crypto/evp/libfips-lib-evp_rand.o", + "crypto/evp/libfips-lib-evp_utils.o", + "crypto/evp/libfips-lib-exchange.o", + "crypto/evp/libfips-lib-kdf_lib.o", + "crypto/evp/libfips-lib-kdf_meth.o", + "crypto/evp/libfips-lib-kem.o", + "crypto/evp/libfips-lib-keymgmt_lib.o", + "crypto/evp/libfips-lib-keymgmt_meth.o", + "crypto/evp/libfips-lib-mac_lib.o", + "crypto/evp/libfips-lib-mac_meth.o", + "crypto/evp/libfips-lib-p_lib.o", + "crypto/evp/libfips-lib-pmeth_check.o", + "crypto/evp/libfips-lib-pmeth_gn.o", + "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ffc" => { + "deps" => [ + "crypto/ffc/libcrypto-lib-ffc_backend.o", + "crypto/ffc/libcrypto-lib-ffc_dh.o", + "crypto/ffc/libcrypto-lib-ffc_key_generate.o", + "crypto/ffc/libcrypto-lib-ffc_key_validate.o", + "crypto/ffc/libcrypto-lib-ffc_params.o", + "crypto/ffc/libcrypto-lib-ffc_params_generate.o", + "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/ffc/libfips-lib-ffc_backend.o", + "crypto/ffc/libfips-lib-ffc_dh.o", + "crypto/ffc/libfips-lib-ffc_key_generate.o", + "crypto/ffc/libfips-lib-ffc_key_validate.o", + "crypto/ffc/libfips-lib-ffc_params.o", + "crypto/ffc/libfips-lib-ffc_params_generate.o", + "crypto/ffc/libfips-lib-ffc_params_validate.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/hashtable" => { + "deps" => [ + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/hmac" => { + "deps" => [ + "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hmac/libfips-lib-hmac.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/hpke" => { + "deps" => [ + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/http" => { + "deps" => [ + "crypto/http/libcrypto-lib-http_client.o", + "crypto/http/libcrypto-lib-http_err.o", + "crypto/http/libcrypto-lib-http_lib.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/idea" => { + "deps" => [ + "crypto/idea/libcrypto-lib-i_cbc.o", + "crypto/idea/libcrypto-lib-i_cfb64.o", + "crypto/idea/libcrypto-lib-i_ecb.o", + "crypto/idea/libcrypto-lib-i_ofb64.o", + "crypto/idea/libcrypto-lib-i_skey.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/kdf" => { + "deps" => [ + "crypto/kdf/libcrypto-lib-kdf_err.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/lhash" => { + "deps" => [ + "crypto/lhash/libcrypto-lib-lh_stats.o", + "crypto/lhash/libcrypto-lib-lhash.o", + "crypto/lhash/libfips-lib-lhash.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/md4" => { + "deps" => [ + "crypto/md4/libcrypto-lib-md4_dgst.o", + "crypto/md4/libcrypto-lib-md4_one.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/md5" => { + "deps" => [ + "crypto/md5/libcrypto-lib-md5_dgst.o", + "crypto/md5/libcrypto-lib-md5_one.o", + "crypto/md5/libcrypto-lib-md5_sha1.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/mdc2" => { + "deps" => [ + "crypto/mdc2/libcrypto-lib-mdc2_one.o", + "crypto/mdc2/libcrypto-lib-mdc2dgst.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/ml_dsa" => { + "deps" => [ + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ml_kem" => { + "deps" => [ + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/ml_kem/libfips-lib-ml_kem.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/modes" => { + "deps" => [ + "crypto/modes/libcrypto-lib-aes-gcm-riscv64-zvkb-zvkg-zvkned.o", + "crypto/modes/libcrypto-lib-cbc128.o", + "crypto/modes/libcrypto-lib-ccm128.o", + "crypto/modes/libcrypto-lib-cfb128.o", + "crypto/modes/libcrypto-lib-ctr128.o", + "crypto/modes/libcrypto-lib-cts128.o", + "crypto/modes/libcrypto-lib-gcm128.o", + "crypto/modes/libcrypto-lib-ghash-riscv64-zvkb-zvbc.o", + "crypto/modes/libcrypto-lib-ghash-riscv64-zvkg.o", + "crypto/modes/libcrypto-lib-ghash-riscv64.o", + "crypto/modes/libcrypto-lib-ocb128.o", + "crypto/modes/libcrypto-lib-ofb128.o", + "crypto/modes/libcrypto-lib-siv128.o", + "crypto/modes/libcrypto-lib-wrap128.o", + "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", + "crypto/modes/libfips-lib-aes-gcm-riscv64-zvkb-zvkg-zvkned.o", + "crypto/modes/libfips-lib-cbc128.o", + "crypto/modes/libfips-lib-ccm128.o", + "crypto/modes/libfips-lib-cfb128.o", + "crypto/modes/libfips-lib-ctr128.o", + "crypto/modes/libfips-lib-gcm128.o", + "crypto/modes/libfips-lib-ghash-riscv64-zvkb-zvbc.o", + "crypto/modes/libfips-lib-ghash-riscv64-zvkg.o", + "crypto/modes/libfips-lib-ghash-riscv64.o", + "crypto/modes/libfips-lib-ofb128.o", + "crypto/modes/libfips-lib-wrap128.o", + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/objects" => { + "deps" => [ + "crypto/objects/libcrypto-lib-o_names.o", + "crypto/objects/libcrypto-lib-obj_dat.o", + "crypto/objects/libcrypto-lib-obj_err.o", + "crypto/objects/libcrypto-lib-obj_lib.o", + "crypto/objects/libcrypto-lib-obj_xref.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/ocsp" => { + "deps" => [ + "crypto/ocsp/libcrypto-lib-ocsp_asn.o", + "crypto/ocsp/libcrypto-lib-ocsp_cl.o", + "crypto/ocsp/libcrypto-lib-ocsp_err.o", + "crypto/ocsp/libcrypto-lib-ocsp_ext.o", + "crypto/ocsp/libcrypto-lib-ocsp_http.o", + "crypto/ocsp/libcrypto-lib-ocsp_lib.o", + "crypto/ocsp/libcrypto-lib-ocsp_prn.o", + "crypto/ocsp/libcrypto-lib-ocsp_srv.o", + "crypto/ocsp/libcrypto-lib-ocsp_vfy.o", + "crypto/ocsp/libcrypto-lib-v3_ocsp.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/pem" => { + "deps" => [ + "crypto/pem/libcrypto-lib-pem_all.o", + "crypto/pem/libcrypto-lib-pem_err.o", + "crypto/pem/libcrypto-lib-pem_info.o", + "crypto/pem/libcrypto-lib-pem_lib.o", + "crypto/pem/libcrypto-lib-pem_oth.o", + "crypto/pem/libcrypto-lib-pem_pk8.o", + "crypto/pem/libcrypto-lib-pem_pkey.o", + "crypto/pem/libcrypto-lib-pem_sign.o", + "crypto/pem/libcrypto-lib-pem_x509.o", + "crypto/pem/libcrypto-lib-pem_xaux.o", + "crypto/pem/libcrypto-lib-pvkfmt.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/pkcs12" => { + "deps" => [ + "crypto/pkcs12/libcrypto-lib-p12_add.o", + "crypto/pkcs12/libcrypto-lib-p12_asn.o", + "crypto/pkcs12/libcrypto-lib-p12_attr.o", + "crypto/pkcs12/libcrypto-lib-p12_crpt.o", + "crypto/pkcs12/libcrypto-lib-p12_crt.o", + "crypto/pkcs12/libcrypto-lib-p12_decr.o", + "crypto/pkcs12/libcrypto-lib-p12_init.o", + "crypto/pkcs12/libcrypto-lib-p12_key.o", + "crypto/pkcs12/libcrypto-lib-p12_kiss.o", + "crypto/pkcs12/libcrypto-lib-p12_mutl.o", + "crypto/pkcs12/libcrypto-lib-p12_npas.o", + "crypto/pkcs12/libcrypto-lib-p12_p8d.o", + "crypto/pkcs12/libcrypto-lib-p12_p8e.o", + "crypto/pkcs12/libcrypto-lib-p12_sbag.o", + "crypto/pkcs12/libcrypto-lib-p12_utl.o", + "crypto/pkcs12/libcrypto-lib-pk12err.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/pkcs7" => { + "deps" => [ + "crypto/pkcs7/libcrypto-lib-bio_pk7.o", + "crypto/pkcs7/libcrypto-lib-pk7_asn1.o", + "crypto/pkcs7/libcrypto-lib-pk7_attr.o", + "crypto/pkcs7/libcrypto-lib-pk7_doit.o", + "crypto/pkcs7/libcrypto-lib-pk7_lib.o", + "crypto/pkcs7/libcrypto-lib-pk7_mime.o", + "crypto/pkcs7/libcrypto-lib-pk7_smime.o", + "crypto/pkcs7/libcrypto-lib-pkcs7err.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/poly1305" => { + "deps" => [ + "crypto/poly1305/libcrypto-lib-poly1305.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/property" => { + "deps" => [ + "crypto/property/libcrypto-lib-defn_cache.o", + "crypto/property/libcrypto-lib-property.o", + "crypto/property/libcrypto-lib-property_err.o", + "crypto/property/libcrypto-lib-property_parse.o", + "crypto/property/libcrypto-lib-property_query.o", + "crypto/property/libcrypto-lib-property_string.o", + "crypto/property/libfips-lib-defn_cache.o", + "crypto/property/libfips-lib-property.o", + "crypto/property/libfips-lib-property_parse.o", + "crypto/property/libfips-lib-property_query.o", + "crypto/property/libfips-lib-property_string.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/rand" => { + "deps" => [ + "crypto/rand/libcrypto-lib-prov_seed.o", + "crypto/rand/libcrypto-lib-rand_deprecated.o", + "crypto/rand/libcrypto-lib-rand_err.o", + "crypto/rand/libcrypto-lib-rand_lib.o", + "crypto/rand/libcrypto-lib-rand_meth.o", + "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", + "crypto/rand/libcrypto-lib-randfile.o", + "crypto/rand/libfips-lib-rand_lib.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/rc2" => { + "deps" => [ + "crypto/rc2/libcrypto-lib-rc2_cbc.o", + "crypto/rc2/libcrypto-lib-rc2_ecb.o", + "crypto/rc2/libcrypto-lib-rc2_skey.o", + "crypto/rc2/libcrypto-lib-rc2cfb64.o", + "crypto/rc2/libcrypto-lib-rc2ofb64.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/rc4" => { + "deps" => [ + "crypto/rc4/libcrypto-lib-rc4_enc.o", + "crypto/rc4/libcrypto-lib-rc4_skey.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/ripemd" => { + "deps" => [ + "crypto/ripemd/libcrypto-lib-rmd_dgst.o", + "crypto/ripemd/libcrypto-lib-rmd_one.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/rsa" => { + "deps" => [ + "crypto/rsa/libcrypto-lib-rsa_ameth.o", + "crypto/rsa/libcrypto-lib-rsa_asn1.o", + "crypto/rsa/libcrypto-lib-rsa_backend.o", + "crypto/rsa/libcrypto-lib-rsa_chk.o", + "crypto/rsa/libcrypto-lib-rsa_crpt.o", + "crypto/rsa/libcrypto-lib-rsa_depr.o", + "crypto/rsa/libcrypto-lib-rsa_err.o", + "crypto/rsa/libcrypto-lib-rsa_gen.o", + "crypto/rsa/libcrypto-lib-rsa_lib.o", + "crypto/rsa/libcrypto-lib-rsa_meth.o", + "crypto/rsa/libcrypto-lib-rsa_mp.o", + "crypto/rsa/libcrypto-lib-rsa_mp_names.o", + "crypto/rsa/libcrypto-lib-rsa_none.o", + "crypto/rsa/libcrypto-lib-rsa_oaep.o", + "crypto/rsa/libcrypto-lib-rsa_ossl.o", + "crypto/rsa/libcrypto-lib-rsa_pk1.o", + "crypto/rsa/libcrypto-lib-rsa_pmeth.o", + "crypto/rsa/libcrypto-lib-rsa_prn.o", + "crypto/rsa/libcrypto-lib-rsa_pss.o", + "crypto/rsa/libcrypto-lib-rsa_saos.o", + "crypto/rsa/libcrypto-lib-rsa_schemes.o", + "crypto/rsa/libcrypto-lib-rsa_sign.o", + "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o", + "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o", + "crypto/rsa/libcrypto-lib-rsa_x931.o", + "crypto/rsa/libcrypto-lib-rsa_x931g.o", + "crypto/rsa/libfips-lib-rsa_acvp_test_params.o", + "crypto/rsa/libfips-lib-rsa_backend.o", + "crypto/rsa/libfips-lib-rsa_chk.o", + "crypto/rsa/libfips-lib-rsa_crpt.o", + "crypto/rsa/libfips-lib-rsa_gen.o", + "crypto/rsa/libfips-lib-rsa_lib.o", + "crypto/rsa/libfips-lib-rsa_mp_names.o", + "crypto/rsa/libfips-lib-rsa_none.o", + "crypto/rsa/libfips-lib-rsa_oaep.o", + "crypto/rsa/libfips-lib-rsa_ossl.o", + "crypto/rsa/libfips-lib-rsa_pk1.o", + "crypto/rsa/libfips-lib-rsa_pss.o", + "crypto/rsa/libfips-lib-rsa_schemes.o", + "crypto/rsa/libfips-lib-rsa_sign.o", + "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o", + "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o", + "crypto/rsa/libfips-lib-rsa_x931.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/seed" => { + "deps" => [ + "crypto/seed/libcrypto-lib-seed.o", + "crypto/seed/libcrypto-lib-seed_cbc.o", + "crypto/seed/libcrypto-lib-seed_cfb.o", + "crypto/seed/libcrypto-lib-seed_ecb.o", + "crypto/seed/libcrypto-lib-seed_ofb.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/sha" => { + "deps" => [ + "crypto/sha/libcrypto-lib-keccak1600.o", + "crypto/sha/libcrypto-lib-sha1_one.o", + "crypto/sha/libcrypto-lib-sha1dgst.o", + "crypto/sha/libcrypto-lib-sha256-riscv64-zvkb-zvknha_or_zvknhb.o", + "crypto/sha/libcrypto-lib-sha256.o", + "crypto/sha/libcrypto-lib-sha3.o", + "crypto/sha/libcrypto-lib-sha512-riscv64-zvkb-zvknhb.o", + "crypto/sha/libcrypto-lib-sha512.o", + "crypto/sha/libcrypto-lib-sha_riscv.o", + "crypto/sha/libfips-lib-keccak1600.o", + "crypto/sha/libfips-lib-sha1dgst.o", + "crypto/sha/libfips-lib-sha256-riscv64-zvkb-zvknha_or_zvknhb.o", + "crypto/sha/libfips-lib-sha256.o", + "crypto/sha/libfips-lib-sha3.o", + "crypto/sha/libfips-lib-sha512-riscv64-zvkb-zvknhb.o", + "crypto/sha/libfips-lib-sha512.o", + "crypto/sha/libfips-lib-sha_riscv.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/siphash" => { + "deps" => [ + "crypto/siphash/libcrypto-lib-siphash.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/slh_dsa" => { + "deps" => [ + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/sm2" => { + "deps" => [ + "crypto/sm2/libcrypto-lib-sm2_crypt.o", + "crypto/sm2/libcrypto-lib-sm2_err.o", + "crypto/sm2/libcrypto-lib-sm2_key.o", + "crypto/sm2/libcrypto-lib-sm2_sign.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/sm3" => { + "deps" => [ + "crypto/sm3/libcrypto-lib-legacy_sm3.o", + "crypto/sm3/libcrypto-lib-sm3-riscv64-zvksh.o", + "crypto/sm3/libcrypto-lib-sm3.o", + "crypto/sm3/libcrypto-lib-sm3_riscv.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/sm4" => { + "deps" => [ + "crypto/sm4/libcrypto-lib-sm4-riscv64-zvksed.o", + "crypto/sm4/libcrypto-lib-sm4.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/srp" => { + "deps" => [ + "crypto/srp/libcrypto-lib-srp_lib.o", + "crypto/srp/libcrypto-lib-srp_vfy.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/stack" => { + "deps" => [ + "crypto/stack/libcrypto-lib-stack.o", + "crypto/stack/libfips-lib-stack.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/store" => { + "deps" => [ + "crypto/store/libcrypto-lib-store_err.o", + "crypto/store/libcrypto-lib-store_init.o", + "crypto/store/libcrypto-lib-store_lib.o", + "crypto/store/libcrypto-lib-store_meth.o", + "crypto/store/libcrypto-lib-store_register.o", + "crypto/store/libcrypto-lib-store_result.o", + "crypto/store/libcrypto-lib-store_strings.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/thread" => { + "deps" => [ + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/thread/arch" => { + "deps" => [ + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o" + ], + "products" => { + "lib" => [ + "libcrypto", + "providers/libfips.a" + ] + } + }, + "crypto/ts" => { + "deps" => [ + "crypto/ts/libcrypto-lib-ts_asn1.o", + "crypto/ts/libcrypto-lib-ts_conf.o", + "crypto/ts/libcrypto-lib-ts_err.o", + "crypto/ts/libcrypto-lib-ts_lib.o", + "crypto/ts/libcrypto-lib-ts_req_print.o", + "crypto/ts/libcrypto-lib-ts_req_utils.o", + "crypto/ts/libcrypto-lib-ts_rsp_print.o", + "crypto/ts/libcrypto-lib-ts_rsp_sign.o", + "crypto/ts/libcrypto-lib-ts_rsp_utils.o", + "crypto/ts/libcrypto-lib-ts_rsp_verify.o", + "crypto/ts/libcrypto-lib-ts_verify_ctx.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/txt_db" => { + "deps" => [ + "crypto/txt_db/libcrypto-lib-txt_db.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/ui" => { + "deps" => [ + "crypto/ui/libcrypto-lib-ui_err.o", + "crypto/ui/libcrypto-lib-ui_lib.o", + "crypto/ui/libcrypto-lib-ui_null.o", + "crypto/ui/libcrypto-lib-ui_openssl.o", + "crypto/ui/libcrypto-lib-ui_util.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/whrlpool" => { + "deps" => [ + "crypto/whrlpool/libcrypto-lib-wp_block.o", + "crypto/whrlpool/libcrypto-lib-wp_dgst.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "crypto/x509" => { + "deps" => [ + "crypto/x509/libcrypto-lib-by_dir.o", + "crypto/x509/libcrypto-lib-by_file.o", + "crypto/x509/libcrypto-lib-by_store.o", + "crypto/x509/libcrypto-lib-pcy_cache.o", + "crypto/x509/libcrypto-lib-pcy_data.o", + "crypto/x509/libcrypto-lib-pcy_lib.o", + "crypto/x509/libcrypto-lib-pcy_map.o", + "crypto/x509/libcrypto-lib-pcy_node.o", + "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", + "crypto/x509/libcrypto-lib-t_crl.o", + "crypto/x509/libcrypto-lib-t_req.o", + "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", + "crypto/x509/libcrypto-lib-v3_addr.o", + "crypto/x509/libcrypto-lib-v3_admis.o", + "crypto/x509/libcrypto-lib-v3_akeya.o", + "crypto/x509/libcrypto-lib-v3_akid.o", + "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", + "crypto/x509/libcrypto-lib-v3_bcons.o", + "crypto/x509/libcrypto-lib-v3_bitst.o", + "crypto/x509/libcrypto-lib-v3_conf.o", + "crypto/x509/libcrypto-lib-v3_cpols.o", + "crypto/x509/libcrypto-lib-v3_crld.o", + "crypto/x509/libcrypto-lib-v3_enum.o", + "crypto/x509/libcrypto-lib-v3_extku.o", + "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", + "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", + "crypto/x509/libcrypto-lib-v3_info.o", + "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", + "crypto/x509/libcrypto-lib-v3_ist.o", + "crypto/x509/libcrypto-lib-v3_lib.o", + "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", + "crypto/x509/libcrypto-lib-v3_pci.o", + "crypto/x509/libcrypto-lib-v3_pcia.o", + "crypto/x509/libcrypto-lib-v3_pcons.o", + "crypto/x509/libcrypto-lib-v3_pku.o", + "crypto/x509/libcrypto-lib-v3_pmaps.o", + "crypto/x509/libcrypto-lib-v3_prn.o", + "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", + "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", + "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", + "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", + "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", + "crypto/x509/libcrypto-lib-v3_utf8.o", + "crypto/x509/libcrypto-lib-v3_utl.o", + "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", + "crypto/x509/libcrypto-lib-x509_att.o", + "crypto/x509/libcrypto-lib-x509_cmp.o", + "crypto/x509/libcrypto-lib-x509_d2.o", + "crypto/x509/libcrypto-lib-x509_def.o", + "crypto/x509/libcrypto-lib-x509_err.o", + "crypto/x509/libcrypto-lib-x509_ext.o", + "crypto/x509/libcrypto-lib-x509_lu.o", + "crypto/x509/libcrypto-lib-x509_meth.o", + "crypto/x509/libcrypto-lib-x509_obj.o", + "crypto/x509/libcrypto-lib-x509_r2x.o", + "crypto/x509/libcrypto-lib-x509_req.o", + "crypto/x509/libcrypto-lib-x509_set.o", + "crypto/x509/libcrypto-lib-x509_trust.o", + "crypto/x509/libcrypto-lib-x509_txt.o", + "crypto/x509/libcrypto-lib-x509_v3.o", + "crypto/x509/libcrypto-lib-x509_vfy.o", + "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", + "crypto/x509/libcrypto-lib-x509cset.o", + "crypto/x509/libcrypto-lib-x509name.o", + "crypto/x509/libcrypto-lib-x509rset.o", + "crypto/x509/libcrypto-lib-x509spki.o", + "crypto/x509/libcrypto-lib-x509type.o", + "crypto/x509/libcrypto-lib-x_all.o", + "crypto/x509/libcrypto-lib-x_attrib.o", + "crypto/x509/libcrypto-lib-x_crl.o", + "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", + "crypto/x509/libcrypto-lib-x_name.o", + "crypto/x509/libcrypto-lib-x_pubkey.o", + "crypto/x509/libcrypto-lib-x_req.o", + "crypto/x509/libcrypto-lib-x_x509.o", + "crypto/x509/libcrypto-lib-x_x509a.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "engines" => { + "deps" => [ + "engines/libcrypto-lib-e_capi.o", + "engines/libcrypto-lib-e_padlock.o" + ], + "products" => { + "lib" => [ + "libcrypto" + ] + } + }, + "providers" => { + "deps" => [ + "providers/libcrypto-lib-baseprov.o", + "providers/libcrypto-lib-defltprov.o", + "providers/libcrypto-lib-nullprov.o", + "providers/libcrypto-lib-prov_running.o", + "providers/libdefault.a" + ], + "products" => { + "dso" => [ + "providers/fips", + "providers/legacy" + ], + "lib" => [ + "libcrypto", + "providers/libfips.a", + "providers/liblegacy.a" + ] + } + }, + "providers/common" => { + "deps" => [ + "providers/common/libcommon-lib-provider_ctx.o", + "providers/common/libcommon-lib-provider_err.o", + "providers/common/libdefault-lib-bio_prov.o", + "providers/common/libdefault-lib-capabilities.o", + "providers/common/libdefault-lib-digest_to_nid.o", + "providers/common/libdefault-lib-provider_seeding.o", + "providers/common/libdefault-lib-provider_util.o", + "providers/common/libdefault-lib-securitycheck.o", + "providers/common/libdefault-lib-securitycheck_default.o", + "providers/common/libfips-lib-bio_prov.o", + "providers/common/libfips-lib-capabilities.o", + "providers/common/libfips-lib-digest_to_nid.o", + "providers/common/libfips-lib-provider_seeding.o", + "providers/common/libfips-lib-provider_util.o", + "providers/common/libfips-lib-securitycheck.o", + "providers/common/libfips-lib-securitycheck_fips.o" + ], + "products" => { + "lib" => [ + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/common/der" => { + "deps" => [ + "providers/common/der/libcommon-lib-der_digests_gen.o", + "providers/common/der/libcommon-lib-der_dsa_gen.o", + "providers/common/der/libcommon-lib-der_dsa_key.o", + "providers/common/der/libcommon-lib-der_dsa_sig.o", + "providers/common/der/libcommon-lib-der_ec_gen.o", + "providers/common/der/libcommon-lib-der_ec_key.o", + "providers/common/der/libcommon-lib-der_ec_sig.o", + "providers/common/der/libcommon-lib-der_ecx_gen.o", + "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", + "providers/common/der/libcommon-lib-der_rsa_gen.o", + "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", + "providers/common/der/libcommon-lib-der_wrap_gen.o", + "providers/common/der/libdefault-lib-der_rsa_sig.o", + "providers/common/der/libdefault-lib-der_sm2_gen.o", + "providers/common/der/libdefault-lib-der_sm2_key.o", + "providers/common/der/libdefault-lib-der_sm2_sig.o", + "providers/common/der/libfips-lib-der_rsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/fips" => { + "deps" => [ + "providers/fips/fips-dso-fips_entry.o", + "providers/fips/libfips-lib-fipsindicator.o", + "providers/fips/libfips-lib-fipsprov.o", + "providers/fips/libfips-lib-self_test.o", + "providers/fips/libfips-lib-self_test_kats.o" + ], + "products" => { + "dso" => [ + "providers/fips" + ], + "lib" => [ + "providers/libfips.a" + ] + } + }, + "providers/implementations/asymciphers" => { + "deps" => [ + "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o", + "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o", + "providers/implementations/asymciphers/libfips-lib-rsa_enc.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/ciphers" => { + "deps" => [ + "providers/implementations/ciphers/libcommon-lib-ciphercommon.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o", + "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_null.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_cts.o", + "providers/implementations/ciphers/libfips-lib-cipher_tdes.o", + "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o", + "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_des.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o" + ], + "products" => { + "lib" => [ + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a", + "providers/liblegacy.a" + ] + } + }, + "providers/implementations/digests" => { + "deps" => [ + "providers/implementations/digests/libcommon-lib-digestcommon.o", + "providers/implementations/digests/libdefault-lib-blake2_prov.o", + "providers/implementations/digests/libdefault-lib-blake2b_prov.o", + "providers/implementations/digests/libdefault-lib-blake2s_prov.o", + "providers/implementations/digests/libdefault-lib-md5_prov.o", + "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o", + "providers/implementations/digests/libdefault-lib-null_prov.o", + "providers/implementations/digests/libdefault-lib-ripemd_prov.o", + "providers/implementations/digests/libdefault-lib-sha2_prov.o", + "providers/implementations/digests/libdefault-lib-sha3_prov.o", + "providers/implementations/digests/libdefault-lib-sm3_prov.o", + "providers/implementations/digests/libfips-lib-sha2_prov.o", + "providers/implementations/digests/libfips-lib-sha3_prov.o", + "providers/implementations/digests/liblegacy-lib-md4_prov.o", + "providers/implementations/digests/liblegacy-lib-mdc2_prov.o", + "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", + "providers/implementations/digests/liblegacy-lib-wp_prov.o" + ], + "products" => { + "lib" => [ + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a", + "providers/liblegacy.a" + ] + } + }, + "providers/implementations/encode_decode" => { + "deps" => [ + "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o", + "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o", + "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o", + "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o", + "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o", + "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a" + ] + } + }, + "providers/implementations/exchange" => { + "deps" => [ + "providers/implementations/exchange/libdefault-lib-dh_exch.o", + "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", + "providers/implementations/exchange/libdefault-lib-ecx_exch.o", + "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/exchange/libfips-lib-dh_exch.o", + "providers/implementations/exchange/libfips-lib-ecdh_exch.o", + "providers/implementations/exchange/libfips-lib-ecx_exch.o", + "providers/implementations/exchange/libfips-lib-kdf_exch.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/kdfs" => { + "deps" => [ + "providers/implementations/kdfs/libdefault-lib-argon2.o", + "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", + "providers/implementations/kdfs/libdefault-lib-kbkdf.o", + "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", + "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", + "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o", + "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o", + "providers/implementations/kdfs/libdefault-lib-scrypt.o", + "providers/implementations/kdfs/libdefault-lib-sshkdf.o", + "providers/implementations/kdfs/libdefault-lib-sskdf.o", + "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", + "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kdfs/libfips-lib-hkdf.o", + "providers/implementations/kdfs/libfips-lib-kbkdf.o", + "providers/implementations/kdfs/libfips-lib-pbkdf2.o", + "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o", + "providers/implementations/kdfs/libfips-lib-sshkdf.o", + "providers/implementations/kdfs/libfips-lib-sskdf.o", + "providers/implementations/kdfs/libfips-lib-tls1_prf.o", + "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a", + "providers/liblegacy.a" + ] + } + }, + "providers/implementations/kem" => { + "deps" => [ + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", + "providers/implementations/kem/libdefault-lib-rsa_kem.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/kem/libtemplate-lib-template_kem.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a", + "providers/libtemplate.a" + ] + } + }, + "providers/implementations/keymgmt" => { + "deps" => [ + "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a", + "providers/libtemplate.a" + ] + } + }, + "providers/implementations/macs" => { + "deps" => [ + "providers/implementations/macs/libdefault-lib-blake2b_mac.o", + "providers/implementations/macs/libdefault-lib-blake2s_mac.o", + "providers/implementations/macs/libdefault-lib-cmac_prov.o", + "providers/implementations/macs/libdefault-lib-gmac_prov.o", + "providers/implementations/macs/libdefault-lib-hmac_prov.o", + "providers/implementations/macs/libdefault-lib-kmac_prov.o", + "providers/implementations/macs/libdefault-lib-poly1305_prov.o", + "providers/implementations/macs/libdefault-lib-siphash_prov.o", + "providers/implementations/macs/libfips-lib-cmac_prov.o", + "providers/implementations/macs/libfips-lib-gmac_prov.o", + "providers/implementations/macs/libfips-lib-hmac_prov.o", + "providers/implementations/macs/libfips-lib-kmac_prov.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/rands" => { + "deps" => [ + "providers/implementations/rands/libdefault-lib-drbg.o", + "providers/implementations/rands/libdefault-lib-drbg_ctr.o", + "providers/implementations/rands/libdefault-lib-drbg_hash.o", + "providers/implementations/rands/libdefault-lib-drbg_hmac.o", + "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", + "providers/implementations/rands/libdefault-lib-test_rng.o", + "providers/implementations/rands/libfips-lib-drbg.o", + "providers/implementations/rands/libfips-lib-drbg_ctr.o", + "providers/implementations/rands/libfips-lib-drbg_hash.o", + "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", + "providers/implementations/rands/libfips-lib-test_rng.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/rands/seeding" => { + "deps" => [ + "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", + "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", + "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o", + "providers/implementations/rands/seeding/libdefault-lib-rand_win.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a" + ] + } + }, + "providers/implementations/signature" => { + "deps" => [ + "providers/implementations/signature/libdefault-lib-dsa_sig.o", + "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", + "providers/implementations/signature/libdefault-lib-eddsa_sig.o", + "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", + "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", + "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/signature/libfips-lib-dsa_sig.o", + "providers/implementations/signature/libfips-lib-ecdsa_sig.o", + "providers/implementations/signature/libfips-lib-eddsa_sig.o", + "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/skeymgmt" => { + "deps" => [ + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "providers/implementations/storemgmt" => { + "deps" => [ + "providers/implementations/storemgmt/libdefault-lib-file_store.o", + "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" + ], + "products" => { + "lib" => [ + "providers/libdefault.a" + ] + } + }, + "ssl" => { + "deps" => [ + "ssl/libssl-lib-bio_ssl.o", + "ssl/libssl-lib-d1_lib.o", + "ssl/libssl-lib-d1_msg.o", + "ssl/libssl-lib-d1_srtp.o", + "ssl/libssl-lib-methods.o", + "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", + "ssl/libssl-lib-s3_enc.o", + "ssl/libssl-lib-s3_lib.o", + "ssl/libssl-lib-s3_msg.o", + "ssl/libssl-lib-ssl_asn1.o", + "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", + "ssl/libssl-lib-ssl_ciph.o", + "ssl/libssl-lib-ssl_conf.o", + "ssl/libssl-lib-ssl_err_legacy.o", + "ssl/libssl-lib-ssl_init.o", + "ssl/libssl-lib-ssl_lib.o", + "ssl/libssl-lib-ssl_mcnf.o", + "ssl/libssl-lib-ssl_rsa.o", + "ssl/libssl-lib-ssl_rsa_legacy.o", + "ssl/libssl-lib-ssl_sess.o", + "ssl/libssl-lib-ssl_stat.o", + "ssl/libssl-lib-ssl_txt.o", + "ssl/libssl-lib-ssl_utst.o", + "ssl/libssl-lib-t1_enc.o", + "ssl/libssl-lib-t1_lib.o", + "ssl/libssl-lib-t1_trce.o", + "ssl/libssl-lib-tls13_enc.o", + "ssl/libssl-lib-tls_depr.o", + "ssl/libssl-lib-tls_srp.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/quic" => { + "deps" => [ + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record" => { + "deps" => [ + "ssl/record/libssl-lib-rec_layer_d1.o", + "ssl/record/libssl-lib-rec_layer_s3.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/record/methods" => { + "deps" => [ + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/record/methods/libcommon-lib-tls_pad.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" + ], + "products" => { + "lib" => [ + "libssl", + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a" + ] + } + }, + "ssl/rio" => { + "deps" => [ + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "ssl/statem" => { + "deps" => [ + "ssl/statem/libssl-lib-extensions.o", + "ssl/statem/libssl-lib-extensions_clnt.o", + "ssl/statem/libssl-lib-extensions_cust.o", + "ssl/statem/libssl-lib-extensions_srvr.o", + "ssl/statem/libssl-lib-statem.o", + "ssl/statem/libssl-lib-statem_clnt.o", + "ssl/statem/libssl-lib-statem_dtls.o", + "ssl/statem/libssl-lib-statem_lib.o", + "ssl/statem/libssl-lib-statem_srvr.o" + ], + "products" => { + "lib" => [ + "libssl" + ] + } + }, + "tools" => { + "products" => { + "script" => [ + "tools/c_rehash" + ] + } + }, + "util" => { + "products" => { + "script" => [ + "util/shlib_wrap.sh", + "util/wrap.pl" + ] + } + } + }, + "generate" => { + "OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "apps/progs.c" => [ + "apps/progs.pl", + "\"-C\"", + "\$(APPS_OPENSSL)" + ], + "apps/progs.h" => [ + "apps/progs.pl", + "\"-H\"", + "\$(APPS_OPENSSL)" + ], + "builddata.pm" => [ + "util/mkinstallvars.pl", + "COMMENT=\"This", + "file", + "should", + "be", + "used", + "when", + "building", + "against", + "this", + "OpenSSL", + "build,", + "and", + "should", + "never", + "be", + "installed\"", + "PREFIX=.", + "BINDIR=apps", + "APPLINKDIR=ms", + "LIBDIR=", + "INCLUDEDIR=include", + "\"INCLUDEDIR=\$(SRCDIR)/include\"", + "ENGINESDIR=engines", + "MODULESDIR=providers", + "\"VERSION=\$(VERSION)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"" + ], + "crypto/aes/aes-586.S" => [ + "crypto/aes/asm/aes-586.pl" + ], + "crypto/aes/aes-armv4.S" => [ + "crypto/aes/asm/aes-armv4.pl" + ], + "crypto/aes/aes-c64xplus.S" => [ + "crypto/aes/asm/aes-c64xplus.pl" + ], + "crypto/aes/aes-ia64.s" => [ + "crypto/aes/asm/aes-ia64.S" + ], + "crypto/aes/aes-mips.S" => [ + "crypto/aes/asm/aes-mips.pl" + ], + "crypto/aes/aes-parisc.s" => [ + "crypto/aes/asm/aes-parisc.pl" + ], + "crypto/aes/aes-ppc.s" => [ + "crypto/aes/asm/aes-ppc.pl" + ], + "crypto/aes/aes-riscv32-zkn.s" => [ + "crypto/aes/asm/aes-riscv32-zkn.pl" + ], + "crypto/aes/aes-riscv64-zkn.s" => [ + "crypto/aes/asm/aes-riscv64-zkn.pl" + ], + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvbb-zvkg-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkb-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkb-zvkned.pl" + ], + "crypto/aes/aes-riscv64-zvkned.s" => [ + "crypto/aes/asm/aes-riscv64-zvkned.pl" + ], + "crypto/aes/aes-riscv64.s" => [ + "crypto/aes/asm/aes-riscv64.pl" + ], + "crypto/aes/aes-s390x.S" => [ + "crypto/aes/asm/aes-s390x.pl" + ], + "crypto/aes/aes-sparcv9.S" => [ + "crypto/aes/asm/aes-sparcv9.pl" + ], + "crypto/aes/aes-x86_64.s" => [ + "crypto/aes/asm/aes-x86_64.pl" + ], + "crypto/aes/aesfx-sparcv9.S" => [ + "crypto/aes/asm/aesfx-sparcv9.pl" + ], + "crypto/aes/aesni-mb-x86_64.s" => [ + "crypto/aes/asm/aesni-mb-x86_64.pl" + ], + "crypto/aes/aesni-sha1-x86_64.s" => [ + "crypto/aes/asm/aesni-sha1-x86_64.pl" + ], + "crypto/aes/aesni-sha256-x86_64.s" => [ + "crypto/aes/asm/aesni-sha256-x86_64.pl" + ], + "crypto/aes/aesni-x86.S" => [ + "crypto/aes/asm/aesni-x86.pl" + ], + "crypto/aes/aesni-x86_64.s" => [ + "crypto/aes/asm/aesni-x86_64.pl" + ], + "crypto/aes/aesni-xts-avx512.s" => [ + "crypto/aes/asm/aesni-xts-avx512.pl" + ], + "crypto/aes/aesp8-ppc.s" => [ + "crypto/aes/asm/aesp8-ppc.pl" + ], + "crypto/aes/aest4-sparcv9.S" => [ + "crypto/aes/asm/aest4-sparcv9.pl" + ], + "crypto/aes/aesv8-armx.S" => [ + "crypto/aes/asm/aesv8-armx.pl" + ], + "crypto/aes/bsaes-armv7.S" => [ + "crypto/aes/asm/bsaes-armv7.pl" + ], + "crypto/aes/bsaes-armv8.S" => [ + "crypto/aes/asm/bsaes-armv8.pl" + ], + "crypto/aes/bsaes-x86_64.s" => [ + "crypto/aes/asm/bsaes-x86_64.pl" + ], + "crypto/aes/vpaes-armv8.S" => [ + "crypto/aes/asm/vpaes-armv8.pl" + ], + "crypto/aes/vpaes-loongarch64.S" => [ + "crypto/aes/asm/vpaes-loongarch64.pl" + ], + "crypto/aes/vpaes-ppc.s" => [ + "crypto/aes/asm/vpaes-ppc.pl" + ], + "crypto/aes/vpaes-x86.S" => [ + "crypto/aes/asm/vpaes-x86.pl" + ], + "crypto/aes/vpaes-x86_64.s" => [ + "crypto/aes/asm/vpaes-x86_64.pl" + ], + "crypto/alphacpuid.s" => [ + "crypto/alphacpuid.pl" + ], + "crypto/arm64cpuid.S" => [ + "crypto/arm64cpuid.pl" + ], + "crypto/armv4cpuid.S" => [ + "crypto/armv4cpuid.pl" + ], + "crypto/bf/bf-586.S" => [ + "crypto/bf/asm/bf-586.pl" + ], + "crypto/bn/alpha-mont.S" => [ + "crypto/bn/asm/alpha-mont.pl" + ], + "crypto/bn/armv4-gf2m.S" => [ + "crypto/bn/asm/armv4-gf2m.pl" + ], + "crypto/bn/armv4-mont.S" => [ + "crypto/bn/asm/armv4-mont.pl" + ], + "crypto/bn/armv8-mont.S" => [ + "crypto/bn/asm/armv8-mont.pl" + ], + "crypto/bn/bn-586.S" => [ + "crypto/bn/asm/bn-586.pl" + ], + "crypto/bn/bn-ia64.s" => [ + "crypto/bn/asm/ia64.S" + ], + "crypto/bn/bn-mips.S" => [ + "crypto/bn/asm/mips.pl" + ], + "crypto/bn/bn-ppc.s" => [ + "crypto/bn/asm/ppc.pl" + ], + "crypto/bn/co-586.S" => [ + "crypto/bn/asm/co-586.pl" + ], + "crypto/bn/ia64-mont.s" => [ + "crypto/bn/asm/ia64-mont.pl" + ], + "crypto/bn/mips-mont.S" => [ + "crypto/bn/asm/mips-mont.pl" + ], + "crypto/bn/parisc-mont.s" => [ + "crypto/bn/asm/parisc-mont.pl" + ], + "crypto/bn/ppc-mont.s" => [ + "crypto/bn/asm/ppc-mont.pl" + ], + "crypto/bn/ppc64-mont-fixed.s" => [ + "crypto/bn/asm/ppc64-mont-fixed.pl" + ], + "crypto/bn/ppc64-mont.s" => [ + "crypto/bn/asm/ppc64-mont.pl" + ], + "crypto/bn/rsaz-2k-avx512.s" => [ + "crypto/bn/asm/rsaz-2k-avx512.pl" + ], + "crypto/bn/rsaz-2k-avxifma.s" => [ + "crypto/bn/asm/rsaz-2k-avxifma.pl" + ], + "crypto/bn/rsaz-3k-avx512.s" => [ + "crypto/bn/asm/rsaz-3k-avx512.pl" + ], + "crypto/bn/rsaz-3k-avxifma.s" => [ + "crypto/bn/asm/rsaz-3k-avxifma.pl" + ], + "crypto/bn/rsaz-4k-avx512.s" => [ + "crypto/bn/asm/rsaz-4k-avx512.pl" + ], + "crypto/bn/rsaz-4k-avxifma.s" => [ + "crypto/bn/asm/rsaz-4k-avxifma.pl" + ], + "crypto/bn/rsaz-avx2.s" => [ + "crypto/bn/asm/rsaz-avx2.pl" + ], + "crypto/bn/rsaz-x86_64.s" => [ + "crypto/bn/asm/rsaz-x86_64.pl" + ], + "crypto/bn/s390x-gf2m.s" => [ + "crypto/bn/asm/s390x-gf2m.pl" + ], + "crypto/bn/s390x-mont.S" => [ + "crypto/bn/asm/s390x-mont.pl" + ], + "crypto/bn/sparct4-mont.S" => [ + "crypto/bn/asm/sparct4-mont.pl" + ], + "crypto/bn/sparcv9-gf2m.S" => [ + "crypto/bn/asm/sparcv9-gf2m.pl" + ], + "crypto/bn/sparcv9-mont.S" => [ + "crypto/bn/asm/sparcv9-mont.pl" + ], + "crypto/bn/sparcv9a-mont.S" => [ + "crypto/bn/asm/sparcv9a-mont.pl" + ], + "crypto/bn/vis3-mont.S" => [ + "crypto/bn/asm/vis3-mont.pl" + ], + "crypto/bn/x86-gf2m.S" => [ + "crypto/bn/asm/x86-gf2m.pl" + ], + "crypto/bn/x86-mont.S" => [ + "crypto/bn/asm/x86-mont.pl" + ], + "crypto/bn/x86_64-gf2m.s" => [ + "crypto/bn/asm/x86_64-gf2m.pl" + ], + "crypto/bn/x86_64-mont.s" => [ + "crypto/bn/asm/x86_64-mont.pl" + ], + "crypto/bn/x86_64-mont5.s" => [ + "crypto/bn/asm/x86_64-mont5.pl" + ], + "crypto/buildinf.h" => [ + "util/mkbuildinf.pl", + "\"\$(CC)", + "\$(LIB_CFLAGS)", + "\$(CPPFLAGS_Q)\"", + "\"\$(PLATFORM)\"" + ], + "crypto/camellia/cmll-x86.S" => [ + "crypto/camellia/asm/cmll-x86.pl" + ], + "crypto/camellia/cmll-x86_64.s" => [ + "crypto/camellia/asm/cmll-x86_64.pl" + ], + "crypto/camellia/cmllt4-sparcv9.S" => [ + "crypto/camellia/asm/cmllt4-sparcv9.pl" + ], + "crypto/cast/cast-586.S" => [ + "crypto/cast/asm/cast-586.pl" + ], + "crypto/chacha/chacha-armv4.S" => [ + "crypto/chacha/asm/chacha-armv4.pl" + ], + "crypto/chacha/chacha-armv8-sve.S" => [ + "crypto/chacha/asm/chacha-armv8-sve.pl" + ], + "crypto/chacha/chacha-armv8.S" => [ + "crypto/chacha/asm/chacha-armv8.pl" + ], + "crypto/chacha/chacha-c64xplus.S" => [ + "crypto/chacha/asm/chacha-c64xplus.pl" + ], + "crypto/chacha/chacha-ia64.S" => [ + "crypto/chacha/asm/chacha-ia64.pl" + ], + "crypto/chacha/chacha-ia64.s" => [ + "crypto/chacha/chacha-ia64.S" + ], + "crypto/chacha/chacha-loongarch64.S" => [ + "crypto/chacha/asm/chacha-loongarch64.pl" + ], + "crypto/chacha/chacha-ppc.s" => [ + "crypto/chacha/asm/chacha-ppc.pl" + ], + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl", + "zvkb" + ], + "crypto/chacha/chacha-riscv64-v-zbb.s" => [ + "crypto/chacha/asm/chacha-riscv64-v-zbb.pl" + ], + "crypto/chacha/chacha-s390x.S" => [ + "crypto/chacha/asm/chacha-s390x.pl" + ], + "crypto/chacha/chacha-x86.S" => [ + "crypto/chacha/asm/chacha-x86.pl" + ], + "crypto/chacha/chacha-x86_64.s" => [ + "crypto/chacha/asm/chacha-x86_64.pl" + ], + "crypto/chacha/chachap10-ppc.s" => [ + "crypto/chacha/asm/chachap10-ppc.pl" + ], + "crypto/des/crypt586.S" => [ + "crypto/des/asm/crypt586.pl" + ], + "crypto/des/des-586.S" => [ + "crypto/des/asm/des-586.pl" + ], + "crypto/des/des_enc-sparc.S" => [ + "crypto/des/asm/des_enc.m4" + ], + "crypto/des/dest4-sparcv9.S" => [ + "crypto/des/asm/dest4-sparcv9.pl" + ], + "crypto/ec/ecp_nistp384-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp384-ppc64.pl" + ], + "crypto/ec/ecp_nistp521-ppc64.s" => [ + "crypto/ec/asm/ecp_nistp521-ppc64.pl" + ], + "crypto/ec/ecp_nistz256-armv4.S" => [ + "crypto/ec/asm/ecp_nistz256-armv4.pl" + ], + "crypto/ec/ecp_nistz256-armv8.S" => [ + "crypto/ec/asm/ecp_nistz256-armv8.pl" + ], + "crypto/ec/ecp_nistz256-avx2.s" => [ + "crypto/ec/asm/ecp_nistz256-avx2.pl" + ], + "crypto/ec/ecp_nistz256-ppc64.s" => [ + "crypto/ec/asm/ecp_nistz256-ppc64.pl" + ], + "crypto/ec/ecp_nistz256-sparcv9.S" => [ + "crypto/ec/asm/ecp_nistz256-sparcv9.pl" + ], + "crypto/ec/ecp_nistz256-x86.S" => [ + "crypto/ec/asm/ecp_nistz256-x86.pl" + ], + "crypto/ec/ecp_nistz256-x86_64.s" => [ + "crypto/ec/asm/ecp_nistz256-x86_64.pl" + ], + "crypto/ec/ecp_sm2p256-armv8.S" => [ + "crypto/ec/asm/ecp_sm2p256-armv8.pl" + ], + "crypto/ec/x25519-ppc64.s" => [ + "crypto/ec/asm/x25519-ppc64.pl" + ], + "crypto/ec/x25519-x86_64.s" => [ + "crypto/ec/asm/x25519-x86_64.pl" + ], + "crypto/ia64cpuid.s" => [ + "crypto/ia64cpuid.S" + ], + "crypto/loongarch64cpuid.s" => [ + "crypto/loongarch64cpuid.pl" + ], + "crypto/md5/md5-586.S" => [ + "crypto/md5/asm/md5-586.pl" + ], + "crypto/md5/md5-aarch64.S" => [ + "crypto/md5/asm/md5-aarch64.pl" + ], + "crypto/md5/md5-loongarch64.S" => [ + "crypto/md5/asm/md5-loongarch64.pl" + ], + "crypto/md5/md5-sparcv9.S" => [ + "crypto/md5/asm/md5-sparcv9.pl" + ], + "crypto/md5/md5-x86_64.s" => [ + "crypto/md5/asm/md5-x86_64.pl" + ], + "crypto/modes/aes-gcm-armv8-unroll8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8-unroll8_64.pl" + ], + "crypto/modes/aes-gcm-armv8_64.S" => [ + "crypto/modes/asm/aes-gcm-armv8_64.pl" + ], + "crypto/modes/aes-gcm-avx512.s" => [ + "crypto/modes/asm/aes-gcm-avx512.pl" + ], + "crypto/modes/aes-gcm-ppc.s" => [ + "crypto/modes/asm/aes-gcm-ppc.pl" + ], + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" => [ + "crypto/modes/asm/aes-gcm-riscv64-zvkb-zvkg-zvkned.pl" + ], + "crypto/modes/aesni-gcm-x86_64.s" => [ + "crypto/modes/asm/aesni-gcm-x86_64.pl" + ], + "crypto/modes/ghash-alpha.S" => [ + "crypto/modes/asm/ghash-alpha.pl" + ], + "crypto/modes/ghash-armv4.S" => [ + "crypto/modes/asm/ghash-armv4.pl" + ], + "crypto/modes/ghash-c64xplus.S" => [ + "crypto/modes/asm/ghash-c64xplus.pl" + ], + "crypto/modes/ghash-ia64.s" => [ + "crypto/modes/asm/ghash-ia64.pl" + ], + "crypto/modes/ghash-parisc.s" => [ + "crypto/modes/asm/ghash-parisc.pl" + ], + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkb-zvbc.pl" + ], + "crypto/modes/ghash-riscv64-zvkg.s" => [ + "crypto/modes/asm/ghash-riscv64-zvkg.pl" + ], + "crypto/modes/ghash-riscv64.s" => [ + "crypto/modes/asm/ghash-riscv64.pl" + ], + "crypto/modes/ghash-s390x.S" => [ + "crypto/modes/asm/ghash-s390x.pl" + ], + "crypto/modes/ghash-sparcv9.S" => [ + "crypto/modes/asm/ghash-sparcv9.pl" + ], + "crypto/modes/ghash-x86.S" => [ + "crypto/modes/asm/ghash-x86.pl" + ], + "crypto/modes/ghash-x86_64.s" => [ + "crypto/modes/asm/ghash-x86_64.pl" + ], + "crypto/modes/ghashp8-ppc.s" => [ + "crypto/modes/asm/ghashp8-ppc.pl" + ], + "crypto/modes/ghashv8-armx.S" => [ + "crypto/modes/asm/ghashv8-armx.pl" + ], + "crypto/params_idx.c" => [ + "crypto/params_idx.c.in" + ], + "crypto/pariscid.s" => [ + "crypto/pariscid.pl" + ], + "crypto/poly1305/poly1305-armv4.S" => [ + "crypto/poly1305/asm/poly1305-armv4.pl" + ], + "crypto/poly1305/poly1305-armv8.S" => [ + "crypto/poly1305/asm/poly1305-armv8.pl" + ], + "crypto/poly1305/poly1305-c64xplus.S" => [ + "crypto/poly1305/asm/poly1305-c64xplus.pl" + ], + "crypto/poly1305/poly1305-ia64.s" => [ + "crypto/poly1305/asm/poly1305-ia64.S" + ], + "crypto/poly1305/poly1305-mips.S" => [ + "crypto/poly1305/asm/poly1305-mips.pl" + ], + "crypto/poly1305/poly1305-ppc.s" => [ + "crypto/poly1305/asm/poly1305-ppc.pl" + ], + "crypto/poly1305/poly1305-ppcfp.s" => [ + "crypto/poly1305/asm/poly1305-ppcfp.pl" + ], + "crypto/poly1305/poly1305-s390x.S" => [ + "crypto/poly1305/asm/poly1305-s390x.pl" + ], + "crypto/poly1305/poly1305-sparcv9.S" => [ + "crypto/poly1305/asm/poly1305-sparcv9.pl" + ], + "crypto/poly1305/poly1305-x86.S" => [ + "crypto/poly1305/asm/poly1305-x86.pl" + ], + "crypto/poly1305/poly1305-x86_64.s" => [ + "crypto/poly1305/asm/poly1305-x86_64.pl" + ], + "crypto/ppccpuid.s" => [ + "crypto/ppccpuid.pl" + ], + "crypto/rc4/rc4-586.S" => [ + "crypto/rc4/asm/rc4-586.pl" + ], + "crypto/rc4/rc4-c64xplus.s" => [ + "crypto/rc4/asm/rc4-c64xplus.pl" + ], + "crypto/rc4/rc4-md5-x86_64.s" => [ + "crypto/rc4/asm/rc4-md5-x86_64.pl" + ], + "crypto/rc4/rc4-parisc.s" => [ + "crypto/rc4/asm/rc4-parisc.pl" + ], + "crypto/rc4/rc4-s390x.s" => [ + "crypto/rc4/asm/rc4-s390x.pl" + ], + "crypto/rc4/rc4-x86_64.s" => [ + "crypto/rc4/asm/rc4-x86_64.pl" + ], + "crypto/ripemd/rmd-586.S" => [ + "crypto/ripemd/asm/rmd-586.pl" + ], + "crypto/riscv32cpuid.s" => [ + "crypto/riscv32cpuid.pl" + ], + "crypto/riscv64cpuid.s" => [ + "crypto/riscv64cpuid.pl" + ], + "crypto/s390xcpuid.S" => [ + "crypto/s390xcpuid.pl" + ], + "crypto/sha/keccak1600-armv4.S" => [ + "crypto/sha/asm/keccak1600-armv4.pl" + ], + "crypto/sha/keccak1600-armv8.S" => [ + "crypto/sha/asm/keccak1600-armv8.pl" + ], + "crypto/sha/keccak1600-avx2.S" => [ + "crypto/sha/asm/keccak1600-avx2.pl" + ], + "crypto/sha/keccak1600-avx512.S" => [ + "crypto/sha/asm/keccak1600-avx512.pl" + ], + "crypto/sha/keccak1600-avx512vl.S" => [ + "crypto/sha/asm/keccak1600-avx512vl.pl" + ], + "crypto/sha/keccak1600-c64x.S" => [ + "crypto/sha/asm/keccak1600-c64x.pl" + ], + "crypto/sha/keccak1600-mmx.S" => [ + "crypto/sha/asm/keccak1600-mmx.pl" + ], + "crypto/sha/keccak1600-ppc64.s" => [ + "crypto/sha/asm/keccak1600-ppc64.pl" + ], + "crypto/sha/keccak1600-s390x.S" => [ + "crypto/sha/asm/keccak1600-s390x.pl" + ], + "crypto/sha/keccak1600-x86_64.s" => [ + "crypto/sha/asm/keccak1600-x86_64.pl" + ], + "crypto/sha/keccak1600p8-ppc.S" => [ + "crypto/sha/asm/keccak1600p8-ppc.pl" + ], + "crypto/sha/sha1-586.S" => [ + "crypto/sha/asm/sha1-586.pl" + ], + "crypto/sha/sha1-alpha.S" => [ + "crypto/sha/asm/sha1-alpha.pl" + ], + "crypto/sha/sha1-armv4-large.S" => [ + "crypto/sha/asm/sha1-armv4-large.pl" + ], + "crypto/sha/sha1-armv8.S" => [ + "crypto/sha/asm/sha1-armv8.pl" + ], + "crypto/sha/sha1-c64xplus.S" => [ + "crypto/sha/asm/sha1-c64xplus.pl" + ], + "crypto/sha/sha1-ia64.s" => [ + "crypto/sha/asm/sha1-ia64.pl" + ], + "crypto/sha/sha1-mb-x86_64.s" => [ + "crypto/sha/asm/sha1-mb-x86_64.pl" + ], + "crypto/sha/sha1-mips.S" => [ + "crypto/sha/asm/sha1-mips.pl" + ], + "crypto/sha/sha1-parisc.s" => [ + "crypto/sha/asm/sha1-parisc.pl" + ], + "crypto/sha/sha1-ppc.s" => [ + "crypto/sha/asm/sha1-ppc.pl" + ], + "crypto/sha/sha1-s390x.S" => [ + "crypto/sha/asm/sha1-s390x.pl" + ], + "crypto/sha/sha1-sparcv9.S" => [ + "crypto/sha/asm/sha1-sparcv9.pl" + ], + "crypto/sha/sha1-sparcv9a.S" => [ + "crypto/sha/asm/sha1-sparcv9a.pl" + ], + "crypto/sha/sha1-thumb.S" => [ + "crypto/sha/asm/sha1-thumb.pl" + ], + "crypto/sha/sha1-x86_64.s" => [ + "crypto/sha/asm/sha1-x86_64.pl" + ], + "crypto/sha/sha256-586.S" => [ + "crypto/sha/asm/sha256-586.pl" + ], + "crypto/sha/sha256-armv4.S" => [ + "crypto/sha/asm/sha256-armv4.pl" + ], + "crypto/sha/sha256-armv8.S" => [ + "crypto/sha/asm/sha512-armv8.pl" + ], + "crypto/sha/sha256-c64xplus.S" => [ + "crypto/sha/asm/sha256-c64xplus.pl" + ], + "crypto/sha/sha256-ia64.s" => [ + "crypto/sha/asm/sha512-ia64.pl" + ], + "crypto/sha/sha256-mb-x86_64.s" => [ + "crypto/sha/asm/sha256-mb-x86_64.pl" + ], + "crypto/sha/sha256-mips.S" => [ + "crypto/sha/asm/sha512-mips.pl" + ], + "crypto/sha/sha256-parisc.s" => [ + "crypto/sha/asm/sha512-parisc.pl" + ], + "crypto/sha/sha256-ppc.s" => [ + "crypto/sha/asm/sha512-ppc.pl" + ], + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" => [ + "crypto/sha/asm/sha256-riscv64-zvkb-zvknha_or_zvknhb.pl" + ], + "crypto/sha/sha256-s390x.S" => [ + "crypto/sha/asm/sha512-s390x.pl" + ], + "crypto/sha/sha256-sparcv9.S" => [ + "crypto/sha/asm/sha512-sparcv9.pl" + ], + "crypto/sha/sha256-x86_64.s" => [ + "crypto/sha/asm/sha512-x86_64.pl" + ], + "crypto/sha/sha256p8-ppc.s" => [ + "crypto/sha/asm/sha512p8-ppc.pl" + ], + "crypto/sha/sha512-586.S" => [ + "crypto/sha/asm/sha512-586.pl" + ], + "crypto/sha/sha512-armv4.S" => [ + "crypto/sha/asm/sha512-armv4.pl" + ], + "crypto/sha/sha512-armv8.S" => [ + "crypto/sha/asm/sha512-armv8.pl" + ], + "crypto/sha/sha512-c64xplus.S" => [ + "crypto/sha/asm/sha512-c64xplus.pl" + ], + "crypto/sha/sha512-ia64.s" => [ + "crypto/sha/asm/sha512-ia64.pl" + ], + "crypto/sha/sha512-mips.S" => [ + "crypto/sha/asm/sha512-mips.pl" + ], + "crypto/sha/sha512-parisc.s" => [ + "crypto/sha/asm/sha512-parisc.pl" + ], + "crypto/sha/sha512-ppc.s" => [ + "crypto/sha/asm/sha512-ppc.pl" + ], + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" => [ + "crypto/sha/asm/sha512-riscv64-zvkb-zvknhb.pl" + ], + "crypto/sha/sha512-s390x.S" => [ + "crypto/sha/asm/sha512-s390x.pl" + ], + "crypto/sha/sha512-sparcv9.S" => [ + "crypto/sha/asm/sha512-sparcv9.pl" + ], + "crypto/sha/sha512-x86_64.s" => [ + "crypto/sha/asm/sha512-x86_64.pl" + ], + "crypto/sha/sha512p8-ppc.s" => [ + "crypto/sha/asm/sha512p8-ppc.pl" + ], + "crypto/sm3/sm3-armv8.S" => [ + "crypto/sm3/asm/sm3-armv8.pl" + ], + "crypto/sm3/sm3-riscv64-zvksh.S" => [ + "crypto/sm3/asm/sm3-riscv64-zvksh.pl" + ], + "crypto/sm4/sm4-armv8.S" => [ + "crypto/sm4/asm/sm4-armv8.pl" + ], + "crypto/sm4/sm4-riscv64-zvksed.s" => [ + "crypto/sm4/asm/sm4-riscv64-zvksed.pl" + ], + "crypto/sm4/vpsm4-armv8.S" => [ + "crypto/sm4/asm/vpsm4-armv8.pl" + ], + "crypto/sm4/vpsm4_ex-armv8.S" => [ + "crypto/sm4/asm/vpsm4_ex-armv8.pl" + ], + "crypto/uplink-ia64.s" => [ + "ms/uplink-ia64.pl" + ], + "crypto/uplink-x86.S" => [ + "ms/uplink-x86.pl" + ], + "crypto/uplink-x86_64.s" => [ + "ms/uplink-x86_64.pl" + ], + "crypto/whrlpool/wp-mmx.S" => [ + "crypto/whrlpool/asm/wp-mmx.pl" + ], + "crypto/whrlpool/wp-x86_64.s" => [ + "crypto/whrlpool/asm/wp-x86_64.pl" + ], + "crypto/x86_64cpuid.s" => [ + "crypto/x86_64cpuid.pl" + ], + "crypto/x86cpuid.S" => [ + "crypto/x86cpuid.pl" + ], + "doc/html/man1/CA.pl.html" => [ + "doc/man1/CA.pl.pod" + ], + "doc/html/man1/openssl-asn1parse.html" => [ + "doc/man1/openssl-asn1parse.pod" + ], + "doc/html/man1/openssl-ca.html" => [ + "doc/man1/openssl-ca.pod" + ], + "doc/html/man1/openssl-ciphers.html" => [ + "doc/man1/openssl-ciphers.pod" + ], + "doc/html/man1/openssl-cmds.html" => [ + "doc/man1/openssl-cmds.pod" + ], + "doc/html/man1/openssl-cmp.html" => [ + "doc/man1/openssl-cmp.pod" + ], + "doc/html/man1/openssl-cms.html" => [ + "doc/man1/openssl-cms.pod" + ], + "doc/html/man1/openssl-crl.html" => [ + "doc/man1/openssl-crl.pod" + ], + "doc/html/man1/openssl-crl2pkcs7.html" => [ + "doc/man1/openssl-crl2pkcs7.pod" + ], + "doc/html/man1/openssl-dgst.html" => [ + "doc/man1/openssl-dgst.pod" + ], + "doc/html/man1/openssl-dhparam.html" => [ + "doc/man1/openssl-dhparam.pod" + ], + "doc/html/man1/openssl-dsa.html" => [ + "doc/man1/openssl-dsa.pod" + ], + "doc/html/man1/openssl-dsaparam.html" => [ + "doc/man1/openssl-dsaparam.pod" + ], + "doc/html/man1/openssl-ec.html" => [ + "doc/man1/openssl-ec.pod" + ], + "doc/html/man1/openssl-ecparam.html" => [ + "doc/man1/openssl-ecparam.pod" + ], + "doc/html/man1/openssl-enc.html" => [ + "doc/man1/openssl-enc.pod" + ], + "doc/html/man1/openssl-engine.html" => [ + "doc/man1/openssl-engine.pod" + ], + "doc/html/man1/openssl-errstr.html" => [ + "doc/man1/openssl-errstr.pod" + ], + "doc/html/man1/openssl-fipsinstall.html" => [ + "doc/man1/openssl-fipsinstall.pod" + ], + "doc/html/man1/openssl-format-options.html" => [ + "doc/man1/openssl-format-options.pod" + ], + "doc/html/man1/openssl-gendsa.html" => [ + "doc/man1/openssl-gendsa.pod" + ], + "doc/html/man1/openssl-genpkey.html" => [ + "doc/man1/openssl-genpkey.pod" + ], + "doc/html/man1/openssl-genrsa.html" => [ + "doc/man1/openssl-genrsa.pod" + ], + "doc/html/man1/openssl-info.html" => [ + "doc/man1/openssl-info.pod" + ], + "doc/html/man1/openssl-kdf.html" => [ + "doc/man1/openssl-kdf.pod" + ], + "doc/html/man1/openssl-list.html" => [ + "doc/man1/openssl-list.pod" + ], + "doc/html/man1/openssl-mac.html" => [ + "doc/man1/openssl-mac.pod" + ], + "doc/html/man1/openssl-namedisplay-options.html" => [ + "doc/man1/openssl-namedisplay-options.pod" + ], + "doc/html/man1/openssl-nseq.html" => [ + "doc/man1/openssl-nseq.pod" + ], + "doc/html/man1/openssl-ocsp.html" => [ + "doc/man1/openssl-ocsp.pod" + ], + "doc/html/man1/openssl-passphrase-options.html" => [ + "doc/man1/openssl-passphrase-options.pod" + ], + "doc/html/man1/openssl-passwd.html" => [ + "doc/man1/openssl-passwd.pod" + ], + "doc/html/man1/openssl-pkcs12.html" => [ + "doc/man1/openssl-pkcs12.pod" + ], + "doc/html/man1/openssl-pkcs7.html" => [ + "doc/man1/openssl-pkcs7.pod" + ], + "doc/html/man1/openssl-pkcs8.html" => [ + "doc/man1/openssl-pkcs8.pod" + ], + "doc/html/man1/openssl-pkey.html" => [ + "doc/man1/openssl-pkey.pod" + ], + "doc/html/man1/openssl-pkeyparam.html" => [ + "doc/man1/openssl-pkeyparam.pod" + ], + "doc/html/man1/openssl-pkeyutl.html" => [ + "doc/man1/openssl-pkeyutl.pod" + ], + "doc/html/man1/openssl-prime.html" => [ + "doc/man1/openssl-prime.pod" + ], + "doc/html/man1/openssl-rand.html" => [ + "doc/man1/openssl-rand.pod" + ], + "doc/html/man1/openssl-rehash.html" => [ + "doc/man1/openssl-rehash.pod" + ], + "doc/html/man1/openssl-req.html" => [ + "doc/man1/openssl-req.pod" + ], + "doc/html/man1/openssl-rsa.html" => [ + "doc/man1/openssl-rsa.pod" + ], + "doc/html/man1/openssl-rsautl.html" => [ + "doc/man1/openssl-rsautl.pod" + ], + "doc/html/man1/openssl-s_client.html" => [ + "doc/man1/openssl-s_client.pod" + ], + "doc/html/man1/openssl-s_server.html" => [ + "doc/man1/openssl-s_server.pod" + ], + "doc/html/man1/openssl-s_time.html" => [ + "doc/man1/openssl-s_time.pod" + ], + "doc/html/man1/openssl-sess_id.html" => [ + "doc/man1/openssl-sess_id.pod" + ], + "doc/html/man1/openssl-skeyutl.html" => [ + "doc/man1/openssl-skeyutl.pod" + ], + "doc/html/man1/openssl-smime.html" => [ + "doc/man1/openssl-smime.pod" + ], + "doc/html/man1/openssl-speed.html" => [ + "doc/man1/openssl-speed.pod" + ], + "doc/html/man1/openssl-spkac.html" => [ + "doc/man1/openssl-spkac.pod" + ], + "doc/html/man1/openssl-srp.html" => [ + "doc/man1/openssl-srp.pod" + ], + "doc/html/man1/openssl-storeutl.html" => [ + "doc/man1/openssl-storeutl.pod" + ], + "doc/html/man1/openssl-ts.html" => [ + "doc/man1/openssl-ts.pod" + ], + "doc/html/man1/openssl-verification-options.html" => [ + "doc/man1/openssl-verification-options.pod" + ], + "doc/html/man1/openssl-verify.html" => [ + "doc/man1/openssl-verify.pod" + ], + "doc/html/man1/openssl-version.html" => [ + "doc/man1/openssl-version.pod" + ], + "doc/html/man1/openssl-x509.html" => [ + "doc/man1/openssl-x509.pod" + ], + "doc/html/man1/openssl.html" => [ + "doc/man1/openssl.pod" + ], + "doc/html/man1/tsget.html" => [ + "doc/man1/tsget.pod" + ], + "doc/html/man3/ADMISSIONS.html" => [ + "doc/man3/ADMISSIONS.pod" + ], + "doc/html/man3/ASN1_EXTERN_FUNCS.html" => [ + "doc/man3/ASN1_EXTERN_FUNCS.pod" + ], + "doc/html/man3/ASN1_INTEGER_get_int64.html" => [ + "doc/man3/ASN1_INTEGER_get_int64.pod" + ], + "doc/html/man3/ASN1_INTEGER_new.html" => [ + "doc/man3/ASN1_INTEGER_new.pod" + ], + "doc/html/man3/ASN1_ITEM_lookup.html" => [ + "doc/man3/ASN1_ITEM_lookup.pod" + ], + "doc/html/man3/ASN1_OBJECT_new.html" => [ + "doc/man3/ASN1_OBJECT_new.pod" + ], + "doc/html/man3/ASN1_STRING_TABLE_add.html" => [ + "doc/man3/ASN1_STRING_TABLE_add.pod" + ], + "doc/html/man3/ASN1_STRING_length.html" => [ + "doc/man3/ASN1_STRING_length.pod" + ], + "doc/html/man3/ASN1_STRING_new.html" => [ + "doc/man3/ASN1_STRING_new.pod" + ], + "doc/html/man3/ASN1_STRING_print_ex.html" => [ + "doc/man3/ASN1_STRING_print_ex.pod" + ], + "doc/html/man3/ASN1_TIME_set.html" => [ + "doc/man3/ASN1_TIME_set.pod" + ], + "doc/html/man3/ASN1_TYPE_get.html" => [ + "doc/man3/ASN1_TYPE_get.pod" + ], + "doc/html/man3/ASN1_aux_cb.html" => [ + "doc/man3/ASN1_aux_cb.pod" + ], + "doc/html/man3/ASN1_generate_nconf.html" => [ + "doc/man3/ASN1_generate_nconf.pod" + ], + "doc/html/man3/ASN1_item_d2i_bio.html" => [ + "doc/man3/ASN1_item_d2i_bio.pod" + ], + "doc/html/man3/ASN1_item_new.html" => [ + "doc/man3/ASN1_item_new.pod" + ], + "doc/html/man3/ASN1_item_sign.html" => [ + "doc/man3/ASN1_item_sign.pod" + ], + "doc/html/man3/ASYNC_WAIT_CTX_new.html" => [ + "doc/man3/ASYNC_WAIT_CTX_new.pod" + ], + "doc/html/man3/ASYNC_start_job.html" => [ + "doc/man3/ASYNC_start_job.pod" + ], + "doc/html/man3/BF_encrypt.html" => [ + "doc/man3/BF_encrypt.pod" + ], + "doc/html/man3/BIO_ADDR.html" => [ + "doc/man3/BIO_ADDR.pod" + ], + "doc/html/man3/BIO_ADDRINFO.html" => [ + "doc/man3/BIO_ADDRINFO.pod" + ], + "doc/html/man3/BIO_connect.html" => [ + "doc/man3/BIO_connect.pod" + ], + "doc/html/man3/BIO_ctrl.html" => [ + "doc/man3/BIO_ctrl.pod" + ], + "doc/html/man3/BIO_f_base64.html" => [ + "doc/man3/BIO_f_base64.pod" + ], + "doc/html/man3/BIO_f_buffer.html" => [ + "doc/man3/BIO_f_buffer.pod" + ], + "doc/html/man3/BIO_f_cipher.html" => [ + "doc/man3/BIO_f_cipher.pod" + ], + "doc/html/man3/BIO_f_md.html" => [ + "doc/man3/BIO_f_md.pod" + ], + "doc/html/man3/BIO_f_null.html" => [ + "doc/man3/BIO_f_null.pod" + ], + "doc/html/man3/BIO_f_prefix.html" => [ + "doc/man3/BIO_f_prefix.pod" + ], + "doc/html/man3/BIO_f_readbuffer.html" => [ + "doc/man3/BIO_f_readbuffer.pod" + ], + "doc/html/man3/BIO_f_ssl.html" => [ + "doc/man3/BIO_f_ssl.pod" + ], + "doc/html/man3/BIO_find_type.html" => [ + "doc/man3/BIO_find_type.pod" + ], + "doc/html/man3/BIO_get_data.html" => [ + "doc/man3/BIO_get_data.pod" + ], + "doc/html/man3/BIO_get_ex_new_index.html" => [ + "doc/man3/BIO_get_ex_new_index.pod" + ], + "doc/html/man3/BIO_get_rpoll_descriptor.html" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], + "doc/html/man3/BIO_meth_new.html" => [ + "doc/man3/BIO_meth_new.pod" + ], + "doc/html/man3/BIO_new.html" => [ + "doc/man3/BIO_new.pod" + ], + "doc/html/man3/BIO_new_CMS.html" => [ + "doc/man3/BIO_new_CMS.pod" + ], + "doc/html/man3/BIO_parse_hostserv.html" => [ + "doc/man3/BIO_parse_hostserv.pod" + ], + "doc/html/man3/BIO_printf.html" => [ + "doc/man3/BIO_printf.pod" + ], + "doc/html/man3/BIO_push.html" => [ + "doc/man3/BIO_push.pod" + ], + "doc/html/man3/BIO_read.html" => [ + "doc/man3/BIO_read.pod" + ], + "doc/html/man3/BIO_s_accept.html" => [ + "doc/man3/BIO_s_accept.pod" + ], + "doc/html/man3/BIO_s_bio.html" => [ + "doc/man3/BIO_s_bio.pod" + ], + "doc/html/man3/BIO_s_connect.html" => [ + "doc/man3/BIO_s_connect.pod" + ], + "doc/html/man3/BIO_s_core.html" => [ + "doc/man3/BIO_s_core.pod" + ], + "doc/html/man3/BIO_s_datagram.html" => [ + "doc/man3/BIO_s_datagram.pod" + ], + "doc/html/man3/BIO_s_dgram_pair.html" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], + "doc/html/man3/BIO_s_fd.html" => [ + "doc/man3/BIO_s_fd.pod" + ], + "doc/html/man3/BIO_s_file.html" => [ + "doc/man3/BIO_s_file.pod" + ], + "doc/html/man3/BIO_s_mem.html" => [ + "doc/man3/BIO_s_mem.pod" + ], + "doc/html/man3/BIO_s_null.html" => [ + "doc/man3/BIO_s_null.pod" + ], + "doc/html/man3/BIO_s_socket.html" => [ + "doc/man3/BIO_s_socket.pod" + ], + "doc/html/man3/BIO_sendmmsg.html" => [ + "doc/man3/BIO_sendmmsg.pod" + ], + "doc/html/man3/BIO_set_callback.html" => [ + "doc/man3/BIO_set_callback.pod" + ], + "doc/html/man3/BIO_set_flags.html" => [ + "doc/man3/BIO_set_flags.pod" + ], + "doc/html/man3/BIO_should_retry.html" => [ + "doc/man3/BIO_should_retry.pod" + ], + "doc/html/man3/BIO_socket_wait.html" => [ + "doc/man3/BIO_socket_wait.pod" + ], + "doc/html/man3/BN_BLINDING_new.html" => [ + "doc/man3/BN_BLINDING_new.pod" + ], + "doc/html/man3/BN_CTX_new.html" => [ + "doc/man3/BN_CTX_new.pod" + ], + "doc/html/man3/BN_CTX_start.html" => [ + "doc/man3/BN_CTX_start.pod" + ], + "doc/html/man3/BN_add.html" => [ + "doc/man3/BN_add.pod" + ], + "doc/html/man3/BN_add_word.html" => [ + "doc/man3/BN_add_word.pod" + ], + "doc/html/man3/BN_bn2bin.html" => [ + "doc/man3/BN_bn2bin.pod" + ], + "doc/html/man3/BN_cmp.html" => [ + "doc/man3/BN_cmp.pod" + ], + "doc/html/man3/BN_copy.html" => [ + "doc/man3/BN_copy.pod" + ], + "doc/html/man3/BN_generate_prime.html" => [ + "doc/man3/BN_generate_prime.pod" + ], + "doc/html/man3/BN_mod_exp_mont.html" => [ + "doc/man3/BN_mod_exp_mont.pod" + ], + "doc/html/man3/BN_mod_inverse.html" => [ + "doc/man3/BN_mod_inverse.pod" + ], + "doc/html/man3/BN_mod_mul_montgomery.html" => [ + "doc/man3/BN_mod_mul_montgomery.pod" + ], + "doc/html/man3/BN_mod_mul_reciprocal.html" => [ + "doc/man3/BN_mod_mul_reciprocal.pod" + ], + "doc/html/man3/BN_new.html" => [ + "doc/man3/BN_new.pod" + ], + "doc/html/man3/BN_num_bytes.html" => [ + "doc/man3/BN_num_bytes.pod" + ], + "doc/html/man3/BN_rand.html" => [ + "doc/man3/BN_rand.pod" + ], + "doc/html/man3/BN_security_bits.html" => [ + "doc/man3/BN_security_bits.pod" + ], + "doc/html/man3/BN_set_bit.html" => [ + "doc/man3/BN_set_bit.pod" + ], + "doc/html/man3/BN_swap.html" => [ + "doc/man3/BN_swap.pod" + ], + "doc/html/man3/BN_zero.html" => [ + "doc/man3/BN_zero.pod" + ], + "doc/html/man3/BUF_MEM_new.html" => [ + "doc/man3/BUF_MEM_new.pod" + ], + "doc/html/man3/CMAC_CTX.html" => [ + "doc/man3/CMAC_CTX.pod" + ], + "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ + "doc/man3/CMS_EncryptedData_decrypt.pod" + ], + "doc/html/man3/CMS_EncryptedData_encrypt.html" => [ + "doc/man3/CMS_EncryptedData_encrypt.pod" + ], + "doc/html/man3/CMS_EncryptedData_set1_key.html" => [ + "doc/man3/CMS_EncryptedData_set1_key.pod" + ], + "doc/html/man3/CMS_EnvelopedData_create.html" => [ + "doc/man3/CMS_EnvelopedData_create.pod" + ], + "doc/html/man3/CMS_add0_cert.html" => [ + "doc/man3/CMS_add0_cert.pod" + ], + "doc/html/man3/CMS_add1_recipient_cert.html" => [ + "doc/man3/CMS_add1_recipient_cert.pod" + ], + "doc/html/man3/CMS_add1_signer.html" => [ + "doc/man3/CMS_add1_signer.pod" + ], + "doc/html/man3/CMS_compress.html" => [ + "doc/man3/CMS_compress.pod" + ], + "doc/html/man3/CMS_data_create.html" => [ + "doc/man3/CMS_data_create.pod" + ], + "doc/html/man3/CMS_decrypt.html" => [ + "doc/man3/CMS_decrypt.pod" + ], + "doc/html/man3/CMS_digest_create.html" => [ + "doc/man3/CMS_digest_create.pod" + ], + "doc/html/man3/CMS_encrypt.html" => [ + "doc/man3/CMS_encrypt.pod" + ], + "doc/html/man3/CMS_final.html" => [ + "doc/man3/CMS_final.pod" + ], + "doc/html/man3/CMS_get0_RecipientInfos.html" => [ + "doc/man3/CMS_get0_RecipientInfos.pod" + ], + "doc/html/man3/CMS_get0_SignerInfos.html" => [ + "doc/man3/CMS_get0_SignerInfos.pod" + ], + "doc/html/man3/CMS_get0_type.html" => [ + "doc/man3/CMS_get0_type.pod" + ], + "doc/html/man3/CMS_get1_ReceiptRequest.html" => [ + "doc/man3/CMS_get1_ReceiptRequest.pod" + ], + "doc/html/man3/CMS_sign.html" => [ + "doc/man3/CMS_sign.pod" + ], + "doc/html/man3/CMS_sign_receipt.html" => [ + "doc/man3/CMS_sign_receipt.pod" + ], + "doc/html/man3/CMS_signed_get_attr.html" => [ + "doc/man3/CMS_signed_get_attr.pod" + ], + "doc/html/man3/CMS_uncompress.html" => [ + "doc/man3/CMS_uncompress.pod" + ], + "doc/html/man3/CMS_verify.html" => [ + "doc/man3/CMS_verify.pod" + ], + "doc/html/man3/CMS_verify_receipt.html" => [ + "doc/man3/CMS_verify_receipt.pod" + ], + "doc/html/man3/COMP_CTX_new.html" => [ + "doc/man3/COMP_CTX_new.pod" + ], + "doc/html/man3/CONF_modules_free.html" => [ + "doc/man3/CONF_modules_free.pod" + ], + "doc/html/man3/CONF_modules_load_file.html" => [ + "doc/man3/CONF_modules_load_file.pod" + ], + "doc/html/man3/CRYPTO_THREAD_run_once.html" => [ + "doc/man3/CRYPTO_THREAD_run_once.pod" + ], + "doc/html/man3/CRYPTO_get_ex_new_index.html" => [ + "doc/man3/CRYPTO_get_ex_new_index.pod" + ], + "doc/html/man3/CRYPTO_memcmp.html" => [ + "doc/man3/CRYPTO_memcmp.pod" + ], + "doc/html/man3/CTLOG_STORE_get0_log_by_id.html" => [ + "doc/man3/CTLOG_STORE_get0_log_by_id.pod" + ], + "doc/html/man3/CTLOG_STORE_new.html" => [ + "doc/man3/CTLOG_STORE_new.pod" + ], + "doc/html/man3/CTLOG_new.html" => [ + "doc/man3/CTLOG_new.pod" + ], + "doc/html/man3/CT_POLICY_EVAL_CTX_new.html" => [ + "doc/man3/CT_POLICY_EVAL_CTX_new.pod" + ], + "doc/html/man3/DEFINE_STACK_OF.html" => [ + "doc/man3/DEFINE_STACK_OF.pod" + ], + "doc/html/man3/DES_random_key.html" => [ + "doc/man3/DES_random_key.pod" + ], + "doc/html/man3/DH_generate_key.html" => [ + "doc/man3/DH_generate_key.pod" + ], + "doc/html/man3/DH_generate_parameters.html" => [ + "doc/man3/DH_generate_parameters.pod" + ], + "doc/html/man3/DH_get0_pqg.html" => [ + "doc/man3/DH_get0_pqg.pod" + ], + "doc/html/man3/DH_get_1024_160.html" => [ + "doc/man3/DH_get_1024_160.pod" + ], + "doc/html/man3/DH_meth_new.html" => [ + "doc/man3/DH_meth_new.pod" + ], + "doc/html/man3/DH_new.html" => [ + "doc/man3/DH_new.pod" + ], + "doc/html/man3/DH_new_by_nid.html" => [ + "doc/man3/DH_new_by_nid.pod" + ], + "doc/html/man3/DH_set_method.html" => [ + "doc/man3/DH_set_method.pod" + ], + "doc/html/man3/DH_size.html" => [ + "doc/man3/DH_size.pod" + ], + "doc/html/man3/DSA_SIG_new.html" => [ + "doc/man3/DSA_SIG_new.pod" + ], + "doc/html/man3/DSA_do_sign.html" => [ + "doc/man3/DSA_do_sign.pod" + ], + "doc/html/man3/DSA_dup_DH.html" => [ + "doc/man3/DSA_dup_DH.pod" + ], + "doc/html/man3/DSA_generate_key.html" => [ + "doc/man3/DSA_generate_key.pod" + ], + "doc/html/man3/DSA_generate_parameters.html" => [ + "doc/man3/DSA_generate_parameters.pod" + ], + "doc/html/man3/DSA_get0_pqg.html" => [ + "doc/man3/DSA_get0_pqg.pod" + ], + "doc/html/man3/DSA_meth_new.html" => [ + "doc/man3/DSA_meth_new.pod" + ], + "doc/html/man3/DSA_new.html" => [ + "doc/man3/DSA_new.pod" + ], + "doc/html/man3/DSA_set_method.html" => [ + "doc/man3/DSA_set_method.pod" + ], + "doc/html/man3/DSA_sign.html" => [ + "doc/man3/DSA_sign.pod" + ], + "doc/html/man3/DSA_size.html" => [ + "doc/man3/DSA_size.pod" + ], + "doc/html/man3/DTLS_get_data_mtu.html" => [ + "doc/man3/DTLS_get_data_mtu.pod" + ], + "doc/html/man3/DTLS_set_timer_cb.html" => [ + "doc/man3/DTLS_set_timer_cb.pod" + ], + "doc/html/man3/DTLSv1_get_timeout.html" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/html/man3/DTLSv1_handle_timeout.html" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], + "doc/html/man3/DTLSv1_listen.html" => [ + "doc/man3/DTLSv1_listen.pod" + ], + "doc/html/man3/ECDSA_SIG_new.html" => [ + "doc/man3/ECDSA_SIG_new.pod" + ], + "doc/html/man3/ECDSA_sign.html" => [ + "doc/man3/ECDSA_sign.pod" + ], + "doc/html/man3/ECPKParameters_print.html" => [ + "doc/man3/ECPKParameters_print.pod" + ], + "doc/html/man3/EC_GFp_simple_method.html" => [ + "doc/man3/EC_GFp_simple_method.pod" + ], + "doc/html/man3/EC_GROUP_copy.html" => [ + "doc/man3/EC_GROUP_copy.pod" + ], + "doc/html/man3/EC_GROUP_new.html" => [ + "doc/man3/EC_GROUP_new.pod" + ], + "doc/html/man3/EC_KEY_get_enc_flags.html" => [ + "doc/man3/EC_KEY_get_enc_flags.pod" + ], + "doc/html/man3/EC_KEY_new.html" => [ + "doc/man3/EC_KEY_new.pod" + ], + "doc/html/man3/EC_POINT_add.html" => [ + "doc/man3/EC_POINT_add.pod" + ], + "doc/html/man3/EC_POINT_new.html" => [ + "doc/man3/EC_POINT_new.pod" + ], + "doc/html/man3/ENGINE_add.html" => [ + "doc/man3/ENGINE_add.pod" + ], + "doc/html/man3/ERR_GET_LIB.html" => [ + "doc/man3/ERR_GET_LIB.pod" + ], + "doc/html/man3/ERR_clear_error.html" => [ + "doc/man3/ERR_clear_error.pod" + ], + "doc/html/man3/ERR_error_string.html" => [ + "doc/man3/ERR_error_string.pod" + ], + "doc/html/man3/ERR_get_error.html" => [ + "doc/man3/ERR_get_error.pod" + ], + "doc/html/man3/ERR_load_crypto_strings.html" => [ + "doc/man3/ERR_load_crypto_strings.pod" + ], + "doc/html/man3/ERR_load_strings.html" => [ + "doc/man3/ERR_load_strings.pod" + ], + "doc/html/man3/ERR_new.html" => [ + "doc/man3/ERR_new.pod" + ], + "doc/html/man3/ERR_print_errors.html" => [ + "doc/man3/ERR_print_errors.pod" + ], + "doc/html/man3/ERR_put_error.html" => [ + "doc/man3/ERR_put_error.pod" + ], + "doc/html/man3/ERR_remove_state.html" => [ + "doc/man3/ERR_remove_state.pod" + ], + "doc/html/man3/ERR_set_mark.html" => [ + "doc/man3/ERR_set_mark.pod" + ], + "doc/html/man3/EVP_ASYM_CIPHER_free.html" => [ + "doc/man3/EVP_ASYM_CIPHER_free.pod" + ], + "doc/html/man3/EVP_BytesToKey.html" => [ + "doc/man3/EVP_BytesToKey.pod" + ], + "doc/html/man3/EVP_CIPHER_CTX_get_app_data.html" => [ + "doc/man3/EVP_CIPHER_CTX_get_app_data.pod" + ], + "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html" => [ + "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" + ], + "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html" => [ + "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" + ], + "doc/html/man3/EVP_CIPHER_meth_new.html" => [ + "doc/man3/EVP_CIPHER_meth_new.pod" + ], + "doc/html/man3/EVP_DigestInit.html" => [ + "doc/man3/EVP_DigestInit.pod" + ], + "doc/html/man3/EVP_DigestSignInit.html" => [ + "doc/man3/EVP_DigestSignInit.pod" + ], + "doc/html/man3/EVP_DigestVerifyInit.html" => [ + "doc/man3/EVP_DigestVerifyInit.pod" + ], + "doc/html/man3/EVP_EncodeInit.html" => [ + "doc/man3/EVP_EncodeInit.pod" + ], + "doc/html/man3/EVP_EncryptInit.html" => [ + "doc/man3/EVP_EncryptInit.pod" + ], + "doc/html/man3/EVP_KDF.html" => [ + "doc/man3/EVP_KDF.pod" + ], + "doc/html/man3/EVP_KEM_free.html" => [ + "doc/man3/EVP_KEM_free.pod" + ], + "doc/html/man3/EVP_KEYEXCH_free.html" => [ + "doc/man3/EVP_KEYEXCH_free.pod" + ], + "doc/html/man3/EVP_KEYMGMT.html" => [ + "doc/man3/EVP_KEYMGMT.pod" + ], + "doc/html/man3/EVP_MAC.html" => [ + "doc/man3/EVP_MAC.pod" + ], + "doc/html/man3/EVP_MD_meth_new.html" => [ + "doc/man3/EVP_MD_meth_new.pod" + ], + "doc/html/man3/EVP_OpenInit.html" => [ + "doc/man3/EVP_OpenInit.pod" + ], + "doc/html/man3/EVP_PBE_CipherInit.html" => [ + "doc/man3/EVP_PBE_CipherInit.pod" + ], + "doc/html/man3/EVP_PKEY2PKCS8.html" => [ + "doc/man3/EVP_PKEY2PKCS8.pod" + ], + "doc/html/man3/EVP_PKEY_ASN1_METHOD.html" => [ + "doc/man3/EVP_PKEY_ASN1_METHOD.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_ctrl.html" => [ + "doc/man3/EVP_PKEY_CTX_ctrl.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html" => [ + "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html" => [ + "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_get_algor.html" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_new.html" => [ + "doc/man3/EVP_PKEY_CTX_new.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html" => [ + "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html" => [ + "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_params.html" => [ + "doc/man3/EVP_PKEY_CTX_set_params.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html" => [ + "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html" => [ + "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" + ], + "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html" => [ + "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" + ], + "doc/html/man3/EVP_PKEY_asn1_get_count.html" => [ + "doc/man3/EVP_PKEY_asn1_get_count.pod" + ], + "doc/html/man3/EVP_PKEY_check.html" => [ + "doc/man3/EVP_PKEY_check.pod" + ], + "doc/html/man3/EVP_PKEY_copy_parameters.html" => [ + "doc/man3/EVP_PKEY_copy_parameters.pod" + ], + "doc/html/man3/EVP_PKEY_decapsulate.html" => [ + "doc/man3/EVP_PKEY_decapsulate.pod" + ], + "doc/html/man3/EVP_PKEY_decrypt.html" => [ + "doc/man3/EVP_PKEY_decrypt.pod" + ], + "doc/html/man3/EVP_PKEY_derive.html" => [ + "doc/man3/EVP_PKEY_derive.pod" + ], + "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html" => [ + "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" + ], + "doc/html/man3/EVP_PKEY_encapsulate.html" => [ + "doc/man3/EVP_PKEY_encapsulate.pod" + ], + "doc/html/man3/EVP_PKEY_encrypt.html" => [ + "doc/man3/EVP_PKEY_encrypt.pod" + ], + "doc/html/man3/EVP_PKEY_fromdata.html" => [ + "doc/man3/EVP_PKEY_fromdata.pod" + ], + "doc/html/man3/EVP_PKEY_get_attr.html" => [ + "doc/man3/EVP_PKEY_get_attr.pod" + ], + "doc/html/man3/EVP_PKEY_get_default_digest_nid.html" => [ + "doc/man3/EVP_PKEY_get_default_digest_nid.pod" + ], + "doc/html/man3/EVP_PKEY_get_field_type.html" => [ + "doc/man3/EVP_PKEY_get_field_type.pod" + ], + "doc/html/man3/EVP_PKEY_get_group_name.html" => [ + "doc/man3/EVP_PKEY_get_group_name.pod" + ], + "doc/html/man3/EVP_PKEY_get_size.html" => [ + "doc/man3/EVP_PKEY_get_size.pod" + ], + "doc/html/man3/EVP_PKEY_gettable_params.html" => [ + "doc/man3/EVP_PKEY_gettable_params.pod" + ], + "doc/html/man3/EVP_PKEY_is_a.html" => [ + "doc/man3/EVP_PKEY_is_a.pod" + ], + "doc/html/man3/EVP_PKEY_keygen.html" => [ + "doc/man3/EVP_PKEY_keygen.pod" + ], + "doc/html/man3/EVP_PKEY_meth_get_count.html" => [ + "doc/man3/EVP_PKEY_meth_get_count.pod" + ], + "doc/html/man3/EVP_PKEY_meth_new.html" => [ + "doc/man3/EVP_PKEY_meth_new.pod" + ], + "doc/html/man3/EVP_PKEY_new.html" => [ + "doc/man3/EVP_PKEY_new.pod" + ], + "doc/html/man3/EVP_PKEY_print_private.html" => [ + "doc/man3/EVP_PKEY_print_private.pod" + ], + "doc/html/man3/EVP_PKEY_set1_RSA.html" => [ + "doc/man3/EVP_PKEY_set1_RSA.pod" + ], + "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html" => [ + "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" + ], + "doc/html/man3/EVP_PKEY_set_type.html" => [ + "doc/man3/EVP_PKEY_set_type.pod" + ], + "doc/html/man3/EVP_PKEY_settable_params.html" => [ + "doc/man3/EVP_PKEY_settable_params.pod" + ], + "doc/html/man3/EVP_PKEY_sign.html" => [ + "doc/man3/EVP_PKEY_sign.pod" + ], + "doc/html/man3/EVP_PKEY_todata.html" => [ + "doc/man3/EVP_PKEY_todata.pod" + ], + "doc/html/man3/EVP_PKEY_verify.html" => [ + "doc/man3/EVP_PKEY_verify.pod" + ], + "doc/html/man3/EVP_PKEY_verify_recover.html" => [ + "doc/man3/EVP_PKEY_verify_recover.pod" + ], + "doc/html/man3/EVP_RAND.html" => [ + "doc/man3/EVP_RAND.pod" + ], + "doc/html/man3/EVP_SIGNATURE.html" => [ + "doc/man3/EVP_SIGNATURE.pod" + ], + "doc/html/man3/EVP_SKEY.html" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/html/man3/EVP_SKEYMGMT.html" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], + "doc/html/man3/EVP_SealInit.html" => [ + "doc/man3/EVP_SealInit.pod" + ], + "doc/html/man3/EVP_SignInit.html" => [ + "doc/man3/EVP_SignInit.pod" + ], + "doc/html/man3/EVP_VerifyInit.html" => [ + "doc/man3/EVP_VerifyInit.pod" + ], + "doc/html/man3/EVP_aes_128_gcm.html" => [ + "doc/man3/EVP_aes_128_gcm.pod" + ], + "doc/html/man3/EVP_aria_128_gcm.html" => [ + "doc/man3/EVP_aria_128_gcm.pod" + ], + "doc/html/man3/EVP_bf_cbc.html" => [ + "doc/man3/EVP_bf_cbc.pod" + ], + "doc/html/man3/EVP_blake2b512.html" => [ + "doc/man3/EVP_blake2b512.pod" + ], + "doc/html/man3/EVP_camellia_128_ecb.html" => [ + "doc/man3/EVP_camellia_128_ecb.pod" + ], + "doc/html/man3/EVP_cast5_cbc.html" => [ + "doc/man3/EVP_cast5_cbc.pod" + ], + "doc/html/man3/EVP_chacha20.html" => [ + "doc/man3/EVP_chacha20.pod" + ], + "doc/html/man3/EVP_des_cbc.html" => [ + "doc/man3/EVP_des_cbc.pod" + ], + "doc/html/man3/EVP_desx_cbc.html" => [ + "doc/man3/EVP_desx_cbc.pod" + ], + "doc/html/man3/EVP_idea_cbc.html" => [ + "doc/man3/EVP_idea_cbc.pod" + ], + "doc/html/man3/EVP_md2.html" => [ + "doc/man3/EVP_md2.pod" + ], + "doc/html/man3/EVP_md4.html" => [ + "doc/man3/EVP_md4.pod" + ], + "doc/html/man3/EVP_md5.html" => [ + "doc/man3/EVP_md5.pod" + ], + "doc/html/man3/EVP_mdc2.html" => [ + "doc/man3/EVP_mdc2.pod" + ], + "doc/html/man3/EVP_rc2_cbc.html" => [ + "doc/man3/EVP_rc2_cbc.pod" + ], + "doc/html/man3/EVP_rc4.html" => [ + "doc/man3/EVP_rc4.pod" + ], + "doc/html/man3/EVP_rc5_32_12_16_cbc.html" => [ + "doc/man3/EVP_rc5_32_12_16_cbc.pod" + ], + "doc/html/man3/EVP_ripemd160.html" => [ + "doc/man3/EVP_ripemd160.pod" + ], + "doc/html/man3/EVP_seed_cbc.html" => [ + "doc/man3/EVP_seed_cbc.pod" + ], + "doc/html/man3/EVP_set_default_properties.html" => [ + "doc/man3/EVP_set_default_properties.pod" + ], + "doc/html/man3/EVP_sha1.html" => [ + "doc/man3/EVP_sha1.pod" + ], + "doc/html/man3/EVP_sha224.html" => [ + "doc/man3/EVP_sha224.pod" + ], + "doc/html/man3/EVP_sha3_224.html" => [ + "doc/man3/EVP_sha3_224.pod" + ], + "doc/html/man3/EVP_sm3.html" => [ + "doc/man3/EVP_sm3.pod" + ], + "doc/html/man3/EVP_sm4_cbc.html" => [ + "doc/man3/EVP_sm4_cbc.pod" + ], + "doc/html/man3/EVP_whirlpool.html" => [ + "doc/man3/EVP_whirlpool.pod" + ], + "doc/html/man3/GENERAL_NAME.html" => [ + "doc/man3/GENERAL_NAME.pod" + ], + "doc/html/man3/HMAC.html" => [ + "doc/man3/HMAC.pod" + ], + "doc/html/man3/MD5.html" => [ + "doc/man3/MD5.pod" + ], + "doc/html/man3/MDC2_Init.html" => [ + "doc/man3/MDC2_Init.pod" + ], + "doc/html/man3/NCONF_new_ex.html" => [ + "doc/man3/NCONF_new_ex.pod" + ], + "doc/html/man3/OBJ_nid2obj.html" => [ + "doc/man3/OBJ_nid2obj.pod" + ], + "doc/html/man3/OCSP_REQUEST_new.html" => [ + "doc/man3/OCSP_REQUEST_new.pod" + ], + "doc/html/man3/OCSP_cert_to_id.html" => [ + "doc/man3/OCSP_cert_to_id.pod" + ], + "doc/html/man3/OCSP_request_add1_nonce.html" => [ + "doc/man3/OCSP_request_add1_nonce.pod" + ], + "doc/html/man3/OCSP_resp_find_status.html" => [ + "doc/man3/OCSP_resp_find_status.pod" + ], + "doc/html/man3/OCSP_response_status.html" => [ + "doc/man3/OCSP_response_status.pod" + ], + "doc/html/man3/OCSP_sendreq_new.html" => [ + "doc/man3/OCSP_sendreq_new.pod" + ], + "doc/html/man3/OPENSSL_Applink.html" => [ + "doc/man3/OPENSSL_Applink.pod" + ], + "doc/html/man3/OPENSSL_FILE.html" => [ + "doc/man3/OPENSSL_FILE.pod" + ], + "doc/html/man3/OPENSSL_LH_COMPFUNC.html" => [ + "doc/man3/OPENSSL_LH_COMPFUNC.pod" + ], + "doc/html/man3/OPENSSL_LH_stats.html" => [ + "doc/man3/OPENSSL_LH_stats.pod" + ], + "doc/html/man3/OPENSSL_config.html" => [ + "doc/man3/OPENSSL_config.pod" + ], + "doc/html/man3/OPENSSL_fork_prepare.html" => [ + "doc/man3/OPENSSL_fork_prepare.pod" + ], + "doc/html/man3/OPENSSL_gmtime.html" => [ + "doc/man3/OPENSSL_gmtime.pod" + ], + "doc/html/man3/OPENSSL_hexchar2int.html" => [ + "doc/man3/OPENSSL_hexchar2int.pod" + ], + "doc/html/man3/OPENSSL_ia32cap.html" => [ + "doc/man3/OPENSSL_ia32cap.pod" + ], + "doc/html/man3/OPENSSL_init_crypto.html" => [ + "doc/man3/OPENSSL_init_crypto.pod" + ], + "doc/html/man3/OPENSSL_init_ssl.html" => [ + "doc/man3/OPENSSL_init_ssl.pod" + ], + "doc/html/man3/OPENSSL_instrument_bus.html" => [ + "doc/man3/OPENSSL_instrument_bus.pod" + ], + "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ + "doc/man3/OPENSSL_load_builtin_modules.pod" + ], + "doc/html/man3/OPENSSL_load_u16_le.html" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], + "doc/html/man3/OPENSSL_malloc.html" => [ + "doc/man3/OPENSSL_malloc.pod" + ], + "doc/html/man3/OPENSSL_ppccap.html" => [ + "doc/man3/OPENSSL_ppccap.pod" + ], + "doc/html/man3/OPENSSL_riscvcap.html" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], + "doc/html/man3/OPENSSL_s390xcap.html" => [ + "doc/man3/OPENSSL_s390xcap.pod" + ], + "doc/html/man3/OPENSSL_secure_malloc.html" => [ + "doc/man3/OPENSSL_secure_malloc.pod" + ], + "doc/html/man3/OPENSSL_strcasecmp.html" => [ + "doc/man3/OPENSSL_strcasecmp.pod" + ], + "doc/html/man3/OSSL_ALGORITHM.html" => [ + "doc/man3/OSSL_ALGORITHM.pod" + ], + "doc/html/man3/OSSL_CALLBACK.html" => [ + "doc/man3/OSSL_CALLBACK.pod" + ], + "doc/html/man3/OSSL_CMP_ATAV_set0.html" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], + "doc/html/man3/OSSL_CMP_CTX_new.html" => [ + "doc/man3/OSSL_CMP_CTX_new.pod" + ], + "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ + "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" + ], + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], + "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ + "doc/man3/OSSL_CMP_ITAV_set0.pod" + ], + "doc/html/man3/OSSL_CMP_MSG_get0_header.html" => [ + "doc/man3/OSSL_CMP_MSG_get0_header.pod" + ], + "doc/html/man3/OSSL_CMP_MSG_http_perform.html" => [ + "doc/man3/OSSL_CMP_MSG_http_perform.pod" + ], + "doc/html/man3/OSSL_CMP_SRV_CTX_new.html" => [ + "doc/man3/OSSL_CMP_SRV_CTX_new.pod" + ], + "doc/html/man3/OSSL_CMP_STATUSINFO_new.html" => [ + "doc/man3/OSSL_CMP_STATUSINFO_new.pod" + ], + "doc/html/man3/OSSL_CMP_exec_certreq.html" => [ + "doc/man3/OSSL_CMP_exec_certreq.pod" + ], + "doc/html/man3/OSSL_CMP_log_open.html" => [ + "doc/man3/OSSL_CMP_log_open.pod" + ], + "doc/html/man3/OSSL_CMP_validate_msg.html" => [ + "doc/man3/OSSL_CMP_validate_msg.pod" + ], + "doc/html/man3/OSSL_CORE_MAKE_FUNC.html" => [ + "doc/man3/OSSL_CORE_MAKE_FUNC.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html" => [ + "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html" => [ + "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" + ], + "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" + ], + "doc/html/man3/OSSL_CRMF_pbmp_new.html" => [ + "doc/man3/OSSL_CRMF_pbmp_new.pod" + ], + "doc/html/man3/OSSL_DECODER.html" => [ + "doc/man3/OSSL_DECODER.pod" + ], + "doc/html/man3/OSSL_DECODER_CTX.html" => [ + "doc/man3/OSSL_DECODER_CTX.pod" + ], + "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html" => [ + "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" + ], + "doc/html/man3/OSSL_DECODER_from_bio.html" => [ + "doc/man3/OSSL_DECODER_from_bio.pod" + ], + "doc/html/man3/OSSL_DISPATCH.html" => [ + "doc/man3/OSSL_DISPATCH.pod" + ], + "doc/html/man3/OSSL_ENCODER.html" => [ + "doc/man3/OSSL_ENCODER.pod" + ], + "doc/html/man3/OSSL_ENCODER_CTX.html" => [ + "doc/man3/OSSL_ENCODER_CTX.pod" + ], + "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html" => [ + "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" + ], + "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ + "doc/man3/OSSL_ENCODER_to_bio.pod" + ], + "doc/html/man3/OSSL_ERR_STATE_save.html" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], + "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ + "doc/man3/OSSL_ESS_check_signing_certs.pod" + ], + "doc/html/man3/OSSL_GENERAL_NAMES_print.html" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/html/man3/OSSL_HPKE_CTX_new.html" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], + "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ + "doc/man3/OSSL_HTTP_REQ_CTX.pod" + ], + "doc/html/man3/OSSL_HTTP_parse_url.html" => [ + "doc/man3/OSSL_HTTP_parse_url.pod" + ], + "doc/html/man3/OSSL_HTTP_transfer.html" => [ + "doc/man3/OSSL_HTTP_transfer.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/html/man3/OSSL_INDICATOR_set_callback.html" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], + "doc/html/man3/OSSL_ITEM.html" => [ + "doc/man3/OSSL_ITEM.pod" + ], + "doc/html/man3/OSSL_LIB_CTX.html" => [ + "doc/man3/OSSL_LIB_CTX.pod" + ], + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], + "doc/html/man3/OSSL_PARAM.html" => [ + "doc/man3/OSSL_PARAM.pod" + ], + "doc/html/man3/OSSL_PARAM_BLD.html" => [ + "doc/man3/OSSL_PARAM_BLD.pod" + ], + "doc/html/man3/OSSL_PARAM_allocate_from_text.html" => [ + "doc/man3/OSSL_PARAM_allocate_from_text.pod" + ], + "doc/html/man3/OSSL_PARAM_dup.html" => [ + "doc/man3/OSSL_PARAM_dup.pod" + ], + "doc/html/man3/OSSL_PARAM_int.html" => [ + "doc/man3/OSSL_PARAM_int.pod" + ], + "doc/html/man3/OSSL_PARAM_print_to_bio.html" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], + "doc/html/man3/OSSL_PROVIDER.html" => [ + "doc/man3/OSSL_PROVIDER.pod" + ], + "doc/html/man3/OSSL_QUIC_client_method.html" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], + "doc/html/man3/OSSL_SELF_TEST_new.html" => [ + "doc/man3/OSSL_SELF_TEST_new.pod" + ], + "doc/html/man3/OSSL_SELF_TEST_set_callback.html" => [ + "doc/man3/OSSL_SELF_TEST_set_callback.pod" + ], + "doc/html/man3/OSSL_STORE_INFO.html" => [ + "doc/man3/OSSL_STORE_INFO.pod" + ], + "doc/html/man3/OSSL_STORE_LOADER.html" => [ + "doc/man3/OSSL_STORE_LOADER.pod" + ], + "doc/html/man3/OSSL_STORE_SEARCH.html" => [ + "doc/man3/OSSL_STORE_SEARCH.pod" + ], + "doc/html/man3/OSSL_STORE_attach.html" => [ + "doc/man3/OSSL_STORE_attach.pod" + ], + "doc/html/man3/OSSL_STORE_expect.html" => [ + "doc/man3/OSSL_STORE_expect.pod" + ], + "doc/html/man3/OSSL_STORE_open.html" => [ + "doc/man3/OSSL_STORE_open.pod" + ], + "doc/html/man3/OSSL_sleep.html" => [ + "doc/man3/OSSL_sleep.pod" + ], + "doc/html/man3/OSSL_trace_enabled.html" => [ + "doc/man3/OSSL_trace_enabled.pod" + ], + "doc/html/man3/OSSL_trace_get_category_num.html" => [ + "doc/man3/OSSL_trace_get_category_num.pod" + ], + "doc/html/man3/OSSL_trace_set_channel.html" => [ + "doc/man3/OSSL_trace_set_channel.pod" + ], + "doc/html/man3/OpenSSL_add_all_algorithms.html" => [ + "doc/man3/OpenSSL_add_all_algorithms.pod" + ], + "doc/html/man3/OpenSSL_version.html" => [ + "doc/man3/OpenSSL_version.pod" + ], + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], + "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ + "doc/man3/PEM_X509_INFO_read_bio_ex.pod" + ], + "doc/html/man3/PEM_bytes_read_bio.html" => [ + "doc/man3/PEM_bytes_read_bio.pod" + ], + "doc/html/man3/PEM_read.html" => [ + "doc/man3/PEM_read.pod" + ], + "doc/html/man3/PEM_read_CMS.html" => [ + "doc/man3/PEM_read_CMS.pod" + ], + "doc/html/man3/PEM_read_bio_PrivateKey.html" => [ + "doc/man3/PEM_read_bio_PrivateKey.pod" + ], + "doc/html/man3/PEM_read_bio_ex.html" => [ + "doc/man3/PEM_read_bio_ex.pod" + ], + "doc/html/man3/PEM_write_bio_CMS_stream.html" => [ + "doc/man3/PEM_write_bio_CMS_stream.pod" + ], + "doc/html/man3/PEM_write_bio_PKCS7_stream.html" => [ + "doc/man3/PEM_write_bio_PKCS7_stream.pod" + ], + "doc/html/man3/PKCS12_PBE_keyivgen.html" => [ + "doc/man3/PKCS12_PBE_keyivgen.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_create_cert.html" => [ + "doc/man3/PKCS12_SAFEBAG_create_cert.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ + "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" + ], + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], + "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ + "doc/man3/PKCS12_add1_attr_by_NID.pod" + ], + "doc/html/man3/PKCS12_add_CSPName_asc.html" => [ + "doc/man3/PKCS12_add_CSPName_asc.pod" + ], + "doc/html/man3/PKCS12_add_cert.html" => [ + "doc/man3/PKCS12_add_cert.pod" + ], + "doc/html/man3/PKCS12_add_friendlyname_asc.html" => [ + "doc/man3/PKCS12_add_friendlyname_asc.pod" + ], + "doc/html/man3/PKCS12_add_localkeyid.html" => [ + "doc/man3/PKCS12_add_localkeyid.pod" + ], + "doc/html/man3/PKCS12_add_safe.html" => [ + "doc/man3/PKCS12_add_safe.pod" + ], + "doc/html/man3/PKCS12_create.html" => [ + "doc/man3/PKCS12_create.pod" + ], + "doc/html/man3/PKCS12_decrypt_skey.html" => [ + "doc/man3/PKCS12_decrypt_skey.pod" + ], + "doc/html/man3/PKCS12_gen_mac.html" => [ + "doc/man3/PKCS12_gen_mac.pod" + ], + "doc/html/man3/PKCS12_get_friendlyname.html" => [ + "doc/man3/PKCS12_get_friendlyname.pod" + ], + "doc/html/man3/PKCS12_init.html" => [ + "doc/man3/PKCS12_init.pod" + ], + "doc/html/man3/PKCS12_item_decrypt_d2i.html" => [ + "doc/man3/PKCS12_item_decrypt_d2i.pod" + ], + "doc/html/man3/PKCS12_key_gen_utf8_ex.html" => [ + "doc/man3/PKCS12_key_gen_utf8_ex.pod" + ], + "doc/html/man3/PKCS12_newpass.html" => [ + "doc/man3/PKCS12_newpass.pod" + ], + "doc/html/man3/PKCS12_pack_p7encdata.html" => [ + "doc/man3/PKCS12_pack_p7encdata.pod" + ], + "doc/html/man3/PKCS12_parse.html" => [ + "doc/man3/PKCS12_parse.pod" + ], + "doc/html/man3/PKCS5_PBE_keyivgen.html" => [ + "doc/man3/PKCS5_PBE_keyivgen.pod" + ], + "doc/html/man3/PKCS5_PBKDF2_HMAC.html" => [ + "doc/man3/PKCS5_PBKDF2_HMAC.pod" + ], + "doc/html/man3/PKCS7_decrypt.html" => [ + "doc/man3/PKCS7_decrypt.pod" + ], + "doc/html/man3/PKCS7_encrypt.html" => [ + "doc/man3/PKCS7_encrypt.pod" + ], + "doc/html/man3/PKCS7_get_octet_string.html" => [ + "doc/man3/PKCS7_get_octet_string.pod" + ], + "doc/html/man3/PKCS7_sign.html" => [ + "doc/man3/PKCS7_sign.pod" + ], + "doc/html/man3/PKCS7_sign_add_signer.html" => [ + "doc/man3/PKCS7_sign_add_signer.pod" + ], + "doc/html/man3/PKCS7_type_is_other.html" => [ + "doc/man3/PKCS7_type_is_other.pod" + ], + "doc/html/man3/PKCS7_verify.html" => [ + "doc/man3/PKCS7_verify.pod" + ], + "doc/html/man3/PKCS8_encrypt.html" => [ + "doc/man3/PKCS8_encrypt.pod" + ], + "doc/html/man3/PKCS8_pkey_add1_attr.html" => [ + "doc/man3/PKCS8_pkey_add1_attr.pod" + ], + "doc/html/man3/RAND_add.html" => [ + "doc/man3/RAND_add.pod" + ], + "doc/html/man3/RAND_bytes.html" => [ + "doc/man3/RAND_bytes.pod" + ], + "doc/html/man3/RAND_cleanup.html" => [ + "doc/man3/RAND_cleanup.pod" + ], + "doc/html/man3/RAND_egd.html" => [ + "doc/man3/RAND_egd.pod" + ], + "doc/html/man3/RAND_get0_primary.html" => [ + "doc/man3/RAND_get0_primary.pod" + ], + "doc/html/man3/RAND_load_file.html" => [ + "doc/man3/RAND_load_file.pod" + ], + "doc/html/man3/RAND_set_DRBG_type.html" => [ + "doc/man3/RAND_set_DRBG_type.pod" + ], + "doc/html/man3/RAND_set_rand_method.html" => [ + "doc/man3/RAND_set_rand_method.pod" + ], + "doc/html/man3/RC4_set_key.html" => [ + "doc/man3/RC4_set_key.pod" + ], + "doc/html/man3/RIPEMD160_Init.html" => [ + "doc/man3/RIPEMD160_Init.pod" + ], + "doc/html/man3/RSA_blinding_on.html" => [ + "doc/man3/RSA_blinding_on.pod" + ], + "doc/html/man3/RSA_check_key.html" => [ + "doc/man3/RSA_check_key.pod" + ], + "doc/html/man3/RSA_generate_key.html" => [ + "doc/man3/RSA_generate_key.pod" + ], + "doc/html/man3/RSA_get0_key.html" => [ + "doc/man3/RSA_get0_key.pod" + ], + "doc/html/man3/RSA_meth_new.html" => [ + "doc/man3/RSA_meth_new.pod" + ], + "doc/html/man3/RSA_new.html" => [ + "doc/man3/RSA_new.pod" + ], + "doc/html/man3/RSA_padding_add_PKCS1_type_1.html" => [ + "doc/man3/RSA_padding_add_PKCS1_type_1.pod" + ], + "doc/html/man3/RSA_print.html" => [ + "doc/man3/RSA_print.pod" + ], + "doc/html/man3/RSA_private_encrypt.html" => [ + "doc/man3/RSA_private_encrypt.pod" + ], + "doc/html/man3/RSA_public_encrypt.html" => [ + "doc/man3/RSA_public_encrypt.pod" + ], + "doc/html/man3/RSA_set_method.html" => [ + "doc/man3/RSA_set_method.pod" + ], + "doc/html/man3/RSA_sign.html" => [ + "doc/man3/RSA_sign.pod" + ], + "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html" => [ + "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" + ], + "doc/html/man3/RSA_size.html" => [ + "doc/man3/RSA_size.pod" + ], + "doc/html/man3/SCT_new.html" => [ + "doc/man3/SCT_new.pod" + ], + "doc/html/man3/SCT_print.html" => [ + "doc/man3/SCT_print.pod" + ], + "doc/html/man3/SCT_validate.html" => [ + "doc/man3/SCT_validate.pod" + ], + "doc/html/man3/SHA256_Init.html" => [ + "doc/man3/SHA256_Init.pod" + ], + "doc/html/man3/SMIME_read_ASN1.html" => [ + "doc/man3/SMIME_read_ASN1.pod" + ], + "doc/html/man3/SMIME_read_CMS.html" => [ + "doc/man3/SMIME_read_CMS.pod" + ], + "doc/html/man3/SMIME_read_PKCS7.html" => [ + "doc/man3/SMIME_read_PKCS7.pod" + ], + "doc/html/man3/SMIME_write_ASN1.html" => [ + "doc/man3/SMIME_write_ASN1.pod" + ], + "doc/html/man3/SMIME_write_CMS.html" => [ + "doc/man3/SMIME_write_CMS.pod" + ], + "doc/html/man3/SMIME_write_PKCS7.html" => [ + "doc/man3/SMIME_write_PKCS7.pod" + ], + "doc/html/man3/SRP_Calc_B.html" => [ + "doc/man3/SRP_Calc_B.pod" + ], + "doc/html/man3/SRP_VBASE_new.html" => [ + "doc/man3/SRP_VBASE_new.pod" + ], + "doc/html/man3/SRP_create_verifier.html" => [ + "doc/man3/SRP_create_verifier.pod" + ], + "doc/html/man3/SRP_user_pwd_new.html" => [ + "doc/man3/SRP_user_pwd_new.pod" + ], + "doc/html/man3/SSL_CIPHER_get_name.html" => [ + "doc/man3/SSL_CIPHER_get_name.pod" + ], + "doc/html/man3/SSL_COMP_add_compression_method.html" => [ + "doc/man3/SSL_COMP_add_compression_method.pod" + ], + "doc/html/man3/SSL_CONF_CTX_new.html" => [ + "doc/man3/SSL_CONF_CTX_new.pod" + ], + "doc/html/man3/SSL_CONF_CTX_set1_prefix.html" => [ + "doc/man3/SSL_CONF_CTX_set1_prefix.pod" + ], + "doc/html/man3/SSL_CONF_CTX_set_flags.html" => [ + "doc/man3/SSL_CONF_CTX_set_flags.pod" + ], + "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html" => [ + "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" + ], + "doc/html/man3/SSL_CONF_cmd.html" => [ + "doc/man3/SSL_CONF_cmd.pod" + ], + "doc/html/man3/SSL_CONF_cmd_argv.html" => [ + "doc/man3/SSL_CONF_cmd_argv.pod" + ], + "doc/html/man3/SSL_CTX_add1_chain_cert.html" => [ + "doc/man3/SSL_CTX_add1_chain_cert.pod" + ], + "doc/html/man3/SSL_CTX_add_extra_chain_cert.html" => [ + "doc/man3/SSL_CTX_add_extra_chain_cert.pod" + ], + "doc/html/man3/SSL_CTX_add_session.html" => [ + "doc/man3/SSL_CTX_add_session.pod" + ], + "doc/html/man3/SSL_CTX_config.html" => [ + "doc/man3/SSL_CTX_config.pod" + ], + "doc/html/man3/SSL_CTX_ctrl.html" => [ + "doc/man3/SSL_CTX_ctrl.pod" + ], + "doc/html/man3/SSL_CTX_dane_enable.html" => [ + "doc/man3/SSL_CTX_dane_enable.pod" + ], + "doc/html/man3/SSL_CTX_flush_sessions.html" => [ + "doc/man3/SSL_CTX_flush_sessions.pod" + ], + "doc/html/man3/SSL_CTX_free.html" => [ + "doc/man3/SSL_CTX_free.pod" + ], + "doc/html/man3/SSL_CTX_get0_param.html" => [ + "doc/man3/SSL_CTX_get0_param.pod" + ], + "doc/html/man3/SSL_CTX_get_verify_mode.html" => [ + "doc/man3/SSL_CTX_get_verify_mode.pod" + ], + "doc/html/man3/SSL_CTX_has_client_custom_ext.html" => [ + "doc/man3/SSL_CTX_has_client_custom_ext.pod" + ], + "doc/html/man3/SSL_CTX_load_verify_locations.html" => [ + "doc/man3/SSL_CTX_load_verify_locations.pod" + ], + "doc/html/man3/SSL_CTX_new.html" => [ + "doc/man3/SSL_CTX_new.pod" + ], + "doc/html/man3/SSL_CTX_sess_number.html" => [ + "doc/man3/SSL_CTX_sess_number.pod" + ], + "doc/html/man3/SSL_CTX_sess_set_cache_size.html" => [ + "doc/man3/SSL_CTX_sess_set_cache_size.pod" + ], + "doc/html/man3/SSL_CTX_sess_set_get_cb.html" => [ + "doc/man3/SSL_CTX_sess_set_get_cb.pod" + ], + "doc/html/man3/SSL_CTX_sessions.html" => [ + "doc/man3/SSL_CTX_sessions.pod" + ], + "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ + "doc/man3/SSL_CTX_set0_CA_list.pod" + ], + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], + "doc/html/man3/SSL_CTX_set1_curves.html" => [ + "doc/man3/SSL_CTX_set1_curves.pod" + ], + "doc/html/man3/SSL_CTX_set1_sigalgs.html" => [ + "doc/man3/SSL_CTX_set1_sigalgs.pod" + ], + "doc/html/man3/SSL_CTX_set1_verify_cert_store.html" => [ + "doc/man3/SSL_CTX_set1_verify_cert_store.pod" + ], + "doc/html/man3/SSL_CTX_set_alpn_select_cb.html" => [ + "doc/man3/SSL_CTX_set_alpn_select_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_cert_cb.html" => [ + "doc/man3/SSL_CTX_set_cert_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_cert_store.html" => [ + "doc/man3/SSL_CTX_set_cert_store.pod" + ], + "doc/html/man3/SSL_CTX_set_cert_verify_callback.html" => [ + "doc/man3/SSL_CTX_set_cert_verify_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_cipher_list.html" => [ + "doc/man3/SSL_CTX_set_cipher_list.pod" + ], + "doc/html/man3/SSL_CTX_set_client_cert_cb.html" => [ + "doc/man3/SSL_CTX_set_client_cert_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_client_hello_cb.html" => [ + "doc/man3/SSL_CTX_set_client_hello_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_ct_validation_callback.html" => [ + "doc/man3/SSL_CTX_set_ct_validation_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_ctlog_list_file.html" => [ + "doc/man3/SSL_CTX_set_ctlog_list_file.pod" + ], + "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ + "doc/man3/SSL_CTX_set_default_passwd_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_domain_flags.html" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], + "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ + "doc/man3/SSL_CTX_set_generate_session_id.pod" + ], + "doc/html/man3/SSL_CTX_set_info_callback.html" => [ + "doc/man3/SSL_CTX_set_info_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_keylog_callback.html" => [ + "doc/man3/SSL_CTX_set_keylog_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_max_cert_list.html" => [ + "doc/man3/SSL_CTX_set_max_cert_list.pod" + ], + "doc/html/man3/SSL_CTX_set_min_proto_version.html" => [ + "doc/man3/SSL_CTX_set_min_proto_version.pod" + ], + "doc/html/man3/SSL_CTX_set_mode.html" => [ + "doc/man3/SSL_CTX_set_mode.pod" + ], + "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ + "doc/man3/SSL_CTX_set_msg_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ + "doc/man3/SSL_CTX_set_num_tickets.pod" + ], + "doc/html/man3/SSL_CTX_set_options.html" => [ + "doc/man3/SSL_CTX_set_options.pod" + ], + "doc/html/man3/SSL_CTX_set_psk_client_callback.html" => [ + "doc/man3/SSL_CTX_set_psk_client_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_quiet_shutdown.html" => [ + "doc/man3/SSL_CTX_set_quiet_shutdown.pod" + ], + "doc/html/man3/SSL_CTX_set_read_ahead.html" => [ + "doc/man3/SSL_CTX_set_read_ahead.pod" + ], + "doc/html/man3/SSL_CTX_set_record_padding_callback.html" => [ + "doc/man3/SSL_CTX_set_record_padding_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_security_level.html" => [ + "doc/man3/SSL_CTX_set_security_level.pod" + ], + "doc/html/man3/SSL_CTX_set_session_cache_mode.html" => [ + "doc/man3/SSL_CTX_set_session_cache_mode.pod" + ], + "doc/html/man3/SSL_CTX_set_session_id_context.html" => [ + "doc/man3/SSL_CTX_set_session_id_context.pod" + ], + "doc/html/man3/SSL_CTX_set_session_ticket_cb.html" => [ + "doc/man3/SSL_CTX_set_session_ticket_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_split_send_fragment.html" => [ + "doc/man3/SSL_CTX_set_split_send_fragment.pod" + ], + "doc/html/man3/SSL_CTX_set_srp_password.html" => [ + "doc/man3/SSL_CTX_set_srp_password.pod" + ], + "doc/html/man3/SSL_CTX_set_ssl_version.html" => [ + "doc/man3/SSL_CTX_set_ssl_version.pod" + ], + "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html" => [ + "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_timeout.html" => [ + "doc/man3/SSL_CTX_set_timeout.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html" => [ + "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html" => [ + "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html" => [ + "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" + ], + "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html" => [ + "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" + ], + "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html" => [ + "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" + ], + "doc/html/man3/SSL_CTX_set_tmp_ecdh.html" => [ + "doc/man3/SSL_CTX_set_tmp_ecdh.pod" + ], + "doc/html/man3/SSL_CTX_set_verify.html" => [ + "doc/man3/SSL_CTX_set_verify.pod" + ], + "doc/html/man3/SSL_CTX_use_certificate.html" => [ + "doc/man3/SSL_CTX_use_certificate.pod" + ], + "doc/html/man3/SSL_CTX_use_psk_identity_hint.html" => [ + "doc/man3/SSL_CTX_use_psk_identity_hint.pod" + ], + "doc/html/man3/SSL_CTX_use_serverinfo.html" => [ + "doc/man3/SSL_CTX_use_serverinfo.pod" + ], + "doc/html/man3/SSL_SESSION_free.html" => [ + "doc/man3/SSL_SESSION_free.pod" + ], + "doc/html/man3/SSL_SESSION_get0_cipher.html" => [ + "doc/man3/SSL_SESSION_get0_cipher.pod" + ], + "doc/html/man3/SSL_SESSION_get0_hostname.html" => [ + "doc/man3/SSL_SESSION_get0_hostname.pod" + ], + "doc/html/man3/SSL_SESSION_get0_id_context.html" => [ + "doc/man3/SSL_SESSION_get0_id_context.pod" + ], + "doc/html/man3/SSL_SESSION_get0_peer.html" => [ + "doc/man3/SSL_SESSION_get0_peer.pod" + ], + "doc/html/man3/SSL_SESSION_get_compress_id.html" => [ + "doc/man3/SSL_SESSION_get_compress_id.pod" + ], + "doc/html/man3/SSL_SESSION_get_protocol_version.html" => [ + "doc/man3/SSL_SESSION_get_protocol_version.pod" + ], + "doc/html/man3/SSL_SESSION_get_time.html" => [ + "doc/man3/SSL_SESSION_get_time.pod" + ], + "doc/html/man3/SSL_SESSION_has_ticket.html" => [ + "doc/man3/SSL_SESSION_has_ticket.pod" + ], + "doc/html/man3/SSL_SESSION_is_resumable.html" => [ + "doc/man3/SSL_SESSION_is_resumable.pod" + ], + "doc/html/man3/SSL_SESSION_print.html" => [ + "doc/man3/SSL_SESSION_print.pod" + ], + "doc/html/man3/SSL_SESSION_set1_id.html" => [ + "doc/man3/SSL_SESSION_set1_id.pod" + ], + "doc/html/man3/SSL_accept.html" => [ + "doc/man3/SSL_accept.pod" + ], + "doc/html/man3/SSL_accept_stream.html" => [ + "doc/man3/SSL_accept_stream.pod" + ], + "doc/html/man3/SSL_alert_type_string.html" => [ + "doc/man3/SSL_alert_type_string.pod" + ], + "doc/html/man3/SSL_alloc_buffers.html" => [ + "doc/man3/SSL_alloc_buffers.pod" + ], + "doc/html/man3/SSL_check_chain.html" => [ + "doc/man3/SSL_check_chain.pod" + ], + "doc/html/man3/SSL_clear.html" => [ + "doc/man3/SSL_clear.pod" + ], + "doc/html/man3/SSL_connect.html" => [ + "doc/man3/SSL_connect.pod" + ], + "doc/html/man3/SSL_do_handshake.html" => [ + "doc/man3/SSL_do_handshake.pod" + ], + "doc/html/man3/SSL_export_keying_material.html" => [ + "doc/man3/SSL_export_keying_material.pod" + ], + "doc/html/man3/SSL_extension_supported.html" => [ + "doc/man3/SSL_extension_supported.pod" + ], + "doc/html/man3/SSL_free.html" => [ + "doc/man3/SSL_free.pod" + ], + "doc/html/man3/SSL_get0_connection.html" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/html/man3/SSL_get0_group_name.html" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/html/man3/SSL_get0_peer_rpk.html" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], + "doc/html/man3/SSL_get0_peer_scts.html" => [ + "doc/man3/SSL_get0_peer_scts.pod" + ], + "doc/html/man3/SSL_get1_builtin_sigalgs.html" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], + "doc/html/man3/SSL_get_SSL_CTX.html" => [ + "doc/man3/SSL_get_SSL_CTX.pod" + ], + "doc/html/man3/SSL_get_all_async_fds.html" => [ + "doc/man3/SSL_get_all_async_fds.pod" + ], + "doc/html/man3/SSL_get_certificate.html" => [ + "doc/man3/SSL_get_certificate.pod" + ], + "doc/html/man3/SSL_get_ciphers.html" => [ + "doc/man3/SSL_get_ciphers.pod" + ], + "doc/html/man3/SSL_get_client_random.html" => [ + "doc/man3/SSL_get_client_random.pod" + ], + "doc/html/man3/SSL_get_conn_close_info.html" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], + "doc/html/man3/SSL_get_current_cipher.html" => [ + "doc/man3/SSL_get_current_cipher.pod" + ], + "doc/html/man3/SSL_get_default_timeout.html" => [ + "doc/man3/SSL_get_default_timeout.pod" + ], + "doc/html/man3/SSL_get_error.html" => [ + "doc/man3/SSL_get_error.pod" + ], + "doc/html/man3/SSL_get_event_timeout.html" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], + "doc/html/man3/SSL_get_extms_support.html" => [ + "doc/man3/SSL_get_extms_support.pod" + ], + "doc/html/man3/SSL_get_fd.html" => [ + "doc/man3/SSL_get_fd.pod" + ], + "doc/html/man3/SSL_get_handshake_rtt.html" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], + "doc/html/man3/SSL_get_peer_cert_chain.html" => [ + "doc/man3/SSL_get_peer_cert_chain.pod" + ], + "doc/html/man3/SSL_get_peer_certificate.html" => [ + "doc/man3/SSL_get_peer_certificate.pod" + ], + "doc/html/man3/SSL_get_peer_signature_nid.html" => [ + "doc/man3/SSL_get_peer_signature_nid.pod" + ], + "doc/html/man3/SSL_get_peer_tmp_key.html" => [ + "doc/man3/SSL_get_peer_tmp_key.pod" + ], + "doc/html/man3/SSL_get_psk_identity.html" => [ + "doc/man3/SSL_get_psk_identity.pod" + ], + "doc/html/man3/SSL_get_rbio.html" => [ + "doc/man3/SSL_get_rbio.pod" + ], + "doc/html/man3/SSL_get_rpoll_descriptor.html" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], + "doc/html/man3/SSL_get_session.html" => [ + "doc/man3/SSL_get_session.pod" + ], + "doc/html/man3/SSL_get_shared_sigalgs.html" => [ + "doc/man3/SSL_get_shared_sigalgs.pod" + ], + "doc/html/man3/SSL_get_stream_id.html" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/html/man3/SSL_get_stream_read_state.html" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/html/man3/SSL_get_value_uint.html" => [ + "doc/man3/SSL_get_value_uint.pod" + ], + "doc/html/man3/SSL_get_verify_result.html" => [ + "doc/man3/SSL_get_verify_result.pod" + ], + "doc/html/man3/SSL_get_version.html" => [ + "doc/man3/SSL_get_version.pod" + ], + "doc/html/man3/SSL_group_to_name.html" => [ + "doc/man3/SSL_group_to_name.pod" + ], + "doc/html/man3/SSL_handle_events.html" => [ + "doc/man3/SSL_handle_events.pod" + ], + "doc/html/man3/SSL_in_init.html" => [ + "doc/man3/SSL_in_init.pod" + ], + "doc/html/man3/SSL_inject_net_dgram.html" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], + "doc/html/man3/SSL_key_update.html" => [ + "doc/man3/SSL_key_update.pod" + ], + "doc/html/man3/SSL_library_init.html" => [ + "doc/man3/SSL_library_init.pod" + ], + "doc/html/man3/SSL_load_client_CA_file.html" => [ + "doc/man3/SSL_load_client_CA_file.pod" + ], + "doc/html/man3/SSL_new.html" => [ + "doc/man3/SSL_new.pod" + ], + "doc/html/man3/SSL_new_domain.html" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/html/man3/SSL_new_listener.html" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/html/man3/SSL_new_stream.html" => [ + "doc/man3/SSL_new_stream.pod" + ], + "doc/html/man3/SSL_pending.html" => [ + "doc/man3/SSL_pending.pod" + ], + "doc/html/man3/SSL_poll.html" => [ + "doc/man3/SSL_poll.pod" + ], + "doc/html/man3/SSL_read.html" => [ + "doc/man3/SSL_read.pod" + ], + "doc/html/man3/SSL_read_early_data.html" => [ + "doc/man3/SSL_read_early_data.pod" + ], + "doc/html/man3/SSL_rstate_string.html" => [ + "doc/man3/SSL_rstate_string.pod" + ], + "doc/html/man3/SSL_session_reused.html" => [ + "doc/man3/SSL_session_reused.pod" + ], + "doc/html/man3/SSL_set1_host.html" => [ + "doc/man3/SSL_set1_host.pod" + ], + "doc/html/man3/SSL_set1_initial_peer_addr.html" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/html/man3/SSL_set1_server_cert_type.html" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], + "doc/html/man3/SSL_set_async_callback.html" => [ + "doc/man3/SSL_set_async_callback.pod" + ], + "doc/html/man3/SSL_set_bio.html" => [ + "doc/man3/SSL_set_bio.pod" + ], + "doc/html/man3/SSL_set_blocking_mode.html" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], + "doc/html/man3/SSL_set_connect_state.html" => [ + "doc/man3/SSL_set_connect_state.pod" + ], + "doc/html/man3/SSL_set_default_stream_mode.html" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], + "doc/html/man3/SSL_set_fd.html" => [ + "doc/man3/SSL_set_fd.pod" + ], + "doc/html/man3/SSL_set_incoming_stream_policy.html" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/html/man3/SSL_set_quic_tls_cbs.html" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], + "doc/html/man3/SSL_set_retry_verify.html" => [ + "doc/man3/SSL_set_retry_verify.pod" + ], + "doc/html/man3/SSL_set_session.html" => [ + "doc/man3/SSL_set_session.pod" + ], + "doc/html/man3/SSL_set_session_secret_cb.html" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], + "doc/html/man3/SSL_set_shutdown.html" => [ + "doc/man3/SSL_set_shutdown.pod" + ], + "doc/html/man3/SSL_set_verify_result.html" => [ + "doc/man3/SSL_set_verify_result.pod" + ], + "doc/html/man3/SSL_shutdown.html" => [ + "doc/man3/SSL_shutdown.pod" + ], + "doc/html/man3/SSL_state_string.html" => [ + "doc/man3/SSL_state_string.pod" + ], + "doc/html/man3/SSL_stream_conclude.html" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/html/man3/SSL_stream_reset.html" => [ + "doc/man3/SSL_stream_reset.pod" + ], + "doc/html/man3/SSL_want.html" => [ + "doc/man3/SSL_want.pod" + ], + "doc/html/man3/SSL_write.html" => [ + "doc/man3/SSL_write.pod" + ], + "doc/html/man3/TS_RESP_CTX_new.html" => [ + "doc/man3/TS_RESP_CTX_new.pod" + ], + "doc/html/man3/TS_VERIFY_CTX.html" => [ + "doc/man3/TS_VERIFY_CTX.pod" + ], + "doc/html/man3/UI_STRING.html" => [ + "doc/man3/UI_STRING.pod" + ], + "doc/html/man3/UI_UTIL_read_pw.html" => [ + "doc/man3/UI_UTIL_read_pw.pod" + ], + "doc/html/man3/UI_create_method.html" => [ + "doc/man3/UI_create_method.pod" + ], + "doc/html/man3/UI_new.html" => [ + "doc/man3/UI_new.pod" + ], + "doc/html/man3/X509V3_EXT_print.html" => [ + "doc/man3/X509V3_EXT_print.pod" + ], + "doc/html/man3/X509V3_get_d2i.html" => [ + "doc/man3/X509V3_get_d2i.pod" + ], + "doc/html/man3/X509V3_set_ctx.html" => [ + "doc/man3/X509V3_set_ctx.pod" + ], + "doc/html/man3/X509_ACERT_add1_attr.html" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/html/man3/X509_ACERT_add_attr_nconf.html" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/html/man3/X509_ACERT_get_attr.html" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/html/man3/X509_ACERT_print_ex.html" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], + "doc/html/man3/X509_ALGOR_dup.html" => [ + "doc/man3/X509_ALGOR_dup.pod" + ], + "doc/html/man3/X509_ATTRIBUTE.html" => [ + "doc/man3/X509_ATTRIBUTE.pod" + ], + "doc/html/man3/X509_CRL_get0_by_serial.html" => [ + "doc/man3/X509_CRL_get0_by_serial.pod" + ], + "doc/html/man3/X509_EXTENSION_set_object.html" => [ + "doc/man3/X509_EXTENSION_set_object.pod" + ], + "doc/html/man3/X509_LOOKUP.html" => [ + "doc/man3/X509_LOOKUP.pod" + ], + "doc/html/man3/X509_LOOKUP_hash_dir.html" => [ + "doc/man3/X509_LOOKUP_hash_dir.pod" + ], + "doc/html/man3/X509_LOOKUP_meth_new.html" => [ + "doc/man3/X509_LOOKUP_meth_new.pod" + ], + "doc/html/man3/X509_NAME_ENTRY_get_object.html" => [ + "doc/man3/X509_NAME_ENTRY_get_object.pod" + ], + "doc/html/man3/X509_NAME_add_entry_by_txt.html" => [ + "doc/man3/X509_NAME_add_entry_by_txt.pod" + ], + "doc/html/man3/X509_NAME_get0_der.html" => [ + "doc/man3/X509_NAME_get0_der.pod" + ], + "doc/html/man3/X509_NAME_get_index_by_NID.html" => [ + "doc/man3/X509_NAME_get_index_by_NID.pod" + ], + "doc/html/man3/X509_NAME_print_ex.html" => [ + "doc/man3/X509_NAME_print_ex.pod" + ], + "doc/html/man3/X509_PUBKEY_new.html" => [ + "doc/man3/X509_PUBKEY_new.pod" + ], + "doc/html/man3/X509_REQ_get_attr.html" => [ + "doc/man3/X509_REQ_get_attr.pod" + ], + "doc/html/man3/X509_REQ_get_extensions.html" => [ + "doc/man3/X509_REQ_get_extensions.pod" + ], + "doc/html/man3/X509_SIG_get0.html" => [ + "doc/man3/X509_SIG_get0.pod" + ], + "doc/html/man3/X509_STORE_CTX_get_by_subject.html" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], + "doc/html/man3/X509_STORE_CTX_get_error.html" => [ + "doc/man3/X509_STORE_CTX_get_error.pod" + ], + "doc/html/man3/X509_STORE_CTX_new.html" => [ + "doc/man3/X509_STORE_CTX_new.pod" + ], + "doc/html/man3/X509_STORE_CTX_set_verify_cb.html" => [ + "doc/man3/X509_STORE_CTX_set_verify_cb.pod" + ], + "doc/html/man3/X509_STORE_add_cert.html" => [ + "doc/man3/X509_STORE_add_cert.pod" + ], + "doc/html/man3/X509_STORE_get0_param.html" => [ + "doc/man3/X509_STORE_get0_param.pod" + ], + "doc/html/man3/X509_STORE_new.html" => [ + "doc/man3/X509_STORE_new.pod" + ], + "doc/html/man3/X509_STORE_set_verify_cb_func.html" => [ + "doc/man3/X509_STORE_set_verify_cb_func.pod" + ], + "doc/html/man3/X509_VERIFY_PARAM_set_flags.html" => [ + "doc/man3/X509_VERIFY_PARAM_set_flags.pod" + ], + "doc/html/man3/X509_add_cert.html" => [ + "doc/man3/X509_add_cert.pod" + ], + "doc/html/man3/X509_check_ca.html" => [ + "doc/man3/X509_check_ca.pod" + ], + "doc/html/man3/X509_check_host.html" => [ + "doc/man3/X509_check_host.pod" + ], + "doc/html/man3/X509_check_issued.html" => [ + "doc/man3/X509_check_issued.pod" + ], + "doc/html/man3/X509_check_private_key.html" => [ + "doc/man3/X509_check_private_key.pod" + ], + "doc/html/man3/X509_check_purpose.html" => [ + "doc/man3/X509_check_purpose.pod" + ], + "doc/html/man3/X509_cmp.html" => [ + "doc/man3/X509_cmp.pod" + ], + "doc/html/man3/X509_cmp_time.html" => [ + "doc/man3/X509_cmp_time.pod" + ], + "doc/html/man3/X509_digest.html" => [ + "doc/man3/X509_digest.pod" + ], + "doc/html/man3/X509_dup.html" => [ + "doc/man3/X509_dup.pod" + ], + "doc/html/man3/X509_get0_distinguishing_id.html" => [ + "doc/man3/X509_get0_distinguishing_id.pod" + ], + "doc/html/man3/X509_get0_notBefore.html" => [ + "doc/man3/X509_get0_notBefore.pod" + ], + "doc/html/man3/X509_get0_signature.html" => [ + "doc/man3/X509_get0_signature.pod" + ], + "doc/html/man3/X509_get0_uids.html" => [ + "doc/man3/X509_get0_uids.pod" + ], + "doc/html/man3/X509_get_default_cert_file.html" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], + "doc/html/man3/X509_get_extension_flags.html" => [ + "doc/man3/X509_get_extension_flags.pod" + ], + "doc/html/man3/X509_get_pubkey.html" => [ + "doc/man3/X509_get_pubkey.pod" + ], + "doc/html/man3/X509_get_serialNumber.html" => [ + "doc/man3/X509_get_serialNumber.pod" + ], + "doc/html/man3/X509_get_subject_name.html" => [ + "doc/man3/X509_get_subject_name.pod" + ], + "doc/html/man3/X509_get_version.html" => [ + "doc/man3/X509_get_version.pod" + ], + "doc/html/man3/X509_load_http.html" => [ + "doc/man3/X509_load_http.pod" + ], + "doc/html/man3/X509_new.html" => [ + "doc/man3/X509_new.pod" + ], + "doc/html/man3/X509_sign.html" => [ + "doc/man3/X509_sign.pod" + ], + "doc/html/man3/X509_verify.html" => [ + "doc/man3/X509_verify.pod" + ], + "doc/html/man3/X509_verify_cert.html" => [ + "doc/man3/X509_verify_cert.pod" + ], + "doc/html/man3/X509v3_get_ext_by_NID.html" => [ + "doc/man3/X509v3_get_ext_by_NID.pod" + ], + "doc/html/man3/b2i_PVK_bio_ex.html" => [ + "doc/man3/b2i_PVK_bio_ex.pod" + ], + "doc/html/man3/d2i_PKCS8PrivateKey_bio.html" => [ + "doc/man3/d2i_PKCS8PrivateKey_bio.pod" + ], + "doc/html/man3/d2i_PrivateKey.html" => [ + "doc/man3/d2i_PrivateKey.pod" + ], + "doc/html/man3/d2i_RSAPrivateKey.html" => [ + "doc/man3/d2i_RSAPrivateKey.pod" + ], + "doc/html/man3/d2i_SSL_SESSION.html" => [ + "doc/man3/d2i_SSL_SESSION.pod" + ], + "doc/html/man3/d2i_X509.html" => [ + "doc/man3/d2i_X509.pod" + ], + "doc/html/man3/i2d_CMS_bio_stream.html" => [ + "doc/man3/i2d_CMS_bio_stream.pod" + ], + "doc/html/man3/i2d_PKCS7_bio_stream.html" => [ + "doc/man3/i2d_PKCS7_bio_stream.pod" + ], + "doc/html/man3/i2d_re_X509_tbs.html" => [ + "doc/man3/i2d_re_X509_tbs.pod" + ], + "doc/html/man3/o2i_SCT_LIST.html" => [ + "doc/man3/o2i_SCT_LIST.pod" + ], + "doc/html/man3/s2i_ASN1_IA5STRING.html" => [ + "doc/man3/s2i_ASN1_IA5STRING.pod" + ], + "doc/html/man5/config.html" => [ + "doc/man5/config.pod" + ], + "doc/html/man5/fips_config.html" => [ + "doc/man5/fips_config.pod" + ], + "doc/html/man5/x509v3_config.html" => [ + "doc/man5/x509v3_config.pod" + ], + "doc/html/man7/EVP_ASYM_CIPHER-RSA.html" => [ + "doc/man7/EVP_ASYM_CIPHER-RSA.pod" + ], + "doc/html/man7/EVP_ASYM_CIPHER-SM2.html" => [ + "doc/man7/EVP_ASYM_CIPHER-SM2.pod" + ], + "doc/html/man7/EVP_CIPHER-AES.html" => [ + "doc/man7/EVP_CIPHER-AES.pod" + ], + "doc/html/man7/EVP_CIPHER-ARIA.html" => [ + "doc/man7/EVP_CIPHER-ARIA.pod" + ], + "doc/html/man7/EVP_CIPHER-BLOWFISH.html" => [ + "doc/man7/EVP_CIPHER-BLOWFISH.pod" + ], + "doc/html/man7/EVP_CIPHER-CAMELLIA.html" => [ + "doc/man7/EVP_CIPHER-CAMELLIA.pod" + ], + "doc/html/man7/EVP_CIPHER-CAST.html" => [ + "doc/man7/EVP_CIPHER-CAST.pod" + ], + "doc/html/man7/EVP_CIPHER-CHACHA.html" => [ + "doc/man7/EVP_CIPHER-CHACHA.pod" + ], + "doc/html/man7/EVP_CIPHER-DES.html" => [ + "doc/man7/EVP_CIPHER-DES.pod" + ], + "doc/html/man7/EVP_CIPHER-IDEA.html" => [ + "doc/man7/EVP_CIPHER-IDEA.pod" + ], + "doc/html/man7/EVP_CIPHER-NULL.html" => [ + "doc/man7/EVP_CIPHER-NULL.pod" + ], + "doc/html/man7/EVP_CIPHER-RC2.html" => [ + "doc/man7/EVP_CIPHER-RC2.pod" + ], + "doc/html/man7/EVP_CIPHER-RC4.html" => [ + "doc/man7/EVP_CIPHER-RC4.pod" + ], + "doc/html/man7/EVP_CIPHER-RC5.html" => [ + "doc/man7/EVP_CIPHER-RC5.pod" + ], + "doc/html/man7/EVP_CIPHER-SEED.html" => [ + "doc/man7/EVP_CIPHER-SEED.pod" + ], + "doc/html/man7/EVP_CIPHER-SM4.html" => [ + "doc/man7/EVP_CIPHER-SM4.pod" + ], + "doc/html/man7/EVP_KDF-ARGON2.html" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], + "doc/html/man7/EVP_KDF-HKDF.html" => [ + "doc/man7/EVP_KDF-HKDF.pod" + ], + "doc/html/man7/EVP_KDF-HMAC-DRBG.html" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], + "doc/html/man7/EVP_KDF-KB.html" => [ + "doc/man7/EVP_KDF-KB.pod" + ], + "doc/html/man7/EVP_KDF-KRB5KDF.html" => [ + "doc/man7/EVP_KDF-KRB5KDF.pod" + ], + "doc/html/man7/EVP_KDF-PBKDF1.html" => [ + "doc/man7/EVP_KDF-PBKDF1.pod" + ], + "doc/html/man7/EVP_KDF-PBKDF2.html" => [ + "doc/man7/EVP_KDF-PBKDF2.pod" + ], + "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ + "doc/man7/EVP_KDF-PKCS12KDF.pod" + ], + "doc/html/man7/EVP_KDF-PVKKDF.html" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], + "doc/html/man7/EVP_KDF-SCRYPT.html" => [ + "doc/man7/EVP_KDF-SCRYPT.pod" + ], + "doc/html/man7/EVP_KDF-SS.html" => [ + "doc/man7/EVP_KDF-SS.pod" + ], + "doc/html/man7/EVP_KDF-SSHKDF.html" => [ + "doc/man7/EVP_KDF-SSHKDF.pod" + ], + "doc/html/man7/EVP_KDF-TLS13_KDF.html" => [ + "doc/man7/EVP_KDF-TLS13_KDF.pod" + ], + "doc/html/man7/EVP_KDF-TLS1_PRF.html" => [ + "doc/man7/EVP_KDF-TLS1_PRF.pod" + ], + "doc/html/man7/EVP_KDF-X942-ASN1.html" => [ + "doc/man7/EVP_KDF-X942-ASN1.pod" + ], + "doc/html/man7/EVP_KDF-X942-CONCAT.html" => [ + "doc/man7/EVP_KDF-X942-CONCAT.pod" + ], + "doc/html/man7/EVP_KDF-X963.html" => [ + "doc/man7/EVP_KDF-X963.pod" + ], + "doc/html/man7/EVP_KEM-EC.html" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/html/man7/EVP_KEM-ML-KEM.html" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], + "doc/html/man7/EVP_KEM-RSA.html" => [ + "doc/man7/EVP_KEM-RSA.pod" + ], + "doc/html/man7/EVP_KEM-X25519.html" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], + "doc/html/man7/EVP_KEYEXCH-DH.html" => [ + "doc/man7/EVP_KEYEXCH-DH.pod" + ], + "doc/html/man7/EVP_KEYEXCH-ECDH.html" => [ + "doc/man7/EVP_KEYEXCH-ECDH.pod" + ], + "doc/html/man7/EVP_KEYEXCH-X25519.html" => [ + "doc/man7/EVP_KEYEXCH-X25519.pod" + ], + "doc/html/man7/EVP_MAC-BLAKE2.html" => [ + "doc/man7/EVP_MAC-BLAKE2.pod" + ], + "doc/html/man7/EVP_MAC-CMAC.html" => [ + "doc/man7/EVP_MAC-CMAC.pod" + ], + "doc/html/man7/EVP_MAC-GMAC.html" => [ + "doc/man7/EVP_MAC-GMAC.pod" + ], + "doc/html/man7/EVP_MAC-HMAC.html" => [ + "doc/man7/EVP_MAC-HMAC.pod" + ], + "doc/html/man7/EVP_MAC-KMAC.html" => [ + "doc/man7/EVP_MAC-KMAC.pod" + ], + "doc/html/man7/EVP_MAC-Poly1305.html" => [ + "doc/man7/EVP_MAC-Poly1305.pod" + ], + "doc/html/man7/EVP_MAC-Siphash.html" => [ + "doc/man7/EVP_MAC-Siphash.pod" + ], + "doc/html/man7/EVP_MD-BLAKE2.html" => [ + "doc/man7/EVP_MD-BLAKE2.pod" + ], + "doc/html/man7/EVP_MD-KECCAK.html" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], + "doc/html/man7/EVP_MD-MD2.html" => [ + "doc/man7/EVP_MD-MD2.pod" + ], + "doc/html/man7/EVP_MD-MD4.html" => [ + "doc/man7/EVP_MD-MD4.pod" + ], + "doc/html/man7/EVP_MD-MD5-SHA1.html" => [ + "doc/man7/EVP_MD-MD5-SHA1.pod" + ], + "doc/html/man7/EVP_MD-MD5.html" => [ + "doc/man7/EVP_MD-MD5.pod" + ], + "doc/html/man7/EVP_MD-MDC2.html" => [ + "doc/man7/EVP_MD-MDC2.pod" + ], + "doc/html/man7/EVP_MD-NULL.html" => [ + "doc/man7/EVP_MD-NULL.pod" + ], + "doc/html/man7/EVP_MD-RIPEMD160.html" => [ + "doc/man7/EVP_MD-RIPEMD160.pod" + ], + "doc/html/man7/EVP_MD-SHA1.html" => [ + "doc/man7/EVP_MD-SHA1.pod" + ], + "doc/html/man7/EVP_MD-SHA2.html" => [ + "doc/man7/EVP_MD-SHA2.pod" + ], + "doc/html/man7/EVP_MD-SHA3.html" => [ + "doc/man7/EVP_MD-SHA3.pod" + ], + "doc/html/man7/EVP_MD-SHAKE.html" => [ + "doc/man7/EVP_MD-SHAKE.pod" + ], + "doc/html/man7/EVP_MD-SM3.html" => [ + "doc/man7/EVP_MD-SM3.pod" + ], + "doc/html/man7/EVP_MD-WHIRLPOOL.html" => [ + "doc/man7/EVP_MD-WHIRLPOOL.pod" + ], + "doc/html/man7/EVP_MD-common.html" => [ + "doc/man7/EVP_MD-common.pod" + ], + "doc/html/man7/EVP_PKEY-DH.html" => [ + "doc/man7/EVP_PKEY-DH.pod" + ], + "doc/html/man7/EVP_PKEY-DSA.html" => [ + "doc/man7/EVP_PKEY-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-EC.html" => [ + "doc/man7/EVP_PKEY-EC.pod" + ], + "doc/html/man7/EVP_PKEY-FFC.html" => [ + "doc/man7/EVP_PKEY-FFC.pod" + ], + "doc/html/man7/EVP_PKEY-HMAC.html" => [ + "doc/man7/EVP_PKEY-HMAC.pod" + ], + "doc/html/man7/EVP_PKEY-ML-DSA.html" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-ML-KEM.html" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], + "doc/html/man7/EVP_PKEY-RSA.html" => [ + "doc/man7/EVP_PKEY-RSA.pod" + ], + "doc/html/man7/EVP_PKEY-SLH-DSA.html" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], + "doc/html/man7/EVP_PKEY-SM2.html" => [ + "doc/man7/EVP_PKEY-SM2.pod" + ], + "doc/html/man7/EVP_PKEY-X25519.html" => [ + "doc/man7/EVP_PKEY-X25519.pod" + ], + "doc/html/man7/EVP_RAND-CRNG-TEST.html" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], + "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ + "doc/man7/EVP_RAND-CTR-DRBG.pod" + ], + "doc/html/man7/EVP_RAND-HASH-DRBG.html" => [ + "doc/man7/EVP_RAND-HASH-DRBG.pod" + ], + "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ + "doc/man7/EVP_RAND-HMAC-DRBG.pod" + ], + "doc/html/man7/EVP_RAND-JITTER.html" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], + "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ + "doc/man7/EVP_RAND-SEED-SRC.pod" + ], + "doc/html/man7/EVP_RAND-TEST-RAND.html" => [ + "doc/man7/EVP_RAND-TEST-RAND.pod" + ], + "doc/html/man7/EVP_RAND.html" => [ + "doc/man7/EVP_RAND.pod" + ], + "doc/html/man7/EVP_SIGNATURE-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-DSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-ECDSA.html" => [ + "doc/man7/EVP_SIGNATURE-ECDSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-ED25519.html" => [ + "doc/man7/EVP_SIGNATURE-ED25519.pod" + ], + "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ + "doc/man7/EVP_SIGNATURE-HMAC.pod" + ], + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ + "doc/man7/EVP_SIGNATURE-RSA.pod" + ], + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], + "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ + "doc/man7/OSSL_PROVIDER-FIPS.pod" + ], + "doc/html/man7/OSSL_PROVIDER-base.html" => [ + "doc/man7/OSSL_PROVIDER-base.pod" + ], + "doc/html/man7/OSSL_PROVIDER-default.html" => [ + "doc/man7/OSSL_PROVIDER-default.pod" + ], + "doc/html/man7/OSSL_PROVIDER-legacy.html" => [ + "doc/man7/OSSL_PROVIDER-legacy.pod" + ], + "doc/html/man7/OSSL_PROVIDER-null.html" => [ + "doc/man7/OSSL_PROVIDER-null.pod" + ], + "doc/html/man7/OSSL_STORE-winstore.html" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], + "doc/html/man7/RAND.html" => [ + "doc/man7/RAND.pod" + ], + "doc/html/man7/RSA-PSS.html" => [ + "doc/man7/RSA-PSS.pod" + ], + "doc/html/man7/X25519.html" => [ + "doc/man7/X25519.pod" + ], + "doc/html/man7/bio.html" => [ + "doc/man7/bio.pod" + ], + "doc/html/man7/ct.html" => [ + "doc/man7/ct.pod" + ], + "doc/html/man7/des_modes.html" => [ + "doc/man7/des_modes.pod" + ], + "doc/html/man7/evp.html" => [ + "doc/man7/evp.pod" + ], + "doc/html/man7/fips_module.html" => [ + "doc/man7/fips_module.pod" + ], + "doc/html/man7/life_cycle-cipher.html" => [ + "doc/man7/life_cycle-cipher.pod" + ], + "doc/html/man7/life_cycle-digest.html" => [ + "doc/man7/life_cycle-digest.pod" + ], + "doc/html/man7/life_cycle-kdf.html" => [ + "doc/man7/life_cycle-kdf.pod" + ], + "doc/html/man7/life_cycle-mac.html" => [ + "doc/man7/life_cycle-mac.pod" + ], + "doc/html/man7/life_cycle-pkey.html" => [ + "doc/man7/life_cycle-pkey.pod" + ], + "doc/html/man7/life_cycle-rand.html" => [ + "doc/man7/life_cycle-rand.pod" + ], + "doc/html/man7/openssl-core.h.html" => [ + "doc/man7/openssl-core.h.pod" + ], + "doc/html/man7/openssl-core_dispatch.h.html" => [ + "doc/man7/openssl-core_dispatch.h.pod" + ], + "doc/html/man7/openssl-core_names.h.html" => [ + "doc/man7/openssl-core_names.h.pod" + ], + "doc/html/man7/openssl-env.html" => [ + "doc/man7/openssl-env.pod" + ], + "doc/html/man7/openssl-glossary.html" => [ + "doc/man7/openssl-glossary.pod" + ], + "doc/html/man7/openssl-qlog.html" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/html/man7/openssl-quic-concurrency.html" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/html/man7/openssl-quic.html" => [ + "doc/man7/openssl-quic.pod" + ], + "doc/html/man7/openssl-threads.html" => [ + "doc/man7/openssl-threads.pod" + ], + "doc/html/man7/openssl_user_macros.html" => [ + "doc/man7/openssl_user_macros.pod" + ], + "doc/html/man7/ossl-guide-introduction.html" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/html/man7/ossl-guide-libcrypto-introduction.html" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/html/man7/ossl-guide-libraries-introduction.html" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/html/man7/ossl-guide-libssl-introduction.html" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/html/man7/ossl-guide-migration.html" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/html/man7/ossl-guide-quic-client-block.html" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/html/man7/ossl-guide-quic-client-non-block.html" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-quic-introduction.html" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/html/man7/ossl-guide-quic-multi-stream.html" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/html/man7/ossl-guide-quic-server-block.html" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/html/man7/ossl-guide-quic-server-non-block.html" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-block.html" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/html/man7/ossl-guide-tls-client-non-block.html" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/html/man7/ossl-guide-tls-introduction.html" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/html/man7/ossl-guide-tls-server-block.html" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], + "doc/html/man7/ossl_store-file.html" => [ + "doc/man7/ossl_store-file.pod" + ], + "doc/html/man7/ossl_store.html" => [ + "doc/man7/ossl_store.pod" + ], + "doc/html/man7/passphrase-encoding.html" => [ + "doc/man7/passphrase-encoding.pod" + ], + "doc/html/man7/property.html" => [ + "doc/man7/property.pod" + ], + "doc/html/man7/provider-asym_cipher.html" => [ + "doc/man7/provider-asym_cipher.pod" + ], + "doc/html/man7/provider-base.html" => [ + "doc/man7/provider-base.pod" + ], + "doc/html/man7/provider-cipher.html" => [ + "doc/man7/provider-cipher.pod" + ], + "doc/html/man7/provider-decoder.html" => [ + "doc/man7/provider-decoder.pod" + ], + "doc/html/man7/provider-digest.html" => [ + "doc/man7/provider-digest.pod" + ], + "doc/html/man7/provider-encoder.html" => [ + "doc/man7/provider-encoder.pod" + ], + "doc/html/man7/provider-kdf.html" => [ + "doc/man7/provider-kdf.pod" + ], + "doc/html/man7/provider-kem.html" => [ + "doc/man7/provider-kem.pod" + ], + "doc/html/man7/provider-keyexch.html" => [ + "doc/man7/provider-keyexch.pod" + ], + "doc/html/man7/provider-keymgmt.html" => [ + "doc/man7/provider-keymgmt.pod" + ], + "doc/html/man7/provider-mac.html" => [ + "doc/man7/provider-mac.pod" + ], + "doc/html/man7/provider-object.html" => [ + "doc/man7/provider-object.pod" + ], + "doc/html/man7/provider-rand.html" => [ + "doc/man7/provider-rand.pod" + ], + "doc/html/man7/provider-signature.html" => [ + "doc/man7/provider-signature.pod" + ], + "doc/html/man7/provider-skeymgmt.html" => [ + "doc/man7/provider-skeymgmt.pod" + ], + "doc/html/man7/provider-storemgmt.html" => [ + "doc/man7/provider-storemgmt.pod" + ], + "doc/html/man7/provider.html" => [ + "doc/man7/provider.pod" + ], + "doc/html/man7/proxy-certificates.html" => [ + "doc/man7/proxy-certificates.pod" + ], + "doc/html/man7/x509.html" => [ + "doc/man7/x509.pod" + ], + "doc/man/man1/CA.pl.1" => [ + "doc/man1/CA.pl.pod" + ], + "doc/man/man1/openssl-asn1parse.1" => [ + "doc/man1/openssl-asn1parse.pod" + ], + "doc/man/man1/openssl-ca.1" => [ + "doc/man1/openssl-ca.pod" + ], + "doc/man/man1/openssl-ciphers.1" => [ + "doc/man1/openssl-ciphers.pod" + ], + "doc/man/man1/openssl-cmds.1" => [ + "doc/man1/openssl-cmds.pod" + ], + "doc/man/man1/openssl-cmp.1" => [ + "doc/man1/openssl-cmp.pod" + ], + "doc/man/man1/openssl-cms.1" => [ + "doc/man1/openssl-cms.pod" + ], + "doc/man/man1/openssl-crl.1" => [ + "doc/man1/openssl-crl.pod" + ], + "doc/man/man1/openssl-crl2pkcs7.1" => [ + "doc/man1/openssl-crl2pkcs7.pod" + ], + "doc/man/man1/openssl-dgst.1" => [ + "doc/man1/openssl-dgst.pod" + ], + "doc/man/man1/openssl-dhparam.1" => [ + "doc/man1/openssl-dhparam.pod" + ], + "doc/man/man1/openssl-dsa.1" => [ + "doc/man1/openssl-dsa.pod" + ], + "doc/man/man1/openssl-dsaparam.1" => [ + "doc/man1/openssl-dsaparam.pod" + ], + "doc/man/man1/openssl-ec.1" => [ + "doc/man1/openssl-ec.pod" + ], + "doc/man/man1/openssl-ecparam.1" => [ + "doc/man1/openssl-ecparam.pod" + ], + "doc/man/man1/openssl-enc.1" => [ + "doc/man1/openssl-enc.pod" + ], + "doc/man/man1/openssl-engine.1" => [ + "doc/man1/openssl-engine.pod" + ], + "doc/man/man1/openssl-errstr.1" => [ + "doc/man1/openssl-errstr.pod" + ], + "doc/man/man1/openssl-fipsinstall.1" => [ + "doc/man1/openssl-fipsinstall.pod" + ], + "doc/man/man1/openssl-format-options.1" => [ + "doc/man1/openssl-format-options.pod" + ], + "doc/man/man1/openssl-gendsa.1" => [ + "doc/man1/openssl-gendsa.pod" + ], + "doc/man/man1/openssl-genpkey.1" => [ + "doc/man1/openssl-genpkey.pod" + ], + "doc/man/man1/openssl-genrsa.1" => [ + "doc/man1/openssl-genrsa.pod" + ], + "doc/man/man1/openssl-info.1" => [ + "doc/man1/openssl-info.pod" + ], + "doc/man/man1/openssl-kdf.1" => [ + "doc/man1/openssl-kdf.pod" + ], + "doc/man/man1/openssl-list.1" => [ + "doc/man1/openssl-list.pod" + ], + "doc/man/man1/openssl-mac.1" => [ + "doc/man1/openssl-mac.pod" + ], + "doc/man/man1/openssl-namedisplay-options.1" => [ + "doc/man1/openssl-namedisplay-options.pod" + ], + "doc/man/man1/openssl-nseq.1" => [ + "doc/man1/openssl-nseq.pod" + ], + "doc/man/man1/openssl-ocsp.1" => [ + "doc/man1/openssl-ocsp.pod" + ], + "doc/man/man1/openssl-passphrase-options.1" => [ + "doc/man1/openssl-passphrase-options.pod" + ], + "doc/man/man1/openssl-passwd.1" => [ + "doc/man1/openssl-passwd.pod" + ], + "doc/man/man1/openssl-pkcs12.1" => [ + "doc/man1/openssl-pkcs12.pod" + ], + "doc/man/man1/openssl-pkcs7.1" => [ + "doc/man1/openssl-pkcs7.pod" + ], + "doc/man/man1/openssl-pkcs8.1" => [ + "doc/man1/openssl-pkcs8.pod" + ], + "doc/man/man1/openssl-pkey.1" => [ + "doc/man1/openssl-pkey.pod" + ], + "doc/man/man1/openssl-pkeyparam.1" => [ + "doc/man1/openssl-pkeyparam.pod" + ], + "doc/man/man1/openssl-pkeyutl.1" => [ + "doc/man1/openssl-pkeyutl.pod" + ], + "doc/man/man1/openssl-prime.1" => [ + "doc/man1/openssl-prime.pod" + ], + "doc/man/man1/openssl-rand.1" => [ + "doc/man1/openssl-rand.pod" + ], + "doc/man/man1/openssl-rehash.1" => [ + "doc/man1/openssl-rehash.pod" + ], + "doc/man/man1/openssl-req.1" => [ + "doc/man1/openssl-req.pod" + ], + "doc/man/man1/openssl-rsa.1" => [ + "doc/man1/openssl-rsa.pod" + ], + "doc/man/man1/openssl-rsautl.1" => [ + "doc/man1/openssl-rsautl.pod" + ], + "doc/man/man1/openssl-s_client.1" => [ + "doc/man1/openssl-s_client.pod" + ], + "doc/man/man1/openssl-s_server.1" => [ + "doc/man1/openssl-s_server.pod" + ], + "doc/man/man1/openssl-s_time.1" => [ + "doc/man1/openssl-s_time.pod" + ], + "doc/man/man1/openssl-sess_id.1" => [ + "doc/man1/openssl-sess_id.pod" + ], + "doc/man/man1/openssl-skeyutl.1" => [ + "doc/man1/openssl-skeyutl.pod" + ], + "doc/man/man1/openssl-smime.1" => [ + "doc/man1/openssl-smime.pod" + ], + "doc/man/man1/openssl-speed.1" => [ + "doc/man1/openssl-speed.pod" + ], + "doc/man/man1/openssl-spkac.1" => [ + "doc/man1/openssl-spkac.pod" + ], + "doc/man/man1/openssl-srp.1" => [ + "doc/man1/openssl-srp.pod" + ], + "doc/man/man1/openssl-storeutl.1" => [ + "doc/man1/openssl-storeutl.pod" + ], + "doc/man/man1/openssl-ts.1" => [ + "doc/man1/openssl-ts.pod" + ], + "doc/man/man1/openssl-verification-options.1" => [ + "doc/man1/openssl-verification-options.pod" + ], + "doc/man/man1/openssl-verify.1" => [ + "doc/man1/openssl-verify.pod" + ], + "doc/man/man1/openssl-version.1" => [ + "doc/man1/openssl-version.pod" + ], + "doc/man/man1/openssl-x509.1" => [ + "doc/man1/openssl-x509.pod" + ], + "doc/man/man1/openssl.1" => [ + "doc/man1/openssl.pod" + ], + "doc/man/man1/tsget.1" => [ + "doc/man1/tsget.pod" + ], + "doc/man/man3/ADMISSIONS.3" => [ + "doc/man3/ADMISSIONS.pod" + ], + "doc/man/man3/ASN1_EXTERN_FUNCS.3" => [ + "doc/man3/ASN1_EXTERN_FUNCS.pod" + ], + "doc/man/man3/ASN1_INTEGER_get_int64.3" => [ + "doc/man3/ASN1_INTEGER_get_int64.pod" + ], + "doc/man/man3/ASN1_INTEGER_new.3" => [ + "doc/man3/ASN1_INTEGER_new.pod" + ], + "doc/man/man3/ASN1_ITEM_lookup.3" => [ + "doc/man3/ASN1_ITEM_lookup.pod" + ], + "doc/man/man3/ASN1_OBJECT_new.3" => [ + "doc/man3/ASN1_OBJECT_new.pod" + ], + "doc/man/man3/ASN1_STRING_TABLE_add.3" => [ + "doc/man3/ASN1_STRING_TABLE_add.pod" + ], + "doc/man/man3/ASN1_STRING_length.3" => [ + "doc/man3/ASN1_STRING_length.pod" + ], + "doc/man/man3/ASN1_STRING_new.3" => [ + "doc/man3/ASN1_STRING_new.pod" + ], + "doc/man/man3/ASN1_STRING_print_ex.3" => [ + "doc/man3/ASN1_STRING_print_ex.pod" + ], + "doc/man/man3/ASN1_TIME_set.3" => [ + "doc/man3/ASN1_TIME_set.pod" + ], + "doc/man/man3/ASN1_TYPE_get.3" => [ + "doc/man3/ASN1_TYPE_get.pod" + ], + "doc/man/man3/ASN1_aux_cb.3" => [ + "doc/man3/ASN1_aux_cb.pod" + ], + "doc/man/man3/ASN1_generate_nconf.3" => [ + "doc/man3/ASN1_generate_nconf.pod" + ], + "doc/man/man3/ASN1_item_d2i_bio.3" => [ + "doc/man3/ASN1_item_d2i_bio.pod" + ], + "doc/man/man3/ASN1_item_new.3" => [ + "doc/man3/ASN1_item_new.pod" + ], + "doc/man/man3/ASN1_item_sign.3" => [ + "doc/man3/ASN1_item_sign.pod" + ], + "doc/man/man3/ASYNC_WAIT_CTX_new.3" => [ + "doc/man3/ASYNC_WAIT_CTX_new.pod" + ], + "doc/man/man3/ASYNC_start_job.3" => [ + "doc/man3/ASYNC_start_job.pod" + ], + "doc/man/man3/BF_encrypt.3" => [ + "doc/man3/BF_encrypt.pod" + ], + "doc/man/man3/BIO_ADDR.3" => [ + "doc/man3/BIO_ADDR.pod" + ], + "doc/man/man3/BIO_ADDRINFO.3" => [ + "doc/man3/BIO_ADDRINFO.pod" + ], + "doc/man/man3/BIO_connect.3" => [ + "doc/man3/BIO_connect.pod" + ], + "doc/man/man3/BIO_ctrl.3" => [ + "doc/man3/BIO_ctrl.pod" + ], + "doc/man/man3/BIO_f_base64.3" => [ + "doc/man3/BIO_f_base64.pod" + ], + "doc/man/man3/BIO_f_buffer.3" => [ + "doc/man3/BIO_f_buffer.pod" + ], + "doc/man/man3/BIO_f_cipher.3" => [ + "doc/man3/BIO_f_cipher.pod" + ], + "doc/man/man3/BIO_f_md.3" => [ + "doc/man3/BIO_f_md.pod" + ], + "doc/man/man3/BIO_f_null.3" => [ + "doc/man3/BIO_f_null.pod" + ], + "doc/man/man3/BIO_f_prefix.3" => [ + "doc/man3/BIO_f_prefix.pod" + ], + "doc/man/man3/BIO_f_readbuffer.3" => [ + "doc/man3/BIO_f_readbuffer.pod" + ], + "doc/man/man3/BIO_f_ssl.3" => [ + "doc/man3/BIO_f_ssl.pod" + ], + "doc/man/man3/BIO_find_type.3" => [ + "doc/man3/BIO_find_type.pod" + ], + "doc/man/man3/BIO_get_data.3" => [ + "doc/man3/BIO_get_data.pod" + ], + "doc/man/man3/BIO_get_ex_new_index.3" => [ + "doc/man3/BIO_get_ex_new_index.pod" + ], + "doc/man/man3/BIO_get_rpoll_descriptor.3" => [ + "doc/man3/BIO_get_rpoll_descriptor.pod" + ], + "doc/man/man3/BIO_meth_new.3" => [ + "doc/man3/BIO_meth_new.pod" + ], + "doc/man/man3/BIO_new.3" => [ + "doc/man3/BIO_new.pod" + ], + "doc/man/man3/BIO_new_CMS.3" => [ + "doc/man3/BIO_new_CMS.pod" + ], + "doc/man/man3/BIO_parse_hostserv.3" => [ + "doc/man3/BIO_parse_hostserv.pod" + ], + "doc/man/man3/BIO_printf.3" => [ + "doc/man3/BIO_printf.pod" + ], + "doc/man/man3/BIO_push.3" => [ + "doc/man3/BIO_push.pod" + ], + "doc/man/man3/BIO_read.3" => [ + "doc/man3/BIO_read.pod" + ], + "doc/man/man3/BIO_s_accept.3" => [ + "doc/man3/BIO_s_accept.pod" + ], + "doc/man/man3/BIO_s_bio.3" => [ + "doc/man3/BIO_s_bio.pod" + ], + "doc/man/man3/BIO_s_connect.3" => [ + "doc/man3/BIO_s_connect.pod" + ], + "doc/man/man3/BIO_s_core.3" => [ + "doc/man3/BIO_s_core.pod" + ], + "doc/man/man3/BIO_s_datagram.3" => [ + "doc/man3/BIO_s_datagram.pod" + ], + "doc/man/man3/BIO_s_dgram_pair.3" => [ + "doc/man3/BIO_s_dgram_pair.pod" + ], + "doc/man/man3/BIO_s_fd.3" => [ + "doc/man3/BIO_s_fd.pod" + ], + "doc/man/man3/BIO_s_file.3" => [ + "doc/man3/BIO_s_file.pod" + ], + "doc/man/man3/BIO_s_mem.3" => [ + "doc/man3/BIO_s_mem.pod" + ], + "doc/man/man3/BIO_s_null.3" => [ + "doc/man3/BIO_s_null.pod" + ], + "doc/man/man3/BIO_s_socket.3" => [ + "doc/man3/BIO_s_socket.pod" + ], + "doc/man/man3/BIO_sendmmsg.3" => [ + "doc/man3/BIO_sendmmsg.pod" + ], + "doc/man/man3/BIO_set_callback.3" => [ + "doc/man3/BIO_set_callback.pod" + ], + "doc/man/man3/BIO_set_flags.3" => [ + "doc/man3/BIO_set_flags.pod" + ], + "doc/man/man3/BIO_should_retry.3" => [ + "doc/man3/BIO_should_retry.pod" + ], + "doc/man/man3/BIO_socket_wait.3" => [ + "doc/man3/BIO_socket_wait.pod" + ], + "doc/man/man3/BN_BLINDING_new.3" => [ + "doc/man3/BN_BLINDING_new.pod" + ], + "doc/man/man3/BN_CTX_new.3" => [ + "doc/man3/BN_CTX_new.pod" + ], + "doc/man/man3/BN_CTX_start.3" => [ + "doc/man3/BN_CTX_start.pod" + ], + "doc/man/man3/BN_add.3" => [ + "doc/man3/BN_add.pod" + ], + "doc/man/man3/BN_add_word.3" => [ + "doc/man3/BN_add_word.pod" + ], + "doc/man/man3/BN_bn2bin.3" => [ + "doc/man3/BN_bn2bin.pod" + ], + "doc/man/man3/BN_cmp.3" => [ + "doc/man3/BN_cmp.pod" + ], + "doc/man/man3/BN_copy.3" => [ + "doc/man3/BN_copy.pod" + ], + "doc/man/man3/BN_generate_prime.3" => [ + "doc/man3/BN_generate_prime.pod" + ], + "doc/man/man3/BN_mod_exp_mont.3" => [ + "doc/man3/BN_mod_exp_mont.pod" + ], + "doc/man/man3/BN_mod_inverse.3" => [ + "doc/man3/BN_mod_inverse.pod" + ], + "doc/man/man3/BN_mod_mul_montgomery.3" => [ + "doc/man3/BN_mod_mul_montgomery.pod" + ], + "doc/man/man3/BN_mod_mul_reciprocal.3" => [ + "doc/man3/BN_mod_mul_reciprocal.pod" + ], + "doc/man/man3/BN_new.3" => [ + "doc/man3/BN_new.pod" + ], + "doc/man/man3/BN_num_bytes.3" => [ + "doc/man3/BN_num_bytes.pod" + ], + "doc/man/man3/BN_rand.3" => [ + "doc/man3/BN_rand.pod" + ], + "doc/man/man3/BN_security_bits.3" => [ + "doc/man3/BN_security_bits.pod" + ], + "doc/man/man3/BN_set_bit.3" => [ + "doc/man3/BN_set_bit.pod" + ], + "doc/man/man3/BN_swap.3" => [ + "doc/man3/BN_swap.pod" + ], + "doc/man/man3/BN_zero.3" => [ + "doc/man3/BN_zero.pod" + ], + "doc/man/man3/BUF_MEM_new.3" => [ + "doc/man3/BUF_MEM_new.pod" + ], + "doc/man/man3/CMAC_CTX.3" => [ + "doc/man3/CMAC_CTX.pod" + ], + "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ + "doc/man3/CMS_EncryptedData_decrypt.pod" + ], + "doc/man/man3/CMS_EncryptedData_encrypt.3" => [ + "doc/man3/CMS_EncryptedData_encrypt.pod" + ], + "doc/man/man3/CMS_EncryptedData_set1_key.3" => [ + "doc/man3/CMS_EncryptedData_set1_key.pod" + ], + "doc/man/man3/CMS_EnvelopedData_create.3" => [ + "doc/man3/CMS_EnvelopedData_create.pod" + ], + "doc/man/man3/CMS_add0_cert.3" => [ + "doc/man3/CMS_add0_cert.pod" + ], + "doc/man/man3/CMS_add1_recipient_cert.3" => [ + "doc/man3/CMS_add1_recipient_cert.pod" + ], + "doc/man/man3/CMS_add1_signer.3" => [ + "doc/man3/CMS_add1_signer.pod" + ], + "doc/man/man3/CMS_compress.3" => [ + "doc/man3/CMS_compress.pod" + ], + "doc/man/man3/CMS_data_create.3" => [ + "doc/man3/CMS_data_create.pod" + ], + "doc/man/man3/CMS_decrypt.3" => [ + "doc/man3/CMS_decrypt.pod" + ], + "doc/man/man3/CMS_digest_create.3" => [ + "doc/man3/CMS_digest_create.pod" + ], + "doc/man/man3/CMS_encrypt.3" => [ + "doc/man3/CMS_encrypt.pod" + ], + "doc/man/man3/CMS_final.3" => [ + "doc/man3/CMS_final.pod" + ], + "doc/man/man3/CMS_get0_RecipientInfos.3" => [ + "doc/man3/CMS_get0_RecipientInfos.pod" + ], + "doc/man/man3/CMS_get0_SignerInfos.3" => [ + "doc/man3/CMS_get0_SignerInfos.pod" + ], + "doc/man/man3/CMS_get0_type.3" => [ + "doc/man3/CMS_get0_type.pod" + ], + "doc/man/man3/CMS_get1_ReceiptRequest.3" => [ + "doc/man3/CMS_get1_ReceiptRequest.pod" + ], + "doc/man/man3/CMS_sign.3" => [ + "doc/man3/CMS_sign.pod" + ], + "doc/man/man3/CMS_sign_receipt.3" => [ + "doc/man3/CMS_sign_receipt.pod" + ], + "doc/man/man3/CMS_signed_get_attr.3" => [ + "doc/man3/CMS_signed_get_attr.pod" + ], + "doc/man/man3/CMS_uncompress.3" => [ + "doc/man3/CMS_uncompress.pod" + ], + "doc/man/man3/CMS_verify.3" => [ + "doc/man3/CMS_verify.pod" + ], + "doc/man/man3/CMS_verify_receipt.3" => [ + "doc/man3/CMS_verify_receipt.pod" + ], + "doc/man/man3/COMP_CTX_new.3" => [ + "doc/man3/COMP_CTX_new.pod" + ], + "doc/man/man3/CONF_modules_free.3" => [ + "doc/man3/CONF_modules_free.pod" + ], + "doc/man/man3/CONF_modules_load_file.3" => [ + "doc/man3/CONF_modules_load_file.pod" + ], + "doc/man/man3/CRYPTO_THREAD_run_once.3" => [ + "doc/man3/CRYPTO_THREAD_run_once.pod" + ], + "doc/man/man3/CRYPTO_get_ex_new_index.3" => [ + "doc/man3/CRYPTO_get_ex_new_index.pod" + ], + "doc/man/man3/CRYPTO_memcmp.3" => [ + "doc/man3/CRYPTO_memcmp.pod" + ], + "doc/man/man3/CTLOG_STORE_get0_log_by_id.3" => [ + "doc/man3/CTLOG_STORE_get0_log_by_id.pod" + ], + "doc/man/man3/CTLOG_STORE_new.3" => [ + "doc/man3/CTLOG_STORE_new.pod" + ], + "doc/man/man3/CTLOG_new.3" => [ + "doc/man3/CTLOG_new.pod" + ], + "doc/man/man3/CT_POLICY_EVAL_CTX_new.3" => [ + "doc/man3/CT_POLICY_EVAL_CTX_new.pod" + ], + "doc/man/man3/DEFINE_STACK_OF.3" => [ + "doc/man3/DEFINE_STACK_OF.pod" + ], + "doc/man/man3/DES_random_key.3" => [ + "doc/man3/DES_random_key.pod" + ], + "doc/man/man3/DH_generate_key.3" => [ + "doc/man3/DH_generate_key.pod" + ], + "doc/man/man3/DH_generate_parameters.3" => [ + "doc/man3/DH_generate_parameters.pod" + ], + "doc/man/man3/DH_get0_pqg.3" => [ + "doc/man3/DH_get0_pqg.pod" + ], + "doc/man/man3/DH_get_1024_160.3" => [ + "doc/man3/DH_get_1024_160.pod" + ], + "doc/man/man3/DH_meth_new.3" => [ + "doc/man3/DH_meth_new.pod" + ], + "doc/man/man3/DH_new.3" => [ + "doc/man3/DH_new.pod" + ], + "doc/man/man3/DH_new_by_nid.3" => [ + "doc/man3/DH_new_by_nid.pod" + ], + "doc/man/man3/DH_set_method.3" => [ + "doc/man3/DH_set_method.pod" + ], + "doc/man/man3/DH_size.3" => [ + "doc/man3/DH_size.pod" + ], + "doc/man/man3/DSA_SIG_new.3" => [ + "doc/man3/DSA_SIG_new.pod" + ], + "doc/man/man3/DSA_do_sign.3" => [ + "doc/man3/DSA_do_sign.pod" + ], + "doc/man/man3/DSA_dup_DH.3" => [ + "doc/man3/DSA_dup_DH.pod" + ], + "doc/man/man3/DSA_generate_key.3" => [ + "doc/man3/DSA_generate_key.pod" + ], + "doc/man/man3/DSA_generate_parameters.3" => [ + "doc/man3/DSA_generate_parameters.pod" + ], + "doc/man/man3/DSA_get0_pqg.3" => [ + "doc/man3/DSA_get0_pqg.pod" + ], + "doc/man/man3/DSA_meth_new.3" => [ + "doc/man3/DSA_meth_new.pod" + ], + "doc/man/man3/DSA_new.3" => [ + "doc/man3/DSA_new.pod" + ], + "doc/man/man3/DSA_set_method.3" => [ + "doc/man3/DSA_set_method.pod" + ], + "doc/man/man3/DSA_sign.3" => [ + "doc/man3/DSA_sign.pod" + ], + "doc/man/man3/DSA_size.3" => [ + "doc/man3/DSA_size.pod" + ], + "doc/man/man3/DTLS_get_data_mtu.3" => [ + "doc/man3/DTLS_get_data_mtu.pod" + ], + "doc/man/man3/DTLS_set_timer_cb.3" => [ + "doc/man3/DTLS_set_timer_cb.pod" + ], + "doc/man/man3/DTLSv1_get_timeout.3" => [ + "doc/man3/DTLSv1_get_timeout.pod" + ], + "doc/man/man3/DTLSv1_handle_timeout.3" => [ + "doc/man3/DTLSv1_handle_timeout.pod" + ], + "doc/man/man3/DTLSv1_listen.3" => [ + "doc/man3/DTLSv1_listen.pod" + ], + "doc/man/man3/ECDSA_SIG_new.3" => [ + "doc/man3/ECDSA_SIG_new.pod" + ], + "doc/man/man3/ECDSA_sign.3" => [ + "doc/man3/ECDSA_sign.pod" + ], + "doc/man/man3/ECPKParameters_print.3" => [ + "doc/man3/ECPKParameters_print.pod" + ], + "doc/man/man3/EC_GFp_simple_method.3" => [ + "doc/man3/EC_GFp_simple_method.pod" + ], + "doc/man/man3/EC_GROUP_copy.3" => [ + "doc/man3/EC_GROUP_copy.pod" + ], + "doc/man/man3/EC_GROUP_new.3" => [ + "doc/man3/EC_GROUP_new.pod" + ], + "doc/man/man3/EC_KEY_get_enc_flags.3" => [ + "doc/man3/EC_KEY_get_enc_flags.pod" + ], + "doc/man/man3/EC_KEY_new.3" => [ + "doc/man3/EC_KEY_new.pod" + ], + "doc/man/man3/EC_POINT_add.3" => [ + "doc/man3/EC_POINT_add.pod" + ], + "doc/man/man3/EC_POINT_new.3" => [ + "doc/man3/EC_POINT_new.pod" + ], + "doc/man/man3/ENGINE_add.3" => [ + "doc/man3/ENGINE_add.pod" + ], + "doc/man/man3/ERR_GET_LIB.3" => [ + "doc/man3/ERR_GET_LIB.pod" + ], + "doc/man/man3/ERR_clear_error.3" => [ + "doc/man3/ERR_clear_error.pod" + ], + "doc/man/man3/ERR_error_string.3" => [ + "doc/man3/ERR_error_string.pod" + ], + "doc/man/man3/ERR_get_error.3" => [ + "doc/man3/ERR_get_error.pod" + ], + "doc/man/man3/ERR_load_crypto_strings.3" => [ + "doc/man3/ERR_load_crypto_strings.pod" + ], + "doc/man/man3/ERR_load_strings.3" => [ + "doc/man3/ERR_load_strings.pod" + ], + "doc/man/man3/ERR_new.3" => [ + "doc/man3/ERR_new.pod" + ], + "doc/man/man3/ERR_print_errors.3" => [ + "doc/man3/ERR_print_errors.pod" + ], + "doc/man/man3/ERR_put_error.3" => [ + "doc/man3/ERR_put_error.pod" + ], + "doc/man/man3/ERR_remove_state.3" => [ + "doc/man3/ERR_remove_state.pod" + ], + "doc/man/man3/ERR_set_mark.3" => [ + "doc/man3/ERR_set_mark.pod" + ], + "doc/man/man3/EVP_ASYM_CIPHER_free.3" => [ + "doc/man3/EVP_ASYM_CIPHER_free.pod" + ], + "doc/man/man3/EVP_BytesToKey.3" => [ + "doc/man3/EVP_BytesToKey.pod" + ], + "doc/man/man3/EVP_CIPHER_CTX_get_app_data.3" => [ + "doc/man3/EVP_CIPHER_CTX_get_app_data.pod" + ], + "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3" => [ + "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" + ], + "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3" => [ + "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" + ], + "doc/man/man3/EVP_CIPHER_meth_new.3" => [ + "doc/man3/EVP_CIPHER_meth_new.pod" + ], + "doc/man/man3/EVP_DigestInit.3" => [ + "doc/man3/EVP_DigestInit.pod" + ], + "doc/man/man3/EVP_DigestSignInit.3" => [ + "doc/man3/EVP_DigestSignInit.pod" + ], + "doc/man/man3/EVP_DigestVerifyInit.3" => [ + "doc/man3/EVP_DigestVerifyInit.pod" + ], + "doc/man/man3/EVP_EncodeInit.3" => [ + "doc/man3/EVP_EncodeInit.pod" + ], + "doc/man/man3/EVP_EncryptInit.3" => [ + "doc/man3/EVP_EncryptInit.pod" + ], + "doc/man/man3/EVP_KDF.3" => [ + "doc/man3/EVP_KDF.pod" + ], + "doc/man/man3/EVP_KEM_free.3" => [ + "doc/man3/EVP_KEM_free.pod" + ], + "doc/man/man3/EVP_KEYEXCH_free.3" => [ + "doc/man3/EVP_KEYEXCH_free.pod" + ], + "doc/man/man3/EVP_KEYMGMT.3" => [ + "doc/man3/EVP_KEYMGMT.pod" + ], + "doc/man/man3/EVP_MAC.3" => [ + "doc/man3/EVP_MAC.pod" + ], + "doc/man/man3/EVP_MD_meth_new.3" => [ + "doc/man3/EVP_MD_meth_new.pod" + ], + "doc/man/man3/EVP_OpenInit.3" => [ + "doc/man3/EVP_OpenInit.pod" + ], + "doc/man/man3/EVP_PBE_CipherInit.3" => [ + "doc/man3/EVP_PBE_CipherInit.pod" + ], + "doc/man/man3/EVP_PKEY2PKCS8.3" => [ + "doc/man3/EVP_PKEY2PKCS8.pod" + ], + "doc/man/man3/EVP_PKEY_ASN1_METHOD.3" => [ + "doc/man3/EVP_PKEY_ASN1_METHOD.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_ctrl.3" => [ + "doc/man3/EVP_PKEY_CTX_ctrl.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3" => [ + "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3" => [ + "doc/man3/EVP_PKEY_CTX_get0_pkey.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_get_algor.3" => [ + "doc/man3/EVP_PKEY_CTX_get_algor.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_new.3" => [ + "doc/man3/EVP_PKEY_CTX_new.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3" => [ + "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3" => [ + "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_params.3" => [ + "doc/man3/EVP_PKEY_CTX_set_params.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3" => [ + "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3" => [ + "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" + ], + "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3" => [ + "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" + ], + "doc/man/man3/EVP_PKEY_asn1_get_count.3" => [ + "doc/man3/EVP_PKEY_asn1_get_count.pod" + ], + "doc/man/man3/EVP_PKEY_check.3" => [ + "doc/man3/EVP_PKEY_check.pod" + ], + "doc/man/man3/EVP_PKEY_copy_parameters.3" => [ + "doc/man3/EVP_PKEY_copy_parameters.pod" + ], + "doc/man/man3/EVP_PKEY_decapsulate.3" => [ + "doc/man3/EVP_PKEY_decapsulate.pod" + ], + "doc/man/man3/EVP_PKEY_decrypt.3" => [ + "doc/man3/EVP_PKEY_decrypt.pod" + ], + "doc/man/man3/EVP_PKEY_derive.3" => [ + "doc/man3/EVP_PKEY_derive.pod" + ], + "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3" => [ + "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" + ], + "doc/man/man3/EVP_PKEY_encapsulate.3" => [ + "doc/man3/EVP_PKEY_encapsulate.pod" + ], + "doc/man/man3/EVP_PKEY_encrypt.3" => [ + "doc/man3/EVP_PKEY_encrypt.pod" + ], + "doc/man/man3/EVP_PKEY_fromdata.3" => [ + "doc/man3/EVP_PKEY_fromdata.pod" + ], + "doc/man/man3/EVP_PKEY_get_attr.3" => [ + "doc/man3/EVP_PKEY_get_attr.pod" + ], + "doc/man/man3/EVP_PKEY_get_default_digest_nid.3" => [ + "doc/man3/EVP_PKEY_get_default_digest_nid.pod" + ], + "doc/man/man3/EVP_PKEY_get_field_type.3" => [ + "doc/man3/EVP_PKEY_get_field_type.pod" + ], + "doc/man/man3/EVP_PKEY_get_group_name.3" => [ + "doc/man3/EVP_PKEY_get_group_name.pod" + ], + "doc/man/man3/EVP_PKEY_get_size.3" => [ + "doc/man3/EVP_PKEY_get_size.pod" + ], + "doc/man/man3/EVP_PKEY_gettable_params.3" => [ + "doc/man3/EVP_PKEY_gettable_params.pod" + ], + "doc/man/man3/EVP_PKEY_is_a.3" => [ + "doc/man3/EVP_PKEY_is_a.pod" + ], + "doc/man/man3/EVP_PKEY_keygen.3" => [ + "doc/man3/EVP_PKEY_keygen.pod" + ], + "doc/man/man3/EVP_PKEY_meth_get_count.3" => [ + "doc/man3/EVP_PKEY_meth_get_count.pod" + ], + "doc/man/man3/EVP_PKEY_meth_new.3" => [ + "doc/man3/EVP_PKEY_meth_new.pod" + ], + "doc/man/man3/EVP_PKEY_new.3" => [ + "doc/man3/EVP_PKEY_new.pod" + ], + "doc/man/man3/EVP_PKEY_print_private.3" => [ + "doc/man3/EVP_PKEY_print_private.pod" + ], + "doc/man/man3/EVP_PKEY_set1_RSA.3" => [ + "doc/man3/EVP_PKEY_set1_RSA.pod" + ], + "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3" => [ + "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" + ], + "doc/man/man3/EVP_PKEY_set_type.3" => [ + "doc/man3/EVP_PKEY_set_type.pod" + ], + "doc/man/man3/EVP_PKEY_settable_params.3" => [ + "doc/man3/EVP_PKEY_settable_params.pod" + ], + "doc/man/man3/EVP_PKEY_sign.3" => [ + "doc/man3/EVP_PKEY_sign.pod" + ], + "doc/man/man3/EVP_PKEY_todata.3" => [ + "doc/man3/EVP_PKEY_todata.pod" + ], + "doc/man/man3/EVP_PKEY_verify.3" => [ + "doc/man3/EVP_PKEY_verify.pod" + ], + "doc/man/man3/EVP_PKEY_verify_recover.3" => [ + "doc/man3/EVP_PKEY_verify_recover.pod" + ], + "doc/man/man3/EVP_RAND.3" => [ + "doc/man3/EVP_RAND.pod" + ], + "doc/man/man3/EVP_SIGNATURE.3" => [ + "doc/man3/EVP_SIGNATURE.pod" + ], + "doc/man/man3/EVP_SKEY.3" => [ + "doc/man3/EVP_SKEY.pod" + ], + "doc/man/man3/EVP_SKEYMGMT.3" => [ + "doc/man3/EVP_SKEYMGMT.pod" + ], + "doc/man/man3/EVP_SealInit.3" => [ + "doc/man3/EVP_SealInit.pod" + ], + "doc/man/man3/EVP_SignInit.3" => [ + "doc/man3/EVP_SignInit.pod" + ], + "doc/man/man3/EVP_VerifyInit.3" => [ + "doc/man3/EVP_VerifyInit.pod" + ], + "doc/man/man3/EVP_aes_128_gcm.3" => [ + "doc/man3/EVP_aes_128_gcm.pod" + ], + "doc/man/man3/EVP_aria_128_gcm.3" => [ + "doc/man3/EVP_aria_128_gcm.pod" + ], + "doc/man/man3/EVP_bf_cbc.3" => [ + "doc/man3/EVP_bf_cbc.pod" + ], + "doc/man/man3/EVP_blake2b512.3" => [ + "doc/man3/EVP_blake2b512.pod" + ], + "doc/man/man3/EVP_camellia_128_ecb.3" => [ + "doc/man3/EVP_camellia_128_ecb.pod" + ], + "doc/man/man3/EVP_cast5_cbc.3" => [ + "doc/man3/EVP_cast5_cbc.pod" + ], + "doc/man/man3/EVP_chacha20.3" => [ + "doc/man3/EVP_chacha20.pod" + ], + "doc/man/man3/EVP_des_cbc.3" => [ + "doc/man3/EVP_des_cbc.pod" + ], + "doc/man/man3/EVP_desx_cbc.3" => [ + "doc/man3/EVP_desx_cbc.pod" + ], + "doc/man/man3/EVP_idea_cbc.3" => [ + "doc/man3/EVP_idea_cbc.pod" + ], + "doc/man/man3/EVP_md2.3" => [ + "doc/man3/EVP_md2.pod" + ], + "doc/man/man3/EVP_md4.3" => [ + "doc/man3/EVP_md4.pod" + ], + "doc/man/man3/EVP_md5.3" => [ + "doc/man3/EVP_md5.pod" + ], + "doc/man/man3/EVP_mdc2.3" => [ + "doc/man3/EVP_mdc2.pod" + ], + "doc/man/man3/EVP_rc2_cbc.3" => [ + "doc/man3/EVP_rc2_cbc.pod" + ], + "doc/man/man3/EVP_rc4.3" => [ + "doc/man3/EVP_rc4.pod" + ], + "doc/man/man3/EVP_rc5_32_12_16_cbc.3" => [ + "doc/man3/EVP_rc5_32_12_16_cbc.pod" + ], + "doc/man/man3/EVP_ripemd160.3" => [ + "doc/man3/EVP_ripemd160.pod" + ], + "doc/man/man3/EVP_seed_cbc.3" => [ + "doc/man3/EVP_seed_cbc.pod" + ], + "doc/man/man3/EVP_set_default_properties.3" => [ + "doc/man3/EVP_set_default_properties.pod" + ], + "doc/man/man3/EVP_sha1.3" => [ + "doc/man3/EVP_sha1.pod" + ], + "doc/man/man3/EVP_sha224.3" => [ + "doc/man3/EVP_sha224.pod" + ], + "doc/man/man3/EVP_sha3_224.3" => [ + "doc/man3/EVP_sha3_224.pod" + ], + "doc/man/man3/EVP_sm3.3" => [ + "doc/man3/EVP_sm3.pod" + ], + "doc/man/man3/EVP_sm4_cbc.3" => [ + "doc/man3/EVP_sm4_cbc.pod" + ], + "doc/man/man3/EVP_whirlpool.3" => [ + "doc/man3/EVP_whirlpool.pod" + ], + "doc/man/man3/GENERAL_NAME.3" => [ + "doc/man3/GENERAL_NAME.pod" + ], + "doc/man/man3/HMAC.3" => [ + "doc/man3/HMAC.pod" + ], + "doc/man/man3/MD5.3" => [ + "doc/man3/MD5.pod" + ], + "doc/man/man3/MDC2_Init.3" => [ + "doc/man3/MDC2_Init.pod" + ], + "doc/man/man3/NCONF_new_ex.3" => [ + "doc/man3/NCONF_new_ex.pod" + ], + "doc/man/man3/OBJ_nid2obj.3" => [ + "doc/man3/OBJ_nid2obj.pod" + ], + "doc/man/man3/OCSP_REQUEST_new.3" => [ + "doc/man3/OCSP_REQUEST_new.pod" + ], + "doc/man/man3/OCSP_cert_to_id.3" => [ + "doc/man3/OCSP_cert_to_id.pod" + ], + "doc/man/man3/OCSP_request_add1_nonce.3" => [ + "doc/man3/OCSP_request_add1_nonce.pod" + ], + "doc/man/man3/OCSP_resp_find_status.3" => [ + "doc/man3/OCSP_resp_find_status.pod" + ], + "doc/man/man3/OCSP_response_status.3" => [ + "doc/man3/OCSP_response_status.pod" + ], + "doc/man/man3/OCSP_sendreq_new.3" => [ + "doc/man3/OCSP_sendreq_new.pod" + ], + "doc/man/man3/OPENSSL_Applink.3" => [ + "doc/man3/OPENSSL_Applink.pod" + ], + "doc/man/man3/OPENSSL_FILE.3" => [ + "doc/man3/OPENSSL_FILE.pod" + ], + "doc/man/man3/OPENSSL_LH_COMPFUNC.3" => [ + "doc/man3/OPENSSL_LH_COMPFUNC.pod" + ], + "doc/man/man3/OPENSSL_LH_stats.3" => [ + "doc/man3/OPENSSL_LH_stats.pod" + ], + "doc/man/man3/OPENSSL_config.3" => [ + "doc/man3/OPENSSL_config.pod" + ], + "doc/man/man3/OPENSSL_fork_prepare.3" => [ + "doc/man3/OPENSSL_fork_prepare.pod" + ], + "doc/man/man3/OPENSSL_gmtime.3" => [ + "doc/man3/OPENSSL_gmtime.pod" + ], + "doc/man/man3/OPENSSL_hexchar2int.3" => [ + "doc/man3/OPENSSL_hexchar2int.pod" + ], + "doc/man/man3/OPENSSL_ia32cap.3" => [ + "doc/man3/OPENSSL_ia32cap.pod" + ], + "doc/man/man3/OPENSSL_init_crypto.3" => [ + "doc/man3/OPENSSL_init_crypto.pod" + ], + "doc/man/man3/OPENSSL_init_ssl.3" => [ + "doc/man3/OPENSSL_init_ssl.pod" + ], + "doc/man/man3/OPENSSL_instrument_bus.3" => [ + "doc/man3/OPENSSL_instrument_bus.pod" + ], + "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ + "doc/man3/OPENSSL_load_builtin_modules.pod" + ], + "doc/man/man3/OPENSSL_load_u16_le.3" => [ + "doc/man3/OPENSSL_load_u16_le.pod" + ], + "doc/man/man3/OPENSSL_malloc.3" => [ + "doc/man3/OPENSSL_malloc.pod" + ], + "doc/man/man3/OPENSSL_ppccap.3" => [ + "doc/man3/OPENSSL_ppccap.pod" + ], + "doc/man/man3/OPENSSL_riscvcap.3" => [ + "doc/man3/OPENSSL_riscvcap.pod" + ], + "doc/man/man3/OPENSSL_s390xcap.3" => [ + "doc/man3/OPENSSL_s390xcap.pod" + ], + "doc/man/man3/OPENSSL_secure_malloc.3" => [ + "doc/man3/OPENSSL_secure_malloc.pod" + ], + "doc/man/man3/OPENSSL_strcasecmp.3" => [ + "doc/man3/OPENSSL_strcasecmp.pod" + ], + "doc/man/man3/OSSL_ALGORITHM.3" => [ + "doc/man3/OSSL_ALGORITHM.pod" + ], + "doc/man/man3/OSSL_CALLBACK.3" => [ + "doc/man3/OSSL_CALLBACK.pod" + ], + "doc/man/man3/OSSL_CMP_ATAV_set0.3" => [ + "doc/man3/OSSL_CMP_ATAV_set0.pod" + ], + "doc/man/man3/OSSL_CMP_CTX_new.3" => [ + "doc/man3/OSSL_CMP_CTX_new.pod" + ], + "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ + "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" + ], + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3" => [ + "doc/man3/OSSL_CMP_ITAV_new_caCerts.pod" + ], + "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ + "doc/man3/OSSL_CMP_ITAV_set0.pod" + ], + "doc/man/man3/OSSL_CMP_MSG_get0_header.3" => [ + "doc/man3/OSSL_CMP_MSG_get0_header.pod" + ], + "doc/man/man3/OSSL_CMP_MSG_http_perform.3" => [ + "doc/man3/OSSL_CMP_MSG_http_perform.pod" + ], + "doc/man/man3/OSSL_CMP_SRV_CTX_new.3" => [ + "doc/man3/OSSL_CMP_SRV_CTX_new.pod" + ], + "doc/man/man3/OSSL_CMP_STATUSINFO_new.3" => [ + "doc/man3/OSSL_CMP_STATUSINFO_new.pod" + ], + "doc/man/man3/OSSL_CMP_exec_certreq.3" => [ + "doc/man3/OSSL_CMP_exec_certreq.pod" + ], + "doc/man/man3/OSSL_CMP_log_open.3" => [ + "doc/man3/OSSL_CMP_log_open.pod" + ], + "doc/man/man3/OSSL_CMP_validate_msg.3" => [ + "doc/man3/OSSL_CMP_validate_msg.pod" + ], + "doc/man/man3/OSSL_CORE_MAKE_FUNC.3" => [ + "doc/man3/OSSL_CORE_MAKE_FUNC.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3" => [ + "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3" => [ + "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" + ], + "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3" => [ + "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" + ], + "doc/man/man3/OSSL_CRMF_pbmp_new.3" => [ + "doc/man3/OSSL_CRMF_pbmp_new.pod" + ], + "doc/man/man3/OSSL_DECODER.3" => [ + "doc/man3/OSSL_DECODER.pod" + ], + "doc/man/man3/OSSL_DECODER_CTX.3" => [ + "doc/man3/OSSL_DECODER_CTX.pod" + ], + "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3" => [ + "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" + ], + "doc/man/man3/OSSL_DECODER_from_bio.3" => [ + "doc/man3/OSSL_DECODER_from_bio.pod" + ], + "doc/man/man3/OSSL_DISPATCH.3" => [ + "doc/man3/OSSL_DISPATCH.pod" + ], + "doc/man/man3/OSSL_ENCODER.3" => [ + "doc/man3/OSSL_ENCODER.pod" + ], + "doc/man/man3/OSSL_ENCODER_CTX.3" => [ + "doc/man3/OSSL_ENCODER_CTX.pod" + ], + "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3" => [ + "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" + ], + "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ + "doc/man3/OSSL_ENCODER_to_bio.pod" + ], + "doc/man/man3/OSSL_ERR_STATE_save.3" => [ + "doc/man3/OSSL_ERR_STATE_save.pod" + ], + "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ + "doc/man3/OSSL_ESS_check_signing_certs.pod" + ], + "doc/man/man3/OSSL_GENERAL_NAMES_print.3" => [ + "doc/man3/OSSL_GENERAL_NAMES_print.pod" + ], + "doc/man/man3/OSSL_HPKE_CTX_new.3" => [ + "doc/man3/OSSL_HPKE_CTX_new.pod" + ], + "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ + "doc/man3/OSSL_HTTP_REQ_CTX.pod" + ], + "doc/man/man3/OSSL_HTTP_parse_url.3" => [ + "doc/man3/OSSL_HTTP_parse_url.pod" + ], + "doc/man/man3/OSSL_HTTP_transfer.3" => [ + "doc/man3/OSSL_HTTP_transfer.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX.pod" + ], + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3" => [ + "doc/man3/OSSL_IETF_ATTR_SYNTAX_print.pod" + ], + "doc/man/man3/OSSL_INDICATOR_set_callback.3" => [ + "doc/man3/OSSL_INDICATOR_set_callback.pod" + ], + "doc/man/man3/OSSL_ITEM.3" => [ + "doc/man3/OSSL_ITEM.pod" + ], + "doc/man/man3/OSSL_LIB_CTX.3" => [ + "doc/man3/OSSL_LIB_CTX.pod" + ], + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3" => [ + "doc/man3/OSSL_LIB_CTX_set_conf_diagnostics.pod" + ], + "doc/man/man3/OSSL_PARAM.3" => [ + "doc/man3/OSSL_PARAM.pod" + ], + "doc/man/man3/OSSL_PARAM_BLD.3" => [ + "doc/man3/OSSL_PARAM_BLD.pod" + ], + "doc/man/man3/OSSL_PARAM_allocate_from_text.3" => [ + "doc/man3/OSSL_PARAM_allocate_from_text.pod" + ], + "doc/man/man3/OSSL_PARAM_dup.3" => [ + "doc/man3/OSSL_PARAM_dup.pod" + ], + "doc/man/man3/OSSL_PARAM_int.3" => [ + "doc/man3/OSSL_PARAM_int.pod" + ], + "doc/man/man3/OSSL_PARAM_print_to_bio.3" => [ + "doc/man3/OSSL_PARAM_print_to_bio.pod" + ], + "doc/man/man3/OSSL_PROVIDER.3" => [ + "doc/man3/OSSL_PROVIDER.pod" + ], + "doc/man/man3/OSSL_QUIC_client_method.3" => [ + "doc/man3/OSSL_QUIC_client_method.pod" + ], + "doc/man/man3/OSSL_SELF_TEST_new.3" => [ + "doc/man3/OSSL_SELF_TEST_new.pod" + ], + "doc/man/man3/OSSL_SELF_TEST_set_callback.3" => [ + "doc/man3/OSSL_SELF_TEST_set_callback.pod" + ], + "doc/man/man3/OSSL_STORE_INFO.3" => [ + "doc/man3/OSSL_STORE_INFO.pod" + ], + "doc/man/man3/OSSL_STORE_LOADER.3" => [ + "doc/man3/OSSL_STORE_LOADER.pod" + ], + "doc/man/man3/OSSL_STORE_SEARCH.3" => [ + "doc/man3/OSSL_STORE_SEARCH.pod" + ], + "doc/man/man3/OSSL_STORE_attach.3" => [ + "doc/man3/OSSL_STORE_attach.pod" + ], + "doc/man/man3/OSSL_STORE_expect.3" => [ + "doc/man3/OSSL_STORE_expect.pod" + ], + "doc/man/man3/OSSL_STORE_open.3" => [ + "doc/man3/OSSL_STORE_open.pod" + ], + "doc/man/man3/OSSL_sleep.3" => [ + "doc/man3/OSSL_sleep.pod" + ], + "doc/man/man3/OSSL_trace_enabled.3" => [ + "doc/man3/OSSL_trace_enabled.pod" + ], + "doc/man/man3/OSSL_trace_get_category_num.3" => [ + "doc/man3/OSSL_trace_get_category_num.pod" + ], + "doc/man/man3/OSSL_trace_set_channel.3" => [ + "doc/man3/OSSL_trace_set_channel.pod" + ], + "doc/man/man3/OpenSSL_add_all_algorithms.3" => [ + "doc/man3/OpenSSL_add_all_algorithms.pod" + ], + "doc/man/man3/OpenSSL_version.3" => [ + "doc/man3/OpenSSL_version.pod" + ], + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3" => [ + "doc/man3/PBMAC1_get1_pbkdf2_param.pod" + ], + "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ + "doc/man3/PEM_X509_INFO_read_bio_ex.pod" + ], + "doc/man/man3/PEM_bytes_read_bio.3" => [ + "doc/man3/PEM_bytes_read_bio.pod" + ], + "doc/man/man3/PEM_read.3" => [ + "doc/man3/PEM_read.pod" + ], + "doc/man/man3/PEM_read_CMS.3" => [ + "doc/man3/PEM_read_CMS.pod" + ], + "doc/man/man3/PEM_read_bio_PrivateKey.3" => [ + "doc/man3/PEM_read_bio_PrivateKey.pod" + ], + "doc/man/man3/PEM_read_bio_ex.3" => [ + "doc/man3/PEM_read_bio_ex.pod" + ], + "doc/man/man3/PEM_write_bio_CMS_stream.3" => [ + "doc/man3/PEM_write_bio_CMS_stream.pod" + ], + "doc/man/man3/PEM_write_bio_PKCS7_stream.3" => [ + "doc/man3/PEM_write_bio_PKCS7_stream.pod" + ], + "doc/man/man3/PKCS12_PBE_keyivgen.3" => [ + "doc/man3/PKCS12_PBE_keyivgen.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_create_cert.3" => [ + "doc/man3/PKCS12_SAFEBAG_create_cert.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ + "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" + ], + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3" => [ + "doc/man3/PKCS12_SAFEBAG_set0_attrs.pod" + ], + "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ + "doc/man3/PKCS12_add1_attr_by_NID.pod" + ], + "doc/man/man3/PKCS12_add_CSPName_asc.3" => [ + "doc/man3/PKCS12_add_CSPName_asc.pod" + ], + "doc/man/man3/PKCS12_add_cert.3" => [ + "doc/man3/PKCS12_add_cert.pod" + ], + "doc/man/man3/PKCS12_add_friendlyname_asc.3" => [ + "doc/man3/PKCS12_add_friendlyname_asc.pod" + ], + "doc/man/man3/PKCS12_add_localkeyid.3" => [ + "doc/man3/PKCS12_add_localkeyid.pod" + ], + "doc/man/man3/PKCS12_add_safe.3" => [ + "doc/man3/PKCS12_add_safe.pod" + ], + "doc/man/man3/PKCS12_create.3" => [ + "doc/man3/PKCS12_create.pod" + ], + "doc/man/man3/PKCS12_decrypt_skey.3" => [ + "doc/man3/PKCS12_decrypt_skey.pod" + ], + "doc/man/man3/PKCS12_gen_mac.3" => [ + "doc/man3/PKCS12_gen_mac.pod" + ], + "doc/man/man3/PKCS12_get_friendlyname.3" => [ + "doc/man3/PKCS12_get_friendlyname.pod" + ], + "doc/man/man3/PKCS12_init.3" => [ + "doc/man3/PKCS12_init.pod" + ], + "doc/man/man3/PKCS12_item_decrypt_d2i.3" => [ + "doc/man3/PKCS12_item_decrypt_d2i.pod" + ], + "doc/man/man3/PKCS12_key_gen_utf8_ex.3" => [ + "doc/man3/PKCS12_key_gen_utf8_ex.pod" + ], + "doc/man/man3/PKCS12_newpass.3" => [ + "doc/man3/PKCS12_newpass.pod" + ], + "doc/man/man3/PKCS12_pack_p7encdata.3" => [ + "doc/man3/PKCS12_pack_p7encdata.pod" + ], + "doc/man/man3/PKCS12_parse.3" => [ + "doc/man3/PKCS12_parse.pod" + ], + "doc/man/man3/PKCS5_PBE_keyivgen.3" => [ + "doc/man3/PKCS5_PBE_keyivgen.pod" + ], + "doc/man/man3/PKCS5_PBKDF2_HMAC.3" => [ + "doc/man3/PKCS5_PBKDF2_HMAC.pod" + ], + "doc/man/man3/PKCS7_decrypt.3" => [ + "doc/man3/PKCS7_decrypt.pod" + ], + "doc/man/man3/PKCS7_encrypt.3" => [ + "doc/man3/PKCS7_encrypt.pod" + ], + "doc/man/man3/PKCS7_get_octet_string.3" => [ + "doc/man3/PKCS7_get_octet_string.pod" + ], + "doc/man/man3/PKCS7_sign.3" => [ + "doc/man3/PKCS7_sign.pod" + ], + "doc/man/man3/PKCS7_sign_add_signer.3" => [ + "doc/man3/PKCS7_sign_add_signer.pod" + ], + "doc/man/man3/PKCS7_type_is_other.3" => [ + "doc/man3/PKCS7_type_is_other.pod" + ], + "doc/man/man3/PKCS7_verify.3" => [ + "doc/man3/PKCS7_verify.pod" + ], + "doc/man/man3/PKCS8_encrypt.3" => [ + "doc/man3/PKCS8_encrypt.pod" + ], + "doc/man/man3/PKCS8_pkey_add1_attr.3" => [ + "doc/man3/PKCS8_pkey_add1_attr.pod" + ], + "doc/man/man3/RAND_add.3" => [ + "doc/man3/RAND_add.pod" + ], + "doc/man/man3/RAND_bytes.3" => [ + "doc/man3/RAND_bytes.pod" + ], + "doc/man/man3/RAND_cleanup.3" => [ + "doc/man3/RAND_cleanup.pod" + ], + "doc/man/man3/RAND_egd.3" => [ + "doc/man3/RAND_egd.pod" + ], + "doc/man/man3/RAND_get0_primary.3" => [ + "doc/man3/RAND_get0_primary.pod" + ], + "doc/man/man3/RAND_load_file.3" => [ + "doc/man3/RAND_load_file.pod" + ], + "doc/man/man3/RAND_set_DRBG_type.3" => [ + "doc/man3/RAND_set_DRBG_type.pod" + ], + "doc/man/man3/RAND_set_rand_method.3" => [ + "doc/man3/RAND_set_rand_method.pod" + ], + "doc/man/man3/RC4_set_key.3" => [ + "doc/man3/RC4_set_key.pod" + ], + "doc/man/man3/RIPEMD160_Init.3" => [ + "doc/man3/RIPEMD160_Init.pod" + ], + "doc/man/man3/RSA_blinding_on.3" => [ + "doc/man3/RSA_blinding_on.pod" + ], + "doc/man/man3/RSA_check_key.3" => [ + "doc/man3/RSA_check_key.pod" + ], + "doc/man/man3/RSA_generate_key.3" => [ + "doc/man3/RSA_generate_key.pod" + ], + "doc/man/man3/RSA_get0_key.3" => [ + "doc/man3/RSA_get0_key.pod" + ], + "doc/man/man3/RSA_meth_new.3" => [ + "doc/man3/RSA_meth_new.pod" + ], + "doc/man/man3/RSA_new.3" => [ + "doc/man3/RSA_new.pod" + ], + "doc/man/man3/RSA_padding_add_PKCS1_type_1.3" => [ + "doc/man3/RSA_padding_add_PKCS1_type_1.pod" + ], + "doc/man/man3/RSA_print.3" => [ + "doc/man3/RSA_print.pod" + ], + "doc/man/man3/RSA_private_encrypt.3" => [ + "doc/man3/RSA_private_encrypt.pod" + ], + "doc/man/man3/RSA_public_encrypt.3" => [ + "doc/man3/RSA_public_encrypt.pod" + ], + "doc/man/man3/RSA_set_method.3" => [ + "doc/man3/RSA_set_method.pod" + ], + "doc/man/man3/RSA_sign.3" => [ + "doc/man3/RSA_sign.pod" + ], + "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3" => [ + "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" + ], + "doc/man/man3/RSA_size.3" => [ + "doc/man3/RSA_size.pod" + ], + "doc/man/man3/SCT_new.3" => [ + "doc/man3/SCT_new.pod" + ], + "doc/man/man3/SCT_print.3" => [ + "doc/man3/SCT_print.pod" + ], + "doc/man/man3/SCT_validate.3" => [ + "doc/man3/SCT_validate.pod" + ], + "doc/man/man3/SHA256_Init.3" => [ + "doc/man3/SHA256_Init.pod" + ], + "doc/man/man3/SMIME_read_ASN1.3" => [ + "doc/man3/SMIME_read_ASN1.pod" + ], + "doc/man/man3/SMIME_read_CMS.3" => [ + "doc/man3/SMIME_read_CMS.pod" + ], + "doc/man/man3/SMIME_read_PKCS7.3" => [ + "doc/man3/SMIME_read_PKCS7.pod" + ], + "doc/man/man3/SMIME_write_ASN1.3" => [ + "doc/man3/SMIME_write_ASN1.pod" + ], + "doc/man/man3/SMIME_write_CMS.3" => [ + "doc/man3/SMIME_write_CMS.pod" + ], + "doc/man/man3/SMIME_write_PKCS7.3" => [ + "doc/man3/SMIME_write_PKCS7.pod" + ], + "doc/man/man3/SRP_Calc_B.3" => [ + "doc/man3/SRP_Calc_B.pod" + ], + "doc/man/man3/SRP_VBASE_new.3" => [ + "doc/man3/SRP_VBASE_new.pod" + ], + "doc/man/man3/SRP_create_verifier.3" => [ + "doc/man3/SRP_create_verifier.pod" + ], + "doc/man/man3/SRP_user_pwd_new.3" => [ + "doc/man3/SRP_user_pwd_new.pod" + ], + "doc/man/man3/SSL_CIPHER_get_name.3" => [ + "doc/man3/SSL_CIPHER_get_name.pod" + ], + "doc/man/man3/SSL_COMP_add_compression_method.3" => [ + "doc/man3/SSL_COMP_add_compression_method.pod" + ], + "doc/man/man3/SSL_CONF_CTX_new.3" => [ + "doc/man3/SSL_CONF_CTX_new.pod" + ], + "doc/man/man3/SSL_CONF_CTX_set1_prefix.3" => [ + "doc/man3/SSL_CONF_CTX_set1_prefix.pod" + ], + "doc/man/man3/SSL_CONF_CTX_set_flags.3" => [ + "doc/man3/SSL_CONF_CTX_set_flags.pod" + ], + "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3" => [ + "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" + ], + "doc/man/man3/SSL_CONF_cmd.3" => [ + "doc/man3/SSL_CONF_cmd.pod" + ], + "doc/man/man3/SSL_CONF_cmd_argv.3" => [ + "doc/man3/SSL_CONF_cmd_argv.pod" + ], + "doc/man/man3/SSL_CTX_add1_chain_cert.3" => [ + "doc/man3/SSL_CTX_add1_chain_cert.pod" + ], + "doc/man/man3/SSL_CTX_add_extra_chain_cert.3" => [ + "doc/man3/SSL_CTX_add_extra_chain_cert.pod" + ], + "doc/man/man3/SSL_CTX_add_session.3" => [ + "doc/man3/SSL_CTX_add_session.pod" + ], + "doc/man/man3/SSL_CTX_config.3" => [ + "doc/man3/SSL_CTX_config.pod" + ], + "doc/man/man3/SSL_CTX_ctrl.3" => [ + "doc/man3/SSL_CTX_ctrl.pod" + ], + "doc/man/man3/SSL_CTX_dane_enable.3" => [ + "doc/man3/SSL_CTX_dane_enable.pod" + ], + "doc/man/man3/SSL_CTX_flush_sessions.3" => [ + "doc/man3/SSL_CTX_flush_sessions.pod" + ], + "doc/man/man3/SSL_CTX_free.3" => [ + "doc/man3/SSL_CTX_free.pod" + ], + "doc/man/man3/SSL_CTX_get0_param.3" => [ + "doc/man3/SSL_CTX_get0_param.pod" + ], + "doc/man/man3/SSL_CTX_get_verify_mode.3" => [ + "doc/man3/SSL_CTX_get_verify_mode.pod" + ], + "doc/man/man3/SSL_CTX_has_client_custom_ext.3" => [ + "doc/man3/SSL_CTX_has_client_custom_ext.pod" + ], + "doc/man/man3/SSL_CTX_load_verify_locations.3" => [ + "doc/man3/SSL_CTX_load_verify_locations.pod" + ], + "doc/man/man3/SSL_CTX_new.3" => [ + "doc/man3/SSL_CTX_new.pod" + ], + "doc/man/man3/SSL_CTX_sess_number.3" => [ + "doc/man3/SSL_CTX_sess_number.pod" + ], + "doc/man/man3/SSL_CTX_sess_set_cache_size.3" => [ + "doc/man3/SSL_CTX_sess_set_cache_size.pod" + ], + "doc/man/man3/SSL_CTX_sess_set_get_cb.3" => [ + "doc/man3/SSL_CTX_sess_set_get_cb.pod" + ], + "doc/man/man3/SSL_CTX_sessions.3" => [ + "doc/man3/SSL_CTX_sessions.pod" + ], + "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ + "doc/man3/SSL_CTX_set0_CA_list.pod" + ], + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3" => [ + "doc/man3/SSL_CTX_set1_cert_comp_preference.pod" + ], + "doc/man/man3/SSL_CTX_set1_curves.3" => [ + "doc/man3/SSL_CTX_set1_curves.pod" + ], + "doc/man/man3/SSL_CTX_set1_sigalgs.3" => [ + "doc/man3/SSL_CTX_set1_sigalgs.pod" + ], + "doc/man/man3/SSL_CTX_set1_verify_cert_store.3" => [ + "doc/man3/SSL_CTX_set1_verify_cert_store.pod" + ], + "doc/man/man3/SSL_CTX_set_alpn_select_cb.3" => [ + "doc/man3/SSL_CTX_set_alpn_select_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_cert_cb.3" => [ + "doc/man3/SSL_CTX_set_cert_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_cert_store.3" => [ + "doc/man3/SSL_CTX_set_cert_store.pod" + ], + "doc/man/man3/SSL_CTX_set_cert_verify_callback.3" => [ + "doc/man3/SSL_CTX_set_cert_verify_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_cipher_list.3" => [ + "doc/man3/SSL_CTX_set_cipher_list.pod" + ], + "doc/man/man3/SSL_CTX_set_client_cert_cb.3" => [ + "doc/man3/SSL_CTX_set_client_cert_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_client_hello_cb.3" => [ + "doc/man3/SSL_CTX_set_client_hello_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_ct_validation_callback.3" => [ + "doc/man3/SSL_CTX_set_ct_validation_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_ctlog_list_file.3" => [ + "doc/man3/SSL_CTX_set_ctlog_list_file.pod" + ], + "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ + "doc/man3/SSL_CTX_set_default_passwd_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_domain_flags.3" => [ + "doc/man3/SSL_CTX_set_domain_flags.pod" + ], + "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ + "doc/man3/SSL_CTX_set_generate_session_id.pod" + ], + "doc/man/man3/SSL_CTX_set_info_callback.3" => [ + "doc/man3/SSL_CTX_set_info_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_keylog_callback.3" => [ + "doc/man3/SSL_CTX_set_keylog_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_max_cert_list.3" => [ + "doc/man3/SSL_CTX_set_max_cert_list.pod" + ], + "doc/man/man3/SSL_CTX_set_min_proto_version.3" => [ + "doc/man3/SSL_CTX_set_min_proto_version.pod" + ], + "doc/man/man3/SSL_CTX_set_mode.3" => [ + "doc/man3/SSL_CTX_set_mode.pod" + ], + "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ + "doc/man3/SSL_CTX_set_msg_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3" => [ + "doc/man3/SSL_CTX_set_new_pending_conn_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ + "doc/man3/SSL_CTX_set_num_tickets.pod" + ], + "doc/man/man3/SSL_CTX_set_options.3" => [ + "doc/man3/SSL_CTX_set_options.pod" + ], + "doc/man/man3/SSL_CTX_set_psk_client_callback.3" => [ + "doc/man3/SSL_CTX_set_psk_client_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_quiet_shutdown.3" => [ + "doc/man3/SSL_CTX_set_quiet_shutdown.pod" + ], + "doc/man/man3/SSL_CTX_set_read_ahead.3" => [ + "doc/man3/SSL_CTX_set_read_ahead.pod" + ], + "doc/man/man3/SSL_CTX_set_record_padding_callback.3" => [ + "doc/man3/SSL_CTX_set_record_padding_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_security_level.3" => [ + "doc/man3/SSL_CTX_set_security_level.pod" + ], + "doc/man/man3/SSL_CTX_set_session_cache_mode.3" => [ + "doc/man3/SSL_CTX_set_session_cache_mode.pod" + ], + "doc/man/man3/SSL_CTX_set_session_id_context.3" => [ + "doc/man3/SSL_CTX_set_session_id_context.pod" + ], + "doc/man/man3/SSL_CTX_set_session_ticket_cb.3" => [ + "doc/man3/SSL_CTX_set_session_ticket_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_split_send_fragment.3" => [ + "doc/man3/SSL_CTX_set_split_send_fragment.pod" + ], + "doc/man/man3/SSL_CTX_set_srp_password.3" => [ + "doc/man3/SSL_CTX_set_srp_password.pod" + ], + "doc/man/man3/SSL_CTX_set_ssl_version.3" => [ + "doc/man3/SSL_CTX_set_ssl_version.pod" + ], + "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3" => [ + "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_timeout.3" => [ + "doc/man3/SSL_CTX_set_timeout.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3" => [ + "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3" => [ + "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3" => [ + "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" + ], + "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3" => [ + "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" + ], + "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3" => [ + "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" + ], + "doc/man/man3/SSL_CTX_set_tmp_ecdh.3" => [ + "doc/man3/SSL_CTX_set_tmp_ecdh.pod" + ], + "doc/man/man3/SSL_CTX_set_verify.3" => [ + "doc/man3/SSL_CTX_set_verify.pod" + ], + "doc/man/man3/SSL_CTX_use_certificate.3" => [ + "doc/man3/SSL_CTX_use_certificate.pod" + ], + "doc/man/man3/SSL_CTX_use_psk_identity_hint.3" => [ + "doc/man3/SSL_CTX_use_psk_identity_hint.pod" + ], + "doc/man/man3/SSL_CTX_use_serverinfo.3" => [ + "doc/man3/SSL_CTX_use_serverinfo.pod" + ], + "doc/man/man3/SSL_SESSION_free.3" => [ + "doc/man3/SSL_SESSION_free.pod" + ], + "doc/man/man3/SSL_SESSION_get0_cipher.3" => [ + "doc/man3/SSL_SESSION_get0_cipher.pod" + ], + "doc/man/man3/SSL_SESSION_get0_hostname.3" => [ + "doc/man3/SSL_SESSION_get0_hostname.pod" + ], + "doc/man/man3/SSL_SESSION_get0_id_context.3" => [ + "doc/man3/SSL_SESSION_get0_id_context.pod" + ], + "doc/man/man3/SSL_SESSION_get0_peer.3" => [ + "doc/man3/SSL_SESSION_get0_peer.pod" + ], + "doc/man/man3/SSL_SESSION_get_compress_id.3" => [ + "doc/man3/SSL_SESSION_get_compress_id.pod" + ], + "doc/man/man3/SSL_SESSION_get_protocol_version.3" => [ + "doc/man3/SSL_SESSION_get_protocol_version.pod" + ], + "doc/man/man3/SSL_SESSION_get_time.3" => [ + "doc/man3/SSL_SESSION_get_time.pod" + ], + "doc/man/man3/SSL_SESSION_has_ticket.3" => [ + "doc/man3/SSL_SESSION_has_ticket.pod" + ], + "doc/man/man3/SSL_SESSION_is_resumable.3" => [ + "doc/man3/SSL_SESSION_is_resumable.pod" + ], + "doc/man/man3/SSL_SESSION_print.3" => [ + "doc/man3/SSL_SESSION_print.pod" + ], + "doc/man/man3/SSL_SESSION_set1_id.3" => [ + "doc/man3/SSL_SESSION_set1_id.pod" + ], + "doc/man/man3/SSL_accept.3" => [ + "doc/man3/SSL_accept.pod" + ], + "doc/man/man3/SSL_accept_stream.3" => [ + "doc/man3/SSL_accept_stream.pod" + ], + "doc/man/man3/SSL_alert_type_string.3" => [ + "doc/man3/SSL_alert_type_string.pod" + ], + "doc/man/man3/SSL_alloc_buffers.3" => [ + "doc/man3/SSL_alloc_buffers.pod" + ], + "doc/man/man3/SSL_check_chain.3" => [ + "doc/man3/SSL_check_chain.pod" + ], + "doc/man/man3/SSL_clear.3" => [ + "doc/man3/SSL_clear.pod" + ], + "doc/man/man3/SSL_connect.3" => [ + "doc/man3/SSL_connect.pod" + ], + "doc/man/man3/SSL_do_handshake.3" => [ + "doc/man3/SSL_do_handshake.pod" + ], + "doc/man/man3/SSL_export_keying_material.3" => [ + "doc/man3/SSL_export_keying_material.pod" + ], + "doc/man/man3/SSL_extension_supported.3" => [ + "doc/man3/SSL_extension_supported.pod" + ], + "doc/man/man3/SSL_free.3" => [ + "doc/man3/SSL_free.pod" + ], + "doc/man/man3/SSL_get0_connection.3" => [ + "doc/man3/SSL_get0_connection.pod" + ], + "doc/man/man3/SSL_get0_group_name.3" => [ + "doc/man3/SSL_get0_group_name.pod" + ], + "doc/man/man3/SSL_get0_peer_rpk.3" => [ + "doc/man3/SSL_get0_peer_rpk.pod" + ], + "doc/man/man3/SSL_get0_peer_scts.3" => [ + "doc/man3/SSL_get0_peer_scts.pod" + ], + "doc/man/man3/SSL_get1_builtin_sigalgs.3" => [ + "doc/man3/SSL_get1_builtin_sigalgs.pod" + ], + "doc/man/man3/SSL_get_SSL_CTX.3" => [ + "doc/man3/SSL_get_SSL_CTX.pod" + ], + "doc/man/man3/SSL_get_all_async_fds.3" => [ + "doc/man3/SSL_get_all_async_fds.pod" + ], + "doc/man/man3/SSL_get_certificate.3" => [ + "doc/man3/SSL_get_certificate.pod" + ], + "doc/man/man3/SSL_get_ciphers.3" => [ + "doc/man3/SSL_get_ciphers.pod" + ], + "doc/man/man3/SSL_get_client_random.3" => [ + "doc/man3/SSL_get_client_random.pod" + ], + "doc/man/man3/SSL_get_conn_close_info.3" => [ + "doc/man3/SSL_get_conn_close_info.pod" + ], + "doc/man/man3/SSL_get_current_cipher.3" => [ + "doc/man3/SSL_get_current_cipher.pod" + ], + "doc/man/man3/SSL_get_default_timeout.3" => [ + "doc/man3/SSL_get_default_timeout.pod" + ], + "doc/man/man3/SSL_get_error.3" => [ + "doc/man3/SSL_get_error.pod" + ], + "doc/man/man3/SSL_get_event_timeout.3" => [ + "doc/man3/SSL_get_event_timeout.pod" + ], + "doc/man/man3/SSL_get_extms_support.3" => [ + "doc/man3/SSL_get_extms_support.pod" + ], + "doc/man/man3/SSL_get_fd.3" => [ + "doc/man3/SSL_get_fd.pod" + ], + "doc/man/man3/SSL_get_handshake_rtt.3" => [ + "doc/man3/SSL_get_handshake_rtt.pod" + ], + "doc/man/man3/SSL_get_peer_cert_chain.3" => [ + "doc/man3/SSL_get_peer_cert_chain.pod" + ], + "doc/man/man3/SSL_get_peer_certificate.3" => [ + "doc/man3/SSL_get_peer_certificate.pod" + ], + "doc/man/man3/SSL_get_peer_signature_nid.3" => [ + "doc/man3/SSL_get_peer_signature_nid.pod" + ], + "doc/man/man3/SSL_get_peer_tmp_key.3" => [ + "doc/man3/SSL_get_peer_tmp_key.pod" + ], + "doc/man/man3/SSL_get_psk_identity.3" => [ + "doc/man3/SSL_get_psk_identity.pod" + ], + "doc/man/man3/SSL_get_rbio.3" => [ + "doc/man3/SSL_get_rbio.pod" + ], + "doc/man/man3/SSL_get_rpoll_descriptor.3" => [ + "doc/man3/SSL_get_rpoll_descriptor.pod" + ], + "doc/man/man3/SSL_get_session.3" => [ + "doc/man3/SSL_get_session.pod" + ], + "doc/man/man3/SSL_get_shared_sigalgs.3" => [ + "doc/man3/SSL_get_shared_sigalgs.pod" + ], + "doc/man/man3/SSL_get_stream_id.3" => [ + "doc/man3/SSL_get_stream_id.pod" + ], + "doc/man/man3/SSL_get_stream_read_state.3" => [ + "doc/man3/SSL_get_stream_read_state.pod" + ], + "doc/man/man3/SSL_get_value_uint.3" => [ + "doc/man3/SSL_get_value_uint.pod" + ], + "doc/man/man3/SSL_get_verify_result.3" => [ + "doc/man3/SSL_get_verify_result.pod" + ], + "doc/man/man3/SSL_get_version.3" => [ + "doc/man3/SSL_get_version.pod" + ], + "doc/man/man3/SSL_group_to_name.3" => [ + "doc/man3/SSL_group_to_name.pod" + ], + "doc/man/man3/SSL_handle_events.3" => [ + "doc/man3/SSL_handle_events.pod" + ], + "doc/man/man3/SSL_in_init.3" => [ + "doc/man3/SSL_in_init.pod" + ], + "doc/man/man3/SSL_inject_net_dgram.3" => [ + "doc/man3/SSL_inject_net_dgram.pod" + ], + "doc/man/man3/SSL_key_update.3" => [ + "doc/man3/SSL_key_update.pod" + ], + "doc/man/man3/SSL_library_init.3" => [ + "doc/man3/SSL_library_init.pod" + ], + "doc/man/man3/SSL_load_client_CA_file.3" => [ + "doc/man3/SSL_load_client_CA_file.pod" + ], + "doc/man/man3/SSL_new.3" => [ + "doc/man3/SSL_new.pod" + ], + "doc/man/man3/SSL_new_domain.3" => [ + "doc/man3/SSL_new_domain.pod" + ], + "doc/man/man3/SSL_new_listener.3" => [ + "doc/man3/SSL_new_listener.pod" + ], + "doc/man/man3/SSL_new_stream.3" => [ + "doc/man3/SSL_new_stream.pod" + ], + "doc/man/man3/SSL_pending.3" => [ + "doc/man3/SSL_pending.pod" + ], + "doc/man/man3/SSL_poll.3" => [ + "doc/man3/SSL_poll.pod" + ], + "doc/man/man3/SSL_read.3" => [ + "doc/man3/SSL_read.pod" + ], + "doc/man/man3/SSL_read_early_data.3" => [ + "doc/man3/SSL_read_early_data.pod" + ], + "doc/man/man3/SSL_rstate_string.3" => [ + "doc/man3/SSL_rstate_string.pod" + ], + "doc/man/man3/SSL_session_reused.3" => [ + "doc/man3/SSL_session_reused.pod" + ], + "doc/man/man3/SSL_set1_host.3" => [ + "doc/man3/SSL_set1_host.pod" + ], + "doc/man/man3/SSL_set1_initial_peer_addr.3" => [ + "doc/man3/SSL_set1_initial_peer_addr.pod" + ], + "doc/man/man3/SSL_set1_server_cert_type.3" => [ + "doc/man3/SSL_set1_server_cert_type.pod" + ], + "doc/man/man3/SSL_set_async_callback.3" => [ + "doc/man3/SSL_set_async_callback.pod" + ], + "doc/man/man3/SSL_set_bio.3" => [ + "doc/man3/SSL_set_bio.pod" + ], + "doc/man/man3/SSL_set_blocking_mode.3" => [ + "doc/man3/SSL_set_blocking_mode.pod" + ], + "doc/man/man3/SSL_set_connect_state.3" => [ + "doc/man3/SSL_set_connect_state.pod" + ], + "doc/man/man3/SSL_set_default_stream_mode.3" => [ + "doc/man3/SSL_set_default_stream_mode.pod" + ], + "doc/man/man3/SSL_set_fd.3" => [ + "doc/man3/SSL_set_fd.pod" + ], + "doc/man/man3/SSL_set_incoming_stream_policy.3" => [ + "doc/man3/SSL_set_incoming_stream_policy.pod" + ], + "doc/man/man3/SSL_set_quic_tls_cbs.3" => [ + "doc/man3/SSL_set_quic_tls_cbs.pod" + ], + "doc/man/man3/SSL_set_retry_verify.3" => [ + "doc/man3/SSL_set_retry_verify.pod" + ], + "doc/man/man3/SSL_set_session.3" => [ + "doc/man3/SSL_set_session.pod" + ], + "doc/man/man3/SSL_set_session_secret_cb.3" => [ + "doc/man3/SSL_set_session_secret_cb.pod" + ], + "doc/man/man3/SSL_set_shutdown.3" => [ + "doc/man3/SSL_set_shutdown.pod" + ], + "doc/man/man3/SSL_set_verify_result.3" => [ + "doc/man3/SSL_set_verify_result.pod" + ], + "doc/man/man3/SSL_shutdown.3" => [ + "doc/man3/SSL_shutdown.pod" + ], + "doc/man/man3/SSL_state_string.3" => [ + "doc/man3/SSL_state_string.pod" + ], + "doc/man/man3/SSL_stream_conclude.3" => [ + "doc/man3/SSL_stream_conclude.pod" + ], + "doc/man/man3/SSL_stream_reset.3" => [ + "doc/man3/SSL_stream_reset.pod" + ], + "doc/man/man3/SSL_want.3" => [ + "doc/man3/SSL_want.pod" + ], + "doc/man/man3/SSL_write.3" => [ + "doc/man3/SSL_write.pod" + ], + "doc/man/man3/TS_RESP_CTX_new.3" => [ + "doc/man3/TS_RESP_CTX_new.pod" + ], + "doc/man/man3/TS_VERIFY_CTX.3" => [ + "doc/man3/TS_VERIFY_CTX.pod" + ], + "doc/man/man3/UI_STRING.3" => [ + "doc/man3/UI_STRING.pod" + ], + "doc/man/man3/UI_UTIL_read_pw.3" => [ + "doc/man3/UI_UTIL_read_pw.pod" + ], + "doc/man/man3/UI_create_method.3" => [ + "doc/man3/UI_create_method.pod" + ], + "doc/man/man3/UI_new.3" => [ + "doc/man3/UI_new.pod" + ], + "doc/man/man3/X509V3_EXT_print.3" => [ + "doc/man3/X509V3_EXT_print.pod" + ], + "doc/man/man3/X509V3_get_d2i.3" => [ + "doc/man3/X509V3_get_d2i.pod" + ], + "doc/man/man3/X509V3_set_ctx.3" => [ + "doc/man3/X509V3_set_ctx.pod" + ], + "doc/man/man3/X509_ACERT_add1_attr.3" => [ + "doc/man3/X509_ACERT_add1_attr.pod" + ], + "doc/man/man3/X509_ACERT_add_attr_nconf.3" => [ + "doc/man3/X509_ACERT_add_attr_nconf.pod" + ], + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3" => [ + "doc/man3/X509_ACERT_get0_holder_baseCertId.pod" + ], + "doc/man/man3/X509_ACERT_get_attr.3" => [ + "doc/man3/X509_ACERT_get_attr.pod" + ], + "doc/man/man3/X509_ACERT_print_ex.3" => [ + "doc/man3/X509_ACERT_print_ex.pod" + ], + "doc/man/man3/X509_ALGOR_dup.3" => [ + "doc/man3/X509_ALGOR_dup.pod" + ], + "doc/man/man3/X509_ATTRIBUTE.3" => [ + "doc/man3/X509_ATTRIBUTE.pod" + ], + "doc/man/man3/X509_CRL_get0_by_serial.3" => [ + "doc/man3/X509_CRL_get0_by_serial.pod" + ], + "doc/man/man3/X509_EXTENSION_set_object.3" => [ + "doc/man3/X509_EXTENSION_set_object.pod" + ], + "doc/man/man3/X509_LOOKUP.3" => [ + "doc/man3/X509_LOOKUP.pod" + ], + "doc/man/man3/X509_LOOKUP_hash_dir.3" => [ + "doc/man3/X509_LOOKUP_hash_dir.pod" + ], + "doc/man/man3/X509_LOOKUP_meth_new.3" => [ + "doc/man3/X509_LOOKUP_meth_new.pod" + ], + "doc/man/man3/X509_NAME_ENTRY_get_object.3" => [ + "doc/man3/X509_NAME_ENTRY_get_object.pod" + ], + "doc/man/man3/X509_NAME_add_entry_by_txt.3" => [ + "doc/man3/X509_NAME_add_entry_by_txt.pod" + ], + "doc/man/man3/X509_NAME_get0_der.3" => [ + "doc/man3/X509_NAME_get0_der.pod" + ], + "doc/man/man3/X509_NAME_get_index_by_NID.3" => [ + "doc/man3/X509_NAME_get_index_by_NID.pod" + ], + "doc/man/man3/X509_NAME_print_ex.3" => [ + "doc/man3/X509_NAME_print_ex.pod" + ], + "doc/man/man3/X509_PUBKEY_new.3" => [ + "doc/man3/X509_PUBKEY_new.pod" + ], + "doc/man/man3/X509_REQ_get_attr.3" => [ + "doc/man3/X509_REQ_get_attr.pod" + ], + "doc/man/man3/X509_REQ_get_extensions.3" => [ + "doc/man3/X509_REQ_get_extensions.pod" + ], + "doc/man/man3/X509_SIG_get0.3" => [ + "doc/man3/X509_SIG_get0.pod" + ], + "doc/man/man3/X509_STORE_CTX_get_by_subject.3" => [ + "doc/man3/X509_STORE_CTX_get_by_subject.pod" + ], + "doc/man/man3/X509_STORE_CTX_get_error.3" => [ + "doc/man3/X509_STORE_CTX_get_error.pod" + ], + "doc/man/man3/X509_STORE_CTX_new.3" => [ + "doc/man3/X509_STORE_CTX_new.pod" + ], + "doc/man/man3/X509_STORE_CTX_set_verify_cb.3" => [ + "doc/man3/X509_STORE_CTX_set_verify_cb.pod" + ], + "doc/man/man3/X509_STORE_add_cert.3" => [ + "doc/man3/X509_STORE_add_cert.pod" + ], + "doc/man/man3/X509_STORE_get0_param.3" => [ + "doc/man3/X509_STORE_get0_param.pod" + ], + "doc/man/man3/X509_STORE_new.3" => [ + "doc/man3/X509_STORE_new.pod" + ], + "doc/man/man3/X509_STORE_set_verify_cb_func.3" => [ + "doc/man3/X509_STORE_set_verify_cb_func.pod" + ], + "doc/man/man3/X509_VERIFY_PARAM_set_flags.3" => [ + "doc/man3/X509_VERIFY_PARAM_set_flags.pod" + ], + "doc/man/man3/X509_add_cert.3" => [ + "doc/man3/X509_add_cert.pod" + ], + "doc/man/man3/X509_check_ca.3" => [ + "doc/man3/X509_check_ca.pod" + ], + "doc/man/man3/X509_check_host.3" => [ + "doc/man3/X509_check_host.pod" + ], + "doc/man/man3/X509_check_issued.3" => [ + "doc/man3/X509_check_issued.pod" + ], + "doc/man/man3/X509_check_private_key.3" => [ + "doc/man3/X509_check_private_key.pod" + ], + "doc/man/man3/X509_check_purpose.3" => [ + "doc/man3/X509_check_purpose.pod" + ], + "doc/man/man3/X509_cmp.3" => [ + "doc/man3/X509_cmp.pod" + ], + "doc/man/man3/X509_cmp_time.3" => [ + "doc/man3/X509_cmp_time.pod" + ], + "doc/man/man3/X509_digest.3" => [ + "doc/man3/X509_digest.pod" + ], + "doc/man/man3/X509_dup.3" => [ + "doc/man3/X509_dup.pod" + ], + "doc/man/man3/X509_get0_distinguishing_id.3" => [ + "doc/man3/X509_get0_distinguishing_id.pod" + ], + "doc/man/man3/X509_get0_notBefore.3" => [ + "doc/man3/X509_get0_notBefore.pod" + ], + "doc/man/man3/X509_get0_signature.3" => [ + "doc/man3/X509_get0_signature.pod" + ], + "doc/man/man3/X509_get0_uids.3" => [ + "doc/man3/X509_get0_uids.pod" + ], + "doc/man/man3/X509_get_default_cert_file.3" => [ + "doc/man3/X509_get_default_cert_file.pod" + ], + "doc/man/man3/X509_get_extension_flags.3" => [ + "doc/man3/X509_get_extension_flags.pod" + ], + "doc/man/man3/X509_get_pubkey.3" => [ + "doc/man3/X509_get_pubkey.pod" + ], + "doc/man/man3/X509_get_serialNumber.3" => [ + "doc/man3/X509_get_serialNumber.pod" + ], + "doc/man/man3/X509_get_subject_name.3" => [ + "doc/man3/X509_get_subject_name.pod" + ], + "doc/man/man3/X509_get_version.3" => [ + "doc/man3/X509_get_version.pod" + ], + "doc/man/man3/X509_load_http.3" => [ + "doc/man3/X509_load_http.pod" + ], + "doc/man/man3/X509_new.3" => [ + "doc/man3/X509_new.pod" + ], + "doc/man/man3/X509_sign.3" => [ + "doc/man3/X509_sign.pod" + ], + "doc/man/man3/X509_verify.3" => [ + "doc/man3/X509_verify.pod" + ], + "doc/man/man3/X509_verify_cert.3" => [ + "doc/man3/X509_verify_cert.pod" + ], + "doc/man/man3/X509v3_get_ext_by_NID.3" => [ + "doc/man3/X509v3_get_ext_by_NID.pod" + ], + "doc/man/man3/b2i_PVK_bio_ex.3" => [ + "doc/man3/b2i_PVK_bio_ex.pod" + ], + "doc/man/man3/d2i_PKCS8PrivateKey_bio.3" => [ + "doc/man3/d2i_PKCS8PrivateKey_bio.pod" + ], + "doc/man/man3/d2i_PrivateKey.3" => [ + "doc/man3/d2i_PrivateKey.pod" + ], + "doc/man/man3/d2i_RSAPrivateKey.3" => [ + "doc/man3/d2i_RSAPrivateKey.pod" + ], + "doc/man/man3/d2i_SSL_SESSION.3" => [ + "doc/man3/d2i_SSL_SESSION.pod" + ], + "doc/man/man3/d2i_X509.3" => [ + "doc/man3/d2i_X509.pod" + ], + "doc/man/man3/i2d_CMS_bio_stream.3" => [ + "doc/man3/i2d_CMS_bio_stream.pod" + ], + "doc/man/man3/i2d_PKCS7_bio_stream.3" => [ + "doc/man3/i2d_PKCS7_bio_stream.pod" + ], + "doc/man/man3/i2d_re_X509_tbs.3" => [ + "doc/man3/i2d_re_X509_tbs.pod" + ], + "doc/man/man3/o2i_SCT_LIST.3" => [ + "doc/man3/o2i_SCT_LIST.pod" + ], + "doc/man/man3/s2i_ASN1_IA5STRING.3" => [ + "doc/man3/s2i_ASN1_IA5STRING.pod" + ], + "doc/man/man5/config.5" => [ + "doc/man5/config.pod" + ], + "doc/man/man5/fips_config.5" => [ + "doc/man5/fips_config.pod" + ], + "doc/man/man5/x509v3_config.5" => [ + "doc/man5/x509v3_config.pod" + ], + "doc/man/man7/EVP_ASYM_CIPHER-RSA.7" => [ + "doc/man7/EVP_ASYM_CIPHER-RSA.pod" + ], + "doc/man/man7/EVP_ASYM_CIPHER-SM2.7" => [ + "doc/man7/EVP_ASYM_CIPHER-SM2.pod" + ], + "doc/man/man7/EVP_CIPHER-AES.7" => [ + "doc/man7/EVP_CIPHER-AES.pod" + ], + "doc/man/man7/EVP_CIPHER-ARIA.7" => [ + "doc/man7/EVP_CIPHER-ARIA.pod" + ], + "doc/man/man7/EVP_CIPHER-BLOWFISH.7" => [ + "doc/man7/EVP_CIPHER-BLOWFISH.pod" + ], + "doc/man/man7/EVP_CIPHER-CAMELLIA.7" => [ + "doc/man7/EVP_CIPHER-CAMELLIA.pod" + ], + "doc/man/man7/EVP_CIPHER-CAST.7" => [ + "doc/man7/EVP_CIPHER-CAST.pod" + ], + "doc/man/man7/EVP_CIPHER-CHACHA.7" => [ + "doc/man7/EVP_CIPHER-CHACHA.pod" + ], + "doc/man/man7/EVP_CIPHER-DES.7" => [ + "doc/man7/EVP_CIPHER-DES.pod" + ], + "doc/man/man7/EVP_CIPHER-IDEA.7" => [ + "doc/man7/EVP_CIPHER-IDEA.pod" + ], + "doc/man/man7/EVP_CIPHER-NULL.7" => [ + "doc/man7/EVP_CIPHER-NULL.pod" + ], + "doc/man/man7/EVP_CIPHER-RC2.7" => [ + "doc/man7/EVP_CIPHER-RC2.pod" + ], + "doc/man/man7/EVP_CIPHER-RC4.7" => [ + "doc/man7/EVP_CIPHER-RC4.pod" + ], + "doc/man/man7/EVP_CIPHER-RC5.7" => [ + "doc/man7/EVP_CIPHER-RC5.pod" + ], + "doc/man/man7/EVP_CIPHER-SEED.7" => [ + "doc/man7/EVP_CIPHER-SEED.pod" + ], + "doc/man/man7/EVP_CIPHER-SM4.7" => [ + "doc/man7/EVP_CIPHER-SM4.pod" + ], + "doc/man/man7/EVP_KDF-ARGON2.7" => [ + "doc/man7/EVP_KDF-ARGON2.pod" + ], + "doc/man/man7/EVP_KDF-HKDF.7" => [ + "doc/man7/EVP_KDF-HKDF.pod" + ], + "doc/man/man7/EVP_KDF-HMAC-DRBG.7" => [ + "doc/man7/EVP_KDF-HMAC-DRBG.pod" + ], + "doc/man/man7/EVP_KDF-KB.7" => [ + "doc/man7/EVP_KDF-KB.pod" + ], + "doc/man/man7/EVP_KDF-KRB5KDF.7" => [ + "doc/man7/EVP_KDF-KRB5KDF.pod" + ], + "doc/man/man7/EVP_KDF-PBKDF1.7" => [ + "doc/man7/EVP_KDF-PBKDF1.pod" + ], + "doc/man/man7/EVP_KDF-PBKDF2.7" => [ + "doc/man7/EVP_KDF-PBKDF2.pod" + ], + "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ + "doc/man7/EVP_KDF-PKCS12KDF.pod" + ], + "doc/man/man7/EVP_KDF-PVKKDF.7" => [ + "doc/man7/EVP_KDF-PVKKDF.pod" + ], + "doc/man/man7/EVP_KDF-SCRYPT.7" => [ + "doc/man7/EVP_KDF-SCRYPT.pod" + ], + "doc/man/man7/EVP_KDF-SS.7" => [ + "doc/man7/EVP_KDF-SS.pod" + ], + "doc/man/man7/EVP_KDF-SSHKDF.7" => [ + "doc/man7/EVP_KDF-SSHKDF.pod" + ], + "doc/man/man7/EVP_KDF-TLS13_KDF.7" => [ + "doc/man7/EVP_KDF-TLS13_KDF.pod" + ], + "doc/man/man7/EVP_KDF-TLS1_PRF.7" => [ + "doc/man7/EVP_KDF-TLS1_PRF.pod" + ], + "doc/man/man7/EVP_KDF-X942-ASN1.7" => [ + "doc/man7/EVP_KDF-X942-ASN1.pod" + ], + "doc/man/man7/EVP_KDF-X942-CONCAT.7" => [ + "doc/man7/EVP_KDF-X942-CONCAT.pod" + ], + "doc/man/man7/EVP_KDF-X963.7" => [ + "doc/man7/EVP_KDF-X963.pod" + ], + "doc/man/man7/EVP_KEM-EC.7" => [ + "doc/man7/EVP_KEM-EC.pod" + ], + "doc/man/man7/EVP_KEM-ML-KEM.7" => [ + "doc/man7/EVP_KEM-ML-KEM.pod" + ], + "doc/man/man7/EVP_KEM-RSA.7" => [ + "doc/man7/EVP_KEM-RSA.pod" + ], + "doc/man/man7/EVP_KEM-X25519.7" => [ + "doc/man7/EVP_KEM-X25519.pod" + ], + "doc/man/man7/EVP_KEYEXCH-DH.7" => [ + "doc/man7/EVP_KEYEXCH-DH.pod" + ], + "doc/man/man7/EVP_KEYEXCH-ECDH.7" => [ + "doc/man7/EVP_KEYEXCH-ECDH.pod" + ], + "doc/man/man7/EVP_KEYEXCH-X25519.7" => [ + "doc/man7/EVP_KEYEXCH-X25519.pod" + ], + "doc/man/man7/EVP_MAC-BLAKE2.7" => [ + "doc/man7/EVP_MAC-BLAKE2.pod" + ], + "doc/man/man7/EVP_MAC-CMAC.7" => [ + "doc/man7/EVP_MAC-CMAC.pod" + ], + "doc/man/man7/EVP_MAC-GMAC.7" => [ + "doc/man7/EVP_MAC-GMAC.pod" + ], + "doc/man/man7/EVP_MAC-HMAC.7" => [ + "doc/man7/EVP_MAC-HMAC.pod" + ], + "doc/man/man7/EVP_MAC-KMAC.7" => [ + "doc/man7/EVP_MAC-KMAC.pod" + ], + "doc/man/man7/EVP_MAC-Poly1305.7" => [ + "doc/man7/EVP_MAC-Poly1305.pod" + ], + "doc/man/man7/EVP_MAC-Siphash.7" => [ + "doc/man7/EVP_MAC-Siphash.pod" + ], + "doc/man/man7/EVP_MD-BLAKE2.7" => [ + "doc/man7/EVP_MD-BLAKE2.pod" + ], + "doc/man/man7/EVP_MD-KECCAK.7" => [ + "doc/man7/EVP_MD-KECCAK.pod" + ], + "doc/man/man7/EVP_MD-MD2.7" => [ + "doc/man7/EVP_MD-MD2.pod" + ], + "doc/man/man7/EVP_MD-MD4.7" => [ + "doc/man7/EVP_MD-MD4.pod" + ], + "doc/man/man7/EVP_MD-MD5-SHA1.7" => [ + "doc/man7/EVP_MD-MD5-SHA1.pod" + ], + "doc/man/man7/EVP_MD-MD5.7" => [ + "doc/man7/EVP_MD-MD5.pod" + ], + "doc/man/man7/EVP_MD-MDC2.7" => [ + "doc/man7/EVP_MD-MDC2.pod" + ], + "doc/man/man7/EVP_MD-NULL.7" => [ + "doc/man7/EVP_MD-NULL.pod" + ], + "doc/man/man7/EVP_MD-RIPEMD160.7" => [ + "doc/man7/EVP_MD-RIPEMD160.pod" + ], + "doc/man/man7/EVP_MD-SHA1.7" => [ + "doc/man7/EVP_MD-SHA1.pod" + ], + "doc/man/man7/EVP_MD-SHA2.7" => [ + "doc/man7/EVP_MD-SHA2.pod" + ], + "doc/man/man7/EVP_MD-SHA3.7" => [ + "doc/man7/EVP_MD-SHA3.pod" + ], + "doc/man/man7/EVP_MD-SHAKE.7" => [ + "doc/man7/EVP_MD-SHAKE.pod" + ], + "doc/man/man7/EVP_MD-SM3.7" => [ + "doc/man7/EVP_MD-SM3.pod" + ], + "doc/man/man7/EVP_MD-WHIRLPOOL.7" => [ + "doc/man7/EVP_MD-WHIRLPOOL.pod" + ], + "doc/man/man7/EVP_MD-common.7" => [ + "doc/man7/EVP_MD-common.pod" + ], + "doc/man/man7/EVP_PKEY-DH.7" => [ + "doc/man7/EVP_PKEY-DH.pod" + ], + "doc/man/man7/EVP_PKEY-DSA.7" => [ + "doc/man7/EVP_PKEY-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-EC.7" => [ + "doc/man7/EVP_PKEY-EC.pod" + ], + "doc/man/man7/EVP_PKEY-FFC.7" => [ + "doc/man7/EVP_PKEY-FFC.pod" + ], + "doc/man/man7/EVP_PKEY-HMAC.7" => [ + "doc/man7/EVP_PKEY-HMAC.pod" + ], + "doc/man/man7/EVP_PKEY-ML-DSA.7" => [ + "doc/man7/EVP_PKEY-ML-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-ML-KEM.7" => [ + "doc/man7/EVP_PKEY-ML-KEM.pod" + ], + "doc/man/man7/EVP_PKEY-RSA.7" => [ + "doc/man7/EVP_PKEY-RSA.pod" + ], + "doc/man/man7/EVP_PKEY-SLH-DSA.7" => [ + "doc/man7/EVP_PKEY-SLH-DSA.pod" + ], + "doc/man/man7/EVP_PKEY-SM2.7" => [ + "doc/man7/EVP_PKEY-SM2.pod" + ], + "doc/man/man7/EVP_PKEY-X25519.7" => [ + "doc/man7/EVP_PKEY-X25519.pod" + ], + "doc/man/man7/EVP_RAND-CRNG-TEST.7" => [ + "doc/man7/EVP_RAND-CRNG-TEST.pod" + ], + "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ + "doc/man7/EVP_RAND-CTR-DRBG.pod" + ], + "doc/man/man7/EVP_RAND-HASH-DRBG.7" => [ + "doc/man7/EVP_RAND-HASH-DRBG.pod" + ], + "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ + "doc/man7/EVP_RAND-HMAC-DRBG.pod" + ], + "doc/man/man7/EVP_RAND-JITTER.7" => [ + "doc/man7/EVP_RAND-JITTER.pod" + ], + "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ + "doc/man7/EVP_RAND-SEED-SRC.pod" + ], + "doc/man/man7/EVP_RAND-TEST-RAND.7" => [ + "doc/man7/EVP_RAND-TEST-RAND.pod" + ], + "doc/man/man7/EVP_RAND.7" => [ + "doc/man7/EVP_RAND.pod" + ], + "doc/man/man7/EVP_SIGNATURE-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-DSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-ECDSA.7" => [ + "doc/man7/EVP_SIGNATURE-ECDSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-ED25519.7" => [ + "doc/man7/EVP_SIGNATURE-ED25519.pod" + ], + "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ + "doc/man7/EVP_SIGNATURE-HMAC.pod" + ], + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-ML-DSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ + "doc/man7/EVP_SIGNATURE-RSA.pod" + ], + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7" => [ + "doc/man7/EVP_SIGNATURE-SLH-DSA.pod" + ], + "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ + "doc/man7/OSSL_PROVIDER-FIPS.pod" + ], + "doc/man/man7/OSSL_PROVIDER-base.7" => [ + "doc/man7/OSSL_PROVIDER-base.pod" + ], + "doc/man/man7/OSSL_PROVIDER-default.7" => [ + "doc/man7/OSSL_PROVIDER-default.pod" + ], + "doc/man/man7/OSSL_PROVIDER-legacy.7" => [ + "doc/man7/OSSL_PROVIDER-legacy.pod" + ], + "doc/man/man7/OSSL_PROVIDER-null.7" => [ + "doc/man7/OSSL_PROVIDER-null.pod" + ], + "doc/man/man7/OSSL_STORE-winstore.7" => [ + "doc/man7/OSSL_STORE-winstore.pod" + ], + "doc/man/man7/RAND.7" => [ + "doc/man7/RAND.pod" + ], + "doc/man/man7/RSA-PSS.7" => [ + "doc/man7/RSA-PSS.pod" + ], + "doc/man/man7/X25519.7" => [ + "doc/man7/X25519.pod" + ], + "doc/man/man7/bio.7" => [ + "doc/man7/bio.pod" + ], + "doc/man/man7/ct.7" => [ + "doc/man7/ct.pod" + ], + "doc/man/man7/des_modes.7" => [ + "doc/man7/des_modes.pod" + ], + "doc/man/man7/evp.7" => [ + "doc/man7/evp.pod" + ], + "doc/man/man7/fips_module.7" => [ + "doc/man7/fips_module.pod" + ], + "doc/man/man7/life_cycle-cipher.7" => [ + "doc/man7/life_cycle-cipher.pod" + ], + "doc/man/man7/life_cycle-digest.7" => [ + "doc/man7/life_cycle-digest.pod" + ], + "doc/man/man7/life_cycle-kdf.7" => [ + "doc/man7/life_cycle-kdf.pod" + ], + "doc/man/man7/life_cycle-mac.7" => [ + "doc/man7/life_cycle-mac.pod" + ], + "doc/man/man7/life_cycle-pkey.7" => [ + "doc/man7/life_cycle-pkey.pod" + ], + "doc/man/man7/life_cycle-rand.7" => [ + "doc/man7/life_cycle-rand.pod" + ], + "doc/man/man7/openssl-core.h.7" => [ + "doc/man7/openssl-core.h.pod" + ], + "doc/man/man7/openssl-core_dispatch.h.7" => [ + "doc/man7/openssl-core_dispatch.h.pod" + ], + "doc/man/man7/openssl-core_names.h.7" => [ + "doc/man7/openssl-core_names.h.pod" + ], + "doc/man/man7/openssl-env.7" => [ + "doc/man7/openssl-env.pod" + ], + "doc/man/man7/openssl-glossary.7" => [ + "doc/man7/openssl-glossary.pod" + ], + "doc/man/man7/openssl-qlog.7" => [ + "doc/man7/openssl-qlog.pod" + ], + "doc/man/man7/openssl-quic-concurrency.7" => [ + "doc/man7/openssl-quic-concurrency.pod" + ], + "doc/man/man7/openssl-quic.7" => [ + "doc/man7/openssl-quic.pod" + ], + "doc/man/man7/openssl-threads.7" => [ + "doc/man7/openssl-threads.pod" + ], + "doc/man/man7/openssl_user_macros.7" => [ + "doc/man7/openssl_user_macros.pod" + ], + "doc/man/man7/ossl-guide-introduction.7" => [ + "doc/man7/ossl-guide-introduction.pod" + ], + "doc/man/man7/ossl-guide-libcrypto-introduction.7" => [ + "doc/man7/ossl-guide-libcrypto-introduction.pod" + ], + "doc/man/man7/ossl-guide-libraries-introduction.7" => [ + "doc/man7/ossl-guide-libraries-introduction.pod" + ], + "doc/man/man7/ossl-guide-libssl-introduction.7" => [ + "doc/man7/ossl-guide-libssl-introduction.pod" + ], + "doc/man/man7/ossl-guide-migration.7" => [ + "doc/man7/ossl-guide-migration.pod" + ], + "doc/man/man7/ossl-guide-quic-client-block.7" => [ + "doc/man7/ossl-guide-quic-client-block.pod" + ], + "doc/man/man7/ossl-guide-quic-client-non-block.7" => [ + "doc/man7/ossl-guide-quic-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-quic-introduction.7" => [ + "doc/man7/ossl-guide-quic-introduction.pod" + ], + "doc/man/man7/ossl-guide-quic-multi-stream.7" => [ + "doc/man7/ossl-guide-quic-multi-stream.pod" + ], + "doc/man/man7/ossl-guide-quic-server-block.7" => [ + "doc/man7/ossl-guide-quic-server-block.pod" + ], + "doc/man/man7/ossl-guide-quic-server-non-block.7" => [ + "doc/man7/ossl-guide-quic-server-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-block.7" => [ + "doc/man7/ossl-guide-tls-client-block.pod" + ], + "doc/man/man7/ossl-guide-tls-client-non-block.7" => [ + "doc/man7/ossl-guide-tls-client-non-block.pod" + ], + "doc/man/man7/ossl-guide-tls-introduction.7" => [ + "doc/man7/ossl-guide-tls-introduction.pod" + ], + "doc/man/man7/ossl-guide-tls-server-block.7" => [ + "doc/man7/ossl-guide-tls-server-block.pod" + ], + "doc/man/man7/ossl_store-file.7" => [ + "doc/man7/ossl_store-file.pod" + ], + "doc/man/man7/ossl_store.7" => [ + "doc/man7/ossl_store.pod" + ], + "doc/man/man7/passphrase-encoding.7" => [ + "doc/man7/passphrase-encoding.pod" + ], + "doc/man/man7/property.7" => [ + "doc/man7/property.pod" + ], + "doc/man/man7/provider-asym_cipher.7" => [ + "doc/man7/provider-asym_cipher.pod" + ], + "doc/man/man7/provider-base.7" => [ + "doc/man7/provider-base.pod" + ], + "doc/man/man7/provider-cipher.7" => [ + "doc/man7/provider-cipher.pod" + ], + "doc/man/man7/provider-decoder.7" => [ + "doc/man7/provider-decoder.pod" + ], + "doc/man/man7/provider-digest.7" => [ + "doc/man7/provider-digest.pod" + ], + "doc/man/man7/provider-encoder.7" => [ + "doc/man7/provider-encoder.pod" + ], + "doc/man/man7/provider-kdf.7" => [ + "doc/man7/provider-kdf.pod" + ], + "doc/man/man7/provider-kem.7" => [ + "doc/man7/provider-kem.pod" + ], + "doc/man/man7/provider-keyexch.7" => [ + "doc/man7/provider-keyexch.pod" + ], + "doc/man/man7/provider-keymgmt.7" => [ + "doc/man7/provider-keymgmt.pod" + ], + "doc/man/man7/provider-mac.7" => [ + "doc/man7/provider-mac.pod" + ], + "doc/man/man7/provider-object.7" => [ + "doc/man7/provider-object.pod" + ], + "doc/man/man7/provider-rand.7" => [ + "doc/man7/provider-rand.pod" + ], + "doc/man/man7/provider-signature.7" => [ + "doc/man7/provider-signature.pod" + ], + "doc/man/man7/provider-skeymgmt.7" => [ + "doc/man7/provider-skeymgmt.pod" + ], + "doc/man/man7/provider-storemgmt.7" => [ + "doc/man7/provider-storemgmt.pod" + ], + "doc/man/man7/provider.7" => [ + "doc/man7/provider.pod" + ], + "doc/man/man7/proxy-certificates.7" => [ + "doc/man7/proxy-certificates.pod" + ], + "doc/man/man7/x509.7" => [ + "doc/man7/x509.pod" + ], + "doc/man1/openssl-asn1parse.pod" => [ + "doc/man1/openssl-asn1parse.pod.in" + ], + "doc/man1/openssl-ca.pod" => [ + "doc/man1/openssl-ca.pod.in" + ], + "doc/man1/openssl-ciphers.pod" => [ + "doc/man1/openssl-ciphers.pod.in" + ], + "doc/man1/openssl-cmds.pod" => [ + "doc/man1/openssl-cmds.pod.in" + ], + "doc/man1/openssl-cmp.pod" => [ + "doc/man1/openssl-cmp.pod.in" + ], + "doc/man1/openssl-cms.pod" => [ + "doc/man1/openssl-cms.pod.in" + ], + "doc/man1/openssl-crl.pod" => [ + "doc/man1/openssl-crl.pod.in" + ], + "doc/man1/openssl-crl2pkcs7.pod" => [ + "doc/man1/openssl-crl2pkcs7.pod.in" + ], + "doc/man1/openssl-dgst.pod" => [ + "doc/man1/openssl-dgst.pod.in" + ], + "doc/man1/openssl-dhparam.pod" => [ + "doc/man1/openssl-dhparam.pod.in" + ], + "doc/man1/openssl-dsa.pod" => [ + "doc/man1/openssl-dsa.pod.in" + ], + "doc/man1/openssl-dsaparam.pod" => [ + "doc/man1/openssl-dsaparam.pod.in" + ], + "doc/man1/openssl-ec.pod" => [ + "doc/man1/openssl-ec.pod.in" + ], + "doc/man1/openssl-ecparam.pod" => [ + "doc/man1/openssl-ecparam.pod.in" + ], + "doc/man1/openssl-enc.pod" => [ + "doc/man1/openssl-enc.pod.in" + ], + "doc/man1/openssl-engine.pod" => [ + "doc/man1/openssl-engine.pod.in" + ], + "doc/man1/openssl-errstr.pod" => [ + "doc/man1/openssl-errstr.pod.in" + ], + "doc/man1/openssl-fipsinstall.pod" => [ + "doc/man1/openssl-fipsinstall.pod.in" + ], + "doc/man1/openssl-gendsa.pod" => [ + "doc/man1/openssl-gendsa.pod.in" + ], + "doc/man1/openssl-genpkey.pod" => [ + "doc/man1/openssl-genpkey.pod.in" + ], + "doc/man1/openssl-genrsa.pod" => [ + "doc/man1/openssl-genrsa.pod.in" + ], + "doc/man1/openssl-info.pod" => [ + "doc/man1/openssl-info.pod.in" + ], + "doc/man1/openssl-kdf.pod" => [ + "doc/man1/openssl-kdf.pod.in" + ], + "doc/man1/openssl-list.pod" => [ + "doc/man1/openssl-list.pod.in" + ], + "doc/man1/openssl-mac.pod" => [ + "doc/man1/openssl-mac.pod.in" + ], + "doc/man1/openssl-nseq.pod" => [ + "doc/man1/openssl-nseq.pod.in" + ], + "doc/man1/openssl-ocsp.pod" => [ + "doc/man1/openssl-ocsp.pod.in" + ], + "doc/man1/openssl-passwd.pod" => [ + "doc/man1/openssl-passwd.pod.in" + ], + "doc/man1/openssl-pkcs12.pod" => [ + "doc/man1/openssl-pkcs12.pod.in" + ], + "doc/man1/openssl-pkcs7.pod" => [ + "doc/man1/openssl-pkcs7.pod.in" + ], + "doc/man1/openssl-pkcs8.pod" => [ + "doc/man1/openssl-pkcs8.pod.in" + ], + "doc/man1/openssl-pkey.pod" => [ + "doc/man1/openssl-pkey.pod.in" + ], + "doc/man1/openssl-pkeyparam.pod" => [ + "doc/man1/openssl-pkeyparam.pod.in" + ], + "doc/man1/openssl-pkeyutl.pod" => [ + "doc/man1/openssl-pkeyutl.pod.in" + ], + "doc/man1/openssl-prime.pod" => [ + "doc/man1/openssl-prime.pod.in" + ], + "doc/man1/openssl-rand.pod" => [ + "doc/man1/openssl-rand.pod.in" + ], + "doc/man1/openssl-rehash.pod" => [ + "doc/man1/openssl-rehash.pod.in" + ], + "doc/man1/openssl-req.pod" => [ + "doc/man1/openssl-req.pod.in" + ], + "doc/man1/openssl-rsa.pod" => [ + "doc/man1/openssl-rsa.pod.in" + ], + "doc/man1/openssl-rsautl.pod" => [ + "doc/man1/openssl-rsautl.pod.in" + ], + "doc/man1/openssl-s_client.pod" => [ + "doc/man1/openssl-s_client.pod.in" + ], + "doc/man1/openssl-s_server.pod" => [ + "doc/man1/openssl-s_server.pod.in" + ], + "doc/man1/openssl-s_time.pod" => [ + "doc/man1/openssl-s_time.pod.in" + ], + "doc/man1/openssl-sess_id.pod" => [ + "doc/man1/openssl-sess_id.pod.in" + ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc/man1/openssl-skeyutl.pod.in" + ], + "doc/man1/openssl-smime.pod" => [ + "doc/man1/openssl-smime.pod.in" + ], + "doc/man1/openssl-speed.pod" => [ + "doc/man1/openssl-speed.pod.in" + ], + "doc/man1/openssl-spkac.pod" => [ + "doc/man1/openssl-spkac.pod.in" + ], + "doc/man1/openssl-srp.pod" => [ + "doc/man1/openssl-srp.pod.in" + ], + "doc/man1/openssl-storeutl.pod" => [ + "doc/man1/openssl-storeutl.pod.in" + ], + "doc/man1/openssl-ts.pod" => [ + "doc/man1/openssl-ts.pod.in" + ], + "doc/man1/openssl-verify.pod" => [ + "doc/man1/openssl-verify.pod.in" + ], + "doc/man1/openssl-version.pod" => [ + "doc/man1/openssl-version.pod.in" + ], + "doc/man1/openssl-x509.pod" => [ + "doc/man1/openssl-x509.pod.in" + ], + "doc/man7/openssl_user_macros.pod" => [ + "doc/man7/openssl_user_macros.pod.in" + ], + "engines/e_padlock-x86.S" => [ + "engines/asm/e_padlock-x86.pl" + ], + "engines/e_padlock-x86_64.s" => [ + "engines/asm/e_padlock-x86_64.pl" + ], + "exporters/OpenSSLConfig.cmake" => [ + "exporters/cmake/OpenSSLConfig.cmake.in" + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "exporters/cmake/OpenSSLConfigVersion.cmake.in" + ], + "exporters/libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "exporters/libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "exporters/openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], + "include/crypto/bn_conf.h" => [ + "include/crypto/bn_conf.h.in" + ], + "include/crypto/dso_conf.h" => [ + "include/crypto/dso_conf.h.in" + ], + "include/internal/param_names.h" => [ + "include/internal/param_names.h.in" + ], + "include/openssl/asn1.h" => [ + "include/openssl/asn1.h.in" + ], + "include/openssl/asn1t.h" => [ + "include/openssl/asn1t.h.in" + ], + "include/openssl/bio.h" => [ + "include/openssl/bio.h.in" + ], + "include/openssl/cmp.h" => [ + "include/openssl/cmp.h.in" + ], + "include/openssl/cms.h" => [ + "include/openssl/cms.h.in" + ], + "include/openssl/comp.h" => [ + "include/openssl/comp.h.in" + ], + "include/openssl/conf.h" => [ + "include/openssl/conf.h.in" + ], + "include/openssl/configuration.h" => [ + "include/openssl/configuration.h.in" + ], + "include/openssl/core_names.h" => [ + "include/openssl/core_names.h.in" + ], + "include/openssl/crmf.h" => [ + "include/openssl/crmf.h.in" + ], + "include/openssl/crypto.h" => [ + "include/openssl/crypto.h.in" + ], + "include/openssl/ct.h" => [ + "include/openssl/ct.h.in" + ], + "include/openssl/err.h" => [ + "include/openssl/err.h.in" + ], + "include/openssl/ess.h" => [ + "include/openssl/ess.h.in" + ], + "include/openssl/fipskey.h" => [ + "include/openssl/fipskey.h.in" + ], + "include/openssl/lhash.h" => [ + "include/openssl/lhash.h.in" + ], + "include/openssl/ocsp.h" => [ + "include/openssl/ocsp.h.in" + ], + "include/openssl/opensslv.h" => [ + "include/openssl/opensslv.h.in" + ], + "include/openssl/pkcs12.h" => [ + "include/openssl/pkcs12.h.in" + ], + "include/openssl/pkcs7.h" => [ + "include/openssl/pkcs7.h.in" + ], + "include/openssl/safestack.h" => [ + "include/openssl/safestack.h.in" + ], + "include/openssl/srp.h" => [ + "include/openssl/srp.h.in" + ], + "include/openssl/ssl.h" => [ + "include/openssl/ssl.h.in" + ], + "include/openssl/ui.h" => [ + "include/openssl/ui.h.in" + ], + "include/openssl/x509.h" => [ + "include/openssl/x509.h.in" + ], + "include/openssl/x509_acert.h" => [ + "include/openssl/x509_acert.h.in" + ], + "include/openssl/x509_vfy.h" => [ + "include/openssl/x509_vfy.h.in" + ], + "include/openssl/x509v3.h" => [ + "include/openssl/x509v3.h.in" + ], + "installdata.pm" => [ + "util/mkinstallvars.pl", + "\"PREFIX=\$(INSTALLTOP)\"", + "BINDIR=bin", + "\"LIBDIR=\$(LIBDIR)\"", + "\"libdir=\$(libdir)\"", + "INCLUDEDIR=include", + "APPLINKDIR=include/openssl", + "\"ENGINESDIR=\$(ENGINESDIR)\"", + "\"MODULESDIR=\$(MODULESDIR)\"", + "\"PKGCONFIGDIR=\$(PKGCONFIGDIR)\"", + "\"CMAKECONFIGDIR=\$(CMAKECONFIGDIR)\"", + "\"LDLIBS=\$(LIB_EX_LIBS)\"", + "\"VERSION=\$(VERSION)\"" + ], + "libcrypto.ld" => [ + "util/libcrypto.num", + "libcrypto" + ], + "libcrypto.pc" => [ + "exporters/pkg-config/libcrypto.pc.in" + ], + "libssl.ld" => [ + "util/libssl.num", + "libssl" + ], + "libssl.pc" => [ + "exporters/pkg-config/libssl.pc.in" + ], + "openssl.pc" => [ + "exporters/pkg-config/openssl.pc.in" + ], + "providers/common/der/der_digests_gen.c" => [ + "providers/common/der/der_digests_gen.c.in" + ], + "providers/common/der/der_dsa_gen.c" => [ + "providers/common/der/der_dsa_gen.c.in" + ], + "providers/common/der/der_ec_gen.c" => [ + "providers/common/der/der_ec_gen.c.in" + ], + "providers/common/der/der_ecx_gen.c" => [ + "providers/common/der/der_ecx_gen.c.in" + ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der/der_ml_dsa_gen.c.in" + ], + "providers/common/der/der_rsa_gen.c" => [ + "providers/common/der/der_rsa_gen.c.in" + ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der/der_slh_dsa_gen.c.in" + ], + "providers/common/der/der_sm2_gen.c" => [ + "providers/common/der/der_sm2_gen.c.in" + ], + "providers/common/der/der_wrap_gen.c" => [ + "providers/common/der/der_wrap_gen.c.in" + ], + "providers/common/include/prov/der_digests.h" => [ + "providers/common/include/prov/der_digests.h.in" + ], + "providers/common/include/prov/der_dsa.h" => [ + "providers/common/include/prov/der_dsa.h.in" + ], + "providers/common/include/prov/der_ec.h" => [ + "providers/common/include/prov/der_ec.h.in" + ], + "providers/common/include/prov/der_ecx.h" => [ + "providers/common/include/prov/der_ecx.h.in" + ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/include/prov/der_ml_dsa.h.in" + ], + "providers/common/include/prov/der_rsa.h" => [ + "providers/common/include/prov/der_rsa.h.in" + ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/include/prov/der_slh_dsa.h.in" + ], + "providers/common/include/prov/der_sm2.h" => [ + "providers/common/include/prov/der_sm2.h.in" + ], + "providers/common/include/prov/der_wrap.h" => [ + "providers/common/include/prov/der_wrap.h.in" + ], + "providers/fips.ld" => [ + "util/providers.num" + ], + "providers/fipsmodule.cnf" => [ + "util/mk-fipsmodule-cnf.pl", + "-module", + "\$(FIPSMODULE)", + "-section_name", + "fips_sect", + "-key", + "\$(FIPSKEY)" + ], + "providers/legacy.ld" => [ + "util/providers.num" + ] + }, + "htmldocs" => { + "man1" => [ + "doc/html/man1/CA.pl.html", + "doc/html/man1/openssl-asn1parse.html", + "doc/html/man1/openssl-ca.html", + "doc/html/man1/openssl-ciphers.html", + "doc/html/man1/openssl-cmds.html", + "doc/html/man1/openssl-cmp.html", + "doc/html/man1/openssl-cms.html", + "doc/html/man1/openssl-crl.html", + "doc/html/man1/openssl-crl2pkcs7.html", + "doc/html/man1/openssl-dgst.html", + "doc/html/man1/openssl-dhparam.html", + "doc/html/man1/openssl-dsa.html", + "doc/html/man1/openssl-dsaparam.html", + "doc/html/man1/openssl-ec.html", + "doc/html/man1/openssl-ecparam.html", + "doc/html/man1/openssl-enc.html", + "doc/html/man1/openssl-engine.html", + "doc/html/man1/openssl-errstr.html", + "doc/html/man1/openssl-fipsinstall.html", + "doc/html/man1/openssl-format-options.html", + "doc/html/man1/openssl-gendsa.html", + "doc/html/man1/openssl-genpkey.html", + "doc/html/man1/openssl-genrsa.html", + "doc/html/man1/openssl-info.html", + "doc/html/man1/openssl-kdf.html", + "doc/html/man1/openssl-list.html", + "doc/html/man1/openssl-mac.html", + "doc/html/man1/openssl-namedisplay-options.html", + "doc/html/man1/openssl-nseq.html", + "doc/html/man1/openssl-ocsp.html", + "doc/html/man1/openssl-passphrase-options.html", + "doc/html/man1/openssl-passwd.html", + "doc/html/man1/openssl-pkcs12.html", + "doc/html/man1/openssl-pkcs7.html", + "doc/html/man1/openssl-pkcs8.html", + "doc/html/man1/openssl-pkey.html", + "doc/html/man1/openssl-pkeyparam.html", + "doc/html/man1/openssl-pkeyutl.html", + "doc/html/man1/openssl-prime.html", + "doc/html/man1/openssl-rand.html", + "doc/html/man1/openssl-rehash.html", + "doc/html/man1/openssl-req.html", + "doc/html/man1/openssl-rsa.html", + "doc/html/man1/openssl-rsautl.html", + "doc/html/man1/openssl-s_client.html", + "doc/html/man1/openssl-s_server.html", + "doc/html/man1/openssl-s_time.html", + "doc/html/man1/openssl-sess_id.html", + "doc/html/man1/openssl-skeyutl.html", + "doc/html/man1/openssl-smime.html", + "doc/html/man1/openssl-speed.html", + "doc/html/man1/openssl-spkac.html", + "doc/html/man1/openssl-srp.html", + "doc/html/man1/openssl-storeutl.html", + "doc/html/man1/openssl-ts.html", + "doc/html/man1/openssl-verification-options.html", + "doc/html/man1/openssl-verify.html", + "doc/html/man1/openssl-version.html", + "doc/html/man1/openssl-x509.html", + "doc/html/man1/openssl.html", + "doc/html/man1/tsget.html" + ], + "man3" => [ + "doc/html/man3/ADMISSIONS.html", + "doc/html/man3/ASN1_EXTERN_FUNCS.html", + "doc/html/man3/ASN1_INTEGER_get_int64.html", + "doc/html/man3/ASN1_INTEGER_new.html", + "doc/html/man3/ASN1_ITEM_lookup.html", + "doc/html/man3/ASN1_OBJECT_new.html", + "doc/html/man3/ASN1_STRING_TABLE_add.html", + "doc/html/man3/ASN1_STRING_length.html", + "doc/html/man3/ASN1_STRING_new.html", + "doc/html/man3/ASN1_STRING_print_ex.html", + "doc/html/man3/ASN1_TIME_set.html", + "doc/html/man3/ASN1_TYPE_get.html", + "doc/html/man3/ASN1_aux_cb.html", + "doc/html/man3/ASN1_generate_nconf.html", + "doc/html/man3/ASN1_item_d2i_bio.html", + "doc/html/man3/ASN1_item_new.html", + "doc/html/man3/ASN1_item_sign.html", + "doc/html/man3/ASYNC_WAIT_CTX_new.html", + "doc/html/man3/ASYNC_start_job.html", + "doc/html/man3/BF_encrypt.html", + "doc/html/man3/BIO_ADDR.html", + "doc/html/man3/BIO_ADDRINFO.html", + "doc/html/man3/BIO_connect.html", + "doc/html/man3/BIO_ctrl.html", + "doc/html/man3/BIO_f_base64.html", + "doc/html/man3/BIO_f_buffer.html", + "doc/html/man3/BIO_f_cipher.html", + "doc/html/man3/BIO_f_md.html", + "doc/html/man3/BIO_f_null.html", + "doc/html/man3/BIO_f_prefix.html", + "doc/html/man3/BIO_f_readbuffer.html", + "doc/html/man3/BIO_f_ssl.html", + "doc/html/man3/BIO_find_type.html", + "doc/html/man3/BIO_get_data.html", + "doc/html/man3/BIO_get_ex_new_index.html", + "doc/html/man3/BIO_get_rpoll_descriptor.html", + "doc/html/man3/BIO_meth_new.html", + "doc/html/man3/BIO_new.html", + "doc/html/man3/BIO_new_CMS.html", + "doc/html/man3/BIO_parse_hostserv.html", + "doc/html/man3/BIO_printf.html", + "doc/html/man3/BIO_push.html", + "doc/html/man3/BIO_read.html", + "doc/html/man3/BIO_s_accept.html", + "doc/html/man3/BIO_s_bio.html", + "doc/html/man3/BIO_s_connect.html", + "doc/html/man3/BIO_s_core.html", + "doc/html/man3/BIO_s_datagram.html", + "doc/html/man3/BIO_s_dgram_pair.html", + "doc/html/man3/BIO_s_fd.html", + "doc/html/man3/BIO_s_file.html", + "doc/html/man3/BIO_s_mem.html", + "doc/html/man3/BIO_s_null.html", + "doc/html/man3/BIO_s_socket.html", + "doc/html/man3/BIO_sendmmsg.html", + "doc/html/man3/BIO_set_callback.html", + "doc/html/man3/BIO_set_flags.html", + "doc/html/man3/BIO_should_retry.html", + "doc/html/man3/BIO_socket_wait.html", + "doc/html/man3/BN_BLINDING_new.html", + "doc/html/man3/BN_CTX_new.html", + "doc/html/man3/BN_CTX_start.html", + "doc/html/man3/BN_add.html", + "doc/html/man3/BN_add_word.html", + "doc/html/man3/BN_bn2bin.html", + "doc/html/man3/BN_cmp.html", + "doc/html/man3/BN_copy.html", + "doc/html/man3/BN_generate_prime.html", + "doc/html/man3/BN_mod_exp_mont.html", + "doc/html/man3/BN_mod_inverse.html", + "doc/html/man3/BN_mod_mul_montgomery.html", + "doc/html/man3/BN_mod_mul_reciprocal.html", + "doc/html/man3/BN_new.html", + "doc/html/man3/BN_num_bytes.html", + "doc/html/man3/BN_rand.html", + "doc/html/man3/BN_security_bits.html", + "doc/html/man3/BN_set_bit.html", + "doc/html/man3/BN_swap.html", + "doc/html/man3/BN_zero.html", + "doc/html/man3/BUF_MEM_new.html", + "doc/html/man3/CMAC_CTX.html", + "doc/html/man3/CMS_EncryptedData_decrypt.html", + "doc/html/man3/CMS_EncryptedData_encrypt.html", + "doc/html/man3/CMS_EncryptedData_set1_key.html", + "doc/html/man3/CMS_EnvelopedData_create.html", + "doc/html/man3/CMS_add0_cert.html", + "doc/html/man3/CMS_add1_recipient_cert.html", + "doc/html/man3/CMS_add1_signer.html", + "doc/html/man3/CMS_compress.html", + "doc/html/man3/CMS_data_create.html", + "doc/html/man3/CMS_decrypt.html", + "doc/html/man3/CMS_digest_create.html", + "doc/html/man3/CMS_encrypt.html", + "doc/html/man3/CMS_final.html", + "doc/html/man3/CMS_get0_RecipientInfos.html", + "doc/html/man3/CMS_get0_SignerInfos.html", + "doc/html/man3/CMS_get0_type.html", + "doc/html/man3/CMS_get1_ReceiptRequest.html", + "doc/html/man3/CMS_sign.html", + "doc/html/man3/CMS_sign_receipt.html", + "doc/html/man3/CMS_signed_get_attr.html", + "doc/html/man3/CMS_uncompress.html", + "doc/html/man3/CMS_verify.html", + "doc/html/man3/CMS_verify_receipt.html", + "doc/html/man3/COMP_CTX_new.html", + "doc/html/man3/CONF_modules_free.html", + "doc/html/man3/CONF_modules_load_file.html", + "doc/html/man3/CRYPTO_THREAD_run_once.html", + "doc/html/man3/CRYPTO_get_ex_new_index.html", + "doc/html/man3/CRYPTO_memcmp.html", + "doc/html/man3/CTLOG_STORE_get0_log_by_id.html", + "doc/html/man3/CTLOG_STORE_new.html", + "doc/html/man3/CTLOG_new.html", + "doc/html/man3/CT_POLICY_EVAL_CTX_new.html", + "doc/html/man3/DEFINE_STACK_OF.html", + "doc/html/man3/DES_random_key.html", + "doc/html/man3/DH_generate_key.html", + "doc/html/man3/DH_generate_parameters.html", + "doc/html/man3/DH_get0_pqg.html", + "doc/html/man3/DH_get_1024_160.html", + "doc/html/man3/DH_meth_new.html", + "doc/html/man3/DH_new.html", + "doc/html/man3/DH_new_by_nid.html", + "doc/html/man3/DH_set_method.html", + "doc/html/man3/DH_size.html", + "doc/html/man3/DSA_SIG_new.html", + "doc/html/man3/DSA_do_sign.html", + "doc/html/man3/DSA_dup_DH.html", + "doc/html/man3/DSA_generate_key.html", + "doc/html/man3/DSA_generate_parameters.html", + "doc/html/man3/DSA_get0_pqg.html", + "doc/html/man3/DSA_meth_new.html", + "doc/html/man3/DSA_new.html", + "doc/html/man3/DSA_set_method.html", + "doc/html/man3/DSA_sign.html", + "doc/html/man3/DSA_size.html", + "doc/html/man3/DTLS_get_data_mtu.html", + "doc/html/man3/DTLS_set_timer_cb.html", + "doc/html/man3/DTLSv1_get_timeout.html", + "doc/html/man3/DTLSv1_handle_timeout.html", + "doc/html/man3/DTLSv1_listen.html", + "doc/html/man3/ECDSA_SIG_new.html", + "doc/html/man3/ECDSA_sign.html", + "doc/html/man3/ECPKParameters_print.html", + "doc/html/man3/EC_GFp_simple_method.html", + "doc/html/man3/EC_GROUP_copy.html", + "doc/html/man3/EC_GROUP_new.html", + "doc/html/man3/EC_KEY_get_enc_flags.html", + "doc/html/man3/EC_KEY_new.html", + "doc/html/man3/EC_POINT_add.html", + "doc/html/man3/EC_POINT_new.html", + "doc/html/man3/ENGINE_add.html", + "doc/html/man3/ERR_GET_LIB.html", + "doc/html/man3/ERR_clear_error.html", + "doc/html/man3/ERR_error_string.html", + "doc/html/man3/ERR_get_error.html", + "doc/html/man3/ERR_load_crypto_strings.html", + "doc/html/man3/ERR_load_strings.html", + "doc/html/man3/ERR_new.html", + "doc/html/man3/ERR_print_errors.html", + "doc/html/man3/ERR_put_error.html", + "doc/html/man3/ERR_remove_state.html", + "doc/html/man3/ERR_set_mark.html", + "doc/html/man3/EVP_ASYM_CIPHER_free.html", + "doc/html/man3/EVP_BytesToKey.html", + "doc/html/man3/EVP_CIPHER_CTX_get_app_data.html", + "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html", + "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html", + "doc/html/man3/EVP_CIPHER_meth_new.html", + "doc/html/man3/EVP_DigestInit.html", + "doc/html/man3/EVP_DigestSignInit.html", + "doc/html/man3/EVP_DigestVerifyInit.html", + "doc/html/man3/EVP_EncodeInit.html", + "doc/html/man3/EVP_EncryptInit.html", + "doc/html/man3/EVP_KDF.html", + "doc/html/man3/EVP_KEM_free.html", + "doc/html/man3/EVP_KEYEXCH_free.html", + "doc/html/man3/EVP_KEYMGMT.html", + "doc/html/man3/EVP_MAC.html", + "doc/html/man3/EVP_MD_meth_new.html", + "doc/html/man3/EVP_OpenInit.html", + "doc/html/man3/EVP_PBE_CipherInit.html", + "doc/html/man3/EVP_PKEY2PKCS8.html", + "doc/html/man3/EVP_PKEY_ASN1_METHOD.html", + "doc/html/man3/EVP_PKEY_CTX_ctrl.html", + "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", + "doc/html/man3/EVP_PKEY_CTX_get0_pkey.html", + "doc/html/man3/EVP_PKEY_CTX_get_algor.html", + "doc/html/man3/EVP_PKEY_CTX_new.html", + "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", + "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", + "doc/html/man3/EVP_PKEY_CTX_set_params.html", + "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html", + "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html", + "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html", + "doc/html/man3/EVP_PKEY_asn1_get_count.html", + "doc/html/man3/EVP_PKEY_check.html", + "doc/html/man3/EVP_PKEY_copy_parameters.html", + "doc/html/man3/EVP_PKEY_decapsulate.html", + "doc/html/man3/EVP_PKEY_decrypt.html", + "doc/html/man3/EVP_PKEY_derive.html", + "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html", + "doc/html/man3/EVP_PKEY_encapsulate.html", + "doc/html/man3/EVP_PKEY_encrypt.html", + "doc/html/man3/EVP_PKEY_fromdata.html", + "doc/html/man3/EVP_PKEY_get_attr.html", + "doc/html/man3/EVP_PKEY_get_default_digest_nid.html", + "doc/html/man3/EVP_PKEY_get_field_type.html", + "doc/html/man3/EVP_PKEY_get_group_name.html", + "doc/html/man3/EVP_PKEY_get_size.html", + "doc/html/man3/EVP_PKEY_gettable_params.html", + "doc/html/man3/EVP_PKEY_is_a.html", + "doc/html/man3/EVP_PKEY_keygen.html", + "doc/html/man3/EVP_PKEY_meth_get_count.html", + "doc/html/man3/EVP_PKEY_meth_new.html", + "doc/html/man3/EVP_PKEY_new.html", + "doc/html/man3/EVP_PKEY_print_private.html", + "doc/html/man3/EVP_PKEY_set1_RSA.html", + "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html", + "doc/html/man3/EVP_PKEY_set_type.html", + "doc/html/man3/EVP_PKEY_settable_params.html", + "doc/html/man3/EVP_PKEY_sign.html", + "doc/html/man3/EVP_PKEY_todata.html", + "doc/html/man3/EVP_PKEY_verify.html", + "doc/html/man3/EVP_PKEY_verify_recover.html", + "doc/html/man3/EVP_RAND.html", + "doc/html/man3/EVP_SIGNATURE.html", + "doc/html/man3/EVP_SKEY.html", + "doc/html/man3/EVP_SKEYMGMT.html", + "doc/html/man3/EVP_SealInit.html", + "doc/html/man3/EVP_SignInit.html", + "doc/html/man3/EVP_VerifyInit.html", + "doc/html/man3/EVP_aes_128_gcm.html", + "doc/html/man3/EVP_aria_128_gcm.html", + "doc/html/man3/EVP_bf_cbc.html", + "doc/html/man3/EVP_blake2b512.html", + "doc/html/man3/EVP_camellia_128_ecb.html", + "doc/html/man3/EVP_cast5_cbc.html", + "doc/html/man3/EVP_chacha20.html", + "doc/html/man3/EVP_des_cbc.html", + "doc/html/man3/EVP_desx_cbc.html", + "doc/html/man3/EVP_idea_cbc.html", + "doc/html/man3/EVP_md2.html", + "doc/html/man3/EVP_md4.html", + "doc/html/man3/EVP_md5.html", + "doc/html/man3/EVP_mdc2.html", + "doc/html/man3/EVP_rc2_cbc.html", + "doc/html/man3/EVP_rc4.html", + "doc/html/man3/EVP_rc5_32_12_16_cbc.html", + "doc/html/man3/EVP_ripemd160.html", + "doc/html/man3/EVP_seed_cbc.html", + "doc/html/man3/EVP_set_default_properties.html", + "doc/html/man3/EVP_sha1.html", + "doc/html/man3/EVP_sha224.html", + "doc/html/man3/EVP_sha3_224.html", + "doc/html/man3/EVP_sm3.html", + "doc/html/man3/EVP_sm4_cbc.html", + "doc/html/man3/EVP_whirlpool.html", + "doc/html/man3/GENERAL_NAME.html", + "doc/html/man3/HMAC.html", + "doc/html/man3/MD5.html", + "doc/html/man3/MDC2_Init.html", + "doc/html/man3/NCONF_new_ex.html", + "doc/html/man3/OBJ_nid2obj.html", + "doc/html/man3/OCSP_REQUEST_new.html", + "doc/html/man3/OCSP_cert_to_id.html", + "doc/html/man3/OCSP_request_add1_nonce.html", + "doc/html/man3/OCSP_resp_find_status.html", + "doc/html/man3/OCSP_response_status.html", + "doc/html/man3/OCSP_sendreq_new.html", + "doc/html/man3/OPENSSL_Applink.html", + "doc/html/man3/OPENSSL_FILE.html", + "doc/html/man3/OPENSSL_LH_COMPFUNC.html", + "doc/html/man3/OPENSSL_LH_stats.html", + "doc/html/man3/OPENSSL_config.html", + "doc/html/man3/OPENSSL_fork_prepare.html", + "doc/html/man3/OPENSSL_gmtime.html", + "doc/html/man3/OPENSSL_hexchar2int.html", + "doc/html/man3/OPENSSL_ia32cap.html", + "doc/html/man3/OPENSSL_init_crypto.html", + "doc/html/man3/OPENSSL_init_ssl.html", + "doc/html/man3/OPENSSL_instrument_bus.html", + "doc/html/man3/OPENSSL_load_builtin_modules.html", + "doc/html/man3/OPENSSL_load_u16_le.html", + "doc/html/man3/OPENSSL_malloc.html", + "doc/html/man3/OPENSSL_ppccap.html", + "doc/html/man3/OPENSSL_riscvcap.html", + "doc/html/man3/OPENSSL_s390xcap.html", + "doc/html/man3/OPENSSL_secure_malloc.html", + "doc/html/man3/OPENSSL_strcasecmp.html", + "doc/html/man3/OSSL_ALGORITHM.html", + "doc/html/man3/OSSL_CALLBACK.html", + "doc/html/man3/OSSL_CMP_ATAV_set0.html", + "doc/html/man3/OSSL_CMP_CTX_new.html", + "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", + "doc/html/man3/OSSL_CMP_ITAV_new_caCerts.html", + "doc/html/man3/OSSL_CMP_ITAV_set0.html", + "doc/html/man3/OSSL_CMP_MSG_get0_header.html", + "doc/html/man3/OSSL_CMP_MSG_http_perform.html", + "doc/html/man3/OSSL_CMP_SRV_CTX_new.html", + "doc/html/man3/OSSL_CMP_STATUSINFO_new.html", + "doc/html/man3/OSSL_CMP_exec_certreq.html", + "doc/html/man3/OSSL_CMP_log_open.html", + "doc/html/man3/OSSL_CMP_validate_msg.html", + "doc/html/man3/OSSL_CORE_MAKE_FUNC.html", + "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html", + "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html", + "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html", + "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html", + "doc/html/man3/OSSL_CRMF_pbmp_new.html", + "doc/html/man3/OSSL_DECODER.html", + "doc/html/man3/OSSL_DECODER_CTX.html", + "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html", + "doc/html/man3/OSSL_DECODER_from_bio.html", + "doc/html/man3/OSSL_DISPATCH.html", + "doc/html/man3/OSSL_ENCODER.html", + "doc/html/man3/OSSL_ENCODER_CTX.html", + "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", + "doc/html/man3/OSSL_ENCODER_to_bio.html", + "doc/html/man3/OSSL_ERR_STATE_save.html", + "doc/html/man3/OSSL_ESS_check_signing_certs.html", + "doc/html/man3/OSSL_GENERAL_NAMES_print.html", + "doc/html/man3/OSSL_HPKE_CTX_new.html", + "doc/html/man3/OSSL_HTTP_REQ_CTX.html", + "doc/html/man3/OSSL_HTTP_parse_url.html", + "doc/html/man3/OSSL_HTTP_transfer.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX.html", + "doc/html/man3/OSSL_IETF_ATTR_SYNTAX_print.html", + "doc/html/man3/OSSL_INDICATOR_set_callback.html", + "doc/html/man3/OSSL_ITEM.html", + "doc/html/man3/OSSL_LIB_CTX.html", + "doc/html/man3/OSSL_LIB_CTX_set_conf_diagnostics.html", + "doc/html/man3/OSSL_PARAM.html", + "doc/html/man3/OSSL_PARAM_BLD.html", + "doc/html/man3/OSSL_PARAM_allocate_from_text.html", + "doc/html/man3/OSSL_PARAM_dup.html", + "doc/html/man3/OSSL_PARAM_int.html", + "doc/html/man3/OSSL_PARAM_print_to_bio.html", + "doc/html/man3/OSSL_PROVIDER.html", + "doc/html/man3/OSSL_QUIC_client_method.html", + "doc/html/man3/OSSL_SELF_TEST_new.html", + "doc/html/man3/OSSL_SELF_TEST_set_callback.html", + "doc/html/man3/OSSL_STORE_INFO.html", + "doc/html/man3/OSSL_STORE_LOADER.html", + "doc/html/man3/OSSL_STORE_SEARCH.html", + "doc/html/man3/OSSL_STORE_attach.html", + "doc/html/man3/OSSL_STORE_expect.html", + "doc/html/man3/OSSL_STORE_open.html", + "doc/html/man3/OSSL_sleep.html", + "doc/html/man3/OSSL_trace_enabled.html", + "doc/html/man3/OSSL_trace_get_category_num.html", + "doc/html/man3/OSSL_trace_set_channel.html", + "doc/html/man3/OpenSSL_add_all_algorithms.html", + "doc/html/man3/OpenSSL_version.html", + "doc/html/man3/PBMAC1_get1_pbkdf2_param.html", + "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", + "doc/html/man3/PEM_bytes_read_bio.html", + "doc/html/man3/PEM_read.html", + "doc/html/man3/PEM_read_CMS.html", + "doc/html/man3/PEM_read_bio_PrivateKey.html", + "doc/html/man3/PEM_read_bio_ex.html", + "doc/html/man3/PEM_write_bio_CMS_stream.html", + "doc/html/man3/PEM_write_bio_PKCS7_stream.html", + "doc/html/man3/PKCS12_PBE_keyivgen.html", + "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", + "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", + "doc/html/man3/PKCS12_SAFEBAG_set0_attrs.html", + "doc/html/man3/PKCS12_add1_attr_by_NID.html", + "doc/html/man3/PKCS12_add_CSPName_asc.html", + "doc/html/man3/PKCS12_add_cert.html", + "doc/html/man3/PKCS12_add_friendlyname_asc.html", + "doc/html/man3/PKCS12_add_localkeyid.html", + "doc/html/man3/PKCS12_add_safe.html", + "doc/html/man3/PKCS12_create.html", + "doc/html/man3/PKCS12_decrypt_skey.html", + "doc/html/man3/PKCS12_gen_mac.html", + "doc/html/man3/PKCS12_get_friendlyname.html", + "doc/html/man3/PKCS12_init.html", + "doc/html/man3/PKCS12_item_decrypt_d2i.html", + "doc/html/man3/PKCS12_key_gen_utf8_ex.html", + "doc/html/man3/PKCS12_newpass.html", + "doc/html/man3/PKCS12_pack_p7encdata.html", + "doc/html/man3/PKCS12_parse.html", + "doc/html/man3/PKCS5_PBE_keyivgen.html", + "doc/html/man3/PKCS5_PBKDF2_HMAC.html", + "doc/html/man3/PKCS7_decrypt.html", + "doc/html/man3/PKCS7_encrypt.html", + "doc/html/man3/PKCS7_get_octet_string.html", + "doc/html/man3/PKCS7_sign.html", + "doc/html/man3/PKCS7_sign_add_signer.html", + "doc/html/man3/PKCS7_type_is_other.html", + "doc/html/man3/PKCS7_verify.html", + "doc/html/man3/PKCS8_encrypt.html", + "doc/html/man3/PKCS8_pkey_add1_attr.html", + "doc/html/man3/RAND_add.html", + "doc/html/man3/RAND_bytes.html", + "doc/html/man3/RAND_cleanup.html", + "doc/html/man3/RAND_egd.html", + "doc/html/man3/RAND_get0_primary.html", + "doc/html/man3/RAND_load_file.html", + "doc/html/man3/RAND_set_DRBG_type.html", + "doc/html/man3/RAND_set_rand_method.html", + "doc/html/man3/RC4_set_key.html", + "doc/html/man3/RIPEMD160_Init.html", + "doc/html/man3/RSA_blinding_on.html", + "doc/html/man3/RSA_check_key.html", + "doc/html/man3/RSA_generate_key.html", + "doc/html/man3/RSA_get0_key.html", + "doc/html/man3/RSA_meth_new.html", + "doc/html/man3/RSA_new.html", + "doc/html/man3/RSA_padding_add_PKCS1_type_1.html", + "doc/html/man3/RSA_print.html", + "doc/html/man3/RSA_private_encrypt.html", + "doc/html/man3/RSA_public_encrypt.html", + "doc/html/man3/RSA_set_method.html", + "doc/html/man3/RSA_sign.html", + "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html", + "doc/html/man3/RSA_size.html", + "doc/html/man3/SCT_new.html", + "doc/html/man3/SCT_print.html", + "doc/html/man3/SCT_validate.html", + "doc/html/man3/SHA256_Init.html", + "doc/html/man3/SMIME_read_ASN1.html", + "doc/html/man3/SMIME_read_CMS.html", + "doc/html/man3/SMIME_read_PKCS7.html", + "doc/html/man3/SMIME_write_ASN1.html", + "doc/html/man3/SMIME_write_CMS.html", + "doc/html/man3/SMIME_write_PKCS7.html", + "doc/html/man3/SRP_Calc_B.html", + "doc/html/man3/SRP_VBASE_new.html", + "doc/html/man3/SRP_create_verifier.html", + "doc/html/man3/SRP_user_pwd_new.html", + "doc/html/man3/SSL_CIPHER_get_name.html", + "doc/html/man3/SSL_COMP_add_compression_method.html", + "doc/html/man3/SSL_CONF_CTX_new.html", + "doc/html/man3/SSL_CONF_CTX_set1_prefix.html", + "doc/html/man3/SSL_CONF_CTX_set_flags.html", + "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html", + "doc/html/man3/SSL_CONF_cmd.html", + "doc/html/man3/SSL_CONF_cmd_argv.html", + "doc/html/man3/SSL_CTX_add1_chain_cert.html", + "doc/html/man3/SSL_CTX_add_extra_chain_cert.html", + "doc/html/man3/SSL_CTX_add_session.html", + "doc/html/man3/SSL_CTX_config.html", + "doc/html/man3/SSL_CTX_ctrl.html", + "doc/html/man3/SSL_CTX_dane_enable.html", + "doc/html/man3/SSL_CTX_flush_sessions.html", + "doc/html/man3/SSL_CTX_free.html", + "doc/html/man3/SSL_CTX_get0_param.html", + "doc/html/man3/SSL_CTX_get_verify_mode.html", + "doc/html/man3/SSL_CTX_has_client_custom_ext.html", + "doc/html/man3/SSL_CTX_load_verify_locations.html", + "doc/html/man3/SSL_CTX_new.html", + "doc/html/man3/SSL_CTX_sess_number.html", + "doc/html/man3/SSL_CTX_sess_set_cache_size.html", + "doc/html/man3/SSL_CTX_sess_set_get_cb.html", + "doc/html/man3/SSL_CTX_sessions.html", + "doc/html/man3/SSL_CTX_set0_CA_list.html", + "doc/html/man3/SSL_CTX_set1_cert_comp_preference.html", + "doc/html/man3/SSL_CTX_set1_curves.html", + "doc/html/man3/SSL_CTX_set1_sigalgs.html", + "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", + "doc/html/man3/SSL_CTX_set_alpn_select_cb.html", + "doc/html/man3/SSL_CTX_set_cert_cb.html", + "doc/html/man3/SSL_CTX_set_cert_store.html", + "doc/html/man3/SSL_CTX_set_cert_verify_callback.html", + "doc/html/man3/SSL_CTX_set_cipher_list.html", + "doc/html/man3/SSL_CTX_set_client_cert_cb.html", + "doc/html/man3/SSL_CTX_set_client_hello_cb.html", + "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", + "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", + "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", + "doc/html/man3/SSL_CTX_set_domain_flags.html", + "doc/html/man3/SSL_CTX_set_generate_session_id.html", + "doc/html/man3/SSL_CTX_set_info_callback.html", + "doc/html/man3/SSL_CTX_set_keylog_callback.html", + "doc/html/man3/SSL_CTX_set_max_cert_list.html", + "doc/html/man3/SSL_CTX_set_min_proto_version.html", + "doc/html/man3/SSL_CTX_set_mode.html", + "doc/html/man3/SSL_CTX_set_msg_callback.html", + "doc/html/man3/SSL_CTX_set_new_pending_conn_cb.html", + "doc/html/man3/SSL_CTX_set_num_tickets.html", + "doc/html/man3/SSL_CTX_set_options.html", + "doc/html/man3/SSL_CTX_set_psk_client_callback.html", + "doc/html/man3/SSL_CTX_set_quiet_shutdown.html", + "doc/html/man3/SSL_CTX_set_read_ahead.html", + "doc/html/man3/SSL_CTX_set_record_padding_callback.html", + "doc/html/man3/SSL_CTX_set_security_level.html", + "doc/html/man3/SSL_CTX_set_session_cache_mode.html", + "doc/html/man3/SSL_CTX_set_session_id_context.html", + "doc/html/man3/SSL_CTX_set_session_ticket_cb.html", + "doc/html/man3/SSL_CTX_set_split_send_fragment.html", + "doc/html/man3/SSL_CTX_set_srp_password.html", + "doc/html/man3/SSL_CTX_set_ssl_version.html", + "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html", + "doc/html/man3/SSL_CTX_set_timeout.html", + "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html", + "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html", + "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html", + "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html", + "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html", + "doc/html/man3/SSL_CTX_set_tmp_ecdh.html", + "doc/html/man3/SSL_CTX_set_verify.html", + "doc/html/man3/SSL_CTX_use_certificate.html", + "doc/html/man3/SSL_CTX_use_psk_identity_hint.html", + "doc/html/man3/SSL_CTX_use_serverinfo.html", + "doc/html/man3/SSL_SESSION_free.html", + "doc/html/man3/SSL_SESSION_get0_cipher.html", + "doc/html/man3/SSL_SESSION_get0_hostname.html", + "doc/html/man3/SSL_SESSION_get0_id_context.html", + "doc/html/man3/SSL_SESSION_get0_peer.html", + "doc/html/man3/SSL_SESSION_get_compress_id.html", + "doc/html/man3/SSL_SESSION_get_protocol_version.html", + "doc/html/man3/SSL_SESSION_get_time.html", + "doc/html/man3/SSL_SESSION_has_ticket.html", + "doc/html/man3/SSL_SESSION_is_resumable.html", + "doc/html/man3/SSL_SESSION_print.html", + "doc/html/man3/SSL_SESSION_set1_id.html", + "doc/html/man3/SSL_accept.html", + "doc/html/man3/SSL_accept_stream.html", + "doc/html/man3/SSL_alert_type_string.html", + "doc/html/man3/SSL_alloc_buffers.html", + "doc/html/man3/SSL_check_chain.html", + "doc/html/man3/SSL_clear.html", + "doc/html/man3/SSL_connect.html", + "doc/html/man3/SSL_do_handshake.html", + "doc/html/man3/SSL_export_keying_material.html", + "doc/html/man3/SSL_extension_supported.html", + "doc/html/man3/SSL_free.html", + "doc/html/man3/SSL_get0_connection.html", + "doc/html/man3/SSL_get0_group_name.html", + "doc/html/man3/SSL_get0_peer_rpk.html", + "doc/html/man3/SSL_get0_peer_scts.html", + "doc/html/man3/SSL_get1_builtin_sigalgs.html", + "doc/html/man3/SSL_get_SSL_CTX.html", + "doc/html/man3/SSL_get_all_async_fds.html", + "doc/html/man3/SSL_get_certificate.html", + "doc/html/man3/SSL_get_ciphers.html", + "doc/html/man3/SSL_get_client_random.html", + "doc/html/man3/SSL_get_conn_close_info.html", + "doc/html/man3/SSL_get_current_cipher.html", + "doc/html/man3/SSL_get_default_timeout.html", + "doc/html/man3/SSL_get_error.html", + "doc/html/man3/SSL_get_event_timeout.html", + "doc/html/man3/SSL_get_extms_support.html", + "doc/html/man3/SSL_get_fd.html", + "doc/html/man3/SSL_get_handshake_rtt.html", + "doc/html/man3/SSL_get_peer_cert_chain.html", + "doc/html/man3/SSL_get_peer_certificate.html", + "doc/html/man3/SSL_get_peer_signature_nid.html", + "doc/html/man3/SSL_get_peer_tmp_key.html", + "doc/html/man3/SSL_get_psk_identity.html", + "doc/html/man3/SSL_get_rbio.html", + "doc/html/man3/SSL_get_rpoll_descriptor.html", + "doc/html/man3/SSL_get_session.html", + "doc/html/man3/SSL_get_shared_sigalgs.html", + "doc/html/man3/SSL_get_stream_id.html", + "doc/html/man3/SSL_get_stream_read_state.html", + "doc/html/man3/SSL_get_value_uint.html", + "doc/html/man3/SSL_get_verify_result.html", + "doc/html/man3/SSL_get_version.html", + "doc/html/man3/SSL_group_to_name.html", + "doc/html/man3/SSL_handle_events.html", + "doc/html/man3/SSL_in_init.html", + "doc/html/man3/SSL_inject_net_dgram.html", + "doc/html/man3/SSL_key_update.html", + "doc/html/man3/SSL_library_init.html", + "doc/html/man3/SSL_load_client_CA_file.html", + "doc/html/man3/SSL_new.html", + "doc/html/man3/SSL_new_domain.html", + "doc/html/man3/SSL_new_listener.html", + "doc/html/man3/SSL_new_stream.html", + "doc/html/man3/SSL_pending.html", + "doc/html/man3/SSL_poll.html", + "doc/html/man3/SSL_read.html", + "doc/html/man3/SSL_read_early_data.html", + "doc/html/man3/SSL_rstate_string.html", + "doc/html/man3/SSL_session_reused.html", + "doc/html/man3/SSL_set1_host.html", + "doc/html/man3/SSL_set1_initial_peer_addr.html", + "doc/html/man3/SSL_set1_server_cert_type.html", + "doc/html/man3/SSL_set_async_callback.html", + "doc/html/man3/SSL_set_bio.html", + "doc/html/man3/SSL_set_blocking_mode.html", + "doc/html/man3/SSL_set_connect_state.html", + "doc/html/man3/SSL_set_default_stream_mode.html", + "doc/html/man3/SSL_set_fd.html", + "doc/html/man3/SSL_set_incoming_stream_policy.html", + "doc/html/man3/SSL_set_quic_tls_cbs.html", + "doc/html/man3/SSL_set_retry_verify.html", + "doc/html/man3/SSL_set_session.html", + "doc/html/man3/SSL_set_session_secret_cb.html", + "doc/html/man3/SSL_set_shutdown.html", + "doc/html/man3/SSL_set_verify_result.html", + "doc/html/man3/SSL_shutdown.html", + "doc/html/man3/SSL_state_string.html", + "doc/html/man3/SSL_stream_conclude.html", + "doc/html/man3/SSL_stream_reset.html", + "doc/html/man3/SSL_want.html", + "doc/html/man3/SSL_write.html", + "doc/html/man3/TS_RESP_CTX_new.html", + "doc/html/man3/TS_VERIFY_CTX.html", + "doc/html/man3/UI_STRING.html", + "doc/html/man3/UI_UTIL_read_pw.html", + "doc/html/man3/UI_create_method.html", + "doc/html/man3/UI_new.html", + "doc/html/man3/X509V3_EXT_print.html", + "doc/html/man3/X509V3_get_d2i.html", + "doc/html/man3/X509V3_set_ctx.html", + "doc/html/man3/X509_ACERT_add1_attr.html", + "doc/html/man3/X509_ACERT_add_attr_nconf.html", + "doc/html/man3/X509_ACERT_get0_holder_baseCertId.html", + "doc/html/man3/X509_ACERT_get_attr.html", + "doc/html/man3/X509_ACERT_print_ex.html", + "doc/html/man3/X509_ALGOR_dup.html", + "doc/html/man3/X509_ATTRIBUTE.html", + "doc/html/man3/X509_CRL_get0_by_serial.html", + "doc/html/man3/X509_EXTENSION_set_object.html", + "doc/html/man3/X509_LOOKUP.html", + "doc/html/man3/X509_LOOKUP_hash_dir.html", + "doc/html/man3/X509_LOOKUP_meth_new.html", + "doc/html/man3/X509_NAME_ENTRY_get_object.html", + "doc/html/man3/X509_NAME_add_entry_by_txt.html", + "doc/html/man3/X509_NAME_get0_der.html", + "doc/html/man3/X509_NAME_get_index_by_NID.html", + "doc/html/man3/X509_NAME_print_ex.html", + "doc/html/man3/X509_PUBKEY_new.html", + "doc/html/man3/X509_REQ_get_attr.html", + "doc/html/man3/X509_REQ_get_extensions.html", + "doc/html/man3/X509_SIG_get0.html", + "doc/html/man3/X509_STORE_CTX_get_by_subject.html", + "doc/html/man3/X509_STORE_CTX_get_error.html", + "doc/html/man3/X509_STORE_CTX_new.html", + "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", + "doc/html/man3/X509_STORE_add_cert.html", + "doc/html/man3/X509_STORE_get0_param.html", + "doc/html/man3/X509_STORE_new.html", + "doc/html/man3/X509_STORE_set_verify_cb_func.html", + "doc/html/man3/X509_VERIFY_PARAM_set_flags.html", + "doc/html/man3/X509_add_cert.html", + "doc/html/man3/X509_check_ca.html", + "doc/html/man3/X509_check_host.html", + "doc/html/man3/X509_check_issued.html", + "doc/html/man3/X509_check_private_key.html", + "doc/html/man3/X509_check_purpose.html", + "doc/html/man3/X509_cmp.html", + "doc/html/man3/X509_cmp_time.html", + "doc/html/man3/X509_digest.html", + "doc/html/man3/X509_dup.html", + "doc/html/man3/X509_get0_distinguishing_id.html", + "doc/html/man3/X509_get0_notBefore.html", + "doc/html/man3/X509_get0_signature.html", + "doc/html/man3/X509_get0_uids.html", + "doc/html/man3/X509_get_default_cert_file.html", + "doc/html/man3/X509_get_extension_flags.html", + "doc/html/man3/X509_get_pubkey.html", + "doc/html/man3/X509_get_serialNumber.html", + "doc/html/man3/X509_get_subject_name.html", + "doc/html/man3/X509_get_version.html", + "doc/html/man3/X509_load_http.html", + "doc/html/man3/X509_new.html", + "doc/html/man3/X509_sign.html", + "doc/html/man3/X509_verify.html", + "doc/html/man3/X509_verify_cert.html", + "doc/html/man3/X509v3_get_ext_by_NID.html", + "doc/html/man3/b2i_PVK_bio_ex.html", + "doc/html/man3/d2i_PKCS8PrivateKey_bio.html", + "doc/html/man3/d2i_PrivateKey.html", + "doc/html/man3/d2i_RSAPrivateKey.html", + "doc/html/man3/d2i_SSL_SESSION.html", + "doc/html/man3/d2i_X509.html", + "doc/html/man3/i2d_CMS_bio_stream.html", + "doc/html/man3/i2d_PKCS7_bio_stream.html", + "doc/html/man3/i2d_re_X509_tbs.html", + "doc/html/man3/o2i_SCT_LIST.html", + "doc/html/man3/s2i_ASN1_IA5STRING.html" + ], + "man5" => [ + "doc/html/man5/config.html", + "doc/html/man5/fips_config.html", + "doc/html/man5/x509v3_config.html" + ], + "man7" => [ + "doc/html/man7/EVP_ASYM_CIPHER-RSA.html", + "doc/html/man7/EVP_ASYM_CIPHER-SM2.html", + "doc/html/man7/EVP_CIPHER-AES.html", + "doc/html/man7/EVP_CIPHER-ARIA.html", + "doc/html/man7/EVP_CIPHER-BLOWFISH.html", + "doc/html/man7/EVP_CIPHER-CAMELLIA.html", + "doc/html/man7/EVP_CIPHER-CAST.html", + "doc/html/man7/EVP_CIPHER-CHACHA.html", + "doc/html/man7/EVP_CIPHER-DES.html", + "doc/html/man7/EVP_CIPHER-IDEA.html", + "doc/html/man7/EVP_CIPHER-NULL.html", + "doc/html/man7/EVP_CIPHER-RC2.html", + "doc/html/man7/EVP_CIPHER-RC4.html", + "doc/html/man7/EVP_CIPHER-RC5.html", + "doc/html/man7/EVP_CIPHER-SEED.html", + "doc/html/man7/EVP_CIPHER-SM4.html", + "doc/html/man7/EVP_KDF-ARGON2.html", + "doc/html/man7/EVP_KDF-HKDF.html", + "doc/html/man7/EVP_KDF-HMAC-DRBG.html", + "doc/html/man7/EVP_KDF-KB.html", + "doc/html/man7/EVP_KDF-KRB5KDF.html", + "doc/html/man7/EVP_KDF-PBKDF1.html", + "doc/html/man7/EVP_KDF-PBKDF2.html", + "doc/html/man7/EVP_KDF-PKCS12KDF.html", + "doc/html/man7/EVP_KDF-PVKKDF.html", + "doc/html/man7/EVP_KDF-SCRYPT.html", + "doc/html/man7/EVP_KDF-SS.html", + "doc/html/man7/EVP_KDF-SSHKDF.html", + "doc/html/man7/EVP_KDF-TLS13_KDF.html", + "doc/html/man7/EVP_KDF-TLS1_PRF.html", + "doc/html/man7/EVP_KDF-X942-ASN1.html", + "doc/html/man7/EVP_KDF-X942-CONCAT.html", + "doc/html/man7/EVP_KDF-X963.html", + "doc/html/man7/EVP_KEM-EC.html", + "doc/html/man7/EVP_KEM-ML-KEM.html", + "doc/html/man7/EVP_KEM-RSA.html", + "doc/html/man7/EVP_KEM-X25519.html", + "doc/html/man7/EVP_KEYEXCH-DH.html", + "doc/html/man7/EVP_KEYEXCH-ECDH.html", + "doc/html/man7/EVP_KEYEXCH-X25519.html", + "doc/html/man7/EVP_MAC-BLAKE2.html", + "doc/html/man7/EVP_MAC-CMAC.html", + "doc/html/man7/EVP_MAC-GMAC.html", + "doc/html/man7/EVP_MAC-HMAC.html", + "doc/html/man7/EVP_MAC-KMAC.html", + "doc/html/man7/EVP_MAC-Poly1305.html", + "doc/html/man7/EVP_MAC-Siphash.html", + "doc/html/man7/EVP_MD-BLAKE2.html", + "doc/html/man7/EVP_MD-KECCAK.html", + "doc/html/man7/EVP_MD-MD2.html", + "doc/html/man7/EVP_MD-MD4.html", + "doc/html/man7/EVP_MD-MD5-SHA1.html", + "doc/html/man7/EVP_MD-MD5.html", + "doc/html/man7/EVP_MD-MDC2.html", + "doc/html/man7/EVP_MD-NULL.html", + "doc/html/man7/EVP_MD-RIPEMD160.html", + "doc/html/man7/EVP_MD-SHA1.html", + "doc/html/man7/EVP_MD-SHA2.html", + "doc/html/man7/EVP_MD-SHA3.html", + "doc/html/man7/EVP_MD-SHAKE.html", + "doc/html/man7/EVP_MD-SM3.html", + "doc/html/man7/EVP_MD-WHIRLPOOL.html", + "doc/html/man7/EVP_MD-common.html", + "doc/html/man7/EVP_PKEY-DH.html", + "doc/html/man7/EVP_PKEY-DSA.html", + "doc/html/man7/EVP_PKEY-EC.html", + "doc/html/man7/EVP_PKEY-FFC.html", + "doc/html/man7/EVP_PKEY-HMAC.html", + "doc/html/man7/EVP_PKEY-ML-DSA.html", + "doc/html/man7/EVP_PKEY-ML-KEM.html", + "doc/html/man7/EVP_PKEY-RSA.html", + "doc/html/man7/EVP_PKEY-SLH-DSA.html", + "doc/html/man7/EVP_PKEY-SM2.html", + "doc/html/man7/EVP_PKEY-X25519.html", + "doc/html/man7/EVP_RAND-CRNG-TEST.html", + "doc/html/man7/EVP_RAND-CTR-DRBG.html", + "doc/html/man7/EVP_RAND-HASH-DRBG.html", + "doc/html/man7/EVP_RAND-HMAC-DRBG.html", + "doc/html/man7/EVP_RAND-JITTER.html", + "doc/html/man7/EVP_RAND-SEED-SRC.html", + "doc/html/man7/EVP_RAND-TEST-RAND.html", + "doc/html/man7/EVP_RAND.html", + "doc/html/man7/EVP_SIGNATURE-DSA.html", + "doc/html/man7/EVP_SIGNATURE-ECDSA.html", + "doc/html/man7/EVP_SIGNATURE-ED25519.html", + "doc/html/man7/EVP_SIGNATURE-HMAC.html", + "doc/html/man7/EVP_SIGNATURE-ML-DSA.html", + "doc/html/man7/EVP_SIGNATURE-RSA.html", + "doc/html/man7/EVP_SIGNATURE-SLH-DSA.html", + "doc/html/man7/OSSL_PROVIDER-FIPS.html", + "doc/html/man7/OSSL_PROVIDER-base.html", + "doc/html/man7/OSSL_PROVIDER-default.html", + "doc/html/man7/OSSL_PROVIDER-legacy.html", + "doc/html/man7/OSSL_PROVIDER-null.html", + "doc/html/man7/OSSL_STORE-winstore.html", + "doc/html/man7/RAND.html", + "doc/html/man7/RSA-PSS.html", + "doc/html/man7/X25519.html", + "doc/html/man7/bio.html", + "doc/html/man7/ct.html", + "doc/html/man7/des_modes.html", + "doc/html/man7/evp.html", + "doc/html/man7/fips_module.html", + "doc/html/man7/life_cycle-cipher.html", + "doc/html/man7/life_cycle-digest.html", + "doc/html/man7/life_cycle-kdf.html", + "doc/html/man7/life_cycle-mac.html", + "doc/html/man7/life_cycle-pkey.html", + "doc/html/man7/life_cycle-rand.html", + "doc/html/man7/openssl-core.h.html", + "doc/html/man7/openssl-core_dispatch.h.html", + "doc/html/man7/openssl-core_names.h.html", + "doc/html/man7/openssl-env.html", + "doc/html/man7/openssl-glossary.html", + "doc/html/man7/openssl-qlog.html", + "doc/html/man7/openssl-quic-concurrency.html", + "doc/html/man7/openssl-quic.html", + "doc/html/man7/openssl-threads.html", + "doc/html/man7/openssl_user_macros.html", + "doc/html/man7/ossl-guide-introduction.html", + "doc/html/man7/ossl-guide-libcrypto-introduction.html", + "doc/html/man7/ossl-guide-libraries-introduction.html", + "doc/html/man7/ossl-guide-libssl-introduction.html", + "doc/html/man7/ossl-guide-migration.html", + "doc/html/man7/ossl-guide-quic-client-block.html", + "doc/html/man7/ossl-guide-quic-client-non-block.html", + "doc/html/man7/ossl-guide-quic-introduction.html", + "doc/html/man7/ossl-guide-quic-multi-stream.html", + "doc/html/man7/ossl-guide-quic-server-block.html", + "doc/html/man7/ossl-guide-quic-server-non-block.html", + "doc/html/man7/ossl-guide-tls-client-block.html", + "doc/html/man7/ossl-guide-tls-client-non-block.html", + "doc/html/man7/ossl-guide-tls-introduction.html", + "doc/html/man7/ossl-guide-tls-server-block.html", + "doc/html/man7/ossl_store-file.html", + "doc/html/man7/ossl_store.html", + "doc/html/man7/passphrase-encoding.html", + "doc/html/man7/property.html", + "doc/html/man7/provider-asym_cipher.html", + "doc/html/man7/provider-base.html", + "doc/html/man7/provider-cipher.html", + "doc/html/man7/provider-decoder.html", + "doc/html/man7/provider-digest.html", + "doc/html/man7/provider-encoder.html", + "doc/html/man7/provider-kdf.html", + "doc/html/man7/provider-kem.html", + "doc/html/man7/provider-keyexch.html", + "doc/html/man7/provider-keymgmt.html", + "doc/html/man7/provider-mac.html", + "doc/html/man7/provider-object.html", + "doc/html/man7/provider-rand.html", + "doc/html/man7/provider-signature.html", + "doc/html/man7/provider-skeymgmt.html", + "doc/html/man7/provider-storemgmt.html", + "doc/html/man7/provider.html", + "doc/html/man7/proxy-certificates.html", + "doc/html/man7/x509.html" + ] + }, + "imagedocs" => { + "man7" => [ + "doc/man7/img/cipher.png", + "doc/man7/img/digest.png", + "doc/man7/img/kdf.png", + "doc/man7/img/mac.png", + "doc/man7/img/pkey.png", + "doc/man7/img/rand.png" + ] + }, + "includes" => { + "OpenSSLConfig.cmake" => [ + "." + ], + "OpenSSLConfigVersion.cmake" => [ + "." + ], + "apps/asn1parse.o" => [ + "apps" + ], + "apps/ca.o" => [ + "apps" + ], + "apps/ciphers.o" => [ + "apps" + ], + "apps/cmp.o" => [ + "apps" + ], + "apps/cms.o" => [ + "apps" + ], + "apps/crl.o" => [ + "apps" + ], + "apps/crl2pkcs7.o" => [ + "apps" + ], + "apps/dgst.o" => [ + "apps" + ], + "apps/dhparam.o" => [ + "apps" + ], + "apps/dsa.o" => [ + "apps" + ], + "apps/dsaparam.o" => [ + "apps" + ], + "apps/ec.o" => [ + "apps" + ], + "apps/ecparam.o" => [ + "apps" + ], + "apps/enc.o" => [ + "apps" + ], + "apps/engine.o" => [ + "apps" + ], + "apps/errstr.o" => [ + "apps" + ], + "apps/fipsinstall.o" => [ + "apps" + ], + "apps/gendsa.o" => [ + "apps" + ], + "apps/genpkey.o" => [ + "apps" + ], + "apps/genrsa.o" => [ + "apps" + ], + "apps/info.o" => [ + "apps" + ], + "apps/kdf.o" => [ + "apps" + ], + "apps/lib/cmp_mock_srv.o" => [ + "apps" + ], + "apps/lib/openssl-bin-cmp_mock_srv.o" => [ + "apps" + ], + "apps/libapps.a" => [ + ".", + "include", + "apps/include" + ], + "apps/list.o" => [ + "apps" + ], + "apps/mac.o" => [ + "apps" + ], + "apps/nseq.o" => [ + "apps" + ], + "apps/ocsp.o" => [ + "apps" + ], + "apps/openssl" => [ + ".", + "include", + "apps/include" + ], + "apps/openssl-bin-asn1parse.o" => [ + "apps" + ], + "apps/openssl-bin-ca.o" => [ + "apps" + ], + "apps/openssl-bin-ciphers.o" => [ + "apps" + ], + "apps/openssl-bin-cmp.o" => [ + "apps" + ], + "apps/openssl-bin-cms.o" => [ + "apps" + ], + "apps/openssl-bin-crl.o" => [ + "apps" + ], + "apps/openssl-bin-crl2pkcs7.o" => [ + "apps" + ], + "apps/openssl-bin-dgst.o" => [ + "apps" + ], + "apps/openssl-bin-dhparam.o" => [ + "apps" + ], + "apps/openssl-bin-dsa.o" => [ + "apps" + ], + "apps/openssl-bin-dsaparam.o" => [ + "apps" + ], + "apps/openssl-bin-ec.o" => [ + "apps" + ], + "apps/openssl-bin-ecparam.o" => [ + "apps" + ], + "apps/openssl-bin-enc.o" => [ + "apps" + ], + "apps/openssl-bin-engine.o" => [ + "apps" + ], + "apps/openssl-bin-errstr.o" => [ + "apps" + ], + "apps/openssl-bin-fipsinstall.o" => [ + "apps" + ], + "apps/openssl-bin-gendsa.o" => [ + "apps" + ], + "apps/openssl-bin-genpkey.o" => [ + "apps" + ], + "apps/openssl-bin-genrsa.o" => [ + "apps" + ], + "apps/openssl-bin-info.o" => [ + "apps" + ], + "apps/openssl-bin-kdf.o" => [ + "apps" + ], + "apps/openssl-bin-list.o" => [ + "apps" + ], + "apps/openssl-bin-mac.o" => [ + "apps" + ], + "apps/openssl-bin-nseq.o" => [ + "apps" + ], + "apps/openssl-bin-ocsp.o" => [ + "apps" + ], + "apps/openssl-bin-openssl.o" => [ + "apps" + ], + "apps/openssl-bin-passwd.o" => [ + "apps" + ], + "apps/openssl-bin-pkcs12.o" => [ + "apps" + ], + "apps/openssl-bin-pkcs7.o" => [ + "apps" + ], + "apps/openssl-bin-pkcs8.o" => [ + "apps" + ], + "apps/openssl-bin-pkey.o" => [ + "apps" + ], + "apps/openssl-bin-pkeyparam.o" => [ + "apps" + ], + "apps/openssl-bin-pkeyutl.o" => [ + "apps" + ], + "apps/openssl-bin-prime.o" => [ + "apps" + ], + "apps/openssl-bin-progs.o" => [ + "apps" + ], + "apps/openssl-bin-rand.o" => [ + "apps" + ], + "apps/openssl-bin-rehash.o" => [ + "apps" + ], + "apps/openssl-bin-req.o" => [ + "apps" + ], + "apps/openssl-bin-rsa.o" => [ + "apps" + ], + "apps/openssl-bin-rsautl.o" => [ + "apps" + ], + "apps/openssl-bin-s_client.o" => [ + "apps" + ], + "apps/openssl-bin-s_server.o" => [ + "apps" + ], + "apps/openssl-bin-s_time.o" => [ + "apps" + ], + "apps/openssl-bin-sess_id.o" => [ + "apps" + ], + "apps/openssl-bin-skeyutl.o" => [ + "apps" + ], + "apps/openssl-bin-smime.o" => [ + "apps" + ], + "apps/openssl-bin-speed.o" => [ + "apps" + ], + "apps/openssl-bin-spkac.o" => [ + "apps" + ], + "apps/openssl-bin-srp.o" => [ + "apps" + ], + "apps/openssl-bin-storeutl.o" => [ + "apps" + ], + "apps/openssl-bin-ts.o" => [ + "apps" + ], + "apps/openssl-bin-verify.o" => [ + "apps" + ], + "apps/openssl-bin-version.o" => [ + "apps" + ], + "apps/openssl-bin-x509.o" => [ + "apps" + ], + "apps/openssl.o" => [ + "apps" + ], + "apps/passwd.o" => [ + "apps" + ], + "apps/pkcs12.o" => [ + "apps" + ], + "apps/pkcs7.o" => [ + "apps" + ], + "apps/pkcs8.o" => [ + "apps" + ], + "apps/pkey.o" => [ + "apps" + ], + "apps/pkeyparam.o" => [ + "apps" + ], + "apps/pkeyutl.o" => [ + "apps" + ], + "apps/prime.o" => [ + "apps" + ], + "apps/progs.c" => [ + "." + ], + "apps/progs.o" => [ + "apps" + ], + "apps/rand.o" => [ + "apps" + ], + "apps/rehash.o" => [ + "apps" + ], + "apps/req.o" => [ + "apps" + ], + "apps/rsa.o" => [ + "apps" + ], + "apps/rsautl.o" => [ + "apps" + ], + "apps/s_client.o" => [ + "apps" + ], + "apps/s_server.o" => [ + "apps" + ], + "apps/s_time.o" => [ + "apps" + ], + "apps/sess_id.o" => [ + "apps" + ], + "apps/skeyutl.o" => [ + "apps" + ], + "apps/smime.o" => [ + "apps" + ], + "apps/speed.o" => [ + "apps" + ], + "apps/spkac.o" => [ + "apps" + ], + "apps/srp.o" => [ + "apps" + ], + "apps/storeutl.o" => [ + "apps" + ], + "apps/ts.o" => [ + "apps" + ], + "apps/verify.o" => [ + "apps" + ], + "apps/version.o" => [ + "apps" + ], + "apps/x509.o" => [ + "apps" + ], + "crypto/aes/aes-armv4.o" => [ + "crypto" + ], + "crypto/aes/aes-mips.o" => [ + "crypto" + ], + "crypto/aes/aes-s390x.o" => [ + "crypto" + ], + "crypto/aes/aes-sparcv9.o" => [ + "crypto" + ], + "crypto/aes/aesfx-sparcv9.o" => [ + "crypto" + ], + "crypto/aes/aest4-sparcv9.o" => [ + "crypto" + ], + "crypto/aes/aesv8-armx.o" => [ + "crypto" + ], + "crypto/aes/bsaes-armv7.o" => [ + "crypto" + ], + "crypto/aes/vpaes-armv8.o" => [ + "crypto" + ], + "crypto/aes/vpaes-loongarch64.o" => [ + "crypto" + ], + "crypto/arm64cpuid.o" => [ + "crypto" + ], + "crypto/armv4cpuid.o" => [ + "crypto" + ], + "crypto/bn/armv4-gf2m.o" => [ + "crypto" + ], + "crypto/bn/armv4-mont.o" => [ + "crypto" + ], + "crypto/bn/armv8-mont.o" => [ + "crypto" + ], + "crypto/bn/bn-mips.o" => [ + "crypto" + ], + "crypto/bn/bn_exp.o" => [ + "crypto" + ], + "crypto/bn/libcrypto-lib-bn_exp.o" => [ + "crypto" + ], + "crypto/bn/libfips-lib-bn_exp.o" => [ + "crypto" + ], + "crypto/bn/mips-mont.o" => [ + "crypto" + ], + "crypto/bn/sparct4-mont.o" => [ + "crypto" + ], + "crypto/bn/sparcv9-gf2m.o" => [ + "crypto" + ], + "crypto/bn/sparcv9-mont.o" => [ + "crypto" + ], + "crypto/bn/sparcv9a-mont.o" => [ + "crypto" + ], + "crypto/bn/vis3-mont.o" => [ + "crypto" + ], + "crypto/camellia/cmllt4-sparcv9.o" => [ + "crypto" + ], + "crypto/chacha/chacha-armv4.o" => [ + "crypto" + ], + "crypto/chacha/chacha-armv8-sve.o" => [ + "crypto" + ], + "crypto/chacha/chacha-armv8.o" => [ + "crypto" + ], + "crypto/chacha/chacha-loongarch64.o" => [ + "crypto" + ], + "crypto/chacha/chacha-s390x.o" => [ + "crypto" + ], + "crypto/cpuid.o" => [ + "." + ], + "crypto/cversion.o" => [ + "crypto" + ], + "crypto/des/dest4-sparcv9.o" => [ + "crypto" + ], + "crypto/ec/ecp_nistz256-armv4.o" => [ + "crypto" + ], + "crypto/ec/ecp_nistz256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecp_nistz256-sparcv9.o" => [ + "crypto" + ], + "crypto/ec/ecp_s390x_nistp.o" => [ + "crypto" + ], + "crypto/ec/ecp_sm2p256-armv8.o" => [ + "crypto" + ], + "crypto/ec/ecx_key.o" => [ + "crypto" + ], + "crypto/ec/ecx_meth.o" => [ + "crypto" + ], + "crypto/ec/ecx_s390x.o" => [ + "crypto" + ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto" + ], + "crypto/ec/libcrypto-lib-ecx_meth.o" => [ + "crypto" + ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto" + ], + "crypto/evp/e_aes.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/evp/e_aes_cbc_hmac_sha1.o" => [ + "crypto/modes" + ], + "crypto/evp/e_aes_cbc_hmac_sha256.o" => [ + "crypto/modes" + ], + "crypto/evp/e_aria.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/evp/e_camellia.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/evp/e_des.o" => [ + "crypto" + ], + "crypto/evp/e_des3.o" => [ + "crypto" + ], + "crypto/evp/e_sm4.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/evp/libcrypto-lib-e_aes.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o" => [ + "crypto/modes" + ], + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o" => [ + "crypto/modes" + ], + "crypto/evp/libcrypto-lib-e_aria.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/evp/libcrypto-lib-e_camellia.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/evp/libcrypto-lib-e_des.o" => [ + "crypto" + ], + "crypto/evp/libcrypto-lib-e_des3.o" => [ + "crypto" + ], + "crypto/evp/libcrypto-lib-e_sm4.o" => [ + "crypto", + "crypto/modes" + ], + "crypto/info.o" => [ + "crypto" + ], + "crypto/libcrypto-lib-cpuid.o" => [ + "." + ], + "crypto/libcrypto-lib-cversion.o" => [ + "crypto" + ], + "crypto/libcrypto-lib-info.o" => [ + "crypto" + ], + "crypto/libfips-lib-cpuid.o" => [ + "." + ], + "crypto/md5/md5-aarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-loongarch64.o" => [ + "crypto" + ], + "crypto/md5/md5-sparcv9.o" => [ + "crypto" + ], + "crypto/modes/aes-gcm-armv8-unroll8_64.o" => [ + "crypto" + ], + "crypto/modes/aes-gcm-armv8_64.o" => [ + "crypto" + ], + "crypto/modes/gcm128.o" => [ + "crypto" + ], + "crypto/modes/ghash-armv4.o" => [ + "crypto" + ], + "crypto/modes/ghash-s390x.o" => [ + "crypto" + ], + "crypto/modes/ghash-sparcv9.o" => [ + "crypto" + ], + "crypto/modes/ghashv8-armx.o" => [ + "crypto" + ], + "crypto/modes/libcrypto-lib-gcm128.o" => [ + "crypto" + ], + "crypto/modes/libfips-lib-gcm128.o" => [ + "crypto" + ], + "crypto/params_idx.c" => [ + "util/perl" + ], + "crypto/poly1305/poly1305-armv4.o" => [ + "crypto" + ], + "crypto/poly1305/poly1305-armv8.o" => [ + "crypto" + ], + "crypto/poly1305/poly1305-mips.o" => [ + "crypto" + ], + "crypto/poly1305/poly1305-s390x.o" => [ + "crypto" + ], + "crypto/poly1305/poly1305-sparcv9.o" => [ + "crypto" + ], + "crypto/s390xcpuid.o" => [ + "crypto" + ], + "crypto/sha/keccak1600-armv4.o" => [ + "crypto" + ], + "crypto/sha/keccak1600-armv8.o" => [ + "crypto" + ], + "crypto/sha/sha1-armv4-large.o" => [ + "crypto" + ], + "crypto/sha/sha1-armv8.o" => [ + "crypto" + ], + "crypto/sha/sha1-mips.o" => [ + "crypto" + ], + "crypto/sha/sha1-s390x.o" => [ + "crypto" + ], + "crypto/sha/sha1-sparcv9.o" => [ + "crypto" + ], + "crypto/sha/sha256-armv4.o" => [ + "crypto" + ], + "crypto/sha/sha256-armv8.o" => [ + "crypto" + ], + "crypto/sha/sha256-mips.o" => [ + "crypto" + ], + "crypto/sha/sha256-s390x.o" => [ + "crypto" + ], + "crypto/sha/sha256-sparcv9.o" => [ + "crypto" + ], + "crypto/sha/sha512-armv4.o" => [ + "crypto" + ], + "crypto/sha/sha512-armv8.o" => [ + "crypto" + ], + "crypto/sha/sha512-mips.o" => [ + "crypto" + ], + "crypto/sha/sha512-s390x.o" => [ + "crypto" + ], + "crypto/sha/sha512-sparcv9.o" => [ + "crypto" + ], + "crypto/sm3/sm3-armv8.o" => [ + "crypto" + ], + "crypto/sm4/sm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4-armv8.o" => [ + "crypto" + ], + "crypto/sm4/vpsm4_ex-armv8.o" => [ + "crypto" + ], + "doc/man1/openssl-asn1parse.pod" => [ + "doc" + ], + "doc/man1/openssl-ca.pod" => [ + "doc" + ], + "doc/man1/openssl-ciphers.pod" => [ + "doc" + ], + "doc/man1/openssl-cmds.pod" => [ + "doc" + ], + "doc/man1/openssl-cmp.pod" => [ + "doc" + ], + "doc/man1/openssl-cms.pod" => [ + "doc" + ], + "doc/man1/openssl-crl.pod" => [ + "doc" + ], + "doc/man1/openssl-crl2pkcs7.pod" => [ + "doc" + ], + "doc/man1/openssl-dgst.pod" => [ + "doc" + ], + "doc/man1/openssl-dhparam.pod" => [ + "doc" + ], + "doc/man1/openssl-dsa.pod" => [ + "doc" + ], + "doc/man1/openssl-dsaparam.pod" => [ + "doc" + ], + "doc/man1/openssl-ec.pod" => [ + "doc" + ], + "doc/man1/openssl-ecparam.pod" => [ + "doc" + ], + "doc/man1/openssl-enc.pod" => [ + "doc" + ], + "doc/man1/openssl-engine.pod" => [ + "doc" + ], + "doc/man1/openssl-errstr.pod" => [ + "doc" + ], + "doc/man1/openssl-fipsinstall.pod" => [ + "doc" + ], + "doc/man1/openssl-gendsa.pod" => [ + "doc" + ], + "doc/man1/openssl-genpkey.pod" => [ + "doc" + ], + "doc/man1/openssl-genrsa.pod" => [ + "doc" + ], + "doc/man1/openssl-info.pod" => [ + "doc" + ], + "doc/man1/openssl-kdf.pod" => [ + "doc" + ], + "doc/man1/openssl-list.pod" => [ + "doc" + ], + "doc/man1/openssl-mac.pod" => [ + "doc" + ], + "doc/man1/openssl-nseq.pod" => [ + "doc" + ], + "doc/man1/openssl-ocsp.pod" => [ + "doc" + ], + "doc/man1/openssl-passwd.pod" => [ + "doc" + ], + "doc/man1/openssl-pkcs12.pod" => [ + "doc" + ], + "doc/man1/openssl-pkcs7.pod" => [ + "doc" + ], + "doc/man1/openssl-pkcs8.pod" => [ + "doc" + ], + "doc/man1/openssl-pkey.pod" => [ + "doc" + ], + "doc/man1/openssl-pkeyparam.pod" => [ + "doc" + ], + "doc/man1/openssl-pkeyutl.pod" => [ + "doc" + ], + "doc/man1/openssl-prime.pod" => [ + "doc" + ], + "doc/man1/openssl-rand.pod" => [ + "doc" + ], + "doc/man1/openssl-rehash.pod" => [ + "doc" + ], + "doc/man1/openssl-req.pod" => [ + "doc" + ], + "doc/man1/openssl-rsa.pod" => [ + "doc" + ], + "doc/man1/openssl-rsautl.pod" => [ + "doc" + ], + "doc/man1/openssl-s_client.pod" => [ + "doc" + ], + "doc/man1/openssl-s_server.pod" => [ + "doc" + ], + "doc/man1/openssl-s_time.pod" => [ + "doc" + ], + "doc/man1/openssl-sess_id.pod" => [ + "doc" + ], + "doc/man1/openssl-skeyutl.pod" => [ + "doc" + ], + "doc/man1/openssl-smime.pod" => [ + "doc" + ], + "doc/man1/openssl-speed.pod" => [ + "doc" + ], + "doc/man1/openssl-spkac.pod" => [ + "doc" + ], + "doc/man1/openssl-srp.pod" => [ + "doc" + ], + "doc/man1/openssl-storeutl.pod" => [ + "doc" + ], + "doc/man1/openssl-ts.pod" => [ + "doc" + ], + "doc/man1/openssl-verify.pod" => [ + "doc" + ], + "doc/man1/openssl-version.pod" => [ + "doc" + ], + "doc/man1/openssl-x509.pod" => [ + "doc" + ], + "exporters/OpenSSLConfig.cmake" => [ + "." + ], + "exporters/OpenSSLConfigVersion.cmake" => [ + "." + ], + "exporters/libcrypto.pc" => [ + "." + ], + "exporters/libssl.pc" => [ + "." + ], + "exporters/openssl.pc" => [ + "." + ], + "include/internal/param_names.h" => [ + "util/perl" + ], + "include/openssl/core_names.h" => [ + "util/perl" + ], + "libcrypto" => [ + ".", + "include", + "providers/common/include", + "providers/implementations/include" + ], + "libcrypto.ld" => [ + ".", + "util/perl/OpenSSL" + ], + "libcrypto.pc" => [ + "." + ], + "libssl" => [ + ".", + "include" + ], + "libssl.ld" => [ + ".", + "util/perl/OpenSSL" + ], + "libssl.pc" => [ + "." + ], + "openssl.pc" => [ + "." + ], + "providers/common/der/der_digests_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_digests_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_dsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ec_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ec_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ec_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ec_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ecx_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ecx_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ecx_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_rsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_rsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_rsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_rsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_sm2_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_sm2_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_sm2_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_sm2_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/der_wrap_gen.c" => [ + "providers/common/der" + ], + "providers/common/der/der_wrap_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_digests_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_dsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ec_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ec_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ec_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ecx_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_rsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libdefault-lib-der_sm2_key.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/der/libfips-lib-der_rsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/common/include/prov/der_digests.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_dsa.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_ec.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_ecx.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_ml_dsa.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_rsa.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_slh_dsa.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_sm2.h" => [ + "providers/common/der" + ], + "providers/common/include/prov/der_wrap.h" => [ + "providers/common/der" + ], + "providers/fips" => [ + "include" + ], + "providers/implementations/encode_decode/encode_key2any.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/kdfs/x942kdf.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ecdsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/eddsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/ml_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/rsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/slh_dsa_sig.o" => [ + "providers/common/include/prov" + ], + "providers/implementations/signature/sm2_sig.o" => [ + "providers/common/include/prov" + ], + "providers/legacy" => [ + "include", + "providers/implementations/include", + "providers/common/include" + ], + "providers/libcommon.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" + ], + "providers/libdefault.a" => [ + ".", + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" + ], + "providers/libfips.a" => [ + ".", + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" + ], + "providers/liblegacy.a" => [ + ".", + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" + ], + "providers/libtemplate.a" => [ + "crypto", + "include", + "providers/implementations/include", + "providers/common/include", + "providers/fips/include" + ], + "util/wrap.pl" => [ + "." + ] + }, + "ldadd" => {}, + "libraries" => [ + "apps/libapps.a", + "libcrypto", + "libssl", + "providers/libcommon.a", + "providers/libdefault.a", + "providers/libfips.a", + "providers/liblegacy.a", + "providers/libtemplate.a" + ], + "mandocs" => { + "man1" => [ + "doc/man/man1/CA.pl.1", + "doc/man/man1/openssl-asn1parse.1", + "doc/man/man1/openssl-ca.1", + "doc/man/man1/openssl-ciphers.1", + "doc/man/man1/openssl-cmds.1", + "doc/man/man1/openssl-cmp.1", + "doc/man/man1/openssl-cms.1", + "doc/man/man1/openssl-crl.1", + "doc/man/man1/openssl-crl2pkcs7.1", + "doc/man/man1/openssl-dgst.1", + "doc/man/man1/openssl-dhparam.1", + "doc/man/man1/openssl-dsa.1", + "doc/man/man1/openssl-dsaparam.1", + "doc/man/man1/openssl-ec.1", + "doc/man/man1/openssl-ecparam.1", + "doc/man/man1/openssl-enc.1", + "doc/man/man1/openssl-engine.1", + "doc/man/man1/openssl-errstr.1", + "doc/man/man1/openssl-fipsinstall.1", + "doc/man/man1/openssl-format-options.1", + "doc/man/man1/openssl-gendsa.1", + "doc/man/man1/openssl-genpkey.1", + "doc/man/man1/openssl-genrsa.1", + "doc/man/man1/openssl-info.1", + "doc/man/man1/openssl-kdf.1", + "doc/man/man1/openssl-list.1", + "doc/man/man1/openssl-mac.1", + "doc/man/man1/openssl-namedisplay-options.1", + "doc/man/man1/openssl-nseq.1", + "doc/man/man1/openssl-ocsp.1", + "doc/man/man1/openssl-passphrase-options.1", + "doc/man/man1/openssl-passwd.1", + "doc/man/man1/openssl-pkcs12.1", + "doc/man/man1/openssl-pkcs7.1", + "doc/man/man1/openssl-pkcs8.1", + "doc/man/man1/openssl-pkey.1", + "doc/man/man1/openssl-pkeyparam.1", + "doc/man/man1/openssl-pkeyutl.1", + "doc/man/man1/openssl-prime.1", + "doc/man/man1/openssl-rand.1", + "doc/man/man1/openssl-rehash.1", + "doc/man/man1/openssl-req.1", + "doc/man/man1/openssl-rsa.1", + "doc/man/man1/openssl-rsautl.1", + "doc/man/man1/openssl-s_client.1", + "doc/man/man1/openssl-s_server.1", + "doc/man/man1/openssl-s_time.1", + "doc/man/man1/openssl-sess_id.1", + "doc/man/man1/openssl-skeyutl.1", + "doc/man/man1/openssl-smime.1", + "doc/man/man1/openssl-speed.1", + "doc/man/man1/openssl-spkac.1", + "doc/man/man1/openssl-srp.1", + "doc/man/man1/openssl-storeutl.1", + "doc/man/man1/openssl-ts.1", + "doc/man/man1/openssl-verification-options.1", + "doc/man/man1/openssl-verify.1", + "doc/man/man1/openssl-version.1", + "doc/man/man1/openssl-x509.1", + "doc/man/man1/openssl.1", + "doc/man/man1/tsget.1" + ], + "man3" => [ + "doc/man/man3/ADMISSIONS.3", + "doc/man/man3/ASN1_EXTERN_FUNCS.3", + "doc/man/man3/ASN1_INTEGER_get_int64.3", + "doc/man/man3/ASN1_INTEGER_new.3", + "doc/man/man3/ASN1_ITEM_lookup.3", + "doc/man/man3/ASN1_OBJECT_new.3", + "doc/man/man3/ASN1_STRING_TABLE_add.3", + "doc/man/man3/ASN1_STRING_length.3", + "doc/man/man3/ASN1_STRING_new.3", + "doc/man/man3/ASN1_STRING_print_ex.3", + "doc/man/man3/ASN1_TIME_set.3", + "doc/man/man3/ASN1_TYPE_get.3", + "doc/man/man3/ASN1_aux_cb.3", + "doc/man/man3/ASN1_generate_nconf.3", + "doc/man/man3/ASN1_item_d2i_bio.3", + "doc/man/man3/ASN1_item_new.3", + "doc/man/man3/ASN1_item_sign.3", + "doc/man/man3/ASYNC_WAIT_CTX_new.3", + "doc/man/man3/ASYNC_start_job.3", + "doc/man/man3/BF_encrypt.3", + "doc/man/man3/BIO_ADDR.3", + "doc/man/man3/BIO_ADDRINFO.3", + "doc/man/man3/BIO_connect.3", + "doc/man/man3/BIO_ctrl.3", + "doc/man/man3/BIO_f_base64.3", + "doc/man/man3/BIO_f_buffer.3", + "doc/man/man3/BIO_f_cipher.3", + "doc/man/man3/BIO_f_md.3", + "doc/man/man3/BIO_f_null.3", + "doc/man/man3/BIO_f_prefix.3", + "doc/man/man3/BIO_f_readbuffer.3", + "doc/man/man3/BIO_f_ssl.3", + "doc/man/man3/BIO_find_type.3", + "doc/man/man3/BIO_get_data.3", + "doc/man/man3/BIO_get_ex_new_index.3", + "doc/man/man3/BIO_get_rpoll_descriptor.3", + "doc/man/man3/BIO_meth_new.3", + "doc/man/man3/BIO_new.3", + "doc/man/man3/BIO_new_CMS.3", + "doc/man/man3/BIO_parse_hostserv.3", + "doc/man/man3/BIO_printf.3", + "doc/man/man3/BIO_push.3", + "doc/man/man3/BIO_read.3", + "doc/man/man3/BIO_s_accept.3", + "doc/man/man3/BIO_s_bio.3", + "doc/man/man3/BIO_s_connect.3", + "doc/man/man3/BIO_s_core.3", + "doc/man/man3/BIO_s_datagram.3", + "doc/man/man3/BIO_s_dgram_pair.3", + "doc/man/man3/BIO_s_fd.3", + "doc/man/man3/BIO_s_file.3", + "doc/man/man3/BIO_s_mem.3", + "doc/man/man3/BIO_s_null.3", + "doc/man/man3/BIO_s_socket.3", + "doc/man/man3/BIO_sendmmsg.3", + "doc/man/man3/BIO_set_callback.3", + "doc/man/man3/BIO_set_flags.3", + "doc/man/man3/BIO_should_retry.3", + "doc/man/man3/BIO_socket_wait.3", + "doc/man/man3/BN_BLINDING_new.3", + "doc/man/man3/BN_CTX_new.3", + "doc/man/man3/BN_CTX_start.3", + "doc/man/man3/BN_add.3", + "doc/man/man3/BN_add_word.3", + "doc/man/man3/BN_bn2bin.3", + "doc/man/man3/BN_cmp.3", + "doc/man/man3/BN_copy.3", + "doc/man/man3/BN_generate_prime.3", + "doc/man/man3/BN_mod_exp_mont.3", + "doc/man/man3/BN_mod_inverse.3", + "doc/man/man3/BN_mod_mul_montgomery.3", + "doc/man/man3/BN_mod_mul_reciprocal.3", + "doc/man/man3/BN_new.3", + "doc/man/man3/BN_num_bytes.3", + "doc/man/man3/BN_rand.3", + "doc/man/man3/BN_security_bits.3", + "doc/man/man3/BN_set_bit.3", + "doc/man/man3/BN_swap.3", + "doc/man/man3/BN_zero.3", + "doc/man/man3/BUF_MEM_new.3", + "doc/man/man3/CMAC_CTX.3", + "doc/man/man3/CMS_EncryptedData_decrypt.3", + "doc/man/man3/CMS_EncryptedData_encrypt.3", + "doc/man/man3/CMS_EncryptedData_set1_key.3", + "doc/man/man3/CMS_EnvelopedData_create.3", + "doc/man/man3/CMS_add0_cert.3", + "doc/man/man3/CMS_add1_recipient_cert.3", + "doc/man/man3/CMS_add1_signer.3", + "doc/man/man3/CMS_compress.3", + "doc/man/man3/CMS_data_create.3", + "doc/man/man3/CMS_decrypt.3", + "doc/man/man3/CMS_digest_create.3", + "doc/man/man3/CMS_encrypt.3", + "doc/man/man3/CMS_final.3", + "doc/man/man3/CMS_get0_RecipientInfos.3", + "doc/man/man3/CMS_get0_SignerInfos.3", + "doc/man/man3/CMS_get0_type.3", + "doc/man/man3/CMS_get1_ReceiptRequest.3", + "doc/man/man3/CMS_sign.3", + "doc/man/man3/CMS_sign_receipt.3", + "doc/man/man3/CMS_signed_get_attr.3", + "doc/man/man3/CMS_uncompress.3", + "doc/man/man3/CMS_verify.3", + "doc/man/man3/CMS_verify_receipt.3", + "doc/man/man3/COMP_CTX_new.3", + "doc/man/man3/CONF_modules_free.3", + "doc/man/man3/CONF_modules_load_file.3", + "doc/man/man3/CRYPTO_THREAD_run_once.3", + "doc/man/man3/CRYPTO_get_ex_new_index.3", + "doc/man/man3/CRYPTO_memcmp.3", + "doc/man/man3/CTLOG_STORE_get0_log_by_id.3", + "doc/man/man3/CTLOG_STORE_new.3", + "doc/man/man3/CTLOG_new.3", + "doc/man/man3/CT_POLICY_EVAL_CTX_new.3", + "doc/man/man3/DEFINE_STACK_OF.3", + "doc/man/man3/DES_random_key.3", + "doc/man/man3/DH_generate_key.3", + "doc/man/man3/DH_generate_parameters.3", + "doc/man/man3/DH_get0_pqg.3", + "doc/man/man3/DH_get_1024_160.3", + "doc/man/man3/DH_meth_new.3", + "doc/man/man3/DH_new.3", + "doc/man/man3/DH_new_by_nid.3", + "doc/man/man3/DH_set_method.3", + "doc/man/man3/DH_size.3", + "doc/man/man3/DSA_SIG_new.3", + "doc/man/man3/DSA_do_sign.3", + "doc/man/man3/DSA_dup_DH.3", + "doc/man/man3/DSA_generate_key.3", + "doc/man/man3/DSA_generate_parameters.3", + "doc/man/man3/DSA_get0_pqg.3", + "doc/man/man3/DSA_meth_new.3", + "doc/man/man3/DSA_new.3", + "doc/man/man3/DSA_set_method.3", + "doc/man/man3/DSA_sign.3", + "doc/man/man3/DSA_size.3", + "doc/man/man3/DTLS_get_data_mtu.3", + "doc/man/man3/DTLS_set_timer_cb.3", + "doc/man/man3/DTLSv1_get_timeout.3", + "doc/man/man3/DTLSv1_handle_timeout.3", + "doc/man/man3/DTLSv1_listen.3", + "doc/man/man3/ECDSA_SIG_new.3", + "doc/man/man3/ECDSA_sign.3", + "doc/man/man3/ECPKParameters_print.3", + "doc/man/man3/EC_GFp_simple_method.3", + "doc/man/man3/EC_GROUP_copy.3", + "doc/man/man3/EC_GROUP_new.3", + "doc/man/man3/EC_KEY_get_enc_flags.3", + "doc/man/man3/EC_KEY_new.3", + "doc/man/man3/EC_POINT_add.3", + "doc/man/man3/EC_POINT_new.3", + "doc/man/man3/ENGINE_add.3", + "doc/man/man3/ERR_GET_LIB.3", + "doc/man/man3/ERR_clear_error.3", + "doc/man/man3/ERR_error_string.3", + "doc/man/man3/ERR_get_error.3", + "doc/man/man3/ERR_load_crypto_strings.3", + "doc/man/man3/ERR_load_strings.3", + "doc/man/man3/ERR_new.3", + "doc/man/man3/ERR_print_errors.3", + "doc/man/man3/ERR_put_error.3", + "doc/man/man3/ERR_remove_state.3", + "doc/man/man3/ERR_set_mark.3", + "doc/man/man3/EVP_ASYM_CIPHER_free.3", + "doc/man/man3/EVP_BytesToKey.3", + "doc/man/man3/EVP_CIPHER_CTX_get_app_data.3", + "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3", + "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3", + "doc/man/man3/EVP_CIPHER_meth_new.3", + "doc/man/man3/EVP_DigestInit.3", + "doc/man/man3/EVP_DigestSignInit.3", + "doc/man/man3/EVP_DigestVerifyInit.3", + "doc/man/man3/EVP_EncodeInit.3", + "doc/man/man3/EVP_EncryptInit.3", + "doc/man/man3/EVP_KDF.3", + "doc/man/man3/EVP_KEM_free.3", + "doc/man/man3/EVP_KEYEXCH_free.3", + "doc/man/man3/EVP_KEYMGMT.3", + "doc/man/man3/EVP_MAC.3", + "doc/man/man3/EVP_MD_meth_new.3", + "doc/man/man3/EVP_OpenInit.3", + "doc/man/man3/EVP_PBE_CipherInit.3", + "doc/man/man3/EVP_PKEY2PKCS8.3", + "doc/man/man3/EVP_PKEY_ASN1_METHOD.3", + "doc/man/man3/EVP_PKEY_CTX_ctrl.3", + "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", + "doc/man/man3/EVP_PKEY_CTX_get0_pkey.3", + "doc/man/man3/EVP_PKEY_CTX_get_algor.3", + "doc/man/man3/EVP_PKEY_CTX_new.3", + "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", + "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", + "doc/man/man3/EVP_PKEY_CTX_set_params.3", + "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3", + "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3", + "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3", + "doc/man/man3/EVP_PKEY_asn1_get_count.3", + "doc/man/man3/EVP_PKEY_check.3", + "doc/man/man3/EVP_PKEY_copy_parameters.3", + "doc/man/man3/EVP_PKEY_decapsulate.3", + "doc/man/man3/EVP_PKEY_decrypt.3", + "doc/man/man3/EVP_PKEY_derive.3", + "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3", + "doc/man/man3/EVP_PKEY_encapsulate.3", + "doc/man/man3/EVP_PKEY_encrypt.3", + "doc/man/man3/EVP_PKEY_fromdata.3", + "doc/man/man3/EVP_PKEY_get_attr.3", + "doc/man/man3/EVP_PKEY_get_default_digest_nid.3", + "doc/man/man3/EVP_PKEY_get_field_type.3", + "doc/man/man3/EVP_PKEY_get_group_name.3", + "doc/man/man3/EVP_PKEY_get_size.3", + "doc/man/man3/EVP_PKEY_gettable_params.3", + "doc/man/man3/EVP_PKEY_is_a.3", + "doc/man/man3/EVP_PKEY_keygen.3", + "doc/man/man3/EVP_PKEY_meth_get_count.3", + "doc/man/man3/EVP_PKEY_meth_new.3", + "doc/man/man3/EVP_PKEY_new.3", + "doc/man/man3/EVP_PKEY_print_private.3", + "doc/man/man3/EVP_PKEY_set1_RSA.3", + "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3", + "doc/man/man3/EVP_PKEY_set_type.3", + "doc/man/man3/EVP_PKEY_settable_params.3", + "doc/man/man3/EVP_PKEY_sign.3", + "doc/man/man3/EVP_PKEY_todata.3", + "doc/man/man3/EVP_PKEY_verify.3", + "doc/man/man3/EVP_PKEY_verify_recover.3", + "doc/man/man3/EVP_RAND.3", + "doc/man/man3/EVP_SIGNATURE.3", + "doc/man/man3/EVP_SKEY.3", + "doc/man/man3/EVP_SKEYMGMT.3", + "doc/man/man3/EVP_SealInit.3", + "doc/man/man3/EVP_SignInit.3", + "doc/man/man3/EVP_VerifyInit.3", + "doc/man/man3/EVP_aes_128_gcm.3", + "doc/man/man3/EVP_aria_128_gcm.3", + "doc/man/man3/EVP_bf_cbc.3", + "doc/man/man3/EVP_blake2b512.3", + "doc/man/man3/EVP_camellia_128_ecb.3", + "doc/man/man3/EVP_cast5_cbc.3", + "doc/man/man3/EVP_chacha20.3", + "doc/man/man3/EVP_des_cbc.3", + "doc/man/man3/EVP_desx_cbc.3", + "doc/man/man3/EVP_idea_cbc.3", + "doc/man/man3/EVP_md2.3", + "doc/man/man3/EVP_md4.3", + "doc/man/man3/EVP_md5.3", + "doc/man/man3/EVP_mdc2.3", + "doc/man/man3/EVP_rc2_cbc.3", + "doc/man/man3/EVP_rc4.3", + "doc/man/man3/EVP_rc5_32_12_16_cbc.3", + "doc/man/man3/EVP_ripemd160.3", + "doc/man/man3/EVP_seed_cbc.3", + "doc/man/man3/EVP_set_default_properties.3", + "doc/man/man3/EVP_sha1.3", + "doc/man/man3/EVP_sha224.3", + "doc/man/man3/EVP_sha3_224.3", + "doc/man/man3/EVP_sm3.3", + "doc/man/man3/EVP_sm4_cbc.3", + "doc/man/man3/EVP_whirlpool.3", + "doc/man/man3/GENERAL_NAME.3", + "doc/man/man3/HMAC.3", + "doc/man/man3/MD5.3", + "doc/man/man3/MDC2_Init.3", + "doc/man/man3/NCONF_new_ex.3", + "doc/man/man3/OBJ_nid2obj.3", + "doc/man/man3/OCSP_REQUEST_new.3", + "doc/man/man3/OCSP_cert_to_id.3", + "doc/man/man3/OCSP_request_add1_nonce.3", + "doc/man/man3/OCSP_resp_find_status.3", + "doc/man/man3/OCSP_response_status.3", + "doc/man/man3/OCSP_sendreq_new.3", + "doc/man/man3/OPENSSL_Applink.3", + "doc/man/man3/OPENSSL_FILE.3", + "doc/man/man3/OPENSSL_LH_COMPFUNC.3", + "doc/man/man3/OPENSSL_LH_stats.3", + "doc/man/man3/OPENSSL_config.3", + "doc/man/man3/OPENSSL_fork_prepare.3", + "doc/man/man3/OPENSSL_gmtime.3", + "doc/man/man3/OPENSSL_hexchar2int.3", + "doc/man/man3/OPENSSL_ia32cap.3", + "doc/man/man3/OPENSSL_init_crypto.3", + "doc/man/man3/OPENSSL_init_ssl.3", + "doc/man/man3/OPENSSL_instrument_bus.3", + "doc/man/man3/OPENSSL_load_builtin_modules.3", + "doc/man/man3/OPENSSL_load_u16_le.3", + "doc/man/man3/OPENSSL_malloc.3", + "doc/man/man3/OPENSSL_ppccap.3", + "doc/man/man3/OPENSSL_riscvcap.3", + "doc/man/man3/OPENSSL_s390xcap.3", + "doc/man/man3/OPENSSL_secure_malloc.3", + "doc/man/man3/OPENSSL_strcasecmp.3", + "doc/man/man3/OSSL_ALGORITHM.3", + "doc/man/man3/OSSL_CALLBACK.3", + "doc/man/man3/OSSL_CMP_ATAV_set0.3", + "doc/man/man3/OSSL_CMP_CTX_new.3", + "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", + "doc/man/man3/OSSL_CMP_ITAV_new_caCerts.3", + "doc/man/man3/OSSL_CMP_ITAV_set0.3", + "doc/man/man3/OSSL_CMP_MSG_get0_header.3", + "doc/man/man3/OSSL_CMP_MSG_http_perform.3", + "doc/man/man3/OSSL_CMP_SRV_CTX_new.3", + "doc/man/man3/OSSL_CMP_STATUSINFO_new.3", + "doc/man/man3/OSSL_CMP_exec_certreq.3", + "doc/man/man3/OSSL_CMP_log_open.3", + "doc/man/man3/OSSL_CMP_validate_msg.3", + "doc/man/man3/OSSL_CORE_MAKE_FUNC.3", + "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3", + "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3", + "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3", + "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3", + "doc/man/man3/OSSL_CRMF_pbmp_new.3", + "doc/man/man3/OSSL_DECODER.3", + "doc/man/man3/OSSL_DECODER_CTX.3", + "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3", + "doc/man/man3/OSSL_DECODER_from_bio.3", + "doc/man/man3/OSSL_DISPATCH.3", + "doc/man/man3/OSSL_ENCODER.3", + "doc/man/man3/OSSL_ENCODER_CTX.3", + "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", + "doc/man/man3/OSSL_ENCODER_to_bio.3", + "doc/man/man3/OSSL_ERR_STATE_save.3", + "doc/man/man3/OSSL_ESS_check_signing_certs.3", + "doc/man/man3/OSSL_GENERAL_NAMES_print.3", + "doc/man/man3/OSSL_HPKE_CTX_new.3", + "doc/man/man3/OSSL_HTTP_REQ_CTX.3", + "doc/man/man3/OSSL_HTTP_parse_url.3", + "doc/man/man3/OSSL_HTTP_transfer.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX.3", + "doc/man/man3/OSSL_IETF_ATTR_SYNTAX_print.3", + "doc/man/man3/OSSL_INDICATOR_set_callback.3", + "doc/man/man3/OSSL_ITEM.3", + "doc/man/man3/OSSL_LIB_CTX.3", + "doc/man/man3/OSSL_LIB_CTX_set_conf_diagnostics.3", + "doc/man/man3/OSSL_PARAM.3", + "doc/man/man3/OSSL_PARAM_BLD.3", + "doc/man/man3/OSSL_PARAM_allocate_from_text.3", + "doc/man/man3/OSSL_PARAM_dup.3", + "doc/man/man3/OSSL_PARAM_int.3", + "doc/man/man3/OSSL_PARAM_print_to_bio.3", + "doc/man/man3/OSSL_PROVIDER.3", + "doc/man/man3/OSSL_QUIC_client_method.3", + "doc/man/man3/OSSL_SELF_TEST_new.3", + "doc/man/man3/OSSL_SELF_TEST_set_callback.3", + "doc/man/man3/OSSL_STORE_INFO.3", + "doc/man/man3/OSSL_STORE_LOADER.3", + "doc/man/man3/OSSL_STORE_SEARCH.3", + "doc/man/man3/OSSL_STORE_attach.3", + "doc/man/man3/OSSL_STORE_expect.3", + "doc/man/man3/OSSL_STORE_open.3", + "doc/man/man3/OSSL_sleep.3", + "doc/man/man3/OSSL_trace_enabled.3", + "doc/man/man3/OSSL_trace_get_category_num.3", + "doc/man/man3/OSSL_trace_set_channel.3", + "doc/man/man3/OpenSSL_add_all_algorithms.3", + "doc/man/man3/OpenSSL_version.3", + "doc/man/man3/PBMAC1_get1_pbkdf2_param.3", + "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", + "doc/man/man3/PEM_bytes_read_bio.3", + "doc/man/man3/PEM_read.3", + "doc/man/man3/PEM_read_CMS.3", + "doc/man/man3/PEM_read_bio_PrivateKey.3", + "doc/man/man3/PEM_read_bio_ex.3", + "doc/man/man3/PEM_write_bio_CMS_stream.3", + "doc/man/man3/PEM_write_bio_PKCS7_stream.3", + "doc/man/man3/PKCS12_PBE_keyivgen.3", + "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", + "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", + "doc/man/man3/PKCS12_SAFEBAG_set0_attrs.3", + "doc/man/man3/PKCS12_add1_attr_by_NID.3", + "doc/man/man3/PKCS12_add_CSPName_asc.3", + "doc/man/man3/PKCS12_add_cert.3", + "doc/man/man3/PKCS12_add_friendlyname_asc.3", + "doc/man/man3/PKCS12_add_localkeyid.3", + "doc/man/man3/PKCS12_add_safe.3", + "doc/man/man3/PKCS12_create.3", + "doc/man/man3/PKCS12_decrypt_skey.3", + "doc/man/man3/PKCS12_gen_mac.3", + "doc/man/man3/PKCS12_get_friendlyname.3", + "doc/man/man3/PKCS12_init.3", + "doc/man/man3/PKCS12_item_decrypt_d2i.3", + "doc/man/man3/PKCS12_key_gen_utf8_ex.3", + "doc/man/man3/PKCS12_newpass.3", + "doc/man/man3/PKCS12_pack_p7encdata.3", + "doc/man/man3/PKCS12_parse.3", + "doc/man/man3/PKCS5_PBE_keyivgen.3", + "doc/man/man3/PKCS5_PBKDF2_HMAC.3", + "doc/man/man3/PKCS7_decrypt.3", + "doc/man/man3/PKCS7_encrypt.3", + "doc/man/man3/PKCS7_get_octet_string.3", + "doc/man/man3/PKCS7_sign.3", + "doc/man/man3/PKCS7_sign_add_signer.3", + "doc/man/man3/PKCS7_type_is_other.3", + "doc/man/man3/PKCS7_verify.3", + "doc/man/man3/PKCS8_encrypt.3", + "doc/man/man3/PKCS8_pkey_add1_attr.3", + "doc/man/man3/RAND_add.3", + "doc/man/man3/RAND_bytes.3", + "doc/man/man3/RAND_cleanup.3", + "doc/man/man3/RAND_egd.3", + "doc/man/man3/RAND_get0_primary.3", + "doc/man/man3/RAND_load_file.3", + "doc/man/man3/RAND_set_DRBG_type.3", + "doc/man/man3/RAND_set_rand_method.3", + "doc/man/man3/RC4_set_key.3", + "doc/man/man3/RIPEMD160_Init.3", + "doc/man/man3/RSA_blinding_on.3", + "doc/man/man3/RSA_check_key.3", + "doc/man/man3/RSA_generate_key.3", + "doc/man/man3/RSA_get0_key.3", + "doc/man/man3/RSA_meth_new.3", + "doc/man/man3/RSA_new.3", + "doc/man/man3/RSA_padding_add_PKCS1_type_1.3", + "doc/man/man3/RSA_print.3", + "doc/man/man3/RSA_private_encrypt.3", + "doc/man/man3/RSA_public_encrypt.3", + "doc/man/man3/RSA_set_method.3", + "doc/man/man3/RSA_sign.3", + "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3", + "doc/man/man3/RSA_size.3", + "doc/man/man3/SCT_new.3", + "doc/man/man3/SCT_print.3", + "doc/man/man3/SCT_validate.3", + "doc/man/man3/SHA256_Init.3", + "doc/man/man3/SMIME_read_ASN1.3", + "doc/man/man3/SMIME_read_CMS.3", + "doc/man/man3/SMIME_read_PKCS7.3", + "doc/man/man3/SMIME_write_ASN1.3", + "doc/man/man3/SMIME_write_CMS.3", + "doc/man/man3/SMIME_write_PKCS7.3", + "doc/man/man3/SRP_Calc_B.3", + "doc/man/man3/SRP_VBASE_new.3", + "doc/man/man3/SRP_create_verifier.3", + "doc/man/man3/SRP_user_pwd_new.3", + "doc/man/man3/SSL_CIPHER_get_name.3", + "doc/man/man3/SSL_COMP_add_compression_method.3", + "doc/man/man3/SSL_CONF_CTX_new.3", + "doc/man/man3/SSL_CONF_CTX_set1_prefix.3", + "doc/man/man3/SSL_CONF_CTX_set_flags.3", + "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3", + "doc/man/man3/SSL_CONF_cmd.3", + "doc/man/man3/SSL_CONF_cmd_argv.3", + "doc/man/man3/SSL_CTX_add1_chain_cert.3", + "doc/man/man3/SSL_CTX_add_extra_chain_cert.3", + "doc/man/man3/SSL_CTX_add_session.3", + "doc/man/man3/SSL_CTX_config.3", + "doc/man/man3/SSL_CTX_ctrl.3", + "doc/man/man3/SSL_CTX_dane_enable.3", + "doc/man/man3/SSL_CTX_flush_sessions.3", + "doc/man/man3/SSL_CTX_free.3", + "doc/man/man3/SSL_CTX_get0_param.3", + "doc/man/man3/SSL_CTX_get_verify_mode.3", + "doc/man/man3/SSL_CTX_has_client_custom_ext.3", + "doc/man/man3/SSL_CTX_load_verify_locations.3", + "doc/man/man3/SSL_CTX_new.3", + "doc/man/man3/SSL_CTX_sess_number.3", + "doc/man/man3/SSL_CTX_sess_set_cache_size.3", + "doc/man/man3/SSL_CTX_sess_set_get_cb.3", + "doc/man/man3/SSL_CTX_sessions.3", + "doc/man/man3/SSL_CTX_set0_CA_list.3", + "doc/man/man3/SSL_CTX_set1_cert_comp_preference.3", + "doc/man/man3/SSL_CTX_set1_curves.3", + "doc/man/man3/SSL_CTX_set1_sigalgs.3", + "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", + "doc/man/man3/SSL_CTX_set_alpn_select_cb.3", + "doc/man/man3/SSL_CTX_set_cert_cb.3", + "doc/man/man3/SSL_CTX_set_cert_store.3", + "doc/man/man3/SSL_CTX_set_cert_verify_callback.3", + "doc/man/man3/SSL_CTX_set_cipher_list.3", + "doc/man/man3/SSL_CTX_set_client_cert_cb.3", + "doc/man/man3/SSL_CTX_set_client_hello_cb.3", + "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", + "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", + "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", + "doc/man/man3/SSL_CTX_set_domain_flags.3", + "doc/man/man3/SSL_CTX_set_generate_session_id.3", + "doc/man/man3/SSL_CTX_set_info_callback.3", + "doc/man/man3/SSL_CTX_set_keylog_callback.3", + "doc/man/man3/SSL_CTX_set_max_cert_list.3", + "doc/man/man3/SSL_CTX_set_min_proto_version.3", + "doc/man/man3/SSL_CTX_set_mode.3", + "doc/man/man3/SSL_CTX_set_msg_callback.3", + "doc/man/man3/SSL_CTX_set_new_pending_conn_cb.3", + "doc/man/man3/SSL_CTX_set_num_tickets.3", + "doc/man/man3/SSL_CTX_set_options.3", + "doc/man/man3/SSL_CTX_set_psk_client_callback.3", + "doc/man/man3/SSL_CTX_set_quiet_shutdown.3", + "doc/man/man3/SSL_CTX_set_read_ahead.3", + "doc/man/man3/SSL_CTX_set_record_padding_callback.3", + "doc/man/man3/SSL_CTX_set_security_level.3", + "doc/man/man3/SSL_CTX_set_session_cache_mode.3", + "doc/man/man3/SSL_CTX_set_session_id_context.3", + "doc/man/man3/SSL_CTX_set_session_ticket_cb.3", + "doc/man/man3/SSL_CTX_set_split_send_fragment.3", + "doc/man/man3/SSL_CTX_set_srp_password.3", + "doc/man/man3/SSL_CTX_set_ssl_version.3", + "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3", + "doc/man/man3/SSL_CTX_set_timeout.3", + "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3", + "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3", + "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3", + "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3", + "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3", + "doc/man/man3/SSL_CTX_set_tmp_ecdh.3", + "doc/man/man3/SSL_CTX_set_verify.3", + "doc/man/man3/SSL_CTX_use_certificate.3", + "doc/man/man3/SSL_CTX_use_psk_identity_hint.3", + "doc/man/man3/SSL_CTX_use_serverinfo.3", + "doc/man/man3/SSL_SESSION_free.3", + "doc/man/man3/SSL_SESSION_get0_cipher.3", + "doc/man/man3/SSL_SESSION_get0_hostname.3", + "doc/man/man3/SSL_SESSION_get0_id_context.3", + "doc/man/man3/SSL_SESSION_get0_peer.3", + "doc/man/man3/SSL_SESSION_get_compress_id.3", + "doc/man/man3/SSL_SESSION_get_protocol_version.3", + "doc/man/man3/SSL_SESSION_get_time.3", + "doc/man/man3/SSL_SESSION_has_ticket.3", + "doc/man/man3/SSL_SESSION_is_resumable.3", + "doc/man/man3/SSL_SESSION_print.3", + "doc/man/man3/SSL_SESSION_set1_id.3", + "doc/man/man3/SSL_accept.3", + "doc/man/man3/SSL_accept_stream.3", + "doc/man/man3/SSL_alert_type_string.3", + "doc/man/man3/SSL_alloc_buffers.3", + "doc/man/man3/SSL_check_chain.3", + "doc/man/man3/SSL_clear.3", + "doc/man/man3/SSL_connect.3", + "doc/man/man3/SSL_do_handshake.3", + "doc/man/man3/SSL_export_keying_material.3", + "doc/man/man3/SSL_extension_supported.3", + "doc/man/man3/SSL_free.3", + "doc/man/man3/SSL_get0_connection.3", + "doc/man/man3/SSL_get0_group_name.3", + "doc/man/man3/SSL_get0_peer_rpk.3", + "doc/man/man3/SSL_get0_peer_scts.3", + "doc/man/man3/SSL_get1_builtin_sigalgs.3", + "doc/man/man3/SSL_get_SSL_CTX.3", + "doc/man/man3/SSL_get_all_async_fds.3", + "doc/man/man3/SSL_get_certificate.3", + "doc/man/man3/SSL_get_ciphers.3", + "doc/man/man3/SSL_get_client_random.3", + "doc/man/man3/SSL_get_conn_close_info.3", + "doc/man/man3/SSL_get_current_cipher.3", + "doc/man/man3/SSL_get_default_timeout.3", + "doc/man/man3/SSL_get_error.3", + "doc/man/man3/SSL_get_event_timeout.3", + "doc/man/man3/SSL_get_extms_support.3", + "doc/man/man3/SSL_get_fd.3", + "doc/man/man3/SSL_get_handshake_rtt.3", + "doc/man/man3/SSL_get_peer_cert_chain.3", + "doc/man/man3/SSL_get_peer_certificate.3", + "doc/man/man3/SSL_get_peer_signature_nid.3", + "doc/man/man3/SSL_get_peer_tmp_key.3", + "doc/man/man3/SSL_get_psk_identity.3", + "doc/man/man3/SSL_get_rbio.3", + "doc/man/man3/SSL_get_rpoll_descriptor.3", + "doc/man/man3/SSL_get_session.3", + "doc/man/man3/SSL_get_shared_sigalgs.3", + "doc/man/man3/SSL_get_stream_id.3", + "doc/man/man3/SSL_get_stream_read_state.3", + "doc/man/man3/SSL_get_value_uint.3", + "doc/man/man3/SSL_get_verify_result.3", + "doc/man/man3/SSL_get_version.3", + "doc/man/man3/SSL_group_to_name.3", + "doc/man/man3/SSL_handle_events.3", + "doc/man/man3/SSL_in_init.3", + "doc/man/man3/SSL_inject_net_dgram.3", + "doc/man/man3/SSL_key_update.3", + "doc/man/man3/SSL_library_init.3", + "doc/man/man3/SSL_load_client_CA_file.3", + "doc/man/man3/SSL_new.3", + "doc/man/man3/SSL_new_domain.3", + "doc/man/man3/SSL_new_listener.3", + "doc/man/man3/SSL_new_stream.3", + "doc/man/man3/SSL_pending.3", + "doc/man/man3/SSL_poll.3", + "doc/man/man3/SSL_read.3", + "doc/man/man3/SSL_read_early_data.3", + "doc/man/man3/SSL_rstate_string.3", + "doc/man/man3/SSL_session_reused.3", + "doc/man/man3/SSL_set1_host.3", + "doc/man/man3/SSL_set1_initial_peer_addr.3", + "doc/man/man3/SSL_set1_server_cert_type.3", + "doc/man/man3/SSL_set_async_callback.3", + "doc/man/man3/SSL_set_bio.3", + "doc/man/man3/SSL_set_blocking_mode.3", + "doc/man/man3/SSL_set_connect_state.3", + "doc/man/man3/SSL_set_default_stream_mode.3", + "doc/man/man3/SSL_set_fd.3", + "doc/man/man3/SSL_set_incoming_stream_policy.3", + "doc/man/man3/SSL_set_quic_tls_cbs.3", + "doc/man/man3/SSL_set_retry_verify.3", + "doc/man/man3/SSL_set_session.3", + "doc/man/man3/SSL_set_session_secret_cb.3", + "doc/man/man3/SSL_set_shutdown.3", + "doc/man/man3/SSL_set_verify_result.3", + "doc/man/man3/SSL_shutdown.3", + "doc/man/man3/SSL_state_string.3", + "doc/man/man3/SSL_stream_conclude.3", + "doc/man/man3/SSL_stream_reset.3", + "doc/man/man3/SSL_want.3", + "doc/man/man3/SSL_write.3", + "doc/man/man3/TS_RESP_CTX_new.3", + "doc/man/man3/TS_VERIFY_CTX.3", + "doc/man/man3/UI_STRING.3", + "doc/man/man3/UI_UTIL_read_pw.3", + "doc/man/man3/UI_create_method.3", + "doc/man/man3/UI_new.3", + "doc/man/man3/X509V3_EXT_print.3", + "doc/man/man3/X509V3_get_d2i.3", + "doc/man/man3/X509V3_set_ctx.3", + "doc/man/man3/X509_ACERT_add1_attr.3", + "doc/man/man3/X509_ACERT_add_attr_nconf.3", + "doc/man/man3/X509_ACERT_get0_holder_baseCertId.3", + "doc/man/man3/X509_ACERT_get_attr.3", + "doc/man/man3/X509_ACERT_print_ex.3", + "doc/man/man3/X509_ALGOR_dup.3", + "doc/man/man3/X509_ATTRIBUTE.3", + "doc/man/man3/X509_CRL_get0_by_serial.3", + "doc/man/man3/X509_EXTENSION_set_object.3", + "doc/man/man3/X509_LOOKUP.3", + "doc/man/man3/X509_LOOKUP_hash_dir.3", + "doc/man/man3/X509_LOOKUP_meth_new.3", + "doc/man/man3/X509_NAME_ENTRY_get_object.3", + "doc/man/man3/X509_NAME_add_entry_by_txt.3", + "doc/man/man3/X509_NAME_get0_der.3", + "doc/man/man3/X509_NAME_get_index_by_NID.3", + "doc/man/man3/X509_NAME_print_ex.3", + "doc/man/man3/X509_PUBKEY_new.3", + "doc/man/man3/X509_REQ_get_attr.3", + "doc/man/man3/X509_REQ_get_extensions.3", + "doc/man/man3/X509_SIG_get0.3", + "doc/man/man3/X509_STORE_CTX_get_by_subject.3", + "doc/man/man3/X509_STORE_CTX_get_error.3", + "doc/man/man3/X509_STORE_CTX_new.3", + "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", + "doc/man/man3/X509_STORE_add_cert.3", + "doc/man/man3/X509_STORE_get0_param.3", + "doc/man/man3/X509_STORE_new.3", + "doc/man/man3/X509_STORE_set_verify_cb_func.3", + "doc/man/man3/X509_VERIFY_PARAM_set_flags.3", + "doc/man/man3/X509_add_cert.3", + "doc/man/man3/X509_check_ca.3", + "doc/man/man3/X509_check_host.3", + "doc/man/man3/X509_check_issued.3", + "doc/man/man3/X509_check_private_key.3", + "doc/man/man3/X509_check_purpose.3", + "doc/man/man3/X509_cmp.3", + "doc/man/man3/X509_cmp_time.3", + "doc/man/man3/X509_digest.3", + "doc/man/man3/X509_dup.3", + "doc/man/man3/X509_get0_distinguishing_id.3", + "doc/man/man3/X509_get0_notBefore.3", + "doc/man/man3/X509_get0_signature.3", + "doc/man/man3/X509_get0_uids.3", + "doc/man/man3/X509_get_default_cert_file.3", + "doc/man/man3/X509_get_extension_flags.3", + "doc/man/man3/X509_get_pubkey.3", + "doc/man/man3/X509_get_serialNumber.3", + "doc/man/man3/X509_get_subject_name.3", + "doc/man/man3/X509_get_version.3", + "doc/man/man3/X509_load_http.3", + "doc/man/man3/X509_new.3", + "doc/man/man3/X509_sign.3", + "doc/man/man3/X509_verify.3", + "doc/man/man3/X509_verify_cert.3", + "doc/man/man3/X509v3_get_ext_by_NID.3", + "doc/man/man3/b2i_PVK_bio_ex.3", + "doc/man/man3/d2i_PKCS8PrivateKey_bio.3", + "doc/man/man3/d2i_PrivateKey.3", + "doc/man/man3/d2i_RSAPrivateKey.3", + "doc/man/man3/d2i_SSL_SESSION.3", + "doc/man/man3/d2i_X509.3", + "doc/man/man3/i2d_CMS_bio_stream.3", + "doc/man/man3/i2d_PKCS7_bio_stream.3", + "doc/man/man3/i2d_re_X509_tbs.3", + "doc/man/man3/o2i_SCT_LIST.3", + "doc/man/man3/s2i_ASN1_IA5STRING.3" + ], + "man5" => [ + "doc/man/man5/config.5", + "doc/man/man5/fips_config.5", + "doc/man/man5/x509v3_config.5" + ], + "man7" => [ + "doc/man/man7/EVP_ASYM_CIPHER-RSA.7", + "doc/man/man7/EVP_ASYM_CIPHER-SM2.7", + "doc/man/man7/EVP_CIPHER-AES.7", + "doc/man/man7/EVP_CIPHER-ARIA.7", + "doc/man/man7/EVP_CIPHER-BLOWFISH.7", + "doc/man/man7/EVP_CIPHER-CAMELLIA.7", + "doc/man/man7/EVP_CIPHER-CAST.7", + "doc/man/man7/EVP_CIPHER-CHACHA.7", + "doc/man/man7/EVP_CIPHER-DES.7", + "doc/man/man7/EVP_CIPHER-IDEA.7", + "doc/man/man7/EVP_CIPHER-NULL.7", + "doc/man/man7/EVP_CIPHER-RC2.7", + "doc/man/man7/EVP_CIPHER-RC4.7", + "doc/man/man7/EVP_CIPHER-RC5.7", + "doc/man/man7/EVP_CIPHER-SEED.7", + "doc/man/man7/EVP_CIPHER-SM4.7", + "doc/man/man7/EVP_KDF-ARGON2.7", + "doc/man/man7/EVP_KDF-HKDF.7", + "doc/man/man7/EVP_KDF-HMAC-DRBG.7", + "doc/man/man7/EVP_KDF-KB.7", + "doc/man/man7/EVP_KDF-KRB5KDF.7", + "doc/man/man7/EVP_KDF-PBKDF1.7", + "doc/man/man7/EVP_KDF-PBKDF2.7", + "doc/man/man7/EVP_KDF-PKCS12KDF.7", + "doc/man/man7/EVP_KDF-PVKKDF.7", + "doc/man/man7/EVP_KDF-SCRYPT.7", + "doc/man/man7/EVP_KDF-SS.7", + "doc/man/man7/EVP_KDF-SSHKDF.7", + "doc/man/man7/EVP_KDF-TLS13_KDF.7", + "doc/man/man7/EVP_KDF-TLS1_PRF.7", + "doc/man/man7/EVP_KDF-X942-ASN1.7", + "doc/man/man7/EVP_KDF-X942-CONCAT.7", + "doc/man/man7/EVP_KDF-X963.7", + "doc/man/man7/EVP_KEM-EC.7", + "doc/man/man7/EVP_KEM-ML-KEM.7", + "doc/man/man7/EVP_KEM-RSA.7", + "doc/man/man7/EVP_KEM-X25519.7", + "doc/man/man7/EVP_KEYEXCH-DH.7", + "doc/man/man7/EVP_KEYEXCH-ECDH.7", + "doc/man/man7/EVP_KEYEXCH-X25519.7", + "doc/man/man7/EVP_MAC-BLAKE2.7", + "doc/man/man7/EVP_MAC-CMAC.7", + "doc/man/man7/EVP_MAC-GMAC.7", + "doc/man/man7/EVP_MAC-HMAC.7", + "doc/man/man7/EVP_MAC-KMAC.7", + "doc/man/man7/EVP_MAC-Poly1305.7", + "doc/man/man7/EVP_MAC-Siphash.7", + "doc/man/man7/EVP_MD-BLAKE2.7", + "doc/man/man7/EVP_MD-KECCAK.7", + "doc/man/man7/EVP_MD-MD2.7", + "doc/man/man7/EVP_MD-MD4.7", + "doc/man/man7/EVP_MD-MD5-SHA1.7", + "doc/man/man7/EVP_MD-MD5.7", + "doc/man/man7/EVP_MD-MDC2.7", + "doc/man/man7/EVP_MD-NULL.7", + "doc/man/man7/EVP_MD-RIPEMD160.7", + "doc/man/man7/EVP_MD-SHA1.7", + "doc/man/man7/EVP_MD-SHA2.7", + "doc/man/man7/EVP_MD-SHA3.7", + "doc/man/man7/EVP_MD-SHAKE.7", + "doc/man/man7/EVP_MD-SM3.7", + "doc/man/man7/EVP_MD-WHIRLPOOL.7", + "doc/man/man7/EVP_MD-common.7", + "doc/man/man7/EVP_PKEY-DH.7", + "doc/man/man7/EVP_PKEY-DSA.7", + "doc/man/man7/EVP_PKEY-EC.7", + "doc/man/man7/EVP_PKEY-FFC.7", + "doc/man/man7/EVP_PKEY-HMAC.7", + "doc/man/man7/EVP_PKEY-ML-DSA.7", + "doc/man/man7/EVP_PKEY-ML-KEM.7", + "doc/man/man7/EVP_PKEY-RSA.7", + "doc/man/man7/EVP_PKEY-SLH-DSA.7", + "doc/man/man7/EVP_PKEY-SM2.7", + "doc/man/man7/EVP_PKEY-X25519.7", + "doc/man/man7/EVP_RAND-CRNG-TEST.7", + "doc/man/man7/EVP_RAND-CTR-DRBG.7", + "doc/man/man7/EVP_RAND-HASH-DRBG.7", + "doc/man/man7/EVP_RAND-HMAC-DRBG.7", + "doc/man/man7/EVP_RAND-JITTER.7", + "doc/man/man7/EVP_RAND-SEED-SRC.7", + "doc/man/man7/EVP_RAND-TEST-RAND.7", + "doc/man/man7/EVP_RAND.7", + "doc/man/man7/EVP_SIGNATURE-DSA.7", + "doc/man/man7/EVP_SIGNATURE-ECDSA.7", + "doc/man/man7/EVP_SIGNATURE-ED25519.7", + "doc/man/man7/EVP_SIGNATURE-HMAC.7", + "doc/man/man7/EVP_SIGNATURE-ML-DSA.7", + "doc/man/man7/EVP_SIGNATURE-RSA.7", + "doc/man/man7/EVP_SIGNATURE-SLH-DSA.7", + "doc/man/man7/OSSL_PROVIDER-FIPS.7", + "doc/man/man7/OSSL_PROVIDER-base.7", + "doc/man/man7/OSSL_PROVIDER-default.7", + "doc/man/man7/OSSL_PROVIDER-legacy.7", + "doc/man/man7/OSSL_PROVIDER-null.7", + "doc/man/man7/OSSL_STORE-winstore.7", + "doc/man/man7/RAND.7", + "doc/man/man7/RSA-PSS.7", + "doc/man/man7/X25519.7", + "doc/man/man7/bio.7", + "doc/man/man7/ct.7", + "doc/man/man7/des_modes.7", + "doc/man/man7/evp.7", + "doc/man/man7/fips_module.7", + "doc/man/man7/life_cycle-cipher.7", + "doc/man/man7/life_cycle-digest.7", + "doc/man/man7/life_cycle-kdf.7", + "doc/man/man7/life_cycle-mac.7", + "doc/man/man7/life_cycle-pkey.7", + "doc/man/man7/life_cycle-rand.7", + "doc/man/man7/openssl-core.h.7", + "doc/man/man7/openssl-core_dispatch.h.7", + "doc/man/man7/openssl-core_names.h.7", + "doc/man/man7/openssl-env.7", + "doc/man/man7/openssl-glossary.7", + "doc/man/man7/openssl-qlog.7", + "doc/man/man7/openssl-quic-concurrency.7", + "doc/man/man7/openssl-quic.7", + "doc/man/man7/openssl-threads.7", + "doc/man/man7/openssl_user_macros.7", + "doc/man/man7/ossl-guide-introduction.7", + "doc/man/man7/ossl-guide-libcrypto-introduction.7", + "doc/man/man7/ossl-guide-libraries-introduction.7", + "doc/man/man7/ossl-guide-libssl-introduction.7", + "doc/man/man7/ossl-guide-migration.7", + "doc/man/man7/ossl-guide-quic-client-block.7", + "doc/man/man7/ossl-guide-quic-client-non-block.7", + "doc/man/man7/ossl-guide-quic-introduction.7", + "doc/man/man7/ossl-guide-quic-multi-stream.7", + "doc/man/man7/ossl-guide-quic-server-block.7", + "doc/man/man7/ossl-guide-quic-server-non-block.7", + "doc/man/man7/ossl-guide-tls-client-block.7", + "doc/man/man7/ossl-guide-tls-client-non-block.7", + "doc/man/man7/ossl-guide-tls-introduction.7", + "doc/man/man7/ossl-guide-tls-server-block.7", + "doc/man/man7/ossl_store-file.7", + "doc/man/man7/ossl_store.7", + "doc/man/man7/passphrase-encoding.7", + "doc/man/man7/property.7", + "doc/man/man7/provider-asym_cipher.7", + "doc/man/man7/provider-base.7", + "doc/man/man7/provider-cipher.7", + "doc/man/man7/provider-decoder.7", + "doc/man/man7/provider-digest.7", + "doc/man/man7/provider-encoder.7", + "doc/man/man7/provider-kdf.7", + "doc/man/man7/provider-kem.7", + "doc/man/man7/provider-keyexch.7", + "doc/man/man7/provider-keymgmt.7", + "doc/man/man7/provider-mac.7", + "doc/man/man7/provider-object.7", + "doc/man/man7/provider-rand.7", + "doc/man/man7/provider-signature.7", + "doc/man/man7/provider-skeymgmt.7", + "doc/man/man7/provider-storemgmt.7", + "doc/man/man7/provider.7", + "doc/man/man7/proxy-certificates.7", + "doc/man/man7/x509.7" + ] + }, + "modules" => [ + "providers/fips", + "providers/legacy" + ], + "programs" => [ + "apps/openssl" + ], + "scripts" => [ + "apps/CA.pl", + "apps/tsget.pl", + "tools/c_rehash", + "util/shlib_wrap.sh", + "util/wrap.pl" + ], + "shared_sources" => {}, + "sources" => { + "apps/CA.pl" => [ + "apps/CA.pl.in" + ], + "apps/lib/libapps-lib-app_libctx.o" => [ + "apps/lib/app_libctx.c" + ], + "apps/lib/libapps-lib-app_params.o" => [ + "apps/lib/app_params.c" + ], + "apps/lib/libapps-lib-app_provider.o" => [ + "apps/lib/app_provider.c" + ], + "apps/lib/libapps-lib-app_rand.o" => [ + "apps/lib/app_rand.c" + ], + "apps/lib/libapps-lib-app_x509.o" => [ + "apps/lib/app_x509.c" + ], + "apps/lib/libapps-lib-apps.o" => [ + "apps/lib/apps.c" + ], + "apps/lib/libapps-lib-apps_opt_printf.o" => [ + "apps/lib/apps_opt_printf.c" + ], + "apps/lib/libapps-lib-apps_ui.o" => [ + "apps/lib/apps_ui.c" + ], + "apps/lib/libapps-lib-columns.o" => [ + "apps/lib/columns.c" + ], + "apps/lib/libapps-lib-engine.o" => [ + "apps/lib/engine.c" + ], + "apps/lib/libapps-lib-engine_loader.o" => [ + "apps/lib/engine_loader.c" + ], + "apps/lib/libapps-lib-fmt.o" => [ + "apps/lib/fmt.c" + ], + "apps/lib/libapps-lib-http_server.o" => [ + "apps/lib/http_server.c" + ], + "apps/lib/libapps-lib-log.o" => [ + "apps/lib/log.c" + ], + "apps/lib/libapps-lib-names.o" => [ + "apps/lib/names.c" + ], + "apps/lib/libapps-lib-opt.o" => [ + "apps/lib/opt.c" + ], + "apps/lib/libapps-lib-s_cb.o" => [ + "apps/lib/s_cb.c" + ], + "apps/lib/libapps-lib-s_socket.o" => [ + "apps/lib/s_socket.c" + ], + "apps/lib/libapps-lib-tlssrp_depr.o" => [ + "apps/lib/tlssrp_depr.c" + ], + "apps/lib/openssl-bin-cmp_mock_srv.o" => [ + "apps/lib/cmp_mock_srv.c" + ], + "apps/libapps.a" => [ + "apps/lib/libapps-lib-app_libctx.o", + "apps/lib/libapps-lib-app_params.o", + "apps/lib/libapps-lib-app_provider.o", + "apps/lib/libapps-lib-app_rand.o", + "apps/lib/libapps-lib-app_x509.o", + "apps/lib/libapps-lib-apps.o", + "apps/lib/libapps-lib-apps_opt_printf.o", + "apps/lib/libapps-lib-apps_ui.o", + "apps/lib/libapps-lib-columns.o", + "apps/lib/libapps-lib-engine.o", + "apps/lib/libapps-lib-engine_loader.o", + "apps/lib/libapps-lib-fmt.o", + "apps/lib/libapps-lib-http_server.o", + "apps/lib/libapps-lib-log.o", + "apps/lib/libapps-lib-names.o", + "apps/lib/libapps-lib-opt.o", + "apps/lib/libapps-lib-s_cb.o", + "apps/lib/libapps-lib-s_socket.o", + "apps/lib/libapps-lib-tlssrp_depr.o" + ], + "apps/openssl" => [ + "apps/lib/openssl-bin-cmp_mock_srv.o", + "apps/openssl-bin-asn1parse.o", + "apps/openssl-bin-ca.o", + "apps/openssl-bin-ciphers.o", + "apps/openssl-bin-cmp.o", + "apps/openssl-bin-cms.o", + "apps/openssl-bin-crl.o", + "apps/openssl-bin-crl2pkcs7.o", + "apps/openssl-bin-dgst.o", + "apps/openssl-bin-dhparam.o", + "apps/openssl-bin-dsa.o", + "apps/openssl-bin-dsaparam.o", + "apps/openssl-bin-ec.o", + "apps/openssl-bin-ecparam.o", + "apps/openssl-bin-enc.o", + "apps/openssl-bin-engine.o", + "apps/openssl-bin-errstr.o", + "apps/openssl-bin-fipsinstall.o", + "apps/openssl-bin-gendsa.o", + "apps/openssl-bin-genpkey.o", + "apps/openssl-bin-genrsa.o", + "apps/openssl-bin-info.o", + "apps/openssl-bin-kdf.o", + "apps/openssl-bin-list.o", + "apps/openssl-bin-mac.o", + "apps/openssl-bin-nseq.o", + "apps/openssl-bin-ocsp.o", + "apps/openssl-bin-openssl.o", + "apps/openssl-bin-passwd.o", + "apps/openssl-bin-pkcs12.o", + "apps/openssl-bin-pkcs7.o", + "apps/openssl-bin-pkcs8.o", + "apps/openssl-bin-pkey.o", + "apps/openssl-bin-pkeyparam.o", + "apps/openssl-bin-pkeyutl.o", + "apps/openssl-bin-prime.o", + "apps/openssl-bin-progs.o", + "apps/openssl-bin-rand.o", + "apps/openssl-bin-rehash.o", + "apps/openssl-bin-req.o", + "apps/openssl-bin-rsa.o", + "apps/openssl-bin-rsautl.o", + "apps/openssl-bin-s_client.o", + "apps/openssl-bin-s_server.o", + "apps/openssl-bin-s_time.o", + "apps/openssl-bin-sess_id.o", + "apps/openssl-bin-skeyutl.o", + "apps/openssl-bin-smime.o", + "apps/openssl-bin-speed.o", + "apps/openssl-bin-spkac.o", + "apps/openssl-bin-srp.o", + "apps/openssl-bin-storeutl.o", + "apps/openssl-bin-ts.o", + "apps/openssl-bin-verify.o", + "apps/openssl-bin-version.o", + "apps/openssl-bin-x509.o" + ], + "apps/openssl-bin-asn1parse.o" => [ + "apps/asn1parse.c" + ], + "apps/openssl-bin-ca.o" => [ + "apps/ca.c" + ], + "apps/openssl-bin-ciphers.o" => [ + "apps/ciphers.c" + ], + "apps/openssl-bin-cmp.o" => [ + "apps/cmp.c" + ], + "apps/openssl-bin-cms.o" => [ + "apps/cms.c" + ], + "apps/openssl-bin-crl.o" => [ + "apps/crl.c" + ], + "apps/openssl-bin-crl2pkcs7.o" => [ + "apps/crl2pkcs7.c" + ], + "apps/openssl-bin-dgst.o" => [ + "apps/dgst.c" + ], + "apps/openssl-bin-dhparam.o" => [ + "apps/dhparam.c" + ], + "apps/openssl-bin-dsa.o" => [ + "apps/dsa.c" + ], + "apps/openssl-bin-dsaparam.o" => [ + "apps/dsaparam.c" + ], + "apps/openssl-bin-ec.o" => [ + "apps/ec.c" + ], + "apps/openssl-bin-ecparam.o" => [ + "apps/ecparam.c" + ], + "apps/openssl-bin-enc.o" => [ + "apps/enc.c" + ], + "apps/openssl-bin-engine.o" => [ + "apps/engine.c" + ], + "apps/openssl-bin-errstr.o" => [ + "apps/errstr.c" + ], + "apps/openssl-bin-fipsinstall.o" => [ + "apps/fipsinstall.c" + ], + "apps/openssl-bin-gendsa.o" => [ + "apps/gendsa.c" + ], + "apps/openssl-bin-genpkey.o" => [ + "apps/genpkey.c" + ], + "apps/openssl-bin-genrsa.o" => [ + "apps/genrsa.c" + ], + "apps/openssl-bin-info.o" => [ + "apps/info.c" + ], + "apps/openssl-bin-kdf.o" => [ + "apps/kdf.c" + ], + "apps/openssl-bin-list.o" => [ + "apps/list.c" + ], + "apps/openssl-bin-mac.o" => [ + "apps/mac.c" + ], + "apps/openssl-bin-nseq.o" => [ + "apps/nseq.c" + ], + "apps/openssl-bin-ocsp.o" => [ + "apps/ocsp.c" + ], + "apps/openssl-bin-openssl.o" => [ + "apps/openssl.c" + ], + "apps/openssl-bin-passwd.o" => [ + "apps/passwd.c" + ], + "apps/openssl-bin-pkcs12.o" => [ + "apps/pkcs12.c" + ], + "apps/openssl-bin-pkcs7.o" => [ + "apps/pkcs7.c" + ], + "apps/openssl-bin-pkcs8.o" => [ + "apps/pkcs8.c" + ], + "apps/openssl-bin-pkey.o" => [ + "apps/pkey.c" + ], + "apps/openssl-bin-pkeyparam.o" => [ + "apps/pkeyparam.c" + ], + "apps/openssl-bin-pkeyutl.o" => [ + "apps/pkeyutl.c" + ], + "apps/openssl-bin-prime.o" => [ + "apps/prime.c" + ], + "apps/openssl-bin-progs.o" => [ + "apps/progs.c" + ], + "apps/openssl-bin-rand.o" => [ + "apps/rand.c" + ], + "apps/openssl-bin-rehash.o" => [ + "apps/rehash.c" + ], + "apps/openssl-bin-req.o" => [ + "apps/req.c" + ], + "apps/openssl-bin-rsa.o" => [ + "apps/rsa.c" + ], + "apps/openssl-bin-rsautl.o" => [ + "apps/rsautl.c" + ], + "apps/openssl-bin-s_client.o" => [ + "apps/s_client.c" + ], + "apps/openssl-bin-s_server.o" => [ + "apps/s_server.c" + ], + "apps/openssl-bin-s_time.o" => [ + "apps/s_time.c" + ], + "apps/openssl-bin-sess_id.o" => [ + "apps/sess_id.c" + ], + "apps/openssl-bin-skeyutl.o" => [ + "apps/skeyutl.c" + ], + "apps/openssl-bin-smime.o" => [ + "apps/smime.c" + ], + "apps/openssl-bin-speed.o" => [ + "apps/speed.c" + ], + "apps/openssl-bin-spkac.o" => [ + "apps/spkac.c" + ], + "apps/openssl-bin-srp.o" => [ + "apps/srp.c" + ], + "apps/openssl-bin-storeutl.o" => [ + "apps/storeutl.c" + ], + "apps/openssl-bin-ts.o" => [ + "apps/ts.c" + ], + "apps/openssl-bin-verify.o" => [ + "apps/verify.c" + ], + "apps/openssl-bin-version.o" => [ + "apps/version.c" + ], + "apps/openssl-bin-x509.o" => [ + "apps/x509.c" + ], + "apps/tsget.pl" => [ + "apps/tsget.in" + ], + "crypto/aes/libcrypto-lib-aes-riscv64-zkn.o" => [ + "crypto/aes/aes-riscv64-zkn.s" + ], + "crypto/aes/libcrypto-lib-aes-riscv64-zvbb-zvkg-zvkned.o" => [ + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" + ], + "crypto/aes/libcrypto-lib-aes-riscv64-zvkb-zvkned.o" => [ + "crypto/aes/aes-riscv64-zvkb-zvkned.s" + ], + "crypto/aes/libcrypto-lib-aes-riscv64-zvkned.o" => [ + "crypto/aes/aes-riscv64-zvkned.s" + ], + "crypto/aes/libcrypto-lib-aes-riscv64.o" => [ + "crypto/aes/aes-riscv64.s" + ], + "crypto/aes/libcrypto-lib-aes_cbc.o" => [ + "crypto/aes/aes_cbc.c" + ], + "crypto/aes/libcrypto-lib-aes_cfb.o" => [ + "crypto/aes/aes_cfb.c" + ], + "crypto/aes/libcrypto-lib-aes_ecb.o" => [ + "crypto/aes/aes_ecb.c" + ], + "crypto/aes/libcrypto-lib-aes_ige.o" => [ + "crypto/aes/aes_ige.c" + ], + "crypto/aes/libcrypto-lib-aes_misc.o" => [ + "crypto/aes/aes_misc.c" + ], + "crypto/aes/libcrypto-lib-aes_ofb.o" => [ + "crypto/aes/aes_ofb.c" + ], + "crypto/aes/libcrypto-lib-aes_wrap.o" => [ + "crypto/aes/aes_wrap.c" + ], + "crypto/aes/libfips-lib-aes-riscv64-zkn.o" => [ + "crypto/aes/aes-riscv64-zkn.s" + ], + "crypto/aes/libfips-lib-aes-riscv64-zvbb-zvkg-zvkned.o" => [ + "crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s" + ], + "crypto/aes/libfips-lib-aes-riscv64-zvkb-zvkned.o" => [ + "crypto/aes/aes-riscv64-zvkb-zvkned.s" + ], + "crypto/aes/libfips-lib-aes-riscv64-zvkned.o" => [ + "crypto/aes/aes-riscv64-zvkned.s" + ], + "crypto/aes/libfips-lib-aes-riscv64.o" => [ + "crypto/aes/aes-riscv64.s" + ], + "crypto/aes/libfips-lib-aes_cbc.o" => [ + "crypto/aes/aes_cbc.c" + ], + "crypto/aes/libfips-lib-aes_ecb.o" => [ + "crypto/aes/aes_ecb.c" + ], + "crypto/aes/libfips-lib-aes_misc.o" => [ + "crypto/aes/aes_misc.c" + ], + "crypto/aria/libcrypto-lib-aria.o" => [ + "crypto/aria/aria.c" + ], + "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ + "crypto/asn1/a_bitstr.c" + ], + "crypto/asn1/libcrypto-lib-a_d2i_fp.o" => [ + "crypto/asn1/a_d2i_fp.c" + ], + "crypto/asn1/libcrypto-lib-a_digest.o" => [ + "crypto/asn1/a_digest.c" + ], + "crypto/asn1/libcrypto-lib-a_dup.o" => [ + "crypto/asn1/a_dup.c" + ], + "crypto/asn1/libcrypto-lib-a_gentm.o" => [ + "crypto/asn1/a_gentm.c" + ], + "crypto/asn1/libcrypto-lib-a_i2d_fp.o" => [ + "crypto/asn1/a_i2d_fp.c" + ], + "crypto/asn1/libcrypto-lib-a_int.o" => [ + "crypto/asn1/a_int.c" + ], + "crypto/asn1/libcrypto-lib-a_mbstr.o" => [ + "crypto/asn1/a_mbstr.c" + ], + "crypto/asn1/libcrypto-lib-a_object.o" => [ + "crypto/asn1/a_object.c" + ], + "crypto/asn1/libcrypto-lib-a_octet.o" => [ + "crypto/asn1/a_octet.c" + ], + "crypto/asn1/libcrypto-lib-a_print.o" => [ + "crypto/asn1/a_print.c" + ], + "crypto/asn1/libcrypto-lib-a_sign.o" => [ + "crypto/asn1/a_sign.c" + ], + "crypto/asn1/libcrypto-lib-a_strex.o" => [ + "crypto/asn1/a_strex.c" + ], + "crypto/asn1/libcrypto-lib-a_strnid.o" => [ + "crypto/asn1/a_strnid.c" + ], + "crypto/asn1/libcrypto-lib-a_time.o" => [ + "crypto/asn1/a_time.c" + ], + "crypto/asn1/libcrypto-lib-a_type.o" => [ + "crypto/asn1/a_type.c" + ], + "crypto/asn1/libcrypto-lib-a_utctm.o" => [ + "crypto/asn1/a_utctm.c" + ], + "crypto/asn1/libcrypto-lib-a_utf8.o" => [ + "crypto/asn1/a_utf8.c" + ], + "crypto/asn1/libcrypto-lib-a_verify.o" => [ + "crypto/asn1/a_verify.c" + ], + "crypto/asn1/libcrypto-lib-ameth_lib.o" => [ + "crypto/asn1/ameth_lib.c" + ], + "crypto/asn1/libcrypto-lib-asn1_err.o" => [ + "crypto/asn1/asn1_err.c" + ], + "crypto/asn1/libcrypto-lib-asn1_gen.o" => [ + "crypto/asn1/asn1_gen.c" + ], + "crypto/asn1/libcrypto-lib-asn1_item_list.o" => [ + "crypto/asn1/asn1_item_list.c" + ], + "crypto/asn1/libcrypto-lib-asn1_lib.o" => [ + "crypto/asn1/asn1_lib.c" + ], + "crypto/asn1/libcrypto-lib-asn1_parse.o" => [ + "crypto/asn1/asn1_parse.c" + ], + "crypto/asn1/libcrypto-lib-asn_mime.o" => [ + "crypto/asn1/asn_mime.c" + ], + "crypto/asn1/libcrypto-lib-asn_moid.o" => [ + "crypto/asn1/asn_moid.c" + ], + "crypto/asn1/libcrypto-lib-asn_mstbl.o" => [ + "crypto/asn1/asn_mstbl.c" + ], + "crypto/asn1/libcrypto-lib-asn_pack.o" => [ + "crypto/asn1/asn_pack.c" + ], + "crypto/asn1/libcrypto-lib-bio_asn1.o" => [ + "crypto/asn1/bio_asn1.c" + ], + "crypto/asn1/libcrypto-lib-bio_ndef.o" => [ + "crypto/asn1/bio_ndef.c" + ], + "crypto/asn1/libcrypto-lib-d2i_param.o" => [ + "crypto/asn1/d2i_param.c" + ], + "crypto/asn1/libcrypto-lib-d2i_pr.o" => [ + "crypto/asn1/d2i_pr.c" + ], + "crypto/asn1/libcrypto-lib-d2i_pu.o" => [ + "crypto/asn1/d2i_pu.c" + ], + "crypto/asn1/libcrypto-lib-evp_asn1.o" => [ + "crypto/asn1/evp_asn1.c" + ], + "crypto/asn1/libcrypto-lib-f_int.o" => [ + "crypto/asn1/f_int.c" + ], + "crypto/asn1/libcrypto-lib-f_string.o" => [ + "crypto/asn1/f_string.c" + ], + "crypto/asn1/libcrypto-lib-i2d_evp.o" => [ + "crypto/asn1/i2d_evp.c" + ], + "crypto/asn1/libcrypto-lib-n_pkey.o" => [ + "crypto/asn1/n_pkey.c" + ], + "crypto/asn1/libcrypto-lib-nsseq.o" => [ + "crypto/asn1/nsseq.c" + ], + "crypto/asn1/libcrypto-lib-p5_pbe.o" => [ + "crypto/asn1/p5_pbe.c" + ], + "crypto/asn1/libcrypto-lib-p5_pbev2.o" => [ + "crypto/asn1/p5_pbev2.c" + ], + "crypto/asn1/libcrypto-lib-p5_scrypt.o" => [ + "crypto/asn1/p5_scrypt.c" + ], + "crypto/asn1/libcrypto-lib-p8_pkey.o" => [ + "crypto/asn1/p8_pkey.c" + ], + "crypto/asn1/libcrypto-lib-t_bitst.o" => [ + "crypto/asn1/t_bitst.c" + ], + "crypto/asn1/libcrypto-lib-t_pkey.o" => [ + "crypto/asn1/t_pkey.c" + ], + "crypto/asn1/libcrypto-lib-t_spki.o" => [ + "crypto/asn1/t_spki.c" + ], + "crypto/asn1/libcrypto-lib-tasn_dec.o" => [ + "crypto/asn1/tasn_dec.c" + ], + "crypto/asn1/libcrypto-lib-tasn_enc.o" => [ + "crypto/asn1/tasn_enc.c" + ], + "crypto/asn1/libcrypto-lib-tasn_fre.o" => [ + "crypto/asn1/tasn_fre.c" + ], + "crypto/asn1/libcrypto-lib-tasn_new.o" => [ + "crypto/asn1/tasn_new.c" + ], + "crypto/asn1/libcrypto-lib-tasn_prn.o" => [ + "crypto/asn1/tasn_prn.c" + ], + "crypto/asn1/libcrypto-lib-tasn_scn.o" => [ + "crypto/asn1/tasn_scn.c" + ], + "crypto/asn1/libcrypto-lib-tasn_typ.o" => [ + "crypto/asn1/tasn_typ.c" + ], + "crypto/asn1/libcrypto-lib-tasn_utl.o" => [ + "crypto/asn1/tasn_utl.c" + ], + "crypto/asn1/libcrypto-lib-x_algor.o" => [ + "crypto/asn1/x_algor.c" + ], + "crypto/asn1/libcrypto-lib-x_bignum.o" => [ + "crypto/asn1/x_bignum.c" + ], + "crypto/asn1/libcrypto-lib-x_info.o" => [ + "crypto/asn1/x_info.c" + ], + "crypto/asn1/libcrypto-lib-x_int64.o" => [ + "crypto/asn1/x_int64.c" + ], + "crypto/asn1/libcrypto-lib-x_long.o" => [ + "crypto/asn1/x_long.c" + ], + "crypto/asn1/libcrypto-lib-x_pkey.o" => [ + "crypto/asn1/x_pkey.c" + ], + "crypto/asn1/libcrypto-lib-x_sig.o" => [ + "crypto/asn1/x_sig.c" + ], + "crypto/asn1/libcrypto-lib-x_spki.o" => [ + "crypto/asn1/x_spki.c" + ], + "crypto/asn1/libcrypto-lib-x_val.o" => [ + "crypto/asn1/x_val.c" + ], + "crypto/async/arch/libcrypto-lib-async_null.o" => [ + "crypto/async/arch/async_null.c" + ], + "crypto/async/arch/libcrypto-lib-async_posix.o" => [ + "crypto/async/arch/async_posix.c" + ], + "crypto/async/arch/libcrypto-lib-async_win.o" => [ + "crypto/async/arch/async_win.c" + ], + "crypto/async/libcrypto-lib-async.o" => [ + "crypto/async/async.c" + ], + "crypto/async/libcrypto-lib-async_err.o" => [ + "crypto/async/async_err.c" + ], + "crypto/async/libcrypto-lib-async_wait.o" => [ + "crypto/async/async_wait.c" + ], + "crypto/bf/libcrypto-lib-bf_cfb64.o" => [ + "crypto/bf/bf_cfb64.c" + ], + "crypto/bf/libcrypto-lib-bf_ecb.o" => [ + "crypto/bf/bf_ecb.c" + ], + "crypto/bf/libcrypto-lib-bf_enc.o" => [ + "crypto/bf/bf_enc.c" + ], + "crypto/bf/libcrypto-lib-bf_ofb64.o" => [ + "crypto/bf/bf_ofb64.c" + ], + "crypto/bf/libcrypto-lib-bf_skey.o" => [ + "crypto/bf/bf_skey.c" + ], + "crypto/bio/libcrypto-lib-bf_buff.o" => [ + "crypto/bio/bf_buff.c" + ], + "crypto/bio/libcrypto-lib-bf_lbuf.o" => [ + "crypto/bio/bf_lbuf.c" + ], + "crypto/bio/libcrypto-lib-bf_nbio.o" => [ + "crypto/bio/bf_nbio.c" + ], + "crypto/bio/libcrypto-lib-bf_null.o" => [ + "crypto/bio/bf_null.c" + ], + "crypto/bio/libcrypto-lib-bf_prefix.o" => [ + "crypto/bio/bf_prefix.c" + ], + "crypto/bio/libcrypto-lib-bf_readbuff.o" => [ + "crypto/bio/bf_readbuff.c" + ], + "crypto/bio/libcrypto-lib-bio_addr.o" => [ + "crypto/bio/bio_addr.c" + ], + "crypto/bio/libcrypto-lib-bio_cb.o" => [ + "crypto/bio/bio_cb.c" + ], + "crypto/bio/libcrypto-lib-bio_dump.o" => [ + "crypto/bio/bio_dump.c" + ], + "crypto/bio/libcrypto-lib-bio_err.o" => [ + "crypto/bio/bio_err.c" + ], + "crypto/bio/libcrypto-lib-bio_lib.o" => [ + "crypto/bio/bio_lib.c" + ], + "crypto/bio/libcrypto-lib-bio_meth.o" => [ + "crypto/bio/bio_meth.c" + ], + "crypto/bio/libcrypto-lib-bio_print.o" => [ + "crypto/bio/bio_print.c" + ], + "crypto/bio/libcrypto-lib-bio_sock.o" => [ + "crypto/bio/bio_sock.c" + ], + "crypto/bio/libcrypto-lib-bio_sock2.o" => [ + "crypto/bio/bio_sock2.c" + ], + "crypto/bio/libcrypto-lib-bss_acpt.o" => [ + "crypto/bio/bss_acpt.c" + ], + "crypto/bio/libcrypto-lib-bss_bio.o" => [ + "crypto/bio/bss_bio.c" + ], + "crypto/bio/libcrypto-lib-bss_conn.o" => [ + "crypto/bio/bss_conn.c" + ], + "crypto/bio/libcrypto-lib-bss_core.o" => [ + "crypto/bio/bss_core.c" + ], + "crypto/bio/libcrypto-lib-bss_dgram.o" => [ + "crypto/bio/bss_dgram.c" + ], + "crypto/bio/libcrypto-lib-bss_dgram_pair.o" => [ + "crypto/bio/bss_dgram_pair.c" + ], + "crypto/bio/libcrypto-lib-bss_fd.o" => [ + "crypto/bio/bss_fd.c" + ], + "crypto/bio/libcrypto-lib-bss_file.o" => [ + "crypto/bio/bss_file.c" + ], + "crypto/bio/libcrypto-lib-bss_log.o" => [ + "crypto/bio/bss_log.c" + ], + "crypto/bio/libcrypto-lib-bss_mem.o" => [ + "crypto/bio/bss_mem.c" + ], + "crypto/bio/libcrypto-lib-bss_null.o" => [ + "crypto/bio/bss_null.c" + ], + "crypto/bio/libcrypto-lib-bss_sock.o" => [ + "crypto/bio/bss_sock.c" + ], + "crypto/bio/libcrypto-lib-ossl_core_bio.o" => [ + "crypto/bio/ossl_core_bio.c" + ], + "crypto/bn/libcrypto-lib-bn_add.o" => [ + "crypto/bn/bn_add.c" + ], + "crypto/bn/libcrypto-lib-bn_asm.o" => [ + "crypto/bn/bn_asm.c" + ], + "crypto/bn/libcrypto-lib-bn_blind.o" => [ + "crypto/bn/bn_blind.c" + ], + "crypto/bn/libcrypto-lib-bn_const.o" => [ + "crypto/bn/bn_const.c" + ], + "crypto/bn/libcrypto-lib-bn_conv.o" => [ + "crypto/bn/bn_conv.c" + ], + "crypto/bn/libcrypto-lib-bn_ctx.o" => [ + "crypto/bn/bn_ctx.c" + ], + "crypto/bn/libcrypto-lib-bn_depr.o" => [ + "crypto/bn/bn_depr.c" + ], + "crypto/bn/libcrypto-lib-bn_dh.o" => [ + "crypto/bn/bn_dh.c" + ], + "crypto/bn/libcrypto-lib-bn_div.o" => [ + "crypto/bn/bn_div.c" + ], + "crypto/bn/libcrypto-lib-bn_err.o" => [ + "crypto/bn/bn_err.c" + ], + "crypto/bn/libcrypto-lib-bn_exp.o" => [ + "crypto/bn/bn_exp.c" + ], + "crypto/bn/libcrypto-lib-bn_exp2.o" => [ + "crypto/bn/bn_exp2.c" + ], + "crypto/bn/libcrypto-lib-bn_gcd.o" => [ + "crypto/bn/bn_gcd.c" + ], + "crypto/bn/libcrypto-lib-bn_gf2m.o" => [ + "crypto/bn/bn_gf2m.c" + ], + "crypto/bn/libcrypto-lib-bn_intern.o" => [ + "crypto/bn/bn_intern.c" + ], + "crypto/bn/libcrypto-lib-bn_kron.o" => [ + "crypto/bn/bn_kron.c" + ], + "crypto/bn/libcrypto-lib-bn_lib.o" => [ + "crypto/bn/bn_lib.c" + ], + "crypto/bn/libcrypto-lib-bn_mod.o" => [ + "crypto/bn/bn_mod.c" + ], + "crypto/bn/libcrypto-lib-bn_mont.o" => [ + "crypto/bn/bn_mont.c" + ], + "crypto/bn/libcrypto-lib-bn_mpi.o" => [ + "crypto/bn/bn_mpi.c" + ], + "crypto/bn/libcrypto-lib-bn_mul.o" => [ + "crypto/bn/bn_mul.c" + ], + "crypto/bn/libcrypto-lib-bn_nist.o" => [ + "crypto/bn/bn_nist.c" + ], + "crypto/bn/libcrypto-lib-bn_prime.o" => [ + "crypto/bn/bn_prime.c" + ], + "crypto/bn/libcrypto-lib-bn_print.o" => [ + "crypto/bn/bn_print.c" + ], + "crypto/bn/libcrypto-lib-bn_rand.o" => [ + "crypto/bn/bn_rand.c" + ], + "crypto/bn/libcrypto-lib-bn_recp.o" => [ + "crypto/bn/bn_recp.c" + ], + "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o" => [ + "crypto/bn/bn_rsa_fips186_4.c" + ], + "crypto/bn/libcrypto-lib-bn_shift.o" => [ + "crypto/bn/bn_shift.c" + ], + "crypto/bn/libcrypto-lib-bn_sqr.o" => [ + "crypto/bn/bn_sqr.c" + ], + "crypto/bn/libcrypto-lib-bn_sqrt.o" => [ + "crypto/bn/bn_sqrt.c" + ], + "crypto/bn/libcrypto-lib-bn_srp.o" => [ + "crypto/bn/bn_srp.c" + ], + "crypto/bn/libcrypto-lib-bn_word.o" => [ + "crypto/bn/bn_word.c" + ], + "crypto/bn/libcrypto-lib-bn_x931p.o" => [ + "crypto/bn/bn_x931p.c" + ], + "crypto/bn/libfips-lib-bn_add.o" => [ + "crypto/bn/bn_add.c" + ], + "crypto/bn/libfips-lib-bn_asm.o" => [ + "crypto/bn/bn_asm.c" + ], + "crypto/bn/libfips-lib-bn_blind.o" => [ + "crypto/bn/bn_blind.c" + ], + "crypto/bn/libfips-lib-bn_const.o" => [ + "crypto/bn/bn_const.c" + ], + "crypto/bn/libfips-lib-bn_conv.o" => [ + "crypto/bn/bn_conv.c" + ], + "crypto/bn/libfips-lib-bn_ctx.o" => [ + "crypto/bn/bn_ctx.c" + ], + "crypto/bn/libfips-lib-bn_dh.o" => [ + "crypto/bn/bn_dh.c" + ], + "crypto/bn/libfips-lib-bn_div.o" => [ + "crypto/bn/bn_div.c" + ], + "crypto/bn/libfips-lib-bn_exp.o" => [ + "crypto/bn/bn_exp.c" + ], + "crypto/bn/libfips-lib-bn_exp2.o" => [ + "crypto/bn/bn_exp2.c" + ], + "crypto/bn/libfips-lib-bn_gcd.o" => [ + "crypto/bn/bn_gcd.c" + ], + "crypto/bn/libfips-lib-bn_gf2m.o" => [ + "crypto/bn/bn_gf2m.c" + ], + "crypto/bn/libfips-lib-bn_intern.o" => [ + "crypto/bn/bn_intern.c" + ], + "crypto/bn/libfips-lib-bn_kron.o" => [ + "crypto/bn/bn_kron.c" + ], + "crypto/bn/libfips-lib-bn_lib.o" => [ + "crypto/bn/bn_lib.c" + ], + "crypto/bn/libfips-lib-bn_mod.o" => [ + "crypto/bn/bn_mod.c" + ], + "crypto/bn/libfips-lib-bn_mont.o" => [ + "crypto/bn/bn_mont.c" + ], + "crypto/bn/libfips-lib-bn_mpi.o" => [ + "crypto/bn/bn_mpi.c" + ], + "crypto/bn/libfips-lib-bn_mul.o" => [ + "crypto/bn/bn_mul.c" + ], + "crypto/bn/libfips-lib-bn_nist.o" => [ + "crypto/bn/bn_nist.c" + ], + "crypto/bn/libfips-lib-bn_prime.o" => [ + "crypto/bn/bn_prime.c" + ], + "crypto/bn/libfips-lib-bn_rand.o" => [ + "crypto/bn/bn_rand.c" + ], + "crypto/bn/libfips-lib-bn_recp.o" => [ + "crypto/bn/bn_recp.c" + ], + "crypto/bn/libfips-lib-bn_rsa_fips186_4.o" => [ + "crypto/bn/bn_rsa_fips186_4.c" + ], + "crypto/bn/libfips-lib-bn_shift.o" => [ + "crypto/bn/bn_shift.c" + ], + "crypto/bn/libfips-lib-bn_sqr.o" => [ + "crypto/bn/bn_sqr.c" + ], + "crypto/bn/libfips-lib-bn_sqrt.o" => [ + "crypto/bn/bn_sqrt.c" + ], + "crypto/bn/libfips-lib-bn_word.o" => [ + "crypto/bn/bn_word.c" + ], + "crypto/buffer/libcrypto-lib-buf_err.o" => [ + "crypto/buffer/buf_err.c" + ], + "crypto/buffer/libcrypto-lib-buffer.o" => [ + "crypto/buffer/buffer.c" + ], + "crypto/buffer/libfips-lib-buffer.o" => [ + "crypto/buffer/buffer.c" + ], + "crypto/camellia/libcrypto-lib-camellia.o" => [ + "crypto/camellia/camellia.c" + ], + "crypto/camellia/libcrypto-lib-cmll_cbc.o" => [ + "crypto/camellia/cmll_cbc.c" + ], + "crypto/camellia/libcrypto-lib-cmll_cfb.o" => [ + "crypto/camellia/cmll_cfb.c" + ], + "crypto/camellia/libcrypto-lib-cmll_ctr.o" => [ + "crypto/camellia/cmll_ctr.c" + ], + "crypto/camellia/libcrypto-lib-cmll_ecb.o" => [ + "crypto/camellia/cmll_ecb.c" + ], + "crypto/camellia/libcrypto-lib-cmll_misc.o" => [ + "crypto/camellia/cmll_misc.c" + ], + "crypto/camellia/libcrypto-lib-cmll_ofb.o" => [ + "crypto/camellia/cmll_ofb.c" + ], + "crypto/cast/libcrypto-lib-c_cfb64.o" => [ + "crypto/cast/c_cfb64.c" + ], + "crypto/cast/libcrypto-lib-c_ecb.o" => [ + "crypto/cast/c_ecb.c" + ], + "crypto/cast/libcrypto-lib-c_enc.o" => [ + "crypto/cast/c_enc.c" + ], + "crypto/cast/libcrypto-lib-c_ofb64.o" => [ + "crypto/cast/c_ofb64.c" + ], + "crypto/cast/libcrypto-lib-c_skey.o" => [ + "crypto/cast/c_skey.c" + ], + "crypto/chacha/libcrypto-lib-chacha-riscv64-v-zbb-zvkb.o" => [ + "crypto/chacha/chacha-riscv64-v-zbb-zvkb.s" + ], + "crypto/chacha/libcrypto-lib-chacha-riscv64-v-zbb.o" => [ + "crypto/chacha/chacha-riscv64-v-zbb.s" + ], + "crypto/chacha/libcrypto-lib-chacha_enc.o" => [ + "crypto/chacha/chacha_enc.c" + ], + "crypto/chacha/libcrypto-lib-chacha_riscv.o" => [ + "crypto/chacha/chacha_riscv.c" + ], + "crypto/cmac/libcrypto-lib-cmac.o" => [ + "crypto/cmac/cmac.c" + ], + "crypto/cmac/libfips-lib-cmac.o" => [ + "crypto/cmac/cmac.c" + ], + "crypto/cmp/libcrypto-lib-cmp_asn.o" => [ + "crypto/cmp/cmp_asn.c" + ], + "crypto/cmp/libcrypto-lib-cmp_client.o" => [ + "crypto/cmp/cmp_client.c" + ], + "crypto/cmp/libcrypto-lib-cmp_ctx.o" => [ + "crypto/cmp/cmp_ctx.c" + ], + "crypto/cmp/libcrypto-lib-cmp_err.o" => [ + "crypto/cmp/cmp_err.c" + ], + "crypto/cmp/libcrypto-lib-cmp_genm.o" => [ + "crypto/cmp/cmp_genm.c" + ], + "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ + "crypto/cmp/cmp_hdr.c" + ], + "crypto/cmp/libcrypto-lib-cmp_http.o" => [ + "crypto/cmp/cmp_http.c" + ], + "crypto/cmp/libcrypto-lib-cmp_msg.o" => [ + "crypto/cmp/cmp_msg.c" + ], + "crypto/cmp/libcrypto-lib-cmp_protect.o" => [ + "crypto/cmp/cmp_protect.c" + ], + "crypto/cmp/libcrypto-lib-cmp_server.o" => [ + "crypto/cmp/cmp_server.c" + ], + "crypto/cmp/libcrypto-lib-cmp_status.o" => [ + "crypto/cmp/cmp_status.c" + ], + "crypto/cmp/libcrypto-lib-cmp_util.o" => [ + "crypto/cmp/cmp_util.c" + ], + "crypto/cmp/libcrypto-lib-cmp_vfy.o" => [ + "crypto/cmp/cmp_vfy.c" + ], + "crypto/cms/libcrypto-lib-cms_asn1.o" => [ + "crypto/cms/cms_asn1.c" + ], + "crypto/cms/libcrypto-lib-cms_att.o" => [ + "crypto/cms/cms_att.c" + ], + "crypto/cms/libcrypto-lib-cms_cd.o" => [ + "crypto/cms/cms_cd.c" + ], + "crypto/cms/libcrypto-lib-cms_dd.o" => [ + "crypto/cms/cms_dd.c" + ], + "crypto/cms/libcrypto-lib-cms_dh.o" => [ + "crypto/cms/cms_dh.c" + ], + "crypto/cms/libcrypto-lib-cms_ec.o" => [ + "crypto/cms/cms_ec.c" + ], + "crypto/cms/libcrypto-lib-cms_enc.o" => [ + "crypto/cms/cms_enc.c" + ], + "crypto/cms/libcrypto-lib-cms_env.o" => [ + "crypto/cms/cms_env.c" + ], + "crypto/cms/libcrypto-lib-cms_err.o" => [ + "crypto/cms/cms_err.c" + ], + "crypto/cms/libcrypto-lib-cms_ess.o" => [ + "crypto/cms/cms_ess.c" + ], + "crypto/cms/libcrypto-lib-cms_io.o" => [ + "crypto/cms/cms_io.c" + ], + "crypto/cms/libcrypto-lib-cms_kari.o" => [ + "crypto/cms/cms_kari.c" + ], + "crypto/cms/libcrypto-lib-cms_lib.o" => [ + "crypto/cms/cms_lib.c" + ], + "crypto/cms/libcrypto-lib-cms_pwri.o" => [ + "crypto/cms/cms_pwri.c" + ], + "crypto/cms/libcrypto-lib-cms_rsa.o" => [ + "crypto/cms/cms_rsa.c" + ], + "crypto/cms/libcrypto-lib-cms_sd.o" => [ + "crypto/cms/cms_sd.c" + ], + "crypto/cms/libcrypto-lib-cms_smime.o" => [ + "crypto/cms/cms_smime.c" + ], + "crypto/comp/libcrypto-lib-c_brotli.o" => [ + "crypto/comp/c_brotli.c" + ], + "crypto/comp/libcrypto-lib-c_zlib.o" => [ + "crypto/comp/c_zlib.c" + ], + "crypto/comp/libcrypto-lib-c_zstd.o" => [ + "crypto/comp/c_zstd.c" + ], + "crypto/comp/libcrypto-lib-comp_err.o" => [ + "crypto/comp/comp_err.c" + ], + "crypto/comp/libcrypto-lib-comp_lib.o" => [ + "crypto/comp/comp_lib.c" + ], + "crypto/conf/libcrypto-lib-conf_api.o" => [ + "crypto/conf/conf_api.c" + ], + "crypto/conf/libcrypto-lib-conf_def.o" => [ + "crypto/conf/conf_def.c" + ], + "crypto/conf/libcrypto-lib-conf_err.o" => [ + "crypto/conf/conf_err.c" + ], + "crypto/conf/libcrypto-lib-conf_lib.o" => [ + "crypto/conf/conf_lib.c" + ], + "crypto/conf/libcrypto-lib-conf_mall.o" => [ + "crypto/conf/conf_mall.c" + ], + "crypto/conf/libcrypto-lib-conf_mod.o" => [ + "crypto/conf/conf_mod.c" + ], + "crypto/conf/libcrypto-lib-conf_sap.o" => [ + "crypto/conf/conf_sap.c" + ], + "crypto/conf/libcrypto-lib-conf_ssl.o" => [ + "crypto/conf/conf_ssl.c" + ], + "crypto/crmf/libcrypto-lib-crmf_asn.o" => [ + "crypto/crmf/crmf_asn.c" + ], + "crypto/crmf/libcrypto-lib-crmf_err.o" => [ + "crypto/crmf/crmf_err.c" + ], + "crypto/crmf/libcrypto-lib-crmf_lib.o" => [ + "crypto/crmf/crmf_lib.c" + ], + "crypto/crmf/libcrypto-lib-crmf_pbm.o" => [ + "crypto/crmf/crmf_pbm.c" + ], + "crypto/ct/libcrypto-lib-ct_b64.o" => [ + "crypto/ct/ct_b64.c" + ], + "crypto/ct/libcrypto-lib-ct_err.o" => [ + "crypto/ct/ct_err.c" + ], + "crypto/ct/libcrypto-lib-ct_log.o" => [ + "crypto/ct/ct_log.c" + ], + "crypto/ct/libcrypto-lib-ct_oct.o" => [ + "crypto/ct/ct_oct.c" + ], + "crypto/ct/libcrypto-lib-ct_policy.o" => [ + "crypto/ct/ct_policy.c" + ], + "crypto/ct/libcrypto-lib-ct_prn.o" => [ + "crypto/ct/ct_prn.c" + ], + "crypto/ct/libcrypto-lib-ct_sct.o" => [ + "crypto/ct/ct_sct.c" + ], + "crypto/ct/libcrypto-lib-ct_sct_ctx.o" => [ + "crypto/ct/ct_sct_ctx.c" + ], + "crypto/ct/libcrypto-lib-ct_vfy.o" => [ + "crypto/ct/ct_vfy.c" + ], + "crypto/ct/libcrypto-lib-ct_x509v3.o" => [ + "crypto/ct/ct_x509v3.c" + ], + "crypto/des/libcrypto-lib-cbc_cksm.o" => [ + "crypto/des/cbc_cksm.c" + ], + "crypto/des/libcrypto-lib-cbc_enc.o" => [ + "crypto/des/cbc_enc.c" + ], + "crypto/des/libcrypto-lib-cfb64ede.o" => [ + "crypto/des/cfb64ede.c" + ], + "crypto/des/libcrypto-lib-cfb64enc.o" => [ + "crypto/des/cfb64enc.c" + ], + "crypto/des/libcrypto-lib-cfb_enc.o" => [ + "crypto/des/cfb_enc.c" + ], + "crypto/des/libcrypto-lib-des_enc.o" => [ + "crypto/des/des_enc.c" + ], + "crypto/des/libcrypto-lib-ecb3_enc.o" => [ + "crypto/des/ecb3_enc.c" + ], + "crypto/des/libcrypto-lib-ecb_enc.o" => [ + "crypto/des/ecb_enc.c" + ], + "crypto/des/libcrypto-lib-fcrypt.o" => [ + "crypto/des/fcrypt.c" + ], + "crypto/des/libcrypto-lib-fcrypt_b.o" => [ + "crypto/des/fcrypt_b.c" + ], + "crypto/des/libcrypto-lib-ofb64ede.o" => [ + "crypto/des/ofb64ede.c" + ], + "crypto/des/libcrypto-lib-ofb64enc.o" => [ + "crypto/des/ofb64enc.c" + ], + "crypto/des/libcrypto-lib-ofb_enc.o" => [ + "crypto/des/ofb_enc.c" + ], + "crypto/des/libcrypto-lib-pcbc_enc.o" => [ + "crypto/des/pcbc_enc.c" + ], + "crypto/des/libcrypto-lib-qud_cksm.o" => [ + "crypto/des/qud_cksm.c" + ], + "crypto/des/libcrypto-lib-rand_key.o" => [ + "crypto/des/rand_key.c" + ], + "crypto/des/libcrypto-lib-set_key.o" => [ + "crypto/des/set_key.c" + ], + "crypto/des/libcrypto-lib-str2key.o" => [ + "crypto/des/str2key.c" + ], + "crypto/des/libcrypto-lib-xcbc_enc.o" => [ + "crypto/des/xcbc_enc.c" + ], + "crypto/des/libfips-lib-des_enc.o" => [ + "crypto/des/des_enc.c" + ], + "crypto/des/libfips-lib-ecb3_enc.o" => [ + "crypto/des/ecb3_enc.c" + ], + "crypto/des/libfips-lib-fcrypt_b.o" => [ + "crypto/des/fcrypt_b.c" + ], + "crypto/des/libfips-lib-set_key.o" => [ + "crypto/des/set_key.c" + ], + "crypto/dh/libcrypto-lib-dh_ameth.o" => [ + "crypto/dh/dh_ameth.c" + ], + "crypto/dh/libcrypto-lib-dh_asn1.o" => [ + "crypto/dh/dh_asn1.c" + ], + "crypto/dh/libcrypto-lib-dh_backend.o" => [ + "crypto/dh/dh_backend.c" + ], + "crypto/dh/libcrypto-lib-dh_check.o" => [ + "crypto/dh/dh_check.c" + ], + "crypto/dh/libcrypto-lib-dh_depr.o" => [ + "crypto/dh/dh_depr.c" + ], + "crypto/dh/libcrypto-lib-dh_err.o" => [ + "crypto/dh/dh_err.c" + ], + "crypto/dh/libcrypto-lib-dh_gen.o" => [ + "crypto/dh/dh_gen.c" + ], + "crypto/dh/libcrypto-lib-dh_group_params.o" => [ + "crypto/dh/dh_group_params.c" + ], + "crypto/dh/libcrypto-lib-dh_kdf.o" => [ + "crypto/dh/dh_kdf.c" + ], + "crypto/dh/libcrypto-lib-dh_key.o" => [ + "crypto/dh/dh_key.c" + ], + "crypto/dh/libcrypto-lib-dh_lib.o" => [ + "crypto/dh/dh_lib.c" + ], + "crypto/dh/libcrypto-lib-dh_meth.o" => [ + "crypto/dh/dh_meth.c" + ], + "crypto/dh/libcrypto-lib-dh_pmeth.o" => [ + "crypto/dh/dh_pmeth.c" + ], + "crypto/dh/libcrypto-lib-dh_prn.o" => [ + "crypto/dh/dh_prn.c" + ], + "crypto/dh/libcrypto-lib-dh_rfc5114.o" => [ + "crypto/dh/dh_rfc5114.c" + ], + "crypto/dh/libfips-lib-dh_backend.o" => [ + "crypto/dh/dh_backend.c" + ], + "crypto/dh/libfips-lib-dh_check.o" => [ + "crypto/dh/dh_check.c" + ], + "crypto/dh/libfips-lib-dh_gen.o" => [ + "crypto/dh/dh_gen.c" + ], + "crypto/dh/libfips-lib-dh_group_params.o" => [ + "crypto/dh/dh_group_params.c" + ], + "crypto/dh/libfips-lib-dh_kdf.o" => [ + "crypto/dh/dh_kdf.c" + ], + "crypto/dh/libfips-lib-dh_key.o" => [ + "crypto/dh/dh_key.c" + ], + "crypto/dh/libfips-lib-dh_lib.o" => [ + "crypto/dh/dh_lib.c" + ], + "crypto/dsa/libcrypto-lib-dsa_ameth.o" => [ + "crypto/dsa/dsa_ameth.c" + ], + "crypto/dsa/libcrypto-lib-dsa_asn1.o" => [ + "crypto/dsa/dsa_asn1.c" + ], + "crypto/dsa/libcrypto-lib-dsa_backend.o" => [ + "crypto/dsa/dsa_backend.c" + ], + "crypto/dsa/libcrypto-lib-dsa_check.o" => [ + "crypto/dsa/dsa_check.c" + ], + "crypto/dsa/libcrypto-lib-dsa_depr.o" => [ + "crypto/dsa/dsa_depr.c" + ], + "crypto/dsa/libcrypto-lib-dsa_err.o" => [ + "crypto/dsa/dsa_err.c" + ], + "crypto/dsa/libcrypto-lib-dsa_gen.o" => [ + "crypto/dsa/dsa_gen.c" + ], + "crypto/dsa/libcrypto-lib-dsa_key.o" => [ + "crypto/dsa/dsa_key.c" + ], + "crypto/dsa/libcrypto-lib-dsa_lib.o" => [ + "crypto/dsa/dsa_lib.c" + ], + "crypto/dsa/libcrypto-lib-dsa_meth.o" => [ + "crypto/dsa/dsa_meth.c" + ], + "crypto/dsa/libcrypto-lib-dsa_ossl.o" => [ + "crypto/dsa/dsa_ossl.c" + ], + "crypto/dsa/libcrypto-lib-dsa_pmeth.o" => [ + "crypto/dsa/dsa_pmeth.c" + ], + "crypto/dsa/libcrypto-lib-dsa_prn.o" => [ + "crypto/dsa/dsa_prn.c" + ], + "crypto/dsa/libcrypto-lib-dsa_sign.o" => [ + "crypto/dsa/dsa_sign.c" + ], + "crypto/dsa/libcrypto-lib-dsa_vrf.o" => [ + "crypto/dsa/dsa_vrf.c" + ], + "crypto/dsa/libfips-lib-dsa_backend.o" => [ + "crypto/dsa/dsa_backend.c" + ], + "crypto/dsa/libfips-lib-dsa_check.o" => [ + "crypto/dsa/dsa_check.c" + ], + "crypto/dsa/libfips-lib-dsa_gen.o" => [ + "crypto/dsa/dsa_gen.c" + ], + "crypto/dsa/libfips-lib-dsa_key.o" => [ + "crypto/dsa/dsa_key.c" + ], + "crypto/dsa/libfips-lib-dsa_lib.o" => [ + "crypto/dsa/dsa_lib.c" + ], + "crypto/dsa/libfips-lib-dsa_ossl.o" => [ + "crypto/dsa/dsa_ossl.c" + ], + "crypto/dsa/libfips-lib-dsa_sign.o" => [ + "crypto/dsa/dsa_sign.c" + ], + "crypto/dsa/libfips-lib-dsa_vrf.o" => [ + "crypto/dsa/dsa_vrf.c" + ], + "crypto/dso/libcrypto-lib-dso_dl.o" => [ + "crypto/dso/dso_dl.c" + ], + "crypto/dso/libcrypto-lib-dso_dlfcn.o" => [ + "crypto/dso/dso_dlfcn.c" + ], + "crypto/dso/libcrypto-lib-dso_err.o" => [ + "crypto/dso/dso_err.c" + ], + "crypto/dso/libcrypto-lib-dso_lib.o" => [ + "crypto/dso/dso_lib.c" + ], + "crypto/dso/libcrypto-lib-dso_openssl.o" => [ + "crypto/dso/dso_openssl.c" + ], + "crypto/dso/libcrypto-lib-dso_vms.o" => [ + "crypto/dso/dso_vms.c" + ], + "crypto/dso/libcrypto-lib-dso_win32.o" => [ + "crypto/dso/dso_win32.c" + ], + "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o" => [ + "crypto/ec/curve448/arch_32/f_impl32.c" + ], + "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o" => [ + "crypto/ec/curve448/arch_32/f_impl32.c" + ], + "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o" => [ + "crypto/ec/curve448/arch_64/f_impl64.c" + ], + "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o" => [ + "crypto/ec/curve448/arch_64/f_impl64.c" + ], + "crypto/ec/curve448/libcrypto-lib-curve448.o" => [ + "crypto/ec/curve448/curve448.c" + ], + "crypto/ec/curve448/libcrypto-lib-curve448_tables.o" => [ + "crypto/ec/curve448/curve448_tables.c" + ], + "crypto/ec/curve448/libcrypto-lib-eddsa.o" => [ + "crypto/ec/curve448/eddsa.c" + ], + "crypto/ec/curve448/libcrypto-lib-f_generic.o" => [ + "crypto/ec/curve448/f_generic.c" + ], + "crypto/ec/curve448/libcrypto-lib-scalar.o" => [ + "crypto/ec/curve448/scalar.c" + ], + "crypto/ec/curve448/libfips-lib-curve448.o" => [ + "crypto/ec/curve448/curve448.c" + ], + "crypto/ec/curve448/libfips-lib-curve448_tables.o" => [ + "crypto/ec/curve448/curve448_tables.c" + ], + "crypto/ec/curve448/libfips-lib-eddsa.o" => [ + "crypto/ec/curve448/eddsa.c" + ], + "crypto/ec/curve448/libfips-lib-f_generic.o" => [ + "crypto/ec/curve448/f_generic.c" + ], + "crypto/ec/curve448/libfips-lib-scalar.o" => [ + "crypto/ec/curve448/scalar.c" + ], + "crypto/ec/libcrypto-lib-curve25519.o" => [ + "crypto/ec/curve25519.c" + ], + "crypto/ec/libcrypto-lib-ec2_oct.o" => [ + "crypto/ec/ec2_oct.c" + ], + "crypto/ec/libcrypto-lib-ec2_smpl.o" => [ + "crypto/ec/ec2_smpl.c" + ], + "crypto/ec/libcrypto-lib-ec_ameth.o" => [ + "crypto/ec/ec_ameth.c" + ], + "crypto/ec/libcrypto-lib-ec_asn1.o" => [ + "crypto/ec/ec_asn1.c" + ], + "crypto/ec/libcrypto-lib-ec_backend.o" => [ + "crypto/ec/ec_backend.c" + ], + "crypto/ec/libcrypto-lib-ec_check.o" => [ + "crypto/ec/ec_check.c" + ], + "crypto/ec/libcrypto-lib-ec_curve.o" => [ + "crypto/ec/ec_curve.c" + ], + "crypto/ec/libcrypto-lib-ec_cvt.o" => [ + "crypto/ec/ec_cvt.c" + ], + "crypto/ec/libcrypto-lib-ec_deprecated.o" => [ + "crypto/ec/ec_deprecated.c" + ], + "crypto/ec/libcrypto-lib-ec_err.o" => [ + "crypto/ec/ec_err.c" + ], + "crypto/ec/libcrypto-lib-ec_key.o" => [ + "crypto/ec/ec_key.c" + ], + "crypto/ec/libcrypto-lib-ec_kmeth.o" => [ + "crypto/ec/ec_kmeth.c" + ], + "crypto/ec/libcrypto-lib-ec_lib.o" => [ + "crypto/ec/ec_lib.c" + ], + "crypto/ec/libcrypto-lib-ec_mult.o" => [ + "crypto/ec/ec_mult.c" + ], + "crypto/ec/libcrypto-lib-ec_oct.o" => [ + "crypto/ec/ec_oct.c" + ], + "crypto/ec/libcrypto-lib-ec_pmeth.o" => [ + "crypto/ec/ec_pmeth.c" + ], + "crypto/ec/libcrypto-lib-ec_print.o" => [ + "crypto/ec/ec_print.c" + ], + "crypto/ec/libcrypto-lib-ecdh_kdf.o" => [ + "crypto/ec/ecdh_kdf.c" + ], + "crypto/ec/libcrypto-lib-ecdh_ossl.o" => [ + "crypto/ec/ecdh_ossl.c" + ], + "crypto/ec/libcrypto-lib-ecdsa_ossl.o" => [ + "crypto/ec/ecdsa_ossl.c" + ], + "crypto/ec/libcrypto-lib-ecdsa_sign.o" => [ + "crypto/ec/ecdsa_sign.c" + ], + "crypto/ec/libcrypto-lib-ecdsa_vrf.o" => [ + "crypto/ec/ecdsa_vrf.c" + ], + "crypto/ec/libcrypto-lib-eck_prn.o" => [ + "crypto/ec/eck_prn.c" + ], + "crypto/ec/libcrypto-lib-ecp_mont.o" => [ + "crypto/ec/ecp_mont.c" + ], + "crypto/ec/libcrypto-lib-ecp_nist.o" => [ + "crypto/ec/ecp_nist.c" + ], + "crypto/ec/libcrypto-lib-ecp_oct.o" => [ + "crypto/ec/ecp_oct.c" + ], + "crypto/ec/libcrypto-lib-ecp_smpl.o" => [ + "crypto/ec/ecp_smpl.c" + ], + "crypto/ec/libcrypto-lib-ecx_backend.o" => [ + "crypto/ec/ecx_backend.c" + ], + "crypto/ec/libcrypto-lib-ecx_key.o" => [ + "crypto/ec/ecx_key.c" + ], + "crypto/ec/libcrypto-lib-ecx_meth.o" => [ + "crypto/ec/ecx_meth.c" + ], + "crypto/ec/libfips-lib-curve25519.o" => [ + "crypto/ec/curve25519.c" + ], + "crypto/ec/libfips-lib-ec2_oct.o" => [ + "crypto/ec/ec2_oct.c" + ], + "crypto/ec/libfips-lib-ec2_smpl.o" => [ + "crypto/ec/ec2_smpl.c" + ], + "crypto/ec/libfips-lib-ec_asn1.o" => [ + "crypto/ec/ec_asn1.c" + ], + "crypto/ec/libfips-lib-ec_backend.o" => [ + "crypto/ec/ec_backend.c" + ], + "crypto/ec/libfips-lib-ec_check.o" => [ + "crypto/ec/ec_check.c" + ], + "crypto/ec/libfips-lib-ec_curve.o" => [ + "crypto/ec/ec_curve.c" + ], + "crypto/ec/libfips-lib-ec_cvt.o" => [ + "crypto/ec/ec_cvt.c" + ], + "crypto/ec/libfips-lib-ec_key.o" => [ + "crypto/ec/ec_key.c" + ], + "crypto/ec/libfips-lib-ec_kmeth.o" => [ + "crypto/ec/ec_kmeth.c" + ], + "crypto/ec/libfips-lib-ec_lib.o" => [ + "crypto/ec/ec_lib.c" + ], + "crypto/ec/libfips-lib-ec_mult.o" => [ + "crypto/ec/ec_mult.c" + ], + "crypto/ec/libfips-lib-ec_oct.o" => [ + "crypto/ec/ec_oct.c" + ], + "crypto/ec/libfips-lib-ecdh_kdf.o" => [ + "crypto/ec/ecdh_kdf.c" + ], + "crypto/ec/libfips-lib-ecdh_ossl.o" => [ + "crypto/ec/ecdh_ossl.c" + ], + "crypto/ec/libfips-lib-ecdsa_ossl.o" => [ + "crypto/ec/ecdsa_ossl.c" + ], + "crypto/ec/libfips-lib-ecdsa_sign.o" => [ + "crypto/ec/ecdsa_sign.c" + ], + "crypto/ec/libfips-lib-ecdsa_vrf.o" => [ + "crypto/ec/ecdsa_vrf.c" + ], + "crypto/ec/libfips-lib-ecp_mont.o" => [ + "crypto/ec/ecp_mont.c" + ], + "crypto/ec/libfips-lib-ecp_nist.o" => [ + "crypto/ec/ecp_nist.c" + ], + "crypto/ec/libfips-lib-ecp_oct.o" => [ + "crypto/ec/ecp_oct.c" + ], + "crypto/ec/libfips-lib-ecp_smpl.o" => [ + "crypto/ec/ecp_smpl.c" + ], + "crypto/ec/libfips-lib-ecx_backend.o" => [ + "crypto/ec/ecx_backend.c" + ], + "crypto/ec/libfips-lib-ecx_key.o" => [ + "crypto/ec/ecx_key.c" + ], + "crypto/encode_decode/libcrypto-lib-decoder_err.o" => [ + "crypto/encode_decode/decoder_err.c" + ], + "crypto/encode_decode/libcrypto-lib-decoder_lib.o" => [ + "crypto/encode_decode/decoder_lib.c" + ], + "crypto/encode_decode/libcrypto-lib-decoder_meth.o" => [ + "crypto/encode_decode/decoder_meth.c" + ], + "crypto/encode_decode/libcrypto-lib-decoder_pkey.o" => [ + "crypto/encode_decode/decoder_pkey.c" + ], + "crypto/encode_decode/libcrypto-lib-encoder_err.o" => [ + "crypto/encode_decode/encoder_err.c" + ], + "crypto/encode_decode/libcrypto-lib-encoder_lib.o" => [ + "crypto/encode_decode/encoder_lib.c" + ], + "crypto/encode_decode/libcrypto-lib-encoder_meth.o" => [ + "crypto/encode_decode/encoder_meth.c" + ], + "crypto/encode_decode/libcrypto-lib-encoder_pkey.o" => [ + "crypto/encode_decode/encoder_pkey.c" + ], + "crypto/engine/libcrypto-lib-eng_all.o" => [ + "crypto/engine/eng_all.c" + ], + "crypto/engine/libcrypto-lib-eng_cnf.o" => [ + "crypto/engine/eng_cnf.c" + ], + "crypto/engine/libcrypto-lib-eng_ctrl.o" => [ + "crypto/engine/eng_ctrl.c" + ], + "crypto/engine/libcrypto-lib-eng_dyn.o" => [ + "crypto/engine/eng_dyn.c" + ], + "crypto/engine/libcrypto-lib-eng_err.o" => [ + "crypto/engine/eng_err.c" + ], + "crypto/engine/libcrypto-lib-eng_fat.o" => [ + "crypto/engine/eng_fat.c" + ], + "crypto/engine/libcrypto-lib-eng_init.o" => [ + "crypto/engine/eng_init.c" + ], + "crypto/engine/libcrypto-lib-eng_lib.o" => [ + "crypto/engine/eng_lib.c" + ], + "crypto/engine/libcrypto-lib-eng_list.o" => [ + "crypto/engine/eng_list.c" + ], + "crypto/engine/libcrypto-lib-eng_openssl.o" => [ + "crypto/engine/eng_openssl.c" + ], + "crypto/engine/libcrypto-lib-eng_pkey.o" => [ + "crypto/engine/eng_pkey.c" + ], + "crypto/engine/libcrypto-lib-eng_rdrand.o" => [ + "crypto/engine/eng_rdrand.c" + ], + "crypto/engine/libcrypto-lib-eng_table.o" => [ + "crypto/engine/eng_table.c" + ], + "crypto/engine/libcrypto-lib-tb_asnmth.o" => [ + "crypto/engine/tb_asnmth.c" + ], + "crypto/engine/libcrypto-lib-tb_cipher.o" => [ + "crypto/engine/tb_cipher.c" + ], + "crypto/engine/libcrypto-lib-tb_dh.o" => [ + "crypto/engine/tb_dh.c" + ], + "crypto/engine/libcrypto-lib-tb_digest.o" => [ + "crypto/engine/tb_digest.c" + ], + "crypto/engine/libcrypto-lib-tb_dsa.o" => [ + "crypto/engine/tb_dsa.c" + ], + "crypto/engine/libcrypto-lib-tb_eckey.o" => [ + "crypto/engine/tb_eckey.c" + ], + "crypto/engine/libcrypto-lib-tb_pkmeth.o" => [ + "crypto/engine/tb_pkmeth.c" + ], + "crypto/engine/libcrypto-lib-tb_rand.o" => [ + "crypto/engine/tb_rand.c" + ], + "crypto/engine/libcrypto-lib-tb_rsa.o" => [ + "crypto/engine/tb_rsa.c" + ], + "crypto/err/libcrypto-lib-err.o" => [ + "crypto/err/err.c" + ], + "crypto/err/libcrypto-lib-err_all.o" => [ + "crypto/err/err_all.c" + ], + "crypto/err/libcrypto-lib-err_all_legacy.o" => [ + "crypto/err/err_all_legacy.c" + ], + "crypto/err/libcrypto-lib-err_blocks.o" => [ + "crypto/err/err_blocks.c" + ], + "crypto/err/libcrypto-lib-err_mark.o" => [ + "crypto/err/err_mark.c" + ], + "crypto/err/libcrypto-lib-err_prn.o" => [ + "crypto/err/err_prn.c" + ], + "crypto/err/libcrypto-lib-err_save.o" => [ + "crypto/err/err_save.c" + ], + "crypto/ess/libcrypto-lib-ess_asn1.o" => [ + "crypto/ess/ess_asn1.c" + ], + "crypto/ess/libcrypto-lib-ess_err.o" => [ + "crypto/ess/ess_err.c" + ], + "crypto/ess/libcrypto-lib-ess_lib.o" => [ + "crypto/ess/ess_lib.c" + ], + "crypto/evp/libcrypto-lib-asymcipher.o" => [ + "crypto/evp/asymcipher.c" + ], + "crypto/evp/libcrypto-lib-bio_b64.o" => [ + "crypto/evp/bio_b64.c" + ], + "crypto/evp/libcrypto-lib-bio_enc.o" => [ + "crypto/evp/bio_enc.c" + ], + "crypto/evp/libcrypto-lib-bio_md.o" => [ + "crypto/evp/bio_md.c" + ], + "crypto/evp/libcrypto-lib-bio_ok.o" => [ + "crypto/evp/bio_ok.c" + ], + "crypto/evp/libcrypto-lib-c_allc.o" => [ + "crypto/evp/c_allc.c" + ], + "crypto/evp/libcrypto-lib-c_alld.o" => [ + "crypto/evp/c_alld.c" + ], + "crypto/evp/libcrypto-lib-cmeth_lib.o" => [ + "crypto/evp/cmeth_lib.c" + ], + "crypto/evp/libcrypto-lib-ctrl_params_translate.o" => [ + "crypto/evp/ctrl_params_translate.c" + ], + "crypto/evp/libcrypto-lib-dh_ctrl.o" => [ + "crypto/evp/dh_ctrl.c" + ], + "crypto/evp/libcrypto-lib-dh_support.o" => [ + "crypto/evp/dh_support.c" + ], + "crypto/evp/libcrypto-lib-digest.o" => [ + "crypto/evp/digest.c" + ], + "crypto/evp/libcrypto-lib-dsa_ctrl.o" => [ + "crypto/evp/dsa_ctrl.c" + ], + "crypto/evp/libcrypto-lib-e_aes.o" => [ + "crypto/evp/e_aes.c" + ], + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o" => [ + "crypto/evp/e_aes_cbc_hmac_sha1.c" + ], + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o" => [ + "crypto/evp/e_aes_cbc_hmac_sha256.c" + ], + "crypto/evp/libcrypto-lib-e_aria.o" => [ + "crypto/evp/e_aria.c" + ], + "crypto/evp/libcrypto-lib-e_bf.o" => [ + "crypto/evp/e_bf.c" + ], + "crypto/evp/libcrypto-lib-e_camellia.o" => [ + "crypto/evp/e_camellia.c" + ], + "crypto/evp/libcrypto-lib-e_cast.o" => [ + "crypto/evp/e_cast.c" + ], + "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o" => [ + "crypto/evp/e_chacha20_poly1305.c" + ], + "crypto/evp/libcrypto-lib-e_des.o" => [ + "crypto/evp/e_des.c" + ], + "crypto/evp/libcrypto-lib-e_des3.o" => [ + "crypto/evp/e_des3.c" + ], + "crypto/evp/libcrypto-lib-e_idea.o" => [ + "crypto/evp/e_idea.c" + ], + "crypto/evp/libcrypto-lib-e_null.o" => [ + "crypto/evp/e_null.c" + ], + "crypto/evp/libcrypto-lib-e_old.o" => [ + "crypto/evp/e_old.c" + ], + "crypto/evp/libcrypto-lib-e_rc2.o" => [ + "crypto/evp/e_rc2.c" + ], + "crypto/evp/libcrypto-lib-e_rc4.o" => [ + "crypto/evp/e_rc4.c" + ], + "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o" => [ + "crypto/evp/e_rc4_hmac_md5.c" + ], + "crypto/evp/libcrypto-lib-e_rc5.o" => [ + "crypto/evp/e_rc5.c" + ], + "crypto/evp/libcrypto-lib-e_seed.o" => [ + "crypto/evp/e_seed.c" + ], + "crypto/evp/libcrypto-lib-e_sm4.o" => [ + "crypto/evp/e_sm4.c" + ], + "crypto/evp/libcrypto-lib-e_xcbc_d.o" => [ + "crypto/evp/e_xcbc_d.c" + ], + "crypto/evp/libcrypto-lib-ec_ctrl.o" => [ + "crypto/evp/ec_ctrl.c" + ], + "crypto/evp/libcrypto-lib-ec_support.o" => [ + "crypto/evp/ec_support.c" + ], + "crypto/evp/libcrypto-lib-encode.o" => [ + "crypto/evp/encode.c" + ], + "crypto/evp/libcrypto-lib-evp_cnf.o" => [ + "crypto/evp/evp_cnf.c" + ], + "crypto/evp/libcrypto-lib-evp_enc.o" => [ + "crypto/evp/evp_enc.c" + ], + "crypto/evp/libcrypto-lib-evp_err.o" => [ + "crypto/evp/evp_err.c" + ], + "crypto/evp/libcrypto-lib-evp_fetch.o" => [ + "crypto/evp/evp_fetch.c" + ], + "crypto/evp/libcrypto-lib-evp_key.o" => [ + "crypto/evp/evp_key.c" + ], + "crypto/evp/libcrypto-lib-evp_lib.o" => [ + "crypto/evp/evp_lib.c" + ], + "crypto/evp/libcrypto-lib-evp_pbe.o" => [ + "crypto/evp/evp_pbe.c" + ], + "crypto/evp/libcrypto-lib-evp_pkey.o" => [ + "crypto/evp/evp_pkey.c" + ], + "crypto/evp/libcrypto-lib-evp_rand.o" => [ + "crypto/evp/evp_rand.c" + ], + "crypto/evp/libcrypto-lib-evp_utils.o" => [ + "crypto/evp/evp_utils.c" + ], + "crypto/evp/libcrypto-lib-exchange.o" => [ + "crypto/evp/exchange.c" + ], + "crypto/evp/libcrypto-lib-kdf_lib.o" => [ + "crypto/evp/kdf_lib.c" + ], + "crypto/evp/libcrypto-lib-kdf_meth.o" => [ + "crypto/evp/kdf_meth.c" + ], + "crypto/evp/libcrypto-lib-kem.o" => [ + "crypto/evp/kem.c" + ], + "crypto/evp/libcrypto-lib-keymgmt_lib.o" => [ + "crypto/evp/keymgmt_lib.c" + ], + "crypto/evp/libcrypto-lib-keymgmt_meth.o" => [ + "crypto/evp/keymgmt_meth.c" + ], + "crypto/evp/libcrypto-lib-legacy_blake2.o" => [ + "crypto/evp/legacy_blake2.c" + ], + "crypto/evp/libcrypto-lib-legacy_md4.o" => [ + "crypto/evp/legacy_md4.c" + ], + "crypto/evp/libcrypto-lib-legacy_md5.o" => [ + "crypto/evp/legacy_md5.c" + ], + "crypto/evp/libcrypto-lib-legacy_md5_sha1.o" => [ + "crypto/evp/legacy_md5_sha1.c" + ], + "crypto/evp/libcrypto-lib-legacy_mdc2.o" => [ + "crypto/evp/legacy_mdc2.c" + ], + "crypto/evp/libcrypto-lib-legacy_ripemd.o" => [ + "crypto/evp/legacy_ripemd.c" + ], + "crypto/evp/libcrypto-lib-legacy_sha.o" => [ + "crypto/evp/legacy_sha.c" + ], + "crypto/evp/libcrypto-lib-legacy_wp.o" => [ + "crypto/evp/legacy_wp.c" + ], + "crypto/evp/libcrypto-lib-m_null.o" => [ + "crypto/evp/m_null.c" + ], + "crypto/evp/libcrypto-lib-m_sigver.o" => [ + "crypto/evp/m_sigver.c" + ], + "crypto/evp/libcrypto-lib-mac_lib.o" => [ + "crypto/evp/mac_lib.c" + ], + "crypto/evp/libcrypto-lib-mac_meth.o" => [ + "crypto/evp/mac_meth.c" + ], + "crypto/evp/libcrypto-lib-names.o" => [ + "crypto/evp/names.c" + ], + "crypto/evp/libcrypto-lib-p5_crpt.o" => [ + "crypto/evp/p5_crpt.c" + ], + "crypto/evp/libcrypto-lib-p5_crpt2.o" => [ + "crypto/evp/p5_crpt2.c" + ], + "crypto/evp/libcrypto-lib-p_dec.o" => [ + "crypto/evp/p_dec.c" + ], + "crypto/evp/libcrypto-lib-p_enc.o" => [ + "crypto/evp/p_enc.c" + ], + "crypto/evp/libcrypto-lib-p_legacy.o" => [ + "crypto/evp/p_legacy.c" + ], + "crypto/evp/libcrypto-lib-p_lib.o" => [ + "crypto/evp/p_lib.c" + ], + "crypto/evp/libcrypto-lib-p_open.o" => [ + "crypto/evp/p_open.c" + ], + "crypto/evp/libcrypto-lib-p_seal.o" => [ + "crypto/evp/p_seal.c" + ], + "crypto/evp/libcrypto-lib-p_sign.o" => [ + "crypto/evp/p_sign.c" + ], + "crypto/evp/libcrypto-lib-p_verify.o" => [ + "crypto/evp/p_verify.c" + ], + "crypto/evp/libcrypto-lib-pbe_scrypt.o" => [ + "crypto/evp/pbe_scrypt.c" + ], + "crypto/evp/libcrypto-lib-pmeth_check.o" => [ + "crypto/evp/pmeth_check.c" + ], + "crypto/evp/libcrypto-lib-pmeth_gn.o" => [ + "crypto/evp/pmeth_gn.c" + ], + "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ + "crypto/evp/pmeth_lib.c" + ], + "crypto/evp/libcrypto-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], + "crypto/evp/libcrypto-lib-signature.o" => [ + "crypto/evp/signature.c" + ], + "crypto/evp/libcrypto-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], + "crypto/evp/libfips-lib-asymcipher.o" => [ + "crypto/evp/asymcipher.c" + ], + "crypto/evp/libfips-lib-dh_support.o" => [ + "crypto/evp/dh_support.c" + ], + "crypto/evp/libfips-lib-digest.o" => [ + "crypto/evp/digest.c" + ], + "crypto/evp/libfips-lib-ec_support.o" => [ + "crypto/evp/ec_support.c" + ], + "crypto/evp/libfips-lib-evp_enc.o" => [ + "crypto/evp/evp_enc.c" + ], + "crypto/evp/libfips-lib-evp_fetch.o" => [ + "crypto/evp/evp_fetch.c" + ], + "crypto/evp/libfips-lib-evp_lib.o" => [ + "crypto/evp/evp_lib.c" + ], + "crypto/evp/libfips-lib-evp_rand.o" => [ + "crypto/evp/evp_rand.c" + ], + "crypto/evp/libfips-lib-evp_utils.o" => [ + "crypto/evp/evp_utils.c" + ], + "crypto/evp/libfips-lib-exchange.o" => [ + "crypto/evp/exchange.c" + ], + "crypto/evp/libfips-lib-kdf_lib.o" => [ + "crypto/evp/kdf_lib.c" + ], + "crypto/evp/libfips-lib-kdf_meth.o" => [ + "crypto/evp/kdf_meth.c" + ], + "crypto/evp/libfips-lib-kem.o" => [ + "crypto/evp/kem.c" + ], + "crypto/evp/libfips-lib-keymgmt_lib.o" => [ + "crypto/evp/keymgmt_lib.c" + ], + "crypto/evp/libfips-lib-keymgmt_meth.o" => [ + "crypto/evp/keymgmt_meth.c" + ], + "crypto/evp/libfips-lib-mac_lib.o" => [ + "crypto/evp/mac_lib.c" + ], + "crypto/evp/libfips-lib-mac_meth.o" => [ + "crypto/evp/mac_meth.c" + ], + "crypto/evp/libfips-lib-p_lib.o" => [ + "crypto/evp/p_lib.c" + ], + "crypto/evp/libfips-lib-pmeth_check.o" => [ + "crypto/evp/pmeth_check.c" + ], + "crypto/evp/libfips-lib-pmeth_gn.o" => [ + "crypto/evp/pmeth_gn.c" + ], + "crypto/evp/libfips-lib-pmeth_lib.o" => [ + "crypto/evp/pmeth_lib.c" + ], + "crypto/evp/libfips-lib-s_lib.o" => [ + "crypto/evp/s_lib.c" + ], + "crypto/evp/libfips-lib-signature.o" => [ + "crypto/evp/signature.c" + ], + "crypto/evp/libfips-lib-skeymgmt_meth.o" => [ + "crypto/evp/skeymgmt_meth.c" + ], + "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ + "crypto/ffc/ffc_backend.c" + ], + "crypto/ffc/libcrypto-lib-ffc_dh.o" => [ + "crypto/ffc/ffc_dh.c" + ], + "crypto/ffc/libcrypto-lib-ffc_key_generate.o" => [ + "crypto/ffc/ffc_key_generate.c" + ], + "crypto/ffc/libcrypto-lib-ffc_key_validate.o" => [ + "crypto/ffc/ffc_key_validate.c" + ], + "crypto/ffc/libcrypto-lib-ffc_params.o" => [ + "crypto/ffc/ffc_params.c" + ], + "crypto/ffc/libcrypto-lib-ffc_params_generate.o" => [ + "crypto/ffc/ffc_params_generate.c" + ], + "crypto/ffc/libcrypto-lib-ffc_params_validate.o" => [ + "crypto/ffc/ffc_params_validate.c" + ], + "crypto/ffc/libfips-lib-ffc_backend.o" => [ + "crypto/ffc/ffc_backend.c" + ], + "crypto/ffc/libfips-lib-ffc_dh.o" => [ + "crypto/ffc/ffc_dh.c" + ], + "crypto/ffc/libfips-lib-ffc_key_generate.o" => [ + "crypto/ffc/ffc_key_generate.c" + ], + "crypto/ffc/libfips-lib-ffc_key_validate.o" => [ + "crypto/ffc/ffc_key_validate.c" + ], + "crypto/ffc/libfips-lib-ffc_params.o" => [ + "crypto/ffc/ffc_params.c" + ], + "crypto/ffc/libfips-lib-ffc_params_generate.o" => [ + "crypto/ffc/ffc_params_generate.c" + ], + "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ + "crypto/ffc/ffc_params_validate.c" + ], + "crypto/hashtable/libcrypto-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libcrypto-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hashtable/libfips-lib-hashfunc.o" => [ + "crypto/hashtable/hashfunc.c" + ], + "crypto/hashtable/libfips-lib-hashtable.o" => [ + "crypto/hashtable/hashtable.c" + ], + "crypto/hmac/libcrypto-lib-hmac.o" => [ + "crypto/hmac/hmac.c" + ], + "crypto/hmac/libfips-lib-hmac.o" => [ + "crypto/hmac/hmac.c" + ], + "crypto/hpke/libcrypto-lib-hpke.o" => [ + "crypto/hpke/hpke.c" + ], + "crypto/hpke/libcrypto-lib-hpke_util.o" => [ + "crypto/hpke/hpke_util.c" + ], + "crypto/http/libcrypto-lib-http_client.o" => [ + "crypto/http/http_client.c" + ], + "crypto/http/libcrypto-lib-http_err.o" => [ + "crypto/http/http_err.c" + ], + "crypto/http/libcrypto-lib-http_lib.o" => [ + "crypto/http/http_lib.c" + ], + "crypto/idea/libcrypto-lib-i_cbc.o" => [ + "crypto/idea/i_cbc.c" + ], + "crypto/idea/libcrypto-lib-i_cfb64.o" => [ + "crypto/idea/i_cfb64.c" + ], + "crypto/idea/libcrypto-lib-i_ecb.o" => [ + "crypto/idea/i_ecb.c" + ], + "crypto/idea/libcrypto-lib-i_ofb64.o" => [ + "crypto/idea/i_ofb64.c" + ], + "crypto/idea/libcrypto-lib-i_skey.o" => [ + "crypto/idea/i_skey.c" + ], + "crypto/kdf/libcrypto-lib-kdf_err.o" => [ + "crypto/kdf/kdf_err.c" + ], + "crypto/lhash/libcrypto-lib-lh_stats.o" => [ + "crypto/lhash/lh_stats.c" + ], + "crypto/lhash/libcrypto-lib-lhash.o" => [ + "crypto/lhash/lhash.c" + ], + "crypto/lhash/libfips-lib-lhash.o" => [ + "crypto/lhash/lhash.c" + ], + "crypto/libcrypto-lib-asn1_dsa.o" => [ + "crypto/asn1_dsa.c" + ], + "crypto/libcrypto-lib-bsearch.o" => [ + "crypto/bsearch.c" + ], + "crypto/libcrypto-lib-comp_methods.o" => [ + "crypto/comp_methods.c" + ], + "crypto/libcrypto-lib-context.o" => [ + "crypto/context.c" + ], + "crypto/libcrypto-lib-core_algorithm.o" => [ + "crypto/core_algorithm.c" + ], + "crypto/libcrypto-lib-core_fetch.o" => [ + "crypto/core_fetch.c" + ], + "crypto/libcrypto-lib-core_namemap.o" => [ + "crypto/core_namemap.c" + ], + "crypto/libcrypto-lib-cpt_err.o" => [ + "crypto/cpt_err.c" + ], + "crypto/libcrypto-lib-cpuid.o" => [ + "crypto/cpuid.c" + ], + "crypto/libcrypto-lib-cryptlib.o" => [ + "crypto/cryptlib.c" + ], + "crypto/libcrypto-lib-ctype.o" => [ + "crypto/ctype.c" + ], + "crypto/libcrypto-lib-cversion.o" => [ + "crypto/cversion.c" + ], + "crypto/libcrypto-lib-defaults.o" => [ + "crypto/defaults.c" + ], + "crypto/libcrypto-lib-der_writer.o" => [ + "crypto/der_writer.c" + ], + "crypto/libcrypto-lib-deterministic_nonce.o" => [ + "crypto/deterministic_nonce.c" + ], + "crypto/libcrypto-lib-ebcdic.o" => [ + "crypto/ebcdic.c" + ], + "crypto/libcrypto-lib-ex_data.o" => [ + "crypto/ex_data.c" + ], + "crypto/libcrypto-lib-getenv.o" => [ + "crypto/getenv.c" + ], + "crypto/libcrypto-lib-indicator_core.o" => [ + "crypto/indicator_core.c" + ], + "crypto/libcrypto-lib-info.o" => [ + "crypto/info.c" + ], + "crypto/libcrypto-lib-init.o" => [ + "crypto/init.c" + ], + "crypto/libcrypto-lib-initthread.o" => [ + "crypto/initthread.c" + ], + "crypto/libcrypto-lib-mem.o" => [ + "crypto/mem.c" + ], + "crypto/libcrypto-lib-mem_sec.o" => [ + "crypto/mem_sec.c" + ], + "crypto/libcrypto-lib-o_dir.o" => [ + "crypto/o_dir.c" + ], + "crypto/libcrypto-lib-o_fopen.o" => [ + "crypto/o_fopen.c" + ], + "crypto/libcrypto-lib-o_init.o" => [ + "crypto/o_init.c" + ], + "crypto/libcrypto-lib-o_str.o" => [ + "crypto/o_str.c" + ], + "crypto/libcrypto-lib-o_time.o" => [ + "crypto/o_time.c" + ], + "crypto/libcrypto-lib-packet.o" => [ + "crypto/packet.c" + ], + "crypto/libcrypto-lib-param_build.o" => [ + "crypto/param_build.c" + ], + "crypto/libcrypto-lib-param_build_set.o" => [ + "crypto/param_build_set.c" + ], + "crypto/libcrypto-lib-params.o" => [ + "crypto/params.c" + ], + "crypto/libcrypto-lib-params_dup.o" => [ + "crypto/params_dup.c" + ], + "crypto/libcrypto-lib-params_from_text.o" => [ + "crypto/params_from_text.c" + ], + "crypto/libcrypto-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], + "crypto/libcrypto-lib-passphrase.o" => [ + "crypto/passphrase.c" + ], + "crypto/libcrypto-lib-provider.o" => [ + "crypto/provider.c" + ], + "crypto/libcrypto-lib-provider_child.o" => [ + "crypto/provider_child.c" + ], + "crypto/libcrypto-lib-provider_conf.o" => [ + "crypto/provider_conf.c" + ], + "crypto/libcrypto-lib-provider_core.o" => [ + "crypto/provider_core.c" + ], + "crypto/libcrypto-lib-provider_predefined.o" => [ + "crypto/provider_predefined.c" + ], + "crypto/libcrypto-lib-punycode.o" => [ + "crypto/punycode.c" + ], + "crypto/libcrypto-lib-quic_vlint.o" => [ + "crypto/quic_vlint.c" + ], + "crypto/libcrypto-lib-riscv64cpuid.o" => [ + "crypto/riscv64cpuid.s" + ], + "crypto/libcrypto-lib-riscvcap.o" => [ + "crypto/riscvcap.c" + ], + "crypto/libcrypto-lib-self_test_core.o" => [ + "crypto/self_test_core.c" + ], + "crypto/libcrypto-lib-sleep.o" => [ + "crypto/sleep.c" + ], + "crypto/libcrypto-lib-sparse_array.o" => [ + "crypto/sparse_array.c" + ], + "crypto/libcrypto-lib-ssl_err.o" => [ + "crypto/ssl_err.c" + ], + "crypto/libcrypto-lib-threads_lib.o" => [ + "crypto/threads_lib.c" + ], + "crypto/libcrypto-lib-threads_none.o" => [ + "crypto/threads_none.c" + ], + "crypto/libcrypto-lib-threads_pthread.o" => [ + "crypto/threads_pthread.c" + ], + "crypto/libcrypto-lib-threads_win.o" => [ + "crypto/threads_win.c" + ], + "crypto/libcrypto-lib-time.o" => [ + "crypto/time.c" + ], + "crypto/libcrypto-lib-trace.o" => [ + "crypto/trace.c" + ], + "crypto/libcrypto-lib-uid.o" => [ + "crypto/uid.c" + ], + "crypto/libfips-lib-asn1_dsa.o" => [ + "crypto/asn1_dsa.c" + ], + "crypto/libfips-lib-bsearch.o" => [ + "crypto/bsearch.c" + ], + "crypto/libfips-lib-context.o" => [ + "crypto/context.c" + ], + "crypto/libfips-lib-core_algorithm.o" => [ + "crypto/core_algorithm.c" + ], + "crypto/libfips-lib-core_fetch.o" => [ + "crypto/core_fetch.c" + ], + "crypto/libfips-lib-core_namemap.o" => [ + "crypto/core_namemap.c" + ], + "crypto/libfips-lib-cpuid.o" => [ + "crypto/cpuid.c" + ], + "crypto/libfips-lib-cryptlib.o" => [ + "crypto/cryptlib.c" + ], + "crypto/libfips-lib-ctype.o" => [ + "crypto/ctype.c" + ], + "crypto/libfips-lib-der_writer.o" => [ + "crypto/der_writer.c" + ], + "crypto/libfips-lib-ex_data.o" => [ + "crypto/ex_data.c" + ], + "crypto/libfips-lib-initthread.o" => [ + "crypto/initthread.c" + ], + "crypto/libfips-lib-o_str.o" => [ + "crypto/o_str.c" + ], + "crypto/libfips-lib-packet.o" => [ + "crypto/packet.c" + ], + "crypto/libfips-lib-param_build.o" => [ + "crypto/param_build.c" + ], + "crypto/libfips-lib-param_build_set.o" => [ + "crypto/param_build_set.c" + ], + "crypto/libfips-lib-params.o" => [ + "crypto/params.c" + ], + "crypto/libfips-lib-params_dup.o" => [ + "crypto/params_dup.c" + ], + "crypto/libfips-lib-params_from_text.o" => [ + "crypto/params_from_text.c" + ], + "crypto/libfips-lib-params_idx.o" => [ + "crypto/params_idx.c" + ], + "crypto/libfips-lib-provider_core.o" => [ + "crypto/provider_core.c" + ], + "crypto/libfips-lib-provider_predefined.o" => [ + "crypto/provider_predefined.c" + ], + "crypto/libfips-lib-riscv64cpuid.o" => [ + "crypto/riscv64cpuid.s" + ], + "crypto/libfips-lib-riscvcap.o" => [ + "crypto/riscvcap.c" + ], + "crypto/libfips-lib-self_test_core.o" => [ + "crypto/self_test_core.c" + ], + "crypto/libfips-lib-sparse_array.o" => [ + "crypto/sparse_array.c" + ], + "crypto/libfips-lib-threads_lib.o" => [ + "crypto/threads_lib.c" + ], + "crypto/libfips-lib-threads_none.o" => [ + "crypto/threads_none.c" + ], + "crypto/libfips-lib-threads_pthread.o" => [ + "crypto/threads_pthread.c" + ], + "crypto/libfips-lib-threads_win.o" => [ + "crypto/threads_win.c" + ], + "crypto/libfips-lib-time.o" => [ + "crypto/time.c" + ], + "crypto/md4/libcrypto-lib-md4_dgst.o" => [ + "crypto/md4/md4_dgst.c" + ], + "crypto/md4/libcrypto-lib-md4_one.o" => [ + "crypto/md4/md4_one.c" + ], + "crypto/md5/libcrypto-lib-md5_dgst.o" => [ + "crypto/md5/md5_dgst.c" + ], + "crypto/md5/libcrypto-lib-md5_one.o" => [ + "crypto/md5/md5_one.c" + ], + "crypto/md5/libcrypto-lib-md5_sha1.o" => [ + "crypto/md5/md5_sha1.c" + ], + "crypto/mdc2/libcrypto-lib-mdc2_one.o" => [ + "crypto/mdc2/mdc2_one.c" + ], + "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ + "crypto/mdc2/mdc2dgst.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o" => [ + "crypto/ml_dsa/ml_dsa_encoders.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o" => [ + "crypto/ml_dsa/ml_dsa_key.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o" => [ + "crypto/ml_dsa/ml_dsa_key_compress.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o" => [ + "crypto/ml_dsa/ml_dsa_matrix.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o" => [ + "crypto/ml_dsa/ml_dsa_ntt.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o" => [ + "crypto/ml_dsa/ml_dsa_params.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o" => [ + "crypto/ml_dsa/ml_dsa_sample.c" + ], + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o" => [ + "crypto/ml_dsa/ml_dsa_sign.c" + ], + "crypto/ml_kem/libcrypto-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/ml_kem/libfips-lib-ml_kem.o" => [ + "crypto/ml_kem/ml_kem.c" + ], + "crypto/modes/libcrypto-lib-aes-gcm-riscv64-zvkb-zvkg-zvkned.o" => [ + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" + ], + "crypto/modes/libcrypto-lib-cbc128.o" => [ + "crypto/modes/cbc128.c" + ], + "crypto/modes/libcrypto-lib-ccm128.o" => [ + "crypto/modes/ccm128.c" + ], + "crypto/modes/libcrypto-lib-cfb128.o" => [ + "crypto/modes/cfb128.c" + ], + "crypto/modes/libcrypto-lib-ctr128.o" => [ + "crypto/modes/ctr128.c" + ], + "crypto/modes/libcrypto-lib-cts128.o" => [ + "crypto/modes/cts128.c" + ], + "crypto/modes/libcrypto-lib-gcm128.o" => [ + "crypto/modes/gcm128.c" + ], + "crypto/modes/libcrypto-lib-ghash-riscv64-zvkb-zvbc.o" => [ + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" + ], + "crypto/modes/libcrypto-lib-ghash-riscv64-zvkg.o" => [ + "crypto/modes/ghash-riscv64-zvkg.s" + ], + "crypto/modes/libcrypto-lib-ghash-riscv64.o" => [ + "crypto/modes/ghash-riscv64.s" + ], + "crypto/modes/libcrypto-lib-ocb128.o" => [ + "crypto/modes/ocb128.c" + ], + "crypto/modes/libcrypto-lib-ofb128.o" => [ + "crypto/modes/ofb128.c" + ], + "crypto/modes/libcrypto-lib-siv128.o" => [ + "crypto/modes/siv128.c" + ], + "crypto/modes/libcrypto-lib-wrap128.o" => [ + "crypto/modes/wrap128.c" + ], + "crypto/modes/libcrypto-lib-xts128.o" => [ + "crypto/modes/xts128.c" + ], + "crypto/modes/libcrypto-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], + "crypto/modes/libfips-lib-aes-gcm-riscv64-zvkb-zvkg-zvkned.o" => [ + "crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s" + ], + "crypto/modes/libfips-lib-cbc128.o" => [ + "crypto/modes/cbc128.c" + ], + "crypto/modes/libfips-lib-ccm128.o" => [ + "crypto/modes/ccm128.c" + ], + "crypto/modes/libfips-lib-cfb128.o" => [ + "crypto/modes/cfb128.c" + ], + "crypto/modes/libfips-lib-ctr128.o" => [ + "crypto/modes/ctr128.c" + ], + "crypto/modes/libfips-lib-gcm128.o" => [ + "crypto/modes/gcm128.c" + ], + "crypto/modes/libfips-lib-ghash-riscv64-zvkb-zvbc.o" => [ + "crypto/modes/ghash-riscv64-zvkb-zvbc.s" + ], + "crypto/modes/libfips-lib-ghash-riscv64-zvkg.o" => [ + "crypto/modes/ghash-riscv64-zvkg.s" + ], + "crypto/modes/libfips-lib-ghash-riscv64.o" => [ + "crypto/modes/ghash-riscv64.s" + ], + "crypto/modes/libfips-lib-ofb128.o" => [ + "crypto/modes/ofb128.c" + ], + "crypto/modes/libfips-lib-wrap128.o" => [ + "crypto/modes/wrap128.c" + ], + "crypto/modes/libfips-lib-xts128.o" => [ + "crypto/modes/xts128.c" + ], + "crypto/modes/libfips-lib-xts128gb.o" => [ + "crypto/modes/xts128gb.c" + ], + "crypto/objects/libcrypto-lib-o_names.o" => [ + "crypto/objects/o_names.c" + ], + "crypto/objects/libcrypto-lib-obj_dat.o" => [ + "crypto/objects/obj_dat.c" + ], + "crypto/objects/libcrypto-lib-obj_err.o" => [ + "crypto/objects/obj_err.c" + ], + "crypto/objects/libcrypto-lib-obj_lib.o" => [ + "crypto/objects/obj_lib.c" + ], + "crypto/objects/libcrypto-lib-obj_xref.o" => [ + "crypto/objects/obj_xref.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_asn.o" => [ + "crypto/ocsp/ocsp_asn.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_cl.o" => [ + "crypto/ocsp/ocsp_cl.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_err.o" => [ + "crypto/ocsp/ocsp_err.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_ext.o" => [ + "crypto/ocsp/ocsp_ext.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_http.o" => [ + "crypto/ocsp/ocsp_http.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_lib.o" => [ + "crypto/ocsp/ocsp_lib.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_prn.o" => [ + "crypto/ocsp/ocsp_prn.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_srv.o" => [ + "crypto/ocsp/ocsp_srv.c" + ], + "crypto/ocsp/libcrypto-lib-ocsp_vfy.o" => [ + "crypto/ocsp/ocsp_vfy.c" + ], + "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ + "crypto/ocsp/v3_ocsp.c" + ], + "crypto/pem/libcrypto-lib-pem_all.o" => [ + "crypto/pem/pem_all.c" + ], + "crypto/pem/libcrypto-lib-pem_err.o" => [ + "crypto/pem/pem_err.c" + ], + "crypto/pem/libcrypto-lib-pem_info.o" => [ + "crypto/pem/pem_info.c" + ], + "crypto/pem/libcrypto-lib-pem_lib.o" => [ + "crypto/pem/pem_lib.c" + ], + "crypto/pem/libcrypto-lib-pem_oth.o" => [ + "crypto/pem/pem_oth.c" + ], + "crypto/pem/libcrypto-lib-pem_pk8.o" => [ + "crypto/pem/pem_pk8.c" + ], + "crypto/pem/libcrypto-lib-pem_pkey.o" => [ + "crypto/pem/pem_pkey.c" + ], + "crypto/pem/libcrypto-lib-pem_sign.o" => [ + "crypto/pem/pem_sign.c" + ], + "crypto/pem/libcrypto-lib-pem_x509.o" => [ + "crypto/pem/pem_x509.c" + ], + "crypto/pem/libcrypto-lib-pem_xaux.o" => [ + "crypto/pem/pem_xaux.c" + ], + "crypto/pem/libcrypto-lib-pvkfmt.o" => [ + "crypto/pem/pvkfmt.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_add.o" => [ + "crypto/pkcs12/p12_add.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_asn.o" => [ + "crypto/pkcs12/p12_asn.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_attr.o" => [ + "crypto/pkcs12/p12_attr.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_crpt.o" => [ + "crypto/pkcs12/p12_crpt.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_crt.o" => [ + "crypto/pkcs12/p12_crt.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_decr.o" => [ + "crypto/pkcs12/p12_decr.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_init.o" => [ + "crypto/pkcs12/p12_init.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_key.o" => [ + "crypto/pkcs12/p12_key.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_kiss.o" => [ + "crypto/pkcs12/p12_kiss.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_mutl.o" => [ + "crypto/pkcs12/p12_mutl.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_npas.o" => [ + "crypto/pkcs12/p12_npas.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_p8d.o" => [ + "crypto/pkcs12/p12_p8d.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_p8e.o" => [ + "crypto/pkcs12/p12_p8e.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_sbag.o" => [ + "crypto/pkcs12/p12_sbag.c" + ], + "crypto/pkcs12/libcrypto-lib-p12_utl.o" => [ + "crypto/pkcs12/p12_utl.c" + ], + "crypto/pkcs12/libcrypto-lib-pk12err.o" => [ + "crypto/pkcs12/pk12err.c" + ], + "crypto/pkcs7/libcrypto-lib-bio_pk7.o" => [ + "crypto/pkcs7/bio_pk7.c" + ], + "crypto/pkcs7/libcrypto-lib-pk7_asn1.o" => [ + "crypto/pkcs7/pk7_asn1.c" + ], + "crypto/pkcs7/libcrypto-lib-pk7_attr.o" => [ + "crypto/pkcs7/pk7_attr.c" + ], + "crypto/pkcs7/libcrypto-lib-pk7_doit.o" => [ + "crypto/pkcs7/pk7_doit.c" + ], + "crypto/pkcs7/libcrypto-lib-pk7_lib.o" => [ + "crypto/pkcs7/pk7_lib.c" + ], + "crypto/pkcs7/libcrypto-lib-pk7_mime.o" => [ + "crypto/pkcs7/pk7_mime.c" + ], + "crypto/pkcs7/libcrypto-lib-pk7_smime.o" => [ + "crypto/pkcs7/pk7_smime.c" + ], + "crypto/pkcs7/libcrypto-lib-pkcs7err.o" => [ + "crypto/pkcs7/pkcs7err.c" + ], + "crypto/poly1305/libcrypto-lib-poly1305.o" => [ + "crypto/poly1305/poly1305.c" + ], + "crypto/property/libcrypto-lib-defn_cache.o" => [ + "crypto/property/defn_cache.c" + ], + "crypto/property/libcrypto-lib-property.o" => [ + "crypto/property/property.c" + ], + "crypto/property/libcrypto-lib-property_err.o" => [ + "crypto/property/property_err.c" + ], + "crypto/property/libcrypto-lib-property_parse.o" => [ + "crypto/property/property_parse.c" + ], + "crypto/property/libcrypto-lib-property_query.o" => [ + "crypto/property/property_query.c" + ], + "crypto/property/libcrypto-lib-property_string.o" => [ + "crypto/property/property_string.c" + ], + "crypto/property/libfips-lib-defn_cache.o" => [ + "crypto/property/defn_cache.c" + ], + "crypto/property/libfips-lib-property.o" => [ + "crypto/property/property.c" + ], + "crypto/property/libfips-lib-property_parse.o" => [ + "crypto/property/property_parse.c" + ], + "crypto/property/libfips-lib-property_query.o" => [ + "crypto/property/property_query.c" + ], + "crypto/property/libfips-lib-property_string.o" => [ + "crypto/property/property_string.c" + ], + "crypto/rand/libcrypto-lib-prov_seed.o" => [ + "crypto/rand/prov_seed.c" + ], + "crypto/rand/libcrypto-lib-rand_deprecated.o" => [ + "crypto/rand/rand_deprecated.c" + ], + "crypto/rand/libcrypto-lib-rand_err.o" => [ + "crypto/rand/rand_err.c" + ], + "crypto/rand/libcrypto-lib-rand_lib.o" => [ + "crypto/rand/rand_lib.c" + ], + "crypto/rand/libcrypto-lib-rand_meth.o" => [ + "crypto/rand/rand_meth.c" + ], + "crypto/rand/libcrypto-lib-rand_pool.o" => [ + "crypto/rand/rand_pool.c" + ], + "crypto/rand/libcrypto-lib-rand_uniform.o" => [ + "crypto/rand/rand_uniform.c" + ], + "crypto/rand/libcrypto-lib-randfile.o" => [ + "crypto/rand/randfile.c" + ], + "crypto/rand/libfips-lib-rand_lib.o" => [ + "crypto/rand/rand_lib.c" + ], + "crypto/rc2/libcrypto-lib-rc2_cbc.o" => [ + "crypto/rc2/rc2_cbc.c" + ], + "crypto/rc2/libcrypto-lib-rc2_ecb.o" => [ + "crypto/rc2/rc2_ecb.c" + ], + "crypto/rc2/libcrypto-lib-rc2_skey.o" => [ + "crypto/rc2/rc2_skey.c" + ], + "crypto/rc2/libcrypto-lib-rc2cfb64.o" => [ + "crypto/rc2/rc2cfb64.c" + ], + "crypto/rc2/libcrypto-lib-rc2ofb64.o" => [ + "crypto/rc2/rc2ofb64.c" + ], + "crypto/rc4/libcrypto-lib-rc4_enc.o" => [ + "crypto/rc4/rc4_enc.c" + ], + "crypto/rc4/libcrypto-lib-rc4_skey.o" => [ + "crypto/rc4/rc4_skey.c" + ], + "crypto/ripemd/libcrypto-lib-rmd_dgst.o" => [ + "crypto/ripemd/rmd_dgst.c" + ], + "crypto/ripemd/libcrypto-lib-rmd_one.o" => [ + "crypto/ripemd/rmd_one.c" + ], + "crypto/rsa/libcrypto-lib-rsa_ameth.o" => [ + "crypto/rsa/rsa_ameth.c" + ], + "crypto/rsa/libcrypto-lib-rsa_asn1.o" => [ + "crypto/rsa/rsa_asn1.c" + ], + "crypto/rsa/libcrypto-lib-rsa_backend.o" => [ + "crypto/rsa/rsa_backend.c" + ], + "crypto/rsa/libcrypto-lib-rsa_chk.o" => [ + "crypto/rsa/rsa_chk.c" + ], + "crypto/rsa/libcrypto-lib-rsa_crpt.o" => [ + "crypto/rsa/rsa_crpt.c" + ], + "crypto/rsa/libcrypto-lib-rsa_depr.o" => [ + "crypto/rsa/rsa_depr.c" + ], + "crypto/rsa/libcrypto-lib-rsa_err.o" => [ + "crypto/rsa/rsa_err.c" + ], + "crypto/rsa/libcrypto-lib-rsa_gen.o" => [ + "crypto/rsa/rsa_gen.c" + ], + "crypto/rsa/libcrypto-lib-rsa_lib.o" => [ + "crypto/rsa/rsa_lib.c" + ], + "crypto/rsa/libcrypto-lib-rsa_meth.o" => [ + "crypto/rsa/rsa_meth.c" + ], + "crypto/rsa/libcrypto-lib-rsa_mp.o" => [ + "crypto/rsa/rsa_mp.c" + ], + "crypto/rsa/libcrypto-lib-rsa_mp_names.o" => [ + "crypto/rsa/rsa_mp_names.c" + ], + "crypto/rsa/libcrypto-lib-rsa_none.o" => [ + "crypto/rsa/rsa_none.c" + ], + "crypto/rsa/libcrypto-lib-rsa_oaep.o" => [ + "crypto/rsa/rsa_oaep.c" + ], + "crypto/rsa/libcrypto-lib-rsa_ossl.o" => [ + "crypto/rsa/rsa_ossl.c" + ], + "crypto/rsa/libcrypto-lib-rsa_pk1.o" => [ + "crypto/rsa/rsa_pk1.c" + ], + "crypto/rsa/libcrypto-lib-rsa_pmeth.o" => [ + "crypto/rsa/rsa_pmeth.c" + ], + "crypto/rsa/libcrypto-lib-rsa_prn.o" => [ + "crypto/rsa/rsa_prn.c" + ], + "crypto/rsa/libcrypto-lib-rsa_pss.o" => [ + "crypto/rsa/rsa_pss.c" + ], + "crypto/rsa/libcrypto-lib-rsa_saos.o" => [ + "crypto/rsa/rsa_saos.c" + ], + "crypto/rsa/libcrypto-lib-rsa_schemes.o" => [ + "crypto/rsa/rsa_schemes.c" + ], + "crypto/rsa/libcrypto-lib-rsa_sign.o" => [ + "crypto/rsa/rsa_sign.c" + ], + "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o" => [ + "crypto/rsa/rsa_sp800_56b_check.c" + ], + "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o" => [ + "crypto/rsa/rsa_sp800_56b_gen.c" + ], + "crypto/rsa/libcrypto-lib-rsa_x931.o" => [ + "crypto/rsa/rsa_x931.c" + ], + "crypto/rsa/libcrypto-lib-rsa_x931g.o" => [ + "crypto/rsa/rsa_x931g.c" + ], + "crypto/rsa/libfips-lib-rsa_acvp_test_params.o" => [ + "crypto/rsa/rsa_acvp_test_params.c" + ], + "crypto/rsa/libfips-lib-rsa_backend.o" => [ + "crypto/rsa/rsa_backend.c" + ], + "crypto/rsa/libfips-lib-rsa_chk.o" => [ + "crypto/rsa/rsa_chk.c" + ], + "crypto/rsa/libfips-lib-rsa_crpt.o" => [ + "crypto/rsa/rsa_crpt.c" + ], + "crypto/rsa/libfips-lib-rsa_gen.o" => [ + "crypto/rsa/rsa_gen.c" + ], + "crypto/rsa/libfips-lib-rsa_lib.o" => [ + "crypto/rsa/rsa_lib.c" + ], + "crypto/rsa/libfips-lib-rsa_mp_names.o" => [ + "crypto/rsa/rsa_mp_names.c" + ], + "crypto/rsa/libfips-lib-rsa_none.o" => [ + "crypto/rsa/rsa_none.c" + ], + "crypto/rsa/libfips-lib-rsa_oaep.o" => [ + "crypto/rsa/rsa_oaep.c" + ], + "crypto/rsa/libfips-lib-rsa_ossl.o" => [ + "crypto/rsa/rsa_ossl.c" + ], + "crypto/rsa/libfips-lib-rsa_pk1.o" => [ + "crypto/rsa/rsa_pk1.c" + ], + "crypto/rsa/libfips-lib-rsa_pss.o" => [ + "crypto/rsa/rsa_pss.c" + ], + "crypto/rsa/libfips-lib-rsa_schemes.o" => [ + "crypto/rsa/rsa_schemes.c" + ], + "crypto/rsa/libfips-lib-rsa_sign.o" => [ + "crypto/rsa/rsa_sign.c" + ], + "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o" => [ + "crypto/rsa/rsa_sp800_56b_check.c" + ], + "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o" => [ + "crypto/rsa/rsa_sp800_56b_gen.c" + ], + "crypto/rsa/libfips-lib-rsa_x931.o" => [ + "crypto/rsa/rsa_x931.c" + ], + "crypto/seed/libcrypto-lib-seed.o" => [ + "crypto/seed/seed.c" + ], + "crypto/seed/libcrypto-lib-seed_cbc.o" => [ + "crypto/seed/seed_cbc.c" + ], + "crypto/seed/libcrypto-lib-seed_cfb.o" => [ + "crypto/seed/seed_cfb.c" + ], + "crypto/seed/libcrypto-lib-seed_ecb.o" => [ + "crypto/seed/seed_ecb.c" + ], + "crypto/seed/libcrypto-lib-seed_ofb.o" => [ + "crypto/seed/seed_ofb.c" + ], + "crypto/sha/libcrypto-lib-keccak1600.o" => [ + "crypto/sha/keccak1600.c" + ], + "crypto/sha/libcrypto-lib-sha1_one.o" => [ + "crypto/sha/sha1_one.c" + ], + "crypto/sha/libcrypto-lib-sha1dgst.o" => [ + "crypto/sha/sha1dgst.c" + ], + "crypto/sha/libcrypto-lib-sha256-riscv64-zvkb-zvknha_or_zvknhb.o" => [ + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" + ], + "crypto/sha/libcrypto-lib-sha256.o" => [ + "crypto/sha/sha256.c" + ], + "crypto/sha/libcrypto-lib-sha3.o" => [ + "crypto/sha/sha3.c" + ], + "crypto/sha/libcrypto-lib-sha512-riscv64-zvkb-zvknhb.o" => [ + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" + ], + "crypto/sha/libcrypto-lib-sha512.o" => [ + "crypto/sha/sha512.c" + ], + "crypto/sha/libcrypto-lib-sha_riscv.o" => [ + "crypto/sha/sha_riscv.c" + ], + "crypto/sha/libfips-lib-keccak1600.o" => [ + "crypto/sha/keccak1600.c" + ], + "crypto/sha/libfips-lib-sha1dgst.o" => [ + "crypto/sha/sha1dgst.c" + ], + "crypto/sha/libfips-lib-sha256-riscv64-zvkb-zvknha_or_zvknhb.o" => [ + "crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S" + ], + "crypto/sha/libfips-lib-sha256.o" => [ + "crypto/sha/sha256.c" + ], + "crypto/sha/libfips-lib-sha3.o" => [ + "crypto/sha/sha3.c" + ], + "crypto/sha/libfips-lib-sha512-riscv64-zvkb-zvknhb.o" => [ + "crypto/sha/sha512-riscv64-zvkb-zvknhb.S" + ], + "crypto/sha/libfips-lib-sha512.o" => [ + "crypto/sha/sha512.c" + ], + "crypto/sha/libfips-lib-sha_riscv.o" => [ + "crypto/sha/sha_riscv.c" + ], + "crypto/siphash/libcrypto-lib-siphash.o" => [ + "crypto/siphash/siphash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/slh_dsa/libfips-lib-slh_adrs.o" => [ + "crypto/slh_dsa/slh_adrs.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa.o" => [ + "crypto/slh_dsa/slh_dsa.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o" => [ + "crypto/slh_dsa/slh_dsa_hash_ctx.c" + ], + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o" => [ + "crypto/slh_dsa/slh_dsa_key.c" + ], + "crypto/slh_dsa/libfips-lib-slh_fors.o" => [ + "crypto/slh_dsa/slh_fors.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hash.o" => [ + "crypto/slh_dsa/slh_hash.c" + ], + "crypto/slh_dsa/libfips-lib-slh_hypertree.o" => [ + "crypto/slh_dsa/slh_hypertree.c" + ], + "crypto/slh_dsa/libfips-lib-slh_params.o" => [ + "crypto/slh_dsa/slh_params.c" + ], + "crypto/slh_dsa/libfips-lib-slh_wots.o" => [ + "crypto/slh_dsa/slh_wots.c" + ], + "crypto/slh_dsa/libfips-lib-slh_xmss.o" => [ + "crypto/slh_dsa/slh_xmss.c" + ], + "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ + "crypto/sm2/sm2_crypt.c" + ], + "crypto/sm2/libcrypto-lib-sm2_err.o" => [ + "crypto/sm2/sm2_err.c" + ], + "crypto/sm2/libcrypto-lib-sm2_key.o" => [ + "crypto/sm2/sm2_key.c" + ], + "crypto/sm2/libcrypto-lib-sm2_sign.o" => [ + "crypto/sm2/sm2_sign.c" + ], + "crypto/sm3/libcrypto-lib-legacy_sm3.o" => [ + "crypto/sm3/legacy_sm3.c" + ], + "crypto/sm3/libcrypto-lib-sm3-riscv64-zvksh.o" => [ + "crypto/sm3/sm3-riscv64-zvksh.S" + ], + "crypto/sm3/libcrypto-lib-sm3.o" => [ + "crypto/sm3/sm3.c" + ], + "crypto/sm3/libcrypto-lib-sm3_riscv.o" => [ + "crypto/sm3/sm3_riscv.c" + ], + "crypto/sm4/libcrypto-lib-sm4-riscv64-zvksed.o" => [ + "crypto/sm4/sm4-riscv64-zvksed.s" + ], + "crypto/sm4/libcrypto-lib-sm4.o" => [ + "crypto/sm4/sm4.c" + ], + "crypto/srp/libcrypto-lib-srp_lib.o" => [ + "crypto/srp/srp_lib.c" + ], + "crypto/srp/libcrypto-lib-srp_vfy.o" => [ + "crypto/srp/srp_vfy.c" + ], + "crypto/stack/libcrypto-lib-stack.o" => [ + "crypto/stack/stack.c" + ], + "crypto/stack/libfips-lib-stack.o" => [ + "crypto/stack/stack.c" + ], + "crypto/store/libcrypto-lib-store_err.o" => [ + "crypto/store/store_err.c" + ], + "crypto/store/libcrypto-lib-store_init.o" => [ + "crypto/store/store_init.c" + ], + "crypto/store/libcrypto-lib-store_lib.o" => [ + "crypto/store/store_lib.c" + ], + "crypto/store/libcrypto-lib-store_meth.o" => [ + "crypto/store/store_meth.c" + ], + "crypto/store/libcrypto-lib-store_register.o" => [ + "crypto/store/store_register.c" + ], + "crypto/store/libcrypto-lib-store_result.o" => [ + "crypto/store/store_result.c" + ], + "crypto/store/libcrypto-lib-store_strings.o" => [ + "crypto/store/store_strings.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libcrypto-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/arch/libfips-lib-thread_none.o" => [ + "crypto/thread/arch/thread_none.c" + ], + "crypto/thread/arch/libfips-lib-thread_posix.o" => [ + "crypto/thread/arch/thread_posix.c" + ], + "crypto/thread/arch/libfips-lib-thread_win.o" => [ + "crypto/thread/arch/thread_win.c" + ], + "crypto/thread/libcrypto-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libcrypto-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libcrypto-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/thread/libfips-lib-api.o" => [ + "crypto/thread/api.c" + ], + "crypto/thread/libfips-lib-arch.o" => [ + "crypto/thread/arch.c" + ], + "crypto/thread/libfips-lib-internal.o" => [ + "crypto/thread/internal.c" + ], + "crypto/ts/libcrypto-lib-ts_asn1.o" => [ + "crypto/ts/ts_asn1.c" + ], + "crypto/ts/libcrypto-lib-ts_conf.o" => [ + "crypto/ts/ts_conf.c" + ], + "crypto/ts/libcrypto-lib-ts_err.o" => [ + "crypto/ts/ts_err.c" + ], + "crypto/ts/libcrypto-lib-ts_lib.o" => [ + "crypto/ts/ts_lib.c" + ], + "crypto/ts/libcrypto-lib-ts_req_print.o" => [ + "crypto/ts/ts_req_print.c" + ], + "crypto/ts/libcrypto-lib-ts_req_utils.o" => [ + "crypto/ts/ts_req_utils.c" + ], + "crypto/ts/libcrypto-lib-ts_rsp_print.o" => [ + "crypto/ts/ts_rsp_print.c" + ], + "crypto/ts/libcrypto-lib-ts_rsp_sign.o" => [ + "crypto/ts/ts_rsp_sign.c" + ], + "crypto/ts/libcrypto-lib-ts_rsp_utils.o" => [ + "crypto/ts/ts_rsp_utils.c" + ], + "crypto/ts/libcrypto-lib-ts_rsp_verify.o" => [ + "crypto/ts/ts_rsp_verify.c" + ], + "crypto/ts/libcrypto-lib-ts_verify_ctx.o" => [ + "crypto/ts/ts_verify_ctx.c" + ], + "crypto/txt_db/libcrypto-lib-txt_db.o" => [ + "crypto/txt_db/txt_db.c" + ], + "crypto/ui/libcrypto-lib-ui_err.o" => [ + "crypto/ui/ui_err.c" + ], + "crypto/ui/libcrypto-lib-ui_lib.o" => [ + "crypto/ui/ui_lib.c" + ], + "crypto/ui/libcrypto-lib-ui_null.o" => [ + "crypto/ui/ui_null.c" + ], + "crypto/ui/libcrypto-lib-ui_openssl.o" => [ + "crypto/ui/ui_openssl.c" + ], + "crypto/ui/libcrypto-lib-ui_util.o" => [ + "crypto/ui/ui_util.c" + ], + "crypto/whrlpool/libcrypto-lib-wp_block.o" => [ + "crypto/whrlpool/wp_block.c" + ], + "crypto/whrlpool/libcrypto-lib-wp_dgst.o" => [ + "crypto/whrlpool/wp_dgst.c" + ], + "crypto/x509/libcrypto-lib-by_dir.o" => [ + "crypto/x509/by_dir.c" + ], + "crypto/x509/libcrypto-lib-by_file.o" => [ + "crypto/x509/by_file.c" + ], + "crypto/x509/libcrypto-lib-by_store.o" => [ + "crypto/x509/by_store.c" + ], + "crypto/x509/libcrypto-lib-pcy_cache.o" => [ + "crypto/x509/pcy_cache.c" + ], + "crypto/x509/libcrypto-lib-pcy_data.o" => [ + "crypto/x509/pcy_data.c" + ], + "crypto/x509/libcrypto-lib-pcy_lib.o" => [ + "crypto/x509/pcy_lib.c" + ], + "crypto/x509/libcrypto-lib-pcy_map.o" => [ + "crypto/x509/pcy_map.c" + ], + "crypto/x509/libcrypto-lib-pcy_node.o" => [ + "crypto/x509/pcy_node.c" + ], + "crypto/x509/libcrypto-lib-pcy_tree.o" => [ + "crypto/x509/pcy_tree.c" + ], + "crypto/x509/libcrypto-lib-t_acert.o" => [ + "crypto/x509/t_acert.c" + ], + "crypto/x509/libcrypto-lib-t_crl.o" => [ + "crypto/x509/t_crl.c" + ], + "crypto/x509/libcrypto-lib-t_req.o" => [ + "crypto/x509/t_req.c" + ], + "crypto/x509/libcrypto-lib-t_x509.o" => [ + "crypto/x509/t_x509.c" + ], + "crypto/x509/libcrypto-lib-v3_aaa.o" => [ + "crypto/x509/v3_aaa.c" + ], + "crypto/x509/libcrypto-lib-v3_ac_tgt.o" => [ + "crypto/x509/v3_ac_tgt.c" + ], + "crypto/x509/libcrypto-lib-v3_addr.o" => [ + "crypto/x509/v3_addr.c" + ], + "crypto/x509/libcrypto-lib-v3_admis.o" => [ + "crypto/x509/v3_admis.c" + ], + "crypto/x509/libcrypto-lib-v3_akeya.o" => [ + "crypto/x509/v3_akeya.c" + ], + "crypto/x509/libcrypto-lib-v3_akid.o" => [ + "crypto/x509/v3_akid.c" + ], + "crypto/x509/libcrypto-lib-v3_asid.o" => [ + "crypto/x509/v3_asid.c" + ], + "crypto/x509/libcrypto-lib-v3_attrdesc.o" => [ + "crypto/x509/v3_attrdesc.c" + ], + "crypto/x509/libcrypto-lib-v3_attrmap.o" => [ + "crypto/x509/v3_attrmap.c" + ], + "crypto/x509/libcrypto-lib-v3_audit_id.o" => [ + "crypto/x509/v3_audit_id.c" + ], + "crypto/x509/libcrypto-lib-v3_authattid.o" => [ + "crypto/x509/v3_authattid.c" + ], + "crypto/x509/libcrypto-lib-v3_battcons.o" => [ + "crypto/x509/v3_battcons.c" + ], + "crypto/x509/libcrypto-lib-v3_bcons.o" => [ + "crypto/x509/v3_bcons.c" + ], + "crypto/x509/libcrypto-lib-v3_bitst.o" => [ + "crypto/x509/v3_bitst.c" + ], + "crypto/x509/libcrypto-lib-v3_conf.o" => [ + "crypto/x509/v3_conf.c" + ], + "crypto/x509/libcrypto-lib-v3_cpols.o" => [ + "crypto/x509/v3_cpols.c" + ], + "crypto/x509/libcrypto-lib-v3_crld.o" => [ + "crypto/x509/v3_crld.c" + ], + "crypto/x509/libcrypto-lib-v3_enum.o" => [ + "crypto/x509/v3_enum.c" + ], + "crypto/x509/libcrypto-lib-v3_extku.o" => [ + "crypto/x509/v3_extku.c" + ], + "crypto/x509/libcrypto-lib-v3_genn.o" => [ + "crypto/x509/v3_genn.c" + ], + "crypto/x509/libcrypto-lib-v3_group_ac.o" => [ + "crypto/x509/v3_group_ac.c" + ], + "crypto/x509/libcrypto-lib-v3_ia5.o" => [ + "crypto/x509/v3_ia5.c" + ], + "crypto/x509/libcrypto-lib-v3_ind_iss.o" => [ + "crypto/x509/v3_ind_iss.c" + ], + "crypto/x509/libcrypto-lib-v3_info.o" => [ + "crypto/x509/v3_info.c" + ], + "crypto/x509/libcrypto-lib-v3_int.o" => [ + "crypto/x509/v3_int.c" + ], + "crypto/x509/libcrypto-lib-v3_iobo.o" => [ + "crypto/x509/v3_iobo.c" + ], + "crypto/x509/libcrypto-lib-v3_ist.o" => [ + "crypto/x509/v3_ist.c" + ], + "crypto/x509/libcrypto-lib-v3_lib.o" => [ + "crypto/x509/v3_lib.c" + ], + "crypto/x509/libcrypto-lib-v3_ncons.o" => [ + "crypto/x509/v3_ncons.c" + ], + "crypto/x509/libcrypto-lib-v3_no_ass.o" => [ + "crypto/x509/v3_no_ass.c" + ], + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o" => [ + "crypto/x509/v3_no_rev_avail.c" + ], + "crypto/x509/libcrypto-lib-v3_pci.o" => [ + "crypto/x509/v3_pci.c" + ], + "crypto/x509/libcrypto-lib-v3_pcia.o" => [ + "crypto/x509/v3_pcia.c" + ], + "crypto/x509/libcrypto-lib-v3_pcons.o" => [ + "crypto/x509/v3_pcons.c" + ], + "crypto/x509/libcrypto-lib-v3_pku.o" => [ + "crypto/x509/v3_pku.c" + ], + "crypto/x509/libcrypto-lib-v3_pmaps.o" => [ + "crypto/x509/v3_pmaps.c" + ], + "crypto/x509/libcrypto-lib-v3_prn.o" => [ + "crypto/x509/v3_prn.c" + ], + "crypto/x509/libcrypto-lib-v3_purp.o" => [ + "crypto/x509/v3_purp.c" + ], + "crypto/x509/libcrypto-lib-v3_rolespec.o" => [ + "crypto/x509/v3_rolespec.c" + ], + "crypto/x509/libcrypto-lib-v3_san.o" => [ + "crypto/x509/v3_san.c" + ], + "crypto/x509/libcrypto-lib-v3_sda.o" => [ + "crypto/x509/v3_sda.c" + ], + "crypto/x509/libcrypto-lib-v3_single_use.o" => [ + "crypto/x509/v3_single_use.c" + ], + "crypto/x509/libcrypto-lib-v3_skid.o" => [ + "crypto/x509/v3_skid.c" + ], + "crypto/x509/libcrypto-lib-v3_soa_id.o" => [ + "crypto/x509/v3_soa_id.c" + ], + "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ + "crypto/x509/v3_sxnet.c" + ], + "crypto/x509/libcrypto-lib-v3_timespec.o" => [ + "crypto/x509/v3_timespec.c" + ], + "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ + "crypto/x509/v3_tlsf.c" + ], + "crypto/x509/libcrypto-lib-v3_usernotice.o" => [ + "crypto/x509/v3_usernotice.c" + ], + "crypto/x509/libcrypto-lib-v3_utf8.o" => [ + "crypto/x509/v3_utf8.c" + ], + "crypto/x509/libcrypto-lib-v3_utl.o" => [ + "crypto/x509/v3_utl.c" + ], + "crypto/x509/libcrypto-lib-v3err.o" => [ + "crypto/x509/v3err.c" + ], + "crypto/x509/libcrypto-lib-x509_acert.o" => [ + "crypto/x509/x509_acert.c" + ], + "crypto/x509/libcrypto-lib-x509_att.o" => [ + "crypto/x509/x509_att.c" + ], + "crypto/x509/libcrypto-lib-x509_cmp.o" => [ + "crypto/x509/x509_cmp.c" + ], + "crypto/x509/libcrypto-lib-x509_d2.o" => [ + "crypto/x509/x509_d2.c" + ], + "crypto/x509/libcrypto-lib-x509_def.o" => [ + "crypto/x509/x509_def.c" + ], + "crypto/x509/libcrypto-lib-x509_err.o" => [ + "crypto/x509/x509_err.c" + ], + "crypto/x509/libcrypto-lib-x509_ext.o" => [ + "crypto/x509/x509_ext.c" + ], + "crypto/x509/libcrypto-lib-x509_lu.o" => [ + "crypto/x509/x509_lu.c" + ], + "crypto/x509/libcrypto-lib-x509_meth.o" => [ + "crypto/x509/x509_meth.c" + ], + "crypto/x509/libcrypto-lib-x509_obj.o" => [ + "crypto/x509/x509_obj.c" + ], + "crypto/x509/libcrypto-lib-x509_r2x.o" => [ + "crypto/x509/x509_r2x.c" + ], + "crypto/x509/libcrypto-lib-x509_req.o" => [ + "crypto/x509/x509_req.c" + ], + "crypto/x509/libcrypto-lib-x509_set.o" => [ + "crypto/x509/x509_set.c" + ], + "crypto/x509/libcrypto-lib-x509_trust.o" => [ + "crypto/x509/x509_trust.c" + ], + "crypto/x509/libcrypto-lib-x509_txt.o" => [ + "crypto/x509/x509_txt.c" + ], + "crypto/x509/libcrypto-lib-x509_v3.o" => [ + "crypto/x509/x509_v3.c" + ], + "crypto/x509/libcrypto-lib-x509_vfy.o" => [ + "crypto/x509/x509_vfy.c" + ], + "crypto/x509/libcrypto-lib-x509_vpm.o" => [ + "crypto/x509/x509_vpm.c" + ], + "crypto/x509/libcrypto-lib-x509aset.o" => [ + "crypto/x509/x509aset.c" + ], + "crypto/x509/libcrypto-lib-x509cset.o" => [ + "crypto/x509/x509cset.c" + ], + "crypto/x509/libcrypto-lib-x509name.o" => [ + "crypto/x509/x509name.c" + ], + "crypto/x509/libcrypto-lib-x509rset.o" => [ + "crypto/x509/x509rset.c" + ], + "crypto/x509/libcrypto-lib-x509spki.o" => [ + "crypto/x509/x509spki.c" + ], + "crypto/x509/libcrypto-lib-x509type.o" => [ + "crypto/x509/x509type.c" + ], + "crypto/x509/libcrypto-lib-x_all.o" => [ + "crypto/x509/x_all.c" + ], + "crypto/x509/libcrypto-lib-x_attrib.o" => [ + "crypto/x509/x_attrib.c" + ], + "crypto/x509/libcrypto-lib-x_crl.o" => [ + "crypto/x509/x_crl.c" + ], + "crypto/x509/libcrypto-lib-x_exten.o" => [ + "crypto/x509/x_exten.c" + ], + "crypto/x509/libcrypto-lib-x_ietfatt.o" => [ + "crypto/x509/x_ietfatt.c" + ], + "crypto/x509/libcrypto-lib-x_name.o" => [ + "crypto/x509/x_name.c" + ], + "crypto/x509/libcrypto-lib-x_pubkey.o" => [ + "crypto/x509/x_pubkey.c" + ], + "crypto/x509/libcrypto-lib-x_req.o" => [ + "crypto/x509/x_req.c" + ], + "crypto/x509/libcrypto-lib-x_x509.o" => [ + "crypto/x509/x_x509.c" + ], + "crypto/x509/libcrypto-lib-x_x509a.o" => [ + "crypto/x509/x_x509a.c" + ], + "engines/libcrypto-lib-e_capi.o" => [ + "engines/e_capi.c" + ], + "engines/libcrypto-lib-e_padlock.o" => [ + "engines/e_padlock.c" + ], + "libcrypto" => [ + "crypto/aes/libcrypto-lib-aes-riscv64-zkn.o", + "crypto/aes/libcrypto-lib-aes-riscv64-zvbb-zvkg-zvkned.o", + "crypto/aes/libcrypto-lib-aes-riscv64-zvkb-zvkned.o", + "crypto/aes/libcrypto-lib-aes-riscv64-zvkned.o", + "crypto/aes/libcrypto-lib-aes-riscv64.o", + "crypto/aes/libcrypto-lib-aes_cbc.o", + "crypto/aes/libcrypto-lib-aes_cfb.o", + "crypto/aes/libcrypto-lib-aes_ecb.o", + "crypto/aes/libcrypto-lib-aes_ige.o", + "crypto/aes/libcrypto-lib-aes_misc.o", + "crypto/aes/libcrypto-lib-aes_ofb.o", + "crypto/aes/libcrypto-lib-aes_wrap.o", + "crypto/aria/libcrypto-lib-aria.o", + "crypto/asn1/libcrypto-lib-a_bitstr.o", + "crypto/asn1/libcrypto-lib-a_d2i_fp.o", + "crypto/asn1/libcrypto-lib-a_digest.o", + "crypto/asn1/libcrypto-lib-a_dup.o", + "crypto/asn1/libcrypto-lib-a_gentm.o", + "crypto/asn1/libcrypto-lib-a_i2d_fp.o", + "crypto/asn1/libcrypto-lib-a_int.o", + "crypto/asn1/libcrypto-lib-a_mbstr.o", + "crypto/asn1/libcrypto-lib-a_object.o", + "crypto/asn1/libcrypto-lib-a_octet.o", + "crypto/asn1/libcrypto-lib-a_print.o", + "crypto/asn1/libcrypto-lib-a_sign.o", + "crypto/asn1/libcrypto-lib-a_strex.o", + "crypto/asn1/libcrypto-lib-a_strnid.o", + "crypto/asn1/libcrypto-lib-a_time.o", + "crypto/asn1/libcrypto-lib-a_type.o", + "crypto/asn1/libcrypto-lib-a_utctm.o", + "crypto/asn1/libcrypto-lib-a_utf8.o", + "crypto/asn1/libcrypto-lib-a_verify.o", + "crypto/asn1/libcrypto-lib-ameth_lib.o", + "crypto/asn1/libcrypto-lib-asn1_err.o", + "crypto/asn1/libcrypto-lib-asn1_gen.o", + "crypto/asn1/libcrypto-lib-asn1_item_list.o", + "crypto/asn1/libcrypto-lib-asn1_lib.o", + "crypto/asn1/libcrypto-lib-asn1_parse.o", + "crypto/asn1/libcrypto-lib-asn_mime.o", + "crypto/asn1/libcrypto-lib-asn_moid.o", + "crypto/asn1/libcrypto-lib-asn_mstbl.o", + "crypto/asn1/libcrypto-lib-asn_pack.o", + "crypto/asn1/libcrypto-lib-bio_asn1.o", + "crypto/asn1/libcrypto-lib-bio_ndef.o", + "crypto/asn1/libcrypto-lib-d2i_param.o", + "crypto/asn1/libcrypto-lib-d2i_pr.o", + "crypto/asn1/libcrypto-lib-d2i_pu.o", + "crypto/asn1/libcrypto-lib-evp_asn1.o", + "crypto/asn1/libcrypto-lib-f_int.o", + "crypto/asn1/libcrypto-lib-f_string.o", + "crypto/asn1/libcrypto-lib-i2d_evp.o", + "crypto/asn1/libcrypto-lib-n_pkey.o", + "crypto/asn1/libcrypto-lib-nsseq.o", + "crypto/asn1/libcrypto-lib-p5_pbe.o", + "crypto/asn1/libcrypto-lib-p5_pbev2.o", + "crypto/asn1/libcrypto-lib-p5_scrypt.o", + "crypto/asn1/libcrypto-lib-p8_pkey.o", + "crypto/asn1/libcrypto-lib-t_bitst.o", + "crypto/asn1/libcrypto-lib-t_pkey.o", + "crypto/asn1/libcrypto-lib-t_spki.o", + "crypto/asn1/libcrypto-lib-tasn_dec.o", + "crypto/asn1/libcrypto-lib-tasn_enc.o", + "crypto/asn1/libcrypto-lib-tasn_fre.o", + "crypto/asn1/libcrypto-lib-tasn_new.o", + "crypto/asn1/libcrypto-lib-tasn_prn.o", + "crypto/asn1/libcrypto-lib-tasn_scn.o", + "crypto/asn1/libcrypto-lib-tasn_typ.o", + "crypto/asn1/libcrypto-lib-tasn_utl.o", + "crypto/asn1/libcrypto-lib-x_algor.o", + "crypto/asn1/libcrypto-lib-x_bignum.o", + "crypto/asn1/libcrypto-lib-x_info.o", + "crypto/asn1/libcrypto-lib-x_int64.o", + "crypto/asn1/libcrypto-lib-x_long.o", + "crypto/asn1/libcrypto-lib-x_pkey.o", + "crypto/asn1/libcrypto-lib-x_sig.o", + "crypto/asn1/libcrypto-lib-x_spki.o", + "crypto/asn1/libcrypto-lib-x_val.o", + "crypto/async/arch/libcrypto-lib-async_null.o", + "crypto/async/arch/libcrypto-lib-async_posix.o", + "crypto/async/arch/libcrypto-lib-async_win.o", + "crypto/async/libcrypto-lib-async.o", + "crypto/async/libcrypto-lib-async_err.o", + "crypto/async/libcrypto-lib-async_wait.o", + "crypto/bf/libcrypto-lib-bf_cfb64.o", + "crypto/bf/libcrypto-lib-bf_ecb.o", + "crypto/bf/libcrypto-lib-bf_enc.o", + "crypto/bf/libcrypto-lib-bf_ofb64.o", + "crypto/bf/libcrypto-lib-bf_skey.o", + "crypto/bio/libcrypto-lib-bf_buff.o", + "crypto/bio/libcrypto-lib-bf_lbuf.o", + "crypto/bio/libcrypto-lib-bf_nbio.o", + "crypto/bio/libcrypto-lib-bf_null.o", + "crypto/bio/libcrypto-lib-bf_prefix.o", + "crypto/bio/libcrypto-lib-bf_readbuff.o", + "crypto/bio/libcrypto-lib-bio_addr.o", + "crypto/bio/libcrypto-lib-bio_cb.o", + "crypto/bio/libcrypto-lib-bio_dump.o", + "crypto/bio/libcrypto-lib-bio_err.o", + "crypto/bio/libcrypto-lib-bio_lib.o", + "crypto/bio/libcrypto-lib-bio_meth.o", + "crypto/bio/libcrypto-lib-bio_print.o", + "crypto/bio/libcrypto-lib-bio_sock.o", + "crypto/bio/libcrypto-lib-bio_sock2.o", + "crypto/bio/libcrypto-lib-bss_acpt.o", + "crypto/bio/libcrypto-lib-bss_bio.o", + "crypto/bio/libcrypto-lib-bss_conn.o", + "crypto/bio/libcrypto-lib-bss_core.o", + "crypto/bio/libcrypto-lib-bss_dgram.o", + "crypto/bio/libcrypto-lib-bss_dgram_pair.o", + "crypto/bio/libcrypto-lib-bss_fd.o", + "crypto/bio/libcrypto-lib-bss_file.o", + "crypto/bio/libcrypto-lib-bss_log.o", + "crypto/bio/libcrypto-lib-bss_mem.o", + "crypto/bio/libcrypto-lib-bss_null.o", + "crypto/bio/libcrypto-lib-bss_sock.o", + "crypto/bio/libcrypto-lib-ossl_core_bio.o", + "crypto/bn/libcrypto-lib-bn_add.o", + "crypto/bn/libcrypto-lib-bn_asm.o", + "crypto/bn/libcrypto-lib-bn_blind.o", + "crypto/bn/libcrypto-lib-bn_const.o", + "crypto/bn/libcrypto-lib-bn_conv.o", + "crypto/bn/libcrypto-lib-bn_ctx.o", + "crypto/bn/libcrypto-lib-bn_depr.o", + "crypto/bn/libcrypto-lib-bn_dh.o", + "crypto/bn/libcrypto-lib-bn_div.o", + "crypto/bn/libcrypto-lib-bn_err.o", + "crypto/bn/libcrypto-lib-bn_exp.o", + "crypto/bn/libcrypto-lib-bn_exp2.o", + "crypto/bn/libcrypto-lib-bn_gcd.o", + "crypto/bn/libcrypto-lib-bn_gf2m.o", + "crypto/bn/libcrypto-lib-bn_intern.o", + "crypto/bn/libcrypto-lib-bn_kron.o", + "crypto/bn/libcrypto-lib-bn_lib.o", + "crypto/bn/libcrypto-lib-bn_mod.o", + "crypto/bn/libcrypto-lib-bn_mont.o", + "crypto/bn/libcrypto-lib-bn_mpi.o", + "crypto/bn/libcrypto-lib-bn_mul.o", + "crypto/bn/libcrypto-lib-bn_nist.o", + "crypto/bn/libcrypto-lib-bn_prime.o", + "crypto/bn/libcrypto-lib-bn_print.o", + "crypto/bn/libcrypto-lib-bn_rand.o", + "crypto/bn/libcrypto-lib-bn_recp.o", + "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o", + "crypto/bn/libcrypto-lib-bn_shift.o", + "crypto/bn/libcrypto-lib-bn_sqr.o", + "crypto/bn/libcrypto-lib-bn_sqrt.o", + "crypto/bn/libcrypto-lib-bn_srp.o", + "crypto/bn/libcrypto-lib-bn_word.o", + "crypto/bn/libcrypto-lib-bn_x931p.o", + "crypto/buffer/libcrypto-lib-buf_err.o", + "crypto/buffer/libcrypto-lib-buffer.o", + "crypto/camellia/libcrypto-lib-camellia.o", + "crypto/camellia/libcrypto-lib-cmll_cbc.o", + "crypto/camellia/libcrypto-lib-cmll_cfb.o", + "crypto/camellia/libcrypto-lib-cmll_ctr.o", + "crypto/camellia/libcrypto-lib-cmll_ecb.o", + "crypto/camellia/libcrypto-lib-cmll_misc.o", + "crypto/camellia/libcrypto-lib-cmll_ofb.o", + "crypto/cast/libcrypto-lib-c_cfb64.o", + "crypto/cast/libcrypto-lib-c_ecb.o", + "crypto/cast/libcrypto-lib-c_enc.o", + "crypto/cast/libcrypto-lib-c_ofb64.o", + "crypto/cast/libcrypto-lib-c_skey.o", + "crypto/chacha/libcrypto-lib-chacha-riscv64-v-zbb-zvkb.o", + "crypto/chacha/libcrypto-lib-chacha-riscv64-v-zbb.o", + "crypto/chacha/libcrypto-lib-chacha_enc.o", + "crypto/chacha/libcrypto-lib-chacha_riscv.o", + "crypto/cmac/libcrypto-lib-cmac.o", + "crypto/cmp/libcrypto-lib-cmp_asn.o", + "crypto/cmp/libcrypto-lib-cmp_client.o", + "crypto/cmp/libcrypto-lib-cmp_ctx.o", + "crypto/cmp/libcrypto-lib-cmp_err.o", + "crypto/cmp/libcrypto-lib-cmp_genm.o", + "crypto/cmp/libcrypto-lib-cmp_hdr.o", + "crypto/cmp/libcrypto-lib-cmp_http.o", + "crypto/cmp/libcrypto-lib-cmp_msg.o", + "crypto/cmp/libcrypto-lib-cmp_protect.o", + "crypto/cmp/libcrypto-lib-cmp_server.o", + "crypto/cmp/libcrypto-lib-cmp_status.o", + "crypto/cmp/libcrypto-lib-cmp_util.o", + "crypto/cmp/libcrypto-lib-cmp_vfy.o", + "crypto/cms/libcrypto-lib-cms_asn1.o", + "crypto/cms/libcrypto-lib-cms_att.o", + "crypto/cms/libcrypto-lib-cms_cd.o", + "crypto/cms/libcrypto-lib-cms_dd.o", + "crypto/cms/libcrypto-lib-cms_dh.o", + "crypto/cms/libcrypto-lib-cms_ec.o", + "crypto/cms/libcrypto-lib-cms_enc.o", + "crypto/cms/libcrypto-lib-cms_env.o", + "crypto/cms/libcrypto-lib-cms_err.o", + "crypto/cms/libcrypto-lib-cms_ess.o", + "crypto/cms/libcrypto-lib-cms_io.o", + "crypto/cms/libcrypto-lib-cms_kari.o", + "crypto/cms/libcrypto-lib-cms_lib.o", + "crypto/cms/libcrypto-lib-cms_pwri.o", + "crypto/cms/libcrypto-lib-cms_rsa.o", + "crypto/cms/libcrypto-lib-cms_sd.o", + "crypto/cms/libcrypto-lib-cms_smime.o", + "crypto/comp/libcrypto-lib-c_brotli.o", + "crypto/comp/libcrypto-lib-c_zlib.o", + "crypto/comp/libcrypto-lib-c_zstd.o", + "crypto/comp/libcrypto-lib-comp_err.o", + "crypto/comp/libcrypto-lib-comp_lib.o", + "crypto/conf/libcrypto-lib-conf_api.o", + "crypto/conf/libcrypto-lib-conf_def.o", + "crypto/conf/libcrypto-lib-conf_err.o", + "crypto/conf/libcrypto-lib-conf_lib.o", + "crypto/conf/libcrypto-lib-conf_mall.o", + "crypto/conf/libcrypto-lib-conf_mod.o", + "crypto/conf/libcrypto-lib-conf_sap.o", + "crypto/conf/libcrypto-lib-conf_ssl.o", + "crypto/crmf/libcrypto-lib-crmf_asn.o", + "crypto/crmf/libcrypto-lib-crmf_err.o", + "crypto/crmf/libcrypto-lib-crmf_lib.o", + "crypto/crmf/libcrypto-lib-crmf_pbm.o", + "crypto/ct/libcrypto-lib-ct_b64.o", + "crypto/ct/libcrypto-lib-ct_err.o", + "crypto/ct/libcrypto-lib-ct_log.o", + "crypto/ct/libcrypto-lib-ct_oct.o", + "crypto/ct/libcrypto-lib-ct_policy.o", + "crypto/ct/libcrypto-lib-ct_prn.o", + "crypto/ct/libcrypto-lib-ct_sct.o", + "crypto/ct/libcrypto-lib-ct_sct_ctx.o", + "crypto/ct/libcrypto-lib-ct_vfy.o", + "crypto/ct/libcrypto-lib-ct_x509v3.o", + "crypto/des/libcrypto-lib-cbc_cksm.o", + "crypto/des/libcrypto-lib-cbc_enc.o", + "crypto/des/libcrypto-lib-cfb64ede.o", + "crypto/des/libcrypto-lib-cfb64enc.o", + "crypto/des/libcrypto-lib-cfb_enc.o", + "crypto/des/libcrypto-lib-des_enc.o", + "crypto/des/libcrypto-lib-ecb3_enc.o", + "crypto/des/libcrypto-lib-ecb_enc.o", + "crypto/des/libcrypto-lib-fcrypt.o", + "crypto/des/libcrypto-lib-fcrypt_b.o", + "crypto/des/libcrypto-lib-ofb64ede.o", + "crypto/des/libcrypto-lib-ofb64enc.o", + "crypto/des/libcrypto-lib-ofb_enc.o", + "crypto/des/libcrypto-lib-pcbc_enc.o", + "crypto/des/libcrypto-lib-qud_cksm.o", + "crypto/des/libcrypto-lib-rand_key.o", + "crypto/des/libcrypto-lib-set_key.o", + "crypto/des/libcrypto-lib-str2key.o", + "crypto/des/libcrypto-lib-xcbc_enc.o", + "crypto/dh/libcrypto-lib-dh_ameth.o", + "crypto/dh/libcrypto-lib-dh_asn1.o", + "crypto/dh/libcrypto-lib-dh_backend.o", + "crypto/dh/libcrypto-lib-dh_check.o", + "crypto/dh/libcrypto-lib-dh_depr.o", + "crypto/dh/libcrypto-lib-dh_err.o", + "crypto/dh/libcrypto-lib-dh_gen.o", + "crypto/dh/libcrypto-lib-dh_group_params.o", + "crypto/dh/libcrypto-lib-dh_kdf.o", + "crypto/dh/libcrypto-lib-dh_key.o", + "crypto/dh/libcrypto-lib-dh_lib.o", + "crypto/dh/libcrypto-lib-dh_meth.o", + "crypto/dh/libcrypto-lib-dh_pmeth.o", + "crypto/dh/libcrypto-lib-dh_prn.o", + "crypto/dh/libcrypto-lib-dh_rfc5114.o", + "crypto/dsa/libcrypto-lib-dsa_ameth.o", + "crypto/dsa/libcrypto-lib-dsa_asn1.o", + "crypto/dsa/libcrypto-lib-dsa_backend.o", + "crypto/dsa/libcrypto-lib-dsa_check.o", + "crypto/dsa/libcrypto-lib-dsa_depr.o", + "crypto/dsa/libcrypto-lib-dsa_err.o", + "crypto/dsa/libcrypto-lib-dsa_gen.o", + "crypto/dsa/libcrypto-lib-dsa_key.o", + "crypto/dsa/libcrypto-lib-dsa_lib.o", + "crypto/dsa/libcrypto-lib-dsa_meth.o", + "crypto/dsa/libcrypto-lib-dsa_ossl.o", + "crypto/dsa/libcrypto-lib-dsa_pmeth.o", + "crypto/dsa/libcrypto-lib-dsa_prn.o", + "crypto/dsa/libcrypto-lib-dsa_sign.o", + "crypto/dsa/libcrypto-lib-dsa_vrf.o", + "crypto/dso/libcrypto-lib-dso_dl.o", + "crypto/dso/libcrypto-lib-dso_dlfcn.o", + "crypto/dso/libcrypto-lib-dso_err.o", + "crypto/dso/libcrypto-lib-dso_lib.o", + "crypto/dso/libcrypto-lib-dso_openssl.o", + "crypto/dso/libcrypto-lib-dso_vms.o", + "crypto/dso/libcrypto-lib-dso_win32.o", + "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o", + "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o", + "crypto/ec/curve448/libcrypto-lib-curve448.o", + "crypto/ec/curve448/libcrypto-lib-curve448_tables.o", + "crypto/ec/curve448/libcrypto-lib-eddsa.o", + "crypto/ec/curve448/libcrypto-lib-f_generic.o", + "crypto/ec/curve448/libcrypto-lib-scalar.o", + "crypto/ec/libcrypto-lib-curve25519.o", + "crypto/ec/libcrypto-lib-ec2_oct.o", + "crypto/ec/libcrypto-lib-ec2_smpl.o", + "crypto/ec/libcrypto-lib-ec_ameth.o", + "crypto/ec/libcrypto-lib-ec_asn1.o", + "crypto/ec/libcrypto-lib-ec_backend.o", + "crypto/ec/libcrypto-lib-ec_check.o", + "crypto/ec/libcrypto-lib-ec_curve.o", + "crypto/ec/libcrypto-lib-ec_cvt.o", + "crypto/ec/libcrypto-lib-ec_deprecated.o", + "crypto/ec/libcrypto-lib-ec_err.o", + "crypto/ec/libcrypto-lib-ec_key.o", + "crypto/ec/libcrypto-lib-ec_kmeth.o", + "crypto/ec/libcrypto-lib-ec_lib.o", + "crypto/ec/libcrypto-lib-ec_mult.o", + "crypto/ec/libcrypto-lib-ec_oct.o", + "crypto/ec/libcrypto-lib-ec_pmeth.o", + "crypto/ec/libcrypto-lib-ec_print.o", + "crypto/ec/libcrypto-lib-ecdh_kdf.o", + "crypto/ec/libcrypto-lib-ecdh_ossl.o", + "crypto/ec/libcrypto-lib-ecdsa_ossl.o", + "crypto/ec/libcrypto-lib-ecdsa_sign.o", + "crypto/ec/libcrypto-lib-ecdsa_vrf.o", + "crypto/ec/libcrypto-lib-eck_prn.o", + "crypto/ec/libcrypto-lib-ecp_mont.o", + "crypto/ec/libcrypto-lib-ecp_nist.o", + "crypto/ec/libcrypto-lib-ecp_oct.o", + "crypto/ec/libcrypto-lib-ecp_smpl.o", + "crypto/ec/libcrypto-lib-ecx_backend.o", + "crypto/ec/libcrypto-lib-ecx_key.o", + "crypto/ec/libcrypto-lib-ecx_meth.o", + "crypto/encode_decode/libcrypto-lib-decoder_err.o", + "crypto/encode_decode/libcrypto-lib-decoder_lib.o", + "crypto/encode_decode/libcrypto-lib-decoder_meth.o", + "crypto/encode_decode/libcrypto-lib-decoder_pkey.o", + "crypto/encode_decode/libcrypto-lib-encoder_err.o", + "crypto/encode_decode/libcrypto-lib-encoder_lib.o", + "crypto/encode_decode/libcrypto-lib-encoder_meth.o", + "crypto/encode_decode/libcrypto-lib-encoder_pkey.o", + "crypto/engine/libcrypto-lib-eng_all.o", + "crypto/engine/libcrypto-lib-eng_cnf.o", + "crypto/engine/libcrypto-lib-eng_ctrl.o", + "crypto/engine/libcrypto-lib-eng_dyn.o", + "crypto/engine/libcrypto-lib-eng_err.o", + "crypto/engine/libcrypto-lib-eng_fat.o", + "crypto/engine/libcrypto-lib-eng_init.o", + "crypto/engine/libcrypto-lib-eng_lib.o", + "crypto/engine/libcrypto-lib-eng_list.o", + "crypto/engine/libcrypto-lib-eng_openssl.o", + "crypto/engine/libcrypto-lib-eng_pkey.o", + "crypto/engine/libcrypto-lib-eng_rdrand.o", + "crypto/engine/libcrypto-lib-eng_table.o", + "crypto/engine/libcrypto-lib-tb_asnmth.o", + "crypto/engine/libcrypto-lib-tb_cipher.o", + "crypto/engine/libcrypto-lib-tb_dh.o", + "crypto/engine/libcrypto-lib-tb_digest.o", + "crypto/engine/libcrypto-lib-tb_dsa.o", + "crypto/engine/libcrypto-lib-tb_eckey.o", + "crypto/engine/libcrypto-lib-tb_pkmeth.o", + "crypto/engine/libcrypto-lib-tb_rand.o", + "crypto/engine/libcrypto-lib-tb_rsa.o", + "crypto/err/libcrypto-lib-err.o", + "crypto/err/libcrypto-lib-err_all.o", + "crypto/err/libcrypto-lib-err_all_legacy.o", + "crypto/err/libcrypto-lib-err_blocks.o", + "crypto/err/libcrypto-lib-err_mark.o", + "crypto/err/libcrypto-lib-err_prn.o", + "crypto/err/libcrypto-lib-err_save.o", + "crypto/ess/libcrypto-lib-ess_asn1.o", + "crypto/ess/libcrypto-lib-ess_err.o", + "crypto/ess/libcrypto-lib-ess_lib.o", + "crypto/evp/libcrypto-lib-asymcipher.o", + "crypto/evp/libcrypto-lib-bio_b64.o", + "crypto/evp/libcrypto-lib-bio_enc.o", + "crypto/evp/libcrypto-lib-bio_md.o", + "crypto/evp/libcrypto-lib-bio_ok.o", + "crypto/evp/libcrypto-lib-c_allc.o", + "crypto/evp/libcrypto-lib-c_alld.o", + "crypto/evp/libcrypto-lib-cmeth_lib.o", + "crypto/evp/libcrypto-lib-ctrl_params_translate.o", + "crypto/evp/libcrypto-lib-dh_ctrl.o", + "crypto/evp/libcrypto-lib-dh_support.o", + "crypto/evp/libcrypto-lib-digest.o", + "crypto/evp/libcrypto-lib-dsa_ctrl.o", + "crypto/evp/libcrypto-lib-e_aes.o", + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o", + "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o", + "crypto/evp/libcrypto-lib-e_aria.o", + "crypto/evp/libcrypto-lib-e_bf.o", + "crypto/evp/libcrypto-lib-e_camellia.o", + "crypto/evp/libcrypto-lib-e_cast.o", + "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o", + "crypto/evp/libcrypto-lib-e_des.o", + "crypto/evp/libcrypto-lib-e_des3.o", + "crypto/evp/libcrypto-lib-e_idea.o", + "crypto/evp/libcrypto-lib-e_null.o", + "crypto/evp/libcrypto-lib-e_old.o", + "crypto/evp/libcrypto-lib-e_rc2.o", + "crypto/evp/libcrypto-lib-e_rc4.o", + "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o", + "crypto/evp/libcrypto-lib-e_rc5.o", + "crypto/evp/libcrypto-lib-e_seed.o", + "crypto/evp/libcrypto-lib-e_sm4.o", + "crypto/evp/libcrypto-lib-e_xcbc_d.o", + "crypto/evp/libcrypto-lib-ec_ctrl.o", + "crypto/evp/libcrypto-lib-ec_support.o", + "crypto/evp/libcrypto-lib-encode.o", + "crypto/evp/libcrypto-lib-evp_cnf.o", + "crypto/evp/libcrypto-lib-evp_enc.o", + "crypto/evp/libcrypto-lib-evp_err.o", + "crypto/evp/libcrypto-lib-evp_fetch.o", + "crypto/evp/libcrypto-lib-evp_key.o", + "crypto/evp/libcrypto-lib-evp_lib.o", + "crypto/evp/libcrypto-lib-evp_pbe.o", + "crypto/evp/libcrypto-lib-evp_pkey.o", + "crypto/evp/libcrypto-lib-evp_rand.o", + "crypto/evp/libcrypto-lib-evp_utils.o", + "crypto/evp/libcrypto-lib-exchange.o", + "crypto/evp/libcrypto-lib-kdf_lib.o", + "crypto/evp/libcrypto-lib-kdf_meth.o", + "crypto/evp/libcrypto-lib-kem.o", + "crypto/evp/libcrypto-lib-keymgmt_lib.o", + "crypto/evp/libcrypto-lib-keymgmt_meth.o", + "crypto/evp/libcrypto-lib-legacy_blake2.o", + "crypto/evp/libcrypto-lib-legacy_md4.o", + "crypto/evp/libcrypto-lib-legacy_md5.o", + "crypto/evp/libcrypto-lib-legacy_md5_sha1.o", + "crypto/evp/libcrypto-lib-legacy_mdc2.o", + "crypto/evp/libcrypto-lib-legacy_ripemd.o", + "crypto/evp/libcrypto-lib-legacy_sha.o", + "crypto/evp/libcrypto-lib-legacy_wp.o", + "crypto/evp/libcrypto-lib-m_null.o", + "crypto/evp/libcrypto-lib-m_sigver.o", + "crypto/evp/libcrypto-lib-mac_lib.o", + "crypto/evp/libcrypto-lib-mac_meth.o", + "crypto/evp/libcrypto-lib-names.o", + "crypto/evp/libcrypto-lib-p5_crpt.o", + "crypto/evp/libcrypto-lib-p5_crpt2.o", + "crypto/evp/libcrypto-lib-p_dec.o", + "crypto/evp/libcrypto-lib-p_enc.o", + "crypto/evp/libcrypto-lib-p_legacy.o", + "crypto/evp/libcrypto-lib-p_lib.o", + "crypto/evp/libcrypto-lib-p_open.o", + "crypto/evp/libcrypto-lib-p_seal.o", + "crypto/evp/libcrypto-lib-p_sign.o", + "crypto/evp/libcrypto-lib-p_verify.o", + "crypto/evp/libcrypto-lib-pbe_scrypt.o", + "crypto/evp/libcrypto-lib-pmeth_check.o", + "crypto/evp/libcrypto-lib-pmeth_gn.o", + "crypto/evp/libcrypto-lib-pmeth_lib.o", + "crypto/evp/libcrypto-lib-s_lib.o", + "crypto/evp/libcrypto-lib-signature.o", + "crypto/evp/libcrypto-lib-skeymgmt_meth.o", + "crypto/ffc/libcrypto-lib-ffc_backend.o", + "crypto/ffc/libcrypto-lib-ffc_dh.o", + "crypto/ffc/libcrypto-lib-ffc_key_generate.o", + "crypto/ffc/libcrypto-lib-ffc_key_validate.o", + "crypto/ffc/libcrypto-lib-ffc_params.o", + "crypto/ffc/libcrypto-lib-ffc_params_generate.o", + "crypto/ffc/libcrypto-lib-ffc_params_validate.o", + "crypto/hashtable/libcrypto-lib-hashfunc.o", + "crypto/hashtable/libcrypto-lib-hashtable.o", + "crypto/hmac/libcrypto-lib-hmac.o", + "crypto/hpke/libcrypto-lib-hpke.o", + "crypto/hpke/libcrypto-lib-hpke_util.o", + "crypto/http/libcrypto-lib-http_client.o", + "crypto/http/libcrypto-lib-http_err.o", + "crypto/http/libcrypto-lib-http_lib.o", + "crypto/idea/libcrypto-lib-i_cbc.o", + "crypto/idea/libcrypto-lib-i_cfb64.o", + "crypto/idea/libcrypto-lib-i_ecb.o", + "crypto/idea/libcrypto-lib-i_ofb64.o", + "crypto/idea/libcrypto-lib-i_skey.o", + "crypto/kdf/libcrypto-lib-kdf_err.o", + "crypto/lhash/libcrypto-lib-lh_stats.o", + "crypto/lhash/libcrypto-lib-lhash.o", + "crypto/libcrypto-lib-asn1_dsa.o", + "crypto/libcrypto-lib-bsearch.o", + "crypto/libcrypto-lib-comp_methods.o", + "crypto/libcrypto-lib-context.o", + "crypto/libcrypto-lib-core_algorithm.o", + "crypto/libcrypto-lib-core_fetch.o", + "crypto/libcrypto-lib-core_namemap.o", + "crypto/libcrypto-lib-cpt_err.o", + "crypto/libcrypto-lib-cpuid.o", + "crypto/libcrypto-lib-cryptlib.o", + "crypto/libcrypto-lib-ctype.o", + "crypto/libcrypto-lib-cversion.o", + "crypto/libcrypto-lib-defaults.o", + "crypto/libcrypto-lib-der_writer.o", + "crypto/libcrypto-lib-deterministic_nonce.o", + "crypto/libcrypto-lib-ebcdic.o", + "crypto/libcrypto-lib-ex_data.o", + "crypto/libcrypto-lib-getenv.o", + "crypto/libcrypto-lib-indicator_core.o", + "crypto/libcrypto-lib-info.o", + "crypto/libcrypto-lib-init.o", + "crypto/libcrypto-lib-initthread.o", + "crypto/libcrypto-lib-mem.o", + "crypto/libcrypto-lib-mem_sec.o", + "crypto/libcrypto-lib-o_dir.o", + "crypto/libcrypto-lib-o_fopen.o", + "crypto/libcrypto-lib-o_init.o", + "crypto/libcrypto-lib-o_str.o", + "crypto/libcrypto-lib-o_time.o", + "crypto/libcrypto-lib-packet.o", + "crypto/libcrypto-lib-param_build.o", + "crypto/libcrypto-lib-param_build_set.o", + "crypto/libcrypto-lib-params.o", + "crypto/libcrypto-lib-params_dup.o", + "crypto/libcrypto-lib-params_from_text.o", + "crypto/libcrypto-lib-params_idx.o", + "crypto/libcrypto-lib-passphrase.o", + "crypto/libcrypto-lib-provider.o", + "crypto/libcrypto-lib-provider_child.o", + "crypto/libcrypto-lib-provider_conf.o", + "crypto/libcrypto-lib-provider_core.o", + "crypto/libcrypto-lib-provider_predefined.o", + "crypto/libcrypto-lib-punycode.o", + "crypto/libcrypto-lib-quic_vlint.o", + "crypto/libcrypto-lib-riscv64cpuid.o", + "crypto/libcrypto-lib-riscvcap.o", + "crypto/libcrypto-lib-self_test_core.o", + "crypto/libcrypto-lib-sleep.o", + "crypto/libcrypto-lib-sparse_array.o", + "crypto/libcrypto-lib-ssl_err.o", + "crypto/libcrypto-lib-threads_lib.o", + "crypto/libcrypto-lib-threads_none.o", + "crypto/libcrypto-lib-threads_pthread.o", + "crypto/libcrypto-lib-threads_win.o", + "crypto/libcrypto-lib-time.o", + "crypto/libcrypto-lib-trace.o", + "crypto/libcrypto-lib-uid.o", + "crypto/md4/libcrypto-lib-md4_dgst.o", + "crypto/md4/libcrypto-lib-md4_one.o", + "crypto/md5/libcrypto-lib-md5_dgst.o", + "crypto/md5/libcrypto-lib-md5_one.o", + "crypto/md5/libcrypto-lib-md5_sha1.o", + "crypto/mdc2/libcrypto-lib-mdc2_one.o", + "crypto/mdc2/libcrypto-lib-mdc2dgst.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_params.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libcrypto-lib-ml_dsa_sign.o", + "crypto/ml_kem/libcrypto-lib-ml_kem.o", + "crypto/modes/libcrypto-lib-aes-gcm-riscv64-zvkb-zvkg-zvkned.o", + "crypto/modes/libcrypto-lib-cbc128.o", + "crypto/modes/libcrypto-lib-ccm128.o", + "crypto/modes/libcrypto-lib-cfb128.o", + "crypto/modes/libcrypto-lib-ctr128.o", + "crypto/modes/libcrypto-lib-cts128.o", + "crypto/modes/libcrypto-lib-gcm128.o", + "crypto/modes/libcrypto-lib-ghash-riscv64-zvkb-zvbc.o", + "crypto/modes/libcrypto-lib-ghash-riscv64-zvkg.o", + "crypto/modes/libcrypto-lib-ghash-riscv64.o", + "crypto/modes/libcrypto-lib-ocb128.o", + "crypto/modes/libcrypto-lib-ofb128.o", + "crypto/modes/libcrypto-lib-siv128.o", + "crypto/modes/libcrypto-lib-wrap128.o", + "crypto/modes/libcrypto-lib-xts128.o", + "crypto/modes/libcrypto-lib-xts128gb.o", + "crypto/objects/libcrypto-lib-o_names.o", + "crypto/objects/libcrypto-lib-obj_dat.o", + "crypto/objects/libcrypto-lib-obj_err.o", + "crypto/objects/libcrypto-lib-obj_lib.o", + "crypto/objects/libcrypto-lib-obj_xref.o", + "crypto/ocsp/libcrypto-lib-ocsp_asn.o", + "crypto/ocsp/libcrypto-lib-ocsp_cl.o", + "crypto/ocsp/libcrypto-lib-ocsp_err.o", + "crypto/ocsp/libcrypto-lib-ocsp_ext.o", + "crypto/ocsp/libcrypto-lib-ocsp_http.o", + "crypto/ocsp/libcrypto-lib-ocsp_lib.o", + "crypto/ocsp/libcrypto-lib-ocsp_prn.o", + "crypto/ocsp/libcrypto-lib-ocsp_srv.o", + "crypto/ocsp/libcrypto-lib-ocsp_vfy.o", + "crypto/ocsp/libcrypto-lib-v3_ocsp.o", + "crypto/pem/libcrypto-lib-pem_all.o", + "crypto/pem/libcrypto-lib-pem_err.o", + "crypto/pem/libcrypto-lib-pem_info.o", + "crypto/pem/libcrypto-lib-pem_lib.o", + "crypto/pem/libcrypto-lib-pem_oth.o", + "crypto/pem/libcrypto-lib-pem_pk8.o", + "crypto/pem/libcrypto-lib-pem_pkey.o", + "crypto/pem/libcrypto-lib-pem_sign.o", + "crypto/pem/libcrypto-lib-pem_x509.o", + "crypto/pem/libcrypto-lib-pem_xaux.o", + "crypto/pem/libcrypto-lib-pvkfmt.o", + "crypto/pkcs12/libcrypto-lib-p12_add.o", + "crypto/pkcs12/libcrypto-lib-p12_asn.o", + "crypto/pkcs12/libcrypto-lib-p12_attr.o", + "crypto/pkcs12/libcrypto-lib-p12_crpt.o", + "crypto/pkcs12/libcrypto-lib-p12_crt.o", + "crypto/pkcs12/libcrypto-lib-p12_decr.o", + "crypto/pkcs12/libcrypto-lib-p12_init.o", + "crypto/pkcs12/libcrypto-lib-p12_key.o", + "crypto/pkcs12/libcrypto-lib-p12_kiss.o", + "crypto/pkcs12/libcrypto-lib-p12_mutl.o", + "crypto/pkcs12/libcrypto-lib-p12_npas.o", + "crypto/pkcs12/libcrypto-lib-p12_p8d.o", + "crypto/pkcs12/libcrypto-lib-p12_p8e.o", + "crypto/pkcs12/libcrypto-lib-p12_sbag.o", + "crypto/pkcs12/libcrypto-lib-p12_utl.o", + "crypto/pkcs12/libcrypto-lib-pk12err.o", + "crypto/pkcs7/libcrypto-lib-bio_pk7.o", + "crypto/pkcs7/libcrypto-lib-pk7_asn1.o", + "crypto/pkcs7/libcrypto-lib-pk7_attr.o", + "crypto/pkcs7/libcrypto-lib-pk7_doit.o", + "crypto/pkcs7/libcrypto-lib-pk7_lib.o", + "crypto/pkcs7/libcrypto-lib-pk7_mime.o", + "crypto/pkcs7/libcrypto-lib-pk7_smime.o", + "crypto/pkcs7/libcrypto-lib-pkcs7err.o", + "crypto/poly1305/libcrypto-lib-poly1305.o", + "crypto/property/libcrypto-lib-defn_cache.o", + "crypto/property/libcrypto-lib-property.o", + "crypto/property/libcrypto-lib-property_err.o", + "crypto/property/libcrypto-lib-property_parse.o", + "crypto/property/libcrypto-lib-property_query.o", + "crypto/property/libcrypto-lib-property_string.o", + "crypto/rand/libcrypto-lib-prov_seed.o", + "crypto/rand/libcrypto-lib-rand_deprecated.o", + "crypto/rand/libcrypto-lib-rand_err.o", + "crypto/rand/libcrypto-lib-rand_lib.o", + "crypto/rand/libcrypto-lib-rand_meth.o", + "crypto/rand/libcrypto-lib-rand_pool.o", + "crypto/rand/libcrypto-lib-rand_uniform.o", + "crypto/rand/libcrypto-lib-randfile.o", + "crypto/rc2/libcrypto-lib-rc2_cbc.o", + "crypto/rc2/libcrypto-lib-rc2_ecb.o", + "crypto/rc2/libcrypto-lib-rc2_skey.o", + "crypto/rc2/libcrypto-lib-rc2cfb64.o", + "crypto/rc2/libcrypto-lib-rc2ofb64.o", + "crypto/rc4/libcrypto-lib-rc4_enc.o", + "crypto/rc4/libcrypto-lib-rc4_skey.o", + "crypto/ripemd/libcrypto-lib-rmd_dgst.o", + "crypto/ripemd/libcrypto-lib-rmd_one.o", + "crypto/rsa/libcrypto-lib-rsa_ameth.o", + "crypto/rsa/libcrypto-lib-rsa_asn1.o", + "crypto/rsa/libcrypto-lib-rsa_backend.o", + "crypto/rsa/libcrypto-lib-rsa_chk.o", + "crypto/rsa/libcrypto-lib-rsa_crpt.o", + "crypto/rsa/libcrypto-lib-rsa_depr.o", + "crypto/rsa/libcrypto-lib-rsa_err.o", + "crypto/rsa/libcrypto-lib-rsa_gen.o", + "crypto/rsa/libcrypto-lib-rsa_lib.o", + "crypto/rsa/libcrypto-lib-rsa_meth.o", + "crypto/rsa/libcrypto-lib-rsa_mp.o", + "crypto/rsa/libcrypto-lib-rsa_mp_names.o", + "crypto/rsa/libcrypto-lib-rsa_none.o", + "crypto/rsa/libcrypto-lib-rsa_oaep.o", + "crypto/rsa/libcrypto-lib-rsa_ossl.o", + "crypto/rsa/libcrypto-lib-rsa_pk1.o", + "crypto/rsa/libcrypto-lib-rsa_pmeth.o", + "crypto/rsa/libcrypto-lib-rsa_prn.o", + "crypto/rsa/libcrypto-lib-rsa_pss.o", + "crypto/rsa/libcrypto-lib-rsa_saos.o", + "crypto/rsa/libcrypto-lib-rsa_schemes.o", + "crypto/rsa/libcrypto-lib-rsa_sign.o", + "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o", + "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o", + "crypto/rsa/libcrypto-lib-rsa_x931.o", + "crypto/rsa/libcrypto-lib-rsa_x931g.o", + "crypto/seed/libcrypto-lib-seed.o", + "crypto/seed/libcrypto-lib-seed_cbc.o", + "crypto/seed/libcrypto-lib-seed_cfb.o", + "crypto/seed/libcrypto-lib-seed_ecb.o", + "crypto/seed/libcrypto-lib-seed_ofb.o", + "crypto/sha/libcrypto-lib-keccak1600.o", + "crypto/sha/libcrypto-lib-sha1_one.o", + "crypto/sha/libcrypto-lib-sha1dgst.o", + "crypto/sha/libcrypto-lib-sha256-riscv64-zvkb-zvknha_or_zvknhb.o", + "crypto/sha/libcrypto-lib-sha256.o", + "crypto/sha/libcrypto-lib-sha3.o", + "crypto/sha/libcrypto-lib-sha512-riscv64-zvkb-zvknhb.o", + "crypto/sha/libcrypto-lib-sha512.o", + "crypto/sha/libcrypto-lib-sha_riscv.o", + "crypto/siphash/libcrypto-lib-siphash.o", + "crypto/slh_dsa/libcrypto-lib-slh_adrs.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libcrypto-lib-slh_dsa_key.o", + "crypto/slh_dsa/libcrypto-lib-slh_fors.o", + "crypto/slh_dsa/libcrypto-lib-slh_hash.o", + "crypto/slh_dsa/libcrypto-lib-slh_hypertree.o", + "crypto/slh_dsa/libcrypto-lib-slh_params.o", + "crypto/slh_dsa/libcrypto-lib-slh_wots.o", + "crypto/slh_dsa/libcrypto-lib-slh_xmss.o", + "crypto/sm2/libcrypto-lib-sm2_crypt.o", + "crypto/sm2/libcrypto-lib-sm2_err.o", + "crypto/sm2/libcrypto-lib-sm2_key.o", + "crypto/sm2/libcrypto-lib-sm2_sign.o", + "crypto/sm3/libcrypto-lib-legacy_sm3.o", + "crypto/sm3/libcrypto-lib-sm3-riscv64-zvksh.o", + "crypto/sm3/libcrypto-lib-sm3.o", + "crypto/sm3/libcrypto-lib-sm3_riscv.o", + "crypto/sm4/libcrypto-lib-sm4-riscv64-zvksed.o", + "crypto/sm4/libcrypto-lib-sm4.o", + "crypto/srp/libcrypto-lib-srp_lib.o", + "crypto/srp/libcrypto-lib-srp_vfy.o", + "crypto/stack/libcrypto-lib-stack.o", + "crypto/store/libcrypto-lib-store_err.o", + "crypto/store/libcrypto-lib-store_init.o", + "crypto/store/libcrypto-lib-store_lib.o", + "crypto/store/libcrypto-lib-store_meth.o", + "crypto/store/libcrypto-lib-store_register.o", + "crypto/store/libcrypto-lib-store_result.o", + "crypto/store/libcrypto-lib-store_strings.o", + "crypto/thread/arch/libcrypto-lib-thread_none.o", + "crypto/thread/arch/libcrypto-lib-thread_posix.o", + "crypto/thread/arch/libcrypto-lib-thread_win.o", + "crypto/thread/libcrypto-lib-api.o", + "crypto/thread/libcrypto-lib-arch.o", + "crypto/thread/libcrypto-lib-internal.o", + "crypto/ts/libcrypto-lib-ts_asn1.o", + "crypto/ts/libcrypto-lib-ts_conf.o", + "crypto/ts/libcrypto-lib-ts_err.o", + "crypto/ts/libcrypto-lib-ts_lib.o", + "crypto/ts/libcrypto-lib-ts_req_print.o", + "crypto/ts/libcrypto-lib-ts_req_utils.o", + "crypto/ts/libcrypto-lib-ts_rsp_print.o", + "crypto/ts/libcrypto-lib-ts_rsp_sign.o", + "crypto/ts/libcrypto-lib-ts_rsp_utils.o", + "crypto/ts/libcrypto-lib-ts_rsp_verify.o", + "crypto/ts/libcrypto-lib-ts_verify_ctx.o", + "crypto/txt_db/libcrypto-lib-txt_db.o", + "crypto/ui/libcrypto-lib-ui_err.o", + "crypto/ui/libcrypto-lib-ui_lib.o", + "crypto/ui/libcrypto-lib-ui_null.o", + "crypto/ui/libcrypto-lib-ui_openssl.o", + "crypto/ui/libcrypto-lib-ui_util.o", + "crypto/whrlpool/libcrypto-lib-wp_block.o", + "crypto/whrlpool/libcrypto-lib-wp_dgst.o", + "crypto/x509/libcrypto-lib-by_dir.o", + "crypto/x509/libcrypto-lib-by_file.o", + "crypto/x509/libcrypto-lib-by_store.o", + "crypto/x509/libcrypto-lib-pcy_cache.o", + "crypto/x509/libcrypto-lib-pcy_data.o", + "crypto/x509/libcrypto-lib-pcy_lib.o", + "crypto/x509/libcrypto-lib-pcy_map.o", + "crypto/x509/libcrypto-lib-pcy_node.o", + "crypto/x509/libcrypto-lib-pcy_tree.o", + "crypto/x509/libcrypto-lib-t_acert.o", + "crypto/x509/libcrypto-lib-t_crl.o", + "crypto/x509/libcrypto-lib-t_req.o", + "crypto/x509/libcrypto-lib-t_x509.o", + "crypto/x509/libcrypto-lib-v3_aaa.o", + "crypto/x509/libcrypto-lib-v3_ac_tgt.o", + "crypto/x509/libcrypto-lib-v3_addr.o", + "crypto/x509/libcrypto-lib-v3_admis.o", + "crypto/x509/libcrypto-lib-v3_akeya.o", + "crypto/x509/libcrypto-lib-v3_akid.o", + "crypto/x509/libcrypto-lib-v3_asid.o", + "crypto/x509/libcrypto-lib-v3_attrdesc.o", + "crypto/x509/libcrypto-lib-v3_attrmap.o", + "crypto/x509/libcrypto-lib-v3_audit_id.o", + "crypto/x509/libcrypto-lib-v3_authattid.o", + "crypto/x509/libcrypto-lib-v3_battcons.o", + "crypto/x509/libcrypto-lib-v3_bcons.o", + "crypto/x509/libcrypto-lib-v3_bitst.o", + "crypto/x509/libcrypto-lib-v3_conf.o", + "crypto/x509/libcrypto-lib-v3_cpols.o", + "crypto/x509/libcrypto-lib-v3_crld.o", + "crypto/x509/libcrypto-lib-v3_enum.o", + "crypto/x509/libcrypto-lib-v3_extku.o", + "crypto/x509/libcrypto-lib-v3_genn.o", + "crypto/x509/libcrypto-lib-v3_group_ac.o", + "crypto/x509/libcrypto-lib-v3_ia5.o", + "crypto/x509/libcrypto-lib-v3_ind_iss.o", + "crypto/x509/libcrypto-lib-v3_info.o", + "crypto/x509/libcrypto-lib-v3_int.o", + "crypto/x509/libcrypto-lib-v3_iobo.o", + "crypto/x509/libcrypto-lib-v3_ist.o", + "crypto/x509/libcrypto-lib-v3_lib.o", + "crypto/x509/libcrypto-lib-v3_ncons.o", + "crypto/x509/libcrypto-lib-v3_no_ass.o", + "crypto/x509/libcrypto-lib-v3_no_rev_avail.o", + "crypto/x509/libcrypto-lib-v3_pci.o", + "crypto/x509/libcrypto-lib-v3_pcia.o", + "crypto/x509/libcrypto-lib-v3_pcons.o", + "crypto/x509/libcrypto-lib-v3_pku.o", + "crypto/x509/libcrypto-lib-v3_pmaps.o", + "crypto/x509/libcrypto-lib-v3_prn.o", + "crypto/x509/libcrypto-lib-v3_purp.o", + "crypto/x509/libcrypto-lib-v3_rolespec.o", + "crypto/x509/libcrypto-lib-v3_san.o", + "crypto/x509/libcrypto-lib-v3_sda.o", + "crypto/x509/libcrypto-lib-v3_single_use.o", + "crypto/x509/libcrypto-lib-v3_skid.o", + "crypto/x509/libcrypto-lib-v3_soa_id.o", + "crypto/x509/libcrypto-lib-v3_sxnet.o", + "crypto/x509/libcrypto-lib-v3_timespec.o", + "crypto/x509/libcrypto-lib-v3_tlsf.o", + "crypto/x509/libcrypto-lib-v3_usernotice.o", + "crypto/x509/libcrypto-lib-v3_utf8.o", + "crypto/x509/libcrypto-lib-v3_utl.o", + "crypto/x509/libcrypto-lib-v3err.o", + "crypto/x509/libcrypto-lib-x509_acert.o", + "crypto/x509/libcrypto-lib-x509_att.o", + "crypto/x509/libcrypto-lib-x509_cmp.o", + "crypto/x509/libcrypto-lib-x509_d2.o", + "crypto/x509/libcrypto-lib-x509_def.o", + "crypto/x509/libcrypto-lib-x509_err.o", + "crypto/x509/libcrypto-lib-x509_ext.o", + "crypto/x509/libcrypto-lib-x509_lu.o", + "crypto/x509/libcrypto-lib-x509_meth.o", + "crypto/x509/libcrypto-lib-x509_obj.o", + "crypto/x509/libcrypto-lib-x509_r2x.o", + "crypto/x509/libcrypto-lib-x509_req.o", + "crypto/x509/libcrypto-lib-x509_set.o", + "crypto/x509/libcrypto-lib-x509_trust.o", + "crypto/x509/libcrypto-lib-x509_txt.o", + "crypto/x509/libcrypto-lib-x509_v3.o", + "crypto/x509/libcrypto-lib-x509_vfy.o", + "crypto/x509/libcrypto-lib-x509_vpm.o", + "crypto/x509/libcrypto-lib-x509aset.o", + "crypto/x509/libcrypto-lib-x509cset.o", + "crypto/x509/libcrypto-lib-x509name.o", + "crypto/x509/libcrypto-lib-x509rset.o", + "crypto/x509/libcrypto-lib-x509spki.o", + "crypto/x509/libcrypto-lib-x509type.o", + "crypto/x509/libcrypto-lib-x_all.o", + "crypto/x509/libcrypto-lib-x_attrib.o", + "crypto/x509/libcrypto-lib-x_crl.o", + "crypto/x509/libcrypto-lib-x_exten.o", + "crypto/x509/libcrypto-lib-x_ietfatt.o", + "crypto/x509/libcrypto-lib-x_name.o", + "crypto/x509/libcrypto-lib-x_pubkey.o", + "crypto/x509/libcrypto-lib-x_req.o", + "crypto/x509/libcrypto-lib-x_x509.o", + "crypto/x509/libcrypto-lib-x_x509a.o", + "engines/libcrypto-lib-e_capi.o", + "engines/libcrypto-lib-e_padlock.o", + "providers/libcrypto-lib-baseprov.o", + "providers/libcrypto-lib-defltprov.o", + "providers/libcrypto-lib-nullprov.o", + "providers/libcrypto-lib-prov_running.o", + "providers/libdefault.a" + ], + "libssl" => [ + "ssl/libssl-lib-bio_ssl.o", + "ssl/libssl-lib-d1_lib.o", + "ssl/libssl-lib-d1_msg.o", + "ssl/libssl-lib-d1_srtp.o", + "ssl/libssl-lib-methods.o", + "ssl/libssl-lib-pqueue.o", + "ssl/libssl-lib-priority_queue.o", + "ssl/libssl-lib-s3_enc.o", + "ssl/libssl-lib-s3_lib.o", + "ssl/libssl-lib-s3_msg.o", + "ssl/libssl-lib-ssl_asn1.o", + "ssl/libssl-lib-ssl_cert.o", + "ssl/libssl-lib-ssl_cert_comp.o", + "ssl/libssl-lib-ssl_ciph.o", + "ssl/libssl-lib-ssl_conf.o", + "ssl/libssl-lib-ssl_err_legacy.o", + "ssl/libssl-lib-ssl_init.o", + "ssl/libssl-lib-ssl_lib.o", + "ssl/libssl-lib-ssl_mcnf.o", + "ssl/libssl-lib-ssl_rsa.o", + "ssl/libssl-lib-ssl_rsa_legacy.o", + "ssl/libssl-lib-ssl_sess.o", + "ssl/libssl-lib-ssl_stat.o", + "ssl/libssl-lib-ssl_txt.o", + "ssl/libssl-lib-ssl_utst.o", + "ssl/libssl-lib-t1_enc.o", + "ssl/libssl-lib-t1_lib.o", + "ssl/libssl-lib-t1_trce.o", + "ssl/libssl-lib-tls13_enc.o", + "ssl/libssl-lib-tls_depr.o", + "ssl/libssl-lib-tls_srp.o", + "ssl/quic/libssl-lib-cc_newreno.o", + "ssl/quic/libssl-lib-json_enc.o", + "ssl/quic/libssl-lib-qlog.o", + "ssl/quic/libssl-lib-qlog_event_helpers.o", + "ssl/quic/libssl-lib-quic_ackm.o", + "ssl/quic/libssl-lib-quic_cfq.o", + "ssl/quic/libssl-lib-quic_channel.o", + "ssl/quic/libssl-lib-quic_demux.o", + "ssl/quic/libssl-lib-quic_engine.o", + "ssl/quic/libssl-lib-quic_fc.o", + "ssl/quic/libssl-lib-quic_fifd.o", + "ssl/quic/libssl-lib-quic_impl.o", + "ssl/quic/libssl-lib-quic_lcidm.o", + "ssl/quic/libssl-lib-quic_method.o", + "ssl/quic/libssl-lib-quic_obj.o", + "ssl/quic/libssl-lib-quic_port.o", + "ssl/quic/libssl-lib-quic_rcidm.o", + "ssl/quic/libssl-lib-quic_reactor.o", + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o", + "ssl/quic/libssl-lib-quic_record_rx.o", + "ssl/quic/libssl-lib-quic_record_shared.o", + "ssl/quic/libssl-lib-quic_record_tx.o", + "ssl/quic/libssl-lib-quic_record_util.o", + "ssl/quic/libssl-lib-quic_rstream.o", + "ssl/quic/libssl-lib-quic_rx_depack.o", + "ssl/quic/libssl-lib-quic_sf_list.o", + "ssl/quic/libssl-lib-quic_srt_gen.o", + "ssl/quic/libssl-lib-quic_srtm.o", + "ssl/quic/libssl-lib-quic_sstream.o", + "ssl/quic/libssl-lib-quic_statm.o", + "ssl/quic/libssl-lib-quic_stream_map.o", + "ssl/quic/libssl-lib-quic_thread_assist.o", + "ssl/quic/libssl-lib-quic_tls.o", + "ssl/quic/libssl-lib-quic_tls_api.o", + "ssl/quic/libssl-lib-quic_trace.o", + "ssl/quic/libssl-lib-quic_tserver.o", + "ssl/quic/libssl-lib-quic_txp.o", + "ssl/quic/libssl-lib-quic_txpim.o", + "ssl/quic/libssl-lib-quic_types.o", + "ssl/quic/libssl-lib-quic_wire.o", + "ssl/quic/libssl-lib-quic_wire_pkt.o", + "ssl/quic/libssl-lib-uint_set.o", + "ssl/record/libssl-lib-rec_layer_d1.o", + "ssl/record/libssl-lib-rec_layer_s3.o", + "ssl/record/methods/libssl-lib-dtls_meth.o", + "ssl/record/methods/libssl-lib-ssl3_meth.o", + "ssl/record/methods/libssl-lib-tls13_meth.o", + "ssl/record/methods/libssl-lib-tls1_meth.o", + "ssl/record/methods/libssl-lib-tls_common.o", + "ssl/record/methods/libssl-lib-tls_multib.o", + "ssl/record/methods/libssl-lib-tlsany_meth.o", + "ssl/rio/libssl-lib-poll_builder.o", + "ssl/rio/libssl-lib-poll_immediate.o", + "ssl/rio/libssl-lib-rio_notifier.o", + "ssl/statem/libssl-lib-extensions.o", + "ssl/statem/libssl-lib-extensions_clnt.o", + "ssl/statem/libssl-lib-extensions_cust.o", + "ssl/statem/libssl-lib-extensions_srvr.o", + "ssl/statem/libssl-lib-statem.o", + "ssl/statem/libssl-lib-statem_clnt.o", + "ssl/statem/libssl-lib-statem_dtls.o", + "ssl/statem/libssl-lib-statem_lib.o", + "ssl/statem/libssl-lib-statem_srvr.o" + ], + "providers/common/der/libcommon-lib-der_digests_gen.o" => [ + "providers/common/der/der_digests_gen.c" + ], + "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ + "providers/common/der/der_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_dsa_key.o" => [ + "providers/common/der/der_dsa_key.c" + ], + "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ + "providers/common/der/der_dsa_sig.c" + ], + "providers/common/der/libcommon-lib-der_ec_gen.o" => [ + "providers/common/der/der_ec_gen.c" + ], + "providers/common/der/libcommon-lib-der_ec_key.o" => [ + "providers/common/der/der_ec_key.c" + ], + "providers/common/der/libcommon-lib-der_ec_sig.o" => [ + "providers/common/der/der_ec_sig.c" + ], + "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ + "providers/common/der/der_ecx_gen.c" + ], + "providers/common/der/libcommon-lib-der_ecx_key.o" => [ + "providers/common/der/der_ecx_key.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o" => [ + "providers/common/der/der_ml_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_ml_dsa_key.o" => [ + "providers/common/der/der_ml_dsa_key.c" + ], + "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ + "providers/common/der/der_rsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_rsa_key.o" => [ + "providers/common/der/der_rsa_key.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o" => [ + "providers/common/der/der_slh_dsa_gen.c" + ], + "providers/common/der/libcommon-lib-der_slh_dsa_key.o" => [ + "providers/common/der/der_slh_dsa_key.c" + ], + "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ + "providers/common/der/der_wrap_gen.c" + ], + "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ + "providers/common/der/der_rsa_sig.c" + ], + "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ + "providers/common/der/der_sm2_gen.c" + ], + "providers/common/der/libdefault-lib-der_sm2_key.o" => [ + "providers/common/der/der_sm2_key.c" + ], + "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ + "providers/common/der/der_sm2_sig.c" + ], + "providers/common/der/libfips-lib-der_rsa_sig.o" => [ + "providers/common/der/der_rsa_sig.c" + ], + "providers/common/libcommon-lib-provider_ctx.o" => [ + "providers/common/provider_ctx.c" + ], + "providers/common/libcommon-lib-provider_err.o" => [ + "providers/common/provider_err.c" + ], + "providers/common/libdefault-lib-bio_prov.o" => [ + "providers/common/bio_prov.c" + ], + "providers/common/libdefault-lib-capabilities.o" => [ + "providers/common/capabilities.c" + ], + "providers/common/libdefault-lib-digest_to_nid.o" => [ + "providers/common/digest_to_nid.c" + ], + "providers/common/libdefault-lib-provider_seeding.o" => [ + "providers/common/provider_seeding.c" + ], + "providers/common/libdefault-lib-provider_util.o" => [ + "providers/common/provider_util.c" + ], + "providers/common/libdefault-lib-securitycheck.o" => [ + "providers/common/securitycheck.c" + ], + "providers/common/libdefault-lib-securitycheck_default.o" => [ + "providers/common/securitycheck_default.c" + ], + "providers/common/libfips-lib-bio_prov.o" => [ + "providers/common/bio_prov.c" + ], + "providers/common/libfips-lib-capabilities.o" => [ + "providers/common/capabilities.c" + ], + "providers/common/libfips-lib-digest_to_nid.o" => [ + "providers/common/digest_to_nid.c" + ], + "providers/common/libfips-lib-provider_seeding.o" => [ + "providers/common/provider_seeding.c" + ], + "providers/common/libfips-lib-provider_util.o" => [ + "providers/common/provider_util.c" + ], + "providers/common/libfips-lib-securitycheck.o" => [ + "providers/common/securitycheck.c" + ], + "providers/common/libfips-lib-securitycheck_fips.o" => [ + "providers/common/securitycheck_fips.c" + ], + "providers/fips" => [ + "providers/fips.ld", + "providers/fips/fips-dso-fips_entry.o" + ], + "providers/fips/fips-dso-fips_entry.o" => [ + "providers/fips/fips_entry.c" + ], + "providers/fips/libfips-lib-fipsindicator.o" => [ + "providers/fips/fipsindicator.c" + ], + "providers/fips/libfips-lib-fipsprov.o" => [ + "providers/fips/fipsprov.c" + ], + "providers/fips/libfips-lib-self_test.o" => [ + "providers/fips/self_test.c" + ], + "providers/fips/libfips-lib-self_test_kats.o" => [ + "providers/fips/self_test_kats.c" + ], + "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o" => [ + "providers/implementations/asymciphers/rsa_enc.c" + ], + "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o" => [ + "providers/implementations/asymciphers/sm2_enc.c" + ], + "providers/implementations/asymciphers/libfips-lib-rsa_enc.o" => [ + "providers/implementations/asymciphers/rsa_enc.c" + ], + "providers/implementations/ciphers/libcommon-lib-ciphercommon.o" => [ + "providers/implementations/ciphers/ciphercommon.c" + ], + "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o" => [ + "providers/implementations/ciphers/ciphercommon_block.c" + ], + "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o" => [ + "providers/implementations/ciphers/ciphercommon_ccm.c" + ], + "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o" => [ + "providers/implementations/ciphers/ciphercommon_ccm_hw.c" + ], + "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o" => [ + "providers/implementations/ciphers/ciphercommon_gcm.c" + ], + "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o" => [ + "providers/implementations/ciphers/ciphercommon_gcm_hw.c" + ], + "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o" => [ + "providers/implementations/ciphers/ciphercommon_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes.o" => [ + "providers/implementations/ciphers/cipher_aes.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o" => [ + "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o" => [ + "providers/implementations/ciphers/cipher_aes_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o" => [ + "providers/implementations/ciphers/cipher_aes_ocb.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_ocb_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o" => [ + "providers/implementations/ciphers/cipher_aes_siv.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_siv_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o" => [ + "providers/implementations/ciphers/cipher_aes_wrp.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o" => [ + "providers/implementations/ciphers/cipher_aes_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o" => [ + "providers/implementations/ciphers/cipher_aes_xts_fips.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_xts_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aria.o" => [ + "providers/implementations/ciphers/cipher_aria.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o" => [ + "providers/implementations/ciphers/cipher_aria_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_aria_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o" => [ + "providers/implementations/ciphers/cipher_aria_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_aria_gcm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o" => [ + "providers/implementations/ciphers/cipher_aria_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o" => [ + "providers/implementations/ciphers/cipher_camellia.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o" => [ + "providers/implementations/ciphers/cipher_camellia_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o" => [ + "providers/implementations/ciphers/cipher_chacha20.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o" => [ + "providers/implementations/ciphers/cipher_chacha20_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o" => [ + "providers/implementations/ciphers/cipher_chacha20_poly1305.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o" => [ + "providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_cts.o" => [ + "providers/implementations/ciphers/cipher_cts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_null.o" => [ + "providers/implementations/ciphers/cipher_null.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ + "providers/implementations/ciphers/cipher_sm4.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_ccm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_gcm_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_sm4_xts_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ + "providers/implementations/ciphers/cipher_tdes.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o" => [ + "providers/implementations/ciphers/cipher_tdes_common.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o" => [ + "providers/implementations/ciphers/cipher_tdes_default.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o" => [ + "providers/implementations/ciphers/cipher_tdes_default_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o" => [ + "providers/implementations/ciphers/cipher_tdes_hw.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o" => [ + "providers/implementations/ciphers/cipher_tdes_wrap.c" + ], + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o" => [ + "providers/implementations/ciphers/cipher_tdes_wrap_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes.o" => [ + "providers/implementations/ciphers/cipher_aes.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o" => [ + "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o" => [ + "providers/implementations/ciphers/cipher_aes_ccm.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_ccm_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_gcm_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o" => [ + "providers/implementations/ciphers/cipher_aes_ocb.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_ocb_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o" => [ + "providers/implementations/ciphers/cipher_aes_wrp.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o" => [ + "providers/implementations/ciphers/cipher_aes_xts.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o" => [ + "providers/implementations/ciphers/cipher_aes_xts_fips.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o" => [ + "providers/implementations/ciphers/cipher_aes_xts_hw.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_cts.o" => [ + "providers/implementations/ciphers/cipher_cts.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_tdes.o" => [ + "providers/implementations/ciphers/cipher_tdes.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o" => [ + "providers/implementations/ciphers/cipher_tdes_common.c" + ], + "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o" => [ + "providers/implementations/ciphers/cipher_tdes_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o" => [ + "providers/implementations/ciphers/cipher_blowfish.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o" => [ + "providers/implementations/ciphers/cipher_blowfish_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o" => [ + "providers/implementations/ciphers/cipher_cast5.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o" => [ + "providers/implementations/ciphers/cipher_cast5_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_des.o" => [ + "providers/implementations/ciphers/cipher_des.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o" => [ + "providers/implementations/ciphers/cipher_des_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o" => [ + "providers/implementations/ciphers/cipher_desx.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o" => [ + "providers/implementations/ciphers/cipher_desx_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o" => [ + "providers/implementations/ciphers/cipher_idea.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o" => [ + "providers/implementations/ciphers/cipher_idea_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o" => [ + "providers/implementations/ciphers/cipher_rc2.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o" => [ + "providers/implementations/ciphers/cipher_rc2_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o" => [ + "providers/implementations/ciphers/cipher_rc4.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o" => [ + "providers/implementations/ciphers/cipher_rc4_hmac_md5.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o" => [ + "providers/implementations/ciphers/cipher_rc4_hmac_md5_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o" => [ + "providers/implementations/ciphers/cipher_rc4_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o" => [ + "providers/implementations/ciphers/cipher_seed.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o" => [ + "providers/implementations/ciphers/cipher_seed_hw.c" + ], + "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o" => [ + "providers/implementations/ciphers/cipher_tdes_common.c" + ], + "providers/implementations/digests/libcommon-lib-digestcommon.o" => [ + "providers/implementations/digests/digestcommon.c" + ], + "providers/implementations/digests/libdefault-lib-blake2_prov.o" => [ + "providers/implementations/digests/blake2_prov.c" + ], + "providers/implementations/digests/libdefault-lib-blake2b_prov.o" => [ + "providers/implementations/digests/blake2b_prov.c" + ], + "providers/implementations/digests/libdefault-lib-blake2s_prov.o" => [ + "providers/implementations/digests/blake2s_prov.c" + ], + "providers/implementations/digests/libdefault-lib-md5_prov.o" => [ + "providers/implementations/digests/md5_prov.c" + ], + "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o" => [ + "providers/implementations/digests/md5_sha1_prov.c" + ], + "providers/implementations/digests/libdefault-lib-null_prov.o" => [ + "providers/implementations/digests/null_prov.c" + ], + "providers/implementations/digests/libdefault-lib-ripemd_prov.o" => [ + "providers/implementations/digests/ripemd_prov.c" + ], + "providers/implementations/digests/libdefault-lib-sha2_prov.o" => [ + "providers/implementations/digests/sha2_prov.c" + ], + "providers/implementations/digests/libdefault-lib-sha3_prov.o" => [ + "providers/implementations/digests/sha3_prov.c" + ], + "providers/implementations/digests/libdefault-lib-sm3_prov.o" => [ + "providers/implementations/digests/sm3_prov.c" + ], + "providers/implementations/digests/libfips-lib-sha2_prov.o" => [ + "providers/implementations/digests/sha2_prov.c" + ], + "providers/implementations/digests/libfips-lib-sha3_prov.o" => [ + "providers/implementations/digests/sha3_prov.c" + ], + "providers/implementations/digests/liblegacy-lib-md4_prov.o" => [ + "providers/implementations/digests/md4_prov.c" + ], + "providers/implementations/digests/liblegacy-lib-mdc2_prov.o" => [ + "providers/implementations/digests/mdc2_prov.c" + ], + "providers/implementations/digests/liblegacy-lib-ripemd_prov.o" => [ + "providers/implementations/digests/ripemd_prov.c" + ], + "providers/implementations/digests/liblegacy-lib-wp_prov.o" => [ + "providers/implementations/digests/wp_prov.c" + ], + "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o" => [ + "providers/implementations/encode_decode/decode_der2key.c" + ], + "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o" => [ + "providers/implementations/encode_decode/decode_epki2pki.c" + ], + "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o" => [ + "providers/implementations/encode_decode/decode_msblob2key.c" + ], + "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o" => [ + "providers/implementations/encode_decode/decode_pem2der.c" + ], + "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o" => [ + "providers/implementations/encode_decode/decode_pvk2key.c" + ], + "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o" => [ + "providers/implementations/encode_decode/decode_spki2typespki.c" + ], + "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ + "providers/implementations/encode_decode/encode_key2any.c" + ], + "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o" => [ + "providers/implementations/encode_decode/encode_key2blob.c" + ], + "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o" => [ + "providers/implementations/encode_decode/encode_key2ms.c" + ], + "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o" => [ + "providers/implementations/encode_decode/encode_key2text.c" + ], + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ + "providers/implementations/encode_decode/endecoder_common.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o" => [ + "providers/implementations/encode_decode/ml_common_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o" => [ + "providers/implementations/encode_decode/ml_dsa_codecs.c" + ], + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o" => [ + "providers/implementations/encode_decode/ml_kem_codecs.c" + ], + "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ + "providers/implementations/exchange/dh_exch.c" + ], + "providers/implementations/exchange/libdefault-lib-ecdh_exch.o" => [ + "providers/implementations/exchange/ecdh_exch.c" + ], + "providers/implementations/exchange/libdefault-lib-ecx_exch.o" => [ + "providers/implementations/exchange/ecx_exch.c" + ], + "providers/implementations/exchange/libdefault-lib-kdf_exch.o" => [ + "providers/implementations/exchange/kdf_exch.c" + ], + "providers/implementations/exchange/libfips-lib-dh_exch.o" => [ + "providers/implementations/exchange/dh_exch.c" + ], + "providers/implementations/exchange/libfips-lib-ecdh_exch.o" => [ + "providers/implementations/exchange/ecdh_exch.c" + ], + "providers/implementations/exchange/libfips-lib-ecx_exch.o" => [ + "providers/implementations/exchange/ecx_exch.c" + ], + "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ + "providers/implementations/exchange/kdf_exch.c" + ], + "providers/implementations/kdfs/libdefault-lib-argon2.o" => [ + "providers/implementations/kdfs/argon2.c" + ], + "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ + "providers/implementations/kdfs/hkdf.c" + ], + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o" => [ + "providers/implementations/kdfs/hmacdrbg_kdf.c" + ], + "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ + "providers/implementations/kdfs/kbkdf.c" + ], + "providers/implementations/kdfs/libdefault-lib-krb5kdf.o" => [ + "providers/implementations/kdfs/krb5kdf.c" + ], + "providers/implementations/kdfs/libdefault-lib-pbkdf2.o" => [ + "providers/implementations/kdfs/pbkdf2.c" + ], + "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o" => [ + "providers/implementations/kdfs/pbkdf2_fips.c" + ], + "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o" => [ + "providers/implementations/kdfs/pkcs12kdf.c" + ], + "providers/implementations/kdfs/libdefault-lib-scrypt.o" => [ + "providers/implementations/kdfs/scrypt.c" + ], + "providers/implementations/kdfs/libdefault-lib-sshkdf.o" => [ + "providers/implementations/kdfs/sshkdf.c" + ], + "providers/implementations/kdfs/libdefault-lib-sskdf.o" => [ + "providers/implementations/kdfs/sskdf.c" + ], + "providers/implementations/kdfs/libdefault-lib-tls1_prf.o" => [ + "providers/implementations/kdfs/tls1_prf.c" + ], + "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ + "providers/implementations/kdfs/x942kdf.c" + ], + "providers/implementations/kdfs/libfips-lib-hkdf.o" => [ + "providers/implementations/kdfs/hkdf.c" + ], + "providers/implementations/kdfs/libfips-lib-kbkdf.o" => [ + "providers/implementations/kdfs/kbkdf.c" + ], + "providers/implementations/kdfs/libfips-lib-pbkdf2.o" => [ + "providers/implementations/kdfs/pbkdf2.c" + ], + "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o" => [ + "providers/implementations/kdfs/pbkdf2_fips.c" + ], + "providers/implementations/kdfs/libfips-lib-sshkdf.o" => [ + "providers/implementations/kdfs/sshkdf.c" + ], + "providers/implementations/kdfs/libfips-lib-sskdf.o" => [ + "providers/implementations/kdfs/sskdf.c" + ], + "providers/implementations/kdfs/libfips-lib-tls1_prf.o" => [ + "providers/implementations/kdfs/tls1_prf.c" + ], + "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ + "providers/implementations/kdfs/x942kdf.c" + ], + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ + "providers/implementations/kdfs/pbkdf1.c" + ], + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o" => [ + "providers/implementations/kdfs/pvkkdf.c" + ], + "providers/implementations/kem/libdefault-lib-ec_kem.o" => [ + "providers/implementations/kem/ec_kem.c" + ], + "providers/implementations/kem/libdefault-lib-ecx_kem.o" => [ + "providers/implementations/kem/ecx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-kem_util.o" => [ + "providers/implementations/kem/kem_util.c" + ], + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libdefault-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], + "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ + "providers/implementations/kem/rsa_kem.c" + ], + "providers/implementations/kem/libfips-lib-ml_kem_kem.o" => [ + "providers/implementations/kem/ml_kem_kem.c" + ], + "providers/implementations/kem/libfips-lib-mlx_kem.o" => [ + "providers/implementations/kem/mlx_kem.c" + ], + "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ + "providers/implementations/kem/rsa_kem.c" + ], + "providers/implementations/kem/libtemplate-lib-template_kem.o" => [ + "providers/implementations/kem/template_kem.c" + ], + "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ + "providers/implementations/keymgmt/dh_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o" => [ + "providers/implementations/keymgmt/ec_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o" => [ + "providers/implementations/keymgmt/ecx_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o" => [ + "providers/implementations/keymgmt/kdf_legacy_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ + "providers/implementations/keymgmt/mac_legacy_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ + "providers/implementations/keymgmt/rsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ + "providers/implementations/keymgmt/dh_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o" => [ + "providers/implementations/keymgmt/ec_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o" => [ + "providers/implementations/keymgmt/ecx_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o" => [ + "providers/implementations/keymgmt/kdf_legacy_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ + "providers/implementations/keymgmt/mac_legacy_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o" => [ + "providers/implementations/keymgmt/ml_kem_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o" => [ + "providers/implementations/keymgmt/mlx_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ + "providers/implementations/keymgmt/rsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o" => [ + "providers/implementations/keymgmt/slh_dsa_kmgmt.c" + ], + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" => [ + "providers/implementations/keymgmt/template_kmgmt.c" + ], + "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ + "providers/implementations/macs/blake2b_mac.c" + ], + "providers/implementations/macs/libdefault-lib-blake2s_mac.o" => [ + "providers/implementations/macs/blake2s_mac.c" + ], + "providers/implementations/macs/libdefault-lib-cmac_prov.o" => [ + "providers/implementations/macs/cmac_prov.c" + ], + "providers/implementations/macs/libdefault-lib-gmac_prov.o" => [ + "providers/implementations/macs/gmac_prov.c" + ], + "providers/implementations/macs/libdefault-lib-hmac_prov.o" => [ + "providers/implementations/macs/hmac_prov.c" + ], + "providers/implementations/macs/libdefault-lib-kmac_prov.o" => [ + "providers/implementations/macs/kmac_prov.c" + ], + "providers/implementations/macs/libdefault-lib-poly1305_prov.o" => [ + "providers/implementations/macs/poly1305_prov.c" + ], + "providers/implementations/macs/libdefault-lib-siphash_prov.o" => [ + "providers/implementations/macs/siphash_prov.c" + ], + "providers/implementations/macs/libfips-lib-cmac_prov.o" => [ + "providers/implementations/macs/cmac_prov.c" + ], + "providers/implementations/macs/libfips-lib-gmac_prov.o" => [ + "providers/implementations/macs/gmac_prov.c" + ], + "providers/implementations/macs/libfips-lib-hmac_prov.o" => [ + "providers/implementations/macs/hmac_prov.c" + ], + "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ + "providers/implementations/macs/kmac_prov.c" + ], + "providers/implementations/rands/libdefault-lib-drbg.o" => [ + "providers/implementations/rands/drbg.c" + ], + "providers/implementations/rands/libdefault-lib-drbg_ctr.o" => [ + "providers/implementations/rands/drbg_ctr.c" + ], + "providers/implementations/rands/libdefault-lib-drbg_hash.o" => [ + "providers/implementations/rands/drbg_hash.c" + ], + "providers/implementations/rands/libdefault-lib-drbg_hmac.o" => [ + "providers/implementations/rands/drbg_hmac.c" + ], + "providers/implementations/rands/libdefault-lib-seed_src.o" => [ + "providers/implementations/rands/seed_src.c" + ], + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o" => [ + "providers/implementations/rands/seed_src_jitter.c" + ], + "providers/implementations/rands/libdefault-lib-test_rng.o" => [ + "providers/implementations/rands/test_rng.c" + ], + "providers/implementations/rands/libfips-lib-drbg.o" => [ + "providers/implementations/rands/drbg.c" + ], + "providers/implementations/rands/libfips-lib-drbg_ctr.o" => [ + "providers/implementations/rands/drbg_ctr.c" + ], + "providers/implementations/rands/libfips-lib-drbg_hash.o" => [ + "providers/implementations/rands/drbg_hash.c" + ], + "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ + "providers/implementations/rands/drbg_hmac.c" + ], + "providers/implementations/rands/libfips-lib-fips_crng_test.o" => [ + "providers/implementations/rands/fips_crng_test.c" + ], + "providers/implementations/rands/libfips-lib-test_rng.o" => [ + "providers/implementations/rands/test_rng.c" + ], + "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o" => [ + "providers/implementations/rands/seeding/rand_cpu_x86.c" + ], + "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o" => [ + "providers/implementations/rands/seeding/rand_tsc.c" + ], + "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o" => [ + "providers/implementations/rands/seeding/rand_unix.c" + ], + "providers/implementations/rands/seeding/libdefault-lib-rand_win.o" => [ + "providers/implementations/rands/seeding/rand_win.c" + ], + "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ + "providers/implementations/signature/dsa_sig.c" + ], + "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ + "providers/implementations/signature/ecdsa_sig.c" + ], + "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ + "providers/implementations/signature/eddsa_sig.c" + ], + "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ + "providers/implementations/signature/mac_legacy_sig.c" + ], + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], + "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ + "providers/implementations/signature/rsa_sig.c" + ], + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ + "providers/implementations/signature/sm2_sig.c" + ], + "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ + "providers/implementations/signature/dsa_sig.c" + ], + "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ + "providers/implementations/signature/ecdsa_sig.c" + ], + "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ + "providers/implementations/signature/eddsa_sig.c" + ], + "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ + "providers/implementations/signature/mac_legacy_sig.c" + ], + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o" => [ + "providers/implementations/signature/ml_dsa_sig.c" + ], + "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ + "providers/implementations/signature/rsa_sig.c" + ], + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o" => [ + "providers/implementations/signature/slh_dsa_sig.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libdefault-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o" => [ + "providers/implementations/skeymgmt/aes_skmgmt.c" + ], + "providers/implementations/skeymgmt/libfips-lib-generic.o" => [ + "providers/implementations/skeymgmt/generic.c" + ], + "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ + "providers/implementations/storemgmt/file_store.c" + ], + "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" => [ + "providers/implementations/storemgmt/file_store_any2obj.c" + ], + "providers/legacy" => [ + "providers/legacy-dso-legacyprov.o", + "providers/legacy.ld" + ], + "providers/legacy-dso-legacyprov.o" => [ + "providers/legacyprov.c" + ], + "providers/libcommon.a" => [ + "providers/common/der/libcommon-lib-der_digests_gen.o", + "providers/common/der/libcommon-lib-der_dsa_gen.o", + "providers/common/der/libcommon-lib-der_dsa_key.o", + "providers/common/der/libcommon-lib-der_dsa_sig.o", + "providers/common/der/libcommon-lib-der_ec_gen.o", + "providers/common/der/libcommon-lib-der_ec_key.o", + "providers/common/der/libcommon-lib-der_ec_sig.o", + "providers/common/der/libcommon-lib-der_ecx_gen.o", + "providers/common/der/libcommon-lib-der_ecx_key.o", + "providers/common/der/libcommon-lib-der_ml_dsa_gen.o", + "providers/common/der/libcommon-lib-der_ml_dsa_key.o", + "providers/common/der/libcommon-lib-der_rsa_gen.o", + "providers/common/der/libcommon-lib-der_rsa_key.o", + "providers/common/der/libcommon-lib-der_slh_dsa_gen.o", + "providers/common/der/libcommon-lib-der_slh_dsa_key.o", + "providers/common/der/libcommon-lib-der_wrap_gen.o", + "providers/common/libcommon-lib-provider_ctx.o", + "providers/common/libcommon-lib-provider_err.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", + "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", + "providers/implementations/digests/libcommon-lib-digestcommon.o", + "ssl/record/methods/libcommon-lib-tls_pad.o" + ], + "providers/libcrypto-lib-baseprov.o" => [ + "providers/baseprov.c" + ], + "providers/libcrypto-lib-defltprov.o" => [ + "providers/defltprov.c" + ], + "providers/libcrypto-lib-nullprov.o" => [ + "providers/nullprov.c" + ], + "providers/libcrypto-lib-prov_running.o" => [ + "providers/prov_running.c" + ], + "providers/libdefault.a" => [ + "providers/common/der/libdefault-lib-der_rsa_sig.o", + "providers/common/der/libdefault-lib-der_sm2_gen.o", + "providers/common/der/libdefault-lib-der_sm2_key.o", + "providers/common/der/libdefault-lib-der_sm2_sig.o", + "providers/common/libdefault-lib-bio_prov.o", + "providers/common/libdefault-lib-capabilities.o", + "providers/common/libdefault-lib-digest_to_nid.o", + "providers/common/libdefault-lib-provider_seeding.o", + "providers/common/libdefault-lib-provider_util.o", + "providers/common/libdefault-lib-securitycheck.o", + "providers/common/libdefault-lib-securitycheck_default.o", + "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o", + "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_siv_polyval.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o", + "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o", + "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_null.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_ccm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_gcm_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts.o", + "providers/implementations/ciphers/libdefault-lib-cipher_sm4_xts_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o", + "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o", + "providers/implementations/digests/libdefault-lib-blake2_prov.o", + "providers/implementations/digests/libdefault-lib-blake2b_prov.o", + "providers/implementations/digests/libdefault-lib-blake2s_prov.o", + "providers/implementations/digests/libdefault-lib-md5_prov.o", + "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o", + "providers/implementations/digests/libdefault-lib-null_prov.o", + "providers/implementations/digests/libdefault-lib-ripemd_prov.o", + "providers/implementations/digests/libdefault-lib-sha2_prov.o", + "providers/implementations/digests/libdefault-lib-sha3_prov.o", + "providers/implementations/digests/libdefault-lib-sm3_prov.o", + "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o", + "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o", + "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o", + "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o", + "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o", + "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", + "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", + "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", + "providers/implementations/encode_decode/libdefault-lib-ml_common_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_dsa_codecs.o", + "providers/implementations/encode_decode/libdefault-lib-ml_kem_codecs.o", + "providers/implementations/exchange/libdefault-lib-dh_exch.o", + "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", + "providers/implementations/exchange/libdefault-lib-ecx_exch.o", + "providers/implementations/exchange/libdefault-lib-kdf_exch.o", + "providers/implementations/kdfs/libdefault-lib-argon2.o", + "providers/implementations/kdfs/libdefault-lib-hkdf.o", + "providers/implementations/kdfs/libdefault-lib-hmacdrbg_kdf.o", + "providers/implementations/kdfs/libdefault-lib-kbkdf.o", + "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", + "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", + "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o", + "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o", + "providers/implementations/kdfs/libdefault-lib-scrypt.o", + "providers/implementations/kdfs/libdefault-lib-sshkdf.o", + "providers/implementations/kdfs/libdefault-lib-sskdf.o", + "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", + "providers/implementations/kdfs/libdefault-lib-x942kdf.o", + "providers/implementations/kem/libdefault-lib-ec_kem.o", + "providers/implementations/kem/libdefault-lib-ecx_kem.o", + "providers/implementations/kem/libdefault-lib-kem_util.o", + "providers/implementations/kem/libdefault-lib-ml_kem_kem.o", + "providers/implementations/kem/libdefault-lib-mlx_kem.o", + "providers/implementations/kem/libdefault-lib-rsa_kem.o", + "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libdefault-lib-slh_dsa_kmgmt.o", + "providers/implementations/macs/libdefault-lib-blake2b_mac.o", + "providers/implementations/macs/libdefault-lib-blake2s_mac.o", + "providers/implementations/macs/libdefault-lib-cmac_prov.o", + "providers/implementations/macs/libdefault-lib-gmac_prov.o", + "providers/implementations/macs/libdefault-lib-hmac_prov.o", + "providers/implementations/macs/libdefault-lib-kmac_prov.o", + "providers/implementations/macs/libdefault-lib-poly1305_prov.o", + "providers/implementations/macs/libdefault-lib-siphash_prov.o", + "providers/implementations/rands/libdefault-lib-drbg.o", + "providers/implementations/rands/libdefault-lib-drbg_ctr.o", + "providers/implementations/rands/libdefault-lib-drbg_hash.o", + "providers/implementations/rands/libdefault-lib-drbg_hmac.o", + "providers/implementations/rands/libdefault-lib-seed_src.o", + "providers/implementations/rands/libdefault-lib-seed_src_jitter.o", + "providers/implementations/rands/libdefault-lib-test_rng.o", + "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", + "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", + "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o", + "providers/implementations/rands/seeding/libdefault-lib-rand_win.o", + "providers/implementations/signature/libdefault-lib-dsa_sig.o", + "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", + "providers/implementations/signature/libdefault-lib-eddsa_sig.o", + "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", + "providers/implementations/signature/libdefault-lib-ml_dsa_sig.o", + "providers/implementations/signature/libdefault-lib-rsa_sig.o", + "providers/implementations/signature/libdefault-lib-slh_dsa_sig.o", + "providers/implementations/signature/libdefault-lib-sm2_sig.o", + "providers/implementations/skeymgmt/libdefault-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libdefault-lib-generic.o", + "providers/implementations/storemgmt/libdefault-lib-file_store.o", + "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" + ], + "providers/libfips.a" => [ + "crypto/aes/libfips-lib-aes-riscv64-zkn.o", + "crypto/aes/libfips-lib-aes-riscv64-zvbb-zvkg-zvkned.o", + "crypto/aes/libfips-lib-aes-riscv64-zvkb-zvkned.o", + "crypto/aes/libfips-lib-aes-riscv64-zvkned.o", + "crypto/aes/libfips-lib-aes-riscv64.o", + "crypto/aes/libfips-lib-aes_cbc.o", + "crypto/aes/libfips-lib-aes_ecb.o", + "crypto/aes/libfips-lib-aes_misc.o", + "crypto/bn/libfips-lib-bn_add.o", + "crypto/bn/libfips-lib-bn_asm.o", + "crypto/bn/libfips-lib-bn_blind.o", + "crypto/bn/libfips-lib-bn_const.o", + "crypto/bn/libfips-lib-bn_conv.o", + "crypto/bn/libfips-lib-bn_ctx.o", + "crypto/bn/libfips-lib-bn_dh.o", + "crypto/bn/libfips-lib-bn_div.o", + "crypto/bn/libfips-lib-bn_exp.o", + "crypto/bn/libfips-lib-bn_exp2.o", + "crypto/bn/libfips-lib-bn_gcd.o", + "crypto/bn/libfips-lib-bn_gf2m.o", + "crypto/bn/libfips-lib-bn_intern.o", + "crypto/bn/libfips-lib-bn_kron.o", + "crypto/bn/libfips-lib-bn_lib.o", + "crypto/bn/libfips-lib-bn_mod.o", + "crypto/bn/libfips-lib-bn_mont.o", + "crypto/bn/libfips-lib-bn_mpi.o", + "crypto/bn/libfips-lib-bn_mul.o", + "crypto/bn/libfips-lib-bn_nist.o", + "crypto/bn/libfips-lib-bn_prime.o", + "crypto/bn/libfips-lib-bn_rand.o", + "crypto/bn/libfips-lib-bn_recp.o", + "crypto/bn/libfips-lib-bn_rsa_fips186_4.o", + "crypto/bn/libfips-lib-bn_shift.o", + "crypto/bn/libfips-lib-bn_sqr.o", + "crypto/bn/libfips-lib-bn_sqrt.o", + "crypto/bn/libfips-lib-bn_word.o", + "crypto/buffer/libfips-lib-buffer.o", + "crypto/cmac/libfips-lib-cmac.o", + "crypto/des/libfips-lib-des_enc.o", + "crypto/des/libfips-lib-ecb3_enc.o", + "crypto/des/libfips-lib-fcrypt_b.o", + "crypto/des/libfips-lib-set_key.o", + "crypto/dh/libfips-lib-dh_backend.o", + "crypto/dh/libfips-lib-dh_check.o", + "crypto/dh/libfips-lib-dh_gen.o", + "crypto/dh/libfips-lib-dh_group_params.o", + "crypto/dh/libfips-lib-dh_kdf.o", + "crypto/dh/libfips-lib-dh_key.o", + "crypto/dh/libfips-lib-dh_lib.o", + "crypto/dsa/libfips-lib-dsa_backend.o", + "crypto/dsa/libfips-lib-dsa_check.o", + "crypto/dsa/libfips-lib-dsa_gen.o", + "crypto/dsa/libfips-lib-dsa_key.o", + "crypto/dsa/libfips-lib-dsa_lib.o", + "crypto/dsa/libfips-lib-dsa_ossl.o", + "crypto/dsa/libfips-lib-dsa_sign.o", + "crypto/dsa/libfips-lib-dsa_vrf.o", + "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o", + "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o", + "crypto/ec/curve448/libfips-lib-curve448.o", + "crypto/ec/curve448/libfips-lib-curve448_tables.o", + "crypto/ec/curve448/libfips-lib-eddsa.o", + "crypto/ec/curve448/libfips-lib-f_generic.o", + "crypto/ec/curve448/libfips-lib-scalar.o", + "crypto/ec/libfips-lib-curve25519.o", + "crypto/ec/libfips-lib-ec2_oct.o", + "crypto/ec/libfips-lib-ec2_smpl.o", + "crypto/ec/libfips-lib-ec_asn1.o", + "crypto/ec/libfips-lib-ec_backend.o", + "crypto/ec/libfips-lib-ec_check.o", + "crypto/ec/libfips-lib-ec_curve.o", + "crypto/ec/libfips-lib-ec_cvt.o", + "crypto/ec/libfips-lib-ec_key.o", + "crypto/ec/libfips-lib-ec_kmeth.o", + "crypto/ec/libfips-lib-ec_lib.o", + "crypto/ec/libfips-lib-ec_mult.o", + "crypto/ec/libfips-lib-ec_oct.o", + "crypto/ec/libfips-lib-ecdh_kdf.o", + "crypto/ec/libfips-lib-ecdh_ossl.o", + "crypto/ec/libfips-lib-ecdsa_ossl.o", + "crypto/ec/libfips-lib-ecdsa_sign.o", + "crypto/ec/libfips-lib-ecdsa_vrf.o", + "crypto/ec/libfips-lib-ecp_mont.o", + "crypto/ec/libfips-lib-ecp_nist.o", + "crypto/ec/libfips-lib-ecp_oct.o", + "crypto/ec/libfips-lib-ecp_smpl.o", + "crypto/ec/libfips-lib-ecx_backend.o", + "crypto/ec/libfips-lib-ecx_key.o", + "crypto/evp/libfips-lib-asymcipher.o", + "crypto/evp/libfips-lib-dh_support.o", + "crypto/evp/libfips-lib-digest.o", + "crypto/evp/libfips-lib-ec_support.o", + "crypto/evp/libfips-lib-evp_enc.o", + "crypto/evp/libfips-lib-evp_fetch.o", + "crypto/evp/libfips-lib-evp_lib.o", + "crypto/evp/libfips-lib-evp_rand.o", + "crypto/evp/libfips-lib-evp_utils.o", + "crypto/evp/libfips-lib-exchange.o", + "crypto/evp/libfips-lib-kdf_lib.o", + "crypto/evp/libfips-lib-kdf_meth.o", + "crypto/evp/libfips-lib-kem.o", + "crypto/evp/libfips-lib-keymgmt_lib.o", + "crypto/evp/libfips-lib-keymgmt_meth.o", + "crypto/evp/libfips-lib-mac_lib.o", + "crypto/evp/libfips-lib-mac_meth.o", + "crypto/evp/libfips-lib-p_lib.o", + "crypto/evp/libfips-lib-pmeth_check.o", + "crypto/evp/libfips-lib-pmeth_gn.o", + "crypto/evp/libfips-lib-pmeth_lib.o", + "crypto/evp/libfips-lib-s_lib.o", + "crypto/evp/libfips-lib-signature.o", + "crypto/evp/libfips-lib-skeymgmt_meth.o", + "crypto/ffc/libfips-lib-ffc_backend.o", + "crypto/ffc/libfips-lib-ffc_dh.o", + "crypto/ffc/libfips-lib-ffc_key_generate.o", + "crypto/ffc/libfips-lib-ffc_key_validate.o", + "crypto/ffc/libfips-lib-ffc_params.o", + "crypto/ffc/libfips-lib-ffc_params_generate.o", + "crypto/ffc/libfips-lib-ffc_params_validate.o", + "crypto/hashtable/libfips-lib-hashfunc.o", + "crypto/hashtable/libfips-lib-hashtable.o", + "crypto/hmac/libfips-lib-hmac.o", + "crypto/lhash/libfips-lib-lhash.o", + "crypto/libfips-lib-asn1_dsa.o", + "crypto/libfips-lib-bsearch.o", + "crypto/libfips-lib-context.o", + "crypto/libfips-lib-core_algorithm.o", + "crypto/libfips-lib-core_fetch.o", + "crypto/libfips-lib-core_namemap.o", + "crypto/libfips-lib-cpuid.o", + "crypto/libfips-lib-cryptlib.o", + "crypto/libfips-lib-ctype.o", + "crypto/libfips-lib-der_writer.o", + "crypto/libfips-lib-ex_data.o", + "crypto/libfips-lib-initthread.o", + "crypto/libfips-lib-o_str.o", + "crypto/libfips-lib-packet.o", + "crypto/libfips-lib-param_build.o", + "crypto/libfips-lib-param_build_set.o", + "crypto/libfips-lib-params.o", + "crypto/libfips-lib-params_dup.o", + "crypto/libfips-lib-params_from_text.o", + "crypto/libfips-lib-params_idx.o", + "crypto/libfips-lib-provider_core.o", + "crypto/libfips-lib-provider_predefined.o", + "crypto/libfips-lib-riscv64cpuid.o", + "crypto/libfips-lib-riscvcap.o", + "crypto/libfips-lib-self_test_core.o", + "crypto/libfips-lib-sparse_array.o", + "crypto/libfips-lib-threads_lib.o", + "crypto/libfips-lib-threads_none.o", + "crypto/libfips-lib-threads_pthread.o", + "crypto/libfips-lib-threads_win.o", + "crypto/libfips-lib-time.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_encoders.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_key_compress.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_matrix.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_ntt.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_params.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sample.o", + "crypto/ml_dsa/libfips-lib-ml_dsa_sign.o", + "crypto/ml_kem/libfips-lib-ml_kem.o", + "crypto/modes/libfips-lib-aes-gcm-riscv64-zvkb-zvkg-zvkned.o", + "crypto/modes/libfips-lib-cbc128.o", + "crypto/modes/libfips-lib-ccm128.o", + "crypto/modes/libfips-lib-cfb128.o", + "crypto/modes/libfips-lib-ctr128.o", + "crypto/modes/libfips-lib-gcm128.o", + "crypto/modes/libfips-lib-ghash-riscv64-zvkb-zvbc.o", + "crypto/modes/libfips-lib-ghash-riscv64-zvkg.o", + "crypto/modes/libfips-lib-ghash-riscv64.o", + "crypto/modes/libfips-lib-ofb128.o", + "crypto/modes/libfips-lib-wrap128.o", + "crypto/modes/libfips-lib-xts128.o", + "crypto/modes/libfips-lib-xts128gb.o", + "crypto/property/libfips-lib-defn_cache.o", + "crypto/property/libfips-lib-property.o", + "crypto/property/libfips-lib-property_parse.o", + "crypto/property/libfips-lib-property_query.o", + "crypto/property/libfips-lib-property_string.o", + "crypto/rand/libfips-lib-rand_lib.o", + "crypto/rsa/libfips-lib-rsa_acvp_test_params.o", + "crypto/rsa/libfips-lib-rsa_backend.o", + "crypto/rsa/libfips-lib-rsa_chk.o", + "crypto/rsa/libfips-lib-rsa_crpt.o", + "crypto/rsa/libfips-lib-rsa_gen.o", + "crypto/rsa/libfips-lib-rsa_lib.o", + "crypto/rsa/libfips-lib-rsa_mp_names.o", + "crypto/rsa/libfips-lib-rsa_none.o", + "crypto/rsa/libfips-lib-rsa_oaep.o", + "crypto/rsa/libfips-lib-rsa_ossl.o", + "crypto/rsa/libfips-lib-rsa_pk1.o", + "crypto/rsa/libfips-lib-rsa_pss.o", + "crypto/rsa/libfips-lib-rsa_schemes.o", + "crypto/rsa/libfips-lib-rsa_sign.o", + "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o", + "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o", + "crypto/rsa/libfips-lib-rsa_x931.o", + "crypto/sha/libfips-lib-keccak1600.o", + "crypto/sha/libfips-lib-sha1dgst.o", + "crypto/sha/libfips-lib-sha256-riscv64-zvkb-zvknha_or_zvknhb.o", + "crypto/sha/libfips-lib-sha256.o", + "crypto/sha/libfips-lib-sha3.o", + "crypto/sha/libfips-lib-sha512-riscv64-zvkb-zvknhb.o", + "crypto/sha/libfips-lib-sha512.o", + "crypto/sha/libfips-lib-sha_riscv.o", + "crypto/slh_dsa/libfips-lib-slh_adrs.o", + "crypto/slh_dsa/libfips-lib-slh_dsa.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_hash_ctx.o", + "crypto/slh_dsa/libfips-lib-slh_dsa_key.o", + "crypto/slh_dsa/libfips-lib-slh_fors.o", + "crypto/slh_dsa/libfips-lib-slh_hash.o", + "crypto/slh_dsa/libfips-lib-slh_hypertree.o", + "crypto/slh_dsa/libfips-lib-slh_params.o", + "crypto/slh_dsa/libfips-lib-slh_wots.o", + "crypto/slh_dsa/libfips-lib-slh_xmss.o", + "crypto/stack/libfips-lib-stack.o", + "crypto/thread/arch/libfips-lib-thread_none.o", + "crypto/thread/arch/libfips-lib-thread_posix.o", + "crypto/thread/arch/libfips-lib-thread_win.o", + "crypto/thread/libfips-lib-api.o", + "crypto/thread/libfips-lib-arch.o", + "crypto/thread/libfips-lib-internal.o", + "providers/common/der/libfips-lib-der_rsa_sig.o", + "providers/common/libfips-lib-bio_prov.o", + "providers/common/libfips-lib-capabilities.o", + "providers/common/libfips-lib-digest_to_nid.o", + "providers/common/libfips-lib-provider_seeding.o", + "providers/common/libfips-lib-provider_util.o", + "providers/common/libfips-lib-securitycheck.o", + "providers/common/libfips-lib-securitycheck_fips.o", + "providers/fips/libfips-lib-fipsindicator.o", + "providers/fips/libfips-lib-fipsprov.o", + "providers/fips/libfips-lib-self_test.o", + "providers/fips/libfips-lib-self_test_kats.o", + "providers/implementations/asymciphers/libfips-lib-rsa_enc.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o", + "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o", + "providers/implementations/ciphers/libfips-lib-cipher_cts.o", + "providers/implementations/ciphers/libfips-lib-cipher_tdes.o", + "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o", + "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o", + "providers/implementations/digests/libfips-lib-sha2_prov.o", + "providers/implementations/digests/libfips-lib-sha3_prov.o", + "providers/implementations/exchange/libfips-lib-dh_exch.o", + "providers/implementations/exchange/libfips-lib-ecdh_exch.o", + "providers/implementations/exchange/libfips-lib-ecx_exch.o", + "providers/implementations/exchange/libfips-lib-kdf_exch.o", + "providers/implementations/kdfs/libfips-lib-hkdf.o", + "providers/implementations/kdfs/libfips-lib-kbkdf.o", + "providers/implementations/kdfs/libfips-lib-pbkdf2.o", + "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o", + "providers/implementations/kdfs/libfips-lib-sshkdf.o", + "providers/implementations/kdfs/libfips-lib-sskdf.o", + "providers/implementations/kdfs/libfips-lib-tls1_prf.o", + "providers/implementations/kdfs/libfips-lib-x942kdf.o", + "providers/implementations/kem/libfips-lib-ml_kem_kem.o", + "providers/implementations/kem/libfips-lib-mlx_kem.o", + "providers/implementations/kem/libfips-lib-rsa_kem.o", + "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_dsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-ml_kem_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-mlx_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", + "providers/implementations/keymgmt/libfips-lib-slh_dsa_kmgmt.o", + "providers/implementations/macs/libfips-lib-cmac_prov.o", + "providers/implementations/macs/libfips-lib-gmac_prov.o", + "providers/implementations/macs/libfips-lib-hmac_prov.o", + "providers/implementations/macs/libfips-lib-kmac_prov.o", + "providers/implementations/rands/libfips-lib-drbg.o", + "providers/implementations/rands/libfips-lib-drbg_ctr.o", + "providers/implementations/rands/libfips-lib-drbg_hash.o", + "providers/implementations/rands/libfips-lib-drbg_hmac.o", + "providers/implementations/rands/libfips-lib-fips_crng_test.o", + "providers/implementations/rands/libfips-lib-test_rng.o", + "providers/implementations/signature/libfips-lib-dsa_sig.o", + "providers/implementations/signature/libfips-lib-ecdsa_sig.o", + "providers/implementations/signature/libfips-lib-eddsa_sig.o", + "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", + "providers/implementations/signature/libfips-lib-ml_dsa_sig.o", + "providers/implementations/signature/libfips-lib-rsa_sig.o", + "providers/implementations/signature/libfips-lib-slh_dsa_sig.o", + "providers/implementations/skeymgmt/libfips-lib-aes_skmgmt.o", + "providers/implementations/skeymgmt/libfips-lib-generic.o", + "providers/libcommon.a", + "ssl/record/methods/libfips-lib-ssl3_cbc.o" + ], + "providers/liblegacy-lib-prov_running.o" => [ + "providers/prov_running.c" + ], + "providers/liblegacy.a" => [ + "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_des.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o", + "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o", + "providers/implementations/digests/liblegacy-lib-md4_prov.o", + "providers/implementations/digests/liblegacy-lib-mdc2_prov.o", + "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", + "providers/implementations/digests/liblegacy-lib-wp_prov.o", + "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", + "providers/implementations/kdfs/liblegacy-lib-pvkkdf.o", + "providers/liblegacy-lib-prov_running.o" + ], + "providers/libtemplate.a" => [ + "providers/implementations/kem/libtemplate-lib-template_kem.o", + "providers/implementations/keymgmt/libtemplate-lib-template_kmgmt.o" + ], + "ssl/libssl-lib-bio_ssl.o" => [ + "ssl/bio_ssl.c" + ], + "ssl/libssl-lib-d1_lib.o" => [ + "ssl/d1_lib.c" + ], + "ssl/libssl-lib-d1_msg.o" => [ + "ssl/d1_msg.c" + ], + "ssl/libssl-lib-d1_srtp.o" => [ + "ssl/d1_srtp.c" + ], + "ssl/libssl-lib-methods.o" => [ + "ssl/methods.c" + ], + "ssl/libssl-lib-pqueue.o" => [ + "ssl/pqueue.c" + ], + "ssl/libssl-lib-priority_queue.o" => [ + "ssl/priority_queue.c" + ], + "ssl/libssl-lib-s3_enc.o" => [ + "ssl/s3_enc.c" + ], + "ssl/libssl-lib-s3_lib.o" => [ + "ssl/s3_lib.c" + ], + "ssl/libssl-lib-s3_msg.o" => [ + "ssl/s3_msg.c" + ], + "ssl/libssl-lib-ssl_asn1.o" => [ + "ssl/ssl_asn1.c" + ], + "ssl/libssl-lib-ssl_cert.o" => [ + "ssl/ssl_cert.c" + ], + "ssl/libssl-lib-ssl_cert_comp.o" => [ + "ssl/ssl_cert_comp.c" + ], + "ssl/libssl-lib-ssl_ciph.o" => [ + "ssl/ssl_ciph.c" + ], + "ssl/libssl-lib-ssl_conf.o" => [ + "ssl/ssl_conf.c" + ], + "ssl/libssl-lib-ssl_err_legacy.o" => [ + "ssl/ssl_err_legacy.c" + ], + "ssl/libssl-lib-ssl_init.o" => [ + "ssl/ssl_init.c" + ], + "ssl/libssl-lib-ssl_lib.o" => [ + "ssl/ssl_lib.c" + ], + "ssl/libssl-lib-ssl_mcnf.o" => [ + "ssl/ssl_mcnf.c" + ], + "ssl/libssl-lib-ssl_rsa.o" => [ + "ssl/ssl_rsa.c" + ], + "ssl/libssl-lib-ssl_rsa_legacy.o" => [ + "ssl/ssl_rsa_legacy.c" + ], + "ssl/libssl-lib-ssl_sess.o" => [ + "ssl/ssl_sess.c" + ], + "ssl/libssl-lib-ssl_stat.o" => [ + "ssl/ssl_stat.c" + ], + "ssl/libssl-lib-ssl_txt.o" => [ + "ssl/ssl_txt.c" + ], + "ssl/libssl-lib-ssl_utst.o" => [ + "ssl/ssl_utst.c" + ], + "ssl/libssl-lib-t1_enc.o" => [ + "ssl/t1_enc.c" + ], + "ssl/libssl-lib-t1_lib.o" => [ + "ssl/t1_lib.c" + ], + "ssl/libssl-lib-t1_trce.o" => [ + "ssl/t1_trce.c" + ], + "ssl/libssl-lib-tls13_enc.o" => [ + "ssl/tls13_enc.c" + ], + "ssl/libssl-lib-tls_depr.o" => [ + "ssl/tls_depr.c" + ], + "ssl/libssl-lib-tls_srp.o" => [ + "ssl/tls_srp.c" + ], + "ssl/quic/libssl-lib-cc_newreno.o" => [ + "ssl/quic/cc_newreno.c" + ], + "ssl/quic/libssl-lib-json_enc.o" => [ + "ssl/quic/json_enc.c" + ], + "ssl/quic/libssl-lib-qlog.o" => [ + "ssl/quic/qlog.c" + ], + "ssl/quic/libssl-lib-qlog_event_helpers.o" => [ + "ssl/quic/qlog_event_helpers.c" + ], + "ssl/quic/libssl-lib-quic_ackm.o" => [ + "ssl/quic/quic_ackm.c" + ], + "ssl/quic/libssl-lib-quic_cfq.o" => [ + "ssl/quic/quic_cfq.c" + ], + "ssl/quic/libssl-lib-quic_channel.o" => [ + "ssl/quic/quic_channel.c" + ], + "ssl/quic/libssl-lib-quic_demux.o" => [ + "ssl/quic/quic_demux.c" + ], + "ssl/quic/libssl-lib-quic_engine.o" => [ + "ssl/quic/quic_engine.c" + ], + "ssl/quic/libssl-lib-quic_fc.o" => [ + "ssl/quic/quic_fc.c" + ], + "ssl/quic/libssl-lib-quic_fifd.o" => [ + "ssl/quic/quic_fifd.c" + ], + "ssl/quic/libssl-lib-quic_impl.o" => [ + "ssl/quic/quic_impl.c" + ], + "ssl/quic/libssl-lib-quic_lcidm.o" => [ + "ssl/quic/quic_lcidm.c" + ], + "ssl/quic/libssl-lib-quic_method.o" => [ + "ssl/quic/quic_method.c" + ], + "ssl/quic/libssl-lib-quic_obj.o" => [ + "ssl/quic/quic_obj.c" + ], + "ssl/quic/libssl-lib-quic_port.o" => [ + "ssl/quic/quic_port.c" + ], + "ssl/quic/libssl-lib-quic_rcidm.o" => [ + "ssl/quic/quic_rcidm.c" + ], + "ssl/quic/libssl-lib-quic_reactor.o" => [ + "ssl/quic/quic_reactor.c" + ], + "ssl/quic/libssl-lib-quic_reactor_wait_ctx.o" => [ + "ssl/quic/quic_reactor_wait_ctx.c" + ], + "ssl/quic/libssl-lib-quic_record_rx.o" => [ + "ssl/quic/quic_record_rx.c" + ], + "ssl/quic/libssl-lib-quic_record_shared.o" => [ + "ssl/quic/quic_record_shared.c" + ], + "ssl/quic/libssl-lib-quic_record_tx.o" => [ + "ssl/quic/quic_record_tx.c" + ], + "ssl/quic/libssl-lib-quic_record_util.o" => [ + "ssl/quic/quic_record_util.c" + ], + "ssl/quic/libssl-lib-quic_rstream.o" => [ + "ssl/quic/quic_rstream.c" + ], + "ssl/quic/libssl-lib-quic_rx_depack.o" => [ + "ssl/quic/quic_rx_depack.c" + ], + "ssl/quic/libssl-lib-quic_sf_list.o" => [ + "ssl/quic/quic_sf_list.c" + ], + "ssl/quic/libssl-lib-quic_srt_gen.o" => [ + "ssl/quic/quic_srt_gen.c" + ], + "ssl/quic/libssl-lib-quic_srtm.o" => [ + "ssl/quic/quic_srtm.c" + ], + "ssl/quic/libssl-lib-quic_sstream.o" => [ + "ssl/quic/quic_sstream.c" + ], + "ssl/quic/libssl-lib-quic_statm.o" => [ + "ssl/quic/quic_statm.c" + ], + "ssl/quic/libssl-lib-quic_stream_map.o" => [ + "ssl/quic/quic_stream_map.c" + ], + "ssl/quic/libssl-lib-quic_thread_assist.o" => [ + "ssl/quic/quic_thread_assist.c" + ], + "ssl/quic/libssl-lib-quic_tls.o" => [ + "ssl/quic/quic_tls.c" + ], + "ssl/quic/libssl-lib-quic_tls_api.o" => [ + "ssl/quic/quic_tls_api.c" + ], + "ssl/quic/libssl-lib-quic_trace.o" => [ + "ssl/quic/quic_trace.c" + ], + "ssl/quic/libssl-lib-quic_tserver.o" => [ + "ssl/quic/quic_tserver.c" + ], + "ssl/quic/libssl-lib-quic_txp.o" => [ + "ssl/quic/quic_txp.c" + ], + "ssl/quic/libssl-lib-quic_txpim.o" => [ + "ssl/quic/quic_txpim.c" + ], + "ssl/quic/libssl-lib-quic_types.o" => [ + "ssl/quic/quic_types.c" + ], + "ssl/quic/libssl-lib-quic_wire.o" => [ + "ssl/quic/quic_wire.c" + ], + "ssl/quic/libssl-lib-quic_wire_pkt.o" => [ + "ssl/quic/quic_wire_pkt.c" + ], + "ssl/quic/libssl-lib-uint_set.o" => [ + "ssl/quic/uint_set.c" + ], + "ssl/record/libssl-lib-rec_layer_d1.o" => [ + "ssl/record/rec_layer_d1.c" + ], + "ssl/record/libssl-lib-rec_layer_s3.o" => [ + "ssl/record/rec_layer_s3.c" + ], + "ssl/record/methods/libcommon-lib-tls_pad.o" => [ + "ssl/record/methods/tls_pad.c" + ], + "ssl/record/methods/libdefault-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libfips-lib-ssl3_cbc.o" => [ + "ssl/record/methods/ssl3_cbc.c" + ], + "ssl/record/methods/libssl-lib-dtls_meth.o" => [ + "ssl/record/methods/dtls_meth.c" + ], + "ssl/record/methods/libssl-lib-ssl3_meth.o" => [ + "ssl/record/methods/ssl3_meth.c" + ], + "ssl/record/methods/libssl-lib-tls13_meth.o" => [ + "ssl/record/methods/tls13_meth.c" + ], + "ssl/record/methods/libssl-lib-tls1_meth.o" => [ + "ssl/record/methods/tls1_meth.c" + ], + "ssl/record/methods/libssl-lib-tls_common.o" => [ + "ssl/record/methods/tls_common.c" + ], + "ssl/record/methods/libssl-lib-tls_multib.o" => [ + "ssl/record/methods/tls_multib.c" + ], + "ssl/record/methods/libssl-lib-tlsany_meth.o" => [ + "ssl/record/methods/tlsany_meth.c" + ], + "ssl/rio/libssl-lib-poll_builder.o" => [ + "ssl/rio/poll_builder.c" + ], + "ssl/rio/libssl-lib-poll_immediate.o" => [ + "ssl/rio/poll_immediate.c" + ], + "ssl/rio/libssl-lib-rio_notifier.o" => [ + "ssl/rio/rio_notifier.c" + ], + "ssl/statem/libssl-lib-extensions.o" => [ + "ssl/statem/extensions.c" + ], + "ssl/statem/libssl-lib-extensions_clnt.o" => [ + "ssl/statem/extensions_clnt.c" + ], + "ssl/statem/libssl-lib-extensions_cust.o" => [ + "ssl/statem/extensions_cust.c" + ], + "ssl/statem/libssl-lib-extensions_srvr.o" => [ + "ssl/statem/extensions_srvr.c" + ], + "ssl/statem/libssl-lib-statem.o" => [ + "ssl/statem/statem.c" + ], + "ssl/statem/libssl-lib-statem_clnt.o" => [ + "ssl/statem/statem_clnt.c" + ], + "ssl/statem/libssl-lib-statem_dtls.o" => [ + "ssl/statem/statem_dtls.c" + ], + "ssl/statem/libssl-lib-statem_lib.o" => [ + "ssl/statem/statem_lib.c" + ], + "ssl/statem/libssl-lib-statem_srvr.o" => [ + "ssl/statem/statem_srvr.c" + ], + "tools/c_rehash" => [ + "tools/c_rehash.in" + ], + "util/shlib_wrap.sh" => [ + "util/shlib_wrap.sh.in" + ], + "util/wrap.pl" => [ + "util/wrap.pl.in" + ] + }, + "targets" => [ + "build_modules_nodep" + ] +); + +# Unexported, only used by OpenSSL::Test::Utils::available_protocols() +our %available_protocols = ( + tls => [ + "ssl3", + "tls1", + "tls1_1", + "tls1_2", + "tls1_3" +], + dtls => [ + "dtls1", + "dtls1_2" +], +); + +# The following data is only used when this files is use as a script +my @makevars = ( + "AR", + "ARFLAGS", + "AS", + "ASFLAGS", + "CC", + "CFLAGS", + "CPP", + "CPPDEFINES", + "CPPFLAGS", + "CPPINCLUDES", + "CROSS_COMPILE", + "CXX", + "CXXFLAGS", + "HASHBANGPERL", + "LD", + "LDFLAGS", + "LDLIBS", + "MT", + "MTFLAGS", + "OBJCOPY", + "PERL", + "RANLIB", + "RC", + "RCFLAGS", + "RM" +); +my %disabled_info = ( + "afalgeng" => { + "macro" => "OPENSSL_NO_AFALGENG" + }, + "asan" => { + "macro" => "OPENSSL_NO_ASAN" + }, + "brotli-dynamic" => { + "macro" => "OPENSSL_NO_BROTLI_DYNAMIC" + }, + "crypto-mdebug" => { + "macro" => "OPENSSL_NO_CRYPTO_MDEBUG" + }, + "crypto-mdebug-backtrace" => { + "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" + }, + "demos" => { + "macro" => "OPENSSL_NO_DEMOS" + }, + "devcryptoeng" => { + "macro" => "OPENSSL_NO_DEVCRYPTOENG" + }, + "ec_nistp_64_gcc_128" => { + "macro" => "OPENSSL_NO_EC_NISTP_64_GCC_128" + }, + "egd" => { + "macro" => "OPENSSL_NO_EGD" + }, + "external-tests" => { + "macro" => "OPENSSL_NO_EXTERNAL_TESTS" + }, + "fips-jitter" => { + "macro" => "OPENSSL_NO_FIPS_JITTER" + }, + "fuzz-afl" => { + "macro" => "OPENSSL_NO_FUZZ_AFL" + }, + "fuzz-libfuzzer" => { + "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" + }, + "h3demo" => { + "macro" => "OPENSSL_NO_H3DEMO" + }, + "hqinterop" => { + "macro" => "OPENSSL_NO_HQINTEROP" + }, + "jitter" => { + "macro" => "OPENSSL_NO_JITTER" + }, + "ktls" => { + "macro" => "OPENSSL_NO_KTLS" + }, + "loadereng" => { + "macro" => "OPENSSL_NO_LOADERENG" + }, + "md2" => { + "macro" => "OPENSSL_NO_MD2", + "skipped" => [ + "crypto/md2" + ] + }, + "msan" => { + "macro" => "OPENSSL_NO_MSAN" + }, + "pie" => { + "macro" => "OPENSSL_NO_PIE" + }, + "rc5" => { + "macro" => "OPENSSL_NO_RC5", + "skipped" => [ + "crypto/rc5" + ] + }, + "sctp" => { + "macro" => "OPENSSL_NO_SCTP" + }, + "ssl3" => { + "macro" => "OPENSSL_NO_SSL3" + }, + "ssl3-method" => { + "macro" => "OPENSSL_NO_SSL3_METHOD" + }, + "sslkeylog" => { + "macro" => "OPENSSL_NO_SSLKEYLOG" + }, + "tests" => { + "macro" => "OPENSSL_NO_TESTS" + }, + "tfo" => { + "macro" => "OPENSSL_NO_TFO" + }, + "trace" => { + "macro" => "OPENSSL_NO_TRACE" + }, + "ubsan" => { + "macro" => "OPENSSL_NO_UBSAN" + }, + "unit-test" => { + "macro" => "OPENSSL_NO_UNIT_TEST" + }, + "uplink" => { + "macro" => "OPENSSL_NO_UPLINK" + }, + "weak-ssl-ciphers" => { + "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" + }, + "winstore" => { + "macro" => "OPENSSL_NO_WINSTORE" + }, + "zlib-dynamic" => { + "macro" => "OPENSSL_NO_ZLIB_DYNAMIC" + }, + "zstd-dynamic" => { + "macro" => "OPENSSL_NO_ZSTD_DYNAMIC" + } +); +my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); + +# If run directly, we can give some answers, and even reconfigure +unless (caller) { + use Getopt::Long; + use File::Spec::Functions; + use File::Basename; + use File::Compare qw(compare_text); + use File::Copy; + use Pod::Usage; + + use lib '/node/deps/openssl/openssl/util/perl'; + use OpenSSL::fallback '/node/deps/openssl/openssl/external/perl/MODULES.txt'; + + my $here = dirname($0); + + if (scalar @ARGV == 0) { + # With no arguments, re-create the build file + # We do that in two steps, where the first step emits perl + # snippets. + + my $buildfile = $config{build_file}; + my $buildfile_template = "$buildfile.in"; + my @autowarntext = ( + 'WARNING: do not edit!', + "Generated by configdata.pm from " + .join(", ", @{$config{build_file_templates}}), + "via $buildfile_template" + ); + my %gendata = ( + config => \%config, + target => \%target, + disabled => \%disabled, + withargs => \%withargs, + unified_info => \%unified_info, + autowarntext => \@autowarntext, + ); + + use lib '.'; + use lib '/node/deps/openssl/openssl/Configurations'; + use gentemplate; + + open my $buildfile_template_fh, ">$buildfile_template" + or die "Trying to create $buildfile_template: $!"; + foreach (@{$config{build_file_templates}}) { + copy($_, $buildfile_template_fh) + or die "Trying to copy $_ into $buildfile_template: $!"; + } + gentemplate(output => $buildfile_template_fh, %gendata); + close $buildfile_template_fh; + print 'Created ',$buildfile_template,"\n"; + + use OpenSSL::Template; + + my $prepend = <<'_____'; +use File::Spec::Functions; +use lib '/node/deps/openssl/openssl/util/perl'; +use lib '/node/deps/openssl/openssl/Configurations'; +use lib '.'; +use platform; +_____ + + my $tmpl; + open BUILDFILE, ">$buildfile.new" + or die "Trying to create $buildfile.new: $!"; + $tmpl = OpenSSL::Template->new(TYPE => 'FILE', + SOURCE => $buildfile_template); + $tmpl->fill_in(FILENAME => $_, + OUTPUT => \*BUILDFILE, + HASH => \%gendata, + PREPEND => $prepend, + # To ensure that global variables and functions + # defined in one template stick around for the + # next, making them combinable + PACKAGE => 'OpenSSL::safe') + or die $OpenSSL::Template::ERROR; + close BUILDFILE; + rename("$buildfile.new", $buildfile) + or die "Trying to rename $buildfile.new to $buildfile: $!"; + print 'Created ',$buildfile,"\n"; + + my $configuration_h = + catfile('include', 'openssl', 'configuration.h'); + my $configuration_h_in = + catfile($config{sourcedir}, 'include', 'openssl', 'configuration.h.in'); + open CONFIGURATION_H, ">${configuration_h}.new" + or die "Trying to create ${configuration_h}.new: $!"; + $tmpl = OpenSSL::Template->new(TYPE => 'FILE', + SOURCE => $configuration_h_in); + $tmpl->fill_in(FILENAME => $_, + OUTPUT => \*CONFIGURATION_H, + HASH => \%gendata, + PREPEND => $prepend, + # To ensure that global variables and functions + # defined in one template stick around for the + # next, making them combinable + PACKAGE => 'OpenSSL::safe') + or die $OpenSSL::Template::ERROR; + close CONFIGURATION_H; + + # When using stat() on Windows, we can get it to perform better by + # avoid some data. This doesn't affect the mtime field, so we're not + # losing anything... + ${^WIN32_SLOPPY_STAT} = 1; + + my $update_configuration_h = 0; + if (-f $configuration_h) { + my $configuration_h_mtime = (stat($configuration_h))[9]; + my $configuration_h_in_mtime = (stat($configuration_h_in))[9]; + + # If configuration.h.in was updated after the last configuration.h, + # or if configuration.h.new differs configuration.h, we update + # configuration.h + if ($configuration_h_mtime < $configuration_h_in_mtime + || compare_text("${configuration_h}.new", $configuration_h) != 0) { + $update_configuration_h = 1; + } else { + # If nothing has changed, let's just drop the new one and + # pretend like nothing happened + unlink "${configuration_h}.new" + } + } else { + $update_configuration_h = 1; + } + + if ($update_configuration_h) { + rename("${configuration_h}.new", $configuration_h) + or die "Trying to rename ${configuration_h}.new to $configuration_h: $!"; + print 'Created ',$configuration_h,"\n"; + } + + exit(0); + } + + my $dump = undef; + my $cmdline = undef; + my $options = undef; + my $target = undef; + my $envvars = undef; + my $makevars = undef; + my $buildparams = undef; + my $reconf = undef; + my $verbose = undef; + my $query = undef; + my $help = undef; + my $man = undef; + GetOptions('dump|d' => \$dump, + 'command-line|c' => \$cmdline, + 'options|o' => \$options, + 'target|t' => \$target, + 'environment|e' => \$envvars, + 'make-variables|m' => \$makevars, + 'build-parameters|b' => \$buildparams, + 'reconfigure|reconf|r' => \$reconf, + 'verbose|v' => \$verbose, + 'query|q=s' => \$query, + 'help' => \$help, + 'man' => \$man) + or die "Errors in command line arguments\n"; + + # We allow extra arguments with --query. That allows constructs like + # this: + # ./configdata.pm --query 'get_sources(@ARGV)' file1 file2 file3 + if (!$query && scalar @ARGV > 0) { + print STDERR <<"_____"; +Unrecognised arguments. +For more information, do '$0 --help' +_____ + exit(2); + } + + if ($help) { + pod2usage(-exitval => 0, + -verbose => 1); + } + if ($man) { + pod2usage(-exitval => 0, + -verbose => 2); + } + if ($dump || $cmdline) { + print "\nCommand line (with current working directory = $here):\n\n"; + print ' ',join(' ', + $config{PERL}, + catfile($config{sourcedir}, 'Configure'), + @{$config{perlargv}}), "\n"; + print "\nPerl information:\n\n"; + print ' ',$config{perl_cmd},"\n"; + print ' ',$config{perl_version},' for ',$config{perl_archname},"\n"; + } + if ($dump || $options) { + my $longest = 0; + my $longest2 = 0; + foreach my $what (@disablables) { + $longest = length($what) if $longest < length($what); + $longest2 = length($disabled{$what}) + if $disabled{$what} && $longest2 < length($disabled{$what}); + } + print "\nEnabled features:\n\n"; + foreach my $what (@disablables) { + print " $what\n" unless $disabled{$what}; + } + print "\nDisabled features:\n\n"; + foreach my $what (@disablables) { + if ($disabled{$what}) { + print " $what", ' ' x ($longest - length($what) + 1), + "[$disabled{$what}]", ' ' x ($longest2 - length($disabled{$what}) + 1); + print $disabled_info{$what}->{macro} + if $disabled_info{$what}->{macro}; + print ' (skip ', + join(', ', @{$disabled_info{$what}->{skipped}}), + ')' + if $disabled_info{$what}->{skipped}; + print "\n"; + } + } + } + if ($dump || $target) { + print "\nConfig target attributes:\n\n"; + foreach (sort keys %target) { + next if $_ =~ m|^_| || $_ eq 'template'; + my $quotify = sub { + map { + if (defined $_) { + (my $x = $_) =~ s|([\\\$\@"])|\\$1|g; "\"$x\"" + } else { + "undef"; + } + } @_; + }; + print ' ', $_, ' => '; + if (ref($target{$_}) eq "ARRAY") { + print '[ ', join(', ', $quotify->(@{$target{$_}})), " ],\n"; + } else { + print $quotify->($target{$_}), ",\n" + } + } + } + if ($dump || $envvars) { + print "\nRecorded environment:\n\n"; + foreach (sort keys %{$config{perlenv}}) { + print ' ',$_,' = ',($config{perlenv}->{$_} || ''),"\n"; + } + } + if ($dump || $makevars) { + print "\nMakevars:\n\n"; + foreach my $var (@makevars) { + my $prefix = ''; + $prefix = $config{CROSS_COMPILE} + if grep { $var eq $_ } @user_crossable; + $prefix //= ''; + print ' ',$var,' ' x (16 - length $var),'= ', + (ref $config{$var} eq 'ARRAY' + ? join(' ', @{$config{$var}}) + : $prefix.$config{$var}), + "\n" + if defined $config{$var}; + } + + my @buildfile = ($config{builddir}, $config{build_file}); + unshift @buildfile, $here + unless file_name_is_absolute($config{builddir}); + my $buildfile = canonpath(catdir(@buildfile)); + print <<"_____"; + +NOTE: These variables only represent the configuration view. The build file +template may have processed these variables further, please have a look at the +build file for more exact data: + $buildfile +_____ + } + if ($dump || $buildparams) { + my @buildfile = ($config{builddir}, $config{build_file}); + unshift @buildfile, $here + unless file_name_is_absolute($config{builddir}); + print "\nbuild file:\n\n"; + print " ", canonpath(catfile(@buildfile)),"\n"; + + print "\nbuild file templates:\n\n"; + foreach (@{$config{build_file_templates}}) { + my @tmpl = ($_); + unshift @tmpl, $here + unless file_name_is_absolute($config{sourcedir}); + print ' ',canonpath(catfile(@tmpl)),"\n"; + } + } + if ($reconf) { + if ($verbose) { + print 'Reconfiguring with: ', join(' ',@{$config{perlargv}}), "\n"; + foreach (sort keys %{$config{perlenv}}) { + print ' ',$_,' = ',($config{perlenv}->{$_} || ""),"\n"; + } + } + + chdir $here; + exec $^X,catfile($config{sourcedir}, 'Configure'),'reconf'; + } + if ($query) { + use OpenSSL::Config::Query; + + my $confquery = OpenSSL::Config::Query->new(info => \%unified_info, + config => \%config); + my $result = eval "\$confquery->$query"; + + # We may need a result class with a printing function at some point. + # Until then, we assume that we get a scalar, or a list or a hash table + # with scalar values and simply print them in some orderly fashion. + if (ref $result eq 'ARRAY') { + print "$_\n" foreach @$result; + } elsif (ref $result eq 'HASH') { + print "$_ : \\\n ", join(" \\\n ", @{$result->{$_}}), "\n" + foreach sort keys %$result; + } elsif (ref $result eq 'SCALAR') { + print "$$result\n"; + } + } +} + +1; + +__END__ + +=head1 NAME + +configdata.pm - configuration data for OpenSSL builds + +=head1 SYNOPSIS + +Interactive: + + perl configdata.pm [options] + +As data bank module: + + use configdata; + +=head1 DESCRIPTION + +This module can be used in two modes, interactively and as a module containing +all the data recorded by OpenSSL's Configure script. + +When used interactively, simply run it as any perl script. +If run with no arguments, it will rebuild the build file (Makefile or +corresponding). +With at least one option, it will instead get the information you ask for, or +re-run the configuration process. +See L below for more information. + +When loaded as a module, you get a few databanks with useful information to +perform build related tasks. The databanks are: + + %config Configured things. + %target The OpenSSL config target with all inheritances + resolved. + %disabled The features that are disabled. + @disablables The list of features that can be disabled. + %withargs All data given through --with-THING options. + %unified_info All information that was computed from the build.info + files. + +=head1 OPTIONS + +=over 4 + +=item B<--help> + +Print a brief help message and exit. + +=item B<--man> + +Print the manual page and exit. + +=item B<--dump> | B<-d> + +Print all relevant configuration data. This is equivalent to B<--command-line> +B<--options> B<--target> B<--environment> B<--make-variables> +B<--build-parameters>. + +=item B<--command-line> | B<-c> + +Print the current configuration command line. + +=item B<--options> | B<-o> + +Print the features, both enabled and disabled, and display defined macro and +skipped directories where applicable. + +=item B<--target> | B<-t> + +Print the config attributes for this config target. + +=item B<--environment> | B<-e> + +Print the environment variables and their values at the time of configuration. + +=item B<--make-variables> | B<-m> + +Print the main make variables generated in the current configuration + +=item B<--build-parameters> | B<-b> + +Print the build parameters, i.e. build file and build file templates. + +=item B<--reconfigure> | B<--reconf> | B<-r> + +Re-run the configuration process. + +=item B<--verbose> | B<-v> + +Verbose output. + +=back + +=cut + +EOF diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zkn.s b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zkn.s new file mode 100644 index 00000000000000..ff8a865966bcf2 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zkn.s @@ -0,0 +1,694 @@ +.text +.balign 16 +.globl rv64i_zkne_encrypt +.type rv64i_zkne_encrypt,@function +rv64i_zkne_encrypt: + addi sp,sp,-16 + sd x8,8(sp) + sd x9,0(sp) + + # Load input to block cipher + ld x6,0(x10) + ld x7,8(x10) + + # Load key + ld x13,0(x12) + ld x14,8(x12) + + # Load number of rounds + lwu x30,240(x12) + + # initial transformation + xor x6,x6,x13 + xor x7,x7,x14 + + # The main loop only executes the first N-1 rounds. + add x30,x30,-1 + + # Do Nr - 1 rounds (final round is special) +1: + .word 913507379 + .word 912491699 + + # Update key ptr to point to next key in schedule + add x12,x12,16 + + # Grab next key in schedule + ld x13,0(x12) + ld x14,8(x12) + xor x6,x8,x13 + xor x7,x9,x14 + + add x30,x30,-1 + bgtz x30,1b + + # final round + .word 846398515 + .word 845382835 + + # since not added 16 before + ld x13,16(x12) + ld x14,24(x12) + xor x6,x8,x13 + xor x7,x9,x14 + + sd x6,0(x11) + sd x7,8(x11) + + # Pop registers and return + ld x8,8(sp) + ld x9,0(sp) + addi sp,sp,16 + ret +.text +.balign 16 +.globl rv64i_zknd_decrypt +.type rv64i_zknd_decrypt,@function +rv64i_zknd_decrypt: + addi sp,sp,-16 + sd x8,8(sp) + sd x9,0(sp) + + # Load input to block cipher + ld x6,0(x10) + ld x7,8(x10) + + # Load number of rounds + lwu x30,240(x12) + + # Load the last key + slli x13,x30,4 + add x12,x12,x13 + ld x13,0(x12) + ld x14,8(x12) + + xor x6,x6,x13 + xor x7,x7,x14 + + # The main loop only executes the first N-1 rounds. + add x30,x30,-1 + + # Do Nr - 1 rounds (final round is special) +1: + .word 1047725107 + .word 1046709427 + + # Update key ptr to point to next key in schedule + add x12,x12,-16 + + # Grab next key in schedule + ld x13,0(x12) + ld x14,8(x12) + xor x6,x8,x13 + xor x7,x9,x14 + + add x30,x30,-1 + bgtz x30,1b + + # final round + .word 980616243 + .word 979600563 + + add x12,x12,-16 + ld x13,0(x12) + ld x14,8(x12) + xor x6,x8,x13 + xor x7,x9,x14 + + sd x6,0(x11) + sd x7,8(x11) + # Pop registers and return + ld x8,8(sp) + ld x9,0(sp) + addi sp,sp,16 + ret +.text +.balign 16 +.globl rv64i_zkne_set_encrypt_key +.type rv64i_zkne_set_encrypt_key,@function +rv64i_zkne_set_encrypt_key: + addi sp,sp,-16 + sd x8,0(sp) + # Determine number of rounds from key size in bits + li x6,128 + bne x11,x6,1f + li x7,10 # key->rounds = 10 if bits == 128 + sw x7,240(x12) # store key->rounds + ld x6,0(x10) + ld x7,8(x10) + sd x6,0(x12) + sd x7,8(x12) + .word 822318099 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 823366675 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 824415251 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 825463827 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 826512403 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 827560979 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 828609555 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 829658131 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 830706707 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + .word 831755283 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + + j 4f +1: + li x6,192 + bne x11,x6,2f + li x7,12 # key->rounds = 12 if bits == 192 + sw x7,240(x12) # store key->rounds + ld x6,0(x10) + ld x7,8(x10) + ld x8,16(x10) + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 822351507 + .word 2120647475 + .word 2121466803 + .word 2122548275 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 823400083 + .word 2120647475 + .word 2121466803 + .word 2122548275 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 824448659 + .word 2120647475 + .word 2121466803 + .word 2122548275 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 825497235 + .word 2120647475 + .word 2121466803 + .word 2122548275 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 826545811 + .word 2120647475 + .word 2121466803 + .word 2122548275 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 827594387 + .word 2120647475 + .word 2121466803 + .word 2122548275 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 828642963 + .word 2120647475 + .word 2121466803 + .word 2122548275 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + .word 829691539 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + + j 4f +2: + li x7,14 # key->rounds = 14 if bits == 256 + li x6,256 + beq x11,x6,3f + li a0,-2 # If bits != 128, 192, or 256, return -2 + j 5f +3: + sw x7,240(x12) # store key->rounds + ld x6,0(x10) + ld x7,8(x10) + ld x8,16(x10) + ld x13,24(x10) + sd x6,0(x12) + sd x7,8(x12) + sd x8,16(x12) + sd x13,24(x12) + .word 822515475 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + .word 832804627 + .word 2122777651 + .word 2127824563 + sd x8,16(x12) + sd x13,24(x12) + .word 823564051 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + .word 832804627 + .word 2122777651 + .word 2127824563 + sd x8,16(x12) + sd x13,24(x12) + .word 824612627 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + .word 832804627 + .word 2122777651 + .word 2127824563 + sd x8,16(x12) + sd x13,24(x12) + .word 825661203 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + .word 832804627 + .word 2122777651 + .word 2127824563 + sd x8,16(x12) + sd x13,24(x12) + .word 826709779 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + .word 832804627 + .word 2122777651 + .word 2127824563 + sd x8,16(x12) + sd x13,24(x12) + .word 827758355 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + .word 832804627 + .word 2122777651 + .word 2127824563 + sd x8,16(x12) + sd x13,24(x12) + .word 828806931 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + +4: # return 0 + li a0,0 +5: # return a0 + ld x8,0(sp) + addi sp,sp,16 + ret +.text +.balign 16 +.globl rv64i_zknd_set_decrypt_key +.type rv64i_zknd_set_decrypt_key,@function +rv64i_zknd_set_decrypt_key: + addi sp,sp,-16 + sd x8,0(sp) + # Determine number of rounds from key size in bits + li x6,128 + bne x11,x6,1f + li x7,10 # key->rounds = 10 if bits == 128 + sw x7,240(x12) # store key->rounds + ld x6,0(x10) + ld x7,8(x10) + sd x6,0(x12) + sd x7,8(x12) + .word 822318099 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 823366675 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 824415251 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 825463827 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 826512403 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 827560979 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 828609555 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 829658131 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 830706707 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + .word 805508115 + sd x8,0(x12) + .word 805540883 + sd x8,8(x12) + .word 831755283 + .word 2120483635 + .word 2121466803 + add x12,x12,16 + sd x6,0(x12) + sd x7,8(x12) + + j 4f +1: + li x6,192 + bne x11,x6,2f + li x7,12 # key->rounds = 12 if bits == 192 + sw x7,240(x12) # store key->rounds + ld x6,0(x10) + ld x7,8(x10) + ld x8,16(x10) + sd x6,0(x12) + sd x7,8(x12) + .word 805574291 + sd x13,16(x12) + .word 822351507 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + .word 805508755 + sd x13,0(x12) + .word 805541523 + sd x13,8(x12) + # the reason is in ke192enc + .word 2122548275 + .word 805574291 + sd x13,16(x12) + .word 823400083 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + .word 805508755 + sd x13,0(x12) + .word 805541523 + sd x13,8(x12) + # the reason is in ke192enc + .word 2122548275 + .word 805574291 + sd x13,16(x12) + .word 824448659 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + .word 805508755 + sd x13,0(x12) + .word 805541523 + sd x13,8(x12) + # the reason is in ke192enc + .word 2122548275 + .word 805574291 + sd x13,16(x12) + .word 825497235 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + .word 805508755 + sd x13,0(x12) + .word 805541523 + sd x13,8(x12) + # the reason is in ke192enc + .word 2122548275 + .word 805574291 + sd x13,16(x12) + .word 826545811 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + .word 805508755 + sd x13,0(x12) + .word 805541523 + sd x13,8(x12) + # the reason is in ke192enc + .word 2122548275 + .word 805574291 + sd x13,16(x12) + .word 827594387 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + .word 805508755 + sd x13,0(x12) + .word 805541523 + sd x13,8(x12) + # the reason is in ke192enc + .word 2122548275 + .word 805574291 + sd x13,16(x12) + .word 828642963 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + .word 805508755 + sd x13,0(x12) + .word 805541523 + sd x13,8(x12) + # the reason is in ke192enc + .word 2122548275 + .word 805574291 + sd x13,16(x12) + .word 829691539 + .word 2120647475 + .word 2121466803 + add x12,x12,24 + sd x6,0(x12) + sd x7,8(x12) + + j 4f +2: + li x7,14 # key->rounds = 14 if bits == 256 + li x6,256 + beq x11,x6,3f + li a0,-2 # If bits != 128, 192, or 256, return -2 + j 5f +3: + sw x7,240(x12) # store key->rounds + ld x6,0(x10) + ld x7,8(x10) + ld x8,16(x10) + ld x13,24(x10) + sd x6,0(x12) + sd x7,8(x12) + .word 805574419 + sd x14,16(x12) + .word 805738259 + sd x14,24(x12) + .word 822515475 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + .word 832804627 + .word 2122777651 + .word 2127824563 + .word 805508883 + sd x14,0(x12) + .word 805541651 + sd x14,8(x12) + .word 805574419 + sd x14,16(x12) + .word 805738259 + sd x14,24(x12) + .word 823564051 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + .word 832804627 + .word 2122777651 + .word 2127824563 + .word 805508883 + sd x14,0(x12) + .word 805541651 + sd x14,8(x12) + .word 805574419 + sd x14,16(x12) + .word 805738259 + sd x14,24(x12) + .word 824612627 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + .word 832804627 + .word 2122777651 + .word 2127824563 + .word 805508883 + sd x14,0(x12) + .word 805541651 + sd x14,8(x12) + .word 805574419 + sd x14,16(x12) + .word 805738259 + sd x14,24(x12) + .word 825661203 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + .word 832804627 + .word 2122777651 + .word 2127824563 + .word 805508883 + sd x14,0(x12) + .word 805541651 + sd x14,8(x12) + .word 805574419 + sd x14,16(x12) + .word 805738259 + sd x14,24(x12) + .word 826709779 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + .word 832804627 + .word 2122777651 + .word 2127824563 + .word 805508883 + sd x14,0(x12) + .word 805541651 + sd x14,8(x12) + .word 805574419 + sd x14,16(x12) + .word 805738259 + sd x14,24(x12) + .word 827758355 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + .word 832804627 + .word 2122777651 + .word 2127824563 + .word 805508883 + sd x14,0(x12) + .word 805541651 + sd x14,8(x12) + .word 805574419 + sd x14,16(x12) + .word 805738259 + sd x14,24(x12) + .word 828806931 + .word 2120680243 + .word 2121466803 + add x12,x12,32 + sd x6,0(x12) + sd x7,8(x12) + # last two one dropped + +4: # return 0 + li a0,0 +5: # return a0 + ld x8,0(sp) + addi sp,sp,16 + ret diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s new file mode 100644 index 00000000000000..f8a68e7c42dd0a --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s @@ -0,0 +1,943 @@ +.text +.p2align 3 +.globl rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt +.type rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt,@function +rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt: + # Load number of rounds + lwu t0, 240(a4) + .word 3439489111 + .word 34074119 + .word 34041479 + .word 2815667831 + addi t0, t0, -1 + addi a4, a4, 16 +1: + .word 34041479 + .word 2815503991 + addi t0, t0, -1 + addi a4, a4, 16 + bnez t0, 1b + .word 34041479 + .word 2815536759 + + + # aes block size is 16 + andi a6, a2, 15 + mv t3, a2 + beqz a6, 1f + sub a2, a2, a6 + addi t3, a2, -16 +1: + # We make the `LENGTH` become e32 length here. + srli t4, a2, 2 + srli t3, t3, 2 + + # Load number of rounds + lwu t0, 240(a3) + li t1, 14 + li t2, 10 + beq t0, t1, aes_xts_enc_256 + beq t0, t2, aes_xts_enc_128 +.size rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt,.-rv64i_zvbb_zvkg_zvkned_aes_xts_encrypt +.p2align 3 +aes_xts_enc_128: + # load input + .word 221182167 + .word 33909767 + + li t0, 5 + # We could simplify the initialization steps if we have `block<=1`. + blt t4, t0, 1f + + # Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses + # different order of coefficients. We should use`vbrev8` to reverse the + # data when we use `vgmul`. + .word 3439489111 + .word 1271144535 + .word 221179991 + .word 1577072727 + # v16: [r-IV0, r-IV0, ...] + .word 2785257591 + + # Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8. + slli t0, t4, 2 + .word 218296407 + # v2: [`1`, `1`, `1`, `1`, ...] + .word 1577103703 + # v3: [`0`, `1`, `2`, `3`, ...] + .word 1376297431 + .word 227733591 + # v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...] + .word 1243816535 + # v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...] + .word 1244865367 + slli t0, t4, 1 + .word 219344983 + # v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...] + .word 3594716247 + + # Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16 + .word 221179991 + .word 1250174039 + .word 2726865015 + + # Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28. + # Reverse the bits order back. + .word 1258565207 + + # Prepare the x^n multiplier in v20. The `n` is the aes-xts block number + # in a LMUL=4 register group. + # n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4)) + # = (VLEN/32) + # We could use vsetvli with `e32, m1` to compute the `n` number. + .word 218133207 + li t1, 1 + sll t0, t1, t0 + .word 3447812183 + .word 1577070679 + .word 3380670551 + .word 1577238615 + .word 3447812183 + .word 1241784407 + .word 221179991 + .word 1577073239 + .word 2785258103 + + j 2f +1: + .word 3439489111 + .word 1271146583 +2: + + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + + .word 221182167 + j 1f + +.Lenc_blocks_128: + .word 221182167 + # load plaintext into v24 + .word 33909767 + # update iv + .word 2739447927 + # reverse the iv's bits order back + .word 1258565207 +1: + .word 797838423 + slli t0, a7, 2 + sub t4, t4, a7 + add a0, a0, t0 + .word 2786307191 + .word 2787191927 + .word 2788240503 + .word 2789289079 + .word 2790337655 + .word 2791386231 + .word 2792434807 + .word 2793483383 + .word 2794531959 + .word 2795580535 + .word 2796661879 + + .word 797838423 + + # store ciphertext + .word 221147223 + .word 33942567 + add a1, a1, t0 + sub t3, t3, a7 + + bnez t4, .Lenc_blocks_128 + + bnez a6, 1f + ret +1: + # slidedown second to last block + addi a7, a7, -4 + .word 3441586263 + # ciphertext + .word 1065929815 + # multiplier + .word 1057540183 + + .word 3439489111 + .word 1577848023 + + # load last block into v24 + # note: We should load the last block before store the second to last block + # for in-place operation. + .word 134770775 + .word 33885191 + + # setup `x` multiplier with byte-reversed order + # 0b00000010 => 0b01000000 (0x40) + li t0, 0x40 + .word 3439489111 + .word 1577074263 + .word 3355504727 + .word 1577242199 + + # compute IV for last block + .word 3439489111 + .word 2747836535 + .word 1258565207 + + # store second to last block + .word 201879639 + .word 33918119 + + + # xts last block + .word 3439489111 + .word 797838423 + .word 2786307191 + .word 2787191927 + .word 2788240503 + .word 2789289079 + .word 2790337655 + .word 2791386231 + .word 2792434807 + .word 2793483383 + .word 2794531959 + .word 2795580535 + .word 2796661879 + + .word 797838423 + + # store last block ciphertext + addi a1, a1, -16 + .word 33942567 + + ret +.size aes_xts_enc_128,.-aes_xts_enc_128 +.p2align 3 +aes_xts_enc_256: + # load input + .word 221182167 + .word 33909767 + + li t0, 5 + # We could simplify the initialization steps if we have `block<=1`. + blt t4, t0, 1f + + # Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses + # different order of coefficients. We should use`vbrev8` to reverse the + # data when we use `vgmul`. + .word 3439489111 + .word 1271144535 + .word 221179991 + .word 1577072727 + # v16: [r-IV0, r-IV0, ...] + .word 2785257591 + + # Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8. + slli t0, t4, 2 + .word 218296407 + # v2: [`1`, `1`, `1`, `1`, ...] + .word 1577103703 + # v3: [`0`, `1`, `2`, `3`, ...] + .word 1376297431 + .word 227733591 + # v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...] + .word 1243816535 + # v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...] + .word 1244865367 + slli t0, t4, 1 + .word 219344983 + # v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...] + .word 3594716247 + + # Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16 + .word 221179991 + .word 1250174039 + .word 2726865015 + + # Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28. + # Reverse the bits order back. + .word 1258565207 + + # Prepare the x^n multiplier in v20. The `n` is the aes-xts block number + # in a LMUL=4 register group. + # n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4)) + # = (VLEN/32) + # We could use vsetvli with `e32, m1` to compute the `n` number. + .word 218133207 + li t1, 1 + sll t0, t1, t0 + .word 3447812183 + .word 1577070679 + .word 3380670551 + .word 1577238615 + .word 3447812183 + .word 1241784407 + .word 221179991 + .word 1577073239 + .word 2785258103 + + j 2f +1: + .word 3439489111 + .word 1271146583 +2: + + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + + + .word 221182167 + j 1f + +.Lenc_blocks_256: + .word 221182167 + # load plaintext into v24 + .word 33909767 + # update iv + .word 2739447927 + # reverse the iv's bits order back + .word 1258565207 +1: + .word 797838423 + slli t0, a7, 2 + sub t4, t4, a7 + add a0, a0, t0 + .word 2786307191 + .word 2787191927 + .word 2788240503 + .word 2789289079 + .word 2790337655 + .word 2791386231 + .word 2792434807 + .word 2793483383 + .word 2794531959 + .word 2795580535 + .word 2796629111 + .word 2797677687 + .word 2798726263 + .word 2799774839 + .word 2800856183 + + .word 797838423 + + # store ciphertext + .word 221147223 + .word 33942567 + add a1, a1, t0 + sub t3, t3, a7 + + bnez t4, .Lenc_blocks_256 + + bnez a6, 1f + ret +1: + # slidedown second to last block + addi a7, a7, -4 + .word 3441586263 + # ciphertext + .word 1065929815 + # multiplier + .word 1057540183 + + .word 3439489111 + .word 1577848023 + + # load last block into v24 + # note: We should load the last block before store the second to last block + # for in-place operation. + .word 134770775 + .word 33885191 + + # setup `x` multiplier with byte-reversed order + # 0b00000010 => 0b01000000 (0x40) + li t0, 0x40 + .word 3439489111 + .word 1577074263 + .word 3355504727 + .word 1577242199 + + # compute IV for last block + .word 3439489111 + .word 2747836535 + .word 1258565207 + + # store second to last block + .word 201879639 + .word 33918119 + + + # xts last block + .word 3439489111 + .word 797838423 + .word 2786307191 + .word 2787191927 + .word 2788240503 + .word 2789289079 + .word 2790337655 + .word 2791386231 + .word 2792434807 + .word 2793483383 + .word 2794531959 + .word 2795580535 + .word 2796629111 + .word 2797677687 + .word 2798726263 + .word 2799774839 + .word 2800856183 + + .word 797838423 + + # store last block ciphertext + addi a1, a1, -16 + .word 33942567 + + ret +.size aes_xts_enc_256,.-aes_xts_enc_256 +.p2align 3 +.globl rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt +.type rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt,@function +rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt: + # Load number of rounds + lwu t0, 240(a4) + .word 3439489111 + .word 34074119 + .word 34041479 + .word 2815667831 + addi t0, t0, -1 + addi a4, a4, 16 +1: + .word 34041479 + .word 2815503991 + addi t0, t0, -1 + addi a4, a4, 16 + bnez t0, 1b + .word 34041479 + .word 2815536759 + + + # aes block size is 16 + andi a6, a2, 15 + beqz a6, 1f + sub a2, a2, a6 + addi a2, a2, -16 +1: + # We make the `LENGTH` become e32 length here. + srli t4, a2, 2 + + # Load number of rounds + lwu t0, 240(a3) + li t1, 14 + li t2, 10 + beq t0, t1, aes_xts_dec_256 + beq t0, t2, aes_xts_dec_128 +.size rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt,.-rv64i_zvbb_zvkg_zvkned_aes_xts_decrypt +.p2align 3 +aes_xts_dec_128: + # load input + .word 221182167 + .word 33909767 + + li t0, 5 + # We could simplify the initialization steps if we have `block<=1`. + blt t4, t0, 1f + + # Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses + # different order of coefficients. We should use`vbrev8` to reverse the + # data when we use `vgmul`. + .word 3439489111 + .word 1271144535 + .word 221179991 + .word 1577072727 + # v16: [r-IV0, r-IV0, ...] + .word 2785257591 + + # Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8. + slli t0, t4, 2 + .word 218296407 + # v2: [`1`, `1`, `1`, `1`, ...] + .word 1577103703 + # v3: [`0`, `1`, `2`, `3`, ...] + .word 1376297431 + .word 227733591 + # v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...] + .word 1243816535 + # v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...] + .word 1244865367 + slli t0, t4, 1 + .word 219344983 + # v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...] + .word 3594716247 + + # Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16 + .word 221179991 + .word 1250174039 + .word 2726865015 + + # Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28. + # Reverse the bits order back. + .word 1258565207 + + # Prepare the x^n multiplier in v20. The `n` is the aes-xts block number + # in a LMUL=4 register group. + # n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4)) + # = (VLEN/32) + # We could use vsetvli with `e32, m1` to compute the `n` number. + .word 218133207 + li t1, 1 + sll t0, t1, t0 + .word 3447812183 + .word 1577070679 + .word 3380670551 + .word 1577238615 + .word 3447812183 + .word 1241784407 + .word 221179991 + .word 1577073239 + .word 2785258103 + + j 2f +1: + .word 3439489111 + .word 1271146583 +2: + + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + + beqz t4, 2f + + .word 221182167 + j 1f + +.Ldec_blocks_128: + .word 221182167 + # load ciphertext into v24 + .word 33909767 + # update iv + .word 2739447927 + # reverse the iv's bits order back + .word 1258565207 +1: + .word 797838423 + slli t0, a7, 2 + sub t4, t4, a7 + add a0, a0, t0 + .word 2796792951 + .word 2795514999 + .word 2794466423 + .word 2793417847 + .word 2792369271 + .word 2791320695 + .word 2790272119 + .word 2789223543 + .word 2788174967 + .word 2787126391 + .word 2786110583 + + .word 797838423 + + # store plaintext + .word 33942567 + add a1, a1, t0 + + bnez t4, .Ldec_blocks_128 + +2: + bnez a6, 1f + ret +1: + # load second to last block's ciphertext + .word 3439489111 + .word 33909767 + addi a0, a0, 16 + + # setup `x` multiplier with byte-reversed order + # 0b00000010 => 0b01000000 (0x40) + li t0, 0x40 + .word 3439489111 + .word 1577073239 + .word 3355504727 + .word 1577241175 + + beqz a2, 1f + # slidedown third to last block + addi a7, a7, -4 + .word 3441586263 + # multiplier + .word 1057540183 + + # compute IV for last block + .word 3439489111 + .word 2739447927 + .word 1258565207 + + # compute IV for second to last block + .word 2739447927 + .word 1258565335 + j 2f +1: + # compute IV for second to last block + .word 3439489111 + .word 2739447927 + .word 1258565335 +2: + + + ## xts second to last block + .word 3439489111 + .word 797871191 + .word 2796792951 + .word 2795514999 + .word 2794466423 + .word 2793417847 + .word 2792369271 + .word 2791320695 + .word 2790272119 + .word 2789223543 + .word 2788174967 + .word 2787126391 + .word 2786110583 + + .word 797871191 + .word 1577848023 + + # load last block ciphertext + .word 134770775 + .word 33885191 + + # store second to last block plaintext + addi t0, a1, 16 + .word 33721511 + + ## xts last block + .word 3439489111 + .word 797838423 + .word 2796792951 + .word 2795514999 + .word 2794466423 + .word 2793417847 + .word 2792369271 + .word 2791320695 + .word 2790272119 + .word 2789223543 + .word 2788174967 + .word 2787126391 + .word 2786110583 + + .word 797838423 + + # store second to last block plaintext + .word 33942567 + + ret +.size aes_xts_dec_128,.-aes_xts_dec_128 +.p2align 3 +aes_xts_dec_256: + # load input + .word 221182167 + .word 33909767 + + li t0, 5 + # We could simplify the initialization steps if we have `block<=1`. + blt t4, t0, 1f + + # Note: We use `vgmul` for GF(2^128) multiplication. The `vgmul` uses + # different order of coefficients. We should use`vbrev8` to reverse the + # data when we use `vgmul`. + .word 3439489111 + .word 1271144535 + .word 221179991 + .word 1577072727 + # v16: [r-IV0, r-IV0, ...] + .word 2785257591 + + # Prepare GF(2^128) multiplier [1, x, x^2, x^3, ...] in v8. + slli t0, t4, 2 + .word 218296407 + # v2: [`1`, `1`, `1`, `1`, ...] + .word 1577103703 + # v3: [`0`, `1`, `2`, `3`, ...] + .word 1376297431 + .word 227733591 + # v4: [`1`, 0, `1`, 0, `1`, 0, `1`, 0, ...] + .word 1243816535 + # v6: [`0`, 0, `1`, 0, `2`, 0, `3`, 0, ...] + .word 1244865367 + slli t0, t4, 1 + .word 219344983 + # v8: [1<<0=1, 0, 0, 0, 1<<1=x, 0, 0, 0, 1<<2=x^2, 0, 0, 0, ...] + .word 3594716247 + + # Compute [r-IV0*1, r-IV0*x, r-IV0*x^2, r-IV0*x^3, ...] in v16 + .word 221179991 + .word 1250174039 + .word 2726865015 + + # Compute [IV0*1, IV0*x, IV0*x^2, IV0*x^3, ...] in v28. + # Reverse the bits order back. + .word 1258565207 + + # Prepare the x^n multiplier in v20. The `n` is the aes-xts block number + # in a LMUL=4 register group. + # n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4)) + # = (VLEN/32) + # We could use vsetvli with `e32, m1` to compute the `n` number. + .word 218133207 + li t1, 1 + sll t0, t1, t0 + .word 3447812183 + .word 1577070679 + .word 3380670551 + .word 1577238615 + .word 3447812183 + .word 1241784407 + .word 221179991 + .word 1577073239 + .word 2785258103 + + j 2f +1: + .word 3439489111 + .word 1271146583 +2: + + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + + + beqz t4, 2f + + .word 221182167 + j 1f + +.Ldec_blocks_256: + .word 221182167 + # load ciphertext into v24 + .word 33909767 + # update iv + .word 2739447927 + # reverse the iv's bits order back + .word 1258565207 +1: + .word 797838423 + slli t0, a7, 2 + sub t4, t4, a7 + add a0, a0, t0 + .word 2800987255 + .word 2799709303 + .word 2798660727 + .word 2797612151 + .word 2796563575 + .word 2795514999 + .word 2794466423 + .word 2793417847 + .word 2792369271 + .word 2791320695 + .word 2790272119 + .word 2789223543 + .word 2788174967 + .word 2787126391 + .word 2786110583 + + .word 797838423 + + # store plaintext + .word 33942567 + add a1, a1, t0 + + bnez t4, .Ldec_blocks_256 + +2: + bnez a6, 1f + ret +1: + # load second to last block's ciphertext + .word 3439489111 + .word 33909767 + addi a0, a0, 16 + + # setup `x` multiplier with byte-reversed order + # 0b00000010 => 0b01000000 (0x40) + li t0, 0x40 + .word 3439489111 + .word 1577073239 + .word 3355504727 + .word 1577241175 + + beqz a2, 1f + # slidedown third to last block + addi a7, a7, -4 + .word 3441586263 + # multiplier + .word 1057540183 + + # compute IV for last block + .word 3439489111 + .word 2739447927 + .word 1258565207 + + # compute IV for second to last block + .word 2739447927 + .word 1258565335 + j 2f +1: + # compute IV for second to last block + .word 3439489111 + .word 2739447927 + .word 1258565335 +2: + + + ## xts second to last block + .word 3439489111 + .word 797871191 + .word 2800987255 + .word 2799709303 + .word 2798660727 + .word 2797612151 + .word 2796563575 + .word 2795514999 + .word 2794466423 + .word 2793417847 + .word 2792369271 + .word 2791320695 + .word 2790272119 + .word 2789223543 + .word 2788174967 + .word 2787126391 + .word 2786110583 + + .word 797871191 + .word 1577848023 + + # load last block ciphertext + .word 134770775 + .word 33885191 + + # store second to last block plaintext + addi t0, a1, 16 + .word 33721511 + + ## xts last block + .word 3439489111 + .word 797838423 + .word 2800987255 + .word 2799709303 + .word 2798660727 + .word 2797612151 + .word 2796563575 + .word 2795514999 + .word 2794466423 + .word 2793417847 + .word 2792369271 + .word 2791320695 + .word 2790272119 + .word 2789223543 + .word 2788174967 + .word 2787126391 + .word 2786110583 + + .word 797838423 + + # store second to last block plaintext + .word 33942567 + + ret +.size aes_xts_dec_256,.-aes_xts_dec_256 diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvkb-zvkned.s b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvkb-zvkned.s new file mode 100644 index 00000000000000..2d6a71e355eb43 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvkb-zvkned.s @@ -0,0 +1,326 @@ +.text +.p2align 3 +.globl rv64i_zvkb_zvkned_ctr32_encrypt_blocks +.type rv64i_zvkb_zvkned_ctr32_encrypt_blocks,@function +rv64i_zvkb_zvkned_ctr32_encrypt_blocks: + beqz a2, 1f + + # Load number of rounds + lwu t0, 240(a3) + li t1, 14 + li t2, 12 + li t3, 10 + + slli t5, a2, 2 + + beq t0, t1, ctr32_encrypt_blocks_256 + beq t0, t2, ctr32_encrypt_blocks_192 + beq t0, t3, ctr32_encrypt_blocks_128 + +1: + ret + +.size rv64i_zvkb_zvkned_ctr32_encrypt_blocks,.-rv64i_zvkb_zvkned_ctr32_encrypt_blocks +.p2align 3 +ctr32_encrypt_blocks_128: + # Load all 11 round keys to v1-v11 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + # Setup mask into v0 + # The mask pattern for 4*N-th elements + # mask v0: [000100010001....] + # Note: + # We could setup the mask just for the maximum element length instead of + # the VLMAX. + li t0, 0b10001000 + .word 201356247 + .word 1577238615 + # Load IV. + # v31:[IV0, IV1, IV2, big-endian count] + .word 3439489111 + .word 34041735 + # Convert the big-endian counter into little-endian. + .word 3305271383 + .word 1240772567 + # Splat the IV to v16 + .word 221212759 + .word 1577072727 + .word 2817763447 + # Prepare the ctr pattern into v20 + # v20: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...] + .word 1342712407 + # v16:[IV0, IV1, IV2, count+0, IV0, IV1, IV2, count+1, ...] + .word 86998743 + .word 17434711 + + + ##### AES body + j 2f +1: + .word 86998743 + # Increase ctr in v16. + .word 17811543 +2: + # Load plaintext into v20 + .word 33909255 + slli t0, t4, 2 + srli t6, t4, 2 + sub t5, t5, t4 + add a0, a0, t0 + # Prepare the AES ctr input into v24. + # The ctr data uses big-endian form. + .word 1577585751 + .word 1233431639 + + .word 2786307191 + .word 2787191927 + .word 2788240503 + .word 2789289079 + .word 2790337655 + .word 2791386231 + .word 2792434807 + .word 2793483383 + .word 2794531959 + .word 2795580535 + .word 2796661879 + + # ciphertext + .word 797576279 + + # Store the ciphertext. + .word 33942567 + add a1, a1, t0 + + bnez t5, 1b + + ret +.size ctr32_encrypt_blocks_128,.-ctr32_encrypt_blocks_128 +.p2align 3 +ctr32_encrypt_blocks_192: + # Load all 13 round keys to v1-v13 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + + # Setup mask into v0 + # The mask pattern for 4*N-th elements + # mask v0: [000100010001....] + # Note: + # We could setup the mask just for the maximum element length instead of + # the VLMAX. + li t0, 0b10001000 + .word 201356247 + .word 1577238615 + # Load IV. + # v31:[IV0, IV1, IV2, big-endian count] + .word 3439489111 + .word 34041735 + # Convert the big-endian counter into little-endian. + .word 3305271383 + .word 1240772567 + # Splat the IV to v16 + .word 221212759 + .word 1577072727 + .word 2817763447 + # Prepare the ctr pattern into v20 + # v20: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...] + .word 1342712407 + # v16:[IV0, IV1, IV2, count+0, IV0, IV1, IV2, count+1, ...] + .word 86998743 + .word 17434711 + + + ##### AES body + j 2f +1: + .word 86998743 + # Increase ctr in v16. + .word 17811543 +2: + # Load plaintext into v20 + .word 33909255 + slli t0, t4, 2 + srli t6, t4, 2 + sub t5, t5, t4 + add a0, a0, t0 + # Prepare the AES ctr input into v24. + # The ctr data uses big-endian form. + .word 1577585751 + .word 1233431639 + + .word 2786307191 + .word 2787191927 + .word 2788240503 + .word 2789289079 + .word 2790337655 + .word 2791386231 + .word 2792434807 + .word 2793483383 + .word 2794531959 + .word 2795580535 + .word 2796629111 + .word 2797677687 + .word 2798759031 + + # ciphertext + .word 797576279 + + # Store the ciphertext. + .word 33942567 + add a1, a1, t0 + + bnez t5, 1b + + ret +.size ctr32_encrypt_blocks_192,.-ctr32_encrypt_blocks_192 +.p2align 3 +ctr32_encrypt_blocks_256: + # Load all 15 round keys to v1-v15 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + + # Setup mask into v0 + # The mask pattern for 4*N-th elements + # mask v0: [000100010001....] + # Note: + # We could setup the mask just for the maximum element length instead of + # the VLMAX. + li t0, 0b10001000 + .word 201356247 + .word 1577238615 + # Load IV. + # v31:[IV0, IV1, IV2, big-endian count] + .word 3439489111 + .word 34041735 + # Convert the big-endian counter into little-endian. + .word 3305271383 + .word 1240772567 + # Splat the IV to v16 + .word 221212759 + .word 1577072727 + .word 2817763447 + # Prepare the ctr pattern into v20 + # v20: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...] + .word 1342712407 + # v16:[IV0, IV1, IV2, count+0, IV0, IV1, IV2, count+1, ...] + .word 86998743 + .word 17434711 + + + ##### AES body + j 2f +1: + .word 86998743 + # Increase ctr in v16. + .word 17811543 +2: + # Load plaintext into v20 + .word 33909255 + slli t0, t4, 2 + srli t6, t4, 2 + sub t5, t5, t4 + add a0, a0, t0 + # Prepare the AES ctr input into v24. + # The ctr data uses big-endian form. + .word 1577585751 + .word 1233431639 + + .word 2786307191 + .word 2787191927 + .word 2788240503 + .word 2789289079 + .word 2790337655 + .word 2791386231 + .word 2792434807 + .word 2793483383 + .word 2794531959 + .word 2795580535 + .word 2796629111 + .word 2797677687 + .word 2798726263 + .word 2799774839 + .word 2800856183 + + # ciphertext + .word 797576279 + + # Store the ciphertext. + .word 33942567 + add a1, a1, t0 + + bnez t5, 1b + + ret +.size ctr32_encrypt_blocks_256,.-ctr32_encrypt_blocks_256 diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvkned.s b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvkned.s new file mode 100644 index 00000000000000..654e2242146c95 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvkned.s @@ -0,0 +1,1390 @@ +.text +.p2align 3 +.globl rv64i_zvkned_cbc_encrypt +.type rv64i_zvkned_cbc_encrypt,@function +rv64i_zvkned_cbc_encrypt: + # check whether the length is a multiple of 16 and >= 16 + li t1, 16 + blt a2, t1, L_end + andi t1, a2, 15 + bnez t1, L_end + + # Load number of rounds + lwu t2, 240(a3) + + # Get proper routine for key size + li t0, 10 + beq t2, t0, L_cbc_enc_128 + + li t0, 12 + beq t2, t0, L_cbc_enc_192 + + li t0, 14 + beq t2, t0, L_cbc_enc_256 + + ret +.size rv64i_zvkned_cbc_encrypt,.-rv64i_zvkned_cbc_encrypt +.p2align 3 +L_cbc_enc_128: + # Load all 11 round keys to v1-v11 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + + # Load IV. + .word 34039815 + + .word 33909767 + .word 797445207 + j 2f + +1: + .word 33908871 + .word 797477975 + +2: + # AES body + .word 2786307191 # with round key w[ 0, 3] + .word 2787191927 # with round key w[ 4, 7] + .word 2788240503 # with round key w[ 8,11] + .word 2789289079 # with round key w[12,15] + .word 2790337655 # with round key w[16,19] + .word 2791386231 # with round key w[20,23] + .word 2792434807 # with round key w[24,27] + .word 2793483383 # with round key w[28,31] + .word 2794531959 # with round key w[32,35] + .word 2795580535 # with round key w[36,39] + .word 2796661879 # with round key w[40,43] + + + .word 33942567 + + addi a0, a0, 16 + addi a1, a1, 16 + addi a2, a2, -16 + + bnez a2, 1b + + .word 34040871 + + ret +.size L_cbc_enc_128,.-L_cbc_enc_128 +.p2align 3 +L_cbc_enc_192: + # Load all 13 round keys to v1-v13 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + + + # Load IV. + .word 34039815 + + .word 33909767 + .word 797445207 + j 2f + +1: + .word 33908871 + .word 797477975 + +2: + # AES body + .word 2786307191 # with round key w[ 0, 3] + .word 2787191927 # with round key w[ 4, 7] + .word 2788240503 # with round key w[ 8,11] + .word 2789289079 # with round key w[12,15] + .word 2790337655 # with round key w[16,19] + .word 2791386231 # with round key w[20,23] + .word 2792434807 # with round key w[24,27] + .word 2793483383 # with round key w[28,31] + .word 2794531959 # with round key w[32,35] + .word 2795580535 # with round key w[36,39] + .word 2796629111 # with round key w[40,43] + .word 2797677687 # with round key w[44,47] + .word 2798759031 # with round key w[48,51] + + + .word 33942567 + + addi a0, a0, 16 + addi a1, a1, 16 + addi a2, a2, -16 + + bnez a2, 1b + + .word 34040871 + + ret +.size L_cbc_enc_192,.-L_cbc_enc_192 +.p2align 3 +L_cbc_enc_256: + # Load all 15 round keys to v1-v15 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + + + # Load IV. + .word 34039815 + + .word 33909767 + .word 797445207 + j 2f + +1: + .word 33908871 + .word 797477975 + +2: + # AES body + .word 2786307191 # with round key w[ 0, 3] + .word 2787191927 # with round key w[ 4, 7] + .word 2788240503 # with round key w[ 8,11] + .word 2789289079 # with round key w[12,15] + .word 2790337655 # with round key w[16,19] + .word 2791386231 # with round key w[20,23] + .word 2792434807 # with round key w[24,27] + .word 2793483383 # with round key w[28,31] + .word 2794531959 # with round key w[32,35] + .word 2795580535 # with round key w[36,39] + .word 2796629111 # with round key w[40,43] + .word 2797677687 # with round key w[44,47] + .word 2798726263 # with round key w[48,51] + .word 2799774839 # with round key w[52,55] + .word 2800856183 # with round key w[56,59] + + + .word 33942567 + + addi a0, a0, 16 + addi a1, a1, 16 + addi a2, a2, -16 + + bnez a2, 1b + + .word 34040871 + + ret +.size L_cbc_enc_256,.-L_cbc_enc_256 +.p2align 3 +.globl rv64i_zvkned_cbc_decrypt +.type rv64i_zvkned_cbc_decrypt,@function +rv64i_zvkned_cbc_decrypt: + # check whether the length is a multiple of 16 and >= 16 + li t1, 16 + blt a2, t1, L_end + andi t1, a2, 15 + bnez t1, L_end + + # Load number of rounds + lwu t2, 240(a3) + + # Get proper routine for key size + li t0, 10 + beq t2, t0, L_cbc_dec_128 + + li t0, 12 + beq t2, t0, L_cbc_dec_192 + + li t0, 14 + beq t2, t0, L_cbc_dec_256 + + ret +.size rv64i_zvkned_cbc_decrypt,.-rv64i_zvkned_cbc_decrypt +.p2align 3 +L_cbc_dec_128: + # Load all 11 round keys to v1-v11 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + + # Load IV. + .word 34039815 + + .word 33909767 + .word 1577846999 + j 2f + +1: + .word 33909767 + .word 1577846999 + addi a1, a1, 16 + +2: + # AES body + .word 2796792951 # with round key w[40,43] + .word 2795514999 # with round key w[36,39] + .word 2794466423 # with round key w[32,35] + .word 2793417847 # with round key w[28,31] + .word 2792369271 # with round key w[24,27] + .word 2791320695 # with round key w[20,23] + .word 2790272119 # with round key w[16,19] + .word 2789223543 # with round key w[12,15] + .word 2788174967 # with round key w[ 8,11] + .word 2787126391 # with round key w[ 4, 7] + .word 2786110583 # with round key w[ 0, 3] + + + .word 797445207 + .word 33942567 + .word 1577617495 + + addi a2, a2, -16 + addi a0, a0, 16 + + bnez a2, 1b + + .word 34039847 + + ret +.size L_cbc_dec_128,.-L_cbc_dec_128 +.p2align 3 +L_cbc_dec_192: + # Load all 13 round keys to v1-v13 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + + + # Load IV. + .word 34039815 + + .word 33909767 + .word 1577846999 + j 2f + +1: + .word 33909767 + .word 1577846999 + addi a1, a1, 16 + +2: + # AES body + .word 2798890103 # with round key w[48,51] + .word 2797612151 # with round key w[44,47] + .word 2796563575 # with round key w[40,43] + .word 2795514999 # with round key w[36,39] + .word 2794466423 # with round key w[32,35] + .word 2793417847 # with round key w[28,31] + .word 2792369271 # with round key w[24,27] + .word 2791320695 # with round key w[20,23] + .word 2790272119 # with round key w[16,19] + .word 2789223543 # with round key w[12,15] + .word 2788174967 # with round key w[ 8,11] + .word 2787126391 # with round key w[ 4, 7] + .word 2786110583 # with round key w[ 0, 3] + + + .word 797445207 + .word 33942567 + .word 1577617495 + + addi a2, a2, -16 + addi a0, a0, 16 + + bnez a2, 1b + + .word 34039847 + + ret +.size L_cbc_dec_192,.-L_cbc_dec_192 +.p2align 3 +L_cbc_dec_256: + # Load all 15 round keys to v1-v15 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + + + # Load IV. + .word 34039815 + + .word 33909767 + .word 1577846999 + j 2f + +1: + .word 33909767 + .word 1577846999 + addi a1, a1, 16 + +2: + # AES body + .word 2800987255 # with round key w[56,59] + .word 2799709303 # with round key w[52,55] + .word 2798660727 # with round key w[48,51] + .word 2797612151 # with round key w[44,47] + .word 2796563575 # with round key w[40,43] + .word 2795514999 # with round key w[36,39] + .word 2794466423 # with round key w[32,35] + .word 2793417847 # with round key w[28,31] + .word 2792369271 # with round key w[24,27] + .word 2791320695 # with round key w[20,23] + .word 2790272119 # with round key w[16,19] + .word 2789223543 # with round key w[12,15] + .word 2788174967 # with round key w[ 8,11] + .word 2787126391 # with round key w[ 4, 7] + .word 2786110583 # with round key w[ 0, 3] + + + .word 797445207 + .word 33942567 + .word 1577617495 + + addi a2, a2, -16 + addi a0, a0, 16 + + bnez a2, 1b + + .word 34039847 + + ret +.size L_cbc_dec_256,.-L_cbc_dec_256 +.p2align 3 +.globl rv64i_zvkned_ecb_encrypt +.type rv64i_zvkned_ecb_encrypt,@function +rv64i_zvkned_ecb_encrypt: + # Make the LEN become e32 length. + srli t3, a2, 2 + + # Load number of rounds + lwu t2, 240(a3) + + # Get proper routine for key size + li t0, 10 + beq t2, t0, L_ecb_enc_128 + + li t0, 12 + beq t2, t0, L_ecb_enc_192 + + li t0, 14 + beq t2, t0, L_ecb_enc_256 + + ret +.size rv64i_zvkned_ecb_encrypt,.-rv64i_zvkned_ecb_encrypt +.p2align 3 +L_ecb_enc_128: + # Load all 11 round keys to v1-v11 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + +1: + .word 221149271 + slli t0, a6, 2 + sub t3, t3, a6 + + .word 33909767 + + # AES body + .word 2786307191 # with round key w[ 0, 3] + .word 2787191927 # with round key w[ 4, 7] + .word 2788240503 # with round key w[ 8,11] + .word 2789289079 # with round key w[12,15] + .word 2790337655 # with round key w[16,19] + .word 2791386231 # with round key w[20,23] + .word 2792434807 # with round key w[24,27] + .word 2793483383 # with round key w[28,31] + .word 2794531959 # with round key w[32,35] + .word 2795580535 # with round key w[36,39] + .word 2796661879 # with round key w[40,43] + + + .word 33942567 + + add a0, a0, t0 + add a1, a1, t0 + + bnez t3, 1b + + ret +.size L_ecb_enc_128,.-L_ecb_enc_128 +.p2align 3 +L_ecb_enc_192: + # Load all 13 round keys to v1-v13 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + + +1: + .word 221149271 + slli t0, a6, 2 + sub t3, t3, a6 + + .word 33909767 + + # AES body + .word 2786307191 # with round key w[ 0, 3] + .word 2787191927 # with round key w[ 4, 7] + .word 2788240503 # with round key w[ 8,11] + .word 2789289079 # with round key w[12,15] + .word 2790337655 # with round key w[16,19] + .word 2791386231 # with round key w[20,23] + .word 2792434807 # with round key w[24,27] + .word 2793483383 # with round key w[28,31] + .word 2794531959 # with round key w[32,35] + .word 2795580535 # with round key w[36,39] + .word 2796629111 # with round key w[40,43] + .word 2797677687 # with round key w[44,47] + .word 2798759031 # with round key w[48,51] + + + .word 33942567 + + add a0, a0, t0 + add a1, a1, t0 + + bnez t3, 1b + + ret +.size L_ecb_enc_192,.-L_ecb_enc_192 +.p2align 3 +L_ecb_enc_256: + # Load all 15 round keys to v1-v15 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + + +1: + .word 221149271 + slli t0, a6, 2 + sub t3, t3, a6 + + .word 33909767 + + # AES body + .word 2786307191 # with round key w[ 0, 3] + .word 2787191927 # with round key w[ 4, 7] + .word 2788240503 # with round key w[ 8,11] + .word 2789289079 # with round key w[12,15] + .word 2790337655 # with round key w[16,19] + .word 2791386231 # with round key w[20,23] + .word 2792434807 # with round key w[24,27] + .word 2793483383 # with round key w[28,31] + .word 2794531959 # with round key w[32,35] + .word 2795580535 # with round key w[36,39] + .word 2796629111 # with round key w[40,43] + .word 2797677687 # with round key w[44,47] + .word 2798726263 # with round key w[48,51] + .word 2799774839 # with round key w[52,55] + .word 2800856183 # with round key w[56,59] + + + .word 33942567 + + add a0, a0, t0 + add a1, a1, t0 + + bnez t3, 1b + + ret +.size L_ecb_enc_256,.-L_ecb_enc_256 +.p2align 3 +.globl rv64i_zvkned_ecb_decrypt +.type rv64i_zvkned_ecb_decrypt,@function +rv64i_zvkned_ecb_decrypt: + # Make the LEN become e32 length. + srli t3, a2, 2 + + # Load number of rounds + lwu t2, 240(a3) + + # Get proper routine for key size + li t0, 10 + beq t2, t0, L_ecb_dec_128 + + li t0, 12 + beq t2, t0, L_ecb_dec_192 + + li t0, 14 + beq t2, t0, L_ecb_dec_256 + + ret +.size rv64i_zvkned_ecb_decrypt,.-rv64i_zvkned_ecb_decrypt +.p2align 3 +L_ecb_dec_128: + # Load all 11 round keys to v1-v11 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + +1: + .word 221149271 + slli t0, a6, 2 + sub t3, t3, a6 + + .word 33909767 + + # AES body + .word 2796792951 # with round key w[40,43] + .word 2795514999 # with round key w[36,39] + .word 2794466423 # with round key w[32,35] + .word 2793417847 # with round key w[28,31] + .word 2792369271 # with round key w[24,27] + .word 2791320695 # with round key w[20,23] + .word 2790272119 # with round key w[16,19] + .word 2789223543 # with round key w[12,15] + .word 2788174967 # with round key w[ 8,11] + .word 2787126391 # with round key w[ 4, 7] + .word 2786110583 # with round key w[ 0, 3] + + + .word 33942567 + + add a0, a0, t0 + add a1, a1, t0 + + bnez t3, 1b + + ret +.size L_ecb_dec_128,.-L_ecb_dec_128 +.p2align 3 +L_ecb_dec_192: + # Load all 13 round keys to v1-v13 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + + +1: + .word 221149271 + slli t0, a6, 2 + sub t3, t3, a6 + + .word 33909767 + + # AES body + .word 2798890103 # with round key w[48,51] + .word 2797612151 # with round key w[44,47] + .word 2796563575 # with round key w[40,43] + .word 2795514999 # with round key w[36,39] + .word 2794466423 # with round key w[32,35] + .word 2793417847 # with round key w[28,31] + .word 2792369271 # with round key w[24,27] + .word 2791320695 # with round key w[20,23] + .word 2790272119 # with round key w[16,19] + .word 2789223543 # with round key w[12,15] + .word 2788174967 # with round key w[ 8,11] + .word 2787126391 # with round key w[ 4, 7] + .word 2786110583 # with round key w[ 0, 3] + + + .word 33942567 + + add a0, a0, t0 + add a1, a1, t0 + + bnez t3, 1b + + ret +.size L_ecb_dec_192,.-L_ecb_dec_192 +.p2align 3 +L_ecb_dec_256: + # Load all 15 round keys to v1-v15 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + + +1: + .word 221149271 + slli t0, a6, 2 + sub t3, t3, a6 + + .word 33909767 + + # AES body + .word 2800987255 # with round key w[56,59] + .word 2799709303 # with round key w[52,55] + .word 2798660727 # with round key w[48,51] + .word 2797612151 # with round key w[44,47] + .word 2796563575 # with round key w[40,43] + .word 2795514999 # with round key w[36,39] + .word 2794466423 # with round key w[32,35] + .word 2793417847 # with round key w[28,31] + .word 2792369271 # with round key w[24,27] + .word 2791320695 # with round key w[20,23] + .word 2790272119 # with round key w[16,19] + .word 2789223543 # with round key w[12,15] + .word 2788174967 # with round key w[ 8,11] + .word 2787126391 # with round key w[ 4, 7] + .word 2786110583 # with round key w[ 0, 3] + + + .word 33942567 + + add a0, a0, t0 + add a1, a1, t0 + + bnez t3, 1b + + ret +.size L_ecb_dec_256,.-L_ecb_dec_256 +.p2align 3 +.globl rv64i_zvkned_set_encrypt_key +.type rv64i_zvkned_set_encrypt_key,@function +rv64i_zvkned_set_encrypt_key: + # Get proper routine for key size + li t1, 256 + beq a1, t1, L_set_key_256 + li t1, 128 + beq a1, t1, L_set_key_128 + + j L_fail_m2 + +.size rv64i_zvkned_set_encrypt_key,.-rv64i_zvkned_set_encrypt_key +.p2align 3 +.globl rv64i_zvkned_set_decrypt_key +.type rv64i_zvkned_set_decrypt_key,@function +rv64i_zvkned_set_decrypt_key: + # Get proper routine for key size + li t1, 256 + beq a1, t1, L_set_key_256 + li t1, 128 + beq a1, t1, L_set_key_128 + + j L_fail_m2 + +.size rv64i_zvkned_set_decrypt_key,.-rv64i_zvkned_set_decrypt_key +.p2align 3 +L_set_key_128: + # Store the number of rounds + li t2, 10 + sw t2, 240(a2) + + .word 0xc1027057 + + # Load the key + .word 33907975 + + # Generate keys for round 2-11 into registers v11-v20. + .word 2325784055 # v11 <- rk2 (w[ 4, 7]) + .word 2326865527 # v12 <- rk3 (w[ 8,11]) + .word 2327946999 # v13 <- rk4 (w[12,15]) + .word 2329028471 # v14 <- rk5 (w[16,19]) + .word 2330109943 # v15 <- rk6 (w[20,23]) + .word 2331191415 # v16 <- rk7 (w[24,27]) + .word 2332272887 # v17 <- rk8 (w[28,31]) + .word 2333354359 # v18 <- rk9 (w[32,35]) + .word 2334435831 # v19 <- rk10 (w[36,39]) + .word 2335517303 # v20 <- rk11 (w[40,43]) + + # Store the round keys + .word 33973543 + addi a2, a2, 16 + .word 33973671 + addi a2, a2, 16 + .word 33973799 + addi a2, a2, 16 + .word 33973927 + addi a2, a2, 16 + .word 33974055 + addi a2, a2, 16 + .word 33974183 + addi a2, a2, 16 + .word 33974311 + addi a2, a2, 16 + .word 33974439 + addi a2, a2, 16 + .word 33974567 + addi a2, a2, 16 + .word 33974695 + addi a2, a2, 16 + .word 33974823 + + li a0, 1 + ret +.size L_set_key_128,.-L_set_key_128 +.p2align 3 +L_set_key_256: + # Store the number of rounds + li t2, 14 + sw t2, 240(a2) + + .word 0xc1027057 + + # Load the key + .word 33907975 + addi a0, a0, 16 + .word 33908103 + + .word 1577387607 + .word 2863736439 + .word 1577420503 + .word 2864817911 + .word 1577453399 + .word 2865899383 + .word 1577486295 + .word 2866980855 + .word 1577519191 + .word 2868062327 + .word 1577552087 + .word 2869143799 + .word 1577584983 + .word 2870225271 + .word 1577617879 + .word 2871306743 + .word 1577650775 + .word 2872388215 + .word 1577683671 + .word 2873469687 + .word 1577716567 + .word 2874551159 + .word 1577749463 + .word 2875632631 + .word 1577782359 + .word 2876714103 + + .word 33973543 + addi a2, a2, 16 + .word 33973671 + addi a2, a2, 16 + .word 33973799 + addi a2, a2, 16 + .word 33973927 + addi a2, a2, 16 + .word 33974055 + addi a2, a2, 16 + .word 33974183 + addi a2, a2, 16 + .word 33974311 + addi a2, a2, 16 + .word 33974439 + addi a2, a2, 16 + .word 33974567 + addi a2, a2, 16 + .word 33974695 + addi a2, a2, 16 + .word 33974823 + addi a2, a2, 16 + .word 33974951 + addi a2, a2, 16 + .word 33975079 + addi a2, a2, 16 + .word 33975207 + addi a2, a2, 16 + .word 33975335 + + li a0, 1 + ret +.size L_set_key_256,.-L_set_key_256 +.p2align 3 +.globl rv64i_zvkned_encrypt +.type rv64i_zvkned_encrypt,@function +rv64i_zvkned_encrypt: + # Load number of rounds + lwu t5, 240(a2) + + # Get proper routine for key size + li t6, 14 + beq t5, t6, L_enc_256 + li t6, 10 + beq t5, t6, L_enc_128 + li t6, 12 + beq t5, t6, L_enc_192 + + j L_fail_m2 +.size rv64i_zvkned_encrypt,.-rv64i_zvkned_encrypt +.p2align 3 +L_enc_128: + .word 3439489111 + + .word 33906823 + + .word 33973511 + .word 2795741431 # with round key w[ 0, 3] + addi a2, a2, 16 + .word 33973639 + .word 2796626167 # with round key w[ 4, 7] + addi a2, a2, 16 + .word 33973767 + .word 2797674743 # with round key w[ 8,11] + addi a2, a2, 16 + .word 33973895 + .word 2798723319 # with round key w[12,15] + addi a2, a2, 16 + .word 33974023 + .word 2799771895 # with round key w[16,19] + addi a2, a2, 16 + .word 33974151 + .word 2800820471 # with round key w[20,23] + addi a2, a2, 16 + .word 33974279 + .word 2801869047 # with round key w[24,27] + addi a2, a2, 16 + .word 33974407 + .word 2802917623 # with round key w[28,31] + addi a2, a2, 16 + .word 33974535 + .word 2803966199 # with round key w[32,35] + addi a2, a2, 16 + .word 33974663 + .word 2805014775 # with round key w[36,39] + addi a2, a2, 16 + .word 33974791 + .word 2806096119 # with round key w[40,43] + + .word 33939623 + + ret +.size L_enc_128,.-L_enc_128 +.p2align 3 +L_enc_192: + .word 3439489111 + + .word 33906823 + + .word 33973511 + .word 2795741431 # with round key w[ 0, 3] + addi a2, a2, 16 + .word 33973639 + .word 2796626167 + addi a2, a2, 16 + .word 33973767 + .word 2797674743 + addi a2, a2, 16 + .word 33973895 + .word 2798723319 + addi a2, a2, 16 + .word 33974023 + .word 2799771895 + addi a2, a2, 16 + .word 33974151 + .word 2800820471 + addi a2, a2, 16 + .word 33974279 + .word 2801869047 + addi a2, a2, 16 + .word 33974407 + .word 2802917623 + addi a2, a2, 16 + .word 33974535 + .word 2803966199 + addi a2, a2, 16 + .word 33974663 + .word 2805014775 + addi a2, a2, 16 + .word 33974791 + .word 2806063351 + addi a2, a2, 16 + .word 33974919 + .word 2807111927 + addi a2, a2, 16 + .word 33975047 + .word 2808193271 + + .word 33939623 + ret +.size L_enc_192,.-L_enc_192 +.p2align 3 +L_enc_256: + .word 3439489111 + + .word 33906823 + + .word 33973511 + .word 2795741431 # with round key w[ 0, 3] + addi a2, a2, 16 + .word 33973639 + .word 2796626167 + addi a2, a2, 16 + .word 33973767 + .word 2797674743 + addi a2, a2, 16 + .word 33973895 + .word 2798723319 + addi a2, a2, 16 + .word 33974023 + .word 2799771895 + addi a2, a2, 16 + .word 33974151 + .word 2800820471 + addi a2, a2, 16 + .word 33974279 + .word 2801869047 + addi a2, a2, 16 + .word 33974407 + .word 2802917623 + addi a2, a2, 16 + .word 33974535 + .word 2803966199 + addi a2, a2, 16 + .word 33974663 + .word 2805014775 + addi a2, a2, 16 + .word 33974791 + .word 2806063351 + addi a2, a2, 16 + .word 33974919 + .word 2807111927 + addi a2, a2, 16 + .word 33975047 + .word 2808160503 + addi a2, a2, 16 + .word 33975175 + .word 2809209079 + addi a2, a2, 16 + .word 33975303 + .word 2810290423 + + .word 33939623 + ret +.size L_enc_256,.-L_enc_256 +.p2align 3 +.globl rv64i_zvkned_decrypt +.type rv64i_zvkned_decrypt,@function +rv64i_zvkned_decrypt: + # Load number of rounds + lwu t5, 240(a2) + + # Get proper routine for key size + li t6, 14 + beq t5, t6, L_dec_256 + li t6, 10 + beq t5, t6, L_dec_128 + li t6, 12 + beq t5, t6, L_dec_192 + + j L_fail_m2 +.size rv64i_zvkned_decrypt,.-rv64i_zvkned_decrypt +.p2align 3 +L_dec_128: + .word 3439489111 + + .word 33906823 + + addi a2, a2, 160 + .word 33974791 + .word 2806227191 # with round key w[40,43] + addi a2, a2, -16 + .word 33974663 + .word 2804949239 # with round key w[36,39] + addi a2, a2, -16 + .word 33974535 + .word 2803900663 # with round key w[32,35] + addi a2, a2, -16 + .word 33974407 + .word 2802852087 # with round key w[28,31] + addi a2, a2, -16 + .word 33974279 + .word 2801803511 # with round key w[24,27] + addi a2, a2, -16 + .word 33974151 + .word 2800754935 # with round key w[20,23] + addi a2, a2, -16 + .word 33974023 + .word 2799706359 # with round key w[16,19] + addi a2, a2, -16 + .word 33973895 + .word 2798657783 # with round key w[12,15] + addi a2, a2, -16 + .word 33973767 + .word 2797609207 # with round key w[ 8,11] + addi a2, a2, -16 + .word 33973639 + .word 2796560631 # with round key w[ 4, 7] + addi a2, a2, -16 + .word 33973511 + .word 2795544823 # with round key w[ 0, 3] + + .word 33939623 + + ret +.size L_dec_128,.-L_dec_128 +.p2align 3 +L_dec_192: + .word 3439489111 + + .word 33906823 + + addi a2, a2, 192 + .word 33975047 + .word 2808324343 # with round key w[48,51] + addi a2, a2, -16 + .word 33974919 + .word 2807046391 # with round key w[44,47] + addi a2, a2, -16 + .word 33974791 + .word 2805997815 # with round key w[40,43] + addi a2, a2, -16 + .word 33974663 + .word 2804949239 # with round key w[36,39] + addi a2, a2, -16 + .word 33974535 + .word 2803900663 # with round key w[32,35] + addi a2, a2, -16 + .word 33974407 + .word 2802852087 # with round key w[28,31] + addi a2, a2, -16 + .word 33974279 + .word 2801803511 # with round key w[24,27] + addi a2, a2, -16 + .word 33974151 + .word 2800754935 # with round key w[20,23] + addi a2, a2, -16 + .word 33974023 + .word 2799706359 # with round key w[16,19] + addi a2, a2, -16 + .word 33973895 + .word 2798657783 # with round key w[12,15] + addi a2, a2, -16 + .word 33973767 + .word 2797609207 # with round key w[ 8,11] + addi a2, a2, -16 + .word 33973639 + .word 2796560631 # with round key w[ 4, 7] + addi a2, a2, -16 + .word 33973511 + .word 2795544823 # with round key w[ 0, 3] + + .word 33939623 + + ret +.size L_dec_192,.-L_dec_192 +.p2align 3 +L_dec_256: + .word 3439489111 + + .word 33906823 + + addi a2, a2, 224 + .word 33975303 + .word 2810421495 # with round key w[56,59] + addi a2, a2, -16 + .word 33975175 + .word 2809143543 # with round key w[52,55] + addi a2, a2, -16 + .word 33975047 + .word 2808094967 # with round key w[48,51] + addi a2, a2, -16 + .word 33974919 + .word 2807046391 # with round key w[44,47] + addi a2, a2, -16 + .word 33974791 + .word 2805997815 # with round key w[40,43] + addi a2, a2, -16 + .word 33974663 + .word 2804949239 # with round key w[36,39] + addi a2, a2, -16 + .word 33974535 + .word 2803900663 # with round key w[32,35] + addi a2, a2, -16 + .word 33974407 + .word 2802852087 # with round key w[28,31] + addi a2, a2, -16 + .word 33974279 + .word 2801803511 # with round key w[24,27] + addi a2, a2, -16 + .word 33974151 + .word 2800754935 # with round key w[20,23] + addi a2, a2, -16 + .word 33974023 + .word 2799706359 # with round key w[16,19] + addi a2, a2, -16 + .word 33973895 + .word 2798657783 # with round key w[12,15] + addi a2, a2, -16 + .word 33973767 + .word 2797609207 # with round key w[ 8,11] + addi a2, a2, -16 + .word 33973639 + .word 2796560631 # with round key w[ 4, 7] + addi a2, a2, -16 + .word 33973511 + .word 2795544823 # with round key w[ 0, 3] + + .word 33939623 + + ret +.size L_dec_256,.-L_dec_256 +L_fail_m2: + li a0, -2 + ret +.size L_fail_m2,.-L_fail_m2 + +L_end: + ret +.size L_end,.-L_end diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64.s b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64.s new file mode 100644 index 00000000000000..4901849dff58c5 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64.s @@ -0,0 +1,1871 @@ +.text +.balign 16 +.globl AES_encrypt +.type AES_encrypt,@function +AES_encrypt: + addi sp,sp,-96 + sd x8,88(sp) + sd x9,80(sp) + sd x18,72(sp) + sd x19,64(sp) + sd x20,56(sp) + sd x21,48(sp) + sd x22,40(sp) + sd x23,32(sp) + sd x24,24(sp) + sd x25,16(sp) + sd x26,8(sp) + sd x27,0(sp) + + # Load input to block cipher + ld x6,0(x10) + ld x8,8(x10) + + + # Load key + ld x13,0(x12) + ld x15,8(x12) + + + # Load number of rounds + lwu x30,240(x12) + + # Load address of substitution table and wrap-around mask + la x31,AES_Te0 + li x5,~0xFFF + + # y = n xor k, stored in Q0-Q3 + + xor x6,x6,x13 + xor x8,x8,x15 + srli x7,x6,32 + srli x9,x8,32 + + # The main loop only executes the first N-1 rounds. + add x30,x30,-1 + + # Do Nr - 1 rounds (final round is special) + +1: + + slli x13,x6,0+2 + slli x14,x7,0+2 + slli x15,x8,0+2 + slli x16,x9,0+2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x17,0(x29) + add x29,x31,x14 + lwu x18,0(x29) + add x29,x31,x15 + lwu x19,0(x29) + add x29,x31,x16 + lwu x20,0(x29) + + add x31,x31,1024 + + srli x13,x7,8-2 + srli x14,x8,8-2 + srli x15,x9,8-2 + srli x16,x6,8-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x21,0(x29) + add x29,x31,x14 + lwu x22,0(x29) + add x29,x31,x15 + lwu x23,0(x29) + add x29,x31,x16 + lwu x24,0(x29) + + add x31,x31,1024 + + srli x13,x8,16-2 + srli x14,x9,16-2 + srli x15,x6,16-2 + srli x16,x7,16-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x25,0(x29) + add x29,x31,x14 + lwu x26,0(x29) + add x29,x31,x15 + lwu x27,0(x29) + add x29,x31,x16 + lwu x28,0(x29) + + add x31,x31,1024 + + srli x13,x9,24-2 + srli x14,x6,24-2 + srli x15,x7,24-2 + srli x16,x8,24-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x13,0(x29) + add x29,x31,x14 + lwu x14,0(x29) + add x29,x31,x15 + lwu x15,0(x29) + add x29,x31,x16 + lwu x16,0(x29) + + + # Combine table lookups + xor x17,x17,x21 + xor x18,x18,x22 + xor x19,x19,x23 + xor x20,x20,x24 + + xor x17,x17,x25 + xor x18,x18,x26 + xor x19,x19,x27 + xor x20,x20,x28 + + xor x13,x13,x17 + xor x14,x14,x18 + xor x15,x15,x19 + xor x16,x16,x20 + + # Update key ptr to point to next key in schedule + add x12,x12,16 + + # Grab next key in schedule + ld x17,0(x12) + ld x19,8(x12) + + # Round TBL back to 4k boundary + and x31,x31,x5 + + add x30,x30,-1 + + xor x6,x13,x17 + xor x8,x15,x19 + srli x18,x17,32 + xor x7,x14,x18 + srli x20,x19,32 + xor x9,x16,x20 + + bgtz x30,1b + +#================================FINAL ROUND==================================== + +# In the final round, all lookup table accesses would appear as follows: +# +# ... compute index I0 +# add I0,TBL,T0 +# lbu T0,1(I0) +# +# Instead of indexing with a 1 offset, we can add 1 to the TBL pointer, and use +# a 0 offset when indexing in the following code. This enables some instruction +# fusion opportunities. + + add x31,x31,1 + + ld x30,16(x12) + ld x12,24(x12) + + slli x13,x6,0+2 + slli x14,x7,0+2 + slli x15,x8,0+2 + slli x16,x9,0+2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lbu x17,0(x29) + add x29,x31,x14 + lbu x18,0(x29) + add x29,x31,x15 + lbu x19,0(x29) + add x29,x31,x16 + lbu x20,0(x29) + + + srli x13,x7,8-2 + srli x14,x8,8-2 + srli x15,x9,8-2 + srli x16,x6,8-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lbu x21,0(x29) + add x29,x31,x14 + lbu x22,0(x29) + add x29,x31,x15 + lbu x23,0(x29) + add x29,x31,x16 + lbu x24,0(x29) + + + srli x13,x8,16-2 + srli x14,x9,16-2 + srli x15,x6,16-2 + srli x16,x7,16-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lbu x25,0(x29) + add x29,x31,x14 + lbu x26,0(x29) + add x29,x31,x15 + lbu x27,0(x29) + add x29,x31,x16 + lbu x28,0(x29) + + + srli x13,x9,24-2 + srli x14,x6,24-2 + srli x15,x7,24-2 + srli x16,x8,24-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lbu x13,0(x29) + add x29,x31,x14 + lbu x14,0(x29) + add x29,x31,x15 + lbu x15,0(x29) + add x29,x31,x16 + lbu x16,0(x29) + + + # Combine table lookups into T0 and T2 + + slli x18,x18,32 + slli x20,x20,32 + slli x21,x21,8 + slli x22,x22,8+32 + slli x23,x23,8 + slli x24,x24,8+32 + slli x25,x25,16 + slli x26,x26,16+32 + slli x27,x27,16 + slli x28,x28,16+32 + + slli x13,x13,24 + slli x14,x14,24+32 + slli x15,x15,24 + slli x16,x16,24+32 + + xor x17,x17,x13 + xor x18,x18,x14 + xor x19,x19,x15 + xor x20,x20,x16 + + xor x21,x21,x25 + xor x22,x22,x26 + xor x23,x23,x27 + xor x24,x24,x28 + + xor x13,x17,x21 + xor x14,x18,x22 + xor x15,x19,x23 + xor x16,x20,x24 + + + xor x13,x13,x14 + # T0 = [T1 T13 T9 T5 T0 T12 T8 T4] + xor x13,x13,x30 # XOR in key + + xor x15,x15,x16 + # T2 = [T3 T15 T11 T7 T2 T14 T10 T6] + xor x15,x15,x12 # XOR in key + + sd x13,0(x11) + sd x15,8(x11) + + # Pop registers and return +2: + ld x8,88(sp) + ld x9,80(sp) + ld x18,72(sp) + ld x19,64(sp) + ld x20,56(sp) + ld x21,48(sp) + ld x22,40(sp) + ld x23,32(sp) + ld x24,24(sp) + ld x25,16(sp) + ld x26,8(sp) + ld x27,0(sp) + addi sp,sp,96 + ret +.text +.balign 16 +.globl AES_decrypt +.type AES_decrypt,@function +AES_decrypt: + addi sp,sp,-96 + sd x8,88(sp) + sd x9,80(sp) + sd x18,72(sp) + sd x19,64(sp) + sd x20,56(sp) + sd x21,48(sp) + sd x22,40(sp) + sd x23,32(sp) + sd x24,24(sp) + sd x25,16(sp) + sd x26,8(sp) + sd x27,0(sp) + + # Load input to block cipher + ld x6,0(x10) + ld x8,8(x10) + + # Load key + # Note that key is assumed in BE byte order + # (This routine was written against a key scheduling implementation that + # placed keys in BE byte order.) + ld x13,0(x12) + ld x15,8(x12) + + # Load number of rounds + lwu x30,240(x12) + + # Load address of substitution table and wrap-around mask + la x31,AES_Td0 + li x5,~0xFFF + + xor x6,x6,x13 + xor x8,x8,x15 + srli x7,x6,32 + srli x9,x8,32 + + # The main loop only executes the first N-1 rounds. + add x30,x30,-1 + + # Do Nr - 1 rounds (final round is special) +1: + + slli x13,x6,0+2 + slli x14,x7,0+2 + slli x15,x8,0+2 + slli x16,x9,0+2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x17,0(x29) + add x29,x31,x14 + lwu x18,0(x29) + add x29,x31,x15 + lwu x19,0(x29) + add x29,x31,x16 + lwu x20,0(x29) + + add x31,x31,1024 + + srli x13,x9,8-2 + srli x14,x6,8-2 + srli x15,x7,8-2 + srli x16,x8,8-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x21,0(x29) + add x29,x31,x14 + lwu x22,0(x29) + add x29,x31,x15 + lwu x23,0(x29) + add x29,x31,x16 + lwu x24,0(x29) + + add x31,x31,1024 + + srli x13,x8,16-2 + srli x14,x9,16-2 + srli x15,x6,16-2 + srli x16,x7,16-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x25,0(x29) + add x29,x31,x14 + lwu x26,0(x29) + add x29,x31,x15 + lwu x27,0(x29) + add x29,x31,x16 + lwu x28,0(x29) + + add x31,x31,1024 + + srli x13,x7,24-2 + srli x14,x8,24-2 + srli x15,x9,24-2 + srli x16,x6,24-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table. + add x29,x31,x13 + lwu x13,0(x29) + add x29,x31,x14 + lwu x14,0(x29) + add x29,x31,x15 + lwu x15,0(x29) + add x29,x31,x16 + lwu x16,0(x29) + + xor x17,x17,x21 + xor x18,x18,x22 + xor x19,x19,x23 + xor x20,x20,x24 + + xor x17,x17,x25 + xor x18,x18,x26 + xor x19,x19,x27 + xor x20,x20,x28 + + xor x13,x13,x17 + xor x14,x14,x18 + xor x15,x15,x19 + xor x16,x16,x20 + + # Update key ptr to point to next key in schedule + add x12,x12,16 + + # Grab next key in schedule + ld x17,0(x12) + ld x19,8(x12) + + # Round TBL back to 4k boundary + and x31,x31,x5 + + add x30,x30,-1 + + xor x6,x13,x17 + xor x8,x15,x19 + srli x18,x17,32 + xor x7,x14,x18 + srli x20,x19,32 + xor x9,x16,x20 + + bgtz x30,1b + +#================================FINAL ROUND==================================== + + la x31,AES_Td4 + + # K0,K1 are aliases for loopcntr,KEYP + # As these registers will no longer be used after these loads, reuse them + # to store the final key in the schedule. + ld x30,16(x12) + ld x12,24(x12) + srli x14,x9,8 + srli x15,x8,16 + srli x16,x7,24 + + andi x13,x6,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + add x29,x31,x13 + lbu x17,0(x29) + add x29,x31,x14 + lbu x18,0(x29) + add x29,x31,x15 + lbu x19,0(x29) + add x29,x31,x16 + lbu x20,0(x29) + + srli x14,x6,8 + srli x15,x9,16 + srli x16,x8,24 + + andi x13,x7,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + add x29,x31,x13 + lbu x21,0(x29) + add x29,x31,x14 + lbu x22,0(x29) + add x29,x31,x15 + lbu x23,0(x29) + add x29,x31,x16 + lbu x24,0(x29) + + srli x14,x7,8 + srli x15,x6,16 + srli x16,x9,24 + + andi x13,x8,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + add x29,x31,x13 + lbu x25,0(x29) + add x29,x31,x14 + lbu x26,0(x29) + add x29,x31,x15 + lbu x27,0(x29) + add x29,x31,x16 + lbu x28,0(x29) + + srli x14,x8,8 + srli x15,x7,16 + srli x16,x6,24 + + andi x13,x9,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + add x29,x31,x13 + lbu x13,0(x29) + add x29,x31,x14 + lbu x14,0(x29) + add x29,x31,x15 + lbu x15,0(x29) + add x29,x31,x16 + lbu x16,0(x29) + + + # T0-T15 now contain the decrypted block, minus xoring with the final round + # key. We pack T0-T15 into the two 64-bit registers T0 and T4, then xor + # in the key and store. + + slli x18,x18,8 + slli x19,x19,16 + slli x20,x20,24 + slli x21,x21,32 + slli x22,x22,8+32 + slli x23,x23,16+32 + slli x24,x24,32+24 + slli x26,x26,8 + slli x27,x27,16 + slli x28,x28,24 + slli x13,x13,32 + slli x14,x14,8+32 + slli x15,x15,16+32 + slli x16,x16,24+32 + + xor x17,x17,x18 + xor x19,x19,x20 + xor x21,x21,x22 + xor x23,x23,x24 + + xor x25,x25,x26 + xor x27,x27,x28 + xor x13,x13,x14 + xor x15,x15,x16 + + xor x17,x17,x19 + xor x21,x21,x23 + xor x25,x25,x27 + xor x13,x13,x15 + + xor x17,x17,x21 + # T4 = [T11 T10 T9 T8 T7 T6 T5 T4] + xor x17,x17,x30 # xor in key + + xor x13,x13,x25 + # T0 = [T3 T2 T1 T0 T15 T14 T13 T12] + xor x13,x13,x12 # xor in key + + sd x17,0(x11) + sd x13,8(x11) + + # Pop registers and return + ld x8,88(sp) + ld x9,80(sp) + ld x18,72(sp) + ld x19,64(sp) + ld x20,56(sp) + ld x21,48(sp) + ld x22,40(sp) + ld x23,32(sp) + ld x24,24(sp) + ld x25,16(sp) + ld x26,8(sp) + ld x27,0(sp) + addi sp,sp,96 + ret +.text +.balign 16 +.globl AES_set_encrypt_key +.type AES_set_encrypt_key,@function +AES_set_encrypt_key: + addi sp,sp,-48 + sd x8,32(sp) + sd x9,24(sp) + sd x18,16(sp) + sd x19,8(sp) + sd x20,0(sp) + beqz x10,1f # if (!userKey || !key) return -1; + beqz x12,1f + j 2f +1: + li a0,-1 + ret +2: + la x9,AES_rcon + la x20,AES_Te0 + li x28,128 + li x29,192 + li x30,256 + + # Determine number of rounds from key size in bits + bne x11,x28,1f + li x13,10 # key->rounds = 10 if bits == 128 + j 3f +1: + bne x11,x29,2f + li x13,12 # key->rounds = 12 if bits == 192 + j 3f +2: + li x13,14 # key->rounds = 14 if bits == 256 + beq x11,x30,3f + li a0,-2 # If bits != 128, 192, or 256, return -2 + j 5f +3: + ld x6,0(x10) + ld x8,8(x10) + + sw x13,240(x12) + + li x19,0 # == i*4 + + srli x7,x6,32 + srli x13,x8,32 + + sd x6,0(x12) + sd x8,8(x12) + + # if bits == 128 + # jump into loop + beq x11,x28,1f + + ld x14,16(x10) + srli x15,x14,32 + sd x14,16(x12) + + # if bits == 192 + # jump into loop + beq x11,x29,2f + + ld x16,24(x10) + srli x17,x16,32 + sd x16,24(x12) + + # bits == 256 + j 3f +1: + addi x12,x12,16 +1: + + # Round TBL back to 4k boundary + srli x20,x20,12 + slli x20,x20,12 + + # Offset by 1 byte, since Te0[x] = S[x].[03, 01, 01, 02] + # So that, later on, a 0-offset lbu yields S[x].01 == S[x] + addi x20,x20,1 + srli x14,x13,8-2 + srli x15,x13,16-2 + srli x16,x13,24-2 + slli x17,x13,2-0 + + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + andi x17,x17,0x3FC + + # Index into tables Te0-Te3 (spread access across tables to help bring + # them into cache for later) + + add x18,x20,x14 + lbu x14,0(x18) + + add x20,x20,1025 # yes, 1025 + add x18,x20,x15 + lbu x15,0(x18) + + add x20,x20,1025 + add x18,x20,x16 + lbu x16,0(x18) + + add x20,x20,1022 + add x18,x20,x17 + lbu x17,0(x18) + + slli x15,x15,8 + slli x16,x16,16 + slli x17,x17,24 + + xor x14,x14,x15 + xor x16,x16,x17 + xor x14,x14,x16 + add x15,x9,x19 # rcon[i] (i increments by 4 so it can double as + # a word offset) + lwu x15,0(x15) + + addi x19,x19,4 + li x18,10*4 + + xor x6,x6,x14 + xor x6,x6,x15 + xor x7,x7,x6 + xor x8,x8,x7 + xor x13,x13,x8 + + sw x6,0(x12) + sw x7,4(x12) + sw x8,8(x12) + sw x13,12(x12) + + addi x12,x12,16 + + + bne x19,x18,1b + j 4f +2: + addi x12,x12,24 +2: + + # Round TBL back to 4k boundary + srli x20,x20,12 + slli x20,x20,12 + + # Offset by 1 byte, since Te0[x] = S[x].[03, 01, 01, 02] + # So that, later on, a 0-offset lbu yields S[x].01 == S[x] + addi x20,x20,1 + srli x16,x15,8-2 + srli x17,x15,16-2 + srli x28,x15,24-2 + slli x29,x15,2-0 + + andi x16,x16,0x3FC + andi x17,x17,0x3FC + andi x28,x28,0x3FC + andi x29,x29,0x3FC + + # Index into tables Te0-Te3 (spread access across tables to help bring + # them into cache for later) + + add x18,x20,x16 + lbu x16,0(x18) + + add x20,x20,1025 # yes, 1025 + add x18,x20,x17 + lbu x17,0(x18) + + add x20,x20,1025 + add x18,x20,x28 + lbu x28,0(x18) + + add x20,x20,1022 + add x18,x20,x29 + lbu x29,0(x18) + + slli x17,x17,8 + slli x28,x28,16 + slli x29,x29,24 + + xor x16,x16,x17 + xor x28,x28,x29 + xor x16,x16,x28 + add x17,x9,x19 # rcon[i] (i increments by 4 so it can double as + # a word offset) + lwu x17,0(x17) + + addi x19,x19,4 + li x18,8*4 + + xor x6,x6,x16 + xor x6,x6,x17 + xor x7,x7,x6 + xor x8,x8,x7 + xor x13,x13,x8 + + sw x6,0(x12) + sw x7,4(x12) + sw x8,8(x12) + sw x13,12(x12) + + beq x19,x18,4f + + xor x14,x14,x13 + xor x15,x15,x14 + sw x14,16(x12) + sw x15,20(x12) + + addi x12,x12,24 + j 2b +3: + addi x12,x12,32 +3: + + # Round TBL back to 4k boundary + srli x20,x20,12 + slli x20,x20,12 + + # Offset by 1 byte, since Te0[x] = S[x].[03, 01, 01, 02] + # So that, later on, a 0-offset lbu yields S[x].01 == S[x] + addi x20,x20,1 + srli x28,x17,8-2 + srli x29,x17,16-2 + srli x30,x17,24-2 + slli x31,x17,2-0 + + andi x28,x28,0x3FC + andi x29,x29,0x3FC + andi x30,x30,0x3FC + andi x31,x31,0x3FC + + # Index into tables Te0-Te3 (spread access across tables to help bring + # them into cache for later) + + add x18,x20,x28 + lbu x28,0(x18) + + add x20,x20,1025 # yes, 1025 + add x18,x20,x29 + lbu x29,0(x18) + + add x20,x20,1025 + add x18,x20,x30 + lbu x30,0(x18) + + add x20,x20,1022 + add x18,x20,x31 + lbu x31,0(x18) + + slli x29,x29,8 + slli x30,x30,16 + slli x31,x31,24 + + xor x28,x28,x29 + xor x30,x30,x31 + xor x28,x28,x30 + add x29,x9,x19 # rcon[i] (i increments by 4 so it can double as + # a word offset) + lwu x29,0(x29) + + addi x19,x19,4 + li x18,7*4 + + xor x6,x6,x28 + xor x6,x6,x29 + xor x7,x7,x6 + xor x8,x8,x7 + xor x13,x13,x8 + + sw x6,0(x12) + sw x7,4(x12) + sw x8,8(x12) + sw x13,12(x12) + + beq x19,x18,4f + + # Round TBL back to 4k boundary + srli x20,x20,12 + slli x20,x20,12 + + # Offset by 1 byte, since Te0[x] = S[x].[03, 01, 01, 02] + # So that, later on, a 0-offset lbu yields S[x].01 == S[x] + addi x20,x20,1 + slli x28,x13,2-0 + srli x29,x13,8-2 + srli x30,x13,16-2 + srli x31,x13,24-2 + + andi x28,x28,0x3FC + andi x29,x29,0x3FC + andi x30,x30,0x3FC + andi x31,x31,0x3FC + + # Index into tables Te0-Te3 (spread access across tables to help bring + # them into cache for later) + + add x18,x20,x28 + lbu x28,0(x18) + + add x20,x20,1025 # yes, 1025 + add x18,x20,x29 + lbu x29,0(x18) + + add x20,x20,1025 + add x18,x20,x30 + lbu x30,0(x18) + + add x20,x20,1022 + add x18,x20,x31 + lbu x31,0(x18) + + slli x29,x29,8 + slli x30,x30,16 + slli x31,x31,24 + + xor x28,x28,x29 + xor x30,x30,x31 + xor x28,x28,x30 + xor x14,x14,x28 + xor x15,x15,x14 + xor x16,x16,x15 + xor x17,x17,x16 + sw x14,16(x12) + sw x15,20(x12) + sw x16,24(x12) + sw x17,28(x12) + + addi x12,x12,32 + j 3b + +4: # return 0 + li a0,0 +5: # return a0 + ld x8,32(sp) + ld x9,24(sp) + ld x18,16(sp) + ld x19,8(sp) + ld x20,0(sp) + addi sp,sp,48 + ret +.text +.balign 16 +.globl AES_set_decrypt_key +.type AES_set_decrypt_key,@function +AES_set_decrypt_key: + # Call AES_set_encrypt_key first + addi sp,sp,-16 + sd x12,0(sp) # We need to hold onto this! + sd ra,8(sp) + jal ra,AES_set_encrypt_key + ld x12,0(sp) + ld ra,8(sp) + addi sp,sp,16 + bgez a0,1f # If error, return error + ret +1: + addi sp,sp,-48 + sd x8,40(sp) + sd x9,32(sp) + sd x18,24(sp) + sd x19,16(sp) + sd x20,8(sp) + sd x21,0(sp) + + li x13,0 + lwu x17,240(x12) + slli x14,x17,4 + # Invert order of round keys +1: + add x19,x12,x13 + ld x6,0(x19) + ld x7,8(x19) + add x18,x12,x14 + ld x8,0(x18) + ld x9,8(x18) + addi x13,x13,16 + addi x14,x14,-16 + sd x6,0(x18) + sd x7,8(x18) + sd x8,0(x19) + sd x9,8(x19) + blt x13,x14,1b + + li x20,1 + +1: + addi x12,x12,16 + lwu x6,0(x12) + lwu x7,4(x12) + lwu x8,8(x12) + lwu x9,12(x12) + + la x21,AES_Te2 + + slli x13,x6,2 + srli x14,x6,8-2 + srli x15,x6,16-2 + srli x16,x6,24-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table Te2 + + add x19,x21,x13 + lwu x13,0(x19) + + add x19,x21,x14 + lwu x14,0(x19) + + add x19,x21,x15 + lwu x15,0(x19) + + add x19,x21,x16 + lwu x16,0(x19) + + andi x13,x13,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + slli x13,x13,2 + slli x14,x14,2 + slli x15,x15,2 + slli x16,x16,2 + + la x21,AES_Td0 + + # Lookup in Td0-Td3 + + add x19,x21,x13 + lwu x13,0(x19) + + add x21,x21,1024 + add x19,x21,x14 + lwu x14,0(x19) + + add x21,x21,1024 + add x19,x21,x15 + lwu x15,0(x19) + + add x21,x21,1024 + add x19,x21,x16 + lwu x16,0(x19) + + xor x13,x13,x14 + xor x15,x15,x16 + xor x6,x13,x15 + + la x21,AES_Te2 + + slli x13,x7,2 + srli x14,x7,8-2 + srli x15,x7,16-2 + srli x16,x7,24-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table Te2 + + add x19,x21,x13 + lwu x13,0(x19) + + add x19,x21,x14 + lwu x14,0(x19) + + add x19,x21,x15 + lwu x15,0(x19) + + add x19,x21,x16 + lwu x16,0(x19) + + andi x13,x13,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + slli x13,x13,2 + slli x14,x14,2 + slli x15,x15,2 + slli x16,x16,2 + + la x21,AES_Td0 + + # Lookup in Td0-Td3 + + add x19,x21,x13 + lwu x13,0(x19) + + add x21,x21,1024 + add x19,x21,x14 + lwu x14,0(x19) + + add x21,x21,1024 + add x19,x21,x15 + lwu x15,0(x19) + + add x21,x21,1024 + add x19,x21,x16 + lwu x16,0(x19) + + xor x13,x13,x14 + xor x15,x15,x16 + xor x7,x13,x15 + + la x21,AES_Te2 + + slli x13,x8,2 + srli x14,x8,8-2 + srli x15,x8,16-2 + srli x16,x8,24-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table Te2 + + add x19,x21,x13 + lwu x13,0(x19) + + add x19,x21,x14 + lwu x14,0(x19) + + add x19,x21,x15 + lwu x15,0(x19) + + add x19,x21,x16 + lwu x16,0(x19) + + andi x13,x13,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + slli x13,x13,2 + slli x14,x14,2 + slli x15,x15,2 + slli x16,x16,2 + + la x21,AES_Td0 + + # Lookup in Td0-Td3 + + add x19,x21,x13 + lwu x13,0(x19) + + add x21,x21,1024 + add x19,x21,x14 + lwu x14,0(x19) + + add x21,x21,1024 + add x19,x21,x15 + lwu x15,0(x19) + + add x21,x21,1024 + add x19,x21,x16 + lwu x16,0(x19) + + xor x13,x13,x14 + xor x15,x15,x16 + xor x8,x13,x15 + + la x21,AES_Te2 + + slli x13,x9,2 + srli x14,x9,8-2 + srli x15,x9,16-2 + srli x16,x9,24-2 + + andi x13,x13,0x3FC + andi x14,x14,0x3FC + andi x15,x15,0x3FC + andi x16,x16,0x3FC + + # Index into table Te2 + + add x19,x21,x13 + lwu x13,0(x19) + + add x19,x21,x14 + lwu x14,0(x19) + + add x19,x21,x15 + lwu x15,0(x19) + + add x19,x21,x16 + lwu x16,0(x19) + + andi x13,x13,0xFF + andi x14,x14,0xFF + andi x15,x15,0xFF + andi x16,x16,0xFF + + slli x13,x13,2 + slli x14,x14,2 + slli x15,x15,2 + slli x16,x16,2 + + la x21,AES_Td0 + + # Lookup in Td0-Td3 + + add x19,x21,x13 + lwu x13,0(x19) + + add x21,x21,1024 + add x19,x21,x14 + lwu x14,0(x19) + + add x21,x21,1024 + add x19,x21,x15 + lwu x15,0(x19) + + add x21,x21,1024 + add x19,x21,x16 + lwu x16,0(x19) + + xor x13,x13,x14 + xor x15,x15,x16 + xor x9,x13,x15 + sw x6,0(x12) + sw x7,4(x12) + sw x8,8(x12) + sw x9,12(x12) + addi x20,x20,1 + blt x20,x17,1b + ld x8,40(sp) + ld x9,32(sp) + ld x18,24(sp) + ld x19,16(sp) + ld x20,8(sp) + ld x21,0(sp) + addi sp,sp,48 + li a0,0 + ret + +.section .rodata +.p2align 12 +.type AES_Te0,@object +AES_Te0: +.word 0xa56363c6U, 0x847c7cf8U, 0x997777eeU, 0x8d7b7bf6U +.word 0x0df2f2ffU, 0xbd6b6bd6U, 0xb16f6fdeU, 0x54c5c591U +.word 0x50303060U, 0x03010102U, 0xa96767ceU, 0x7d2b2b56U +.word 0x19fefee7U, 0x62d7d7b5U, 0xe6abab4dU, 0x9a7676ecU +.word 0x45caca8fU, 0x9d82821fU, 0x40c9c989U, 0x877d7dfaU +.word 0x15fafaefU, 0xeb5959b2U, 0xc947478eU, 0x0bf0f0fbU +.word 0xecadad41U, 0x67d4d4b3U, 0xfda2a25fU, 0xeaafaf45U +.word 0xbf9c9c23U, 0xf7a4a453U, 0x967272e4U, 0x5bc0c09bU +.word 0xc2b7b775U, 0x1cfdfde1U, 0xae93933dU, 0x6a26264cU +.word 0x5a36366cU, 0x413f3f7eU, 0x02f7f7f5U, 0x4fcccc83U +.word 0x5c343468U, 0xf4a5a551U, 0x34e5e5d1U, 0x08f1f1f9U +.word 0x937171e2U, 0x73d8d8abU, 0x53313162U, 0x3f15152aU +.word 0x0c040408U, 0x52c7c795U, 0x65232346U, 0x5ec3c39dU +.word 0x28181830U, 0xa1969637U, 0x0f05050aU, 0xb59a9a2fU +.word 0x0907070eU, 0x36121224U, 0x9b80801bU, 0x3de2e2dfU +.word 0x26ebebcdU, 0x6927274eU, 0xcdb2b27fU, 0x9f7575eaU +.word 0x1b090912U, 0x9e83831dU, 0x742c2c58U, 0x2e1a1a34U +.word 0x2d1b1b36U, 0xb26e6edcU, 0xee5a5ab4U, 0xfba0a05bU +.word 0xf65252a4U, 0x4d3b3b76U, 0x61d6d6b7U, 0xceb3b37dU +.word 0x7b292952U, 0x3ee3e3ddU, 0x712f2f5eU, 0x97848413U +.word 0xf55353a6U, 0x68d1d1b9U, 0x00000000U, 0x2cededc1U +.word 0x60202040U, 0x1ffcfce3U, 0xc8b1b179U, 0xed5b5bb6U +.word 0xbe6a6ad4U, 0x46cbcb8dU, 0xd9bebe67U, 0x4b393972U +.word 0xde4a4a94U, 0xd44c4c98U, 0xe85858b0U, 0x4acfcf85U +.word 0x6bd0d0bbU, 0x2aefefc5U, 0xe5aaaa4fU, 0x16fbfbedU +.word 0xc5434386U, 0xd74d4d9aU, 0x55333366U, 0x94858511U +.word 0xcf45458aU, 0x10f9f9e9U, 0x06020204U, 0x817f7ffeU +.word 0xf05050a0U, 0x443c3c78U, 0xba9f9f25U, 0xe3a8a84bU +.word 0xf35151a2U, 0xfea3a35dU, 0xc0404080U, 0x8a8f8f05U +.word 0xad92923fU, 0xbc9d9d21U, 0x48383870U, 0x04f5f5f1U +.word 0xdfbcbc63U, 0xc1b6b677U, 0x75dadaafU, 0x63212142U +.word 0x30101020U, 0x1affffe5U, 0x0ef3f3fdU, 0x6dd2d2bfU +.word 0x4ccdcd81U, 0x140c0c18U, 0x35131326U, 0x2fececc3U +.word 0xe15f5fbeU, 0xa2979735U, 0xcc444488U, 0x3917172eU +.word 0x57c4c493U, 0xf2a7a755U, 0x827e7efcU, 0x473d3d7aU +.word 0xac6464c8U, 0xe75d5dbaU, 0x2b191932U, 0x957373e6U +.word 0xa06060c0U, 0x98818119U, 0xd14f4f9eU, 0x7fdcdca3U +.word 0x66222244U, 0x7e2a2a54U, 0xab90903bU, 0x8388880bU +.word 0xca46468cU, 0x29eeeec7U, 0xd3b8b86bU, 0x3c141428U +.word 0x79dedea7U, 0xe25e5ebcU, 0x1d0b0b16U, 0x76dbdbadU +.word 0x3be0e0dbU, 0x56323264U, 0x4e3a3a74U, 0x1e0a0a14U +.word 0xdb494992U, 0x0a06060cU, 0x6c242448U, 0xe45c5cb8U +.word 0x5dc2c29fU, 0x6ed3d3bdU, 0xefacac43U, 0xa66262c4U +.word 0xa8919139U, 0xa4959531U, 0x37e4e4d3U, 0x8b7979f2U +.word 0x32e7e7d5U, 0x43c8c88bU, 0x5937376eU, 0xb76d6ddaU +.word 0x8c8d8d01U, 0x64d5d5b1U, 0xd24e4e9cU, 0xe0a9a949U +.word 0xb46c6cd8U, 0xfa5656acU, 0x07f4f4f3U, 0x25eaeacfU +.word 0xaf6565caU, 0x8e7a7af4U, 0xe9aeae47U, 0x18080810U +.word 0xd5baba6fU, 0x887878f0U, 0x6f25254aU, 0x722e2e5cU +.word 0x241c1c38U, 0xf1a6a657U, 0xc7b4b473U, 0x51c6c697U +.word 0x23e8e8cbU, 0x7cdddda1U, 0x9c7474e8U, 0x211f1f3eU +.word 0xdd4b4b96U, 0xdcbdbd61U, 0x868b8b0dU, 0x858a8a0fU +.word 0x907070e0U, 0x423e3e7cU, 0xc4b5b571U, 0xaa6666ccU +.word 0xd8484890U, 0x05030306U, 0x01f6f6f7U, 0x120e0e1cU +.word 0xa36161c2U, 0x5f35356aU, 0xf95757aeU, 0xd0b9b969U +.word 0x91868617U, 0x58c1c199U, 0x271d1d3aU, 0xb99e9e27U +.word 0x38e1e1d9U, 0x13f8f8ebU, 0xb398982bU, 0x33111122U +.word 0xbb6969d2U, 0x70d9d9a9U, 0x898e8e07U, 0xa7949433U +.word 0xb69b9b2dU, 0x221e1e3cU, 0x92878715U, 0x20e9e9c9U +.word 0x49cece87U, 0xff5555aaU, 0x78282850U, 0x7adfdfa5U +.word 0x8f8c8c03U, 0xf8a1a159U, 0x80898909U, 0x170d0d1aU +.word 0xdabfbf65U, 0x31e6e6d7U, 0xc6424284U, 0xb86868d0U +.word 0xc3414182U, 0xb0999929U, 0x772d2d5aU, 0x110f0f1eU +.word 0xcbb0b07bU, 0xfc5454a8U, 0xd6bbbb6dU, 0x3a16162cU + +.type AES_Te1,@object +AES_Te1: +.word 0x6363c6a5U, 0x7c7cf884U, 0x7777ee99U, 0x7b7bf68dU +.word 0xf2f2ff0dU, 0x6b6bd6bdU, 0x6f6fdeb1U, 0xc5c59154U +.word 0x30306050U, 0x01010203U, 0x6767cea9U, 0x2b2b567dU +.word 0xfefee719U, 0xd7d7b562U, 0xabab4de6U, 0x7676ec9aU +.word 0xcaca8f45U, 0x82821f9dU, 0xc9c98940U, 0x7d7dfa87U +.word 0xfafaef15U, 0x5959b2ebU, 0x47478ec9U, 0xf0f0fb0bU +.word 0xadad41ecU, 0xd4d4b367U, 0xa2a25ffdU, 0xafaf45eaU +.word 0x9c9c23bfU, 0xa4a453f7U, 0x7272e496U, 0xc0c09b5bU +.word 0xb7b775c2U, 0xfdfde11cU, 0x93933daeU, 0x26264c6aU +.word 0x36366c5aU, 0x3f3f7e41U, 0xf7f7f502U, 0xcccc834fU +.word 0x3434685cU, 0xa5a551f4U, 0xe5e5d134U, 0xf1f1f908U +.word 0x7171e293U, 0xd8d8ab73U, 0x31316253U, 0x15152a3fU +.word 0x0404080cU, 0xc7c79552U, 0x23234665U, 0xc3c39d5eU +.word 0x18183028U, 0x969637a1U, 0x05050a0fU, 0x9a9a2fb5U +.word 0x07070e09U, 0x12122436U, 0x80801b9bU, 0xe2e2df3dU +.word 0xebebcd26U, 0x27274e69U, 0xb2b27fcdU, 0x7575ea9fU +.word 0x0909121bU, 0x83831d9eU, 0x2c2c5874U, 0x1a1a342eU +.word 0x1b1b362dU, 0x6e6edcb2U, 0x5a5ab4eeU, 0xa0a05bfbU +.word 0x5252a4f6U, 0x3b3b764dU, 0xd6d6b761U, 0xb3b37dceU +.word 0x2929527bU, 0xe3e3dd3eU, 0x2f2f5e71U, 0x84841397U +.word 0x5353a6f5U, 0xd1d1b968U, 0x00000000U, 0xededc12cU +.word 0x20204060U, 0xfcfce31fU, 0xb1b179c8U, 0x5b5bb6edU +.word 0x6a6ad4beU, 0xcbcb8d46U, 0xbebe67d9U, 0x3939724bU +.word 0x4a4a94deU, 0x4c4c98d4U, 0x5858b0e8U, 0xcfcf854aU +.word 0xd0d0bb6bU, 0xefefc52aU, 0xaaaa4fe5U, 0xfbfbed16U +.word 0x434386c5U, 0x4d4d9ad7U, 0x33336655U, 0x85851194U +.word 0x45458acfU, 0xf9f9e910U, 0x02020406U, 0x7f7ffe81U +.word 0x5050a0f0U, 0x3c3c7844U, 0x9f9f25baU, 0xa8a84be3U +.word 0x5151a2f3U, 0xa3a35dfeU, 0x404080c0U, 0x8f8f058aU +.word 0x92923fadU, 0x9d9d21bcU, 0x38387048U, 0xf5f5f104U +.word 0xbcbc63dfU, 0xb6b677c1U, 0xdadaaf75U, 0x21214263U +.word 0x10102030U, 0xffffe51aU, 0xf3f3fd0eU, 0xd2d2bf6dU +.word 0xcdcd814cU, 0x0c0c1814U, 0x13132635U, 0xececc32fU +.word 0x5f5fbee1U, 0x979735a2U, 0x444488ccU, 0x17172e39U +.word 0xc4c49357U, 0xa7a755f2U, 0x7e7efc82U, 0x3d3d7a47U +.word 0x6464c8acU, 0x5d5dbae7U, 0x1919322bU, 0x7373e695U +.word 0x6060c0a0U, 0x81811998U, 0x4f4f9ed1U, 0xdcdca37fU +.word 0x22224466U, 0x2a2a547eU, 0x90903babU, 0x88880b83U +.word 0x46468ccaU, 0xeeeec729U, 0xb8b86bd3U, 0x1414283cU +.word 0xdedea779U, 0x5e5ebce2U, 0x0b0b161dU, 0xdbdbad76U +.word 0xe0e0db3bU, 0x32326456U, 0x3a3a744eU, 0x0a0a141eU +.word 0x494992dbU, 0x06060c0aU, 0x2424486cU, 0x5c5cb8e4U +.word 0xc2c29f5dU, 0xd3d3bd6eU, 0xacac43efU, 0x6262c4a6U +.word 0x919139a8U, 0x959531a4U, 0xe4e4d337U, 0x7979f28bU +.word 0xe7e7d532U, 0xc8c88b43U, 0x37376e59U, 0x6d6ddab7U +.word 0x8d8d018cU, 0xd5d5b164U, 0x4e4e9cd2U, 0xa9a949e0U +.word 0x6c6cd8b4U, 0x5656acfaU, 0xf4f4f307U, 0xeaeacf25U +.word 0x6565caafU, 0x7a7af48eU, 0xaeae47e9U, 0x08081018U +.word 0xbaba6fd5U, 0x7878f088U, 0x25254a6fU, 0x2e2e5c72U +.word 0x1c1c3824U, 0xa6a657f1U, 0xb4b473c7U, 0xc6c69751U +.word 0xe8e8cb23U, 0xdddda17cU, 0x7474e89cU, 0x1f1f3e21U +.word 0x4b4b96ddU, 0xbdbd61dcU, 0x8b8b0d86U, 0x8a8a0f85U +.word 0x7070e090U, 0x3e3e7c42U, 0xb5b571c4U, 0x6666ccaaU +.word 0x484890d8U, 0x03030605U, 0xf6f6f701U, 0x0e0e1c12U +.word 0x6161c2a3U, 0x35356a5fU, 0x5757aef9U, 0xb9b969d0U +.word 0x86861791U, 0xc1c19958U, 0x1d1d3a27U, 0x9e9e27b9U +.word 0xe1e1d938U, 0xf8f8eb13U, 0x98982bb3U, 0x11112233U +.word 0x6969d2bbU, 0xd9d9a970U, 0x8e8e0789U, 0x949433a7U +.word 0x9b9b2db6U, 0x1e1e3c22U, 0x87871592U, 0xe9e9c920U +.word 0xcece8749U, 0x5555aaffU, 0x28285078U, 0xdfdfa57aU +.word 0x8c8c038fU, 0xa1a159f8U, 0x89890980U, 0x0d0d1a17U +.word 0xbfbf65daU, 0xe6e6d731U, 0x424284c6U, 0x6868d0b8U +.word 0x414182c3U, 0x999929b0U, 0x2d2d5a77U, 0x0f0f1e11U +.word 0xb0b07bcbU, 0x5454a8fcU, 0xbbbb6dd6U, 0x16162c3aU + +.type AES_Te2,@object +AES_Te2: +.word 0x63c6a563U, 0x7cf8847cU, 0x77ee9977U, 0x7bf68d7bU +.word 0xf2ff0df2U, 0x6bd6bd6bU, 0x6fdeb16fU, 0xc59154c5U +.word 0x30605030U, 0x01020301U, 0x67cea967U, 0x2b567d2bU +.word 0xfee719feU, 0xd7b562d7U, 0xab4de6abU, 0x76ec9a76U +.word 0xca8f45caU, 0x821f9d82U, 0xc98940c9U, 0x7dfa877dU +.word 0xfaef15faU, 0x59b2eb59U, 0x478ec947U, 0xf0fb0bf0U +.word 0xad41ecadU, 0xd4b367d4U, 0xa25ffda2U, 0xaf45eaafU +.word 0x9c23bf9cU, 0xa453f7a4U, 0x72e49672U, 0xc09b5bc0U +.word 0xb775c2b7U, 0xfde11cfdU, 0x933dae93U, 0x264c6a26U +.word 0x366c5a36U, 0x3f7e413fU, 0xf7f502f7U, 0xcc834fccU +.word 0x34685c34U, 0xa551f4a5U, 0xe5d134e5U, 0xf1f908f1U +.word 0x71e29371U, 0xd8ab73d8U, 0x31625331U, 0x152a3f15U +.word 0x04080c04U, 0xc79552c7U, 0x23466523U, 0xc39d5ec3U +.word 0x18302818U, 0x9637a196U, 0x050a0f05U, 0x9a2fb59aU +.word 0x070e0907U, 0x12243612U, 0x801b9b80U, 0xe2df3de2U +.word 0xebcd26ebU, 0x274e6927U, 0xb27fcdb2U, 0x75ea9f75U +.word 0x09121b09U, 0x831d9e83U, 0x2c58742cU, 0x1a342e1aU +.word 0x1b362d1bU, 0x6edcb26eU, 0x5ab4ee5aU, 0xa05bfba0U +.word 0x52a4f652U, 0x3b764d3bU, 0xd6b761d6U, 0xb37dceb3U +.word 0x29527b29U, 0xe3dd3ee3U, 0x2f5e712fU, 0x84139784U +.word 0x53a6f553U, 0xd1b968d1U, 0x00000000U, 0xedc12cedU +.word 0x20406020U, 0xfce31ffcU, 0xb179c8b1U, 0x5bb6ed5bU +.word 0x6ad4be6aU, 0xcb8d46cbU, 0xbe67d9beU, 0x39724b39U +.word 0x4a94de4aU, 0x4c98d44cU, 0x58b0e858U, 0xcf854acfU +.word 0xd0bb6bd0U, 0xefc52aefU, 0xaa4fe5aaU, 0xfbed16fbU +.word 0x4386c543U, 0x4d9ad74dU, 0x33665533U, 0x85119485U +.word 0x458acf45U, 0xf9e910f9U, 0x02040602U, 0x7ffe817fU +.word 0x50a0f050U, 0x3c78443cU, 0x9f25ba9fU, 0xa84be3a8U +.word 0x51a2f351U, 0xa35dfea3U, 0x4080c040U, 0x8f058a8fU +.word 0x923fad92U, 0x9d21bc9dU, 0x38704838U, 0xf5f104f5U +.word 0xbc63dfbcU, 0xb677c1b6U, 0xdaaf75daU, 0x21426321U +.word 0x10203010U, 0xffe51affU, 0xf3fd0ef3U, 0xd2bf6dd2U +.word 0xcd814ccdU, 0x0c18140cU, 0x13263513U, 0xecc32fecU +.word 0x5fbee15fU, 0x9735a297U, 0x4488cc44U, 0x172e3917U +.word 0xc49357c4U, 0xa755f2a7U, 0x7efc827eU, 0x3d7a473dU +.word 0x64c8ac64U, 0x5dbae75dU, 0x19322b19U, 0x73e69573U +.word 0x60c0a060U, 0x81199881U, 0x4f9ed14fU, 0xdca37fdcU +.word 0x22446622U, 0x2a547e2aU, 0x903bab90U, 0x880b8388U +.word 0x468cca46U, 0xeec729eeU, 0xb86bd3b8U, 0x14283c14U +.word 0xdea779deU, 0x5ebce25eU, 0x0b161d0bU, 0xdbad76dbU +.word 0xe0db3be0U, 0x32645632U, 0x3a744e3aU, 0x0a141e0aU +.word 0x4992db49U, 0x060c0a06U, 0x24486c24U, 0x5cb8e45cU +.word 0xc29f5dc2U, 0xd3bd6ed3U, 0xac43efacU, 0x62c4a662U +.word 0x9139a891U, 0x9531a495U, 0xe4d337e4U, 0x79f28b79U +.word 0xe7d532e7U, 0xc88b43c8U, 0x376e5937U, 0x6ddab76dU +.word 0x8d018c8dU, 0xd5b164d5U, 0x4e9cd24eU, 0xa949e0a9U +.word 0x6cd8b46cU, 0x56acfa56U, 0xf4f307f4U, 0xeacf25eaU +.word 0x65caaf65U, 0x7af48e7aU, 0xae47e9aeU, 0x08101808U +.word 0xba6fd5baU, 0x78f08878U, 0x254a6f25U, 0x2e5c722eU +.word 0x1c38241cU, 0xa657f1a6U, 0xb473c7b4U, 0xc69751c6U +.word 0xe8cb23e8U, 0xdda17cddU, 0x74e89c74U, 0x1f3e211fU +.word 0x4b96dd4bU, 0xbd61dcbdU, 0x8b0d868bU, 0x8a0f858aU +.word 0x70e09070U, 0x3e7c423eU, 0xb571c4b5U, 0x66ccaa66U +.word 0x4890d848U, 0x03060503U, 0xf6f701f6U, 0x0e1c120eU +.word 0x61c2a361U, 0x356a5f35U, 0x57aef957U, 0xb969d0b9U +.word 0x86179186U, 0xc19958c1U, 0x1d3a271dU, 0x9e27b99eU +.word 0xe1d938e1U, 0xf8eb13f8U, 0x982bb398U, 0x11223311U +.word 0x69d2bb69U, 0xd9a970d9U, 0x8e07898eU, 0x9433a794U +.word 0x9b2db69bU, 0x1e3c221eU, 0x87159287U, 0xe9c920e9U +.word 0xce8749ceU, 0x55aaff55U, 0x28507828U, 0xdfa57adfU +.word 0x8c038f8cU, 0xa159f8a1U, 0x89098089U, 0x0d1a170dU +.word 0xbf65dabfU, 0xe6d731e6U, 0x4284c642U, 0x68d0b868U +.word 0x4182c341U, 0x9929b099U, 0x2d5a772dU, 0x0f1e110fU +.word 0xb07bcbb0U, 0x54a8fc54U, 0xbb6dd6bbU, 0x162c3a16U + +.type AES_Te3,@object +AES_Te3: +.word 0xc6a56363U, 0xf8847c7cU, 0xee997777U, 0xf68d7b7bU +.word 0xff0df2f2U, 0xd6bd6b6bU, 0xdeb16f6fU, 0x9154c5c5U +.word 0x60503030U, 0x02030101U, 0xcea96767U, 0x567d2b2bU +.word 0xe719fefeU, 0xb562d7d7U, 0x4de6ababU, 0xec9a7676U +.word 0x8f45cacaU, 0x1f9d8282U, 0x8940c9c9U, 0xfa877d7dU +.word 0xef15fafaU, 0xb2eb5959U, 0x8ec94747U, 0xfb0bf0f0U +.word 0x41ecadadU, 0xb367d4d4U, 0x5ffda2a2U, 0x45eaafafU +.word 0x23bf9c9cU, 0x53f7a4a4U, 0xe4967272U, 0x9b5bc0c0U +.word 0x75c2b7b7U, 0xe11cfdfdU, 0x3dae9393U, 0x4c6a2626U +.word 0x6c5a3636U, 0x7e413f3fU, 0xf502f7f7U, 0x834fccccU +.word 0x685c3434U, 0x51f4a5a5U, 0xd134e5e5U, 0xf908f1f1U +.word 0xe2937171U, 0xab73d8d8U, 0x62533131U, 0x2a3f1515U +.word 0x080c0404U, 0x9552c7c7U, 0x46652323U, 0x9d5ec3c3U +.word 0x30281818U, 0x37a19696U, 0x0a0f0505U, 0x2fb59a9aU +.word 0x0e090707U, 0x24361212U, 0x1b9b8080U, 0xdf3de2e2U +.word 0xcd26ebebU, 0x4e692727U, 0x7fcdb2b2U, 0xea9f7575U +.word 0x121b0909U, 0x1d9e8383U, 0x58742c2cU, 0x342e1a1aU +.word 0x362d1b1bU, 0xdcb26e6eU, 0xb4ee5a5aU, 0x5bfba0a0U +.word 0xa4f65252U, 0x764d3b3bU, 0xb761d6d6U, 0x7dceb3b3U +.word 0x527b2929U, 0xdd3ee3e3U, 0x5e712f2fU, 0x13978484U +.word 0xa6f55353U, 0xb968d1d1U, 0x00000000U, 0xc12cededU +.word 0x40602020U, 0xe31ffcfcU, 0x79c8b1b1U, 0xb6ed5b5bU +.word 0xd4be6a6aU, 0x8d46cbcbU, 0x67d9bebeU, 0x724b3939U +.word 0x94de4a4aU, 0x98d44c4cU, 0xb0e85858U, 0x854acfcfU +.word 0xbb6bd0d0U, 0xc52aefefU, 0x4fe5aaaaU, 0xed16fbfbU +.word 0x86c54343U, 0x9ad74d4dU, 0x66553333U, 0x11948585U +.word 0x8acf4545U, 0xe910f9f9U, 0x04060202U, 0xfe817f7fU +.word 0xa0f05050U, 0x78443c3cU, 0x25ba9f9fU, 0x4be3a8a8U +.word 0xa2f35151U, 0x5dfea3a3U, 0x80c04040U, 0x058a8f8fU +.word 0x3fad9292U, 0x21bc9d9dU, 0x70483838U, 0xf104f5f5U +.word 0x63dfbcbcU, 0x77c1b6b6U, 0xaf75dadaU, 0x42632121U +.word 0x20301010U, 0xe51affffU, 0xfd0ef3f3U, 0xbf6dd2d2U +.word 0x814ccdcdU, 0x18140c0cU, 0x26351313U, 0xc32fececU +.word 0xbee15f5fU, 0x35a29797U, 0x88cc4444U, 0x2e391717U +.word 0x9357c4c4U, 0x55f2a7a7U, 0xfc827e7eU, 0x7a473d3dU +.word 0xc8ac6464U, 0xbae75d5dU, 0x322b1919U, 0xe6957373U +.word 0xc0a06060U, 0x19988181U, 0x9ed14f4fU, 0xa37fdcdcU +.word 0x44662222U, 0x547e2a2aU, 0x3bab9090U, 0x0b838888U +.word 0x8cca4646U, 0xc729eeeeU, 0x6bd3b8b8U, 0x283c1414U +.word 0xa779dedeU, 0xbce25e5eU, 0x161d0b0bU, 0xad76dbdbU +.word 0xdb3be0e0U, 0x64563232U, 0x744e3a3aU, 0x141e0a0aU +.word 0x92db4949U, 0x0c0a0606U, 0x486c2424U, 0xb8e45c5cU +.word 0x9f5dc2c2U, 0xbd6ed3d3U, 0x43efacacU, 0xc4a66262U +.word 0x39a89191U, 0x31a49595U, 0xd337e4e4U, 0xf28b7979U +.word 0xd532e7e7U, 0x8b43c8c8U, 0x6e593737U, 0xdab76d6dU +.word 0x018c8d8dU, 0xb164d5d5U, 0x9cd24e4eU, 0x49e0a9a9U +.word 0xd8b46c6cU, 0xacfa5656U, 0xf307f4f4U, 0xcf25eaeaU +.word 0xcaaf6565U, 0xf48e7a7aU, 0x47e9aeaeU, 0x10180808U +.word 0x6fd5babaU, 0xf0887878U, 0x4a6f2525U, 0x5c722e2eU +.word 0x38241c1cU, 0x57f1a6a6U, 0x73c7b4b4U, 0x9751c6c6U +.word 0xcb23e8e8U, 0xa17cddddU, 0xe89c7474U, 0x3e211f1fU +.word 0x96dd4b4bU, 0x61dcbdbdU, 0x0d868b8bU, 0x0f858a8aU +.word 0xe0907070U, 0x7c423e3eU, 0x71c4b5b5U, 0xccaa6666U +.word 0x90d84848U, 0x06050303U, 0xf701f6f6U, 0x1c120e0eU +.word 0xc2a36161U, 0x6a5f3535U, 0xaef95757U, 0x69d0b9b9U +.word 0x17918686U, 0x9958c1c1U, 0x3a271d1dU, 0x27b99e9eU +.word 0xd938e1e1U, 0xeb13f8f8U, 0x2bb39898U, 0x22331111U +.word 0xd2bb6969U, 0xa970d9d9U, 0x07898e8eU, 0x33a79494U +.word 0x2db69b9bU, 0x3c221e1eU, 0x15928787U, 0xc920e9e9U +.word 0x8749ceceU, 0xaaff5555U, 0x50782828U, 0xa57adfdfU +.word 0x038f8c8cU, 0x59f8a1a1U, 0x09808989U, 0x1a170d0dU +.word 0x65dabfbfU, 0xd731e6e6U, 0x84c64242U, 0xd0b86868U +.word 0x82c34141U, 0x29b09999U, 0x5a772d2dU, 0x1e110f0fU +.word 0x7bcbb0b0U, 0xa8fc5454U, 0x6dd6bbbbU, 0x2c3a1616U + +.p2align 12 +.type AES_Td0,@object +AES_Td0: +.word 0x50a7f451U, 0x5365417eU, 0xc3a4171aU, 0x965e273aU +.word 0xcb6bab3bU, 0xf1459d1fU, 0xab58faacU, 0x9303e34bU +.word 0x55fa3020U, 0xf66d76adU, 0x9176cc88U, 0x254c02f5U +.word 0xfcd7e54fU, 0xd7cb2ac5U, 0x80443526U, 0x8fa362b5U +.word 0x495ab1deU, 0x671bba25U, 0x980eea45U, 0xe1c0fe5dU +.word 0x02752fc3U, 0x12f04c81U, 0xa397468dU, 0xc6f9d36bU +.word 0xe75f8f03U, 0x959c9215U, 0xeb7a6dbfU, 0xda595295U +.word 0x2d83bed4U, 0xd3217458U, 0x2969e049U, 0x44c8c98eU +.word 0x6a89c275U, 0x78798ef4U, 0x6b3e5899U, 0xdd71b927U +.word 0xb64fe1beU, 0x17ad88f0U, 0x66ac20c9U, 0xb43ace7dU +.word 0x184adf63U, 0x82311ae5U, 0x60335197U, 0x457f5362U +.word 0xe07764b1U, 0x84ae6bbbU, 0x1ca081feU, 0x942b08f9U +.word 0x58684870U, 0x19fd458fU, 0x876cde94U, 0xb7f87b52U +.word 0x23d373abU, 0xe2024b72U, 0x578f1fe3U, 0x2aab5566U +.word 0x0728ebb2U, 0x03c2b52fU, 0x9a7bc586U, 0xa50837d3U +.word 0xf2872830U, 0xb2a5bf23U, 0xba6a0302U, 0x5c8216edU +.word 0x2b1ccf8aU, 0x92b479a7U, 0xf0f207f3U, 0xa1e2694eU +.word 0xcdf4da65U, 0xd5be0506U, 0x1f6234d1U, 0x8afea6c4U +.word 0x9d532e34U, 0xa055f3a2U, 0x32e18a05U, 0x75ebf6a4U +.word 0x39ec830bU, 0xaaef6040U, 0x069f715eU, 0x51106ebdU +.word 0xf98a213eU, 0x3d06dd96U, 0xae053eddU, 0x46bde64dU +.word 0xb58d5491U, 0x055dc471U, 0x6fd40604U, 0xff155060U +.word 0x24fb9819U, 0x97e9bdd6U, 0xcc434089U, 0x779ed967U +.word 0xbd42e8b0U, 0x888b8907U, 0x385b19e7U, 0xdbeec879U +.word 0x470a7ca1U, 0xe90f427cU, 0xc91e84f8U, 0x00000000U +.word 0x83868009U, 0x48ed2b32U, 0xac70111eU, 0x4e725a6cU +.word 0xfbff0efdU, 0x5638850fU, 0x1ed5ae3dU, 0x27392d36U +.word 0x64d90f0aU, 0x21a65c68U, 0xd1545b9bU, 0x3a2e3624U +.word 0xb1670a0cU, 0x0fe75793U, 0xd296eeb4U, 0x9e919b1bU +.word 0x4fc5c080U, 0xa220dc61U, 0x694b775aU, 0x161a121cU +.word 0x0aba93e2U, 0xe52aa0c0U, 0x43e0223cU, 0x1d171b12U +.word 0x0b0d090eU, 0xadc78bf2U, 0xb9a8b62dU, 0xc8a91e14U +.word 0x8519f157U, 0x4c0775afU, 0xbbdd99eeU, 0xfd607fa3U +.word 0x9f2601f7U, 0xbcf5725cU, 0xc53b6644U, 0x347efb5bU +.word 0x7629438bU, 0xdcc623cbU, 0x68fcedb6U, 0x63f1e4b8U +.word 0xcadc31d7U, 0x10856342U, 0x40229713U, 0x2011c684U +.word 0x7d244a85U, 0xf83dbbd2U, 0x1132f9aeU, 0x6da129c7U +.word 0x4b2f9e1dU, 0xf330b2dcU, 0xec52860dU, 0xd0e3c177U +.word 0x6c16b32bU, 0x99b970a9U, 0xfa489411U, 0x2264e947U +.word 0xc48cfca8U, 0x1a3ff0a0U, 0xd82c7d56U, 0xef903322U +.word 0xc74e4987U, 0xc1d138d9U, 0xfea2ca8cU, 0x360bd498U +.word 0xcf81f5a6U, 0x28de7aa5U, 0x268eb7daU, 0xa4bfad3fU +.word 0xe49d3a2cU, 0x0d927850U, 0x9bcc5f6aU, 0x62467e54U +.word 0xc2138df6U, 0xe8b8d890U, 0x5ef7392eU, 0xf5afc382U +.word 0xbe805d9fU, 0x7c93d069U, 0xa92dd56fU, 0xb31225cfU +.word 0x3b99acc8U, 0xa77d1810U, 0x6e639ce8U, 0x7bbb3bdbU +.word 0x097826cdU, 0xf418596eU, 0x01b79aecU, 0xa89a4f83U +.word 0x656e95e6U, 0x7ee6ffaaU, 0x08cfbc21U, 0xe6e815efU +.word 0xd99be7baU, 0xce366f4aU, 0xd4099feaU, 0xd67cb029U +.word 0xafb2a431U, 0x31233f2aU, 0x3094a5c6U, 0xc066a235U +.word 0x37bc4e74U, 0xa6ca82fcU, 0xb0d090e0U, 0x15d8a733U +.word 0x4a9804f1U, 0xf7daec41U, 0x0e50cd7fU, 0x2ff69117U +.word 0x8dd64d76U, 0x4db0ef43U, 0x544daaccU, 0xdf0496e4U +.word 0xe3b5d19eU, 0x1b886a4cU, 0xb81f2cc1U, 0x7f516546U +.word 0x04ea5e9dU, 0x5d358c01U, 0x737487faU, 0x2e410bfbU +.word 0x5a1d67b3U, 0x52d2db92U, 0x335610e9U, 0x1347d66dU +.word 0x8c61d79aU, 0x7a0ca137U, 0x8e14f859U, 0x893c13ebU +.word 0xee27a9ceU, 0x35c961b7U, 0xede51ce1U, 0x3cb1477aU +.word 0x59dfd29cU, 0x3f73f255U, 0x79ce1418U, 0xbf37c773U +.word 0xeacdf753U, 0x5baafd5fU, 0x146f3ddfU, 0x86db4478U +.word 0x81f3afcaU, 0x3ec468b9U, 0x2c342438U, 0x5f40a3c2U +.word 0x72c31d16U, 0x0c25e2bcU, 0x8b493c28U, 0x41950dffU +.word 0x7101a839U, 0xdeb30c08U, 0x9ce4b4d8U, 0x90c15664U +.word 0x6184cb7bU, 0x70b632d5U, 0x745c6c48U, 0x4257b8d0U + +.type AES_Td1,@object +AES_Td1: +.word 0xa7f45150U, 0x65417e53U, 0xa4171ac3U, 0x5e273a96U +.word 0x6bab3bcbU, 0x459d1ff1U, 0x58faacabU, 0x03e34b93U +.word 0xfa302055U, 0x6d76adf6U, 0x76cc8891U, 0x4c02f525U +.word 0xd7e54ffcU, 0xcb2ac5d7U, 0x44352680U, 0xa362b58fU +.word 0x5ab1de49U, 0x1bba2567U, 0x0eea4598U, 0xc0fe5de1U +.word 0x752fc302U, 0xf04c8112U, 0x97468da3U, 0xf9d36bc6U +.word 0x5f8f03e7U, 0x9c921595U, 0x7a6dbfebU, 0x595295daU +.word 0x83bed42dU, 0x217458d3U, 0x69e04929U, 0xc8c98e44U +.word 0x89c2756aU, 0x798ef478U, 0x3e58996bU, 0x71b927ddU +.word 0x4fe1beb6U, 0xad88f017U, 0xac20c966U, 0x3ace7db4U +.word 0x4adf6318U, 0x311ae582U, 0x33519760U, 0x7f536245U +.word 0x7764b1e0U, 0xae6bbb84U, 0xa081fe1cU, 0x2b08f994U +.word 0x68487058U, 0xfd458f19U, 0x6cde9487U, 0xf87b52b7U +.word 0xd373ab23U, 0x024b72e2U, 0x8f1fe357U, 0xab55662aU +.word 0x28ebb207U, 0xc2b52f03U, 0x7bc5869aU, 0x0837d3a5U +.word 0x872830f2U, 0xa5bf23b2U, 0x6a0302baU, 0x8216ed5cU +.word 0x1ccf8a2bU, 0xb479a792U, 0xf207f3f0U, 0xe2694ea1U +.word 0xf4da65cdU, 0xbe0506d5U, 0x6234d11fU, 0xfea6c48aU +.word 0x532e349dU, 0x55f3a2a0U, 0xe18a0532U, 0xebf6a475U +.word 0xec830b39U, 0xef6040aaU, 0x9f715e06U, 0x106ebd51U +.word 0x8a213ef9U, 0x06dd963dU, 0x053eddaeU, 0xbde64d46U +.word 0x8d5491b5U, 0x5dc47105U, 0xd406046fU, 0x155060ffU +.word 0xfb981924U, 0xe9bdd697U, 0x434089ccU, 0x9ed96777U +.word 0x42e8b0bdU, 0x8b890788U, 0x5b19e738U, 0xeec879dbU +.word 0x0a7ca147U, 0x0f427ce9U, 0x1e84f8c9U, 0x00000000U +.word 0x86800983U, 0xed2b3248U, 0x70111eacU, 0x725a6c4eU +.word 0xff0efdfbU, 0x38850f56U, 0xd5ae3d1eU, 0x392d3627U +.word 0xd90f0a64U, 0xa65c6821U, 0x545b9bd1U, 0x2e36243aU +.word 0x670a0cb1U, 0xe757930fU, 0x96eeb4d2U, 0x919b1b9eU +.word 0xc5c0804fU, 0x20dc61a2U, 0x4b775a69U, 0x1a121c16U +.word 0xba93e20aU, 0x2aa0c0e5U, 0xe0223c43U, 0x171b121dU +.word 0x0d090e0bU, 0xc78bf2adU, 0xa8b62db9U, 0xa91e14c8U +.word 0x19f15785U, 0x0775af4cU, 0xdd99eebbU, 0x607fa3fdU +.word 0x2601f79fU, 0xf5725cbcU, 0x3b6644c5U, 0x7efb5b34U +.word 0x29438b76U, 0xc623cbdcU, 0xfcedb668U, 0xf1e4b863U +.word 0xdc31d7caU, 0x85634210U, 0x22971340U, 0x11c68420U +.word 0x244a857dU, 0x3dbbd2f8U, 0x32f9ae11U, 0xa129c76dU +.word 0x2f9e1d4bU, 0x30b2dcf3U, 0x52860decU, 0xe3c177d0U +.word 0x16b32b6cU, 0xb970a999U, 0x489411faU, 0x64e94722U +.word 0x8cfca8c4U, 0x3ff0a01aU, 0x2c7d56d8U, 0x903322efU +.word 0x4e4987c7U, 0xd138d9c1U, 0xa2ca8cfeU, 0x0bd49836U +.word 0x81f5a6cfU, 0xde7aa528U, 0x8eb7da26U, 0xbfad3fa4U +.word 0x9d3a2ce4U, 0x9278500dU, 0xcc5f6a9bU, 0x467e5462U +.word 0x138df6c2U, 0xb8d890e8U, 0xf7392e5eU, 0xafc382f5U +.word 0x805d9fbeU, 0x93d0697cU, 0x2dd56fa9U, 0x1225cfb3U +.word 0x99acc83bU, 0x7d1810a7U, 0x639ce86eU, 0xbb3bdb7bU +.word 0x7826cd09U, 0x18596ef4U, 0xb79aec01U, 0x9a4f83a8U +.word 0x6e95e665U, 0xe6ffaa7eU, 0xcfbc2108U, 0xe815efe6U +.word 0x9be7bad9U, 0x366f4aceU, 0x099fead4U, 0x7cb029d6U +.word 0xb2a431afU, 0x233f2a31U, 0x94a5c630U, 0x66a235c0U +.word 0xbc4e7437U, 0xca82fca6U, 0xd090e0b0U, 0xd8a73315U +.word 0x9804f14aU, 0xdaec41f7U, 0x50cd7f0eU, 0xf691172fU +.word 0xd64d768dU, 0xb0ef434dU, 0x4daacc54U, 0x0496e4dfU +.word 0xb5d19ee3U, 0x886a4c1bU, 0x1f2cc1b8U, 0x5165467fU +.word 0xea5e9d04U, 0x358c015dU, 0x7487fa73U, 0x410bfb2eU +.word 0x1d67b35aU, 0xd2db9252U, 0x5610e933U, 0x47d66d13U +.word 0x61d79a8cU, 0x0ca1377aU, 0x14f8598eU, 0x3c13eb89U +.word 0x27a9ceeeU, 0xc961b735U, 0xe51ce1edU, 0xb1477a3cU +.word 0xdfd29c59U, 0x73f2553fU, 0xce141879U, 0x37c773bfU +.word 0xcdf753eaU, 0xaafd5f5bU, 0x6f3ddf14U, 0xdb447886U +.word 0xf3afca81U, 0xc468b93eU, 0x3424382cU, 0x40a3c25fU +.word 0xc31d1672U, 0x25e2bc0cU, 0x493c288bU, 0x950dff41U +.word 0x01a83971U, 0xb30c08deU, 0xe4b4d89cU, 0xc1566490U +.word 0x84cb7b61U, 0xb632d570U, 0x5c6c4874U, 0x57b8d042U + +.type AES_Td2,@object +AES_Td2: +.word 0xf45150a7U, 0x417e5365U, 0x171ac3a4U, 0x273a965eU +.word 0xab3bcb6bU, 0x9d1ff145U, 0xfaacab58U, 0xe34b9303U +.word 0x302055faU, 0x76adf66dU, 0xcc889176U, 0x02f5254cU +.word 0xe54ffcd7U, 0x2ac5d7cbU, 0x35268044U, 0x62b58fa3U +.word 0xb1de495aU, 0xba25671bU, 0xea45980eU, 0xfe5de1c0U +.word 0x2fc30275U, 0x4c8112f0U, 0x468da397U, 0xd36bc6f9U +.word 0x8f03e75fU, 0x9215959cU, 0x6dbfeb7aU, 0x5295da59U +.word 0xbed42d83U, 0x7458d321U, 0xe0492969U, 0xc98e44c8U +.word 0xc2756a89U, 0x8ef47879U, 0x58996b3eU, 0xb927dd71U +.word 0xe1beb64fU, 0x88f017adU, 0x20c966acU, 0xce7db43aU +.word 0xdf63184aU, 0x1ae58231U, 0x51976033U, 0x5362457fU +.word 0x64b1e077U, 0x6bbb84aeU, 0x81fe1ca0U, 0x08f9942bU +.word 0x48705868U, 0x458f19fdU, 0xde94876cU, 0x7b52b7f8U +.word 0x73ab23d3U, 0x4b72e202U, 0x1fe3578fU, 0x55662aabU +.word 0xebb20728U, 0xb52f03c2U, 0xc5869a7bU, 0x37d3a508U +.word 0x2830f287U, 0xbf23b2a5U, 0x0302ba6aU, 0x16ed5c82U +.word 0xcf8a2b1cU, 0x79a792b4U, 0x07f3f0f2U, 0x694ea1e2U +.word 0xda65cdf4U, 0x0506d5beU, 0x34d11f62U, 0xa6c48afeU +.word 0x2e349d53U, 0xf3a2a055U, 0x8a0532e1U, 0xf6a475ebU +.word 0x830b39ecU, 0x6040aaefU, 0x715e069fU, 0x6ebd5110U +.word 0x213ef98aU, 0xdd963d06U, 0x3eddae05U, 0xe64d46bdU +.word 0x5491b58dU, 0xc471055dU, 0x06046fd4U, 0x5060ff15U +.word 0x981924fbU, 0xbdd697e9U, 0x4089cc43U, 0xd967779eU +.word 0xe8b0bd42U, 0x8907888bU, 0x19e7385bU, 0xc879dbeeU +.word 0x7ca1470aU, 0x427ce90fU, 0x84f8c91eU, 0x00000000U +.word 0x80098386U, 0x2b3248edU, 0x111eac70U, 0x5a6c4e72U +.word 0x0efdfbffU, 0x850f5638U, 0xae3d1ed5U, 0x2d362739U +.word 0x0f0a64d9U, 0x5c6821a6U, 0x5b9bd154U, 0x36243a2eU +.word 0x0a0cb167U, 0x57930fe7U, 0xeeb4d296U, 0x9b1b9e91U +.word 0xc0804fc5U, 0xdc61a220U, 0x775a694bU, 0x121c161aU +.word 0x93e20abaU, 0xa0c0e52aU, 0x223c43e0U, 0x1b121d17U +.word 0x090e0b0dU, 0x8bf2adc7U, 0xb62db9a8U, 0x1e14c8a9U +.word 0xf1578519U, 0x75af4c07U, 0x99eebbddU, 0x7fa3fd60U +.word 0x01f79f26U, 0x725cbcf5U, 0x6644c53bU, 0xfb5b347eU +.word 0x438b7629U, 0x23cbdcc6U, 0xedb668fcU, 0xe4b863f1U +.word 0x31d7cadcU, 0x63421085U, 0x97134022U, 0xc6842011U +.word 0x4a857d24U, 0xbbd2f83dU, 0xf9ae1132U, 0x29c76da1U +.word 0x9e1d4b2fU, 0xb2dcf330U, 0x860dec52U, 0xc177d0e3U +.word 0xb32b6c16U, 0x70a999b9U, 0x9411fa48U, 0xe9472264U +.word 0xfca8c48cU, 0xf0a01a3fU, 0x7d56d82cU, 0x3322ef90U +.word 0x4987c74eU, 0x38d9c1d1U, 0xca8cfea2U, 0xd498360bU +.word 0xf5a6cf81U, 0x7aa528deU, 0xb7da268eU, 0xad3fa4bfU +.word 0x3a2ce49dU, 0x78500d92U, 0x5f6a9bccU, 0x7e546246U +.word 0x8df6c213U, 0xd890e8b8U, 0x392e5ef7U, 0xc382f5afU +.word 0x5d9fbe80U, 0xd0697c93U, 0xd56fa92dU, 0x25cfb312U +.word 0xacc83b99U, 0x1810a77dU, 0x9ce86e63U, 0x3bdb7bbbU +.word 0x26cd0978U, 0x596ef418U, 0x9aec01b7U, 0x4f83a89aU +.word 0x95e6656eU, 0xffaa7ee6U, 0xbc2108cfU, 0x15efe6e8U +.word 0xe7bad99bU, 0x6f4ace36U, 0x9fead409U, 0xb029d67cU +.word 0xa431afb2U, 0x3f2a3123U, 0xa5c63094U, 0xa235c066U +.word 0x4e7437bcU, 0x82fca6caU, 0x90e0b0d0U, 0xa73315d8U +.word 0x04f14a98U, 0xec41f7daU, 0xcd7f0e50U, 0x91172ff6U +.word 0x4d768dd6U, 0xef434db0U, 0xaacc544dU, 0x96e4df04U +.word 0xd19ee3b5U, 0x6a4c1b88U, 0x2cc1b81fU, 0x65467f51U +.word 0x5e9d04eaU, 0x8c015d35U, 0x87fa7374U, 0x0bfb2e41U +.word 0x67b35a1dU, 0xdb9252d2U, 0x10e93356U, 0xd66d1347U +.word 0xd79a8c61U, 0xa1377a0cU, 0xf8598e14U, 0x13eb893cU +.word 0xa9ceee27U, 0x61b735c9U, 0x1ce1ede5U, 0x477a3cb1U +.word 0xd29c59dfU, 0xf2553f73U, 0x141879ceU, 0xc773bf37U +.word 0xf753eacdU, 0xfd5f5baaU, 0x3ddf146fU, 0x447886dbU +.word 0xafca81f3U, 0x68b93ec4U, 0x24382c34U, 0xa3c25f40U +.word 0x1d1672c3U, 0xe2bc0c25U, 0x3c288b49U, 0x0dff4195U +.word 0xa8397101U, 0x0c08deb3U, 0xb4d89ce4U, 0x566490c1U +.word 0xcb7b6184U, 0x32d570b6U, 0x6c48745cU, 0xb8d04257U + +.type AES_Td3,@object +AES_Td3: +.word 0x5150a7f4U, 0x7e536541U, 0x1ac3a417U, 0x3a965e27U +.word 0x3bcb6babU, 0x1ff1459dU, 0xacab58faU, 0x4b9303e3U +.word 0x2055fa30U, 0xadf66d76U, 0x889176ccU, 0xf5254c02U +.word 0x4ffcd7e5U, 0xc5d7cb2aU, 0x26804435U, 0xb58fa362U +.word 0xde495ab1U, 0x25671bbaU, 0x45980eeaU, 0x5de1c0feU +.word 0xc302752fU, 0x8112f04cU, 0x8da39746U, 0x6bc6f9d3U +.word 0x03e75f8fU, 0x15959c92U, 0xbfeb7a6dU, 0x95da5952U +.word 0xd42d83beU, 0x58d32174U, 0x492969e0U, 0x8e44c8c9U +.word 0x756a89c2U, 0xf478798eU, 0x996b3e58U, 0x27dd71b9U +.word 0xbeb64fe1U, 0xf017ad88U, 0xc966ac20U, 0x7db43aceU +.word 0x63184adfU, 0xe582311aU, 0x97603351U, 0x62457f53U +.word 0xb1e07764U, 0xbb84ae6bU, 0xfe1ca081U, 0xf9942b08U +.word 0x70586848U, 0x8f19fd45U, 0x94876cdeU, 0x52b7f87bU +.word 0xab23d373U, 0x72e2024bU, 0xe3578f1fU, 0x662aab55U +.word 0xb20728ebU, 0x2f03c2b5U, 0x869a7bc5U, 0xd3a50837U +.word 0x30f28728U, 0x23b2a5bfU, 0x02ba6a03U, 0xed5c8216U +.word 0x8a2b1ccfU, 0xa792b479U, 0xf3f0f207U, 0x4ea1e269U +.word 0x65cdf4daU, 0x06d5be05U, 0xd11f6234U, 0xc48afea6U +.word 0x349d532eU, 0xa2a055f3U, 0x0532e18aU, 0xa475ebf6U +.word 0x0b39ec83U, 0x40aaef60U, 0x5e069f71U, 0xbd51106eU +.word 0x3ef98a21U, 0x963d06ddU, 0xddae053eU, 0x4d46bde6U +.word 0x91b58d54U, 0x71055dc4U, 0x046fd406U, 0x60ff1550U +.word 0x1924fb98U, 0xd697e9bdU, 0x89cc4340U, 0x67779ed9U +.word 0xb0bd42e8U, 0x07888b89U, 0xe7385b19U, 0x79dbeec8U +.word 0xa1470a7cU, 0x7ce90f42U, 0xf8c91e84U, 0x00000000U +.word 0x09838680U, 0x3248ed2bU, 0x1eac7011U, 0x6c4e725aU +.word 0xfdfbff0eU, 0x0f563885U, 0x3d1ed5aeU, 0x3627392dU +.word 0x0a64d90fU, 0x6821a65cU, 0x9bd1545bU, 0x243a2e36U +.word 0x0cb1670aU, 0x930fe757U, 0xb4d296eeU, 0x1b9e919bU +.word 0x804fc5c0U, 0x61a220dcU, 0x5a694b77U, 0x1c161a12U +.word 0xe20aba93U, 0xc0e52aa0U, 0x3c43e022U, 0x121d171bU +.word 0x0e0b0d09U, 0xf2adc78bU, 0x2db9a8b6U, 0x14c8a91eU +.word 0x578519f1U, 0xaf4c0775U, 0xeebbdd99U, 0xa3fd607fU +.word 0xf79f2601U, 0x5cbcf572U, 0x44c53b66U, 0x5b347efbU +.word 0x8b762943U, 0xcbdcc623U, 0xb668fcedU, 0xb863f1e4U +.word 0xd7cadc31U, 0x42108563U, 0x13402297U, 0x842011c6U +.word 0x857d244aU, 0xd2f83dbbU, 0xae1132f9U, 0xc76da129U +.word 0x1d4b2f9eU, 0xdcf330b2U, 0x0dec5286U, 0x77d0e3c1U +.word 0x2b6c16b3U, 0xa999b970U, 0x11fa4894U, 0x472264e9U +.word 0xa8c48cfcU, 0xa01a3ff0U, 0x56d82c7dU, 0x22ef9033U +.word 0x87c74e49U, 0xd9c1d138U, 0x8cfea2caU, 0x98360bd4U +.word 0xa6cf81f5U, 0xa528de7aU, 0xda268eb7U, 0x3fa4bfadU +.word 0x2ce49d3aU, 0x500d9278U, 0x6a9bcc5fU, 0x5462467eU +.word 0xf6c2138dU, 0x90e8b8d8U, 0x2e5ef739U, 0x82f5afc3U +.word 0x9fbe805dU, 0x697c93d0U, 0x6fa92dd5U, 0xcfb31225U +.word 0xc83b99acU, 0x10a77d18U, 0xe86e639cU, 0xdb7bbb3bU +.word 0xcd097826U, 0x6ef41859U, 0xec01b79aU, 0x83a89a4fU +.word 0xe6656e95U, 0xaa7ee6ffU, 0x2108cfbcU, 0xefe6e815U +.word 0xbad99be7U, 0x4ace366fU, 0xead4099fU, 0x29d67cb0U +.word 0x31afb2a4U, 0x2a31233fU, 0xc63094a5U, 0x35c066a2U +.word 0x7437bc4eU, 0xfca6ca82U, 0xe0b0d090U, 0x3315d8a7U +.word 0xf14a9804U, 0x41f7daecU, 0x7f0e50cdU, 0x172ff691U +.word 0x768dd64dU, 0x434db0efU, 0xcc544daaU, 0xe4df0496U +.word 0x9ee3b5d1U, 0x4c1b886aU, 0xc1b81f2cU, 0x467f5165U +.word 0x9d04ea5eU, 0x015d358cU, 0xfa737487U, 0xfb2e410bU +.word 0xb35a1d67U, 0x9252d2dbU, 0xe9335610U, 0x6d1347d6U +.word 0x9a8c61d7U, 0x377a0ca1U, 0x598e14f8U, 0xeb893c13U +.word 0xceee27a9U, 0xb735c961U, 0xe1ede51cU, 0x7a3cb147U +.word 0x9c59dfd2U, 0x553f73f2U, 0x1879ce14U, 0x73bf37c7U +.word 0x53eacdf7U, 0x5f5baafdU, 0xdf146f3dU, 0x7886db44U +.word 0xca81f3afU, 0xb93ec468U, 0x382c3424U, 0xc25f40a3U +.word 0x1672c31dU, 0xbc0c25e2U, 0x288b493cU, 0xff41950dU +.word 0x397101a8U, 0x08deb30cU, 0xd89ce4b4U, 0x6490c156U +.word 0x7b6184cbU, 0xd570b632U, 0x48745c6cU, 0xd04257b8U + +.type AES_Td4,@object +AES_Td4: +.byte 0x52U, 0x09U, 0x6aU, 0xd5U, 0x30U, 0x36U, 0xa5U, 0x38U +.byte 0xbfU, 0x40U, 0xa3U, 0x9eU, 0x81U, 0xf3U, 0xd7U, 0xfbU +.byte 0x7cU, 0xe3U, 0x39U, 0x82U, 0x9bU, 0x2fU, 0xffU, 0x87U +.byte 0x34U, 0x8eU, 0x43U, 0x44U, 0xc4U, 0xdeU, 0xe9U, 0xcbU +.byte 0x54U, 0x7bU, 0x94U, 0x32U, 0xa6U, 0xc2U, 0x23U, 0x3dU +.byte 0xeeU, 0x4cU, 0x95U, 0x0bU, 0x42U, 0xfaU, 0xc3U, 0x4eU +.byte 0x08U, 0x2eU, 0xa1U, 0x66U, 0x28U, 0xd9U, 0x24U, 0xb2U +.byte 0x76U, 0x5bU, 0xa2U, 0x49U, 0x6dU, 0x8bU, 0xd1U, 0x25U +.byte 0x72U, 0xf8U, 0xf6U, 0x64U, 0x86U, 0x68U, 0x98U, 0x16U +.byte 0xd4U, 0xa4U, 0x5cU, 0xccU, 0x5dU, 0x65U, 0xb6U, 0x92U +.byte 0x6cU, 0x70U, 0x48U, 0x50U, 0xfdU, 0xedU, 0xb9U, 0xdaU +.byte 0x5eU, 0x15U, 0x46U, 0x57U, 0xa7U, 0x8dU, 0x9dU, 0x84U +.byte 0x90U, 0xd8U, 0xabU, 0x00U, 0x8cU, 0xbcU, 0xd3U, 0x0aU +.byte 0xf7U, 0xe4U, 0x58U, 0x05U, 0xb8U, 0xb3U, 0x45U, 0x06U +.byte 0xd0U, 0x2cU, 0x1eU, 0x8fU, 0xcaU, 0x3fU, 0x0fU, 0x02U +.byte 0xc1U, 0xafU, 0xbdU, 0x03U, 0x01U, 0x13U, 0x8aU, 0x6bU +.byte 0x3aU, 0x91U, 0x11U, 0x41U, 0x4fU, 0x67U, 0xdcU, 0xeaU +.byte 0x97U, 0xf2U, 0xcfU, 0xceU, 0xf0U, 0xb4U, 0xe6U, 0x73U +.byte 0x96U, 0xacU, 0x74U, 0x22U, 0xe7U, 0xadU, 0x35U, 0x85U +.byte 0xe2U, 0xf9U, 0x37U, 0xe8U, 0x1cU, 0x75U, 0xdfU, 0x6eU +.byte 0x47U, 0xf1U, 0x1aU, 0x71U, 0x1dU, 0x29U, 0xc5U, 0x89U +.byte 0x6fU, 0xb7U, 0x62U, 0x0eU, 0xaaU, 0x18U, 0xbeU, 0x1bU +.byte 0xfcU, 0x56U, 0x3eU, 0x4bU, 0xc6U, 0xd2U, 0x79U, 0x20U +.byte 0x9aU, 0xdbU, 0xc0U, 0xfeU, 0x78U, 0xcdU, 0x5aU, 0xf4U +.byte 0x1fU, 0xddU, 0xa8U, 0x33U, 0x88U, 0x07U, 0xc7U, 0x31U +.byte 0xb1U, 0x12U, 0x10U, 0x59U, 0x27U, 0x80U, 0xecU, 0x5fU +.byte 0x60U, 0x51U, 0x7fU, 0xa9U, 0x19U, 0xb5U, 0x4aU, 0x0dU +.byte 0x2dU, 0xe5U, 0x7aU, 0x9fU, 0x93U, 0xc9U, 0x9cU, 0xefU +.byte 0xa0U, 0xe0U, 0x3bU, 0x4dU, 0xaeU, 0x2aU, 0xf5U, 0xb0U +.byte 0xc8U, 0xebU, 0xbbU, 0x3cU, 0x83U, 0x53U, 0x99U, 0x61U +.byte 0x17U, 0x2bU, 0x04U, 0x7eU, 0xbaU, 0x77U, 0xd6U, 0x26U +.byte 0xe1U, 0x69U, 0x14U, 0x63U, 0x55U, 0x21U, 0x0cU, 0x7dU + +.type AES_rcon,@object +AES_rcon: +.word 0x00000001U, 0x00000002U, 0x00000004U, 0x00000008U +.word 0x00000010U, 0x00000020U, 0x00000040U, 0x00000080U +.word 0x0000001BU, 0x00000036U diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/buildinf.h new file mode 100644 index 00000000000000..017783059eb59c --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/buildinf.h @@ -0,0 +1,37 @@ +/* + * WARNING: do not edit! + * Generated by util/mkbuildinf.pl + * + * Copyright 2014-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#define PLATFORM "platform: linux64-riscv64" +#define DATE "built on: Tue Jun 30 04:16:04 2026 UTC" + +/* + * Generate compiler_flags as an array of individual characters. This is a + * workaround for the situation where CFLAGS gets too long for a C90 string + * literal + */ +static const char compiler_flags[] = { + 'c','o','m','p','i','l','e','r',':',' ','.','.','/','c','o','n', + 'f','i','g','/','f','a','k','e','_','g','c','c','.','p','l',' ', + '-','f','P','I','C',' ','-','p','t','h','r','e','a','d',' ','-', + 'W','a',',','-','-','n','o','e','x','e','c','s','t','a','c','k', + ' ','-','W','a','l','l',' ','-','O','3',' ','-','D','O','P','E', + 'N','S','S','L','_','U','S','E','_','N','O','D','E','L','E','T', + 'E',' ','-','D','O','P','E','N','S','S','L','_','P','I','C',' ', + '-','D','O','P','E','N','S','S','L','_','B','U','I','L','D','I', + 'N','G','_','O','P','E','N','S','S','L',' ','-','D','B','R','O', + 'T','L','I',' ','-','D','Z','L','I','B',' ','-','D','Z','S','T', + 'D',' ','-','D','N','D','E','B','U','G',' ','-','I','.','.','/', + '.','.','/','b','r','o','t','l','i','/','c','/','i','n','c','l', + 'u','d','e',' ','-','I','.','.','/','.','.','/','z','l','i','b', + ' ','-','I','.','.','/','.','.','/','z','s','t','d','/','l','i', + 'b','\0' +}; diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/chacha/chacha-riscv64-v-zbb-zvkb.s b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/chacha/chacha-riscv64-v-zbb-zvkb.s new file mode 100644 index 00000000000000..6fa723a7934c8f --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/chacha/chacha-riscv64-v-zbb-zvkb.s @@ -0,0 +1,461 @@ +.text +.p2align 3 +.globl ChaCha20_ctr32_v_zbb_zvkb +.type ChaCha20_ctr32_v_zbb_zvkb,@function +ChaCha20_ctr32_v_zbb_zvkb: + addi sp, sp, -96 + sd s0, 0(sp) + sd s1, 8(sp) + sd s2, 16(sp) + sd s3, 24(sp) + sd s4, 32(sp) + sd s5, 40(sp) + sd s6, 48(sp) + sd s7, 56(sp) + sd s8, 64(sp) + sd s9, 72(sp) + sd s10, 80(sp) + sd s11, 88(sp) + addi sp, sp, -64 + + lw t2, 0(a4) + +.Lblock_loop: + # We will use the scalar ALU for 1 chacha block. + srli t3, a2, 6 + .word 219050839 + slli t4, t1, 6 + bltu t4, a2, 1f + # Since there is no more chacha block existed, we need to split 1 block + # from vector ALU. + addi t4, t1, -1 + .word 219083607 +1: + + #### chacha block data + # init chacha const states into v0~v3 + # "expa" little endian + li a5, 0x61707865 + .word 1577566295 + # "nd 3" little endian + li a6, 0x3320646e + .word 1577599191 + # "2-by" little endian + li a7, 0x79622d32 + .word 1577632087 + # "te k" little endian + li s0, 0x6b206574 + lw s1, 0(a3) + .word 1577337303 + + # init chacha key states into v4~v11 + lw s2, 4(a3) + .word 1577370199 + lw s3, 8(a3) + .word 1577665239 + lw s4, 12(a3) + .word 1577698135 + lw s5, 16(a3) + .word 1577731031 + lw s6, 20(a3) + .word 1577763927 + lw s7, 24(a3) + .word 1577796823 + lw s8, 28(a3) + .word 1577829719 + .word 1577862615 + + # init chacha key states into v12~v13 + lw s10, 4(a4) + .word 1376298583 + lw s11, 8(a4) + .word 46384727 + lw t0, 12(a4) + .word 1577928407 + add s9, t2, t1 + + # init chacha nonce states into v14~v15 + .word 1577961303 + .word 1577240535 + + li t3, 64 + # load the top-half of input data into v16~v23 + .word 3955615751 + + # till now in block_loop, we used: + # - v0~v15 for chacha states. + # - v16~v23 for top-half of input data. + # - v24~v31 haven't been used yet. + + # 20 round groups + li t3, 10 +.Lround_loop: + # we can use v24~v31 as temporary registers in round_loop. + addi t3, t3, -1 + # a += b; d ^= a; d <<<= 16; + .word 33685591 + add a5, a5, s1 + .word 34767063 + add a6, a6, s2 + .word 35848535 + add a7, a7, s3 + .word 36930007 + add s0, s0, s4 + .word 784336471 + xor s9, s9, a5 + .word 785417943 + xor s10, s10, a6 + .word 786499415 + xor s11, s11, a7 + .word 787580887 + xor t0, t0, s0 + .word 1388852823 + .word 1628232859 + .word 1389901527 + .word 1628265755 + .word 1390950231 + .word 1628298651 + .word 1391998935 + .word 1627574939 + + # c += d; b ^= c; b <<<= 12; + .word 42337367 + add s5, s5, s9 + .word 43418839 + add s6, s6, s10 + .word 44500311 + add s7, s7, s11 + .word 45581783 + add s8, s8, t0 + .word 776208983 + xor s1, s1, s5 + .word 777290455 + xor s2, s2, s6 + .word 778371927 + xor s3, s3, s7 + .word 779453399 + xor s4, s4, s8 + .word 1380594263 + .word 1631900827 + .word 1381642967 + .word 1632196891 + .word 1382691671 + .word 1632229787 + .word 1383740375 + .word 1632262683 + + # a += b; d ^= a; d <<<= 8; + .word 33685591 + add a5, a5, s1 + .word 34767063 + add a6, a6, s2 + .word 35848535 + add a7, a7, s3 + .word 36930007 + add s0, s0, s4 + .word 784336471 + xor s9, s9, a5 + .word 785417943 + xor s10, s10, a6 + .word 786499415 + xor s11, s11, a7 + .word 787580887 + xor t0, t0, s0 + .word 1389114967 + .word 1636621467 + .word 1390163671 + .word 1636654363 + .word 1391212375 + .word 1636687259 + .word 1392261079 + .word 1635963547 + + # c += d; b ^= c; b <<<= 7; + .word 42337367 + add s5, s5, s9 + .word 43418839 + add s6, s6, s10 + .word 44500311 + add s7, s7, s11 + .word 45581783 + add s8, s8, t0 + .word 776208983 + xor s1, s1, s5 + .word 777290455 + xor s2, s2, s6 + .word 778371927 + xor s3, s3, s7 + .word 779453399 + xor s4, s4, s8 + .word 1380758103 + .word 1637143707 + .word 1381806807 + .word 1637439771 + .word 1382855511 + .word 1637472667 + .word 1383904215 + .word 1637505563 + + + # a += b; d ^= a; d <<<= 16; + .word 36831703 + add s0, s0, s1 + .word 33718359 + add a5, a5, s2 + .word 34799831 + add a6, a6, s3 + .word 35881303 + add a7, a7, s4 + .word 786532183 + xor s11, s11, s0 + .word 787482583 + xor t0, t0, a5 + .word 784369239 + xor s9, s9, a6 + .word 785450711 + xor s10, s10, a7 + .word 1390950231 + .word 1628298651 + .word 1391998935 + .word 1627574939 + .word 1388852823 + .word 1628232859 + .word 1389901527 + .word 1628265755 + + # c += d; b ^= c; b <<<= 12; + .word 43451607 + add s6, s6, s11 + .word 44533079 + add s7, s7, t0 + .word 45483479 + add s8, s8, s9 + .word 42370135 + add s5, s5, s10 + .word 776241751 + xor s1, s1, s6 + .word 777323223 + xor s2, s2, s7 + .word 778404695 + xor s3, s3, s8 + .word 779355095 + xor s4, s4, s5 + .word 1380594263 + .word 1631900827 + .word 1381642967 + .word 1632196891 + .word 1382691671 + .word 1632229787 + .word 1383740375 + .word 1632262683 + + # a += b; d ^= a; d <<<= 8; + .word 36831703 + add s0, s0, s1 + .word 33718359 + add a5, a5, s2 + .word 34799831 + add a6, a6, s3 + .word 35881303 + add a7, a7, s4 + .word 786532183 + xor s11, s11, s0 + .word 787482583 + xor t0, t0, a5 + .word 784369239 + xor s9, s9, a6 + .word 785450711 + xor s10, s10, a7 + .word 1391212375 + .word 1636687259 + .word 1392261079 + .word 1635963547 + .word 1389114967 + .word 1636621467 + .word 1390163671 + .word 1636654363 + + # c += d; b ^= c; b <<<= 7; + .word 43451607 + add s6, s6, s11 + .word 44533079 + add s7, s7, t0 + .word 45483479 + add s8, s8, s9 + .word 42370135 + add s5, s5, s10 + .word 776241751 + xor s1, s1, s6 + .word 777323223 + xor s2, s2, s7 + .word 778404695 + xor s3, s3, s8 + .word 779355095 + xor s4, s4, s5 + .word 1380758103 + .word 1637143707 + .word 1381806807 + .word 1637439771 + .word 1382855511 + .word 1637472667 + .word 1383904215 + .word 1637505563 + + + bnez t3, .Lround_loop + + li t3, 64 + # load the bottom-half of input data into v24~v31 + addi t4, a1, 32 + .word 3956206599 + + # now, there are no free vector registers until the round_loop exits. + + # add chacha top-half initial block states + # "expa" little endian + li t3, 0x61707865 + .word 34488407 + add a5, a5, t3 + # "nd 3" little endian + li t4, 0x3320646e + .word 35569879 + add a6, a6, t4 + lw t3, 0(a3) + # "2-by" little endian + li t5, 0x79622d32 + .word 36651351 + add a7, a7, t5 + lw t4, 4(a3) + # "te k" little endian + li t6, 0x6b206574 + .word 37732823 + add s0, s0, t6 + lw t5, 8(a3) + .word 38683223 + add s1, s1, t3 + lw t6, 12(a3) + .word 39764695 + add s2, s2, t4 + .word 40846167 + add s3, s3, t5 + .word 41927639 + add s4, s4, t6 + + # xor with the top-half input + .word 788531287 + sw a5, 0(sp) + sw a6, 4(sp) + .word 789612759 + sw a7, 8(sp) + sw s0, 12(sp) + .word 790694231 + sw s1, 16(sp) + sw s2, 20(sp) + .word 791775703 + sw s3, 24(sp) + sw s4, 28(sp) + .word 792857175 + lw t3, 16(a3) + .word 793938647 + lw t4, 20(a3) + .word 795020119 + lw t5, 24(a3) + .word 796101591 + + # save the top-half of output from v16~v23 + li t6, 64 + .word 3958728743 + + # add chacha bottom-half initial block states + .word 42878039 + add s5, s5, t3 + lw t6, 28(a3) + .word 43959511 + add s6, s6, t4 + lw t3, 4(a4) + .word 45040983 + add s7, s7, t5 + lw t4, 8(a4) + .word 46122455 + add s8, s8, t6 + lw t5, 12(a4) + .word 1376297047 + add s9, s9, t2 + .word 46384727 + add s9, s9, t1 + .word 48121559 + add s10, s10, t3 + .word 49203031 + add s11, s11, t4 + .word 50284503 + add t0, t0, t5 + .word 46138967 + # xor with the bottom-half input + .word 797183063 + sw s5, 32(sp) + .word 798264535 + sw s6, 36(sp) + .word 799346007 + sw s7, 40(sp) + .word 800427479 + sw s8, 44(sp) + .word 802590423 + sw s9, 48(sp) + .word 801508951 + sw s10, 52(sp) + .word 803671895 + sw s11, 56(sp) + .word 804753367 + sw t0, 60(sp) + + # save the bottom-half of output from v24~v31 + li t3, 64 + addi t4, a0, 32 + .word 3956206631 + + # the computed vector parts: `64 * VL` + slli t3, t1, 6 + + add a1, a1, t3 + add a0, a0, t3 + sub a2, a2, t3 + add t2, t2, t1 + + # process the scalar data block + addi t2, t2, 1 + li t3, 64 + .word 197549747 + sub a2, a2, t4 + mv t5, sp +.Lscalar_data_loop: + .word 205452119 + # from this on, vector registers are grouped with lmul = 8 + .word 33915911 + .word 34539527 + .word 780665943 + .word 33883175 + add a1, a1, t1 + add a0, a0, t1 + add t5, t5, t1 + sub t4, t4, t1 + bnez t4, .Lscalar_data_loop + + bnez a2, .Lblock_loop + + addi sp, sp, 64 + ld s0, 0(sp) + ld s1, 8(sp) + ld s2, 16(sp) + ld s3, 24(sp) + ld s4, 32(sp) + ld s5, 40(sp) + ld s6, 48(sp) + ld s7, 56(sp) + ld s8, 64(sp) + ld s9, 72(sp) + ld s10, 80(sp) + ld s11, 88(sp) + addi sp, sp, 96 + + ret +.size ChaCha20_ctr32_v_zbb_zvkb,.-ChaCha20_ctr32_v_zbb_zvkb diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/chacha/chacha-riscv64-v-zbb.s b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/chacha/chacha-riscv64-v-zbb.s new file mode 100644 index 00000000000000..e543c8e9ce10b9 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/chacha/chacha-riscv64-v-zbb.s @@ -0,0 +1,525 @@ +.text +.p2align 3 +.globl ChaCha20_ctr32_v_zbb +.type ChaCha20_ctr32_v_zbb,@function +ChaCha20_ctr32_v_zbb: + addi sp, sp, -96 + sd s0, 0(sp) + sd s1, 8(sp) + sd s2, 16(sp) + sd s3, 24(sp) + sd s4, 32(sp) + sd s5, 40(sp) + sd s6, 48(sp) + sd s7, 56(sp) + sd s8, 64(sp) + sd s9, 72(sp) + sd s10, 80(sp) + sd s11, 88(sp) + addi sp, sp, -64 + + lw t2, 0(a4) + +.Lblock_loop: + # We will use the scalar ALU for 1 chacha block. + srli t3, a2, 6 + .word 219050839 + slli t4, t1, 6 + bltu t4, a2, 1f + # Since there is no more chacha block existed, we need to split 1 block + # from vector ALU. + addi t4, t1, -1 + .word 219083607 +1: + + #### chacha block data + # init chacha const states into v0~v3 + # "expa" little endian + li a5, 0x61707865 + .word 1577566295 + # "nd 3" little endian + li a6, 0x3320646e + .word 1577599191 + # "2-by" little endian + li a7, 0x79622d32 + .word 1577632087 + # "te k" little endian + li s0, 0x6b206574 + lw s1, 0(a3) + .word 1577337303 + + # init chacha key states into v4~v11 + lw s2, 4(a3) + .word 1577370199 + lw s3, 8(a3) + .word 1577665239 + lw s4, 12(a3) + .word 1577698135 + lw s5, 16(a3) + .word 1577731031 + lw s6, 20(a3) + .word 1577763927 + lw s7, 24(a3) + .word 1577796823 + lw s8, 28(a3) + .word 1577829719 + .word 1577862615 + + # init chacha key states into v12~v13 + lw s10, 4(a4) + .word 1376298583 + lw s11, 8(a4) + .word 46384727 + lw t0, 12(a4) + .word 1577928407 + add s9, t2, t1 + + # init chacha nonce states into v14~v15 + .word 1577961303 + .word 1577240535 + + li t3, 64 + # load the top-half of input data into v16~v23 + .word 3955615751 + + # till now in block_loop, we used: + # - v0~v15 for chacha states. + # - v16~v23 for top-half of input data. + # - v24~v31 haven't been used yet. + + # 20 round groups + li t3, 10 +.Lround_loop: + # we can use v24~v31 as temporary registers in round_loop. + addi t3, t3, -1 + # a += b; d ^= a; d <<<= 16; + .word 33685591 + add a5, a5, s1 + .word 34767063 + add a6, a6, s2 + .word 35848535 + add a7, a7, s3 + .word 36930007 + add s0, s0, s4 + .word 784336471 + xor s9, s9, a5 + .word 785417943 + xor s10, s10, a6 + .word 786499415 + xor s11, s11, a7 + .word 787580887 + xor t0, t0, s0 + .word 2529705047 + .word 2530753751 + .word 2531802455 + .word 2532851159 + .word 2731030103 + .word 2732078807 + .word 2733127511 + .word 2734176215 + .word 718014039 + .word 1628232859 + .word 719095511 + .word 1628265755 + .word 720176983 + .word 1628298651 + .word 721258455 + .word 1627574939 + + # c += d; b ^= c; b <<<= 12; + .word 42337367 + add s5, s5, s9 + .word 43418839 + add s6, s6, s10 + .word 44500311 + add s7, s7, s11 + .word 45581783 + add s8, s8, t0 + .word 776208983 + xor s1, s1, s5 + .word 777290455 + xor s2, s2, s6 + .word 778371927 + xor s3, s3, s7 + .word 779453399 + xor s4, s4, s8 + .word 2521185367 + .word 2522234071 + .word 2523282775 + .word 2524331479 + .word 2722771543 + .word 2723820247 + .word 2724868951 + .word 2725917655 + .word 709624407 + .word 1631900827 + .word 710705879 + .word 1632196891 + .word 711787351 + .word 1632229787 + .word 712868823 + .word 1632262683 + + # a += b; d ^= a; d <<<= 8; + .word 33685591 + add a5, a5, s1 + .word 34767063 + add a6, a6, s2 + .word 35848535 + add a7, a7, s3 + .word 36930007 + add s0, s0, s4 + .word 784336471 + xor s9, s9, a5 + .word 785417943 + xor s10, s10, a6 + .word 786499415 + xor s11, s11, a7 + .word 787580887 + xor t0, t0, s0 + .word 2529442903 + .word 2530491607 + .word 2531540311 + .word 2532589015 + .word 2731292247 + .word 2732340951 + .word 2733389655 + .word 2734438359 + .word 718014039 + .word 1636621467 + .word 719095511 + .word 1636654363 + .word 720176983 + .word 1636687259 + .word 721258455 + .word 1635963547 + + # c += d; b ^= c; b <<<= 7; + .word 42337367 + add s5, s5, s9 + .word 43418839 + add s6, s6, s10 + .word 44500311 + add s7, s7, s11 + .word 45581783 + add s8, s8, t0 + .word 776208983 + xor s1, s1, s5 + .word 777290455 + xor s2, s2, s6 + .word 778371927 + xor s3, s3, s7 + .word 779453399 + xor s4, s4, s8 + .word 2521021527 + .word 2522070231 + .word 2523118935 + .word 2524167639 + .word 2722935383 + .word 2723984087 + .word 2725032791 + .word 2726081495 + .word 709624407 + .word 1637143707 + .word 710705879 + .word 1637439771 + .word 711787351 + .word 1637472667 + .word 712868823 + .word 1637505563 + + + # a += b; d ^= a; d <<<= 16; + .word 36831703 + add s0, s0, s1 + .word 33718359 + add a5, a5, s2 + .word 34799831 + add a6, a6, s3 + .word 35881303 + add a7, a7, s4 + .word 786532183 + xor s11, s11, s0 + .word 787482583 + xor t0, t0, a5 + .word 784369239 + xor s9, s9, a6 + .word 785450711 + xor s10, s10, a7 + .word 2531802199 + .word 2532850903 + .word 2529705303 + .word 2530754007 + .word 2733127511 + .word 2734176215 + .word 2731030103 + .word 2732078807 + .word 720111447 + .word 1628298651 + .word 721192919 + .word 1627574939 + .word 718079575 + .word 1628232859 + .word 719161047 + .word 1628265755 + + # c += d; b ^= c; b <<<= 12; + .word 43451607 + add s6, s6, s11 + .word 44533079 + add s7, s7, t0 + .word 45483479 + add s8, s8, s9 + .word 42370135 + add s5, s5, s10 + .word 776241751 + xor s1, s1, s6 + .word 777323223 + xor s2, s2, s7 + .word 778404695 + xor s3, s3, s8 + .word 779355095 + xor s4, s4, s5 + .word 2521185367 + .word 2522234071 + .word 2523282775 + .word 2524331479 + .word 2722771543 + .word 2723820247 + .word 2724868951 + .word 2725917655 + .word 709624407 + .word 1631900827 + .word 710705879 + .word 1632196891 + .word 711787351 + .word 1632229787 + .word 712868823 + .word 1632262683 + + # a += b; d ^= a; d <<<= 8; + .word 36831703 + add s0, s0, s1 + .word 33718359 + add a5, a5, s2 + .word 34799831 + add a6, a6, s3 + .word 35881303 + add a7, a7, s4 + .word 786532183 + xor s11, s11, s0 + .word 787482583 + xor t0, t0, a5 + .word 784369239 + xor s9, s9, a6 + .word 785450711 + xor s10, s10, a7 + .word 2531540055 + .word 2532588759 + .word 2529443159 + .word 2530491863 + .word 2733389655 + .word 2734438359 + .word 2731292247 + .word 2732340951 + .word 720111447 + .word 1636687259 + .word 721192919 + .word 1635963547 + .word 718079575 + .word 1636621467 + .word 719161047 + .word 1636654363 + + # c += d; b ^= c; b <<<= 7; + .word 43451607 + add s6, s6, s11 + .word 44533079 + add s7, s7, t0 + .word 45483479 + add s8, s8, s9 + .word 42370135 + add s5, s5, s10 + .word 776241751 + xor s1, s1, s6 + .word 777323223 + xor s2, s2, s7 + .word 778404695 + xor s3, s3, s8 + .word 779355095 + xor s4, s4, s5 + .word 2521021527 + .word 2522070231 + .word 2523118935 + .word 2524167639 + .word 2722935383 + .word 2723984087 + .word 2725032791 + .word 2726081495 + .word 709624407 + .word 1637143707 + .word 710705879 + .word 1637439771 + .word 711787351 + .word 1637472667 + .word 712868823 + .word 1637505563 + + + bnez t3, .Lround_loop + + li t3, 64 + # load the bottom-half of input data into v24~v31 + addi t4, a1, 32 + .word 3956206599 + + # now, there are no free vector registers until the round_loop exits. + + # add chacha top-half initial block states + # "expa" little endian + li t3, 0x61707865 + .word 34488407 + add a5, a5, t3 + # "nd 3" little endian + li t4, 0x3320646e + .word 35569879 + add a6, a6, t4 + lw t3, 0(a3) + # "2-by" little endian + li t5, 0x79622d32 + .word 36651351 + add a7, a7, t5 + lw t4, 4(a3) + # "te k" little endian + li t6, 0x6b206574 + .word 37732823 + add s0, s0, t6 + lw t5, 8(a3) + .word 38683223 + add s1, s1, t3 + lw t6, 12(a3) + .word 39764695 + add s2, s2, t4 + .word 40846167 + add s3, s3, t5 + .word 41927639 + add s4, s4, t6 + + # xor with the top-half input + .word 788531287 + sw a5, 0(sp) + sw a6, 4(sp) + .word 789612759 + sw a7, 8(sp) + sw s0, 12(sp) + .word 790694231 + sw s1, 16(sp) + sw s2, 20(sp) + .word 791775703 + sw s3, 24(sp) + sw s4, 28(sp) + .word 792857175 + lw t3, 16(a3) + .word 793938647 + lw t4, 20(a3) + .word 795020119 + lw t5, 24(a3) + .word 796101591 + + # save the top-half of output from v16~v23 + li t6, 64 + .word 3958728743 + + # add chacha bottom-half initial block states + .word 42878039 + add s5, s5, t3 + lw t6, 28(a3) + .word 43959511 + add s6, s6, t4 + lw t3, 4(a4) + .word 45040983 + add s7, s7, t5 + lw t4, 8(a4) + .word 46122455 + add s8, s8, t6 + lw t5, 12(a4) + .word 1376297047 + add s9, s9, t2 + .word 46384727 + add s9, s9, t1 + .word 48121559 + add s10, s10, t3 + .word 49203031 + add s11, s11, t4 + .word 50284503 + add t0, t0, t5 + .word 46138967 + # xor with the bottom-half input + .word 797183063 + sw s5, 32(sp) + .word 798264535 + sw s6, 36(sp) + .word 799346007 + sw s7, 40(sp) + .word 800427479 + sw s8, 44(sp) + .word 802590423 + sw s9, 48(sp) + .word 801508951 + sw s10, 52(sp) + .word 803671895 + sw s11, 56(sp) + .word 804753367 + sw t0, 60(sp) + + # save the bottom-half of output from v24~v31 + li t3, 64 + addi t4, a0, 32 + .word 3956206631 + + # the computed vector parts: `64 * VL` + slli t3, t1, 6 + + add a1, a1, t3 + add a0, a0, t3 + sub a2, a2, t3 + add t2, t2, t1 + + # process the scalar data block + addi t2, t2, 1 + li t3, 64 + .word 197549747 + sub a2, a2, t4 + mv t5, sp +.Lscalar_data_loop: + .word 205452119 + # from this on, vector registers are grouped with lmul = 8 + .word 33915911 + .word 34539527 + .word 780665943 + .word 33883175 + add a1, a1, t1 + add a0, a0, t1 + add t5, t5, t1 + sub t4, t4, t1 + bnez t4, .Lscalar_data_loop + + bnez a2, .Lblock_loop + + addi sp, sp, 64 + ld s0, 0(sp) + ld s1, 8(sp) + ld s2, 16(sp) + ld s3, 24(sp) + ld s4, 32(sp) + ld s5, 40(sp) + ld s6, 48(sp) + ld s7, 56(sp) + ld s8, 64(sp) + ld s9, 72(sp) + ld s10, 80(sp) + ld s11, 88(sp) + addi sp, sp, 96 + + ret +.size ChaCha20_ctr32_v_zbb,.-ChaCha20_ctr32_v_zbb diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s new file mode 100644 index 00000000000000..6c1c5e1c7e28b2 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s @@ -0,0 +1,1540 @@ +.text +.p2align 3 +.globl rv64i_zvkb_zvkg_zvkned_aes_gcm_encrypt +.type rv64i_zvkb_zvkg_zvkned_aes_gcm_encrypt,@function +rv64i_zvkb_zvkg_zvkned_aes_gcm_encrypt: + srli t0, a2, 4 + beqz t0, .Lenc_end + slli t5, t0, 2 + + mv a7, t5 + + # Compute the AES-GCM full-block e32 length for `LMUL=4`. We will handle + # the multiple AES-GCM blocks at the same time within `LMUL=4` register. + # The AES-GCM's SEW is e32 and EGW is 128 bits. + # FULL_BLOCK_LEN32 = (VLEN*LMUL)/(EGW) * (EGW/SEW) = (VLEN*4)/(32*4) * 4 + # = (VLEN*4)/32 + # We could get the block_num using the VL value of `vsetvli with e32, m4`. + .word 220231767 + # If `LEN32 % FULL_BLOCK_LEN32` is not equal to zero, we could fill the + # zero padding data to make sure we could always handle FULL_BLOCK_LEN32 + # blocks for all iterations. + + ## Prepare the H^n multiplier in v16 for GCM multiplier. The `n` is the gcm + ## block number in a LMUL=4 register group. + ## n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4)) + ## = (VLEN/32) + ## We could use vsetvli with `e32, m1` to compute the `n` number. + .word 218133207 + + # The H is at `gcm128_context.Htable[0]`(addr(Xi)+16*2). + addi t1, a5, 32 + .word 3439489111 + .word 33779591 + + # Compute the H^n + li t1, 1 +1: + .word 2750984183 + slli t1, t1, 1 + bltu t1, t0, 1b + + .word 220754007 + .word 1577072727 + .word 2817763447 + + #### Load plaintext into v24 and handle padding. We also load the init tag + #### data into v20 and prepare the AES ctr input data into v12 and v28. + .word 1577073239 + + ## Prepare the AES ctr input data into v12. + # Setup ctr input mask. + # ctr mask : [000100010001....] + # Note: The actual vl should be `FULL_BLOCK_LEN32/4 * 2`, but we just use + # `FULL_BLOCK_LEN32` here. + .word 201879639 + li t0, 0b10001000 + .word 1577238615 + # Load IV. + .word 3439489111 + .word 34041735 + # Convert the big-endian counter into little-endian. + .word 3305271383 + .word 1240772567 + # Splat the `single block of IV` to v12 + .word 220754007 + .word 1577072215 + .word 2817762935 + # Prepare the ctr counter into v8 + # v8: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...] + .word 1342710871 + # Merge IV and ctr counter into v12. + # v12:[x, x, x, count+0, x, x, x, count+1, ...] + .word 86536279 + .word 12846679 + + li t4, 0 + # Get the SEW32 size in the first round. + # If we have the non-zero value for `LEN32&(FULL_BLOCK_LEN32-1)`, then + # we will have the leading padding zero. + addi t0, a6, -1 + and t0, t0, t5 + beqz t0, 1f + + ## with padding + sub t5, t5, t0 + sub t4, a6, t0 + # padding block size + srli t1, t4, 2 + # padding byte size + slli t2, t4, 2 + + # Adjust the ctr counter to make the counter start from `counter+0` for the + # first non-padding block. + .word 86536279 + .word 147015255 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + .word 1237626455 + + # Prepare the mask for input loading in the first round. We use + # `VL=FULL_BLOCK_LEN32` with the mask in the first round. + # Adjust input ptr. + sub a0, a0, t2 + # Adjust output ptr. + sub a1, a1, t2 + .word 211316823 + .word 1376297303 + # We don't use the pseudo instruction `vmsgeu` here. Use `vmsgtu` instead. + # The original code is: + # vmsgeu.vx v0, v2, t4 + addi t0, t4, -1 + .word 2049097815 + .word 220754007 + .word 1577073751 + # Load the input for length FULL_BLOCK_LEN32 with mask. + .word 86536279 + .word 355335 + + # Load the init `Xi` data to v20 with preceding zero padding. + # Adjust Xi ptr. + sub t0, a5, t2 + # Load for length `zero-padding-e32-length + 4`. + addi t1, t4, 4 + .word 19099735 + .word 190983 + j 2f + +1: + ## without padding + sub t5, t5, a6 + + .word 220754007 + .word 33909767 + + # Load the init Xi data to v20. + .word 3372380247 + .word 34073095 + + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 86536279 + .word 1577455191 + .word 1237626455 +2: + + + # Load number of rounds + lwu t0, 240(a3) + li t1, 14 + li t2, 12 + li t3, 10 + + beq t0, t1, aes_gcm_enc_blocks_256 + beq t0, t2, aes_gcm_enc_blocks_192 + beq t0, t3, aes_gcm_enc_blocks_128 + +.Lenc_end: + li a0, 0 + ret + +.size rv64i_zvkb_zvkg_zvkned_aes_gcm_encrypt,.-rv64i_zvkb_zvkg_zvkned_aes_gcm_encrypt +.p2align 3 +aes_gcm_enc_blocks_128: + srli t6, a6, 2 + slli t0, a6, 2 + + # Load all 11 aes round keys to v1-v11 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + # We already have the ciphertext/plaintext and ctr data for the first round. + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr result. + .word 801902167 + + bnez t4, 1f + + ## without padding + # Store ciphertext/plaintext + .word 33943079 + j 2f + + ## with padding +1: + # Store ciphertext/plaintext using mask + .word 388647 + + # Fill zero for the padding blocks + .word 154071127 + .word 1577074263 + + # We have used mask register for `INPUT_PADDING_MASK` before. We need to + # setup the ctr mask back. + # ctr mask : [000100010001....] + .word 201879639 + li t1, 0b10001000 + .word 1577271383 +2: + + + + add a0, a0, t0 + add a1, a1, t0 + + + .word 220754007 + +.Lenc_blocks_128: + # Compute the partial tags. + # The partial tags will multiply with [H^n, H^n, ..., H^n] + # [tag0, tag1, ...] = + # ([tag0, tag1, ...] + [ciphertext0, ciphertext1, ...] * [H^n, H^n, ..., H^n] + # We will skip the [H^n, H^n, ..., H^n] multiplication for the last round. + beqz t5, .Lenc_blocks_128_end + .word 3004050039 + + .word 86536279 + # Increase ctr in v12. + .word 13616727 + sub t5, t5, a6 + # Load plaintext into v24 + .word 220229719 + .word 33909767 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + add a0, a0, t0 + .word 86011991 + .word 1237626455 + + + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr ciphertext result. + .word 801902167 + + # Store ciphertext + .word 33943079 + add a1, a1, t0 + + j .Lenc_blocks_128 +.Lenc_blocks_128_end: + + # Add ciphertext into partial tag + .word 793643607 + + .word 3441586263 + # Update current ctr value to v12 + .word 13616727 + # Convert ctr to big-endian counter. + .word 1220847191 + .word 484903 + + + # The H is at `gcm128_context.Htable[0]` (addr(Xi)+16*2). + # Load H to v1 + addi t1, a5, 32 + .word 3439489111 + .word 33775751 + # Multiply H for each partial tag and XOR them together. + # Handle 1st partial tag + .word 1577713751 + .word 2719522935 + # Handle 2nd to N-th partial tags + li t1, 4 +1: + .word 3441586263 + .word 1061372503 + .word 3439489111 + .word 2987532407 + addi t1, t1, 4 + blt t1, a6, 1b + + + # Save the final tag + .word 34070567 + + # return the processed size. + slli a0, a7, 2 + ret +.size aes_gcm_enc_blocks_128,.-aes_gcm_enc_blocks_128 +.p2align 3 +aes_gcm_enc_blocks_192: + srli t6, a6, 2 + slli t0, a6, 2 + + # We run out of 32 vector registers, so we just preserve some round keys + # and load the remaining round keys inside the aes body. + # We keep the round keys for: + # 1, 2, 3, 5, 6, 7, 9, 10, 11 and 12th keys. + # The following keys will be loaded in the aes body: + # 4, 8 and 13th keys. + .word 3439489111 + # key 1 + .word 34005127 + # key 2 + addi t1, a3, 16 + .word 33775879 + # key 3 + addi t1, a3, 32 + .word 33776007 + # key 5 + addi t1, a3, 64 + .word 33776135 + # key 6 + addi t1, a3, 80 + .word 33776263 + # key 7 + addi t1, a3, 96 + .word 33776391 + # key 9 + addi t1, a3, 128 + .word 33776519 + # key 10 + addi t1, a3, 144 + .word 33776647 + # key 11 + addi t1, a3, 160 + .word 33776775 + # key 12 + addi t1, a3, 176 + .word 33776903 + + # We already have the ciphertext/plaintext and ctr data for the first round. + # Load key 4 + .word 3439489111 + addi t1, a3, 48 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2796629623 + # Load key 8 + .word 3439489111 + addi t1, a3, 112 + .word 33777031 + .word 220754007 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 13 + .word 3439489111 + addi t1, a3, 192 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr result. + .word 801902167 + + bnez t4, 1f + + ## without padding + # Store ciphertext/plaintext + .word 33943079 + j 2f + + ## with padding +1: + # Store ciphertext/plaintext using mask + .word 388647 + + # Fill zero for the padding blocks + .word 154071127 + .word 1577074263 + + # We have used mask register for `INPUT_PADDING_MASK` before. We need to + # setup the ctr mask back. + # ctr mask : [000100010001....] + .word 201879639 + li t1, 0b10001000 + .word 1577271383 +2: + + + + add a0, a0, t0 + add a1, a1, t0 + + + .word 220754007 + +.Lenc_blocks_192: + # Compute the partial tags. + # The partial tags will multiply with [H^n, H^n, ..., H^n] + # [tag0, tag1, ...] = + # ([tag0, tag1, ...] + [ciphertext0, ciphertext1, ...] * [H^n, H^n, ..., H^n] + # We will skip the [H^n, H^n, ..., H^n] multiplication for the last round. + beqz t5, .Lenc_blocks_192_end + .word 3004050039 + + .word 86536279 + # Increase ctr in v12. + .word 13616727 + sub t5, t5, a6 + # Load plaintext into v24 + .word 220229719 + .word 33909767 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + add a0, a0, t0 + .word 86011991 + .word 1237626455 + + + # Load key 4 + .word 3439489111 + addi t1, a3, 48 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2796629623 + # Load key 8 + .word 3439489111 + addi t1, a3, 112 + .word 33777031 + .word 220754007 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 13 + .word 3439489111 + addi t1, a3, 192 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr ciphertext result. + .word 801902167 + + # Store ciphertext + .word 33943079 + add a1, a1, t0 + + j .Lenc_blocks_192 +.Lenc_blocks_192_end: + + # Add ciphertext into partial tag + .word 793643607 + + .word 3441586263 + # Update current ctr value to v12 + .word 13616727 + # Convert ctr to big-endian counter. + .word 1220847191 + .word 484903 + + + # The H is at `gcm128_context.Htable[0]` (addr(Xi)+16*2). + # Load H to v1 + addi t1, a5, 32 + .word 3439489111 + .word 33775751 + # Multiply H for each partial tag and XOR them together. + # Handle 1st partial tag + .word 1577713751 + .word 2719522935 + # Handle 2nd to N-th partial tags + li t1, 4 +1: + .word 3441586263 + .word 1061372503 + .word 3439489111 + .word 2987532407 + addi t1, t1, 4 + blt t1, a6, 1b + + + # Save the final tag + .word 34070567 + + # return the processed size. + slli a0, a7, 2 + ret +.size aes_gcm_enc_blocks_192,.-aes_gcm_enc_blocks_192 +.p2align 3 +aes_gcm_enc_blocks_256: + srli t6, a6, 2 + slli t0, a6, 2 + + # We run out of 32 vector registers, so we just preserve some round keys + # and load the remaining round keys inside the aes body. + # We keep the round keys for: + # 1, 2, 4, 5, 7, 8, 10, 11, 13 and 14th keys. + # The following keys will be loaded in the aes body: + # 3, 6, 9, 12 and 15th keys. + .word 3439489111 + # key 1 + .word 34005127 + # key 2 + addi t1, a3, 16 + .word 33775879 + # key 4 + addi t1, a3, 48 + .word 33776007 + # key 5 + addi t1, a3, 64 + .word 33776135 + # key 7 + addi t1, a3, 96 + .word 33776263 + # key 8 + addi t1, a3, 112 + .word 33776391 + # key 10 + addi t1, a3, 144 + .word 33776519 + # key 11 + addi t1, a3, 160 + .word 33776647 + # key 13 + addi t1, a3, 192 + .word 33776775 + # key 14 + addi t1, a3, 208 + .word 33776903 + + # We already have the ciphertext/plaintext and ctr data for the first round. + # Load key 3 + .word 3439489111 + addi t1, a3, 32 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2796629623 + # Load key 6 + .word 3439489111 + addi t1, a3, 80 + .word 33777031 + .word 220754007 + .word 2788241015 + .word 2789289591 + .word 2796629623 + # Load key 9 + .word 3439489111 + addi t1, a3, 128 + .word 33777031 + .word 220754007 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 12 + .word 3439489111 + addi t1, a3, 176 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2796629623 + # Load key 15 + .word 3439489111 + addi t1, a3, 224 + .word 33777031 + .word 220754007 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr result. + .word 801902167 + + bnez t4, 1f + + ## without padding + # Store ciphertext/plaintext + .word 33943079 + j 2f + + ## with padding +1: + # Store ciphertext/plaintext using mask + .word 388647 + + # Fill zero for the padding blocks + .word 154071127 + .word 1577074263 + + # We have used mask register for `INPUT_PADDING_MASK` before. We need to + # setup the ctr mask back. + # ctr mask : [000100010001....] + .word 201879639 + li t1, 0b10001000 + .word 1577271383 +2: + + + + add a0, a0, t0 + add a1, a1, t0 + + + .word 220754007 + +.Lenc_blocks_256: + # Compute the partial tags. + # The partial tags will multiply with [H^n, H^n, ..., H^n] + # [tag0, tag1, ...] = + # ([tag0, tag1, ...] + [ciphertext0, ciphertext1, ...] * [H^n, H^n, ..., H^n] + # We will skip the [H^n, H^n, ..., H^n] multiplication for the last round. + beqz t5, .Lenc_blocks_256_end + .word 3004050039 + + .word 86536279 + # Increase ctr in v12. + .word 13616727 + sub t5, t5, a6 + # Load plaintext into v24 + .word 220229719 + .word 33909767 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + add a0, a0, t0 + .word 86011991 + .word 1237626455 + + + # Load key 3 + .word 3439489111 + addi t1, a3, 32 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2796629623 + # Load key 6 + .word 3439489111 + addi t1, a3, 80 + .word 33777031 + .word 220754007 + .word 2788241015 + .word 2789289591 + .word 2796629623 + # Load key 9 + .word 3439489111 + addi t1, a3, 128 + .word 33777031 + .word 220754007 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 12 + .word 3439489111 + addi t1, a3, 176 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2796629623 + # Load key 15 + .word 3439489111 + addi t1, a3, 224 + .word 33777031 + .word 220754007 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr ciphertext result. + .word 801902167 + + # Store ciphertext + .word 33943079 + add a1, a1, t0 + + j .Lenc_blocks_256 +.Lenc_blocks_256_end: + + # Add ciphertext into partial tag + .word 793643607 + + .word 3441586263 + # Update current ctr value to v12 + .word 13616727 + # Convert ctr to big-endian counter. + .word 1220847191 + .word 484903 + + + # The H is at `gcm128_context.Htable[0]` (addr(Xi)+16*2). + # Load H to v1 + addi t1, a5, 32 + .word 3439489111 + .word 33775751 + # Multiply H for each partial tag and XOR them together. + # Handle 1st partial tag + .word 1577713751 + .word 2719522935 + # Handle 2nd to N-th partial tags + li t1, 4 +1: + .word 3441586263 + .word 1061372503 + .word 3439489111 + .word 2987532407 + addi t1, t1, 4 + blt t1, a6, 1b + + + # Save the final tag + .word 34070567 + + # return the processed size. + slli a0, a7, 2 + ret +.size aes_gcm_enc_blocks_256,.-aes_gcm_enc_blocks_256 +.p2align 3 +.globl rv64i_zvkb_zvkg_zvkned_aes_gcm_decrypt +.type rv64i_zvkb_zvkg_zvkned_aes_gcm_decrypt,@function +rv64i_zvkb_zvkg_zvkned_aes_gcm_decrypt: + srli t0, a2, 4 + beqz t0, .Ldec_end + slli t5, t0, 2 + + mv a7, t5 + + # Compute the AES-GCM full-block e32 length for `LMUL=4`. We will handle + # the multiple AES-GCM blocks at the same time within `LMUL=4` register. + # The AES-GCM's SEW is e32 and EGW is 128 bits. + # FULL_BLOCK_LEN32 = (VLEN*LMUL)/(EGW) * (EGW/SEW) = (VLEN*4)/(32*4) * 4 + # = (VLEN*4)/32 + # We could get the block_num using the VL value of `vsetvli with e32, m4`. + .word 220231767 + # If `LEN32 % FULL_BLOCK_LEN32` is not equal to zero, we could fill the + # zero padding data to make sure we could always handle FULL_BLOCK_LEN32 + # blocks for all iterations. + + ## Prepare the H^n multiplier in v16 for GCM multiplier. The `n` is the gcm + ## block number in a LMUL=4 register group. + ## n = ((VLEN*LMUL)/(32*4)) = ((VLEN*4)/(32*4)) + ## = (VLEN/32) + ## We could use vsetvli with `e32, m1` to compute the `n` number. + .word 218133207 + + # The H is at `gcm128_context.Htable[0]`(addr(Xi)+16*2). + addi t1, a5, 32 + .word 3439489111 + .word 33779591 + + # Compute the H^n + li t1, 1 +1: + .word 2750984183 + slli t1, t1, 1 + bltu t1, t0, 1b + + .word 220754007 + .word 1577072727 + .word 2817763447 + + #### Load plaintext into v24 and handle padding. We also load the init tag + #### data into v20 and prepare the AES ctr input data into v12 and v28. + .word 1577073239 + + ## Prepare the AES ctr input data into v12. + # Setup ctr input mask. + # ctr mask : [000100010001....] + # Note: The actual vl should be `FULL_BLOCK_LEN32/4 * 2`, but we just use + # `FULL_BLOCK_LEN32` here. + .word 201879639 + li t0, 0b10001000 + .word 1577238615 + # Load IV. + .word 3439489111 + .word 34041735 + # Convert the big-endian counter into little-endian. + .word 3305271383 + .word 1240772567 + # Splat the `single block of IV` to v12 + .word 220754007 + .word 1577072215 + .word 2817762935 + # Prepare the ctr counter into v8 + # v8: [x, x, x, 0, x, x, x, 1, x, x, x, 2, ...] + .word 1342710871 + # Merge IV and ctr counter into v12. + # v12:[x, x, x, count+0, x, x, x, count+1, ...] + .word 86536279 + .word 12846679 + + li t4, 0 + # Get the SEW32 size in the first round. + # If we have the non-zero value for `LEN32&(FULL_BLOCK_LEN32-1)`, then + # we will have the leading padding zero. + addi t0, a6, -1 + and t0, t0, t5 + beqz t0, 1f + + ## with padding + sub t5, t5, t0 + sub t4, a6, t0 + # padding block size + srli t1, t4, 2 + # padding byte size + slli t2, t4, 2 + + # Adjust the ctr counter to make the counter start from `counter+0` for the + # first non-padding block. + .word 86536279 + .word 147015255 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + .word 1237626455 + + # Prepare the mask for input loading in the first round. We use + # `VL=FULL_BLOCK_LEN32` with the mask in the first round. + # Adjust input ptr. + sub a0, a0, t2 + # Adjust output ptr. + sub a1, a1, t2 + .word 211316823 + .word 1376297303 + # We don't use the pseudo instruction `vmsgeu` here. Use `vmsgtu` instead. + # The original code is: + # vmsgeu.vx v0, v2, t4 + addi t0, t4, -1 + .word 2049097815 + .word 220754007 + .word 1577073751 + # Load the input for length FULL_BLOCK_LEN32 with mask. + .word 86536279 + .word 355335 + + # Load the init `Xi` data to v20 with preceding zero padding. + # Adjust Xi ptr. + sub t0, a5, t2 + # Load for length `zero-padding-e32-length + 4`. + addi t1, t4, 4 + .word 19099735 + .word 190983 + j 2f + +1: + ## without padding + sub t5, t5, a6 + + .word 220754007 + .word 33909767 + + # Load the init Xi data to v20. + .word 3372380247 + .word 34073095 + + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 86536279 + .word 1577455191 + .word 1237626455 +2: + + + # Load number of rounds + lwu t0, 240(a3) + li t1, 14 + li t2, 12 + li t3, 10 + + beq t0, t1, aes_gcm_dec_blocks_256 + beq t0, t2, aes_gcm_dec_blocks_192 + beq t0, t3, aes_gcm_dec_blocks_128 + +.Ldec_end: + li a0, 0 + ret +.size rv64i_zvkb_zvkg_zvkned_aes_gcm_decrypt,.-rv64i_zvkb_zvkg_zvkned_aes_gcm_decrypt +.p2align 3 +aes_gcm_dec_blocks_128: + srli t6, a6, 2 + slli t0, a6, 2 + + # Load all 11 aes round keys to v1-v11 registers. + .word 3439489111 + .word 34005127 + addi a3, a3, 16 + .word 34005255 + addi a3, a3, 16 + .word 34005383 + addi a3, a3, 16 + .word 34005511 + addi a3, a3, 16 + .word 34005639 + addi a3, a3, 16 + .word 34005767 + addi a3, a3, 16 + .word 34005895 + addi a3, a3, 16 + .word 34006023 + addi a3, a3, 16 + .word 34006151 + addi a3, a3, 16 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + + # We already have the ciphertext/plaintext and ctr data for the first round. + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr result. + .word 801902167 + + bnez t4, 1f + + ## without padding + # Store ciphertext/plaintext + .word 33943079 + j 2f + + ## with padding +1: + # Store ciphertext/plaintext using mask + .word 388647 + + # Fill zero for the padding blocks + .word 154071127 + .word 1577074263 + + # We have used mask register for `INPUT_PADDING_MASK` before. We need to + # setup the ctr mask back. + # ctr mask : [000100010001....] + .word 201879639 + li t1, 0b10001000 + .word 1577271383 +2: + + + + add a0, a0, t0 + add a1, a1, t0 + + + .word 220754007 + +.Ldec_blocks_128: + # Compute the partial tags. + # The partial tags will multiply with [H^n, H^n, ..., H^n] + # [tag0, tag1, ...] = + # ([tag0, tag1, ...] + [ciphertext0, ciphertext1, ...] * [H^n, H^n, ..., H^n] + # We will skip the [H^n, H^n, ..., H^n] multiplication for the last round. + beqz t5, .Ldec_blocks_256_end + .word 3003918967 + + .word 86536279 + # Increase ctr in v12. + .word 13616727 + sub t5, t5, a6 + # Load plaintext into v24 + .word 220229719 + .word 33909767 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + add a0, a0, t0 + .word 86011991 + .word 1237626455 + + + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr plaintext result. + .word 801902167 + + # Store plaintext + .word 33943079 + add a1, a1, t0 + + j .Ldec_blocks_128 +.Ldec_blocks_128_end: + + # Add ciphertext into partial tag + .word 793512535 + + .word 3441586263 + # Update current ctr value to v12 + .word 13616727 + # Convert ctr to big-endian counter. + .word 1220847191 + .word 484903 + + + # The H is at `gcm128_context.Htable[0]` (addr(Xi)+16*2). + # Load H to v1 + addi t1, a5, 32 + .word 3439489111 + .word 33775751 + # Multiply H for each partial tag and XOR them together. + # Handle 1st partial tag + .word 1577713751 + .word 2719522935 + # Handle 2nd to N-th partial tags + li t1, 4 +1: + .word 3441586263 + .word 1061372503 + .word 3439489111 + .word 2987532407 + addi t1, t1, 4 + blt t1, a6, 1b + + + # Save the final tag + .word 34070567 + + # return the processed size. + slli a0, a7, 2 + ret +.size aes_gcm_dec_blocks_128,.-aes_gcm_dec_blocks_128 +.p2align 3 +aes_gcm_dec_blocks_192: + srli t6, a6, 2 + slli t0, a6, 2 + + # We run out of 32 vector registers, so we just preserve some round keys + # and load the remaining round keys inside the aes body. + # We keep the round keys for: + # 1, 2, 3, 5, 6, 7, 9, 10, 11 and 12th keys. + # The following keys will be loaded in the aes body: + # 4, 8 and 13th keys. + .word 3439489111 + # key 1 + .word 34005127 + # key 2 + addi t1, a3, 16 + .word 33775879 + # key 3 + addi t1, a3, 32 + .word 33776007 + # key 5 + addi t1, a3, 64 + .word 33776135 + # key 6 + addi t1, a3, 80 + .word 33776263 + # key 7 + addi t1, a3, 96 + .word 33776391 + # key 9 + addi t1, a3, 128 + .word 33776519 + # key 10 + addi t1, a3, 144 + .word 33776647 + # key 11 + addi t1, a3, 160 + .word 33776775 + # key 12 + addi t1, a3, 176 + .word 33776903 + + # We already have the ciphertext/plaintext and ctr data for the first round. + # Load key 4 + .word 3439489111 + addi t1, a3, 48 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2796629623 + # Load key 8 + .word 3439489111 + addi t1, a3, 112 + .word 33777031 + .word 220754007 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 13 + .word 3439489111 + addi t1, a3, 192 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr result. + .word 801902167 + + bnez t4, 1f + + ## without padding + # Store ciphertext/plaintext + .word 33943079 + j 2f + + ## with padding +1: + # Store ciphertext/plaintext using mask + .word 388647 + + # Fill zero for the padding blocks + .word 154071127 + .word 1577074263 + + # We have used mask register for `INPUT_PADDING_MASK` before. We need to + # setup the ctr mask back. + # ctr mask : [000100010001....] + .word 201879639 + li t1, 0b10001000 + .word 1577271383 +2: + + + + add a0, a0, t0 + add a1, a1, t0 + + + .word 220754007 + +.Ldec_blocks_192: + # Compute the partial tags. + # The partial tags will multiply with [H^n, H^n, ..., H^n] + # [tag0, tag1, ...] = + # ([tag0, tag1, ...] + [ciphertext0, ciphertext1, ...] * [H^n, H^n, ..., H^n] + # We will skip the [H^n, H^n, ..., H^n] multiplication for the last round. + beqz t5, .Ldec_blocks_192_end + .word 3003918967 + + .word 86536279 + # Increase ctr in v12. + .word 13616727 + sub t5, t5, a6 + # Load plaintext into v24 + .word 220229719 + .word 33909767 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + add a0, a0, t0 + .word 86011991 + .word 1237626455 + + + # Load key 4 + .word 3439489111 + addi t1, a3, 48 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2788241015 + .word 2796629623 + # Load key 8 + .word 3439489111 + addi t1, a3, 112 + .word 33777031 + .word 220754007 + .word 2789289591 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 13 + .word 3439489111 + addi t1, a3, 192 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr plaintext result. + .word 801902167 + + # Store plaintext + .word 33943079 + add a1, a1, t0 + + j .Ldec_blocks_192 +.Ldec_blocks_192_end: + + # Add ciphertext into partial tag + .word 793512535 + + .word 3441586263 + # Update current ctr value to v12 + .word 13616727 + # Convert ctr to big-endian counter. + .word 1220847191 + .word 484903 + + + # The H is at `gcm128_context.Htable[0]` (addr(Xi)+16*2). + # Load H to v1 + addi t1, a5, 32 + .word 3439489111 + .word 33775751 + # Multiply H for each partial tag and XOR them together. + # Handle 1st partial tag + .word 1577713751 + .word 2719522935 + # Handle 2nd to N-th partial tags + li t1, 4 +1: + .word 3441586263 + .word 1061372503 + .word 3439489111 + .word 2987532407 + addi t1, t1, 4 + blt t1, a6, 1b + + + # Save the final tag + .word 34070567 + + # return the processed size. + slli a0, a7, 2 + ret +.size aes_gcm_dec_blocks_192,.-aes_gcm_dec_blocks_192 +.p2align 3 +aes_gcm_dec_blocks_256: + srli t6, a6, 2 + slli t0, a6, 2 + + # We run out of 32 vector registers, so we just preserve some round keys + # and load the remaining round keys inside the aes body. + # We keep the round keys for: + # 1, 2, 4, 5, 7, 8, 10, 11, 13 and 14th keys. + # The following keys will be loaded in the aes body: + # 3, 6, 9, 12 and 15th keys. + .word 3439489111 + # key 1 + .word 34005127 + # key 2 + addi t1, a3, 16 + .word 33775879 + # key 4 + addi t1, a3, 48 + .word 33776007 + # key 5 + addi t1, a3, 64 + .word 33776135 + # key 7 + addi t1, a3, 96 + .word 33776263 + # key 8 + addi t1, a3, 112 + .word 33776391 + # key 10 + addi t1, a3, 144 + .word 33776519 + # key 11 + addi t1, a3, 160 + .word 33776647 + # key 13 + addi t1, a3, 192 + .word 33776775 + # key 14 + addi t1, a3, 208 + .word 33776903 + + # We already have the ciphertext/plaintext and ctr data for the first round. + # Load key 3 + .word 3439489111 + addi t1, a3, 32 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2796629623 + # Load key 6 + .word 3439489111 + addi t1, a3, 80 + .word 33777031 + .word 220754007 + .word 2788241015 + .word 2789289591 + .word 2796629623 + # Load key 9 + .word 3439489111 + addi t1, a3, 128 + .word 33777031 + .word 220754007 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 12 + .word 3439489111 + addi t1, a3, 176 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2796629623 + # Load key 15 + .word 3439489111 + addi t1, a3, 224 + .word 33777031 + .word 220754007 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr result. + .word 801902167 + + bnez t4, 1f + + ## without padding + # Store ciphertext/plaintext + .word 33943079 + j 2f + + ## with padding +1: + # Store ciphertext/plaintext using mask + .word 388647 + + # Fill zero for the padding blocks + .word 154071127 + .word 1577074263 + + # We have used mask register for `INPUT_PADDING_MASK` before. We need to + # setup the ctr mask back. + # ctr mask : [000100010001....] + .word 201879639 + li t1, 0b10001000 + .word 1577271383 +2: + + + + add a0, a0, t0 + add a1, a1, t0 + + + .word 220754007 + +.Ldec_blocks_256: + # Compute the partial tags. + # The partial tags will multiply with [H^n, H^n, ..., H^n] + # [tag0, tag1, ...] = + # ([tag0, tag1, ...] + [ciphertext0, ciphertext1, ...] * [H^n, H^n, ..., H^n] + # We will skip the [H^n, H^n, ..., H^n] multiplication for the last round. + beqz t5, .Ldec_blocks_256_end + .word 3003918967 + + .word 86536279 + # Increase ctr in v12. + .word 13616727 + sub t5, t5, a6 + # Load plaintext into v24 + .word 220229719 + .word 33909767 + # Prepare the AES ctr input into v28. + # The ctr data uses big-endian form. + .word 1577455191 + add a0, a0, t0 + .word 86011991 + .word 1237626455 + + + # Load key 3 + .word 3439489111 + addi t1, a3, 32 + .word 33777031 + .word 220754007 + .word 2786307703 + .word 2787192439 + .word 2796629623 + # Load key 6 + .word 3439489111 + addi t1, a3, 80 + .word 33777031 + .word 220754007 + .word 2788241015 + .word 2789289591 + .word 2796629623 + # Load key 9 + .word 3439489111 + addi t1, a3, 128 + .word 33777031 + .word 220754007 + .word 2790338167 + .word 2791386743 + .word 2796629623 + # Load key 12 + .word 3439489111 + addi t1, a3, 176 + .word 33777031 + .word 220754007 + .word 2792435319 + .word 2793483895 + .word 2796629623 + # Load key 15 + .word 3439489111 + addi t1, a3, 224 + .word 33777031 + .word 220754007 + .word 2794532471 + .word 2795581047 + .word 2796662391 + + + # Compute AES ctr plaintext result. + .word 801902167 + + # Store plaintext + .word 33943079 + add a1, a1, t0 + + j .Ldec_blocks_256 +.Ldec_blocks_256_end: + + # Add ciphertext into partial tag + .word 793512535 + + .word 3441586263 + # Update current ctr value to v12 + .word 13616727 + # Convert ctr to big-endian counter. + .word 1220847191 + .word 484903 + + + # The H is at `gcm128_context.Htable[0]` (addr(Xi)+16*2). + # Load H to v1 + addi t1, a5, 32 + .word 3439489111 + .word 33775751 + # Multiply H for each partial tag and XOR them together. + # Handle 1st partial tag + .word 1577713751 + .word 2719522935 + # Handle 2nd to N-th partial tags + li t1, 4 +1: + .word 3441586263 + .word 1061372503 + .word 3439489111 + .word 2987532407 + addi t1, t1, 4 + blt t1, a6, 1b + + + # Save the final tag + .word 34070567 + + # return the processed size. + slli a0, a7, 2 + ret +.size aes_gcm_dec_blocks_256,.-aes_gcm_dec_blocks_256 diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64-zvkb-zvbc.s b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64-zvkb-zvbc.s new file mode 100644 index 00000000000000..ca549d473a4e44 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64-zvkb-zvbc.s @@ -0,0 +1,268 @@ +.text +.p2align 3 +.globl gcm_init_rv64i_zvkb_zvbc +.type gcm_init_rv64i_zvkb_zvbc,@function +gcm_init_rv64i_zvkb_zvbc: + # Load/store data in reverse order. + # This is needed as a part of endianness swap. + add a1, a1, 8 + li t0, -8 + li t1, 63 + la t2, Lpolymod + + .word 0xc1817057 # vsetivli x0, 2, e64, m1, tu, mu + + .word 173404295 # vlse64.v v1, (a1), t0 + .word 33812743 # vle64.v v2, (t2) + + # Shift one left and get the carry bits. + .word 2719171031 # vsrl.vx v3, v1, t1 + .word 2517676247 # vsll.vi v1, v1, 1 + + # Use the fact that the polynomial degree is no more than 128, + # i.e. only the LSB of the upper half could be set. + # Thanks to this we don't need to do the full reduction here. + # Instead simply subtract the reduction polynomial. + # This idea was taken from x86 ghash implementation in OpenSSL. + .word 976269911 # vslideup.vi v4, v3, 1 + .word 1043378647 # vslidedown.vi v3, v3, 1 + + .word 1577136215 # vmv.v.i v0, 2 + .word 672268503 # vor.vv v1, v1, v4, v0.t + + # Need to set the mask to 3, if the carry bit is set. + .word 1577156695 # vmv.v.v v0, v3 + .word 1577071063 # vmv.v.i v3, 0 + .word 1546760663 # vmerge.vim v3, v3, 3, v0 + .word 1577156695 # vmv.v.v v0, v3 + + .word 739311831 # vxor.vv v1, v1, v2, v0.t + + .word 33910951 # vse64.v v1, (a0) + ret +.size gcm_init_rv64i_zvkb_zvbc,.-gcm_init_rv64i_zvkb_zvbc +.text +.p2align 3 +.globl gcm_gmult_rv64i_zvkb_zvbc +.type gcm_gmult_rv64i_zvkb_zvbc,@function +gcm_gmult_rv64i_zvkb_zvbc: + ld t0, (a1) + ld t1, 8(a1) + li t2, 63 + la t3, Lpolymod + ld t3, 8(t3) + + # Load/store data in reverse order. + # This is needed as a part of endianness swap. + add a0, a0, 8 + li t4, -8 + + .word 0xc1817057 # vsetivli x0, 2, e64, m1, tu, mu + + .word 198537863 # vlse64.v v5, (a0), t4 + .word 1247060695 # vrev8.v v5, v5 + + # Multiplication + + # Do two 64x64 multiplications in one go to save some time + # and simplify things. + + # A = a1a0 (t1, t0) + # B = b1b0 (v5) + # C = c1c0 (256 bit) + # c1 = a1b1 + (a0b1)h + (a1b0)h + # c0 = a0b0 + (a0b1)l + (a1b0)h + + # v1 = (a0b1)l,(a0b0)l + .word 844292311 # vclmul.vx v1, v5, t0 + # v3 = (a0b1)h,(a0b0)h + .word 911401431 # vclmulh.vx v3, v5, t0 + + # v4 = (a1b1)l,(a1b0)l + .word 844325463 # vclmul.vx v4, v5, t1 + # v2 = (a1b1)h,(a1b0)h + .word 911434071 # vclmulh.vx v2, v5, t1 + + # Is there a better way to do this? + # Would need to swap the order of elements within a vector register. + .word 976270039 # vslideup.vi v5, v3, 1 + .word 977318743 # vslideup.vi v6, v4, 1 + .word 1043378647 # vslidedown.vi v3, v3, 1 + .word 1044427351 # vslidedown.vi v4, v4, 1 + + .word 1577103447 # vmv.v.i v0, 1 + # v2 += (a0b1)h + .word 740393303 # vxor.vv v2, v2, v3, v0.t + # v2 += (a1b1)l + .word 740426071 # vxor.vv v2, v2, v4, v0.t + + .word 1577136215 # vmv.v.i v0, 2 + # v1 += (a0b0)h,0 + .word 739410135 # vxor.vv v1, v1, v5, v0.t + # v1 += (a1b0)l,0 + .word 739442903 # vxor.vv v1, v1, v6, v0.t + + # Now the 256bit product should be stored in (v2,v1) + # v1 = (a0b1)l + (a0b0)h + (a1b0)l, (a0b0)l + # v2 = (a1b1)h, (a1b0)h + (a0b1)h + (a1b1)l + + # Reduction + # Let C := A*B = c3,c2,c1,c0 = v2[1],v2[0],v1[1],v1[0] + # This is a slight variation of the Gueron's Montgomery reduction. + # The difference being the order of some operations has been changed, + # to make a better use of vclmul(h) instructions. + + # First step: + # c1 += (c0 * P)l + # vmv.v.i v0, 2 + .word 940618199 # vslideup.vi v3, v1, 1, v0.t + .word 809394647 # vclmul.vx v3, v3, t3, v0.t + .word 739344599 # vxor.vv v1, v1, v3, v0.t + + # Second step: + # D = d1,d0 is final result + # We want: + # m1 = c1 + (c1 * P)h + # m0 = (c1 * P)l + (c0 * P)h + c0 + # d1 = c3 + m1 + # d0 = c2 + m0 + + #v3 = (c1 * P)l, 0 + .word 807297495 # vclmul.vx v3, v1, t3, v0.t + #v4 = (c1 * P)h, (c0 * P)h + .word 907960919 # vclmulh.vx v4, v1, t3 + + .word 1577103447 # vmv.v.i v0, 1 + .word 1043378647 # vslidedown.vi v3, v3, 1 + + .word 772931799 # vxor.vv v1, v1, v4 + .word 739344599 # vxor.vv v1, v1, v3, v0.t + + # XOR in the upper upper part of the product + .word 773882199 # vxor.vv v2, v2, v1 + + .word 1243914583 # vrev8.v v2, v2 + .word 198537511 # vsse64.v v2, (a0), t4 + ret +.size gcm_gmult_rv64i_zvkb_zvbc,.-gcm_gmult_rv64i_zvkb_zvbc +.p2align 3 +.globl gcm_ghash_rv64i_zvkb_zvbc +.type gcm_ghash_rv64i_zvkb_zvbc,@function +gcm_ghash_rv64i_zvkb_zvbc: + ld t0, (a1) + ld t1, 8(a1) + li t2, 63 + la t3, Lpolymod + ld t3, 8(t3) + + # Load/store data in reverse order. + # This is needed as a part of endianness swap. + add a0, a0, 8 + add a2, a2, 8 + li t4, -8 + + .word 0xc1817057 # vsetivli x0, 2, e64, m1, tu, mu + + .word 198537863 # vlse64.v v5, (a0), t4 + +Lstep: + # Read input data + .word 198603655 # vle64.v v0, (a2) + add a2, a2, 16 + add a3, a3, -16 + # XOR them into Xi + .word 777224919 # vxor.vv v0, v0, v1 + + .word 1247060695 # vrev8.v v5, v5 + + # Multiplication + + # Do two 64x64 multiplications in one go to save some time + # and simplify things. + + # A = a1a0 (t1, t0) + # B = b1b0 (v5) + # C = c1c0 (256 bit) + # c1 = a1b1 + (a0b1)h + (a1b0)h + # c0 = a0b0 + (a0b1)l + (a1b0)h + + # v1 = (a0b1)l,(a0b0)l + .word 844292311 # vclmul.vx v1, v5, t0 + # v3 = (a0b1)h,(a0b0)h + .word 911401431 # vclmulh.vx v3, v5, t0 + + # v4 = (a1b1)l,(a1b0)l + .word 844325463 # vclmul.vx v4, v5, t1 + # v2 = (a1b1)h,(a1b0)h + .word 911434071 # vclmulh.vx v2, v5, t1 + + # Is there a better way to do this? + # Would need to swap the order of elements within a vector register. + .word 976270039 # vslideup.vi v5, v3, 1 + .word 977318743 # vslideup.vi v6, v4, 1 + .word 1043378647 # vslidedown.vi v3, v3, 1 + .word 1044427351 # vslidedown.vi v4, v4, 1 + + .word 1577103447 # vmv.v.i v0, 1 + # v2 += (a0b1)h + .word 740393303 # vxor.vv v2, v2, v3, v0.t + # v2 += (a1b1)l + .word 740426071 # vxor.vv v2, v2, v4, v0.t + + .word 1577136215 # vmv.v.i v0, 2 + # v1 += (a0b0)h,0 + .word 739410135 # vxor.vv v1, v1, v5, v0.t + # v1 += (a1b0)l,0 + .word 739442903 # vxor.vv v1, v1, v6, v0.t + + # Now the 256bit product should be stored in (v2,v1) + # v1 = (a0b1)l + (a0b0)h + (a1b0)l, (a0b0)l + # v2 = (a1b1)h, (a1b0)h + (a0b1)h + (a1b1)l + + # Reduction + # Let C := A*B = c3,c2,c1,c0 = v2[1],v2[0],v1[1],v1[0] + # This is a slight variation of the Gueron's Montgomery reduction. + # The difference being the order of some operations has been changed, + # to make a better use of vclmul(h) instructions. + + # First step: + # c1 += (c0 * P)l + # vmv.v.i v0, 2 + .word 940618199 # vslideup.vi v3, v1, 1, v0.t + .word 809394647 # vclmul.vx v3, v3, t3, v0.t + .word 739344599 # vxor.vv v1, v1, v3, v0.t + + # Second step: + # D = d1,d0 is final result + # We want: + # m1 = c1 + (c1 * P)h + # m0 = (c1 * P)l + (c0 * P)h + c0 + # d1 = c3 + m1 + # d0 = c2 + m0 + + #v3 = (c1 * P)l, 0 + .word 807297495 # vclmul.vx v3, v1, t3, v0.t + #v4 = (c1 * P)h, (c0 * P)h + .word 907960919 # vclmulh.vx v4, v1, t3 + + .word 1577103447 # vmv.v.i v0, 1 + .word 1043378647 # vslidedown.vi v3, v3, 1 + + .word 772931799 # vxor.vv v1, v1, v4 + .word 739344599 # vxor.vv v1, v1, v3, v0.t + + # XOR in the upper upper part of the product + .word 773882199 # vxor.vv v2, v2, v1 + + .word 1243914967 # vrev8.v v2, v2 + + bnez a3, Lstep + + .word 198537895 # vsse64.v v2, (a0), t4 + ret +.size gcm_ghash_rv64i_zvkb_zvbc,.-gcm_ghash_rv64i_zvkb_zvbc +.p2align 4 +Lpolymod: + .dword 0x0000000000000001 + .dword 0xc200000000000000 +.size Lpolymod,.-Lpolymod diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64-zvkg.s b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64-zvkg.s new file mode 100644 index 00000000000000..759c7c9c9e4df7 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64-zvkg.s @@ -0,0 +1,81 @@ +.text +.p2align 3 +.globl gcm_init_rv64i_zvkg +.type gcm_init_rv64i_zvkg,@function +gcm_init_rv64i_zvkg: + ld a2, 0(a1) + ld a3, 8(a1) + sb a2, 7(a0) + srli t0, a2, 8 + sb t0, 6(a0) + srli t0, a2, 16 + sb t0, 5(a0) + srli t0, a2, 24 + sb t0, 4(a0) + srli t0, a2, 32 + sb t0, 3(a0) + srli t0, a2, 40 + sb t0, 2(a0) + srli t0, a2, 48 + sb t0, 1(a0) + srli t0, a2, 56 + sb t0, 0(a0) + + sb a3, 15(a0) + srli t0, a3, 8 + sb t0, 14(a0) + srli t0, a3, 16 + sb t0, 13(a0) + srli t0, a3, 24 + sb t0, 12(a0) + srli t0, a3, 32 + sb t0, 11(a0) + srli t0, a3, 40 + sb t0, 10(a0) + srli t0, a3, 48 + sb t0, 9(a0) + srli t0, a3, 56 + sb t0, 8(a0) + + ret +.size gcm_init_rv64i_zvkg,.-gcm_init_rv64i_zvkg +.p2align 3 +.globl gcm_init_rv64i_zvkg_zvkb +.type gcm_init_rv64i_zvkg_zvkb,@function +gcm_init_rv64i_zvkg_zvkb: + .word 0xc1817057 # vsetivli x0, 2, e64, m1, ta, ma + .word 33943559 # vle64.v v0, (a1) + .word 1241817175 # vrev8.v v0, v0 + .word 33910823 # vse64.v v0, (a0) + ret +.size gcm_init_rv64i_zvkg_zvkb,.-gcm_init_rv64i_zvkg_zvkb +.p2align 3 +.globl gcm_gmult_rv64i_zvkg +.type gcm_gmult_rv64i_zvkg,@function +gcm_gmult_rv64i_zvkg: + .word 0xc1027057 + .word 33939719 + .word 33906823 + .word 2720571639 + .word 33906855 + ret +.size gcm_gmult_rv64i_zvkg,.-gcm_gmult_rv64i_zvkg +.p2align 3 +.globl gcm_ghash_rv64i_zvkg +.type gcm_ghash_rv64i_zvkg,@function +gcm_ghash_rv64i_zvkg: + .word 0xc1027057 + .word 33939719 + .word 33906823 + +Lstep: + .word 33972615 + add a2, a2, 16 + add a3, a3, -16 + .word 2988548343 + bnez a3, Lstep + + .word 33906855 + ret + +.size gcm_ghash_rv64i_zvkg,.-gcm_ghash_rv64i_zvkg diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64.s b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64.s new file mode 100644 index 00000000000000..33776697368530 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64.s @@ -0,0 +1,613 @@ +.text +.p2align 3 +.globl gcm_init_rv64i_zbc +.type gcm_init_rv64i_zbc,@function +gcm_init_rv64i_zbc: + ld a2,0(a1) + ld a3,8(a1) + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a2, 1 + and t1, t1, t0 + and a2, a2, t0 + srli a2, a2, 1 + or a2, t1, a2 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a2, 2 + and t1, t1, t0 + and a2, a2, t0 + srli a2, a2, 2 + or a2, t1, a2 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a2, 4 + and t1, t1, t0 + and a2, a2, t0 + srli a2, a2, 4 + or a2, t1, a2 + + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a3, 1 + and t1, t1, t0 + and a3, a3, t0 + srli a3, a3, 1 + or a3, t1, a3 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a3, 2 + and t1, t1, t0 + and a3, a3, t0 + srli a3, a3, 2 + or a3, t1, a3 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a3, 4 + and t1, t1, t0 + and a3, a3, t0 + srli a3, a3, 4 + or a3, t1, a3 + + sb a2, 7(a0) + srli t0, a2, 8 + sb t0, 6(a0) + srli t0, a2, 16 + sb t0, 5(a0) + srli t0, a2, 24 + sb t0, 4(a0) + srli t0, a2, 32 + sb t0, 3(a0) + srli t0, a2, 40 + sb t0, 2(a0) + srli t0, a2, 48 + sb t0, 1(a0) + srli t0, a2, 56 + sb t0, 0(a0) + + sb a3, 15(a0) + srli t0, a3, 8 + sb t0, 14(a0) + srli t0, a3, 16 + sb t0, 13(a0) + srli t0, a3, 24 + sb t0, 12(a0) + srli t0, a3, 32 + sb t0, 11(a0) + srli t0, a3, 40 + sb t0, 10(a0) + srli t0, a3, 48 + sb t0, 9(a0) + srli t0, a3, 56 + sb t0, 8(a0) + + ret +.size gcm_init_rv64i_zbc,.-gcm_init_rv64i_zbc +.p2align 3 +.globl gcm_init_rv64i_zbc__zbb +.type gcm_init_rv64i_zbc__zbb,@function +gcm_init_rv64i_zbc__zbb: + ld a2,0(a1) + ld a3,8(a1) + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a2, 1 + and t1, t1, t0 + and a2, a2, t0 + srli a2, a2, 1 + or a2, t1, a2 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a2, 2 + and t1, t1, t0 + and a2, a2, t0 + srli a2, a2, 2 + or a2, t1, a2 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a2, 4 + and t1, t1, t0 + and a2, a2, t0 + srli a2, a2, 4 + or a2, t1, a2 + + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a3, 1 + and t1, t1, t0 + and a3, a3, t0 + srli a3, a3, 1 + or a3, t1, a3 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a3, 2 + and t1, t1, t0 + and a3, a3, t0 + srli a3, a3, 2 + or a3, t1, a3 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a3, 4 + and t1, t1, t0 + and a3, a3, t0 + srli a3, a3, 4 + or a3, t1, a3 + + .word 1803965971 + .word 1803998867 + sd a2,0(a0) + sd a3,8(a0) + ret +.size gcm_init_rv64i_zbc__zbb,.-gcm_init_rv64i_zbc__zbb +.p2align 3 +.globl gcm_init_rv64i_zbc__zbkb +.type gcm_init_rv64i_zbc__zbkb,@function +gcm_init_rv64i_zbc__zbkb: + ld t0,0(a1) + ld t1,8(a1) + .word 1752355475 + .word 1752388371 + .word 1803735699 + .word 1803768595 + sd t0,0(a0) + sd t1,8(a0) + ret +.size gcm_init_rv64i_zbc__zbkb,.-gcm_init_rv64i_zbc__zbkb +.p2align 3 +.globl gcm_gmult_rv64i_zbc +.type gcm_gmult_rv64i_zbc,@function +gcm_gmult_rv64i_zbc: + # Load Xi and bit-reverse it + ld a4, 0(a0) + ld a5, 8(a0) + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a4, 1 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 1 + or a4, t1, a4 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a4, 2 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 2 + or a4, t1, a4 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a4, 4 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 4 + or a4, t1, a4 + + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a5, 1 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 1 + or a5, t1, a5 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a5, 2 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 2 + or a5, t1, a5 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a5, 4 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 4 + or a5, t1, a5 + + + # Load the key (already bit-reversed) + ld a6, 0(a1) + ld a7, 8(a1) + + # Load the reduction constant + la t6, Lpolymod + lbu t6, 0(t6) + + # Multiplication (without Karatsuba) + .word 186105395 + .word 186094515 + .word 186072883 + .word 186061619 + xor t2, t2, t5 + .word 185057075 + .word 185048755 + xor t2, t2, t5 + xor t1, t1, t4 + .word 185024307 + .word 185012915 + xor t1, t1, t5 + + # Reduction with clmul + .word 201211699 + .word 201203379 + xor t2, t2, t5 + xor t1, t1, t4 + .word 200523571 + .word 200515251 + xor a5, t1, t5 + xor a4, t0, t4 + + # Bit-reverse Xi back and store it + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a4, 1 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 1 + or a4, t1, a4 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a4, 2 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 2 + or a4, t1, a4 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a4, 4 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 4 + or a4, t1, a4 + + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a5, 1 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 1 + or a5, t1, a5 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a5, 2 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 2 + or a5, t1, a5 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a5, 4 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 4 + or a5, t1, a5 + + sd a4, 0(a0) + sd a5, 8(a0) + ret +.size gcm_gmult_rv64i_zbc,.-gcm_gmult_rv64i_zbc +.p2align 3 +.globl gcm_gmult_rv64i_zbc__zbkb +.type gcm_gmult_rv64i_zbc__zbkb,@function +gcm_gmult_rv64i_zbc__zbkb: + # Load Xi and bit-reverse it + ld a4, 0(a0) + ld a5, 8(a0) + .word 1752651539 + .word 1752684435 + + # Load the key (already bit-reversed) + ld a6, 0(a1) + ld a7, 8(a1) + + # Load the reduction constant + la t6, Lpolymod + lbu t6, 0(t6) + + # Multiplication (without Karatsuba) + .word 186105395 + .word 186094515 + .word 186072883 + .word 186061619 + xor t2, t2, t5 + .word 185057075 + .word 185048755 + xor t2, t2, t5 + xor t1, t1, t4 + .word 185024307 + .word 185012915 + xor t1, t1, t5 + + # Reduction with clmul + .word 201211699 + .word 201203379 + xor t2, t2, t5 + xor t1, t1, t4 + .word 200523571 + .word 200515251 + xor a5, t1, t5 + xor a4, t0, t4 + + # Bit-reverse Xi back and store it + .word 1752651539 + .word 1752684435 + sd a4, 0(a0) + sd a5, 8(a0) + ret +.size gcm_gmult_rv64i_zbc__zbkb,.-gcm_gmult_rv64i_zbc__zbkb +.p2align 3 +.globl gcm_ghash_rv64i_zbc +.type gcm_ghash_rv64i_zbc,@function +gcm_ghash_rv64i_zbc: + # Load Xi and bit-reverse it + ld a4, 0(a0) + ld a5, 8(a0) + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a4, 1 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 1 + or a4, t1, a4 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a4, 2 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 2 + or a4, t1, a4 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a4, 4 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 4 + or a4, t1, a4 + + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a5, 1 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 1 + or a5, t1, a5 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a5, 2 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 2 + or a5, t1, a5 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a5, 4 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 4 + or a5, t1, a5 + + + # Load the key (already bit-reversed) + ld a6, 0(a1) + ld a7, 8(a1) + + # Load the reduction constant + la t6, Lpolymod + lbu t6, 0(t6) + +Lstep: + # Load the input data, bit-reverse them, and XOR them with Xi + ld t4, 0(a2) + ld t5, 8(a2) + add a2, a2, 16 + add a3, a3, -16 + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, t4, 1 + and t1, t1, t0 + and t4, t4, t0 + srli t4, t4, 1 + or t4, t1, t4 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, t4, 2 + and t1, t1, t0 + and t4, t4, t0 + srli t4, t4, 2 + or t4, t1, t4 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, t4, 4 + and t1, t1, t0 + and t4, t4, t0 + srli t4, t4, 4 + or t4, t1, t4 + + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, t5, 1 + and t1, t1, t0 + and t5, t5, t0 + srli t5, t5, 1 + or t5, t1, t5 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, t5, 2 + and t1, t1, t0 + and t5, t5, t0 + srli t5, t5, 2 + or t5, t1, t5 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, t5, 4 + and t1, t1, t0 + and t5, t5, t0 + srli t5, t5, 4 + or t5, t1, t5 + + xor a4, a4, t4 + xor a5, a5, t5 + + # Multiplication (without Karatsuba) + .word 186105395 + .word 186094515 + .word 186072883 + .word 186061619 + xor t2, t2, t5 + .word 185057075 + .word 185048755 + xor t2, t2, t5 + xor t1, t1, t4 + .word 185024307 + .word 185012915 + xor t1, t1, t5 + + # Reduction with clmul + .word 201211699 + .word 201203379 + xor t2, t2, t5 + xor t1, t1, t4 + .word 200523571 + .word 200515251 + xor a5, t1, t5 + xor a4, t0, t4 + + # Iterate over all blocks + bnez a3, Lstep + + # Bit-reverse final Xi back and store it + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a4, 1 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 1 + or a4, t1, a4 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a4, 2 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 2 + or a4, t1, a4 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a4, 4 + and t1, t1, t0 + and a4, a4, t0 + srli a4, a4, 4 + or a4, t1, a4 + + la t2, Lbrev8_const + + ld t0, 0(t2) # 0xAAAAAAAAAAAAAAAA + slli t1, a5, 1 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 1 + or a5, t1, a5 + + ld t0, 8(t2) # 0xCCCCCCCCCCCCCCCC + slli t1, a5, 2 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 2 + or a5, t1, a5 + + ld t0, 16(t2) # 0xF0F0F0F0F0F0F0F0 + slli t1, a5, 4 + and t1, t1, t0 + and a5, a5, t0 + srli a5, a5, 4 + or a5, t1, a5 + + sd a4, 0(a0) + sd a5, 8(a0) + ret +.size gcm_ghash_rv64i_zbc,.-gcm_ghash_rv64i_zbc +.p2align 3 +.globl gcm_ghash_rv64i_zbc__zbkb +.type gcm_ghash_rv64i_zbc__zbkb,@function +gcm_ghash_rv64i_zbc__zbkb: + # Load Xi and bit-reverse it + ld a4, 0(a0) + ld a5, 8(a0) + .word 1752651539 + .word 1752684435 + + # Load the key (already bit-reversed) + ld a6, 0(a1) + ld a7, 8(a1) + + # Load the reduction constant + la t6, Lpolymod + lbu t6, 0(t6) + +Lstep_zkbk: + # Load the input data, bit-reverse them, and XOR them with Xi + ld t4, 0(a2) + ld t5, 8(a2) + add a2, a2, 16 + add a3, a3, -16 + .word 1753144979 + .word 1753177875 + xor a4, a4, t4 + xor a5, a5, t5 + + # Multiplication (without Karatsuba) + .word 186105395 + .word 186094515 + .word 186072883 + .word 186061619 + xor t2, t2, t5 + .word 185057075 + .word 185048755 + xor t2, t2, t5 + xor t1, t1, t4 + .word 185024307 + .word 185012915 + xor t1, t1, t5 + + # Reduction with clmul + .word 201211699 + .word 201203379 + xor t2, t2, t5 + xor t1, t1, t4 + .word 200523571 + .word 200515251 + xor a5, t1, t5 + xor a4, t0, t4 + + # Iterate over all blocks + bnez a3, Lstep_zkbk + + # Bit-reverse final Xi back and store it + .word 1752651539 + .word 1752684435 + sd a4, 0(a0) + sd a5, 8(a0) + ret +.size gcm_ghash_rv64i_zbc__zbkb,.-gcm_ghash_rv64i_zbc__zbkb +.p2align 3 +Lbrev8_const: + .dword 0xAAAAAAAAAAAAAAAA + .dword 0xCCCCCCCCCCCCCCCC + .dword 0xF0F0F0F0F0F0F0F0 +.size Lbrev8_const,.-Lbrev8_const + +Lpolymod: + .byte 0x87 +.size Lpolymod,.-Lpolymod diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/params_idx.c b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/params_idx.c new file mode 100644 index 00000000000000..e5463ca5c8e56e --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/params_idx.c @@ -0,0 +1,3370 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from crypto/params_idx.c.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +/* clang-format off */ + +/* clang-format on */ + +#include "internal/e_os.h" +#include "internal/param_names.h" +#include + +/* Machine generated TRIE -- generated by util/perl/OpenSSL/paramnames.pm */ +/* clang-format off */ +int ossl_param_find_pidx(const char *s) +{ + switch(s[0]) { + default: + break; + case 'a': + switch(s[1]) { + default: + break; + case 'c': + if (strcmp("vp-info", s + 2) == 0) + return PIDX_KDF_PARAM_X942_ACVPINFO; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'd': + if (strcmp("itional-random", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_ADD_RANDOM; + break; + case '\0': + return PIDX_KDF_PARAM_ARGON2_AD; + } + break; + case 'e': + if (strcmp("ad", s + 2) == 0) + return PIDX_CIPHER_PARAM_AEAD; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("id_param", s + 4) == 0) + return PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD; + break; + case 'i': + if (strcmp("d-absent", s + 4) == 0) + return PIDX_DIGEST_PARAM_ALGID_ABSENT; + break; + case 'o': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'h': + switch(s[8]) { + default: + break; + case 'm': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '-': + if (strcmp("params", s + 13) == 0) + return PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS; + break; + case '\0': + return PIDX_ALG_PARAM_ALGORITHM_ID; + } + } + } + } + } + } + } + } + } + } + break; + case 'i': + if (strcmp("as", s + 3) == 0) + return PIDX_STORE_PARAM_ALIAS; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_A; + } + break; + case 'b': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("sis-type", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_CHAR2_TYPE; + break; + case 'i': + if (strcmp("ts", s + 2) == 0) + return PIDX_PKEY_PARAM_BITS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("size", s + 6) == 0) + return PIDX_MAC_PARAM_BLOCK_SIZE; + break; + case '_': + if (strcmp("padding", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING; + break; + case 's': + if (strcmp("ize", s + 6) == 0) + return PIDX_DIGEST_PARAM_BLOCK_SIZE; + } + } + } + } + break; + case 'u': + if (strcmp("ildinfo", s + 2) == 0) + return PIDX_PROV_PARAM_BUILDINFO; + break; + case '\0': + return PIDX_PKEY_PARAM_EC_B; + } + break; + case 'c': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_C_ROUNDS; + break; + case 'e': + if (strcmp("kalg", s + 2) == 0) + return PIDX_KDF_PARAM_CEK_ALG; + break; + case 'i': + if (strcmp("pher", s + 2) == 0) + return PIDX_ALG_PARAM_CIPHER; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("actor", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_COFACTOR; + break; + case 'n': + switch(s[3]) { + default: + break; + case 's': + if (strcmp("tant", s + 4) == 0) + return PIDX_KDF_PARAM_CONSTANT; + break; + case 't': + if (strcmp("ext-string", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_CONTEXT_STRING; + } + } + break; + case 't': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '_': + if (strcmp("mode", s + 4) == 0) + return PIDX_CIPHER_PARAM_CTS_MODE; + break; + case '\0': + return PIDX_CIPHER_PARAM_CTS; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '-': + if (strcmp("iv", s + 7) == 0) + return PIDX_CIPHER_PARAM_CUSTOM_IV; + break; + case '\0': + return PIDX_MAC_PARAM_CUSTOM; + } + } + } + } + } + } + break; + case 'd': + switch(s[1]) { + default: + break; + case '-': + if (strcmp("rounds", s + 2) == 0) + return PIDX_MAC_PARAM_D_ROUNDS; + break; + case 'a': + switch(s[2]) { + default: + break; + case 't': + switch(s[3]) { + default: + break; + case 'a': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 's': + if (strcmp("tructure", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_STRUCTURE; + break; + case 't': + if (strcmp("ype", s + 6) == 0) + return PIDX_OBJECT_PARAM_DATA_TYPE; + } + break; + case '\0': + return PIDX_OBJECT_PARAM_DATA; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + if (strcmp("ded-from-explicit", s + 4) == 0) + return PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS; + break; + case 'r': + if (strcmp("ypt-only", s + 4) == 0) + return PIDX_CIPHER_PARAM_DECRYPT_ONLY; + } + break; + case 'f': + if (strcmp("ault-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_DEFAULT_DIGEST; + break; + case 's': + if (strcmp("c", s + 3) == 0) + return PIDX_OBJECT_PARAM_DESC; + break; + case 't': + if (strcmp("erministic", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_DETERMINISTIC; + } + break; + case 'h': + if (strcmp("kem-ikm", s + 2) == 0) + return PIDX_PKEY_PARAM_DHKEM_IKM; + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("heck", s + 8) == 0) + return PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK; + break; + case 'n': + if (strcmp("oinit", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_NOINIT; + break; + case 'o': + if (strcmp("neshot", s + 8) == 0) + return PIDX_MAC_PARAM_DIGEST_ONESHOT; + break; + case 'p': + if (strcmp("rops", s + 8) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS; + break; + case 's': + if (strcmp("ize", s + 8) == 0) + return PIDX_PKEY_PARAM_DIGEST_SIZE; + } + break; + case '\0': + return PIDX_STORE_PARAM_DIGEST; + } + } + } + } + break; + case 's': + if (strcmp("tid", s + 3) == 0) + return PIDX_PKEY_PARAM_DIST_ID; + } + break; + case 'r': + if (strcmp("bg-no-trunc-md", s + 2) == 0) + return PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST; + break; + case 's': + if (strcmp("a-sign-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_DSA_SIGN_DISABLED; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_D; + } + break; + case 'e': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("rly_clean", s + 2) == 0) + return PIDX_KDF_PARAM_EARLY_CLEAN; + break; + case 'c': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'h': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'a': + switch(s[9]) { + default: + break; + case 'c': + switch(s[10]) { + default: + break; + case 't': + switch(s[11]) { + default: + break; + case 'o': + switch(s[12]) { + default: + break; + case 'r': + switch(s[13]) { + default: + break; + case '-': + switch(s[14]) { + default: + break; + case 'c': + if (strcmp("heck", s + 15) == 0) + return PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK; + break; + case 'm': + if (strcmp("ode", s + 15) == 0) + return PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE; + } + } + } + } + } + } + } + } + } + } + } + } + } + break; + case 'm': + if (strcmp("s_check", s + 2) == 0) + return PIDX_KDF_PARAM_FIPS_EMS_CHECK; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'o': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("d-pub-key", s + 6) == 0) + return PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY; + break; + case 'i': + if (strcmp("ng", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_ENCODING; + } + } + break; + case 'r': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'c': + if (strcmp("heck", s + 9) == 0) + return PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK; + break; + case 'l': + if (strcmp("evel", s + 9) == 0) + return PIDX_ENCODER_PARAM_ENCRYPT_LEVEL; + } + } + } + } + } + } + break; + case 'g': + if (strcmp("ine", s + 3) == 0) + return PIDX_ALG_PARAM_ENGINE; + break; + case 't': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'o': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'y': + switch(s[7]) { + default: + break; + case '_': + if (strcmp("required", s + 8) == 0) + return PIDX_DRBG_PARAM_ENTROPY_REQUIRED; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_ENTROPY; + } + } + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_E; + break; + case 'x': + if (strcmp("pect", s + 2) == 0) + return PIDX_STORE_PARAM_EXPECT; + } + break; + case 'f': + switch(s[1]) { + default: + break; + case 'i': + switch(s[2]) { + default: + break; + case 'e': + if (strcmp("ld-type", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_FIELD_TYPE; + break; + case 'n': + if (strcmp("gerprint", s + 3) == 0) + return PIDX_STORE_PARAM_FINGERPRINT; + break; + case 'p': + if (strcmp("s-indicator", s + 3) == 0) + return PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR; + } + } + break; + case 'g': + switch(s[1]) { + default: + break; + case 'e': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_GENERATE; + } + break; + case 'o': + if (strcmp("r", s + 8) == 0) + return PIDX_PKEY_PARAM_EC_GENERATOR; + } + } + } + } + } + } + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_GINDEX; + break; + case 'r': + switch(s[2]) { + default: + break; + case 'o': + switch(s[3]) { + default: + break; + case 'u': + switch(s[4]) { + default: + break; + case 'p': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("check", s + 6) == 0) + return PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE; + break; + case '\0': + return PIDX_PKEY_PARAM_GROUP_NAME; + } + } + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_G; + } + break; + case 'h': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("s-randkey", s + 2) == 0) + return PIDX_CIPHER_PARAM_HAS_RAND_KEY; + break; + case 'i': + if (strcmp("ndex", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_H; + break; + case 'k': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'f': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 6) == 0) + return PIDX_PROV_PARAM_HKDF_KEY_CHECK; + } + } + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_HMAC_KEY_CHECK; + break; + case 's': + if (strcmp("_padding", s + 2) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING; + } + break; + case 'i': + switch(s[1]) { + default: + break; + case 'd': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_PKCS12_ID; + } + break; + case 'k': + if (strcmp("me", s + 2) == 0) + return PIDX_KEM_PARAM_IKME; + break; + case 'm': + if (strcmp("plicit-rejection", s + 2) == 0) + return PIDX_PKEY_PARAM_IMPLICIT_REJECTION; + break; + case 'n': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("lude-public", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC; + break; + case 'f': + if (strcmp("o", s + 3) == 0) + return PIDX_PASSPHRASE_PARAM_INFO; + break; + case 'p': + if (strcmp("ut-type", s + 3) == 0) + return PIDX_STORE_PARAM_INPUT_TYPE; + break; + case 's': + if (strcmp("tance", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_INSTANCE; + } + break; + case 't': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'r': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("tion", s + 5) == 0) + return PIDX_GEN_PARAM_ITERATION; + break; + case '\0': + return PIDX_KDF_PARAM_ITER; + } + } + } + break; + case 'v': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("generated", s + 3) == 0) + return PIDX_CIPHER_PARAM_AEAD_IV_GENERATED; + break; + case 'l': + if (strcmp("en", s + 3) == 0) + return PIDX_CIPHER_PARAM_IVLEN; + break; + case '\0': + return PIDX_MAC_PARAM_IV; + } + } + break; + case 'j': + switch(s[1]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_COFACTOR; + } + break; + case 'k': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K2; + } + break; + case '3': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_PP_K3; + } + break; + case 'a': + if (strcmp("t", s + 2) == 0) + return PIDX_SIGNATURE_PARAM_KAT; + break; + case 'b': + if (strcmp("kdf-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KBKDF_KEY_CHECK; + break; + case 'd': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case 's': + switch(s[9]) { + default: + break; + case 't': + switch(s[10]) { + default: + break; + case '-': + if (strcmp("props", s + 11) == 0) + return PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_KDF_DIGEST; + } + } + } + } + } + } + break; + case 'o': + if (strcmp("utlen", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_OUTLEN; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_TYPE; + break; + case 'u': + if (strcmp("km", s + 5) == 0) + return PIDX_EXCHANGE_PARAM_KDF_UKM; + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'y': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("heck", s + 5) == 0) + return PIDX_PKEY_PARAM_FIPS_KEY_CHECK; + break; + case 'l': + if (strcmp("ength", s + 5) == 0) + return PIDX_SKEY_PARAM_KEY_LENGTH; + } + break; + case 'b': + if (strcmp("its", s + 4) == 0) + return PIDX_CIPHER_PARAM_RC2_KEYBITS; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_KEYLEN; + break; + case '\0': + return PIDX_MAC_PARAM_KEY; + } + } + break; + case 'm': + if (strcmp("ac-key-check", s + 2) == 0) + return PIDX_PROV_PARAM_KMAC_KEY_CHECK; + } + break; + case 'l': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("el", s + 3) == 0) + return PIDX_KDF_PARAM_LABEL; + break; + case 'n': + if (strcmp("es", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_LANES; + } + } + break; + case 'm': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'k': + if (strcmp("ey", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_MAC_KEY; + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_KDF_PARAM_MAC_SIZE; + break; + case '\0': + return PIDX_ALG_PARAM_MAC; + } + break; + case 'n': + if (strcmp("datory-digest", s + 3) == 0) + return PIDX_PKEY_PARAM_MANDATORY_DIGEST; + break; + case 'x': + switch(s[3]) { + default: + break; + case '-': + if (strcmp("size", s + 4) == 0) + return PIDX_PKEY_PARAM_MAX_SIZE; + break; + case '_': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("dinlen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_ADINLEN; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("rly_data", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA; + break; + case 'n': + if (strcmp("tropylen", s + 6) == 0) + return PIDX_DRBG_PARAM_MAX_ENTROPYLEN; + } + break; + case 'f': + if (strcmp("rag_len", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_NONCELEN; + break; + case 'p': + if (strcmp("erslen", s + 5) == 0) + return PIDX_DRBG_PARAM_MAX_PERSLEN; + break; + case 'r': + if (strcmp("equest", s + 5) == 0) + return PIDX_RAND_PARAM_MAX_REQUEST; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MAX_LENGTH; + break; + case 'm': + if (strcmp("em_bytes", s + 4) == 0) + return PIDX_KDF_PARAM_SCRYPT_MAXMEM; + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'm': + if (strcmp("cost", s + 3) == 0) + return PIDX_KDF_PARAM_ARGON2_MEMCOST; + break; + case 's': + if (strcmp("sage-encoding", s + 3) == 0) + return PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING; + } + break; + case 'g': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'd': + if (strcmp("igest", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_DIGEST; + break; + case 'p': + if (strcmp("roperties", s + 6) == 0) + return PIDX_PKEY_PARAM_MGF1_PROPERTIES; + } + } + break; + case '\0': + return PIDX_PKEY_PARAM_MASKGENFUNC; + } + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'c': + if (strcmp("alg", s + 3) == 0) + return PIDX_DIGEST_PARAM_MICALG; + break; + case 'n': + switch(s[3]) { + default: + break; + case '_': + switch(s[4]) { + default: + break; + case 'e': + if (strcmp("ntropylen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_ENTROPYLEN; + break; + case 'n': + if (strcmp("oncelen", s + 5) == 0) + return PIDX_DRBG_PARAM_MIN_NONCELEN; + } + break; + case 'i': + if (strcmp("um_length", s + 4) == 0) + return PIDX_DRBG_PARAM_MIN_LENGTH; + } + } + break; + case 'l': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 's': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + if (strcmp("nput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS; + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED; + } + } + } + } + break; + case 'k': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'm': + switch(s[6]) { + default: + break; + case '.': + switch(s[7]) { + default: + break; + case 'i': + switch(s[8]) { + default: + break; + case 'm': + if (strcmp("port_pct_type", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE; + break; + case 'n': + if (strcmp("put_formats", s + 9) == 0) + return PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS; + } + break; + case 'o': + if (strcmp("utput_formats", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS; + break; + case 'p': + if (strcmp("refer_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED; + break; + case 'r': + if (strcmp("etain_seed", s + 8) == 0) + return PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED; + } + } + } + } + } + } + break; + case 'o': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case '\0': + return PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE; + } + break; + case 'u': + if (strcmp("le-filename", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_MODULE_FILENAME; + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_SIGNATURE_PARAM_MU; + } + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_M; + } + break; + case 'n': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("me", s + 2) == 0) + return PIDX_STORE_PARAM_ISSUER; + break; + case 'o': + switch(s[2]) { + default: + break; + case '-': + if (strcmp("short-mac", s + 3) == 0) + return PIDX_PROV_PARAM_NO_SHORT_MAC; + break; + case 'n': + switch(s[3]) { + default: + break; + case 'c': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '-': + if (strcmp("type", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_NONCE_TYPE; + break; + case '\0': + return PIDX_KDF_PARAM_HMACDRBG_NONCE; + } + } + } + } + break; + case 'u': + if (strcmp("m", s + 2) == 0) + return PIDX_CIPHER_PARAM_NUM; + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_N; + } + break; + case 'o': + switch(s[1]) { + default: + break; + case 'a': + if (strcmp("ep-label", s + 2) == 0) + return PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL; + break; + case 'p': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'n': + if (strcmp("ssl-version", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_VERSION; + break; + case 'r': + if (strcmp("ation", s + 4) == 0) + return PIDX_KEM_PARAM_OPERATION; + } + break; + case 't': + if (strcmp("ions", s + 3) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS; + } + break; + case 'r': + if (strcmp("der", s + 2) == 0) + return PIDX_PKEY_PARAM_EC_ORDER; + } + break; + case 'p': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_P2; + } + break; + case 'a': + switch(s[2]) { + default: + break; + case 'd': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'm': + if (strcmp("ode", s + 5) == 0) + return PIDX_PKEY_PARAM_PAD_MODE; + break; + case 't': + if (strcmp("ype", s + 5) == 0) + return PIDX_DIGEST_PARAM_PAD_TYPE; + } + break; + case 'd': + if (strcmp("ing", s + 4) == 0) + return PIDX_CIPHER_PARAM_PADDING; + break; + case '\0': + return PIDX_EXCHANGE_PARAM_PAD; + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'y': + switch(s[5]) { + default: + break; + case 'u': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYUINFO; + break; + case 'v': + if (strcmp("-info", s + 6) == 0) + return PIDX_KDF_PARAM_X942_PARTYVINFO; + } + } + } + break; + case 's': + if (strcmp("s", s + 3) == 0) + return PIDX_KDF_PARAM_PASSWORD; + } + break; + case 'b': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("ts", s + 3) == 0) + return PIDX_PKEY_PARAM_FFC_PBITS; + break; + case 'k': + if (strcmp("df2-lower-bound-check", s + 3) == 0) + return PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK; + } + break; + case 'c': + if (strcmp("ounter", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_PCOUNTER; + break; + case 'i': + if (strcmp("peline-tag", s + 2) == 0) + return PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG; + break; + case 'k': + if (strcmp("cs5", s + 2) == 0) + return PIDX_KDF_PARAM_PKCS5; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'i': + if (strcmp("nt-format", s + 3) == 0) + return PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT; + break; + case 't': + if (strcmp("ential", s + 3) == 0) + return PIDX_GEN_PARAM_POTENTIAL; + } + break; + case 'r': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("iction_resistance", s + 4) == 0) + return PIDX_DRBG_PARAM_PREDICTION_RESISTANCE; + break; + case 'f': + if (strcmp("ix", s + 4) == 0) + return PIDX_KDF_PARAM_PREFIX; + } + break; + case 'i': + switch(s[3]) { + default: + break; + case 'm': + if (strcmp("es", s + 4) == 0) + return PIDX_PKEY_PARAM_RSA_PRIMES; + break; + case 'v': + switch(s[4]) { + default: + break; + case '_': + if (strcmp("len", s + 5) == 0) + return PIDX_PKEY_PARAM_DH_PRIV_LEN; + break; + case '\0': + return PIDX_PKEY_PARAM_PRIV_KEY; + } + } + break; + case 'o': + switch(s[3]) { + default: + break; + case 'p': + if (strcmp("erties", s + 4) == 0) + return PIDX_STORE_PARAM_PROPERTIES; + break; + case 'v': + if (strcmp("ider-name", s + 4) == 0) + return PIDX_PROV_PARAM_CORE_PROV_NAME; + } + } + break; + case 'u': + if (strcmp("b", s + 2) == 0) + return PIDX_PKEY_PARAM_PUB_KEY; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_P; + } + break; + case 'q': + switch(s[1]) { + default: + break; + case '1': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q1; + } + break; + case '2': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_Q2; + } + break; + case 'b': + if (strcmp("its", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_QBITS; + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_Q; + break; + case 'x': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_X; + } + break; + case 'y': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_PUB_Y; + } + } + break; + case 'r': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'n': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'k': + if (strcmp("ey", s + 5) == 0) + return PIDX_CIPHER_PARAM_RANDOM_KEY; + break; + case 'o': + if (strcmp("m_data", s + 5) == 0) + return PIDX_DRBG_PARAM_RANDOM_DATA; + } + } + break; + case 'w': + if (strcmp("-bytes", s + 3) == 0) + return PIDX_SKEY_PARAM_RAW_BYTES; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case '_': + switch(s[5]) { + default: + break; + case 'a': + if (strcmp("head", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD; + break; + case 'b': + if (strcmp("uffer_len", s + 6) == 0) + return PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN; + } + } + } + break; + case 'f': + if (strcmp("erence", s + 3) == 0) + return PIDX_OBJECT_PARAM_REFERENCE; + break; + case 's': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case '_': + switch(s[7]) { + default: + break; + case 'c': + if (strcmp("ounter", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_COUNTER; + break; + case 'r': + if (strcmp("equests", s + 8) == 0) + return PIDX_DRBG_PARAM_RESEED_REQUESTS; + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case 'm': + switch(s[10]) { + default: + break; + case 'e': + switch(s[11]) { + default: + break; + case '_': + if (strcmp("interval", s + 12) == 0) + return PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL; + break; + case '\0': + return PIDX_DRBG_PARAM_RESEED_TIME; + } + } + } + } + } + } + } + } + } + } + break; + case 'o': + if (strcmp("unds", s + 2) == 0) + return PIDX_CIPHER_PARAM_ROUNDS; + break; + case 's': + switch(s[2]) { + default: + break; + case 'a': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + switch(s[5]) { + default: + break; + case 'o': + switch(s[6]) { + default: + break; + case 'e': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case 'i': + switch(s[10]) { + default: + break; + case 'c': + switch(s[11]) { + default: + break; + case 'i': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'n': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case '1': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT1; + } + break; + case '2': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT2; + } + break; + case '3': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT3; + } + break; + case '4': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT4; + } + break; + case '5': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT5; + } + break; + case '6': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT6; + } + break; + case '7': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT7; + } + break; + case '8': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT8; + } + break; + case '9': + switch(s[16]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_COEFFICIENT; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'd': + if (strcmp("erive-from-pq", s + 5) == 0) + return PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ; + break; + case 'e': + switch(s[5]) { + default: + break; + case 'x': + switch(s[6]) { + default: + break; + case 'p': + switch(s[7]) { + default: + break; + case 'o': + switch(s[8]) { + default: + break; + case 'n': + switch(s[9]) { + default: + break; + case 'e': + switch(s[10]) { + default: + break; + case 'n': + switch(s[11]) { + default: + break; + case 't': + switch(s[12]) { + default: + break; + case '1': + switch(s[13]) { + default: + break; + case '0': + switch(s[14]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT1; + } + break; + case '2': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT2; + } + break; + case '3': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT3; + } + break; + case '4': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT4; + } + break; + case '5': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT5; + } + break; + case '6': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT6; + } + break; + case '7': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT7; + } + break; + case '8': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT8; + } + break; + case '9': + switch(s[13]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_EXPONENT; + } + } + } + } + } + } + } + } + break; + case 'f': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'o': + switch(s[9]) { + default: + break; + case 'r': + switch(s[10]) { + default: + break; + case '1': + switch(s[11]) { + default: + break; + case '0': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR10; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR1; + } + break; + case '2': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR2; + } + break; + case '3': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR3; + } + break; + case '4': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR4; + } + break; + case '5': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR5; + } + break; + case '6': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR6; + } + break; + case '7': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR7; + } + break; + case '8': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR8; + } + break; + case '9': + switch(s[11]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR9; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_FACTOR; + } + } + } + } + } + } + break; + case 'p': + switch(s[5]) { + default: + break; + case 'k': + if (strcmp("cs15-pad-disabled", s + 6) == 0) + return PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED; + break; + case 's': + if (strcmp("s-saltlen-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK; + } + break; + case 's': + if (strcmp("ign-x931-pad-disabled", s + 5) == 0) + return PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED; + } + } + } + break; + case '\0': + return PIDX_KDF_PARAM_SCRYPT_R; + } + break; + case 's': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'f': + if (strcmp("eprime-generator", s + 3) == 0) + return PIDX_PKEY_PARAM_DH_GENERATOR; + break; + case 'l': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'l': + if (strcmp("en", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_PSS_SALTLEN; + break; + case '\0': + return PIDX_MAC_PARAM_SALT; + } + } + break; + case 'v': + if (strcmp("e-parameters", s + 3) == 0) + return PIDX_ENCODER_PARAM_SAVE_PARAMETERS; + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'c': + switch(s[3]) { + default: + break; + case 'r': + if (strcmp("et", s + 4) == 0) + return PIDX_KDF_PARAM_SECRET; + break; + case 'u': + switch(s[4]) { + default: + break; + case 'r': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'y': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'b': + if (strcmp("its", s + 10) == 0) + return PIDX_PKEY_PARAM_SECURITY_BITS; + break; + case 'c': + if (strcmp("hecks", s + 10) == 0) + return PIDX_PROV_PARAM_SECURITY_CHECKS; + } + } + } + } + } + } + } + break; + case 'e': + if (strcmp("d", s + 3) == 0) + return PIDX_PKEY_PARAM_SLH_DSA_SEED; + break; + case 'r': + if (strcmp("ial", s + 3) == 0) + return PIDX_STORE_PARAM_SERIAL; + break; + case 's': + if (strcmp("sion_id", s + 3) == 0) + return PIDX_KDF_PARAM_SSHKDF_SESSION_ID; + } + break; + case 'i': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'n': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'c': + if (strcmp("heck", s + 6) == 0) + return PIDX_PKEY_PARAM_FIPS_SIGN_CHECK; + break; + case 'x': + if (strcmp("931-pad-check", s + 6) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK; + } + break; + case 'a': + switch(s[5]) { + default: + break; + case 't': + switch(s[6]) { + default: + break; + case 'u': + switch(s[7]) { + default: + break; + case 'r': + switch(s[8]) { + default: + break; + case 'e': + switch(s[9]) { + default: + break; + case '-': + if (strcmp("digest-check", s + 10) == 0) + return PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK; + break; + case '\0': + return PIDX_SIGNATURE_PARAM_SIGNATURE; + } + } + } + } + } + } + } + break; + case 'z': + if (strcmp("e", s + 3) == 0) + return PIDX_MAC_PARAM_SIZE; + } + break; + case 'p': + if (strcmp("eed", s + 2) == 0) + return PIDX_CIPHER_PARAM_SPEED; + break; + case 's': + switch(s[2]) { + default: + break; + case 'h': + switch(s[3]) { + default: + break; + case 'k': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'f': + switch(s[6]) { + default: + break; + case '-': + switch(s[7]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 8) == 0) + return PIDX_PROV_PARAM_SSHKDF_KEY_CHECK; + } + } + } + } + } + break; + case 'k': + switch(s[3]) { + default: + break; + case 'd': + switch(s[4]) { + default: + break; + case 'f': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 7) == 0) + return PIDX_PROV_PARAM_SSKDF_KEY_CHECK; + } + } + } + } + break; + case 'l': + if (strcmp("3-ms", s + 3) == 0) + return PIDX_DIGEST_PARAM_SSL3_MS; + } + break; + case 't': + switch(s[2]) { + default: + break; + case '-': + switch(s[3]) { + default: + break; + case 'd': + if (strcmp("esc", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_DESC; + break; + case 'p': + if (strcmp("hase", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_PHASE; + break; + case 't': + if (strcmp("ype", s + 4) == 0) + return PIDX_PROV_PARAM_SELF_TEST_TYPE; + } + break; + case 'a': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case 'e': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_RAND_PARAM_STATE; + } + break; + case 'u': + if (strcmp("s", s + 5) == 0) + return PIDX_PROV_PARAM_STATUS; + } + } + break; + case 'r': + switch(s[3]) { + default: + break; + case 'e': + switch(s[4]) { + default: + break; + case 'a': + if (strcmp("m_mac", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC; + break; + case 'n': + if (strcmp("gth", s + 5) == 0) + return PIDX_RAND_PARAM_STRENGTH; + } + } + } + break; + case 'u': + switch(s[2]) { + default: + break; + case 'b': + if (strcmp("ject", s + 3) == 0) + return PIDX_STORE_PARAM_SUBJECT; + break; + case 'p': + switch(s[3]) { + default: + break; + case 'p': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + if (strcmp("ivinfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PRIVINFO; + break; + case 'u': + if (strcmp("binfo", s + 7) == 0) + return PIDX_KDF_PARAM_X942_SUPP_PUBINFO; + } + } + } + } + } + } + break; + case 't': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'g': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_CIPHER_PARAM_AEAD_TAGLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TAG; + } + } + break; + case 'd': + if (strcmp("es-encrypt-disabled", s + 2) == 0) + return PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED; + break; + case 'e': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case 't': + switch(s[4]) { + default: + break; + case '-': + if (strcmp("entropy", s + 5) == 0) + return PIDX_SIGNATURE_PARAM_TEST_ENTROPY; + break; + case '_': + switch(s[5]) { + default: + break; + case 'e': + if (strcmp("ntropy", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_ENTROPY; + break; + case 'n': + if (strcmp("once", s + 6) == 0) + return PIDX_RAND_PARAM_TEST_NONCE; + } + } + } + } + break; + case 'h': + if (strcmp("reads", s + 2) == 0) + return PIDX_KDF_PARAM_THREADS; + break; + case 'l': + switch(s[2]) { + default: + break; + case 's': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'c': + if (strcmp("lient-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION; + break; + case 'd': + if (strcmp("ata-size", s + 5) == 0) + return PIDX_MAC_PARAM_TLS_DATA_SIZE; + break; + case 'g': + switch(s[5]) { + default: + break; + case 'r': + switch(s[6]) { + default: + break; + case 'o': + switch(s[7]) { + default: + break; + case 'u': + switch(s[8]) { + default: + break; + case 'p': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'a': + if (strcmp("lg", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_ALG; + break; + case 'i': + switch(s[11]) { + default: + break; + case 'd': + switch(s[12]) { + default: + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_ID; + } + break; + case 's': + if (strcmp("-kem", s + 12) == 0) + return PIDX_CAPABILITY_TLS_GROUP_IS_KEM; + } + break; + case 'n': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'm': + switch(s[13]) { + default: + break; + case 'e': + switch(s[14]) { + default: + break; + case '-': + if (strcmp("internal", s + 15) == 0) + return PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL; + break; + case '\0': + return PIDX_CAPABILITY_TLS_GROUP_NAME; + } + } + } + } + break; + case 's': + if (strcmp("ec-bits", s + 11) == 0) + return PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 'c': + switch(s[7]) { + default: + break; + case '-': + if (strcmp("size", s + 8) == 0) + return PIDX_CIPHER_PARAM_TLS_MAC_SIZE; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS_MAC; + } + break; + case 'x': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS; + } + } + } + break; + case 'i': + switch(s[6]) { + default: + break; + case 'n': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("tls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS; + break; + case 't': + if (strcmp("ls", s + 9) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS; + } + } + } + break; + case 'u': + if (strcmp("lti", s + 6) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK; + } + break; + case 'n': + if (strcmp("egotiated-version", s + 5) == 0) + return PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION; + break; + case 's': + switch(s[5]) { + default: + break; + case 'i': + switch(s[6]) { + default: + break; + case 'g': + switch(s[7]) { + default: + break; + case 'a': + switch(s[8]) { + default: + break; + case 'l': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '-': + switch(s[11]) { + default: + break; + case 'c': + if (strcmp("ode-point", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT; + break; + case 'h': + switch(s[12]) { + default: + break; + case 'a': + switch(s[13]) { + default: + break; + case 's': + switch(s[14]) { + default: + break; + case 'h': + switch(s[15]) { + default: + break; + case '-': + switch(s[16]) { + default: + break; + case 'n': + if (strcmp("ame", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME; + break; + case 'o': + if (strcmp("id", s + 17) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_HASH_OID; + } + } + } + } + } + break; + case 'i': + if (strcmp("ana-name", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME; + break; + case 'k': + switch(s[12]) { + default: + break; + case 'e': + switch(s[13]) { + default: + break; + case 'y': + switch(s[14]) { + default: + break; + case 't': + switch(s[15]) { + default: + break; + case 'y': + switch(s[16]) { + default: + break; + case 'p': + switch(s[17]) { + default: + break; + case 'e': + switch(s[18]) { + default: + break; + case '-': + if (strcmp("oid", s + 19) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID; + break; + case '\0': + return PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE; + } + } + } + } + } + } + } + break; + case 'n': + if (strcmp("ame", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_NAME; + break; + case 'o': + if (strcmp("id", s + 12) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_OID; + break; + case 's': + switch(s[12]) { + default: + break; + case 'e': + if (strcmp("c-bits", s + 13) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS; + break; + case 'i': + switch(s[13]) { + default: + break; + case 'g': + switch(s[14]) { + default: + break; + case '-': + switch(s[15]) { + default: + break; + case 'n': + if (strcmp("ame", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME; + break; + case 'o': + if (strcmp("id", s + 16) == 0) + return PIDX_CAPABILITY_TLS_SIGALG_SIG_OID; + } + } + } + } + } + } + } + } + } + } + } + break; + case 'v': + if (strcmp("ersion", s + 5) == 0) + return PIDX_CIPHER_PARAM_TLS_VERSION; + } + break; + case '1': + switch(s[4]) { + default: + break; + case '-': + switch(s[5]) { + default: + break; + case 'p': + switch(s[6]) { + default: + break; + case 'r': + switch(s[7]) { + default: + break; + case 'f': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK; + break; + case 'e': + if (strcmp("ms-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 10) == 0) + return PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK; + } + } + } + } + } + break; + case '3': + switch(s[5]) { + default: + break; + case '-': + switch(s[6]) { + default: + break; + case 'k': + switch(s[7]) { + default: + break; + case 'd': + switch(s[8]) { + default: + break; + case 'f': + switch(s[9]) { + default: + break; + case '-': + switch(s[10]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 11) == 0) + return PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK; + } + } + } + } + } + } + break; + case 'm': + switch(s[5]) { + default: + break; + case 'u': + switch(s[6]) { + default: + break; + case 'l': + switch(s[7]) { + default: + break; + case 't': + switch(s[8]) { + default: + break; + case 'i': + switch(s[9]) { + default: + break; + case '_': + switch(s[10]) { + default: + break; + case 'a': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'd': + switch(s[13]) { + default: + break; + case 'p': + if (strcmp("acklen", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD; + } + } + } + break; + case 'e': + switch(s[11]) { + default: + break; + case 'n': + switch(s[12]) { + default: + break; + case 'c': + switch(s[13]) { + default: + break; + case 'i': + if (strcmp("n", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN; + break; + case 'l': + if (strcmp("en", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN; + break; + case '\0': + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC; + } + } + } + break; + case 'i': + if (strcmp("nterleave", s + 11) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE; + break; + case 'm': + switch(s[11]) { + default: + break; + case 'a': + switch(s[12]) { + default: + break; + case 'x': + switch(s[13]) { + default: + break; + case 'b': + if (strcmp("ufsz", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE; + break; + case 's': + if (strcmp("ndfrag", s + 14) == 0) + return PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT; + } + } + } + } + } + } + } + } + } + } + break; + case 'a': + switch(s[4]) { + default: + break; + case 'a': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'p': + if (strcmp("ad", s + 7) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD; + break; + case '\0': + return PIDX_CIPHER_PARAM_AEAD_TLS1_AAD; + } + } + } + break; + case 'i': + switch(s[4]) { + default: + break; + case 'v': + switch(s[5]) { + default: + break; + case 'f': + if (strcmp("ixed", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED; + break; + case 'g': + if (strcmp("en", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN; + break; + case 'i': + if (strcmp("nv", s + 6) == 0) + return PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV; + } + } + break; + case 't': + if (strcmp("ree", s + 4) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS; + } + break; + case 'y': + if (strcmp("pe", s + 2) == 0) + return PIDX_PKEY_PARAM_FFC_TYPE; + } + break; + case 'u': + switch(s[1]) { + default: + break; + case 'k': + if (strcmp("m", s + 2) == 0) + return PIDX_KDF_PARAM_UKM; + break; + case 'p': + if (strcmp("dated-iv", s + 2) == 0) + return PIDX_CIPHER_PARAM_UPDATED_IV; + break; + case 's': + switch(s[2]) { + default: + break; + case 'e': + switch(s[3]) { + default: + break; + case '-': + switch(s[4]) { + default: + break; + case 'b': + if (strcmp("its", s + 5) == 0) + return PIDX_CIPHER_PARAM_USE_BITS; + break; + case 'c': + if (strcmp("ofactor-flag", s + 5) == 0) + return PIDX_PKEY_PARAM_USE_COFACTOR_FLAG; + break; + case 'k': + if (strcmp("eybits", s + 5) == 0) + return PIDX_KDF_PARAM_X942_USE_KEYBITS; + break; + case 'l': + switch(s[5]) { + default: + break; + case '\0': + return PIDX_KDF_PARAM_KBKDF_USE_L; + } + break; + case 's': + if (strcmp("eparator", s + 5) == 0) + return PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR; + } + break; + case '_': + switch(s[4]) { + default: + break; + case 'd': + if (strcmp("erivation_function", s + 5) == 0) + return PIDX_DRBG_PARAM_USE_DF; + break; + case 'e': + if (strcmp("tm", s + 5) == 0) + return PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM; + } + } + } + } + break; + case 'v': + switch(s[1]) { + default: + break; + case 'a': + switch(s[2]) { + default: + break; + case 'l': + switch(s[3]) { + default: + break; + case 'i': + switch(s[4]) { + default: + break; + case 'd': + switch(s[5]) { + default: + break; + case 'a': + switch(s[6]) { + default: + break; + case 't': + switch(s[7]) { + default: + break; + case 'e': + switch(s[8]) { + default: + break; + case '-': + switch(s[9]) { + default: + break; + case 'g': + switch(s[10]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_FFC_VALIDATE_G; + } + break; + case 'l': + if (strcmp("egacy", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY; + break; + case 'p': + if (strcmp("q", s + 10) == 0) + return PIDX_PKEY_PARAM_FFC_VALIDATE_PQ; + } + } + } + } + } + } + } + } + break; + case 'e': + switch(s[2]) { + default: + break; + case 'r': + switch(s[3]) { + default: + break; + case 'i': + if (strcmp("fy-message", s + 4) == 0) + return PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE; + break; + case 's': + if (strcmp("ion", s + 4) == 0) + return PIDX_PROV_PARAM_VERSION; + } + } + } + break; + case 'x': + switch(s[1]) { + default: + break; + case '9': + switch(s[2]) { + default: + break; + case '4': + if (strcmp("2kdf-key-check", s + 3) == 0) + return PIDX_PROV_PARAM_X942KDF_KEY_CHECK; + break; + case '6': + switch(s[3]) { + default: + break; + case '3': + switch(s[4]) { + default: + break; + case 'k': + switch(s[5]) { + default: + break; + case 'd': + switch(s[6]) { + default: + break; + case 'f': + switch(s[7]) { + default: + break; + case '-': + switch(s[8]) { + default: + break; + case 'd': + if (strcmp("igest-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK; + break; + case 'k': + if (strcmp("ey-check", s + 9) == 0) + return PIDX_PROV_PARAM_X963KDF_KEY_CHECK; + } + } + } + } + } + } + } + break; + case 'c': + if (strcmp("ghash", s + 2) == 0) + return PIDX_KDF_PARAM_SSHKDF_XCGHASH; + break; + case 'o': + switch(s[2]) { + default: + break; + case 'f': + switch(s[3]) { + default: + break; + case 'l': + if (strcmp("en", s + 4) == 0) + return PIDX_DIGEST_PARAM_XOFLEN; + break; + case '\0': + return PIDX_MAC_PARAM_XOF; + } + } + break; + case 'p': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XP; + } + break; + case 'q': + switch(s[2]) { + default: + break; + case '1': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ1; + } + break; + case '2': + switch(s[3]) { + default: + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ2; + } + break; + case '\0': + return PIDX_PKEY_PARAM_RSA_TEST_XQ; + } + break; + case 't': + if (strcmp("s_standard", s + 2) == 0) + return PIDX_CIPHER_PARAM_XTS_STANDARD; + } + } + return -1; +} + +/* clang-format on */ +/* End of TRIE */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/riscv64cpuid.s b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/riscv64cpuid.s new file mode 100644 index 00000000000000..cef02fbcf6d71e --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/riscv64cpuid.s @@ -0,0 +1,71 @@ +################################################################################ +# int CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len) +################################################################################ +.text +.balign 16 +.globl CRYPTO_memcmp +.type CRYPTO_memcmp,@function +CRYPTO_memcmp: + li t0,0 + beqz a2,2f # len == 0 +1: + lbu t1,0(a0) + lbu t2,0(a1) + addi a0,a0,1 + addi a1,a1,1 + addi a2,a2,-1 + xor t1,t1,t2 + or t0,t0,t1 + bgtz a2,1b +2: + mv a0,t0 + ret +################################################################################ +# void OPENSSL_cleanse(void *ptr, size_t len) +################################################################################ +.text +.balign 16 +.globl OPENSSL_cleanse +.type OPENSSL_cleanse,@function +OPENSSL_cleanse: + beqz a1,2f # len == 0, return + srli t0,a1,4 + bnez t0,3f # len > 15 + +1: # Store <= 15 individual bytes + sb x0,0(a0) + addi a0,a0,1 + addi a1,a1,-1 + bnez a1,1b +2: + ret + +3: # Store individual bytes until we are aligned + andi t0,a0,0x7 + beqz t0,4f + sb x0,0(a0) + addi a0,a0,1 + addi a1,a1,-1 + j 3b + +4: # Store aligned dwords + li t1,8 +4: + sd x0,0(a0) + addi a0,a0,8 + addi a1,a1,-8 + bge a1,t1,4b # if len>=8 loop + bnez a1,1b # if len<8 and len != 0, store remaining bytes + ret +################################################################################ +# size_t riscv_vlen_asm(void) +# Return VLEN (i.e. the length of a vector register in bits). +.p2align 3 +.globl riscv_vlen_asm +.type riscv_vlen_asm,@function +riscv_vlen_asm: + # 0xc22 is CSR vlenb + csrr a0, 0xc22 + slli a0, a0, 3 + ret +.size riscv_vlen_asm,.-riscv_vlen_asm diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S new file mode 100644 index 00000000000000..92ea27ec9c4437 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S @@ -0,0 +1,229 @@ +.text +.p2align 2 +.globl sha256_block_data_order_zvkb_zvknha_or_zvknhb +.type sha256_block_data_order_zvkb_zvknha_or_zvknhb,@function +sha256_block_data_order_zvkb_zvknha_or_zvknhb: + .word 3439489111 + + la a3, K256 # Load round constants K256 + .word 34006279 + addi a3, a3, 16 + .word 34006407 + addi a3, a3, 16 + .word 34006535 + addi a3, a3, 16 + .word 34006663 + addi a3, a3, 16 + .word 34006791 + addi a3, a3, 16 + .word 34006919 + addi a3, a3, 16 + .word 34007047 + addi a3, a3, 16 + .word 34007175 + addi a3, a3, 16 + .word 34007303 + addi a3, a3, 16 + .word 34007431 + addi a3, a3, 16 + .word 34007559 + addi a3, a3, 16 + .word 34007687 + addi a3, a3, 16 + .word 34007815 + addi a3, a3, 16 + .word 34007943 + addi a3, a3, 16 + .word 34008071 + addi a3, a3, 16 + .word 34008199 + + + # H is stored as {a,b,c,d},{e,f,g,h}, but we need {f,e,b,a},{h,g,d,c} + # The dst vtype is e32m1 and the index vtype is e8mf4. + # We use index-load with the following index pattern at v26. + # i8 index: + # 20, 16, 4, 0 + # Instead of setting the i8 index, we could use a single 32bit + # little-endian value to cover the 4xi8 index. + # i32 value: + # 0x 00 04 10 14 + li t4, 0x00041014 + .word 3439390807 + .word 1578028375 + + addi t3, a0, 8 + + # Use index-load to get {f,e,b,a},{h,g,d,c} + .word 3439489111 + .word 128254727 + .word 128844679 + + # Setup v0 mask for the vmerge to replace the first word (idx==0) in key-scheduling. + # The AVL is 4 in SHA, so we could use a single e8(8 element masking) for masking. + .word 3422613591 + .word 1577103447 + + .word 3439489111 + +L_round_loop: + # Decrement length by 1 + add a2, a2, -1 + + # Keep the current state as we need it later: H' = H+{a',b',c',...,h'}. + .word 1577258839 + .word 1577291735 + + # Load the 512-bits of the message block in v1-v4 and perform + # an endian swap on each 4 bytes element. + .word 33939591 + .word 1242865879 + add a1, a1, 16 + .word 33939719 + .word 1243914583 + add a1, a1, 16 + .word 33939847 + .word 1244963287 + add a1, a1, 16 + .word 33939975 + .word 1246011991 + add a1, a1, 16 + + # Quad-round 0 (+0, Wt from oldest to newest in v1->v2->v3->v4) + .word 44073687 + .word 3194135543 + .word 3128075127 + .word 1546715863 + .word 3058835703 # Generate W[19:16] + + # Quad-round 1 (+1, v2->v3->v4->v1) + .word 45155031 + .word 3194135543 + .word 3128075127 + .word 1547797207 + .word 3058737527 # Generate W[23:20] + + # Quad-round 2 (+2, v3->v4->v1->v2) + .word 46236375 + .word 3194135543 + .word 3128075127 + .word 1544684247 + .word 3058770423 # Generate W[27:24] + + # Quad-round 3 (+3, v4->v1->v2->v3) + .word 47317719 + .word 3194135543 + .word 3128075127 + .word 1545634519 + .word 3058803319 # Generate W[31:28] + + # Quad-round 4 (+0, v1->v2->v3->v4) + .word 48267991 + .word 3194135543 + .word 3128075127 + .word 1546715863 + .word 3058835703 # Generate W[35:32] + + # Quad-round 5 (+1, v2->v3->v4->v1) + .word 49349335 + .word 3194135543 + .word 3128075127 + .word 1547797207 + .word 3058737527 # Generate W[39:36] + + # Quad-round 6 (+2, v3->v4->v1->v2) + .word 50430679 + .word 3194135543 + .word 3128075127 + .word 1544684247 + .word 3058770423 # Generate W[43:40] + + # Quad-round 7 (+3, v4->v1->v2->v3) + .word 51512023 + .word 3194135543 + .word 3128075127 + .word 1545634519 + .word 3058803319 # Generate W[47:44] + + # Quad-round 8 (+0, v1->v2->v3->v4) + .word 52462295 + .word 3194135543 + .word 3128075127 + .word 1546715863 + .word 3058835703 # Generate W[51:48] + + # Quad-round 9 (+1, v2->v3->v4->v1) + .word 53543639 + .word 3194135543 + .word 3128075127 + .word 1547797207 + .word 3058737527 # Generate W[55:52] + + # Quad-round 10 (+2, v3->v4->v1->v2) + .word 54624983 + .word 3194135543 + .word 3128075127 + .word 1544684247 + .word 3058770423 # Generate W[59:56] + + # Quad-round 11 (+3, v4->v1->v2->v3) + .word 55706327 + .word 3194135543 + .word 3128075127 + .word 1545634519 + .word 3058803319 # Generate W[63:60] + + # Quad-round 12 (+0, v1->v2->v3->v4) + # Note that we stop generating new message schedule words (Wt, v1-13) + # as we already generated all the words we end up consuming (i.e., W[63:60]). + .word 56656599 + .word 3194135543 + .word 3128075127 + + # Quad-round 13 (+1, v2->v3->v4->v1) + .word 57737943 + .word 3194135543 + .word 3128075127 + + # Quad-round 14 (+2, v3->v4->v1->v2) + .word 58819287 + .word 3194135543 + .word 3128075127 + + # Quad-round 15 (+3, v4->v1->v2->v3) + .word 59900631 + .word 3194135543 + .word 3128075127 + + # H' = H+{a',b',c',...,h'} + .word 65209175 + .word 66290647 + bnez a2, L_round_loop + + # Store {f,e,b,a},{h,g,d,c} back to {a,b,c,d},{e,f,g,h}. + .word 128254759 + .word 128844711 + + ret +.size sha256_block_data_order_zvkb_zvknha_or_zvknhb,.-sha256_block_data_order_zvkb_zvknha_or_zvknhb + +.p2align 2 +.type K256,@object +K256: + .word 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5 + .word 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5 + .word 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3 + .word 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174 + .word 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc + .word 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da + .word 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7 + .word 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967 + .word 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13 + .word 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85 + .word 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3 + .word 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070 + .word 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5 + .word 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3 + .word 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208 + .word 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +.size K256,.-K256 diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/sha/sha512-riscv64-zvkb-zvknhb.S b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/sha/sha512-riscv64-zvkb-zvknhb.S new file mode 100644 index 00000000000000..da1817a64af570 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/sha/sha512-riscv64-zvkb-zvknhb.S @@ -0,0 +1,184 @@ +.text +.p2align 2 +.globl sha512_block_data_order_zvkb_zvknhb +.type sha512_block_data_order_zvkb_zvknhb,@function +sha512_block_data_order_zvkb_zvknhb: + .word 3448926295 + + # H is stored as {a,b,c,d},{e,f,g,h}, but we need {f,e,b,a},{h,g,d,c} + # The dst vtype is e64m2 and the index vtype is e8mf4. + # We use index-load with the following index pattern at v1. + # i8 index: + # 40, 32, 8, 0 + # Instead of setting the i8 index, we could use a single 32bit + # little-endian value to cover the 4xi8 index. + # i32 value: + # 0x 00 08 20 28 + li t4, 0x00082028 + .word 3439390807 + .word 1578025175 + + addi t3, a0, 16 + + # Use index-load to get {f,e,b,a},{h,g,d,c} + .word 3448926295 + .word 102042375 + .word 102632455 + + # Setup v0 mask for the vmerge to replace the first word (idx==0) in key-scheduling. + # The AVL is 4 in SHA, so we could use a single e8(8 element masking) for masking. + .word 3422613591 + .word 1577103447 + + .word 3448926295 + +L_round_loop: + # Load round constants K512 + la a3, K512 + + # Decrement length by 1 + addi a2, a2, -1 + + # Keep the current state as we need it later: H' = H+{a',b',c',...,h'}. + .word 1577782615 + .word 1577848407 + + # Load the 1024-bits of the message block in v10-v16 and perform the endian + # swap. + .word 33944839 + .word 1252304215 + addi a1, a1, 32 + .word 33945095 + .word 1254401623 + addi a1, a1, 32 + .word 33945351 + .word 1256499031 + addi a1, a1, 32 + .word 33945607 + .word 1258596439 + addi a1, a1, 32 + + .rept 4 + # Quad-round 0 (+0, v10->v12->v14->v16) + .word 34011655 + addi a3, a3, 32 + .word 54856023 + .word 3211340919 + .word 3146328951 + .word 1558579543 + .word 3072861559 + + # Quad-round 1 (+1, v12->v14->v16->v10) + .word 34011655 + addi a3, a3, 32 + .word 54921559 + .word 3211340919 + .word 3146328951 + .word 1560742231 + .word 3072665207 + + # Quad-round 2 (+2, v14->v16->v10->v12) + .word 34011655 + addi a3, a3, 32 + .word 54987095 + .word 3211340919 + .word 3146328951 + .word 1554516311 + .word 3072730999 + + # Quad-round 3 (+3, v16->v10->v12->v14) + .word 34011655 + addi a3, a3, 32 + .word 55052631 + .word 3211340919 + .word 3146328951 + .word 1556416855 + .word 3072796791 + .endr + + # Quad-round 16 (+0, v10->v12->v14->v16) + # Note that we stop generating new message schedule words (Wt, v10-16) + # as we already generated all the words we end up consuming (i.e., W[79:76]). + .word 34011655 + addi a3, a3, 32 + .word 54856023 + .word 3211340919 + .word 3146328951 + + # Quad-round 17 (+1, v12->v14->v16->v10) + .word 34011655 + addi a3, a3, 32 + .word 54921559 + .word 3211340919 + .word 3146328951 + + # Quad-round 18 (+2, v14->v16->v10->v12) + .word 34011655 + addi a3, a3, 32 + .word 54987095 + .word 3211340919 + .word 3146328951 + + # Quad-round 19 (+3, v16->v10->v12->v14) + .word 34011655 + # No t1 increment needed. + .word 55052631 + .word 3211340919 + .word 3146328951 + + # H' = H+{a',b',c',...,h'} + .word 61541207 + .word 63704151 + bnez a2, L_round_loop + + # Store {f,e,b,a},{h,g,d,c} back to {a,b,c,d},{e,f,g,h}. + .word 102042407 + .word 102632487 + + ret +.size sha512_block_data_order_zvkb_zvknhb,.-sha512_block_data_order_zvkb_zvknhb + +.p2align 3 +.type K512,@object +K512: + .dword 0x428a2f98d728ae22, 0x7137449123ef65cd + .dword 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc + .dword 0x3956c25bf348b538, 0x59f111f1b605d019 + .dword 0x923f82a4af194f9b, 0xab1c5ed5da6d8118 + .dword 0xd807aa98a3030242, 0x12835b0145706fbe + .dword 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2 + .dword 0x72be5d74f27b896f, 0x80deb1fe3b1696b1 + .dword 0x9bdc06a725c71235, 0xc19bf174cf692694 + .dword 0xe49b69c19ef14ad2, 0xefbe4786384f25e3 + .dword 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65 + .dword 0x2de92c6f592b0275, 0x4a7484aa6ea6e483 + .dword 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5 + .dword 0x983e5152ee66dfab, 0xa831c66d2db43210 + .dword 0xb00327c898fb213f, 0xbf597fc7beef0ee4 + .dword 0xc6e00bf33da88fc2, 0xd5a79147930aa725 + .dword 0x06ca6351e003826f, 0x142929670a0e6e70 + .dword 0x27b70a8546d22ffc, 0x2e1b21385c26c926 + .dword 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df + .dword 0x650a73548baf63de, 0x766a0abb3c77b2a8 + .dword 0x81c2c92e47edaee6, 0x92722c851482353b + .dword 0xa2bfe8a14cf10364, 0xa81a664bbc423001 + .dword 0xc24b8b70d0f89791, 0xc76c51a30654be30 + .dword 0xd192e819d6ef5218, 0xd69906245565a910 + .dword 0xf40e35855771202a, 0x106aa07032bbd1b8 + .dword 0x19a4c116b8d2d0c8, 0x1e376c085141ab53 + .dword 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8 + .dword 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb + .dword 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3 + .dword 0x748f82ee5defb2fc, 0x78a5636f43172f60 + .dword 0x84c87814a1f0ab72, 0x8cc702081a6439ec + .dword 0x90befffa23631e28, 0xa4506cebde82bde9 + .dword 0xbef9a3f7b2c67915, 0xc67178f2e372532b + .dword 0xca273eceea26619c, 0xd186b8c721c0c207 + .dword 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178 + .dword 0x06f067aa72176fba, 0x0a637dc5a2c898a6 + .dword 0x113f9804bef90dae, 0x1b710b35131c471b + .dword 0x28db77f523047d84, 0x32caab7b40c72493 + .dword 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c + .dword 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a + .dword 0x5fcb6fab3ad6faec, 0x6c44198c4a475817 +.size K512,.-K512 diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/sm3/sm3-riscv64-zvksh.S b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/sm3/sm3-riscv64-zvksh.S new file mode 100644 index 00000000000000..a5457b97439c72 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/sm3/sm3-riscv64-zvksh.S @@ -0,0 +1,150 @@ +.text +.text +.p2align 3 +.globl ossl_hwsm3_block_data_order_zvksh +.type ossl_hwsm3_block_data_order_zvksh,@function +ossl_hwsm3_block_data_order_zvksh: + .word 3440668759 + + # Load initial state of hash context (c->A-H). + .word 33906695 + .word 1241817175 + +L_sm3_loop: + # Copy the previous state to v2. + # It will be XOR'ed with the current state at the end of the round. + .word 1577058647 + + # Load the 64B block in 2x32B chunks. + .word 33940231 # v6 := {w7, ..., w0} + addi a1, a1, 32 + + .word 33940487 # v8 := {w15, ..., w8} + addi a1, a1, 32 + + addi a2, a2, -1 + + # As vsm3c consumes only w0, w1, w4, w5 we need to slide the input + # 2 elements down so we process elements w2, w3, w6, w7 + # This will be repeated for each odd round. + .word 1046557271 # v4 := {X, X, w7, ..., w2} + + .word 2925535351 + .word 2923470967 + + # Prepare a vector with {w11, ..., w4} + .word 1044460119 # v4 := {X, X, X, X, w7, ..., w4} + .word 981611095 # v4 := {w11, w10, w9, w8, w7, w6, w5, w4} + + .word 2923503735 + .word 1044460119 # v4 := {X, X, w11, w10, w9, w8, w7, w6} + .word 2923536503 + + .word 2927763575 + .word 1048654423 # v4 := {X, X, w15, w14, w13, w12, w11, w10} + .word 2923602039 + + .word 2189632375 # v6 := {w23, w22, w21, w20, w19, w18, w17, w16} + + # Prepare a register with {w19, w18, w17, w16, w15, w14, w13, w12} + .word 1044460119 # v4 := {X, X, X, X, w15, w14, w13, w12} + .word 979513943 # v4 := {w19, w18, w17, w16, w15, w14, w13, w12} + + .word 2923634807 + .word 1044460119 # v4 := {X, X, w19, w18, w17, w16, w15, w14} + .word 2923667575 + + .word 2925797495 + .word 1046557271 # v4 := {X, X, w23, w22, w21, w20, w19, w18} + .word 2923733111 + + .word 2187601015 # v8 := {w31, w30, w29, w28, w27, w26, w25, w24} + + # Prepare a register with {w27, w26, w25, w24, w23, w22, w21, w20} + .word 1044460119 # v4 := {X, X, X, X, w23, w22, w21, w20} + .word 981611095 # v4 := {w27, w26, w25, w24, w23, w22, w21, w20} + + .word 2923765879 + .word 1044460119 # v4 := {X, X, w27, w26, w25, w24, w23, w22} + .word 2923798647 + + .word 2928025719 + .word 1048654423 # v4 := {x, X, w31, w30, w29, w28, w27, w26} + .word 2923864183 + + .word 2189632375 # v6 := {w32, w33, w34, w35, w36, w37, w38, w39} + + # Prepare a register with {w35, w34, w33, w32, w31, w30, w29, w28} + .word 1044460119 # v4 := {X, X, X, X, w31, w30, w29, w28} + .word 979513943 # v4 := {w35, w34, w33, w32, w31, w30, w29, w28} + + .word 2923896951 + .word 1044460119 # v4 := {X, X, w35, w34, w33, w32, w31, w30} + .word 2923929719 + + .word 2926059639 + .word 1046557271 # v4 := {X, X, w39, w38, w37, w36, w35, w34} + .word 2923995255 + + .word 2187601015 # v8 := {w47, w46, w45, w44, w43, w42, w41, w40} + + # Prepare a register with {w43, w42, w41, w40, w39, w38, w37, w36} + .word 1044460119 # v4 := {X, X, X, X, w39, w38, w37, w36} + .word 981611095 # v4 := {w43, w42, w41, w40, w39, w38, w37, w36} + + .word 2924028023 + .word 1044460119 # v4 := {X, X, w43, w42, w41, w40, w39, w38} + .word 2924060791 + + .word 2928287863 + .word 1048654423 # v4 := {X, X, w47, w46, w45, w44, w43, w42} + .word 2924126327 + + .word 2189632375 # v6 := {w55, w54, w53, w52, w51, w50, w49, w48} + + # Prepare a register with {w51, w50, w49, w48, w47, w46, w45, w44} + .word 1044460119 # v4 := {X, X, X, X, w47, w46, w45, w44} + .word 979513943 # v4 := {w51, w50, w49, w48, w47, w46, w45, w44} + + .word 2924159095 + .word 1044460119 # v4 := {X, X, w51, w50, w49, w48, w47, w46} + .word 2924191863 + + .word 2926321783 + .word 1046557271 # v4 := {X, X, w55, w54, w53, w52, w51, w50} + .word 2924257399 + + .word 2187601015 # v8 := {w63, w62, w61, w60, w59, w58, w57, w56} + + # Prepare a register with {w59, w58, w57, w56, w55, w54, w53, w52} + .word 1044460119 # v4 := {X, X, X, X, w55, w54, w53, w52} + .word 981611095 # v4 := {w59, w58, w57, w56, w55, w54, w53, w52} + + .word 2924290167 + .word 1044460119 # v4 := {X, X, w59, w58, w57, w56, w55, w54} + .word 2924322935 + + .word 2928550007 + .word 1048654423 # v4 := {X, X, w63, w62, w61, w60, w59, w58} + .word 2924388471 + + .word 2189632375 # v6 := {w71, w70, w69, w68, w67, w66, w65, w64} + + # Prepare a register with {w67, w66, w65, w64, w63, w62, w61, w60} + .word 1044460119 # v4 := {X, X, X, X, w63, w62, w61, w60} + .word 979513943 # v4 := {w67, w66, w65, w64, w63, w62, w61, w60} + + .word 2924421239 + .word 1044460119 # v4 := {X, X, w67, w66, w65, w64, w63, w62} + .word 2924454007 + + # XOR in the previous state. + .word 771817559 + + bnez a2, L_sm3_loop # Check if there are any more block to process +L_sm3_end: + .word 1241817175 + .word 33906727 + ret + +.size ossl_hwsm3_block_data_order_zvksh,.-ossl_hwsm3_block_data_order_zvksh diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/sm4/sm4-riscv64-zvksed.s b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/sm4/sm4-riscv64-zvksed.s new file mode 100644 index 00000000000000..c353c27e1c0689 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/crypto/sm4/sm4-riscv64-zvksed.s @@ -0,0 +1,188 @@ +.text +.p2align 3 +.globl rv64i_zvksed_sm4_set_encrypt_key +.type rv64i_zvksed_sm4_set_encrypt_key,@function +rv64i_zvksed_sm4_set_encrypt_key: + .word 0xc1027057 + + # Load the user key + .word 33906823 + .word 1242865879 + + # Load the FK. + la t0, FK + .word 33743111 + + # Generate round keys. + .word 772866263 + .word 2249204215 # rk[0:3] + .word 2251334263 # rk[4:7] + .word 2252415735 # rk[8:11] + .word 2253497207 # rk[12:15] + .word 2254578679 # rk[16:19] + .word 2255660151 # rk[20:23] + .word 2256741623 # rk[24:27] + .word 2257823095 # rk[28:31] + + # Store round keys + .word 33939879 # rk[0:3] + addi a1, a1, 16 + .word 33940007 # rk[4:7] + addi a1, a1, 16 + .word 33940135 # rk[8:11] + addi a1, a1, 16 + .word 33940263 # rk[12:15] + addi a1, a1, 16 + .word 33940391 # rk[16:19] + addi a1, a1, 16 + .word 33940519 # rk[20:23] + addi a1, a1, 16 + .word 33940647 # rk[24:27] + addi a1, a1, 16 + .word 33940775 # rk[28:31] + + li a0, 1 + ret +.size rv64i_zvksed_sm4_set_encrypt_key,.-rv64i_zvksed_sm4_set_encrypt_key +.p2align 3 +.globl rv64i_zvksed_sm4_set_decrypt_key +.type rv64i_zvksed_sm4_set_decrypt_key,@function +rv64i_zvksed_sm4_set_decrypt_key: + .word 0xc1027057 + + # Load the user key + .word 33906823 + .word 1242865879 + + # Load the FK. + la t0, FK + .word 33743111 + + # Generate round keys. + .word 772866263 + .word 2249204215 # rk[0:3] + .word 2251334263 # rk[4:7] + .word 2252415735 # rk[8:11] + .word 2253497207 # rk[12:15] + .word 2254578679 # rk[16:19] + .word 2255660151 # rk[20:23] + .word 2256741623 # rk[24:27] + .word 2257823095 # rk[28:31] + + # Store round keys in reverse order + addi a1, a1, 12 + li t1, -4 + .word 174449959 # rk[31:28] + addi a1, a1, 16 + .word 174449831 # rk[27:24] + addi a1, a1, 16 + .word 174449703 # rk[23:20] + addi a1, a1, 16 + .word 174449575 # rk[19:16] + addi a1, a1, 16 + .word 174449447 # rk[15:12] + addi a1, a1, 16 + .word 174449319 # rk[11:8] + addi a1, a1, 16 + .word 174449191 # rk[7:4] + addi a1, a1, 16 + .word 174449063 # rk[3:0] + + li a0, 1 + ret +.size rv64i_zvksed_sm4_set_decrypt_key,.-rv64i_zvksed_sm4_set_decrypt_key +.p2align 3 +.globl rv64i_zvksed_sm4_encrypt +.type rv64i_zvksed_sm4_encrypt,@function +rv64i_zvksed_sm4_encrypt: + .word 0xc1027057 + + # Order of elements was adjusted in set_encrypt_key() + .word 33972487 # rk[0:3] + addi a2, a2, 16 + .word 33972615 # rk[4:7] + addi a2, a2, 16 + .word 33972743 # rk[8:11] + addi a2, a2, 16 + .word 33972871 # rk[12:15] + addi a2, a2, 16 + .word 33972999 # rk[16:19] + addi a2, a2, 16 + .word 33973127 # rk[20:23] + addi a2, a2, 16 + .word 33973255 # rk[24:27] + addi a2, a2, 16 + .word 33973383 # rk[28:31] + + # Load input data + .word 33906823 + .word 1242865879 + + # Encrypt with all keys + .word 2787647735 + .word 2788696311 + .word 2789744887 + .word 2790793463 + .word 2791842039 + .word 2792890615 + .word 2793939191 + .word 2794987767 + + # Save the ciphertext (in reverse element order) + .word 1242865879 + li t0, -4 + addi a1, a1, 12 + .word 173400231 + + ret +.size rv64i_zvksed_sm4_encrypt,.-rv64i_zvksed_sm4_encrypt +.p2align 3 +.globl rv64i_zvksed_sm4_decrypt +.type rv64i_zvksed_sm4_decrypt,@function +rv64i_zvksed_sm4_decrypt: + .word 0xc1027057 + + # Order of elements was adjusted in set_decrypt_key() + .word 33973383 # rk[31:28] + addi a2, a2, 16 + .word 33973255 # rk[27:24] + addi a2, a2, 16 + .word 33973127 # rk[23:20] + addi a2, a2, 16 + .word 33972999 # rk[19:16] + addi a2, a2, 16 + .word 33972871 # rk[15:11] + addi a2, a2, 16 + .word 33972743 # rk[11:8] + addi a2, a2, 16 + .word 33972615 # rk[7:4] + addi a2, a2, 16 + .word 33972487 # rk[3:0] + + # Load input data + .word 33906823 + .word 1242865879 + + # Encrypt with all keys + .word 2794987767 + .word 2793939191 + .word 2792890615 + .word 2791842039 + .word 2790793463 + .word 2789744887 + .word 2788696311 + .word 2787647735 + + # Save the ciphertext (in reverse element order) + .word 1242865879 + li t0, -4 + addi a1, a1, 12 + .word 173400231 + + ret +.size rv64i_zvksed_sm4_decrypt,.-rv64i_zvksed_sm4_decrypt +# Family Key (little-endian 32-bit chunks) +.p2align 3 +FK: + .word 0xA3B1BAC6, 0x56AA3350, 0x677D9197, 0xB27022DC +.size FK,.-FK diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/crypto/bn_conf.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/crypto/bn_conf.h new file mode 100644 index 00000000000000..2437fc9bd28200 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/crypto/bn_conf.h @@ -0,0 +1,37 @@ +/* clang-format off */ +/* WARNING: do not edit! */ +/* Generated by Makefile from include/crypto/bn_conf.h.in */ +/* clang-format on */ +/* + * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_BN_CONF_H +#define OSSL_CRYPTO_BN_CONF_H +#pragma once + +/* + * The contents of this file are not used in the UEFI build, as + * both 32-bit and 64-bit builds are supported from a single run + * of the Configure script. + */ + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +/* clang-format off */ +#define SIXTY_FOUR_BIT_LONG + /* clang-format on */ + /* clang-format off */ +#undef SIXTY_FOUR_BIT + /* clang-format on */ + /* clang-format off */ +#undef THIRTY_TWO_BIT +/* clang-format on */ + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/crypto/dso_conf.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/crypto/dso_conf.h new file mode 100644 index 00000000000000..29edacf112c893 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/crypto/dso_conf.h @@ -0,0 +1,25 @@ +/* clang-format off */ +/* WARNING: do not edit! */ +/* Generated by Makefile from include/crypto/dso_conf.h.in */ +/* clang-format on */ +/* + * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_DSO_CONF_H +#define OSSL_CRYPTO_DSO_CONF_H +#pragma once + +/* clang-format off */ +# define DSO_DLFCN +# define HAVE_DLFCN_H +/* clang-format on */ +/* clang-format off */ +# define DSO_EXTENSION ".so" +/* clang-format on */ +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/internal/param_names.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/internal/param_names.h new file mode 100644 index 00000000000000..cefb8dfa75fa74 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/internal/param_names.h @@ -0,0 +1,473 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +/* clang-format off */ + +/* clang-format on */ + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +/* clang-format off */ +#define NUM_PIDX 346 + +#define PIDX_ALG_PARAM_ALGORITHM_ID 0 +#define PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS 1 +#define PIDX_ALG_PARAM_CIPHER 2 +#define PIDX_ALG_PARAM_DIGEST 3 +#define PIDX_ALG_PARAM_ENGINE 4 +#define PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR 5 +#define PIDX_ALG_PARAM_MAC 6 +#define PIDX_ALG_PARAM_PROPERTIES 7 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 9 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 10 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 11 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 12 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 13 +#define PIDX_CAPABILITY_TLS_GROUP_ID 14 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 15 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 20 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 21 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 22 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 23 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 24 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 27 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 28 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_DTLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 17 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_DTLS 18 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 30 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 31 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 32 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 33 +#define PIDX_CIPHER_PARAM_AEAD 34 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_IV_GENERATED 35 +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 36 +#define PIDX_CIPHER_PARAM_AEAD_TAG 37 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 39 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 40 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 41 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 42 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 43 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD 44 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 45 +#define PIDX_CIPHER_PARAM_CTS 46 +#define PIDX_CIPHER_PARAM_CTS_MODE 47 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 48 +#define PIDX_CIPHER_PARAM_DECRYPT_ONLY 49 +#define PIDX_CIPHER_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_CIPHER_PARAM_FIPS_ENCRYPT_CHECK 50 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 51 +#define PIDX_CIPHER_PARAM_IV 52 +#define PIDX_CIPHER_PARAM_IVLEN 53 +#define PIDX_CIPHER_PARAM_KEYLEN 54 +#define PIDX_CIPHER_PARAM_MODE 55 +#define PIDX_CIPHER_PARAM_NUM 56 +#define PIDX_CIPHER_PARAM_PADDING 57 +#define PIDX_CIPHER_PARAM_PIPELINE_AEAD_TAG 58 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 59 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 60 +#define PIDX_CIPHER_PARAM_ROUNDS 61 +#define PIDX_CIPHER_PARAM_SPEED 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 64 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 65 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 66 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 67 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 68 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 69 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 70 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 71 +#define PIDX_CIPHER_PARAM_TLS_MAC 72 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 73 +#define PIDX_CIPHER_PARAM_TLS_VERSION 74 +#define PIDX_CIPHER_PARAM_UPDATED_IV 75 +#define PIDX_CIPHER_PARAM_USE_BITS 76 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 77 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 78 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 45 +#define PIDX_DIGEST_PARAM_MICALG 79 +#define PIDX_DIGEST_PARAM_PAD_TYPE 80 +#define PIDX_DIGEST_PARAM_SIZE 81 +#define PIDX_DIGEST_PARAM_SSL3_MS 82 +#define PIDX_DIGEST_PARAM_XOF 83 +#define PIDX_DIGEST_PARAM_XOFLEN 84 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 85 +#define PIDX_DRBG_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_DRBG_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 86 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 87 +#define PIDX_DRBG_PARAM_MAX_LENGTH 88 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 89 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 90 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 91 +#define PIDX_DRBG_PARAM_MIN_LENGTH 92 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 93 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 94 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 95 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 96 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 97 +#define PIDX_DRBG_PARAM_RESEED_TIME 98 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 99 +#define PIDX_DRBG_PARAM_SIZE 81 +#define PIDX_DRBG_PARAM_USE_DF 100 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 101 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 102 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 103 +#define PIDX_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_EXCHANGE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK +#define PIDX_EXCHANGE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 104 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 105 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 106 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 107 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 108 +#define PIDX_EXCHANGE_PARAM_PAD 109 +#define PIDX_GEN_PARAM_ITERATION 110 +#define PIDX_GEN_PARAM_POTENTIAL 111 +#define PIDX_KDF_PARAM_ARGON2_AD 112 +#define PIDX_KDF_PARAM_ARGON2_LANES 113 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 114 +#define PIDX_KDF_PARAM_ARGON2_VERSION 115 +#define PIDX_KDF_PARAM_CEK_ALG 116 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 117 +#define PIDX_KDF_PARAM_DATA 118 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 119 +#define PIDX_KDF_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KDF_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_KDF_PARAM_FIPS_EMS_CHECK 120 +#define PIDX_KDF_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 121 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 122 +#define PIDX_KDF_PARAM_INFO 123 +#define PIDX_KDF_PARAM_ITER 124 +#define PIDX_KDF_PARAM_KBKDF_R 125 +#define PIDX_KDF_PARAM_KBKDF_USE_L 126 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 127 +#define PIDX_KDF_PARAM_KEY 128 +#define PIDX_KDF_PARAM_LABEL 129 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 130 +#define PIDX_KDF_PARAM_MODE 55 +#define PIDX_KDF_PARAM_PASSWORD 131 +#define PIDX_KDF_PARAM_PKCS12_ID 132 +#define PIDX_KDF_PARAM_PKCS5 133 +#define PIDX_KDF_PARAM_PREFIX 134 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 135 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 136 +#define PIDX_KDF_PARAM_SCRYPT_N 137 +#define PIDX_KDF_PARAM_SCRYPT_P 138 +#define PIDX_KDF_PARAM_SCRYPT_R 125 +#define PIDX_KDF_PARAM_SECRET 139 +#define PIDX_KDF_PARAM_SEED 140 +#define PIDX_KDF_PARAM_SIZE 81 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 141 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 142 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 143 +#define PIDX_KDF_PARAM_THREADS 144 +#define PIDX_KDF_PARAM_UKM 145 +#define PIDX_KDF_PARAM_X942_ACVPINFO 146 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 147 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 148 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 149 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 150 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 151 +#define PIDX_KEM_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_KEM_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_KEM_PARAM_IKME 152 +#define PIDX_KEM_PARAM_OPERATION 153 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 154 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING 155 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 156 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 157 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 55 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 158 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 159 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 160 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 161 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 162 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 163 +#define PIDX_MAC_PARAM_BLOCK_SIZE 164 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 165 +#define PIDX_MAC_PARAM_C_ROUNDS 166 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 167 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 168 +#define PIDX_MAC_PARAM_D_ROUNDS 169 +#define PIDX_MAC_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_MAC_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_MAC_PARAM_FIPS_NO_SHORT_MAC PIDX_PROV_PARAM_NO_SHORT_MAC +#define PIDX_MAC_PARAM_IV 52 +#define PIDX_MAC_PARAM_KEY 128 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 135 +#define PIDX_MAC_PARAM_SIZE 81 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 170 +#define PIDX_MAC_PARAM_XOF 83 +#define PIDX_OBJECT_PARAM_DATA 118 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 171 +#define PIDX_OBJECT_PARAM_DATA_TYPE 172 +#define PIDX_OBJECT_PARAM_DESC 173 +#define PIDX_OBJECT_PARAM_INPUT_TYPE 174 +#define PIDX_OBJECT_PARAM_REFERENCE 175 +#define PIDX_OBJECT_PARAM_TYPE 142 +#define PIDX_PASSPHRASE_PARAM_INFO 123 +#define PIDX_PKEY_PARAM_ALGORITHM_ID PIDX_ALG_PARAM_ALGORITHM_ID +#define PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS PIDX_ALG_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_PKEY_PARAM_BITS 176 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 177 +#define PIDX_PKEY_PARAM_DHKEM_IKM 178 +#define PIDX_PKEY_PARAM_DH_GENERATOR 179 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 180 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 181 +#define PIDX_PKEY_PARAM_DIST_ID 182 +#define PIDX_PKEY_PARAM_EC_A 183 +#define PIDX_PKEY_PARAM_EC_B 184 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 185 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 186 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 187 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 188 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 189 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 190 +#define PIDX_PKEY_PARAM_EC_COFACTOR 191 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 192 +#define PIDX_PKEY_PARAM_EC_ENCODING 193 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 194 +#define PIDX_PKEY_PARAM_EC_GENERATOR 195 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 196 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 197 +#define PIDX_PKEY_PARAM_EC_ORDER 198 +#define PIDX_PKEY_PARAM_EC_P 138 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 199 +#define PIDX_PKEY_PARAM_EC_PUB_X 200 +#define PIDX_PKEY_PARAM_EC_PUB_Y 201 +#define PIDX_PKEY_PARAM_EC_SEED 140 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 202 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 203 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 204 +#define PIDX_PKEY_PARAM_FFC_GINDEX 205 +#define PIDX_PKEY_PARAM_FFC_H 206 +#define PIDX_PKEY_PARAM_FFC_P 138 +#define PIDX_PKEY_PARAM_FFC_PBITS 207 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 208 +#define PIDX_PKEY_PARAM_FFC_Q 209 +#define PIDX_PKEY_PARAM_FFC_QBITS 210 +#define PIDX_PKEY_PARAM_FFC_SEED 140 +#define PIDX_PKEY_PARAM_FFC_TYPE 142 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 211 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 212 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 213 +#define PIDX_PKEY_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK 214 +#define PIDX_PKEY_PARAM_FIPS_KEY_CHECK 215 +#define PIDX_PKEY_PARAM_FIPS_SIGN_CHECK 216 +#define PIDX_PKEY_PARAM_GROUP_NAME 217 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 8 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 218 +#define PIDX_PKEY_PARAM_MASKGENFUNC 219 +#define PIDX_PKEY_PARAM_MAX_SIZE 220 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 221 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 222 +#define PIDX_PKEY_PARAM_ML_DSA_INPUT_FORMATS 223 +#define PIDX_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS 224 +#define PIDX_PKEY_PARAM_ML_DSA_PREFER_SEED 225 +#define PIDX_PKEY_PARAM_ML_DSA_RETAIN_SEED 226 +#define PIDX_PKEY_PARAM_ML_DSA_SEED 140 +#define PIDX_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE 227 +#define PIDX_PKEY_PARAM_ML_KEM_INPUT_FORMATS 228 +#define PIDX_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS 229 +#define PIDX_PKEY_PARAM_ML_KEM_PREFER_SEED 230 +#define PIDX_PKEY_PARAM_ML_KEM_RETAIN_SEED 231 +#define PIDX_PKEY_PARAM_ML_KEM_SEED 140 +#define PIDX_PKEY_PARAM_PAD_MODE 232 +#define PIDX_PKEY_PARAM_PRIV_KEY 233 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 234 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 235 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 236 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 237 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 238 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 239 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 240 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 241 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 242 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 243 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 244 +#define PIDX_PKEY_PARAM_RSA_D 245 +#define PIDX_PKEY_PARAM_RSA_DERIVE_FROM_PQ 246 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 247 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 248 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 249 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 250 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 251 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 252 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 253 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 254 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 255 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 256 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 257 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 258 +#define PIDX_PKEY_PARAM_RSA_FACTOR 259 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 260 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 261 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 262 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 263 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 264 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 265 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 266 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 267 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 268 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 269 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 137 +#define PIDX_PKEY_PARAM_RSA_PRIMES 270 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 271 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 272 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 273 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 274 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 275 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 276 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 277 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 278 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 279 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 280 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 281 +#define PIDX_PKEY_PARAM_SECURITY_BITS 282 +#define PIDX_PKEY_PARAM_SLH_DSA_SEED 140 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 283 +#define PIDX_PROV_PARAM_BUILDINFO 284 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 285 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 286 +#define PIDX_PROV_PARAM_CORE_VERSION 287 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 288 +#define PIDX_PROV_PARAM_DSA_SIGN_DISABLED 289 +#define PIDX_PROV_PARAM_ECDH_COFACTOR_CHECK 290 +#define PIDX_PROV_PARAM_HKDF_DIGEST_CHECK 291 +#define PIDX_PROV_PARAM_HKDF_KEY_CHECK 292 +#define PIDX_PROV_PARAM_HMAC_KEY_CHECK 293 +#define PIDX_PROV_PARAM_KBKDF_KEY_CHECK 294 +#define PIDX_PROV_PARAM_KMAC_KEY_CHECK 295 +#define PIDX_PROV_PARAM_NAME 296 +#define PIDX_PROV_PARAM_NO_SHORT_MAC 297 +#define PIDX_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK 298 +#define PIDX_PROV_PARAM_RSA_PKCS15_PAD_DISABLED 299 +#define PIDX_PROV_PARAM_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED 301 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 302 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 303 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 304 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 305 +#define PIDX_PROV_PARAM_SIGNATURE_DIGEST_CHECK 306 +#define PIDX_PROV_PARAM_SSHKDF_DIGEST_CHECK 307 +#define PIDX_PROV_PARAM_SSHKDF_KEY_CHECK 308 +#define PIDX_PROV_PARAM_SSKDF_DIGEST_CHECK 309 +#define PIDX_PROV_PARAM_SSKDF_KEY_CHECK 310 +#define PIDX_PROV_PARAM_STATUS 311 +#define PIDX_PROV_PARAM_TDES_ENCRYPT_DISABLED 312 +#define PIDX_PROV_PARAM_TLS13_KDF_DIGEST_CHECK 313 +#define PIDX_PROV_PARAM_TLS13_KDF_KEY_CHECK 314 +#define PIDX_PROV_PARAM_TLS1_PRF_DIGEST_CHECK 315 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 316 +#define PIDX_PROV_PARAM_TLS1_PRF_KEY_CHECK 317 +#define PIDX_PROV_PARAM_VERSION 115 +#define PIDX_PROV_PARAM_X942KDF_KEY_CHECK 318 +#define PIDX_PROV_PARAM_X963KDF_DIGEST_CHECK 319 +#define PIDX_PROV_PARAM_X963KDF_KEY_CHECK 320 +#define PIDX_RAND_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_RAND_PARAM_GENERATE 321 +#define PIDX_RAND_PARAM_MAX_REQUEST 322 +#define PIDX_RAND_PARAM_STATE 323 +#define PIDX_RAND_PARAM_STRENGTH 324 +#define PIDX_RAND_PARAM_TEST_ENTROPY 325 +#define PIDX_RAND_PARAM_TEST_NONCE 326 +#define PIDX_SIGNATURE_PARAM_ADD_RANDOM 327 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID PIDX_PKEY_PARAM_ALGORITHM_ID +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS PIDX_PKEY_PARAM_ALGORITHM_ID_PARAMS +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 328 +#define PIDX_SIGNATURE_PARAM_DETERMINISTIC 329 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR PIDX_ALG_PARAM_FIPS_APPROVED_INDICATOR +#define PIDX_SIGNATURE_PARAM_FIPS_DIGEST_CHECK PIDX_PKEY_PARAM_FIPS_DIGEST_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_KEY_CHECK PIDX_PKEY_PARAM_FIPS_KEY_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK 300 +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_CHECK PIDX_PKEY_PARAM_FIPS_SIGN_CHECK +#define PIDX_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK 330 +#define PIDX_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE 331 +#define PIDX_SIGNATURE_PARAM_INSTANCE 332 +#define PIDX_SIGNATURE_PARAM_KAT 333 +#define PIDX_SIGNATURE_PARAM_MESSAGE_ENCODING 334 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_MU 335 +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 336 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 271 +#define PIDX_SIGNATURE_PARAM_SIGNATURE 337 +#define PIDX_SIGNATURE_PARAM_TEST_ENTROPY 338 +#define PIDX_SKEY_PARAM_KEY_LENGTH 339 +#define PIDX_SKEY_PARAM_RAW_BYTES 340 +#define PIDX_STORE_PARAM_ALIAS 341 +#define PIDX_STORE_PARAM_DIGEST 3 +#define PIDX_STORE_PARAM_EXPECT 342 +#define PIDX_STORE_PARAM_FINGERPRINT 343 +#define PIDX_STORE_PARAM_INPUT_TYPE 174 +#define PIDX_STORE_PARAM_ISSUER 296 +#define PIDX_STORE_PARAM_PROPERTIES 7 +#define PIDX_STORE_PARAM_SERIAL 344 +#define PIDX_STORE_PARAM_SUBJECT 345 +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/asn1.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/asn1.h new file mode 100644 index 00000000000000..3fd498b2a3e6a9 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/asn1.h @@ -0,0 +1,1125 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/asn1.h.in + * + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ASN1_H +#define OPENSSL_ASN1_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASN1_H +#endif + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#ifdef OPENSSL_BUILD_SHLIBCRYPTO +#undef OPENSSL_EXTERN +#define OPENSSL_EXTERN OPENSSL_EXPORT +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define V_ASN1_UNIVERSAL 0x00 +#define V_ASN1_APPLICATION 0x40 +#define V_ASN1_CONTEXT_SPECIFIC 0x80 +#define V_ASN1_PRIVATE 0xc0 + +#define V_ASN1_CONSTRUCTED 0x20 +#define V_ASN1_PRIMITIVE_TAG 0x1f +#define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG + +#define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */ +#define V_ASN1_OTHER -3 /* used in ASN1_TYPE */ +#define V_ASN1_ANY -4 /* used in ASN1 template code */ + +#define V_ASN1_UNDEF -1 +/* ASN.1 tag values */ +#define V_ASN1_EOC 0 +#define V_ASN1_BOOLEAN 1 +#define V_ASN1_INTEGER 2 +#define V_ASN1_BIT_STRING 3 +#define V_ASN1_OCTET_STRING 4 +#define V_ASN1_NULL 5 +#define V_ASN1_OBJECT 6 +#define V_ASN1_OBJECT_DESCRIPTOR 7 +#define V_ASN1_EXTERNAL 8 +#define V_ASN1_REAL 9 +#define V_ASN1_ENUMERATED 10 +#define V_ASN1_UTF8STRING 12 +#define V_ASN1_SEQUENCE 16 +#define V_ASN1_SET 17 +#define V_ASN1_NUMERICSTRING 18 +#define V_ASN1_PRINTABLESTRING 19 +#define V_ASN1_T61STRING 20 +#define V_ASN1_TELETEXSTRING 20 /* alias */ +#define V_ASN1_VIDEOTEXSTRING 21 +#define V_ASN1_IA5STRING 22 +#define V_ASN1_UTCTIME 23 +#define V_ASN1_GENERALIZEDTIME 24 +#define V_ASN1_GRAPHICSTRING 25 +#define V_ASN1_ISO64STRING 26 +#define V_ASN1_VISIBLESTRING 26 /* alias */ +#define V_ASN1_GENERALSTRING 27 +#define V_ASN1_UNIVERSALSTRING 28 +#define V_ASN1_BMPSTRING 30 + +/* + * NB the constants below are used internally by ASN1_INTEGER + * and ASN1_ENUMERATED to indicate the sign. They are *not* on + * the wire tag values. + */ + +#define V_ASN1_NEG 0x100 +#define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) +#define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) + +/* For use with d2i_ASN1_type_bytes() */ +#define B_ASN1_NUMERICSTRING 0x0001 +#define B_ASN1_PRINTABLESTRING 0x0002 +#define B_ASN1_T61STRING 0x0004 +#define B_ASN1_TELETEXSTRING 0x0004 +#define B_ASN1_VIDEOTEXSTRING 0x0008 +#define B_ASN1_IA5STRING 0x0010 +#define B_ASN1_GRAPHICSTRING 0x0020 +#define B_ASN1_ISO64STRING 0x0040 +#define B_ASN1_VISIBLESTRING 0x0040 +#define B_ASN1_GENERALSTRING 0x0080 +#define B_ASN1_UNIVERSALSTRING 0x0100 +#define B_ASN1_OCTET_STRING 0x0200 +#define B_ASN1_BIT_STRING 0x0400 +#define B_ASN1_BMPSTRING 0x0800 +#define B_ASN1_UNKNOWN 0x1000 +#define B_ASN1_UTF8STRING 0x2000 +#define B_ASN1_UTCTIME 0x4000 +#define B_ASN1_GENERALIZEDTIME 0x8000 +#define B_ASN1_SEQUENCE 0x10000 +/* For use with ASN1_mbstring_copy() */ +#define MBSTRING_FLAG 0x1000 +#define MBSTRING_UTF8 (MBSTRING_FLAG) +#define MBSTRING_ASC (MBSTRING_FLAG | 1) +#define MBSTRING_BMP (MBSTRING_FLAG | 2) +#define MBSTRING_UNIV (MBSTRING_FLAG | 4) +#define SMIME_OLDMIME 0x400 +#define SMIME_CRLFEOL 0x800 +#define SMIME_STREAM 0x1000 + +/* Stacks for types not otherwise defined in this header */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) +#define sk_X509_ALGOR_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_value(sk, idx) ((X509_ALGOR *)OPENSSL_sk_value(ossl_check_const_X509_ALGOR_sk_type(sk), (idx))) +#define sk_X509_ALGOR_new(cmp) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new(ossl_check_X509_ALGOR_compfunc_type(cmp))) +#define sk_X509_ALGOR_new_null() ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_null()) +#define sk_X509_ALGOR_new_reserve(cmp, n) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_reserve(ossl_check_X509_ALGOR_compfunc_type(cmp), (n))) +#define sk_X509_ALGOR_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ALGOR_sk_type(sk), (n)) +#define sk_X509_ALGOR_free(sk) OPENSSL_sk_free(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_delete(sk, i) ((X509_ALGOR *)OPENSSL_sk_delete(ossl_check_X509_ALGOR_sk_type(sk), (i))) +#define sk_X509_ALGOR_delete_ptr(sk, ptr) ((X509_ALGOR *)OPENSSL_sk_delete_ptr(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr))) +#define sk_X509_ALGOR_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_pop(sk) ((X509_ALGOR *)OPENSSL_sk_pop(ossl_check_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_shift(sk) ((X509_ALGOR *)OPENSSL_sk_shift(ossl_check_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ALGOR_sk_type(sk),ossl_check_X509_ALGOR_freefunc_type(freefunc)) +#define sk_X509_ALGOR_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), (idx)) +#define sk_X509_ALGOR_set(sk, idx, ptr) ((X509_ALGOR *)OPENSSL_sk_set(ossl_check_X509_ALGOR_sk_type(sk), (idx), ossl_check_X509_ALGOR_type(ptr))) +#define sk_X509_ALGOR_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), pnum) +#define sk_X509_ALGOR_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_dup(sk) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_dup(ossl_check_const_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_copyfunc_type(copyfunc), ossl_check_X509_ALGOR_freefunc_type(freefunc))) +#define sk_X509_ALGOR_set_cmp_func(sk, cmp) ((sk_X509_ALGOR_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_compfunc_type(cmp))) + +/* clang-format on */ + +#define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ +/* + * This indicates that the ASN1_STRING is not a real value but just a place + * holder for the location where indefinite length constructed data should be + * inserted in the memory buffer + */ +#define ASN1_STRING_FLAG_NDEF 0x010 + +/* + * This flag is used by the CMS code to indicate that a string is not + * complete and is a place holder for content when it had all been accessed. + * The flag will be reset when content has been written to it. + */ + +#define ASN1_STRING_FLAG_CONT 0x020 +/* + * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING + * type. + */ +#define ASN1_STRING_FLAG_MSTRING 0x040 +/* String is embedded and only content should be freed */ +#define ASN1_STRING_FLAG_EMBED 0x080 +/* String should be parsed in RFC 5280's time format */ +#define ASN1_STRING_FLAG_X509_TIME 0x100 +/* This is the base type that holds just about everything :-) */ +struct asn1_string_st { + int length; + int type; + unsigned char *data; + /* + * The value of the following field depends on the type being held. It + * is mostly being used for BIT_STRING so if the input data has a + * non-zero 'unused bits' value, it will be handled correctly + */ + long flags; +}; + +/* + * ASN1_ENCODING structure: this is used to save the received encoding of an + * ASN1 type. This is useful to get round problems with invalid encodings + * which can break signatures. + */ + +typedef struct ASN1_ENCODING_st { + unsigned char *enc; /* DER encoding */ + long len; /* Length of encoding */ + int modified; /* set to 1 if 'enc' is invalid */ +} ASN1_ENCODING; + +/* Used with ASN1 LONG type: if a long is set to this it is omitted */ +#define ASN1_LONG_UNDEF 0x7fffffffL + +#define STABLE_FLAGS_MALLOC 0x01 +/* + * A zero passed to ASN1_STRING_TABLE_new_add for the flags is interpreted + * as "don't change" and STABLE_FLAGS_MALLOC is always set. By setting + * STABLE_FLAGS_MALLOC only we can clear the existing value. Use the alias + * STABLE_FLAGS_CLEAR to reflect this. + */ +#define STABLE_FLAGS_CLEAR STABLE_FLAGS_MALLOC +#define STABLE_NO_MASK 0x02 +#define DIRSTRING_TYPE \ + (B_ASN1_PRINTABLESTRING | B_ASN1_T61STRING | B_ASN1_BMPSTRING | B_ASN1_UTF8STRING) +#define PKCS9STRING_TYPE (DIRSTRING_TYPE | B_ASN1_IA5STRING) + +struct asn1_string_table_st { + int nid; + long minsize; + long maxsize; + unsigned long mask; + unsigned long flags; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING_TABLE, ASN1_STRING_TABLE, ASN1_STRING_TABLE) +#define sk_ASN1_STRING_TABLE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_value(sk, idx) ((ASN1_STRING_TABLE *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), (idx))) +#define sk_ASN1_STRING_TABLE_new(cmp) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) +#define sk_ASN1_STRING_TABLE_new_null() ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_STRING_TABLE_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp), (n))) +#define sk_ASN1_STRING_TABLE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (n)) +#define sk_ASN1_STRING_TABLE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_delete(sk, i) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (i))) +#define sk_ASN1_STRING_TABLE_delete_ptr(sk, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr))) +#define sk_ASN1_STRING_TABLE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_pop(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_shift(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk),ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc)) +#define sk_ASN1_STRING_TABLE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), (idx)) +#define sk_ASN1_STRING_TABLE_set(sk, idx, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_set(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (idx), ossl_check_ASN1_STRING_TABLE_type(ptr))) +#define sk_ASN1_STRING_TABLE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), pnum) +#define sk_ASN1_STRING_TABLE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_dup(sk) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc))) +#define sk_ASN1_STRING_TABLE_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_TABLE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) + +/* clang-format on */ + +/* size limits: this stuff is taken straight from RFC2459 */ + +#define ub_name 32768 +#define ub_common_name 64 +#define ub_locality_name 128 +#define ub_state_name 128 +#define ub_organization_name 64 +#define ub_organization_unit_name 64 +#define ub_title 64 +#define ub_email_address 128 + +/* + * Declarations for template structures: for full definitions see asn1t.h + */ +typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE; +typedef struct ASN1_TLC_st ASN1_TLC; +/* This is just an opaque pointer */ +typedef struct ASN1_VALUE_st ASN1_VALUE; + +/* Declare ASN1 functions: the implement macro is in asn1t.h */ + +/* + * The mysterious 'extern' that's passed to some macros is innocuous, + * and is there to quiet pre-C99 compilers that may complain about empty + * arguments in macro calls. + */ + +#define DECLARE_ASN1_FUNCTIONS_attr(attr, type) \ + DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, type) +#define DECLARE_ASN1_FUNCTIONS(type) \ + DECLARE_ASN1_FUNCTIONS_attr(extern, type) + +#define DECLARE_ASN1_ALLOC_FUNCTIONS_attr(attr, type) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, type) +#define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_attr(extern, type) + +#define DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name) +#define DECLARE_ASN1_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_FUNCTIONS_name_attr(extern, type, name) + +#define DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, itname, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name) \ + DECLARE_ASN1_ITEM_attr(attr, itname) +#define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_attr(extern, type, itname, name) + +#define DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, name, name) +#define DECLARE_ASN1_ENCODE_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(extern, type, name) + +#define DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name) \ + attr type *d2i_##name(type **a, const unsigned char **in, long len); \ + attr int i2d_##name(const type *a, unsigned char **out); +#define DECLARE_ASN1_ENCODE_FUNCTIONS_only(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(extern, type, name) + +#define DECLARE_ASN1_NDEF_FUNCTION_attr(attr, name) \ + attr int i2d_##name##_NDEF(const name *a, unsigned char **out); +#define DECLARE_ASN1_NDEF_FUNCTION(name) \ + DECLARE_ASN1_NDEF_FUNCTION_attr(extern, name) + +#define DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name) \ + attr type *name##_new(void); \ + attr void name##_free(type *a); +#define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(extern, type, name) + +#define DECLARE_ASN1_DUP_FUNCTION_attr(attr, type) \ + DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, type) +#define DECLARE_ASN1_DUP_FUNCTION(type) \ + DECLARE_ASN1_DUP_FUNCTION_attr(extern, type) + +#define DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, name) \ + attr type *name##_dup(const type *a); +#define DECLARE_ASN1_DUP_FUNCTION_name(type, name) \ + DECLARE_ASN1_DUP_FUNCTION_name_attr(extern, type, name) + +#define DECLARE_ASN1_PRINT_FUNCTION_attr(attr, stname) \ + DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, stname) +#define DECLARE_ASN1_PRINT_FUNCTION(stname) \ + DECLARE_ASN1_PRINT_FUNCTION_attr(extern, stname) + +#define DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, fname) \ + attr int fname##_print_ctx(BIO *out, const stname *x, int indent, \ + const ASN1_PCTX *pctx); +#define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ + DECLARE_ASN1_PRINT_FUNCTION_fname_attr(extern, stname, fname) + +#define D2I_OF(type) type *(*)(type **, const unsigned char **, long) +#define I2D_OF(type) int (*)(const type *, unsigned char **) + +#define CHECKED_D2I_OF(type, d2i) \ + ((d2i_of_void *)(1 ? d2i : ((D2I_OF(type))0))) +#define CHECKED_I2D_OF(type, i2d) \ + ((i2d_of_void *)(1 ? i2d : ((I2D_OF(type))0))) +#define CHECKED_NEW_OF(type, xnew) \ + ((void *(*)(void))(1 ? xnew : ((type * (*)(void))0))) +#define CHECKED_PTR_OF(type, p) \ + ((void *)(1 ? p : (type *)0)) +#define CHECKED_PPTR_OF(type, p) \ + ((void **)(1 ? p : (type **)0)) + +#define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **, const unsigned char **, long) +#define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(const type *, unsigned char **) +#define TYPEDEF_D2I2D_OF(type) \ + TYPEDEF_D2I_OF(type); \ + TYPEDEF_I2D_OF(type) + +typedef void *d2i_of_void(void **, const unsigned char **, long); +typedef int i2d_of_void(const void *, unsigned char **); +typedef int OSSL_i2d_of_void_ctx(const void *, unsigned char **, void *vctx); + +/*- + * The following macros and typedefs allow an ASN1_ITEM + * to be embedded in a structure and referenced. Since + * the ASN1_ITEM pointers need to be globally accessible + * (possibly from shared libraries) they may exist in + * different forms. On platforms that support it the + * ASN1_ITEM structure itself will be globally exported. + * Other platforms will export a function that returns + * an ASN1_ITEM pointer. + * + * To handle both cases transparently the macros below + * should be used instead of hard coding an ASN1_ITEM + * pointer in a structure. + * + * The structure will look like this: + * + * typedef struct SOMETHING_st { + * ... + * ASN1_ITEM_EXP *iptr; + * ... + * } SOMETHING; + * + * It would be initialised as e.g.: + * + * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...}; + * + * and the actual pointer extracted with: + * + * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr); + * + * Finally an ASN1_ITEM pointer can be extracted from an + * appropriate reference with: ASN1_ITEM_rptr(X509). This + * would be used when a function takes an ASN1_ITEM * argument. + * + */ + +/* + * Platforms that can't easily handle shared global variables are declared as + * functions returning ASN1_ITEM pointers. + */ + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM *ASN1_ITEM_EXP(void); + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +#define ASN1_ITEM_ptr(iptr) (iptr()) + +/* Macro to include ASN1_ITEM pointer from base type */ +#define ASN1_ITEM_ref(iptr) (iptr##_it) + +#define ASN1_ITEM_rptr(ref) (ref##_it()) + +#define DECLARE_ASN1_ITEM_attr(attr, name) \ + attr const ASN1_ITEM *name##_it(void); +#define DECLARE_ASN1_ITEM(name) \ + DECLARE_ASN1_ITEM_attr(extern, name) + +/* Parameters used by ASN1_STRING_print_ex() */ + +/* + * These determine which characters to escape: RFC2253 special characters, + * control characters and MSB set characters + */ + +#define ASN1_STRFLGS_ESC_2253 1 +#define ASN1_STRFLGS_ESC_CTRL 2 +#define ASN1_STRFLGS_ESC_MSB 4 + +/* Lower 8 bits are reserved as an output type specifier */ +#define ASN1_DTFLGS_TYPE_MASK 0x0FUL +#define ASN1_DTFLGS_RFC822 0x00UL +#define ASN1_DTFLGS_ISO8601 0x01UL + +/* + * This flag determines how we do escaping: normally RC2253 backslash only, + * set this to use backslash and quote. + */ + +#define ASN1_STRFLGS_ESC_QUOTE 8 + +/* These three flags are internal use only. */ + +/* Character is a valid PrintableString character */ +#define CHARTYPE_PRINTABLESTRING 0x10 +/* Character needs escaping if it is the first character */ +#define CHARTYPE_FIRST_ESC_2253 0x20 +/* Character needs escaping if it is the last character */ +#define CHARTYPE_LAST_ESC_2253 0x40 + +/* + * NB the internal flags are safely reused below by flags handled at the top + * level. + */ + +/* + * If this is set we convert all character strings to UTF8 first + */ + +#define ASN1_STRFLGS_UTF8_CONVERT 0x10 + +/* + * If this is set we don't attempt to interpret content: just assume all + * strings are 1 byte per character. This will produce some pretty odd + * looking output! + */ + +#define ASN1_STRFLGS_IGNORE_TYPE 0x20 + +/* If this is set we include the string type in the output */ +#define ASN1_STRFLGS_SHOW_TYPE 0x40 + +/* + * This determines which strings to display and which to 'dump' (hex dump of + * content octets or DER encoding). We can only dump non character strings or + * everything. If we don't dump 'unknown' they are interpreted as character + * strings with 1 octet per character and are subject to the usual escaping + * options. + */ + +#define ASN1_STRFLGS_DUMP_ALL 0x80 +#define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 + +/* + * These determine what 'dumping' does, we can dump the content octets or the + * DER encoding: both use the RFC2253 #XXXXX notation. + */ + +#define ASN1_STRFLGS_DUMP_DER 0x200 + +/* + * This flag specifies that RC2254 escaping shall be performed. + */ +#define ASN1_STRFLGS_ESC_2254 0x400 + +/* + * All the string flags consistent with RFC2253, escaping control characters + * isn't essential in RFC2253 but it is advisable anyway. + */ + +#define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | ASN1_STRFLGS_ESC_CTRL | ASN1_STRFLGS_ESC_MSB | ASN1_STRFLGS_UTF8_CONVERT | ASN1_STRFLGS_DUMP_UNKNOWN | ASN1_STRFLGS_DUMP_DER) + +struct asn1_type_st { + int type; + union { + char *ptr; + ASN1_BOOLEAN boolean; + ASN1_STRING *asn1_string; + ASN1_OBJECT *object; + ASN1_INTEGER *integer; + ASN1_ENUMERATED *enumerated; + ASN1_BIT_STRING *bit_string; + ASN1_OCTET_STRING *octet_string; + ASN1_PRINTABLESTRING *printablestring; + ASN1_T61STRING *t61string; + ASN1_IA5STRING *ia5string; + ASN1_GENERALSTRING *generalstring; + ASN1_BMPSTRING *bmpstring; + ASN1_UNIVERSALSTRING *universalstring; + ASN1_UTCTIME *utctime; + ASN1_GENERALIZEDTIME *generalizedtime; + ASN1_VISIBLESTRING *visiblestring; + ASN1_UTF8STRING *utf8string; + /* + * set and sequence are left complete and still contain the set or + * sequence bytes + */ + ASN1_STRING *set; + ASN1_STRING *sequence; + ASN1_VALUE *asn1_value; + } value; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_TYPE, ASN1_TYPE, ASN1_TYPE) +#define sk_ASN1_TYPE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_value(sk, idx) ((ASN1_TYPE *)OPENSSL_sk_value(ossl_check_const_ASN1_TYPE_sk_type(sk), (idx))) +#define sk_ASN1_TYPE_new(cmp) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new(ossl_check_ASN1_TYPE_compfunc_type(cmp))) +#define sk_ASN1_TYPE_new_null() ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_TYPE_new_reserve(cmp, n) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_TYPE_compfunc_type(cmp), (n))) +#define sk_ASN1_TYPE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_TYPE_sk_type(sk), (n)) +#define sk_ASN1_TYPE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_delete(sk, i) ((ASN1_TYPE *)OPENSSL_sk_delete(ossl_check_ASN1_TYPE_sk_type(sk), (i))) +#define sk_ASN1_TYPE_delete_ptr(sk, ptr) ((ASN1_TYPE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr))) +#define sk_ASN1_TYPE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_pop(sk) ((ASN1_TYPE *)OPENSSL_sk_pop(ossl_check_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_shift(sk) ((ASN1_TYPE *)OPENSSL_sk_shift(ossl_check_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_TYPE_sk_type(sk),ossl_check_ASN1_TYPE_freefunc_type(freefunc)) +#define sk_ASN1_TYPE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), (idx)) +#define sk_ASN1_TYPE_set(sk, idx, ptr) ((ASN1_TYPE *)OPENSSL_sk_set(ossl_check_ASN1_TYPE_sk_type(sk), (idx), ossl_check_ASN1_TYPE_type(ptr))) +#define sk_ASN1_TYPE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), pnum) +#define sk_ASN1_TYPE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_dup(sk) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_copyfunc_type(copyfunc), ossl_check_ASN1_TYPE_freefunc_type(freefunc))) +#define sk_ASN1_TYPE_set_cmp_func(sk, cmp) ((sk_ASN1_TYPE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; + +DECLARE_ASN1_ENCODE_FUNCTIONS_name(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) +DECLARE_ASN1_ENCODE_FUNCTIONS_name(ASN1_SEQUENCE_ANY, ASN1_SET_ANY) + +/* This is used to contain a list of bit names */ +typedef struct BIT_STRING_BITNAME_st { + int bitnum; + const char *lname; + const char *sname; +} BIT_STRING_BITNAME; + +#define B_ASN1_TIME \ + B_ASN1_UTCTIME | B_ASN1_GENERALIZEDTIME + +#define B_ASN1_PRINTABLE \ + B_ASN1_NUMERICSTRING | B_ASN1_PRINTABLESTRING | B_ASN1_T61STRING | B_ASN1_IA5STRING | B_ASN1_BIT_STRING | B_ASN1_UNIVERSALSTRING | B_ASN1_BMPSTRING | B_ASN1_UTF8STRING | B_ASN1_SEQUENCE | B_ASN1_UNKNOWN + +#define B_ASN1_DIRECTORYSTRING \ + B_ASN1_PRINTABLESTRING | B_ASN1_TELETEXSTRING | B_ASN1_BMPSTRING | B_ASN1_UNIVERSALSTRING | B_ASN1_UTF8STRING + +#define B_ASN1_DISPLAYTEXT \ + B_ASN1_IA5STRING | B_ASN1_VISIBLESTRING | B_ASN1_BMPSTRING | B_ASN1_UTF8STRING + +DECLARE_ASN1_ALLOC_FUNCTIONS_name(ASN1_TYPE, ASN1_TYPE) +DECLARE_ASN1_ENCODE_FUNCTIONS(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) + +int ASN1_TYPE_get(const ASN1_TYPE *a); +void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); +int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value); +int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b); + +ASN1_TYPE *ASN1_TYPE_pack_sequence(const ASN1_ITEM *it, void *s, ASN1_TYPE **t); +void *ASN1_TYPE_unpack_sequence(const ASN1_ITEM *it, const ASN1_TYPE *t); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_OBJECT, ASN1_OBJECT, ASN1_OBJECT) +#define sk_ASN1_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_value(sk, idx) ((ASN1_OBJECT *)OPENSSL_sk_value(ossl_check_const_ASN1_OBJECT_sk_type(sk), (idx))) +#define sk_ASN1_OBJECT_new(cmp) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new(ossl_check_ASN1_OBJECT_compfunc_type(cmp))) +#define sk_ASN1_OBJECT_new_null() ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_null()) +#define sk_ASN1_OBJECT_new_reserve(cmp, n) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_OBJECT_compfunc_type(cmp), (n))) +#define sk_ASN1_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_OBJECT_sk_type(sk), (n)) +#define sk_ASN1_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_delete(sk, i) ((ASN1_OBJECT *)OPENSSL_sk_delete(ossl_check_ASN1_OBJECT_sk_type(sk), (i))) +#define sk_ASN1_OBJECT_delete_ptr(sk, ptr) ((ASN1_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr))) +#define sk_ASN1_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_pop(sk) ((ASN1_OBJECT *)OPENSSL_sk_pop(ossl_check_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_shift(sk) ((ASN1_OBJECT *)OPENSSL_sk_shift(ossl_check_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_OBJECT_sk_type(sk),ossl_check_ASN1_OBJECT_freefunc_type(freefunc)) +#define sk_ASN1_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), (idx)) +#define sk_ASN1_OBJECT_set(sk, idx, ptr) ((ASN1_OBJECT *)OPENSSL_sk_set(ossl_check_ASN1_OBJECT_sk_type(sk), (idx), ossl_check_ASN1_OBJECT_type(ptr))) +#define sk_ASN1_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), pnum) +#define sk_ASN1_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_dup(sk) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_copyfunc_type(copyfunc), ossl_check_ASN1_OBJECT_freefunc_type(freefunc))) +#define sk_ASN1_OBJECT_set_cmp_func(sk, cmp) ((sk_ASN1_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_FUNCTIONS(ASN1_OBJECT) + +ASN1_STRING *ASN1_STRING_new(void); +void ASN1_STRING_free(ASN1_STRING *a); +void ASN1_STRING_clear_free(ASN1_STRING *a); +int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str); +DECLARE_ASN1_DUP_FUNCTION(ASN1_STRING) +ASN1_STRING *ASN1_STRING_type_new(int type); +int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b); +/* + * Since this is used to store all sorts of things, via macros, for now, + * make its data void * + */ +int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); +void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len); +int ASN1_STRING_length(const ASN1_STRING *x); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void ASN1_STRING_length_set(ASN1_STRING *x, int n); +#endif +int ASN1_STRING_type(const ASN1_STRING *x); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 unsigned char *ASN1_STRING_data(ASN1_STRING *x); +#endif +const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x); + +DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING) +int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length); +int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); +int ASN1_BIT_STRING_get_bit(const ASN1_BIT_STRING *a, int n); +int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *a, + const unsigned char *flags, int flags_len); + +int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, + BIT_STRING_BITNAME *tbl, int indent); +int ASN1_BIT_STRING_num_asc(const char *name, BIT_STRING_BITNAME *tbl); +int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, const char *name, int value, + BIT_STRING_BITNAME *tbl); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_INTEGER, ASN1_INTEGER, ASN1_INTEGER) +#define sk_ASN1_INTEGER_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_value(sk, idx) ((ASN1_INTEGER *)OPENSSL_sk_value(ossl_check_const_ASN1_INTEGER_sk_type(sk), (idx))) +#define sk_ASN1_INTEGER_new(cmp) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new(ossl_check_ASN1_INTEGER_compfunc_type(cmp))) +#define sk_ASN1_INTEGER_new_null() ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_null()) +#define sk_ASN1_INTEGER_new_reserve(cmp, n) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_INTEGER_compfunc_type(cmp), (n))) +#define sk_ASN1_INTEGER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_INTEGER_sk_type(sk), (n)) +#define sk_ASN1_INTEGER_free(sk) OPENSSL_sk_free(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_delete(sk, i) ((ASN1_INTEGER *)OPENSSL_sk_delete(ossl_check_ASN1_INTEGER_sk_type(sk), (i))) +#define sk_ASN1_INTEGER_delete_ptr(sk, ptr) ((ASN1_INTEGER *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr))) +#define sk_ASN1_INTEGER_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_pop(sk) ((ASN1_INTEGER *)OPENSSL_sk_pop(ossl_check_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_shift(sk) ((ASN1_INTEGER *)OPENSSL_sk_shift(ossl_check_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_INTEGER_sk_type(sk),ossl_check_ASN1_INTEGER_freefunc_type(freefunc)) +#define sk_ASN1_INTEGER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), (idx)) +#define sk_ASN1_INTEGER_set(sk, idx, ptr) ((ASN1_INTEGER *)OPENSSL_sk_set(ossl_check_ASN1_INTEGER_sk_type(sk), (idx), ossl_check_ASN1_INTEGER_type(ptr))) +#define sk_ASN1_INTEGER_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), pnum) +#define sk_ASN1_INTEGER_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_dup(sk) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_dup(ossl_check_const_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_copyfunc_type(copyfunc), ossl_check_ASN1_INTEGER_freefunc_type(freefunc))) +#define sk_ASN1_INTEGER_set_cmp_func(sk, cmp) ((sk_ASN1_INTEGER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) +ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, + long length); +DECLARE_ASN1_DUP_FUNCTION(ASN1_INTEGER) +int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y); + +DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED) + +int ASN1_UTCTIME_check(const ASN1_UTCTIME *a); +ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t); +ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); +int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); + +int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, + time_t t); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, + time_t t, int offset_day, + long offset_sec); +int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str); + +int ASN1_TIME_diff(int *pday, int *psec, + const ASN1_TIME *from, const ASN1_TIME *to); + +DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING) +DECLARE_ASN1_DUP_FUNCTION(ASN1_OCTET_STRING) +int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, + const ASN1_OCTET_STRING *b); +int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, + int len); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_UTF8STRING, ASN1_UTF8STRING, ASN1_UTF8STRING) +#define sk_ASN1_UTF8STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_value(sk, idx) ((ASN1_UTF8STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), (idx))) +#define sk_ASN1_UTF8STRING_new(cmp) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) +#define sk_ASN1_UTF8STRING_new_null() ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_UTF8STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp), (n))) +#define sk_ASN1_UTF8STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_UTF8STRING_sk_type(sk), (n)) +#define sk_ASN1_UTF8STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_delete(sk, i) ((ASN1_UTF8STRING *)OPENSSL_sk_delete(ossl_check_ASN1_UTF8STRING_sk_type(sk), (i))) +#define sk_ASN1_UTF8STRING_delete_ptr(sk, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr))) +#define sk_ASN1_UTF8STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_pop(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_pop(ossl_check_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_shift(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_shift(ossl_check_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_UTF8STRING_sk_type(sk),ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc)) +#define sk_ASN1_UTF8STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), (idx)) +#define sk_ASN1_UTF8STRING_set(sk, idx, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_set(ossl_check_ASN1_UTF8STRING_sk_type(sk), (idx), ossl_check_ASN1_UTF8STRING_type(ptr))) +#define sk_ASN1_UTF8STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), pnum) +#define sk_ASN1_UTF8STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_dup(sk) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_copyfunc_type(copyfunc), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc))) +#define sk_ASN1_UTF8STRING_set_cmp_func(sk, cmp) ((sk_ASN1_UTF8STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_NULL) +DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING) + +int UTF8_getc(const unsigned char *str, int len, unsigned long *val); +int UTF8_putc(unsigned char *str, int len, unsigned long value); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_GENERALSTRING, ASN1_GENERALSTRING, ASN1_GENERALSTRING) +#define sk_ASN1_GENERALSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_value(sk, idx) ((ASN1_GENERALSTRING *)OPENSSL_sk_value(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), (idx))) +#define sk_ASN1_GENERALSTRING_new(cmp) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) +#define sk_ASN1_GENERALSTRING_new_null() ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_GENERALSTRING_new_reserve(cmp, n) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp), (n))) +#define sk_ASN1_GENERALSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (n)) +#define sk_ASN1_GENERALSTRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_delete(sk, i) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (i))) +#define sk_ASN1_GENERALSTRING_delete_ptr(sk, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr))) +#define sk_ASN1_GENERALSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_pop(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_pop(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_shift(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_shift(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk),ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc)) +#define sk_ASN1_GENERALSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), (idx)) +#define sk_ASN1_GENERALSTRING_set(sk, idx, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_set(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (idx), ossl_check_ASN1_GENERALSTRING_type(ptr))) +#define sk_ASN1_GENERALSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), pnum) +#define sk_ASN1_GENERALSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_dup(sk) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_copyfunc_type(copyfunc), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc))) +#define sk_ASN1_GENERALSTRING_set_cmp_func(sk, cmp) ((sk_ASN1_GENERALSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE) + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING) +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT) +DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_TIME) + +DECLARE_ASN1_DUP_FUNCTION(ASN1_TIME) +DECLARE_ASN1_DUP_FUNCTION(ASN1_UTCTIME) +DECLARE_ASN1_DUP_FUNCTION(ASN1_GENERALIZEDTIME) + +DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF) + +ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t); +ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_TIME_check(const ASN1_TIME *t); +ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(const ASN1_TIME *t, + ASN1_GENERALIZEDTIME **out); +int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); +int ASN1_TIME_set_string_X509(ASN1_TIME *s, const char *str); +int ASN1_TIME_to_tm(const ASN1_TIME *s, struct tm *tm); +int ASN1_TIME_normalize(ASN1_TIME *s); +int ASN1_TIME_cmp_time_t(const ASN1_TIME *s, time_t t); +int ASN1_TIME_compare(const ASN1_TIME *a, const ASN1_TIME *b); + +int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a); +int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); +int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a); +int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); +int i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a); +int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); +int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type); +int i2t_ASN1_OBJECT(char *buf, int buf_len, const ASN1_OBJECT *a); + +int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num); +ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len, + const char *sn, const char *ln); + +int ASN1_INTEGER_get_int64(int64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_int64(ASN1_INTEGER *a, int64_t r); +int ASN1_INTEGER_get_uint64(uint64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_uint64(ASN1_INTEGER *a, uint64_t r); + +int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); +long ASN1_INTEGER_get(const ASN1_INTEGER *a); +ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai); +BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); + +int ASN1_ENUMERATED_get_int64(int64_t *pr, const ASN1_ENUMERATED *a); +int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *a, int64_t r); + +int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); +long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a); +ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn, ASN1_ENUMERATED *ai); +BIGNUM *ASN1_ENUMERATED_to_BN(const ASN1_ENUMERATED *ai, BIGNUM *bn); + +/* General */ +/* given a string, return the correct type, max is the maximum length */ +int ASN1_PRINTABLE_type(const unsigned char *s, int max); + +unsigned long ASN1_tag2bit(int tag); + +/* SPECIALS */ +int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag, + int *pclass, long omax); +int ASN1_check_infinite_end(unsigned char **p, long len); +int ASN1_const_check_infinite_end(const unsigned char **p, long len); +void ASN1_put_object(unsigned char **pp, int constructed, int length, + int tag, int xclass); +int ASN1_put_eoc(unsigned char **pp); +int ASN1_object_size(int constructed, int length, int tag); + +/* Used to implement other functions */ +void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, const void *x); + +#define ASN1_dup_of(type, i2d, d2i, x) \ + ((type *)ASN1_dup(CHECKED_I2D_OF(type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(const type, x))) + +void *ASN1_item_dup(const ASN1_ITEM *it, const void *x); +int ASN1_item_sign_ex(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + const void *data, const ASN1_OCTET_STRING *id, + EVP_PKEY *pkey, const EVP_MD *md, OSSL_LIB_CTX *libctx, + const char *propq); +int ASN1_item_verify_ex(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + const ASN1_OCTET_STRING *id, EVP_PKEY *pkey, + OSSL_LIB_CTX *libctx, const char *propq); + +/* ASN1 alloc/free macros for when a type is only used internally */ + +#define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type)) +#define M_ASN1_free_of(x, type) \ + ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type)) + +#ifndef OPENSSL_NO_STDIO +void *ASN1_d2i_fp(void *(*xnew)(void), d2i_of_void *d2i, FILE *in, void **x); + +#define ASN1_d2i_fp_of(type, xnew, d2i, in, x) \ + ((type *)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_fp_ex(const ASN1_ITEM *it, FILE *in, void *x, + OSSL_LIB_CTX *libctx, const char *propq); +void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); +int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, const void *x); + +#define ASN1_i2d_fp_of(type, i2d, out, x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, const void *x); +int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags); +#endif + +int ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in); + +void *ASN1_d2i_bio(void *(*xnew)(void), d2i_of_void *d2i, BIO *in, void **x); + +#define ASN1_d2i_bio_of(type, xnew, d2i, in, x) \ + ((type *)ASN1_d2i_bio(CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_bio_ex(const ASN1_ITEM *it, BIO *in, void *pval, + OSSL_LIB_CTX *libctx, const char *propq); +void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *pval); +int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, const void *x); + +#define ASN1_i2d_bio_of(type, i2d, out, x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, const void *x); +BIO *ASN1_item_i2d_mem_bio(const ASN1_ITEM *it, const ASN1_VALUE *val); +int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a); +int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a); +int ASN1_TIME_print(BIO *bp, const ASN1_TIME *tm); +int ASN1_TIME_print_ex(BIO *bp, const ASN1_TIME *tm, unsigned long flags); +int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v); +int ASN1_STRING_print_ex(BIO *out, const ASN1_STRING *str, unsigned long flags); +int ASN1_buf_print(BIO *bp, const unsigned char *buf, size_t buflen, int off); +int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num, + unsigned char *buf, int off); +int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent); +int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent, + int dump); +const char *ASN1_tag2str(int tag); + +/* Used to load and write Netscape format cert */ + +int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); + +int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); +int ASN1_TYPE_get_octetstring(const ASN1_TYPE *a, unsigned char *data, int max_len); +int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, + unsigned char *data, int len); +int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, + unsigned char *data, int max_len); + +void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); + +ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, + ASN1_OCTET_STRING **oct); + +void ASN1_STRING_set_default_mask(unsigned long mask); +int ASN1_STRING_set_default_mask_asc(const char *p); +unsigned long ASN1_STRING_get_default_mask(void); +int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask); +int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask, + long minsize, long maxsize); + +ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, + const unsigned char *in, int inlen, + int inform, int nid); +ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid); +int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long); +void ASN1_STRING_TABLE_cleanup(void); + +/* ASN1 template functions */ + +/* Old API compatible functions */ +ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it); +ASN1_VALUE *ASN1_item_new_ex(const ASN1_ITEM *it, OSSL_LIB_CTX *libctx, + const char *propq); +void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); +ASN1_VALUE *ASN1_item_d2i_ex(ASN1_VALUE **val, const unsigned char **in, + long len, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); +ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, + long len, const ASN1_ITEM *it); +int ASN1_item_i2d(const ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); +int ASN1_item_ndef_i2d(const ASN1_VALUE *val, unsigned char **out, + const ASN1_ITEM *it); + +void ASN1_add_oid_module(void); +void ASN1_add_stable_module(void); + +ASN1_TYPE *ASN1_generate_nconf(const char *str, CONF *nconf); +ASN1_TYPE *ASN1_generate_v3(const char *str, X509V3_CTX *cnf); +int ASN1_str2mask(const char *str, unsigned long *pmask); + +/* ASN1 Print flags */ + +/* Indicate missing OPTIONAL fields */ +#define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001 +/* Mark start and end of SEQUENCE */ +#define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002 +/* Mark start and end of SEQUENCE/SET OF */ +#define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004 +/* Show the ASN1 type of primitives */ +#define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008 +/* Don't show ASN1 type of ANY */ +#define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010 +/* Don't show ASN1 type of MSTRINGs */ +#define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020 +/* Don't show field names in SEQUENCE */ +#define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040 +/* Show structure names of each SEQUENCE field */ +#define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080 +/* Don't show structure name even at top level */ +#define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100 + +int ASN1_item_print(BIO *out, const ASN1_VALUE *ifld, int indent, + const ASN1_ITEM *it, const ASN1_PCTX *pctx); +ASN1_PCTX *ASN1_PCTX_new(void); +void ASN1_PCTX_free(ASN1_PCTX *p); +unsigned long ASN1_PCTX_get_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_nm_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_cert_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_oid_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_str_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags); + +ASN1_SCTX *ASN1_SCTX_new(int (*scan_cb)(ASN1_SCTX *ctx)); +void ASN1_SCTX_free(ASN1_SCTX *p); +const ASN1_ITEM *ASN1_SCTX_get_item(ASN1_SCTX *p); +const ASN1_TEMPLATE *ASN1_SCTX_get_template(ASN1_SCTX *p); +unsigned long ASN1_SCTX_get_flags(ASN1_SCTX *p); +void ASN1_SCTX_set_app_data(ASN1_SCTX *p, void *data); +void *ASN1_SCTX_get_app_data(ASN1_SCTX *p); + +const BIO_METHOD *BIO_f_asn1(void); + +/* cannot constify val because of CMS_stream() */ +BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it); + +int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const ASN1_ITEM *it); +int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const char *hdr, const ASN1_ITEM *it); +/* cannot constify val because of CMS_dataFinal() */ +int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, + int ctype_nid, int econt_nid, + STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it); +int SMIME_write_ASN1_ex(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, + int ctype_nid, int econt_nid, + STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); +ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); +ASN1_VALUE *SMIME_read_ASN1_ex(BIO *bio, int flags, BIO **bcont, + const ASN1_ITEM *it, ASN1_VALUE **x, + OSSL_LIB_CTX *libctx, const char *propq); +int SMIME_crlf_copy(BIO *in, BIO *out, int flags); +int SMIME_text(BIO *in, BIO *out); + +const ASN1_ITEM *ASN1_ITEM_lookup(const char *name); +const ASN1_ITEM *ASN1_ITEM_get(size_t i); + +/* Legacy compatibility */ +#define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) +#define DECLARE_ASN1_FUNCTIONS_const(type) DECLARE_ASN1_FUNCTIONS(type) +#define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, name) +#define I2D_OF_const(type) I2D_OF(type) +#define ASN1_dup_of_const(type, i2d, d2i, x) ASN1_dup_of(type, i2d, d2i, x) +#define ASN1_i2d_fp_of_const(type, i2d, out, x) ASN1_i2d_fp_of(type, i2d, out, x) +#define ASN1_i2d_bio_of_const(type, i2d, out, x) ASN1_i2d_bio_of(type, i2d, out, x) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/asn1t.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/asn1t.h new file mode 100644 index 00000000000000..dc9042c812c95a --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/asn1t.h @@ -0,0 +1,935 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/asn1t.h.in + * + * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ASN1T_H +#define OPENSSL_ASN1T_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ASN1T_H +#endif + +#include +#include +#include + +#ifdef OPENSSL_BUILD_SHLIBCRYPTO +#undef OPENSSL_EXTERN +#define OPENSSL_EXTERN OPENSSL_EXPORT +#endif + +/* ASN1 template defines, structures and functions */ + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * These are the possible values for the itype field of the + * ASN1_ITEM structure and determine how it is interpreted. + * + * For PRIMITIVE types the underlying type + * determines the behaviour if items is NULL. + * + * Otherwise templates must contain a single + * template and the type is treated in the + * same way as the type specified in the template. + * + * For SEQUENCE types the templates field points + * to the members, the size field is the + * structure size. + * + * For CHOICE types the templates field points + * to each possible member (typically a union) + * and the 'size' field is the offset of the + * selector. + * + * The 'funcs' field is used for application-specific + * data and functions. + * + * The EXTERN type uses a new style d2i/i2d. + * The new style should be used where possible + * because it avoids things like the d2i IMPLICIT + * hack. + * + * MSTRING is a multiple string type, it is used + * for a CHOICE of character strings where the + * actual strings all occupy an ASN1_STRING + * structure. In this case the 'utype' field + * has a special meaning, it is used as a mask + * of acceptable types using the B_ASN1 constants. + * + * NDEF_SEQUENCE is the same as SEQUENCE except + * that it will use indefinite length constructed + * encoding if requested. + * + */ + +#define ASN1_ITYPE_PRIMITIVE 0x0 +#define ASN1_ITYPE_SEQUENCE 0x1 +#define ASN1_ITYPE_CHOICE 0x2 +/* unused value 0x3 */ +#define ASN1_ITYPE_EXTERN 0x4 +#define ASN1_ITYPE_MSTRING 0x5 +#define ASN1_ITYPE_NDEF_SEQUENCE 0x6 + +/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */ +#define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)((iptr)())) + +/* Macros for start and end of ASN1_ITEM definition */ + +#define ASN1_ITEM_start(itname) \ + const ASN1_ITEM *itname##_it(void) \ + { \ + static const ASN1_ITEM local_it = { + +#define static_ASN1_ITEM_start(itname) \ + static ASN1_ITEM_start(itname) + +#define ASN1_ITEM_end(itname) \ + } \ + ; \ + return &local_it; \ + } + +/* Macros to aid ASN1 template writing */ + +#define ASN1_ITEM_TEMPLATE(tname) \ + static const ASN1_TEMPLATE tname##_item_tt + +#define ASN1_ITEM_TEMPLATE_END(tname) \ + ; \ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_PRIMITIVE, \ + -1, \ + &tname##_item_tt, \ + 0, \ + NULL, \ + 0, \ + #tname ASN1_ITEM_end(tname) +#define static_ASN1_ITEM_TEMPLATE_END(tname) \ + ; \ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_PRIMITIVE, \ + -1, \ + &tname##_item_tt, \ + 0, \ + NULL, \ + 0, \ + #tname ASN1_ITEM_end(tname) + +/* This is a ASN1 type which just embeds a template */ + +/*- + * This pair helps declare a SEQUENCE. We can do: + * + * ASN1_SEQUENCE(stname) = { + * ... SEQUENCE components ... + * } ASN1_SEQUENCE_END(stname) + * + * This will produce an ASN1_ITEM called stname_it + * for a structure called stname. + * + * If you want the same structure but a different + * name then use: + * + * ASN1_SEQUENCE(itname) = { + * ... SEQUENCE components ... + * } ASN1_SEQUENCE_END_name(stname, itname) + * + * This will create an item called itname_it using + * a structure called stname. + */ + +#define ASN1_SEQUENCE(tname) \ + static const ASN1_TEMPLATE tname##_seq_tt[] + +#define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname) + +#define static_ASN1_SEQUENCE_END(stname) static_ASN1_SEQUENCE_END_name(stname, stname) + +#define ASN1_SEQUENCE_END_name(stname, tname) \ + ; \ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE, \ + V_ASN1_SEQUENCE, \ + tname##_seq_tt, \ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \ + NULL, \ + sizeof(stname), \ + #tname ASN1_ITEM_end(tname) + +#define static_ASN1_SEQUENCE_END_name(stname, tname) \ + ; \ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE, \ + V_ASN1_SEQUENCE, \ + tname##_seq_tt, \ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \ + NULL, \ + sizeof(stname), \ + #stname ASN1_ITEM_end(tname) + +#define ASN1_NDEF_SEQUENCE(tname) \ + ASN1_SEQUENCE(tname) + +#define ASN1_NDEF_SEQUENCE_cb(tname, cb) \ + ASN1_SEQUENCE_cb(tname, cb) + +#define ASN1_SEQUENCE_cb(tname, cb) \ + static const ASN1_AUX tname##_aux = { NULL, 0, 0, 0, cb, 0, NULL }; \ + ASN1_SEQUENCE(tname) + +#define ASN1_SEQUENCE_const_cb(tname, const_cb) \ + static const ASN1_AUX tname##_aux = { NULL, ASN1_AFLG_CONST_CB, 0, 0, NULL, 0, const_cb }; \ + ASN1_SEQUENCE(tname) + +#define ASN1_SEQUENCE_cb_const_cb(tname, cb, const_cb) \ + static const ASN1_AUX tname##_aux = { NULL, ASN1_AFLG_CONST_CB, 0, 0, cb, 0, const_cb }; \ + ASN1_SEQUENCE(tname) + +#define ASN1_SEQUENCE_ref(tname, cb) \ + static const ASN1_AUX tname##_aux = { NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), offsetof(tname, lock), cb, 0, NULL }; \ + ASN1_SEQUENCE(tname) + +#define ASN1_SEQUENCE_enc(tname, enc, cb) \ + static const ASN1_AUX tname##_aux = { NULL, ASN1_AFLG_ENCODING, 0, 0, cb, offsetof(tname, enc), NULL }; \ + ASN1_SEQUENCE(tname) + +#define ASN1_NDEF_SEQUENCE_END(tname) \ + ; \ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE, \ + V_ASN1_SEQUENCE, \ + tname##_seq_tt, \ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \ + NULL, \ + sizeof(tname), \ + #tname ASN1_ITEM_end(tname) +#define static_ASN1_NDEF_SEQUENCE_END(tname) \ + ; \ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE, \ + V_ASN1_SEQUENCE, \ + tname##_seq_tt, \ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \ + NULL, \ + sizeof(tname), \ + #tname ASN1_ITEM_end(tname) + +#define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) + +#define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) +#define static_ASN1_SEQUENCE_END_cb(stname, tname) static_ASN1_SEQUENCE_END_ref(stname, tname) + +#define ASN1_SEQUENCE_END_ref(stname, tname) \ + ; \ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE, \ + V_ASN1_SEQUENCE, \ + tname##_seq_tt, \ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \ + &tname##_aux, \ + sizeof(stname), \ + #tname ASN1_ITEM_end(tname) +#define static_ASN1_SEQUENCE_END_ref(stname, tname) \ + ; \ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE, \ + V_ASN1_SEQUENCE, \ + tname##_seq_tt, \ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \ + &tname##_aux, \ + sizeof(stname), \ + #stname ASN1_ITEM_end(tname) + +#define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \ + ; \ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE, \ + V_ASN1_SEQUENCE, \ + tname##_seq_tt, \ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE), \ + &tname##_aux, \ + sizeof(stname), \ + #stname ASN1_ITEM_end(tname) + +/*- + * This pair helps declare a CHOICE type. We can do: + * + * ASN1_CHOICE(chname) = { + * ... CHOICE options ... + * ASN1_CHOICE_END(chname) + * + * This will produce an ASN1_ITEM called chname_it + * for a structure called chname. The structure + * definition must look like this: + * typedef struct { + * int type; + * union { + * ASN1_SOMETHING *opt1; + * ASN1_SOMEOTHER *opt2; + * } value; + * } chname; + * + * the name of the selector must be 'type'. + * to use an alternative selector name use the + * ASN1_CHOICE_END_selector() version. + */ + +#define ASN1_CHOICE(tname) \ + static const ASN1_TEMPLATE tname##_ch_tt[] + +#define ASN1_CHOICE_cb(tname, cb) \ + static const ASN1_AUX tname##_aux = { NULL, 0, 0, 0, cb, 0, NULL }; \ + ASN1_CHOICE(tname) + +#define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname) + +#define static_ASN1_CHOICE_END(stname) static_ASN1_CHOICE_END_name(stname, stname) + +#define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type) + +#define static_ASN1_CHOICE_END_name(stname, tname) static_ASN1_CHOICE_END_selector(stname, tname, type) + +#define ASN1_CHOICE_END_selector(stname, tname, selname) \ + ; \ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE, \ + offsetof(stname, selname), \ + tname##_ch_tt, \ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE), \ + NULL, \ + sizeof(stname), \ + #stname ASN1_ITEM_end(tname) + +#define static_ASN1_CHOICE_END_selector(stname, tname, selname) \ + ; \ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE, \ + offsetof(stname, selname), \ + tname##_ch_tt, \ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE), \ + NULL, \ + sizeof(stname), \ + #stname ASN1_ITEM_end(tname) + +#define ASN1_CHOICE_END_cb(stname, tname, selname) \ + ; \ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE, \ + offsetof(stname, selname), \ + tname##_ch_tt, \ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE), \ + &tname##_aux, \ + sizeof(stname), \ + #stname ASN1_ITEM_end(tname) + +/* This helps with the template wrapper form of ASN1_ITEM */ + +#define ASN1_EX_TEMPLATE_TYPE(flags, tag, name, type) { \ + (flags), (tag), 0, \ + #name, ASN1_ITEM_ref(type) \ +} + +/* These help with SEQUENCE or CHOICE components */ + +/* used to declare other types */ + +#define ASN1_EX_TYPE(flags, tag, stname, field, type) { \ + (flags), (tag), offsetof(stname, field), \ + #field, ASN1_ITEM_ref(type) \ +} + +/* implicit and explicit helper macros */ + +#define ASN1_IMP_EX(stname, field, type, tag, ex) \ + ASN1_EX_TYPE(ASN1_TFLG_IMPLICIT | (ex), tag, stname, field, type) + +#define ASN1_EXP_EX(stname, field, type, tag, ex) \ + ASN1_EX_TYPE(ASN1_TFLG_EXPLICIT | (ex), tag, stname, field, type) + +/* Any defined by macros: the field used is in the table itself */ + +#define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, tblname##_adb } +#define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, tblname##_adb } + +/* Plain simple type */ +#define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0, 0, stname, field, type) +/* Embedded simple type */ +#define ASN1_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_EMBED, 0, stname, field, type) + +/* OPTIONAL simple type */ +#define ASN1_OPT(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL, 0, stname, field, type) +#define ASN1_OPT_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL | ASN1_TFLG_EMBED, 0, stname, field, type) + +/* IMPLICIT tagged simple type */ +#define ASN1_IMP(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, 0) +#define ASN1_IMP_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_EMBED) + +/* IMPLICIT tagged OPTIONAL simple type */ +#define ASN1_IMP_OPT(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL) +#define ASN1_IMP_OPT_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL | ASN1_TFLG_EMBED) + +/* Same as above but EXPLICIT */ + +#define ASN1_EXP(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, 0) +#define ASN1_EXP_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_EMBED) +#define ASN1_EXP_OPT(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL) +#define ASN1_EXP_OPT_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL | ASN1_TFLG_EMBED) + +/* SEQUENCE OF type */ +#define ASN1_SEQUENCE_OF(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, stname, field, type) + +/* OPTIONAL SEQUENCE OF */ +#define ASN1_SEQUENCE_OF_OPT(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, 0, stname, field, type) + +/* Same as above but for SET OF */ + +#define ASN1_SET_OF(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SET_OF, 0, stname, field, type) + +#define ASN1_SET_OF_OPT(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SET_OF | ASN1_TFLG_OPTIONAL, 0, stname, field, type) + +/* Finally compound types of SEQUENCE, SET, IMPLICIT, EXPLICIT and OPTIONAL */ + +#define ASN1_IMP_SET_OF(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF) + +#define ASN1_EXP_SET_OF(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF) + +#define ASN1_IMP_SET_OF_OPT(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF | ASN1_TFLG_OPTIONAL) + +#define ASN1_EXP_SET_OF_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF | ASN1_TFLG_OPTIONAL) + +#define ASN1_IMP_SEQUENCE_OF(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF) + +#define ASN1_IMP_SEQUENCE_OF_OPT(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL) + +#define ASN1_EXP_SEQUENCE_OF(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF) + +#define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL) + +/* EXPLICIT using indefinite length constructed form */ +#define ASN1_NDEF_EXP(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_NDEF) + +/* EXPLICIT OPTIONAL using indefinite length constructed form */ +#define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL | ASN1_TFLG_NDEF) + +/* Macros for the ASN1_ADB structure */ + +#define ASN1_ADB(name) \ + static const ASN1_ADB_TABLE name##_adbtbl[] + +#define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \ + ; \ + static const ASN1_ITEM *name##_adb(void) \ + { \ + static const ASN1_ADB internal_adb = { \ + flags, \ + offsetof(name, field), \ + adb_cb, \ + name##_adbtbl, \ + sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE), \ + def, \ + none \ + }; \ + return (const ASN1_ITEM *)&internal_adb; \ + } \ + void dummy_function(void) + +#define ADB_ENTRY(val, template) { val, template } + +#define ASN1_ADB_TEMPLATE(name) \ + static const ASN1_TEMPLATE name##_tt + +/* + * This is the ASN1 template structure that defines a wrapper round the + * actual type. It determines the actual position of the field in the value + * structure, various flags such as OPTIONAL and the field name. + */ + +struct ASN1_TEMPLATE_st { + unsigned long flags; /* Various flags */ + long tag; /* tag, not used if no tagging */ + unsigned long offset; /* Offset of this field in structure */ + const char *field_name; /* Field name */ + ASN1_ITEM_EXP *item; /* Relevant ASN1_ITEM or ASN1_ADB */ +}; + +/* Macro to extract ASN1_ITEM and ASN1_ADB pointer from ASN1_TEMPLATE */ + +#define ASN1_TEMPLATE_item(t) (t->item_ptr) +#define ASN1_TEMPLATE_adb(t) (t->item_ptr) + +typedef struct ASN1_ADB_TABLE_st ASN1_ADB_TABLE; +typedef struct ASN1_ADB_st ASN1_ADB; + +struct ASN1_ADB_st { + unsigned long flags; /* Various flags */ + unsigned long offset; /* Offset of selector field */ + int (*adb_cb)(long *psel); /* Application callback */ + const ASN1_ADB_TABLE *tbl; /* Table of possible types */ + long tblcount; /* Number of entries in tbl */ + const ASN1_TEMPLATE *default_tt; /* Type to use if no match */ + const ASN1_TEMPLATE *null_tt; /* Type to use if selector is NULL */ +}; + +struct ASN1_ADB_TABLE_st { + long value; /* NID for an object or value for an int */ + const ASN1_TEMPLATE tt; /* item for this value */ +}; + +/* template flags */ + +/* Field is optional */ +#define ASN1_TFLG_OPTIONAL (0x1) + +/* Field is a SET OF */ +#define ASN1_TFLG_SET_OF (0x1 << 1) + +/* Field is a SEQUENCE OF */ +#define ASN1_TFLG_SEQUENCE_OF (0x2 << 1) + +/* + * Special case: this refers to a SET OF that will be sorted into DER order + * when encoded *and* the corresponding STACK will be modified to match the + * new order. + */ +#define ASN1_TFLG_SET_ORDER (0x3 << 1) + +/* Mask for SET OF or SEQUENCE OF */ +#define ASN1_TFLG_SK_MASK (0x3 << 1) + +/* + * These flags mean the tag should be taken from the tag field. If EXPLICIT + * then the underlying type is used for the inner tag. + */ + +/* IMPLICIT tagging */ +#define ASN1_TFLG_IMPTAG (0x1 << 3) + +/* EXPLICIT tagging, inner tag from underlying type */ +#define ASN1_TFLG_EXPTAG (0x2 << 3) + +#define ASN1_TFLG_TAG_MASK (0x3 << 3) + +/* context specific IMPLICIT */ +#define ASN1_TFLG_IMPLICIT (ASN1_TFLG_IMPTAG | ASN1_TFLG_CONTEXT) + +/* context specific EXPLICIT */ +#define ASN1_TFLG_EXPLICIT (ASN1_TFLG_EXPTAG | ASN1_TFLG_CONTEXT) + +/* + * If tagging is in force these determine the type of tag to use. Otherwise + * the tag is determined by the underlying type. These values reflect the + * actual octet format. + */ + +/* Universal tag */ +#define ASN1_TFLG_UNIVERSAL (0x0 << 6) +/* Application tag */ +#define ASN1_TFLG_APPLICATION (0x1 << 6) +/* Context specific tag */ +#define ASN1_TFLG_CONTEXT (0x2 << 6) +/* Private tag */ +#define ASN1_TFLG_PRIVATE (0x3 << 6) + +#define ASN1_TFLG_TAG_CLASS (0x3 << 6) + +/* + * These are for ANY DEFINED BY type. In this case the 'item' field points to + * an ASN1_ADB structure which contains a table of values to decode the + * relevant type + */ + +#define ASN1_TFLG_ADB_MASK (0x3 << 8) + +#define ASN1_TFLG_ADB_OID (0x1 << 8) + +#define ASN1_TFLG_ADB_INT (0x1 << 9) + +/* + * This flag when present in a SEQUENCE OF, SET OF or EXPLICIT causes + * indefinite length constructed encoding to be used if required. + */ + +#define ASN1_TFLG_NDEF (0x1 << 11) + +/* Field is embedded and not a pointer */ +#define ASN1_TFLG_EMBED (0x1 << 12) + +/* This is the actual ASN1 item itself */ + +struct ASN1_ITEM_st { + char itype; /* The item type, primitive, SEQUENCE, CHOICE + * or extern */ + long utype; /* underlying type */ + const ASN1_TEMPLATE *templates; /* If SEQUENCE or CHOICE this contains + * the contents */ + long tcount; /* Number of templates if SEQUENCE or CHOICE */ + const void *funcs; /* further data and type-specific functions */ + /* funcs can be ASN1_PRIMITIVE_FUNCS*, ASN1_EXTERN_FUNCS*, or ASN1_AUX* */ + long size; /* Structure size (usually) */ + const char *sname; /* Structure name */ +}; + +/* + * Cache for ASN1 tag and length, so we don't keep re-reading it for things + * like CHOICE + */ + +struct ASN1_TLC_st { + char valid; /* Values below are valid */ + int ret; /* return value */ + long plen; /* length */ + int ptag; /* class value */ + int pclass; /* class value */ + int hdrlen; /* header length */ +}; + +/* Typedefs for ASN1 function pointers */ +typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx); + +typedef int ASN1_ex_d2i_ex(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx, OSSL_LIB_CTX *libctx, + const char *propq); +typedef int ASN1_ex_i2d(const ASN1_VALUE **pval, unsigned char **out, + const ASN1_ITEM *it, int tag, int aclass); +typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it); +typedef int ASN1_ex_new_ex_func(ASN1_VALUE **pval, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); +typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it); + +typedef int ASN1_ex_print_func(BIO *out, const ASN1_VALUE **pval, + int indent, const char *fname, + const ASN1_PCTX *pctx); + +typedef int ASN1_primitive_i2c(const ASN1_VALUE **pval, unsigned char *cont, + int *putype, const ASN1_ITEM *it); +typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont, + int len, int utype, char *free_cont, + const ASN1_ITEM *it); +typedef int ASN1_primitive_print(BIO *out, const ASN1_VALUE **pval, + const ASN1_ITEM *it, int indent, + const ASN1_PCTX *pctx); + +typedef struct ASN1_EXTERN_FUNCS_st { + void *app_data; + ASN1_ex_new_func *asn1_ex_new; + ASN1_ex_free_func *asn1_ex_free; + ASN1_ex_free_func *asn1_ex_clear; + ASN1_ex_d2i *asn1_ex_d2i; + ASN1_ex_i2d *asn1_ex_i2d; + ASN1_ex_print_func *asn1_ex_print; + ASN1_ex_new_ex_func *asn1_ex_new_ex; + ASN1_ex_d2i_ex *asn1_ex_d2i_ex; +} ASN1_EXTERN_FUNCS; + +typedef struct ASN1_PRIMITIVE_FUNCS_st { + void *app_data; + unsigned long flags; + ASN1_ex_new_func *prim_new; + ASN1_ex_free_func *prim_free; + ASN1_ex_free_func *prim_clear; + ASN1_primitive_c2i *prim_c2i; + ASN1_primitive_i2c *prim_i2c; + ASN1_primitive_print *prim_print; +} ASN1_PRIMITIVE_FUNCS; + +/* + * This is the ASN1_AUX structure: it handles various miscellaneous + * requirements. For example the use of reference counts and an informational + * callback. The "informational callback" is called at various points during + * the ASN1 encoding and decoding. It can be used to provide minor + * customisation of the structures used. This is most useful where the + * supplied routines *almost* do the right thing but need some extra help at + * a few points. If the callback returns zero then it is assumed a fatal + * error has occurred and the main operation should be abandoned. If major + * changes in the default behaviour are required then an external type is + * more appropriate. + * For the operations ASN1_OP_I2D_PRE, ASN1_OP_I2D_POST, ASN1_OP_PRINT_PRE, and + * ASN1_OP_PRINT_POST, meanwhile a variant of the callback with const parameter + * 'in' is provided to make clear statically that its input is not modified. If + * and only if this variant is in use the flag ASN1_AFLG_CONST_CB must be set. + */ + +typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it, + void *exarg); +typedef int ASN1_aux_const_cb(int operation, const ASN1_VALUE **in, + const ASN1_ITEM *it, void *exarg); + +typedef struct ASN1_AUX_st { + void *app_data; + int flags; + int ref_offset; /* Offset of reference value */ + int ref_lock; /* Offset of lock value */ + ASN1_aux_cb *asn1_cb; + int enc_offset; /* Offset of ASN1_ENCODING structure */ + ASN1_aux_const_cb *asn1_const_cb; /* for ASN1_OP_I2D_ and ASN1_OP_PRINT_ */ +} ASN1_AUX; + +/* For print related callbacks exarg points to this structure */ +typedef struct ASN1_PRINT_ARG_st { + BIO *out; + int indent; + const ASN1_PCTX *pctx; +} ASN1_PRINT_ARG; + +/* For streaming related callbacks exarg points to this structure */ +typedef struct ASN1_STREAM_ARG_st { + /* BIO to stream through */ + BIO *out; + /* BIO with filters appended */ + BIO *ndef_bio; + /* Streaming I/O boundary */ + unsigned char **boundary; +} ASN1_STREAM_ARG; + +/* Flags in ASN1_AUX */ + +/* Use a reference count */ +#define ASN1_AFLG_REFCOUNT 1 +/* Save the encoding of structure (useful for signatures) */ +#define ASN1_AFLG_ENCODING 2 +/* The Sequence length is invalid */ +#define ASN1_AFLG_BROKEN 4 +/* Use the new asn1_const_cb */ +#define ASN1_AFLG_CONST_CB 8 + +/* operation values for asn1_cb */ + +#define ASN1_OP_NEW_PRE 0 +#define ASN1_OP_NEW_POST 1 +#define ASN1_OP_FREE_PRE 2 +#define ASN1_OP_FREE_POST 3 +#define ASN1_OP_D2I_PRE 4 +#define ASN1_OP_D2I_POST 5 +#define ASN1_OP_I2D_PRE 6 +#define ASN1_OP_I2D_POST 7 +#define ASN1_OP_PRINT_PRE 8 +#define ASN1_OP_PRINT_POST 9 +#define ASN1_OP_STREAM_PRE 10 +#define ASN1_OP_STREAM_POST 11 +#define ASN1_OP_DETACHED_PRE 12 +#define ASN1_OP_DETACHED_POST 13 +#define ASN1_OP_DUP_PRE 14 +#define ASN1_OP_DUP_POST 15 +#define ASN1_OP_GET0_LIBCTX 16 +#define ASN1_OP_GET0_PROPQ 17 + +/* Macro to implement a primitive type */ +#define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0) +#define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) \ + ASN1_ITEM_start(itname) \ + ASN1_ITYPE_PRIMITIVE, \ + V_##vname, NULL, 0, NULL, ex, #itname ASN1_ITEM_end(itname) + +/* Macro to implement a multi string type */ +#define IMPLEMENT_ASN1_MSTRING(itname, mask) \ + ASN1_ITEM_start(itname) \ + ASN1_ITYPE_MSTRING, \ + mask, NULL, 0, NULL, sizeof(ASN1_STRING), #itname ASN1_ITEM_end(itname) + +#define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \ + ASN1_ITEM_start(sname) \ + ASN1_ITYPE_EXTERN, \ + tag, \ + NULL, \ + 0, \ + &fptrs, \ + 0, \ + #sname ASN1_ITEM_end(sname) + +/* Macro to implement standard functions in terms of ASN1_ITEM structures */ + +#define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname) + +#define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, itname) + +#define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \ + IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname) + +#define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, stname) + +#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname) + +#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \ + pre stname *fname##_new(void) \ + { \ + return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \ + } \ + pre void fname##_free(stname *a) \ + { \ + ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \ + } + +#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \ + stname *fname##_new(void) \ + { \ + return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \ + } \ + void fname##_free(stname *a) \ + { \ + ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \ + } + +#define IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) + +#define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \ + stname *d2i_##fname(stname **a, const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname)); \ + } \ + int i2d_##fname(const stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname)); \ + } + +#define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \ + int i2d_##stname##_NDEF(const stname *a, unsigned char **out) \ + { \ + return ASN1_item_ndef_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(stname)); \ + } + +#define IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS(stname) \ + static stname *d2i_##stname(stname **a, \ + const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, \ + ASN1_ITEM_rptr(stname)); \ + } \ + static int i2d_##stname(const stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((const ASN1_VALUE *)a, out, \ + ASN1_ITEM_rptr(stname)); \ + } + +#define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \ + stname *stname##_dup(const stname *x) \ + { \ + return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \ + } + +#define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \ + IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname) + +#define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \ + int fname##_print_ctx(BIO *out, const stname *x, int indent, \ + const ASN1_PCTX *pctx) \ + { \ + return ASN1_item_print(out, (const ASN1_VALUE *)x, indent, \ + ASN1_ITEM_rptr(itname), pctx); \ + } + +/* external definitions for primitive types */ + +DECLARE_ASN1_ITEM(ASN1_BOOLEAN) +DECLARE_ASN1_ITEM(ASN1_TBOOLEAN) +DECLARE_ASN1_ITEM(ASN1_FBOOLEAN) +DECLARE_ASN1_ITEM(ASN1_SEQUENCE) +DECLARE_ASN1_ITEM(CBIGNUM) +DECLARE_ASN1_ITEM(BIGNUM) +DECLARE_ASN1_ITEM(INT32) +DECLARE_ASN1_ITEM(ZINT32) +DECLARE_ASN1_ITEM(UINT32) +DECLARE_ASN1_ITEM(ZUINT32) +DECLARE_ASN1_ITEM(INT64) +DECLARE_ASN1_ITEM(ZINT64) +DECLARE_ASN1_ITEM(UINT64) +DECLARE_ASN1_ITEM(ZUINT64) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * LONG and ZLONG are strongly discouraged for use as stored data, as the + * underlying C type (long) differs in size depending on the architecture. + * They are designed with 32-bit longs in mind. + */ +DECLARE_ASN1_ITEM(LONG) +DECLARE_ASN1_ITEM(ZLONG) +#endif + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_VALUE, ASN1_VALUE, ASN1_VALUE) +#define sk_ASN1_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_value(sk, idx) ((ASN1_VALUE *)OPENSSL_sk_value(ossl_check_const_ASN1_VALUE_sk_type(sk), (idx))) +#define sk_ASN1_VALUE_new(cmp) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new(ossl_check_ASN1_VALUE_compfunc_type(cmp))) +#define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_VALUE_new_reserve(cmp, n) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_VALUE_compfunc_type(cmp), (n))) +#define sk_ASN1_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_VALUE_sk_type(sk), (n)) +#define sk_ASN1_VALUE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_delete(sk, i) ((ASN1_VALUE *)OPENSSL_sk_delete(ossl_check_ASN1_VALUE_sk_type(sk), (i))) +#define sk_ASN1_VALUE_delete_ptr(sk, ptr) ((ASN1_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))) +#define sk_ASN1_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_pop(sk) ((ASN1_VALUE *)OPENSSL_sk_pop(ossl_check_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_shift(sk) ((ASN1_VALUE *)OPENSSL_sk_shift(ossl_check_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_VALUE_sk_type(sk),ossl_check_ASN1_VALUE_freefunc_type(freefunc)) +#define sk_ASN1_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), (idx)) +#define sk_ASN1_VALUE_set(sk, idx, ptr) ((ASN1_VALUE *)OPENSSL_sk_set(ossl_check_ASN1_VALUE_sk_type(sk), (idx), ossl_check_ASN1_VALUE_type(ptr))) +#define sk_ASN1_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), pnum) +#define sk_ASN1_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_dup(sk) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_copyfunc_type(copyfunc), ossl_check_ASN1_VALUE_freefunc_type(freefunc))) +#define sk_ASN1_VALUE_set_cmp_func(sk, cmp) ((sk_ASN1_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_compfunc_type(cmp))) + +/* clang-format on */ + +/* Functions used internally by the ASN1 code */ + +int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it); +void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it); + +int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx); + +int ASN1_item_ex_i2d(const ASN1_VALUE **pval, unsigned char **out, + const ASN1_ITEM *it, int tag, int aclass); + +/* Legacy compatibility */ +#define IMPLEMENT_ASN1_FUNCTIONS_const(name) IMPLEMENT_ASN1_FUNCTIONS(name) +#define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/bio.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/bio.h new file mode 100644 index 00000000000000..f87990019926e1 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/bio.h @@ -0,0 +1,1028 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/bio.h.in + * + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_BIO_H +#define OPENSSL_BIO_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_BIO_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* There are the classes of BIOs */ +#define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */ +#define BIO_TYPE_FILTER 0x0200 +#define BIO_TYPE_SOURCE_SINK 0x0400 + +/* These are the 'types' of BIOs */ +#define BIO_TYPE_NONE 0 +#define BIO_TYPE_MEM (1 | BIO_TYPE_SOURCE_SINK) +#define BIO_TYPE_FILE (2 | BIO_TYPE_SOURCE_SINK) + +#define BIO_TYPE_FD (4 | BIO_TYPE_SOURCE_SINK | BIO_TYPE_DESCRIPTOR) +#define BIO_TYPE_SOCKET (5 | BIO_TYPE_SOURCE_SINK | BIO_TYPE_DESCRIPTOR) +#define BIO_TYPE_NULL (6 | BIO_TYPE_SOURCE_SINK) +#define BIO_TYPE_SSL (7 | BIO_TYPE_FILTER) +#define BIO_TYPE_MD (8 | BIO_TYPE_FILTER) +#define BIO_TYPE_BUFFER (9 | BIO_TYPE_FILTER) +#define BIO_TYPE_CIPHER (10 | BIO_TYPE_FILTER) +#define BIO_TYPE_BASE64 (11 | BIO_TYPE_FILTER) +#define BIO_TYPE_CONNECT (12 | BIO_TYPE_SOURCE_SINK | BIO_TYPE_DESCRIPTOR) +#define BIO_TYPE_ACCEPT (13 | BIO_TYPE_SOURCE_SINK | BIO_TYPE_DESCRIPTOR) + +#define BIO_TYPE_NBIO_TEST (16 | BIO_TYPE_FILTER) /* server proxy BIO */ +#define BIO_TYPE_NULL_FILTER (17 | BIO_TYPE_FILTER) +#define BIO_TYPE_BIO (19 | BIO_TYPE_SOURCE_SINK) /* half a BIO pair */ +#define BIO_TYPE_LINEBUFFER (20 | BIO_TYPE_FILTER) +#define BIO_TYPE_DGRAM (21 | BIO_TYPE_SOURCE_SINK | BIO_TYPE_DESCRIPTOR) +#define BIO_TYPE_ASN1 (22 | BIO_TYPE_FILTER) +#define BIO_TYPE_COMP (23 | BIO_TYPE_FILTER) +#ifndef OPENSSL_NO_SCTP +#define BIO_TYPE_DGRAM_SCTP (24 | BIO_TYPE_SOURCE_SINK | BIO_TYPE_DESCRIPTOR) +#endif +#define BIO_TYPE_CORE_TO_PROV (25 | BIO_TYPE_SOURCE_SINK) +#define BIO_TYPE_DGRAM_PAIR (26 | BIO_TYPE_SOURCE_SINK) +#define BIO_TYPE_DGRAM_MEM (27 | BIO_TYPE_SOURCE_SINK) + +/* Custom type starting index returned by BIO_get_new_index() */ +#define BIO_TYPE_START 128 +/* Custom type maximum index that can be returned by BIO_get_new_index() */ +#define BIO_TYPE_MASK 0xFF + +/* + * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. + * BIO_set_fp(in,stdin,BIO_NOCLOSE); + */ +#define BIO_NOCLOSE 0x00 +#define BIO_CLOSE 0x01 + +/* + * These are used in the following macros and are passed to BIO_ctrl() + */ +#define BIO_CTRL_RESET 1 /* opt - rewind/zero etc */ +#define BIO_CTRL_EOF 2 /* opt - are we at the eof */ +#define BIO_CTRL_INFO 3 /* opt - extra tit-bits */ +#define BIO_CTRL_SET 4 /* man - set the 'IO' type */ +#define BIO_CTRL_GET 5 /* man - get the 'IO' type */ +#define BIO_CTRL_PUSH 6 /* opt - internal, used to signify change */ +#define BIO_CTRL_POP 7 /* opt - internal, used to signify change */ +#define BIO_CTRL_GET_CLOSE 8 /* man - set the 'close' on free */ +#define BIO_CTRL_SET_CLOSE 9 /* man - set the 'close' on free */ +#define BIO_CTRL_PENDING 10 /* opt - is their more data buffered */ +#define BIO_CTRL_FLUSH 11 /* opt - 'flush' buffered output */ +#define BIO_CTRL_DUP 12 /* man - extra stuff for 'duped' BIO */ +#define BIO_CTRL_WPENDING 13 /* opt - number of bytes still to write */ +#define BIO_CTRL_SET_CALLBACK 14 /* opt - set callback function */ +#define BIO_CTRL_GET_CALLBACK 15 /* opt - set callback function */ + +#define BIO_CTRL_PEEK 29 /* BIO_f_buffer special */ +#define BIO_CTRL_SET_FILENAME 30 /* BIO_s_file special */ + +/* dgram BIO stuff */ +#define BIO_CTRL_DGRAM_CONNECT 31 /* BIO dgram special */ +#define BIO_CTRL_DGRAM_SET_CONNECTED 32 /* allow for an externally connected \ + * socket to be passed in */ +#define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33 /* setsockopt, essentially */ +#define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34 /* getsockopt, essentially */ +#define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35 /* setsockopt, essentially */ +#define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36 /* getsockopt, essentially */ + +#define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37 /* flag whether the last */ +#define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38 /* I/O operation timed out */ + +/* #ifdef IP_MTU_DISCOVER */ +#define BIO_CTRL_DGRAM_MTU_DISCOVER 39 /* set DF bit on egress packets */ +/* #endif */ + +#define BIO_CTRL_DGRAM_QUERY_MTU 40 /* as kernel for current MTU */ +#define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47 +#define BIO_CTRL_DGRAM_GET_MTU 41 /* get cached value for MTU */ +#define BIO_CTRL_DGRAM_SET_MTU 42 /* set cached value for MTU. \ + * want to use this if asking \ + * the kernel fails */ + +#define BIO_CTRL_DGRAM_MTU_EXCEEDED 43 /* check whether the MTU was \ + * exceed in the previous write \ + * operation */ + +#define BIO_CTRL_DGRAM_GET_PEER 46 +#define BIO_CTRL_DGRAM_SET_PEER 44 /* Destination for the data */ + +#define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45 /* Next DTLS handshake timeout \ + * to adjust socket timeouts */ +#define BIO_CTRL_DGRAM_SET_DONT_FRAG 48 + +#define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49 + +/* Deliberately outside of OPENSSL_NO_SCTP - used in bss_dgram.c */ +#define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50 +#ifndef OPENSSL_NO_SCTP +/* SCTP stuff */ +#define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51 +#define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52 +#define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53 +#define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60 +#define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61 +#define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62 +#define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63 +#define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64 +#define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65 +#define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70 +#endif + +#define BIO_CTRL_DGRAM_SET_PEEK_MODE 71 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_SEND 72 + * # define BIO_CTRL_SET_KTLS_SEND_CTRL_MSG 74 + * # define BIO_CTRL_CLEAR_KTLS_CTRL_MSG 75 + */ + +#define BIO_CTRL_GET_KTLS_SEND 73 +#define BIO_CTRL_GET_KTLS_RECV 76 + +#define BIO_CTRL_DGRAM_SCTP_WAIT_FOR_DRY 77 +#define BIO_CTRL_DGRAM_SCTP_MSG_WAITING 78 + +/* BIO_f_prefix controls */ +#define BIO_CTRL_SET_PREFIX 79 +#define BIO_CTRL_SET_INDENT 80 +#define BIO_CTRL_GET_INDENT 81 + +#define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +#define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +#define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +#define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +#define BIO_CTRL_DGRAM_GET_CAPS 86 +#define BIO_CTRL_DGRAM_SET_CAPS 87 +#define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +#define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +#define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +#define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +#define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 +#define BIO_CTRL_DGRAM_SET0_LOCAL_ADDR 94 + +#define BIO_DGRAM_CAP_NONE 0U +#define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +#define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +#define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +#define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + +#ifndef OPENSSL_NO_KTLS +#define BIO_get_ktls_send(b) \ + (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) +#define BIO_get_ktls_recv(b) \ + (BIO_ctrl(b, BIO_CTRL_GET_KTLS_RECV, 0, NULL) > 0) +#else +#define BIO_get_ktls_send(b) (0) +#define BIO_get_ktls_recv(b) (0) +#endif + +/* modifiers */ +#define BIO_FP_READ 0x02 +#define BIO_FP_WRITE 0x04 +#define BIO_FP_APPEND 0x08 +#define BIO_FP_TEXT 0x10 + +#define BIO_FLAGS_READ 0x01 +#define BIO_FLAGS_WRITE 0x02 +#define BIO_FLAGS_IO_SPECIAL 0x04 +#define BIO_FLAGS_RWS (BIO_FLAGS_READ | BIO_FLAGS_WRITE | BIO_FLAGS_IO_SPECIAL) +#define BIO_FLAGS_SHOULD_RETRY 0x08 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* This #define was replaced by an internal constant and should not be used. */ +#define BIO_FLAGS_UPLINK 0 +#endif + +#define BIO_FLAGS_BASE64_NO_NL 0x100 + +/* + * This is used with memory BIOs: + * BIO_FLAGS_MEM_RDONLY means we shouldn't free up or change the data in any way; + * BIO_FLAGS_NONCLEAR_RST means we shouldn't clear data on reset. + */ +#define BIO_FLAGS_MEM_RDONLY 0x200 +#define BIO_FLAGS_NONCLEAR_RST 0x400 +#define BIO_FLAGS_IN_EOF 0x800 + +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ + +typedef union bio_addr_st BIO_ADDR; +typedef struct bio_addrinfo_st BIO_ADDRINFO; + +int BIO_get_new_index(void); +void BIO_set_flags(BIO *b, int flags); +int BIO_test_flags(const BIO *b, int flags); +void BIO_clear_flags(BIO *b, int flags); + +#define BIO_get_flags(b) BIO_test_flags(b, ~(0x0)) +#define BIO_set_retry_special(b) \ + BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL | BIO_FLAGS_SHOULD_RETRY)) +#define BIO_set_retry_read(b) \ + BIO_set_flags(b, (BIO_FLAGS_READ | BIO_FLAGS_SHOULD_RETRY)) +#define BIO_set_retry_write(b) \ + BIO_set_flags(b, (BIO_FLAGS_WRITE | BIO_FLAGS_SHOULD_RETRY)) + +/* These are normally used internally in BIOs */ +#define BIO_clear_retry_flags(b) \ + BIO_clear_flags(b, (BIO_FLAGS_RWS | BIO_FLAGS_SHOULD_RETRY)) +#define BIO_get_retry_flags(b) \ + BIO_test_flags(b, (BIO_FLAGS_RWS | BIO_FLAGS_SHOULD_RETRY)) + +/* These should be used by the application to tell why we should retry */ +#define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ) +#define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE) +#define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL) +#define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS) +#define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY) + +/* + * The next three are used in conjunction with the BIO_should_io_special() + * condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int + * *reason); will walk the BIO stack and return the 'reason' for the special + * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return + * the code. + */ +/* + * Returned from the SSL bio when the certificate retrieval code had an error + */ +#define BIO_RR_SSL_X509_LOOKUP 0x01 +/* Returned from the connect BIO when a connect would have blocked */ +#define BIO_RR_CONNECT 0x02 +/* Returned from the accept BIO when an accept would have blocked */ +#define BIO_RR_ACCEPT 0x03 + +/* These are passed by the BIO callback */ +#define BIO_CB_FREE 0x01 +#define BIO_CB_READ 0x02 +#define BIO_CB_WRITE 0x03 +#define BIO_CB_PUTS 0x04 +#define BIO_CB_GETS 0x05 +#define BIO_CB_CTRL 0x06 +#define BIO_CB_RECVMMSG 0x07 +#define BIO_CB_SENDMMSG 0x08 + +/* + * The callback is called before and after the underling operation, The + * BIO_CB_RETURN flag indicates if it is after the call + */ +#define BIO_CB_RETURN 0x80 +#define BIO_CB_return(a) ((a) | BIO_CB_RETURN) +#define BIO_cb_pre(a) (!((a) & BIO_CB_RETURN)) +#define BIO_cb_post(a) ((a) & BIO_CB_RETURN) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi, + long argl, long ret); +OSSL_DEPRECATEDIN_3_0 BIO_callback_fn BIO_get_callback(const BIO *b); +OSSL_DEPRECATEDIN_3_0 void BIO_set_callback(BIO *b, BIO_callback_fn callback); +OSSL_DEPRECATEDIN_3_0 long BIO_debug_callback(BIO *bio, int cmd, + const char *argp, int argi, + long argl, long ret); +#endif + +typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp, + size_t len, int argi, + long argl, int ret, size_t *processed); +BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b); +void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback); +long BIO_debug_callback_ex(BIO *bio, int oper, const char *argp, size_t len, + int argi, long argl, int ret, size_t *processed); + +char *BIO_get_callback_arg(const BIO *b); +void BIO_set_callback_arg(BIO *b, char *arg); + +typedef struct bio_method_st BIO_METHOD; + +const char *BIO_method_name(const BIO *b); +int BIO_method_type(const BIO *b); + +typedef int BIO_info_cb(BIO *, int, int); +typedef BIO_info_cb bio_info_cb; /* backward compatibility */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(BIO, BIO, BIO) +#define sk_BIO_num(sk) OPENSSL_sk_num(ossl_check_const_BIO_sk_type(sk)) +#define sk_BIO_value(sk, idx) ((BIO *)OPENSSL_sk_value(ossl_check_const_BIO_sk_type(sk), (idx))) +#define sk_BIO_new(cmp) ((STACK_OF(BIO) *)OPENSSL_sk_new(ossl_check_BIO_compfunc_type(cmp))) +#define sk_BIO_new_null() ((STACK_OF(BIO) *)OPENSSL_sk_new_null()) +#define sk_BIO_new_reserve(cmp, n) ((STACK_OF(BIO) *)OPENSSL_sk_new_reserve(ossl_check_BIO_compfunc_type(cmp), (n))) +#define sk_BIO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_BIO_sk_type(sk), (n)) +#define sk_BIO_free(sk) OPENSSL_sk_free(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_zero(sk) OPENSSL_sk_zero(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_delete(sk, i) ((BIO *)OPENSSL_sk_delete(ossl_check_BIO_sk_type(sk), (i))) +#define sk_BIO_delete_ptr(sk, ptr) ((BIO *)OPENSSL_sk_delete_ptr(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))) +#define sk_BIO_push(sk, ptr) OPENSSL_sk_push(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_pop(sk) ((BIO *)OPENSSL_sk_pop(ossl_check_BIO_sk_type(sk))) +#define sk_BIO_shift(sk) ((BIO *)OPENSSL_sk_shift(ossl_check_BIO_sk_type(sk))) +#define sk_BIO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_BIO_sk_type(sk),ossl_check_BIO_freefunc_type(freefunc)) +#define sk_BIO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), (idx)) +#define sk_BIO_set(sk, idx, ptr) ((BIO *)OPENSSL_sk_set(ossl_check_BIO_sk_type(sk), (idx), ossl_check_BIO_type(ptr))) +#define sk_BIO_find(sk, ptr) OPENSSL_sk_find(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), pnum) +#define sk_BIO_sort(sk) OPENSSL_sk_sort(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_BIO_sk_type(sk)) +#define sk_BIO_dup(sk) ((STACK_OF(BIO) *)OPENSSL_sk_dup(ossl_check_const_BIO_sk_type(sk))) +#define sk_BIO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(BIO) *)OPENSSL_sk_deep_copy(ossl_check_const_BIO_sk_type(sk), ossl_check_BIO_copyfunc_type(copyfunc), ossl_check_BIO_freefunc_type(freefunc))) +#define sk_BIO_set_cmp_func(sk, cmp) ((sk_BIO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_BIO_sk_type(sk), ossl_check_BIO_compfunc_type(cmp))) + +/* clang-format on */ + +/* Prefix and suffix callback in ASN1 BIO */ +typedef int asn1_ps_func(BIO *b, unsigned char **pbuf, int *plen, + void *parg); + +typedef void (*BIO_dgram_sctp_notification_handler_fn)(BIO *b, + void *context, + void *buf); +#ifndef OPENSSL_NO_SCTP +/* SCTP parameter structs */ +struct bio_dgram_sctp_sndinfo { + uint16_t snd_sid; + uint16_t snd_flags; + uint32_t snd_ppid; + uint32_t snd_context; +}; + +struct bio_dgram_sctp_rcvinfo { + uint16_t rcv_sid; + uint16_t rcv_ssn; + uint16_t rcv_flags; + uint32_t rcv_ppid; + uint32_t rcv_tsn; + uint32_t rcv_cumtsn; + uint32_t rcv_context; +}; + +struct bio_dgram_sctp_prinfo { + uint16_t pr_policy; + uint32_t pr_value; +}; +#endif + +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_TYPE_SSL 2 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + SSL *ssl; + } value; +} BIO_POLL_DESCRIPTOR; + +/* + * #define BIO_CONN_get_param_hostname BIO_ctrl + */ + +#define BIO_C_SET_CONNECT 100 +#define BIO_C_DO_STATE_MACHINE 101 +#define BIO_C_SET_NBIO 102 +/* # define BIO_C_SET_PROXY_PARAM 103 */ +#define BIO_C_SET_FD 104 +#define BIO_C_GET_FD 105 +#define BIO_C_SET_FILE_PTR 106 +#define BIO_C_GET_FILE_PTR 107 +#define BIO_C_SET_FILENAME 108 +#define BIO_C_SET_SSL 109 +#define BIO_C_GET_SSL 110 +#define BIO_C_SET_MD 111 +#define BIO_C_GET_MD 112 +#define BIO_C_GET_CIPHER_STATUS 113 +#define BIO_C_SET_BUF_MEM 114 +#define BIO_C_GET_BUF_MEM_PTR 115 +#define BIO_C_GET_BUFF_NUM_LINES 116 +#define BIO_C_SET_BUFF_SIZE 117 +#define BIO_C_SET_ACCEPT 118 +#define BIO_C_SSL_MODE 119 +#define BIO_C_GET_MD_CTX 120 +/* # define BIO_C_GET_PROXY_PARAM 121 */ +#define BIO_C_SET_BUFF_READ_DATA 122 /* data to read first */ +#define BIO_C_GET_CONNECT 123 +#define BIO_C_GET_ACCEPT 124 +#define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125 +#define BIO_C_GET_SSL_NUM_RENEGOTIATES 126 +#define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127 +#define BIO_C_FILE_SEEK 128 +#define BIO_C_GET_CIPHER_CTX 129 +#define BIO_C_SET_BUF_MEM_EOF_RETURN 130 /* return end of input \ + * value */ +#define BIO_C_SET_BIND_MODE 131 +#define BIO_C_GET_BIND_MODE 132 +#define BIO_C_FILE_TELL 133 +#define BIO_C_GET_SOCKS 134 +#define BIO_C_SET_SOCKS 135 + +#define BIO_C_SET_WRITE_BUF_SIZE 136 /* for BIO_s_bio */ +#define BIO_C_GET_WRITE_BUF_SIZE 137 +#define BIO_C_MAKE_BIO_PAIR 138 +#define BIO_C_DESTROY_BIO_PAIR 139 +#define BIO_C_GET_WRITE_GUARANTEE 140 +#define BIO_C_GET_READ_REQUEST 141 +#define BIO_C_SHUTDOWN_WR 142 +#define BIO_C_NREAD0 143 +#define BIO_C_NREAD 144 +#define BIO_C_NWRITE0 145 +#define BIO_C_NWRITE 146 +#define BIO_C_RESET_READ_REQUEST 147 +#define BIO_C_SET_MD_CTX 148 + +#define BIO_C_SET_PREFIX 149 +#define BIO_C_GET_PREFIX 150 +#define BIO_C_SET_SUFFIX 151 +#define BIO_C_GET_SUFFIX 152 + +#define BIO_C_SET_EX_ARG 153 +#define BIO_C_GET_EX_ARG 154 + +#define BIO_C_SET_CONNECT_MODE 155 + +#define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +#define BIO_C_SET_SOCK_TYPE 157 +#define BIO_C_GET_SOCK_TYPE 158 +#define BIO_C_GET_DGRAM_BIO 159 + +#define BIO_set_app_data(s, arg) BIO_set_ex_data(s, 0, arg) +#define BIO_get_app_data(s) BIO_get_ex_data(s, 0) + +#define BIO_set_nbio(b, n) BIO_ctrl(b, BIO_C_SET_NBIO, (n), NULL) +#define BIO_set_tfo(b, n) BIO_ctrl(b, BIO_C_SET_TFO, (n), NULL) + +#ifndef OPENSSL_NO_SOCK +/* IP families we support, for BIO_s_connect() and BIO_s_accept() */ +/* Note: the underlying operating system may not support some of them */ +#define BIO_FAMILY_IPV4 4 +#define BIO_FAMILY_IPV6 6 +#define BIO_FAMILY_IPANY 256 + +/* BIO_s_connect() */ +#define BIO_set_conn_hostname(b, name) BIO_ctrl(b, BIO_C_SET_CONNECT, 0, \ + (char *)(name)) +#define BIO_set_conn_port(b, port) BIO_ctrl(b, BIO_C_SET_CONNECT, 1, \ + (char *)(port)) +#define BIO_set_conn_address(b, addr) BIO_ctrl(b, BIO_C_SET_CONNECT, 2, \ + (char *)(addr)) +#define BIO_set_conn_ip_family(b, f) BIO_int_ctrl(b, BIO_C_SET_CONNECT, 3, f) +#define BIO_get_conn_hostname(b) ((const char *)BIO_ptr_ctrl(b, BIO_C_GET_CONNECT, 0)) +#define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b, BIO_C_GET_CONNECT, 1)) +#define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b, BIO_C_GET_CONNECT, 2)) +#define BIO_get_conn_ip_family(b) BIO_ctrl(b, BIO_C_GET_CONNECT, 3, NULL) +#define BIO_get_conn_mode(b) BIO_ctrl(b, BIO_C_GET_CONNECT, 4, NULL) +#define BIO_set_conn_mode(b, n) BIO_ctrl(b, BIO_C_SET_CONNECT_MODE, (n), NULL) +#define BIO_set_sock_type(b, t) BIO_ctrl(b, BIO_C_SET_SOCK_TYPE, (t), NULL) +#define BIO_get_sock_type(b) BIO_ctrl(b, BIO_C_GET_SOCK_TYPE, 0, NULL) +#define BIO_get0_dgram_bio(b, p) BIO_ctrl(b, BIO_C_GET_DGRAM_BIO, 0, (void *)(BIO **)(p)) + +/* BIO_s_accept() */ +#define BIO_set_accept_name(b, name) BIO_ctrl(b, BIO_C_SET_ACCEPT, 0, \ + (char *)(name)) +#define BIO_set_accept_port(b, port) BIO_ctrl(b, BIO_C_SET_ACCEPT, 1, \ + (char *)(port)) +#define BIO_get_accept_name(b) ((const char *)BIO_ptr_ctrl(b, BIO_C_GET_ACCEPT, 0)) +#define BIO_get_accept_port(b) ((const char *)BIO_ptr_ctrl(b, BIO_C_GET_ACCEPT, 1)) +#define BIO_get_peer_name(b) ((const char *)BIO_ptr_ctrl(b, BIO_C_GET_ACCEPT, 2)) +#define BIO_get_peer_port(b) ((const char *)BIO_ptr_ctrl(b, BIO_C_GET_ACCEPT, 3)) +/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */ +#define BIO_set_nbio_accept(b, n) BIO_ctrl(b, BIO_C_SET_ACCEPT, 2, (n) ? (void *)"a" : NULL) +#define BIO_set_accept_bios(b, bio) BIO_ctrl(b, BIO_C_SET_ACCEPT, 3, \ + (char *)(bio)) +#define BIO_set_accept_ip_family(b, f) BIO_int_ctrl(b, BIO_C_SET_ACCEPT, 4, f) +#define BIO_get_accept_ip_family(b) BIO_ctrl(b, BIO_C_GET_ACCEPT, 4, NULL) +#define BIO_set_tfo_accept(b, n) BIO_ctrl(b, BIO_C_SET_ACCEPT, 5, (n) ? (void *)"a" : NULL) + +/* Aliases kept for backward compatibility */ +#define BIO_BIND_NORMAL 0 +#define BIO_BIND_REUSEADDR BIO_SOCK_REUSEADDR +#define BIO_BIND_REUSEADDR_IF_UNUSED BIO_SOCK_REUSEADDR +#define BIO_set_bind_mode(b, mode) BIO_ctrl(b, BIO_C_SET_BIND_MODE, mode, NULL) +#define BIO_get_bind_mode(b) BIO_ctrl(b, BIO_C_GET_BIND_MODE, 0, NULL) +#endif /* OPENSSL_NO_SOCK */ + +#define BIO_do_connect(b) BIO_do_handshake(b) +#define BIO_do_accept(b) BIO_do_handshake(b) + +#define BIO_do_handshake(b) BIO_ctrl(b, BIO_C_DO_STATE_MACHINE, 0, NULL) + +/* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */ +#define BIO_set_fd(b, fd, c) BIO_int_ctrl(b, BIO_C_SET_FD, c, fd) +#define BIO_get_fd(b, c) BIO_ctrl(b, BIO_C_GET_FD, 0, (char *)(c)) + +/* BIO_s_file() */ +#define BIO_set_fp(b, fp, c) BIO_ctrl(b, BIO_C_SET_FILE_PTR, c, (char *)(fp)) +#define BIO_get_fp(b, fpp) BIO_ctrl(b, BIO_C_GET_FILE_PTR, 0, (char *)(fpp)) + +/* BIO_s_fd() and BIO_s_file() */ +#define BIO_seek(b, ofs) (int)BIO_ctrl(b, BIO_C_FILE_SEEK, ofs, NULL) +#define BIO_tell(b) (int)BIO_ctrl(b, BIO_C_FILE_TELL, 0, NULL) + +/* + * name is cast to lose const, but might be better to route through a + * function so we can do it safely + */ +#ifdef CONST_STRICT +/* + * If you are wondering why this isn't defined, its because CONST_STRICT is + * purely a compile-time kludge to allow const to be checked. + */ +int BIO_read_filename(BIO *b, const char *name); +#else +#define BIO_read_filename(b, name) (int)BIO_ctrl(b, BIO_C_SET_FILENAME, \ + BIO_CLOSE | BIO_FP_READ, (char *)(name)) +#endif +#define BIO_write_filename(b, name) (int)BIO_ctrl(b, BIO_C_SET_FILENAME, \ + BIO_CLOSE | BIO_FP_WRITE, name) +#define BIO_append_filename(b, name) (int)BIO_ctrl(b, BIO_C_SET_FILENAME, \ + BIO_CLOSE | BIO_FP_APPEND, name) +#define BIO_rw_filename(b, name) (int)BIO_ctrl(b, BIO_C_SET_FILENAME, \ + BIO_CLOSE | BIO_FP_READ | BIO_FP_WRITE, name) + +/* + * WARNING WARNING, this ups the reference count on the read bio of the SSL + * structure. This is because the ssl read BIO is now pointed to by the + * next_bio field in the bio. So when you free the BIO, make sure you are + * doing a BIO_free_all() to catch the underlying BIO. + */ +#define BIO_set_ssl(b, ssl, c) BIO_ctrl(b, BIO_C_SET_SSL, c, (char *)(ssl)) +#define BIO_get_ssl(b, sslp) BIO_ctrl(b, BIO_C_GET_SSL, 0, (char *)(sslp)) +#define BIO_set_ssl_mode(b, client) BIO_ctrl(b, BIO_C_SSL_MODE, client, NULL) +#define BIO_set_ssl_renegotiate_bytes(b, num) \ + BIO_ctrl(b, BIO_C_SET_SSL_RENEGOTIATE_BYTES, num, NULL) +#define BIO_get_num_renegotiates(b) \ + BIO_ctrl(b, BIO_C_GET_SSL_NUM_RENEGOTIATES, 0, NULL) +#define BIO_set_ssl_renegotiate_timeout(b, seconds) \ + BIO_ctrl(b, BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT, seconds, NULL) + +/* defined in evp.h */ +/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)(md)) */ + +#define BIO_get_mem_data(b, pp) BIO_ctrl(b, BIO_CTRL_INFO, 0, (char *)(pp)) +#define BIO_set_mem_buf(b, bm, c) BIO_ctrl(b, BIO_C_SET_BUF_MEM, c, (char *)(bm)) +#define BIO_get_mem_ptr(b, pp) BIO_ctrl(b, BIO_C_GET_BUF_MEM_PTR, 0, \ + (char *)(pp)) +#define BIO_set_mem_eof_return(b, v) \ + BIO_ctrl(b, BIO_C_SET_BUF_MEM_EOF_RETURN, v, NULL) + +/* For the BIO_f_buffer() type */ +#define BIO_get_buffer_num_lines(b) BIO_ctrl(b, BIO_C_GET_BUFF_NUM_LINES, 0, NULL) +#define BIO_set_buffer_size(b, size) BIO_ctrl(b, BIO_C_SET_BUFF_SIZE, size, NULL) +#define BIO_set_read_buffer_size(b, size) BIO_int_ctrl(b, BIO_C_SET_BUFF_SIZE, size, 0) +#define BIO_set_write_buffer_size(b, size) BIO_int_ctrl(b, BIO_C_SET_BUFF_SIZE, size, 1) +#define BIO_set_buffer_read_data(b, buf, num) BIO_ctrl(b, BIO_C_SET_BUFF_READ_DATA, num, buf) + +/* Don't use the next one unless you know what you are doing :-) */ +#define BIO_dup_state(b, ret) BIO_ctrl(b, BIO_CTRL_DUP, 0, (char *)(ret)) + +#define BIO_reset(b) (int)BIO_ctrl(b, BIO_CTRL_RESET, 0, NULL) +#define BIO_eof(b) (int)BIO_ctrl(b, BIO_CTRL_EOF, 0, NULL) +#define BIO_set_close(b, c) (int)BIO_ctrl(b, BIO_CTRL_SET_CLOSE, (c), NULL) +#define BIO_get_close(b) (int)BIO_ctrl(b, BIO_CTRL_GET_CLOSE, 0, NULL) +#define BIO_pending(b) (int)BIO_ctrl(b, BIO_CTRL_PENDING, 0, NULL) +#define BIO_wpending(b) (int)BIO_ctrl(b, BIO_CTRL_WPENDING, 0, NULL) +/* ...pending macros have inappropriate return type */ +size_t BIO_ctrl_pending(BIO *b); +size_t BIO_ctrl_wpending(BIO *b); +#define BIO_flush(b) (int)BIO_ctrl(b, BIO_CTRL_FLUSH, 0, NULL) +#define BIO_get_info_callback(b, cbp) (int)BIO_ctrl(b, BIO_CTRL_GET_CALLBACK, 0, \ + cbp) +#define BIO_set_info_callback(b, cb) (int)BIO_callback_ctrl(b, BIO_CTRL_SET_CALLBACK, cb) + +/* For the BIO_f_buffer() type */ +#define BIO_buffer_get_num_lines(b) BIO_ctrl(b, BIO_CTRL_GET, 0, NULL) +#define BIO_buffer_peek(b, s, l) BIO_ctrl(b, BIO_CTRL_PEEK, (l), (s)) + +/* For BIO_s_bio() */ +#define BIO_set_write_buf_size(b, size) (int)BIO_ctrl(b, BIO_C_SET_WRITE_BUF_SIZE, size, NULL) +#define BIO_get_write_buf_size(b, size) (size_t)BIO_ctrl(b, BIO_C_GET_WRITE_BUF_SIZE, size, NULL) +#define BIO_make_bio_pair(b1, b2) (int)BIO_ctrl(b1, BIO_C_MAKE_BIO_PAIR, 0, b2) +#define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b, BIO_C_DESTROY_BIO_PAIR, 0, NULL) +#define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL) +/* macros with inappropriate type -- but ...pending macros use int too: */ +#define BIO_get_write_guarantee(b) (int)BIO_ctrl(b, BIO_C_GET_WRITE_GUARANTEE, 0, NULL) +#define BIO_get_read_request(b) (int)BIO_ctrl(b, BIO_C_GET_READ_REQUEST, 0, NULL) +size_t BIO_ctrl_get_write_guarantee(BIO *b); +size_t BIO_ctrl_get_read_request(BIO *b); +int BIO_ctrl_reset_read_request(BIO *b); + +/* ctrl macros for dgram */ +#define BIO_ctrl_dgram_connect(b, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_CONNECT, 0, (char *)(peer)) +#define BIO_ctrl_set_connected(b, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, 0, (char *)(peer)) +#define BIO_dgram_recv_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL) +#define BIO_dgram_send_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL) +#define BIO_dgram_get_peer(b, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) +#define BIO_dgram_set_peer(b, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +#define BIO_dgram_detect_peer_addr(b, peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) +#define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +#define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +#define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +#define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +#define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +#define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +#define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +#define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +#define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +#define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +#define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) +#define BIO_dgram_set0_local_addr(b, addr) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET0_LOCAL_ADDR, 0, (addr)) + +/* ctrl macros for BIO_f_prefix */ +#define BIO_set_prefix(b, p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) +#define BIO_set_indent(b, i) BIO_ctrl((b), BIO_CTRL_SET_INDENT, (i), NULL) +#define BIO_get_indent(b) BIO_ctrl((b), BIO_CTRL_GET_INDENT, 0, NULL) + +#define BIO_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_BIO, l, p, newf, dupf, freef) +int BIO_set_ex_data(BIO *bio, int idx, void *data); +void *BIO_get_ex_data(const BIO *bio, int idx); +uint64_t BIO_number_read(BIO *bio); +uint64_t BIO_number_written(BIO *bio); + +/* For BIO_f_asn1() */ +int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix, + asn1_ps_func *prefix_free); +int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix, + asn1_ps_func **pprefix_free); +int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix, + asn1_ps_func *suffix_free); +int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix, + asn1_ps_func **psuffix_free); + +const BIO_METHOD *BIO_s_file(void); +BIO *BIO_new_file(const char *filename, const char *mode); +BIO *BIO_new_from_core_bio(OSSL_LIB_CTX *libctx, OSSL_CORE_BIO *corebio); +#ifndef OPENSSL_NO_STDIO +BIO *BIO_new_fp(FILE *stream, int close_flag); +#endif +BIO *BIO_new_ex(OSSL_LIB_CTX *libctx, const BIO_METHOD *method); +BIO *BIO_new(const BIO_METHOD *type); +int BIO_free(BIO *a); +void BIO_set_data(BIO *a, void *ptr); +void *BIO_get_data(BIO *a); +void BIO_set_init(BIO *a, int init); +int BIO_get_init(BIO *a); +void BIO_set_shutdown(BIO *a, int shut); +int BIO_get_shutdown(BIO *a); +void BIO_vfree(BIO *a); +int BIO_up_ref(BIO *a); +int BIO_read(BIO *b, void *data, int dlen); +int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +int BIO_gets(BIO *bp, char *buf, int size); +int BIO_get_line(BIO *bio, char *buf, int size); +int BIO_write(BIO *b, const void *data, int dlen); +int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +int BIO_puts(BIO *bp, const char *buf); +int BIO_indent(BIO *b, int indent, int max); +long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); +long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp); +void *BIO_ptr_ctrl(BIO *bp, int cmd, long larg); +long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg); +BIO *BIO_push(BIO *b, BIO *append); +BIO *BIO_pop(BIO *b); +void BIO_free_all(BIO *a); +BIO *BIO_find_type(BIO *b, int bio_type); +BIO *BIO_next(BIO *b); +void BIO_set_next(BIO *b, BIO *next); +BIO *BIO_get_retry_BIO(BIO *bio, int *reason); +int BIO_get_retry_reason(BIO *bio); +void BIO_set_retry_reason(BIO *bio, int reason); +BIO *BIO_dup_chain(BIO *in); + +int BIO_nread0(BIO *bio, char **buf); +int BIO_nread(BIO *bio, char **buf, int num); +int BIO_nwrite0(BIO *bio, char **buf); +int BIO_nwrite(BIO *bio, char **buf, int num); + +const BIO_METHOD *BIO_s_mem(void); +#ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +#endif +const BIO_METHOD *BIO_s_secmem(void); +BIO *BIO_new_mem_buf(const void *buf, int len); +#ifndef OPENSSL_NO_SOCK +const BIO_METHOD *BIO_s_socket(void); +const BIO_METHOD *BIO_s_connect(void); +const BIO_METHOD *BIO_s_accept(void); +#endif +const BIO_METHOD *BIO_s_fd(void); +const BIO_METHOD *BIO_s_log(void); +const BIO_METHOD *BIO_s_bio(void); +const BIO_METHOD *BIO_s_null(void); +const BIO_METHOD *BIO_f_null(void); +const BIO_METHOD *BIO_f_buffer(void); +const BIO_METHOD *BIO_f_readbuffer(void); +const BIO_METHOD *BIO_f_linebuffer(void); +const BIO_METHOD *BIO_f_nbio_test(void); +const BIO_METHOD *BIO_f_prefix(void); +const BIO_METHOD *BIO_s_core(void); +#ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); +const BIO_METHOD *BIO_s_datagram(void); +int BIO_dgram_non_fatal_error(int error); +BIO *BIO_new_dgram(int fd, int close_flag); +#ifndef OPENSSL_NO_SCTP +const BIO_METHOD *BIO_s_datagram_sctp(void); +BIO *BIO_new_dgram_sctp(int fd, int close_flag); +int BIO_dgram_is_sctp(BIO *bio); +int BIO_dgram_sctp_notification_cb(BIO *b, + BIO_dgram_sctp_notification_handler_fn handle_notifications, + void *context); +int BIO_dgram_sctp_wait_for_dry(BIO *b); +int BIO_dgram_sctp_msg_waiting(BIO *b); +#endif +#endif + +#ifndef OPENSSL_NO_SOCK +int BIO_sock_should_retry(int i); +int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); +int BIO_socket_wait(int fd, int for_read, time_t max_time); +#endif +int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); +int BIO_do_connect_retry(BIO *bio, int timeout, int nap_milliseconds); + +int BIO_fd_should_retry(int i); +int BIO_fd_non_fatal_error(int error); +int BIO_dump_cb(int (*cb)(const void *data, size_t len, void *u), + void *u, const void *s, int len); +int BIO_dump_indent_cb(int (*cb)(const void *data, size_t len, void *u), + void *u, const void *s, int len, int indent); +int BIO_dump(BIO *b, const void *bytes, int len); +int BIO_dump_indent(BIO *b, const void *bytes, int len, int indent); +#ifndef OPENSSL_NO_STDIO +int BIO_dump_fp(FILE *fp, const void *s, int len); +int BIO_dump_indent_fp(FILE *fp, const void *s, int len, int indent); +#endif +int BIO_hex_string(BIO *out, int indent, int width, const void *data, + int datalen); + +#ifndef OPENSSL_NO_SOCK +BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); +int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, + const void *where, size_t wherelen, unsigned short port); +void BIO_ADDR_free(BIO_ADDR *); +void BIO_ADDR_clear(BIO_ADDR *ap); +int BIO_ADDR_family(const BIO_ADDR *ap); +int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l); +unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap); +char *BIO_ADDR_hostname_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_service_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_path_string(const BIO_ADDR *ap); + +const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai); +const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai); +void BIO_ADDRINFO_free(BIO_ADDRINFO *bai); + +enum BIO_hostserv_priorities { + BIO_PARSE_PRIO_HOST, + BIO_PARSE_PRIO_SERV +}; +int BIO_parse_hostserv(const char *hostserv, char **host, char **service, + enum BIO_hostserv_priorities hostserv_prio); +enum BIO_lookup_type { + BIO_LOOKUP_CLIENT, + BIO_LOOKUP_SERVER +}; +int BIO_lookup(const char *host, const char *service, + enum BIO_lookup_type lookup_type, + int family, int socktype, BIO_ADDRINFO **res); +int BIO_lookup_ex(const char *host, const char *service, + int lookup_type, int family, int socktype, int protocol, + BIO_ADDRINFO **res); +int BIO_sock_error(int sock); +int BIO_socket_ioctl(int fd, long type, void *arg); +int BIO_socket_nbio(int fd, int mode); +int BIO_sock_init(void); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define BIO_sock_cleanup() \ + while (0) \ + continue +#endif +int BIO_set_tcp_ndelay(int sock, int turn_on); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 struct hostent *BIO_gethostbyname(const char *name); +OSSL_DEPRECATEDIN_1_1_0 int BIO_get_port(const char *str, unsigned short *port_ptr); +OSSL_DEPRECATEDIN_1_1_0 int BIO_get_host_ip(const char *str, unsigned char *ip); +OSSL_DEPRECATEDIN_1_1_0 int BIO_get_accept_socket(char *host_port, int mode); +OSSL_DEPRECATEDIN_1_1_0 int BIO_accept(int sock, char **ip_port); +#endif + +union BIO_sock_info_u { + BIO_ADDR *addr; +}; +enum BIO_sock_info_type { + BIO_SOCK_INFO_ADDRESS +}; +int BIO_sock_info(int sock, + enum BIO_sock_info_type type, union BIO_sock_info_u *info); + +#define BIO_SOCK_REUSEADDR 0x01 +#define BIO_SOCK_V6_ONLY 0x02 +#define BIO_SOCK_KEEPALIVE 0x04 +#define BIO_SOCK_NONBLOCK 0x08 +#define BIO_SOCK_NODELAY 0x10 +#define BIO_SOCK_TFO 0x20 + +int BIO_socket(int domain, int socktype, int protocol, int options); +int BIO_connect(int sock, const BIO_ADDR *addr, int options); +int BIO_bind(int sock, const BIO_ADDR *addr, int options); +int BIO_listen(int sock, const BIO_ADDR *addr, int options); +int BIO_accept_ex(int accept_sock, BIO_ADDR *addr, int options); +int BIO_closesocket(int sock); + +BIO *BIO_new_socket(int sock, int close_flag); +BIO *BIO_new_connect(const char *host_port); +BIO *BIO_new_accept(const char *host_port); +#endif /* OPENSSL_NO_SOCK*/ + +BIO *BIO_new_fd(int fd, int close_flag); + +int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +#ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +#endif + +/* + * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. + * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default + * value. + */ + +void BIO_copy_next_retry(BIO *b); + +/* + * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg); + */ + +#define ossl_bio__attr__(x) +#if defined(__GNUC__) && defined(__STDC_VERSION__) \ + && !defined(__MINGW32__) && !defined(__MINGW64__) \ + && !defined(__APPLE__) +/* + * Because we support the 'z' modifier, which made its appearance in C99, + * we can't use __attribute__ with pre C99 dialects. + */ +#if __STDC_VERSION__ >= 199901L +#undef ossl_bio__attr__ +#define ossl_bio__attr__ __attribute__ +#if __GNUC__ * 10 + __GNUC_MINOR__ >= 44 +#define ossl_bio__printf__ __gnu_printf__ +#else +#define ossl_bio__printf__ __printf__ +#endif +#endif +#endif +int BIO_printf(BIO *bio, const char *format, ...) + ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 3))); +int BIO_vprintf(BIO *bio, const char *format, va_list args) + ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 0))); +int BIO_snprintf(char *buf, size_t n, const char *format, ...) + ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 4))); +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) + ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); +#undef ossl_bio__attr__ +#undef ossl_bio__printf__ + +BIO_METHOD *BIO_meth_new(int type, const char *name); +void BIO_meth_free(BIO_METHOD *biom); +int BIO_meth_set_write(BIO_METHOD *biom, + int (*write)(BIO *, const char *, int)); +int BIO_meth_set_write_ex(BIO_METHOD *biom, + int (*bwrite)(BIO *, const char *, size_t, size_t *)); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f)(BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int BIO_meth_set_read(BIO_METHOD *biom, + int (*read)(BIO *, char *, int)); +int BIO_meth_set_read_ex(BIO_METHOD *biom, + int (*bread)(BIO *, char *, size_t, size_t *)); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f)(BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int BIO_meth_set_puts(BIO_METHOD *biom, + int (*puts)(BIO *, const char *)); +int BIO_meth_set_gets(BIO_METHOD *biom, + int (*ossl_gets)(BIO *, char *, int)); +int BIO_meth_set_ctrl(BIO_METHOD *biom, + long (*ctrl)(BIO *, int, long, void *)); +int BIO_meth_set_create(BIO_METHOD *biom, int (*create)(BIO *)); +int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy)(BIO *)); +int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, + long (*callback_ctrl)(BIO *, int, + BIO_info_cb *)); +#ifndef OPENSSL_NO_DEPRECATED_3_5 +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write(const BIO_METHOD *biom))(BIO *, const char *, + int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_write_ex(const BIO_METHOD *biom))(BIO *, const char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read(const BIO_METHOD *biom))(BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_read_ex(const BIO_METHOD *biom))(BIO *, char *, + size_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_puts(const BIO_METHOD *biom))(BIO *, const char *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_gets(const BIO_METHOD *biom))(BIO *, char *, int); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_ctrl(const BIO_METHOD *biom))(BIO *, int, + long, void *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_create(const BIO_METHOD *bion))(BIO *); +OSSL_DEPRECATEDIN_3_5 int (*BIO_meth_get_destroy(const BIO_METHOD *biom))(BIO *); +OSSL_DEPRECATEDIN_3_5 long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom))(BIO *, int, + BIO_info_cb *); +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/cmp.h new file mode 100644 index 00000000000000..af844ec8ed103c --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/cmp.h @@ -0,0 +1,741 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/cmp.h.in + * + * Copyright 2007-2026 The OpenSSL Project Authors. All Rights Reserved. + * Copyright Nokia 2007-2019 + * Copyright Siemens AG 2015-2019 + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CMP_H +#define OPENSSL_CMP_H + +#include +#ifndef OPENSSL_NO_CMP + +#include +#include +#include +#include + +/* explicit #includes not strictly needed since implied by the above: */ +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_CMP_PVNO_2 2 +#define OSSL_CMP_PVNO_3 3 +#define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ + +/*- + * PKIFailureInfo ::= BIT STRING { + * -- since we can fail in more than one way! + * -- More codes may be added in the future if/when required. + * badAlg (0), + * -- unrecognized or unsupported Algorithm Identifier + * badMessageCheck (1), + * -- integrity check failed (e.g., signature did not verify) + * badRequest (2), + * -- transaction not permitted or supported + * badTime (3), + * -- messageTime was not sufficiently close to the system time, + * -- as defined by local policy + * badCertId (4), + * -- no certificate could be found matching the provided criteria + * badDataFormat (5), + * -- the data submitted has the wrong format + * wrongAuthority (6), + * -- the authority indicated in the request is different from the + * -- one creating the response token + * incorrectData (7), + * -- the requester's data is incorrect (for notary services) + * missingTimeStamp (8), + * -- when the timestamp is missing but should be there + * -- (by policy) + * badPOP (9), + * -- the proof-of-possession failed + * certRevoked (10), + * -- the certificate has already been revoked + * certConfirmed (11), + * -- the certificate has already been confirmed + * wrongIntegrity (12), + * -- invalid integrity, password based instead of signature or + * -- vice versa + * badRecipientNonce (13), + * -- invalid recipient nonce, either missing or wrong value + * timeNotAvailable (14), + * -- the TSA's time source is not available + * unacceptedPolicy (15), + * -- the requested TSA policy is not supported by the TSA. + * unacceptedExtension (16), + * -- the requested extension is not supported by the TSA. + * addInfoNotAvailable (17), + * -- the additional information requested could not be + * -- understood or is not available + * badSenderNonce (18), + * -- invalid sender nonce, either missing or wrong size + * badCertTemplate (19), + * -- invalid cert. template or missing mandatory information + * signerNotTrusted (20), + * -- signer of the message unknown or not trusted + * transactionIdInUse (21), + * -- the transaction identifier is already in use + * unsupportedVersion (22), + * -- the version of the message is not supported + * notAuthorized (23), + * -- the sender was not authorized to make the preceding + * -- request or perform the preceding action + * systemUnavail (24), + * -- the request cannot be handled due to system unavailability + * systemFailure (25), + * -- the request cannot be handled due to system failure + * duplicateCertReq (26) + * -- certificate cannot be issued because a duplicate + * -- certificate already exists + * } + */ +#define OSSL_CMP_PKIFAILUREINFO_badAlg 0 +#define OSSL_CMP_PKIFAILUREINFO_badMessageCheck 1 +#define OSSL_CMP_PKIFAILUREINFO_badRequest 2 +#define OSSL_CMP_PKIFAILUREINFO_badTime 3 +#define OSSL_CMP_PKIFAILUREINFO_badCertId 4 +#define OSSL_CMP_PKIFAILUREINFO_badDataFormat 5 +#define OSSL_CMP_PKIFAILUREINFO_wrongAuthority 6 +#define OSSL_CMP_PKIFAILUREINFO_incorrectData 7 +#define OSSL_CMP_PKIFAILUREINFO_missingTimeStamp 8 +#define OSSL_CMP_PKIFAILUREINFO_badPOP 9 +#define OSSL_CMP_PKIFAILUREINFO_certRevoked 10 +#define OSSL_CMP_PKIFAILUREINFO_certConfirmed 11 +#define OSSL_CMP_PKIFAILUREINFO_wrongIntegrity 12 +#define OSSL_CMP_PKIFAILUREINFO_badRecipientNonce 13 +#define OSSL_CMP_PKIFAILUREINFO_timeNotAvailable 14 +#define OSSL_CMP_PKIFAILUREINFO_unacceptedPolicy 15 +#define OSSL_CMP_PKIFAILUREINFO_unacceptedExtension 16 +#define OSSL_CMP_PKIFAILUREINFO_addInfoNotAvailable 17 +#define OSSL_CMP_PKIFAILUREINFO_badSenderNonce 18 +#define OSSL_CMP_PKIFAILUREINFO_badCertTemplate 19 +#define OSSL_CMP_PKIFAILUREINFO_signerNotTrusted 20 +#define OSSL_CMP_PKIFAILUREINFO_transactionIdInUse 21 +#define OSSL_CMP_PKIFAILUREINFO_unsupportedVersion 22 +#define OSSL_CMP_PKIFAILUREINFO_notAuthorized 23 +#define OSSL_CMP_PKIFAILUREINFO_systemUnavail 24 +#define OSSL_CMP_PKIFAILUREINFO_systemFailure 25 +#define OSSL_CMP_PKIFAILUREINFO_duplicateCertReq 26 +#define OSSL_CMP_PKIFAILUREINFO_MAX 26 +#define OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN \ + ((1 << (OSSL_CMP_PKIFAILUREINFO_MAX + 1)) - 1) +#if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX +#error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int +#endif +typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; + +#define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) +#define OSSL_CMP_CTX_FAILINFO_badMessageCheck (1 << 1) +#define OSSL_CMP_CTX_FAILINFO_badRequest (1 << 2) +#define OSSL_CMP_CTX_FAILINFO_badTime (1 << 3) +#define OSSL_CMP_CTX_FAILINFO_badCertId (1 << 4) +#define OSSL_CMP_CTX_FAILINFO_badDataFormat (1 << 5) +#define OSSL_CMP_CTX_FAILINFO_wrongAuthority (1 << 6) +#define OSSL_CMP_CTX_FAILINFO_incorrectData (1 << 7) +#define OSSL_CMP_CTX_FAILINFO_missingTimeStamp (1 << 8) +#define OSSL_CMP_CTX_FAILINFO_badPOP (1 << 9) +#define OSSL_CMP_CTX_FAILINFO_certRevoked (1 << 10) +#define OSSL_CMP_CTX_FAILINFO_certConfirmed (1 << 11) +#define OSSL_CMP_CTX_FAILINFO_wrongIntegrity (1 << 12) +#define OSSL_CMP_CTX_FAILINFO_badRecipientNonce (1 << 13) +#define OSSL_CMP_CTX_FAILINFO_timeNotAvailable (1 << 14) +#define OSSL_CMP_CTX_FAILINFO_unacceptedPolicy (1 << 15) +#define OSSL_CMP_CTX_FAILINFO_unacceptedExtension (1 << 16) +#define OSSL_CMP_CTX_FAILINFO_addInfoNotAvailable (1 << 17) +#define OSSL_CMP_CTX_FAILINFO_badSenderNonce (1 << 18) +#define OSSL_CMP_CTX_FAILINFO_badCertTemplate (1 << 19) +#define OSSL_CMP_CTX_FAILINFO_signerNotTrusted (1 << 20) +#define OSSL_CMP_CTX_FAILINFO_transactionIdInUse (1 << 21) +#define OSSL_CMP_CTX_FAILINFO_unsupportedVersion (1 << 22) +#define OSSL_CMP_CTX_FAILINFO_notAuthorized (1 << 23) +#define OSSL_CMP_CTX_FAILINFO_systemUnavail (1 << 24) +#define OSSL_CMP_CTX_FAILINFO_systemFailure (1 << 25) +#define OSSL_CMP_CTX_FAILINFO_duplicateCertReq (1 << 26) + +/*- + * PKIStatus ::= INTEGER { + * accepted (0), + * -- you got exactly what you asked for + * grantedWithMods (1), + * -- you got something like what you asked for; the + * -- requester is responsible for ascertaining the differences + * rejection (2), + * -- you don't get it, more information elsewhere in the message + * waiting (3), + * -- the request body part has not yet been processed; expect to + * -- hear more later (note: proper handling of this status + * -- response MAY use the polling req/rep PKIMessages specified + * -- in Section 5.3.22; alternatively, polling in the underlying + * -- transport layer MAY have some utility in this regard) + * revocationWarning (4), + * -- this message contains a warning that a revocation is + * -- imminent + * revocationNotification (5), + * -- notification that a revocation has occurred + * keyUpdateWarning (6) + * -- update already done for the oldCertId specified in + * -- CertReqMsg + * } + */ +#define OSSL_CMP_PKISTATUS_rejected_by_client -5 +#define OSSL_CMP_PKISTATUS_checking_response -4 +#define OSSL_CMP_PKISTATUS_request -3 +#define OSSL_CMP_PKISTATUS_trans -2 +#define OSSL_CMP_PKISTATUS_unspecified -1 +#define OSSL_CMP_PKISTATUS_accepted 0 +#define OSSL_CMP_PKISTATUS_grantedWithMods 1 +#define OSSL_CMP_PKISTATUS_rejection 2 +#define OSSL_CMP_PKISTATUS_waiting 3 +#define OSSL_CMP_PKISTATUS_revocationWarning 4 +#define OSSL_CMP_PKISTATUS_revocationNotification 5 +#define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 +typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + +DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) + +#define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 +#define OSSL_CMP_CERTORENCCERT_ENCRYPTEDCERT 1 + +/* data type declarations */ +typedef struct ossl_cmp_ctx_st OSSL_CMP_CTX; +typedef struct ossl_cmp_pkiheader_st OSSL_CMP_PKIHEADER; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKIHEADER) +typedef struct ossl_cmp_msg_st OSSL_CMP_MSG; +DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_MSG) +DECLARE_ASN1_ENCODE_FUNCTIONS(OSSL_CMP_MSG, OSSL_CMP_MSG, OSSL_CMP_MSG) +typedef struct ossl_cmp_certstatus_st OSSL_CMP_CERTSTATUS; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS) +#define sk_OSSL_CMP_CERTSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_value(sk, idx) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTSTATUS_new_null() ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_delete(sk, i) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) +#define sk_OSSL_CMP_CERTSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_pop(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_shift(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) +#define sk_OSSL_CMP_CERTSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CERTSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_cmp_itav_st OSSL_CMP_ITAV; +DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_ITAV) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) +#define sk_OSSL_CMP_ITAV_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_value(sk, idx) ((OSSL_CMP_ITAV *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), (idx))) +#define sk_OSSL_CMP_ITAV_new(cmp) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) +#define sk_OSSL_CMP_ITAV_new_null() ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_ITAV_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_ITAV_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (n)) +#define sk_OSSL_CMP_ITAV_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_delete(sk, i) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (i))) +#define sk_OSSL_CMP_ITAV_delete_ptr(sk, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))) +#define sk_OSSL_CMP_ITAV_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_pop(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_shift(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk),ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc)) +#define sk_OSSL_CMP_ITAV_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), (idx)) +#define sk_OSSL_CMP_ITAV_set(sk, idx, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_set(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (idx), ossl_check_OSSL_CMP_ITAV_type(ptr))) +#define sk_OSSL_CMP_ITAV_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), pnum) +#define sk_OSSL_CMP_ITAV_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_dup(sk) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) +#define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ossl_cmp_crlstatus_st OSSL_CMP_CRLSTATUS; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS, OSSL_CMP_CRLSTATUS) +#define sk_OSSL_CMP_CRLSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_value(sk, idx) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CRLSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CRLSTATUS_new_null() ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CRLSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CRLSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CRLSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_delete(sk, i) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CRLSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_pop(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_shift(sk) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CRLSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CRLSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CRLSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr))) +#define sk_OSSL_CMP_CRLSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr)) +#define sk_OSSL_CMP_CRLSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CRLSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CRLSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CRLSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CRLSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CRLSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CRLSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CRLSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CRLSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CRLSTATUS_compfunc_type(cmp))) + +/* clang-format on */ + +typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; +#define OSSL_CMP_ATAV_free OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free +typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_ATAVS) +#define stack_st_OSSL_CMP_ATAV stack_st_OSSL_CRMF_ATTRIBUTETYPEANDVALUE +#define sk_OSSL_CMP_ATAV_num sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num +#define sk_OSSL_CMP_ATAV_value sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value +#define sk_OSSL_CMP_ATAV_push sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push +#define sk_OSSL_CMP_ATAV_pop_free sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free + +typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; +typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_PKISI) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_PKISI, OSSL_CMP_PKISI, OSSL_CMP_PKISI) +#define sk_OSSL_CMP_PKISI_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_value(sk, idx) ((OSSL_CMP_PKISI *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), (idx))) +#define sk_OSSL_CMP_PKISI_new(cmp) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) +#define sk_OSSL_CMP_PKISI_new_null() ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_PKISI_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_PKISI_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (n)) +#define sk_OSSL_CMP_PKISI_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_delete(sk, i) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (i))) +#define sk_OSSL_CMP_PKISI_delete_ptr(sk, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))) +#define sk_OSSL_CMP_PKISI_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_pop(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_shift(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk),ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc)) +#define sk_OSSL_CMP_PKISI_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), (idx)) +#define sk_OSSL_CMP_PKISI_set(sk, idx, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_set(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (idx), ossl_check_OSSL_CMP_PKISI_type(ptr))) +#define sk_OSSL_CMP_PKISI_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), pnum) +#define sk_OSSL_CMP_PKISI_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_dup(sk) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc))) +#define sk_OSSL_CMP_PKISI_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_PKISI_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_cmp_certrepmessage_st OSSL_CMP_CERTREPMESSAGE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE) +#define sk_OSSL_CMP_CERTREPMESSAGE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_value(sk, idx) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTREPMESSAGE_new(cmp) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTREPMESSAGE_new_null() ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTREPMESSAGE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTREPMESSAGE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTREPMESSAGE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_delete(sk, i) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTREPMESSAGE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) +#define sk_OSSL_CMP_CERTREPMESSAGE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_pop(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_shift(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk),ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTREPMESSAGE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTREPMESSAGE_set(sk, idx, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) +#define sk_OSSL_CMP_CERTREPMESSAGE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), pnum) +#define sk_OSSL_CMP_CERTREPMESSAGE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_dup(sk) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTREPMESSAGE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTREPMESSAGE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_cmp_pollrep_st OSSL_CMP_POLLREP; +typedef STACK_OF(OSSL_CMP_POLLREP) OSSL_CMP_POLLREPCONTENT; +typedef struct ossl_cmp_certresponse_st OSSL_CMP_CERTRESPONSE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE) +#define sk_OSSL_CMP_CERTRESPONSE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_value(sk, idx) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTRESPONSE_new(cmp) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTRESPONSE_new_null() ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTRESPONSE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTRESPONSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTRESPONSE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_delete(sk, i) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTRESPONSE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) +#define sk_OSSL_CMP_CERTRESPONSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_pop(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_shift(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk),ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTRESPONSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTRESPONSE_set(sk, idx, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) +#define sk_OSSL_CMP_CERTRESPONSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), pnum) +#define sk_OSSL_CMP_CERTRESPONSE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_dup(sk) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTRESPONSE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTRESPONSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) + +/* clang-format on */ +typedef STACK_OF(ASN1_UTF8STRING) OSSL_CMP_PKIFREETEXT; + +/* + * function DECLARATIONS + */ + +/* from cmp_asn.c */ +OSSL_CMP_ITAV *OSSL_CMP_ITAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); +ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **sk_p, + OSSL_CMP_ITAV *itav); +void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new0_certProfile(STACK_OF(ASN1_UTF8STRING) + *certProfile); +int OSSL_CMP_ITAV_get0_certProfile(const OSSL_CMP_ITAV *itav, + STACK_OF(ASN1_UTF8STRING) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_create(const X509_CRL *crl, + const X509 *cert, int only_DN); +OSSL_CMP_CRLSTATUS *OSSL_CMP_CRLSTATUS_new1(const DIST_POINT_NAME *dpn, + const GENERAL_NAMES *issuer, + const ASN1_TIME *thisUpdate); +int OSSL_CMP_CRLSTATUS_get0(const OSSL_CMP_CRLSTATUS *crlstatus, + DIST_POINT_NAME **dpn, GENERAL_NAMES **issuer, + ASN1_TIME **thisUpdate); +void OSSL_CMP_CRLSTATUS_free(OSSL_CMP_CRLSTATUS *crlstatus); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_crlStatusList(STACK_OF(OSSL_CMP_CRLSTATUS) *crlStatusList); +int OSSL_CMP_ITAV_get0_crlStatusList(const OSSL_CMP_ITAV *itav, + STACK_OF(OSSL_CMP_CRLSTATUS) **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_crls(const X509_CRL *crls); +int OSSL_CMP_ITAV_get0_crls(const OSSL_CMP_ITAV *it, STACK_OF(X509_CRL) **out); +OSSL_CMP_ITAV +*OSSL_CMP_ITAV_new0_certReqTemplate(OSSL_CRMF_CERTTEMPLATE *certTemplate, + OSSL_CMP_ATAVS *keySpec); +int OSSL_CMP_ITAV_get1_certReqTemplate(const OSSL_CMP_ITAV *itav, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *itav); +ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *itav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); +X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); +OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); +int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); +int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); + +void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); + +/* from cmp_ctx.c */ +OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); +void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); +/* CMP general options: */ +#define OSSL_CMP_OPT_LOG_VERBOSITY 0 +/* CMP transfer options: */ +#define OSSL_CMP_OPT_KEEP_ALIVE 10 +#define OSSL_CMP_OPT_MSG_TIMEOUT 11 +#define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +#define OSSL_CMP_OPT_USE_TLS 13 +/* CMP request options: */ +#define OSSL_CMP_OPT_VALIDITY_DAYS 20 +#define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 +#define OSSL_CMP_OPT_SUBJECTALTNAME_CRITICAL 22 +#define OSSL_CMP_OPT_POLICIES_CRITICAL 23 +#define OSSL_CMP_OPT_POPO_METHOD 24 +#define OSSL_CMP_OPT_IMPLICIT_CONFIRM 25 +#define OSSL_CMP_OPT_DISABLE_CONFIRM 26 +#define OSSL_CMP_OPT_REVOCATION_REASON 27 +/* CMP protection options: */ +#define OSSL_CMP_OPT_UNPROTECTED_SEND 30 +#define OSSL_CMP_OPT_UNPROTECTED_ERRORS 31 +#define OSSL_CMP_OPT_OWF_ALGNID 32 +#define OSSL_CMP_OPT_MAC_ALGNID 33 +#define OSSL_CMP_OPT_DIGEST_ALGNID 34 +#define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 +#define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +#define OSSL_CMP_OPT_NO_CACHE_EXTRACERTS 37 +int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); +int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); +/* CMP-specific callback for logging and outputting the error queue: */ +int OSSL_CMP_CTX_set_log_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_log_cb_t cb); +#define OSSL_CMP_CTX_set_log_verbosity(ctx, level) \ + OSSL_CMP_CTX_set_option(ctx, OSSL_CMP_OPT_LOG_VERBOSITY, level) +void OSSL_CMP_CTX_print_errors(const OSSL_CMP_CTX *ctx); +/* message transfer: */ +int OSSL_CMP_CTX_set1_serverPath(OSSL_CMP_CTX *ctx, const char *path); +int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); +int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); +int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); +int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +#ifndef OPENSSL_NO_HTTP +int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); +int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); +void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +#endif +typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t)(OSSL_CMP_CTX *ctx, + const OSSL_CMP_MSG *req); +int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); +int OSSL_CMP_CTX_set_transfer_cb_arg(OSSL_CMP_CTX *ctx, void *arg); +void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); +/* server authentication: */ +int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); +int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +#define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore +X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +#define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore +int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); +STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); +/* client authentication: */ +int OSSL_CMP_CTX_set1_cert(OSSL_CMP_CTX *ctx, X509 *cert); +int OSSL_CMP_CTX_build_cert_chain(OSSL_CMP_CTX *ctx, X509_STORE *own_trusted, + STACK_OF(X509) *candidates); +int OSSL_CMP_CTX_set1_pkey(OSSL_CMP_CTX *ctx, EVP_PKEY *pkey); +int OSSL_CMP_CTX_set1_referenceValue(OSSL_CMP_CTX *ctx, + const unsigned char *ref, int len); +int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, + const unsigned char *sec, int len); +/* CMP message header and extra certificates: */ +int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); +int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) +*OSSL_CMP_CTX_get0_geninfo_ITAVs(const OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, + STACK_OF(X509) *extraCertsOut); +/* certificate template: */ +int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); +EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); +int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); +int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, + const GENERAL_NAME *name); +int OSSL_CMP_CTX_set0_reqExtensions(OSSL_CMP_CTX *ctx, X509_EXTENSIONS *exts); +int OSSL_CMP_CTX_reqExtensions_have_SAN(OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_push0_policy(OSSL_CMP_CTX *ctx, POLICYINFO *pinfo); +int OSSL_CMP_CTX_set1_oldCert(OSSL_CMP_CTX *ctx, X509 *cert); +int OSSL_CMP_CTX_set1_p10CSR(OSSL_CMP_CTX *ctx, const X509_REQ *csr); +/* misc body contents: */ +int OSSL_CMP_CTX_push0_genm_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); +/* certificate confirmation: */ +typedef int (*OSSL_CMP_certConf_cb_t)(OSSL_CMP_CTX *ctx, X509 *cert, + int fail_info, const char **txt); +int OSSL_CMP_certConf_cb(OSSL_CMP_CTX *ctx, X509 *cert, int fail_info, + const char **text); +int OSSL_CMP_CTX_set_certConf_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_certConf_cb_t cb); +int OSSL_CMP_CTX_set_certConf_cb_arg(OSSL_CMP_CTX *ctx, void *arg); +void *OSSL_CMP_CTX_get_certConf_cb_arg(const OSSL_CMP_CTX *ctx); +/* result fetching: */ +int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); +OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); +#define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); +X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); +STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); +STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); +STACK_OF(X509) *OSSL_CMP_CTX_get1_extraCertsIn(const OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_set1_transactionID(OSSL_CMP_CTX *ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_CTX_set1_senderNonce(OSSL_CMP_CTX *ctx, + const ASN1_OCTET_STRING *nonce); + +/* from cmp_status.c */ +char *OSSL_CMP_CTX_snprint_PKIStatus(const OSSL_CMP_CTX *ctx, char *buf, + size_t bufsize); +char *OSSL_CMP_snprint_PKIStatusInfo(const OSSL_CMP_PKISI *statusInfo, + char *buf, size_t bufsize); +OSSL_CMP_PKISI * +OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); + +/* from cmp_hdr.c */ +ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const OSSL_CMP_PKIHEADER *hdr); +ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); +STACK_OF(OSSL_CMP_ITAV) +*OSSL_CMP_HDR_get0_geninfo_ITAVs(const OSSL_CMP_PKIHEADER *hdr); + +/* from cmp_msg.c */ +OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); +int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +X509_PUBKEY *OSSL_CMP_MSG_get0_certreq_publickey(const OSSL_CMP_MSG *msg); +int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); +int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); +OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); +OSSL_CMP_MSG *OSSL_CMP_MSG_read(const char *file, OSSL_LIB_CTX *libctx, + const char *propq); +int OSSL_CMP_MSG_write(const char *file, const OSSL_CMP_MSG *msg); +OSSL_CMP_MSG *d2i_OSSL_CMP_MSG_bio(BIO *bio, OSSL_CMP_MSG **msg); +int i2d_OSSL_CMP_MSG_bio(BIO *bio, const OSSL_CMP_MSG *msg); + +/* from cmp_vfy.c */ +int OSSL_CMP_validate_msg(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg); +int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, + X509_STORE *trusted_store, X509 *cert); + +/* from cmp_http.c */ +#ifndef OPENSSL_NO_HTTP +OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, + const OSSL_CMP_MSG *req); +#endif + +/* from cmp_server.c */ +typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; +OSSL_CMP_MSG *OSSL_CMP_SRV_process_request(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +OSSL_CMP_MSG *OSSL_CMP_CTX_server_perform(OSSL_CMP_CTX *client_ctx, + const OSSL_CMP_MSG *req); +OSSL_CMP_SRV_CTX *OSSL_CMP_SRV_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); +void OSSL_CMP_SRV_CTX_free(OSSL_CMP_SRV_CTX *srv_ctx); +typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_cert_request_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, const OSSL_CMP_MSG *req, int certReqId, + const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr, + X509 **certOut, STACK_OF(X509) **chainOut, STACK_OF(X509) **caPubs); +typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_rr_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, + const X509_NAME *issuer, + const ASN1_INTEGER *serial); +typedef int (*OSSL_CMP_SRV_genm_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, + const STACK_OF(OSSL_CMP_ITAV) *in, + STACK_OF(OSSL_CMP_ITAV) **out); +typedef void (*OSSL_CMP_SRV_error_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, + const OSSL_CMP_PKISI *statusInfo, + const ASN1_INTEGER *errorCode, + const OSSL_CMP_PKIFREETEXT *errDetails); +typedef int (*OSSL_CMP_SRV_certConf_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, + int certReqId, + const ASN1_OCTET_STRING *certHash, + const OSSL_CMP_PKISI *si); +typedef int (*OSSL_CMP_SRV_pollReq_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, int certReqId, + OSSL_CMP_MSG **certReq, + int64_t *check_after); +int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, + OSSL_CMP_SRV_cert_request_cb_t process_cert_request, + OSSL_CMP_SRV_rr_cb_t process_rr, + OSSL_CMP_SRV_genm_cb_t process_genm, + OSSL_CMP_SRV_error_cb_t process_error, + OSSL_CMP_SRV_certConf_cb_t process_certConf, + OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +typedef int (*OSSL_CMP_SRV_delayed_delivery_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +typedef int (*OSSL_CMP_SRV_clean_transaction_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_SRV_CTX_init_trans(OSSL_CMP_SRV_CTX *srv_ctx, + OSSL_CMP_SRV_delayed_delivery_cb_t delay, + OSSL_CMP_SRV_clean_transaction_cb_t clean); +OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); +void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); +int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, + int val); +int OSSL_CMP_SRV_CTX_set_accept_unprotected(OSSL_CMP_SRV_CTX *srv_ctx, int val); +int OSSL_CMP_SRV_CTX_set_accept_raverified(OSSL_CMP_SRV_CTX *srv_ctx, int val); +int OSSL_CMP_SRV_CTX_set_grant_implicit_confirm(OSSL_CMP_SRV_CTX *srv_ctx, + int val); + +/* from cmp_client.c */ +X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, + const OSSL_CRMF_MSG *crm); +#define OSSL_CMP_IR 0 +#define OSSL_CMP_CR 2 +#define OSSL_CMP_P10CR 4 +#define OSSL_CMP_KUR 7 +#define OSSL_CMP_GENM 21 +#define OSSL_CMP_ERROR 23 +#define OSSL_CMP_exec_IR_ses(ctx) \ + OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) +#define OSSL_CMP_exec_CR_ses(ctx) \ + OSSL_CMP_exec_certreq(ctx, OSSL_CMP_CR, NULL) +#define OSSL_CMP_exec_P10CR_ses(ctx) \ + OSSL_CMP_exec_certreq(ctx, OSSL_CMP_P10CR, NULL) +#define OSSL_CMP_exec_KUR_ses(ctx) \ + OSSL_CMP_exec_certreq(ctx, OSSL_CMP_KUR, NULL) +int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, + const OSSL_CRMF_MSG *crm, int *checkAfter); +int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); + +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); +int OSSL_CMP_get1_crlUpdate(OSSL_CMP_CTX *ctx, const X509 *crlcert, + const X509_CRL *last_crl, + X509_CRL **crl); +int OSSL_CMP_get1_certReqTemplate(OSSL_CMP_CTX *ctx, + OSSL_CRMF_CERTTEMPLATE **certTemplate, + OSSL_CMP_ATAVS **keySpec); + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_CMP) */ +#endif /* !defined(OPENSSL_CMP_H) */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/cms.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/cms.h new file mode 100644 index 00000000000000..e590224acae5a1 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/cms.h @@ -0,0 +1,515 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/cms.h.in + * + * Copyright 2008-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CMS_H +#define OPENSSL_CMS_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CMS_H +#endif + +#include + +#ifndef OPENSSL_NO_CMS +#include +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; +typedef struct CMS_ContentInfo_st CMS_ContentInfo; +typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; +typedef struct CMS_CertificateChoices CMS_CertificateChoices; +typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; +typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; +typedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest; +typedef struct CMS_Receipt_st CMS_Receipt; +typedef struct CMS_RecipientEncryptedKey_st CMS_RecipientEncryptedKey; +typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(CMS_SignerInfo, CMS_SignerInfo, CMS_SignerInfo) +#define sk_CMS_SignerInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_value(sk, idx) ((CMS_SignerInfo *)OPENSSL_sk_value(ossl_check_const_CMS_SignerInfo_sk_type(sk), (idx))) +#define sk_CMS_SignerInfo_new(cmp) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new(ossl_check_CMS_SignerInfo_compfunc_type(cmp))) +#define sk_CMS_SignerInfo_new_null() ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_null()) +#define sk_CMS_SignerInfo_new_reserve(cmp, n) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_SignerInfo_compfunc_type(cmp), (n))) +#define sk_CMS_SignerInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_SignerInfo_sk_type(sk), (n)) +#define sk_CMS_SignerInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_delete(sk, i) ((CMS_SignerInfo *)OPENSSL_sk_delete(ossl_check_CMS_SignerInfo_sk_type(sk), (i))) +#define sk_CMS_SignerInfo_delete_ptr(sk, ptr) ((CMS_SignerInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))) +#define sk_CMS_SignerInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_pop(sk) ((CMS_SignerInfo *)OPENSSL_sk_pop(ossl_check_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_shift(sk) ((CMS_SignerInfo *)OPENSSL_sk_shift(ossl_check_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_SignerInfo_sk_type(sk),ossl_check_CMS_SignerInfo_freefunc_type(freefunc)) +#define sk_CMS_SignerInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), (idx)) +#define sk_CMS_SignerInfo_set(sk, idx, ptr) ((CMS_SignerInfo *)OPENSSL_sk_set(ossl_check_CMS_SignerInfo_sk_type(sk), (idx), ossl_check_CMS_SignerInfo_type(ptr))) +#define sk_CMS_SignerInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), pnum) +#define sk_CMS_SignerInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_dup(sk) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_copyfunc_type(copyfunc), ossl_check_CMS_SignerInfo_freefunc_type(freefunc))) +#define sk_CMS_SignerInfo_set_cmp_func(sk, cmp) ((sk_CMS_SignerInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey) +#define sk_CMS_RecipientEncryptedKey_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_value(sk, idx) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), (idx))) +#define sk_CMS_RecipientEncryptedKey_new(cmp) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) +#define sk_CMS_RecipientEncryptedKey_new_null() ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_null()) +#define sk_CMS_RecipientEncryptedKey_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp), (n))) +#define sk_CMS_RecipientEncryptedKey_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (n)) +#define sk_CMS_RecipientEncryptedKey_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_delete(sk, i) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (i))) +#define sk_CMS_RecipientEncryptedKey_delete_ptr(sk, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) +#define sk_CMS_RecipientEncryptedKey_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_pop(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_pop(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_shift(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_shift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk),ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc)) +#define sk_CMS_RecipientEncryptedKey_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), (idx)) +#define sk_CMS_RecipientEncryptedKey_set(sk, idx, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_set(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (idx), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) +#define sk_CMS_RecipientEncryptedKey_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), pnum) +#define sk_CMS_RecipientEncryptedKey_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_dup(sk) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_copyfunc_type(copyfunc), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc))) +#define sk_CMS_RecipientEncryptedKey_set_cmp_func(sk, cmp) ((sk_CMS_RecipientEncryptedKey_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientInfo, CMS_RecipientInfo, CMS_RecipientInfo) +#define sk_CMS_RecipientInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_value(sk, idx) ((CMS_RecipientInfo *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientInfo_sk_type(sk), (idx))) +#define sk_CMS_RecipientInfo_new(cmp) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new(ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) +#define sk_CMS_RecipientInfo_new_null() ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_null()) +#define sk_CMS_RecipientInfo_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientInfo_compfunc_type(cmp), (n))) +#define sk_CMS_RecipientInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientInfo_sk_type(sk), (n)) +#define sk_CMS_RecipientInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_delete(sk, i) ((CMS_RecipientInfo *)OPENSSL_sk_delete(ossl_check_CMS_RecipientInfo_sk_type(sk), (i))) +#define sk_CMS_RecipientInfo_delete_ptr(sk, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))) +#define sk_CMS_RecipientInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_pop(sk) ((CMS_RecipientInfo *)OPENSSL_sk_pop(ossl_check_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_shift(sk) ((CMS_RecipientInfo *)OPENSSL_sk_shift(ossl_check_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientInfo_sk_type(sk),ossl_check_CMS_RecipientInfo_freefunc_type(freefunc)) +#define sk_CMS_RecipientInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), (idx)) +#define sk_CMS_RecipientInfo_set(sk, idx, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_set(ossl_check_CMS_RecipientInfo_sk_type(sk), (idx), ossl_check_CMS_RecipientInfo_type(ptr))) +#define sk_CMS_RecipientInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), pnum) +#define sk_CMS_RecipientInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_dup(sk) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_copyfunc_type(copyfunc), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc))) +#define sk_CMS_RecipientInfo_set_cmp_func(sk, cmp) ((sk_CMS_RecipientInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, CMS_RevocationInfoChoice) +#define sk_CMS_RevocationInfoChoice_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_value(sk, idx) ((CMS_RevocationInfoChoice *)OPENSSL_sk_value(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), (idx))) +#define sk_CMS_RevocationInfoChoice_new(cmp) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +#define sk_CMS_RevocationInfoChoice_new_null() ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_null()) +#define sk_CMS_RevocationInfoChoice_new_reserve(cmp, n) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp), (n))) +#define sk_CMS_RevocationInfoChoice_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (n)) +#define sk_CMS_RevocationInfoChoice_free(sk) OPENSSL_sk_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_delete(sk, i) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (i))) +#define sk_CMS_RevocationInfoChoice_delete_ptr(sk, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))) +#define sk_CMS_RevocationInfoChoice_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_pop(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_pop(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_shift(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_shift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk),ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc)) +#define sk_CMS_RevocationInfoChoice_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), (idx)) +#define sk_CMS_RevocationInfoChoice_set(sk, idx, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_set(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (idx), ossl_check_CMS_RevocationInfoChoice_type(ptr))) +#define sk_CMS_RevocationInfoChoice_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), pnum) +#define sk_CMS_RevocationInfoChoice_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_dup(sk) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_dup(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_copyfunc_type(copyfunc), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc))) +#define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) +DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) +DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) +DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) + +DECLARE_ASN1_DUP_FUNCTION(CMS_EnvelopedData) + +CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +#define CMS_SIGNERINFO_ISSUER_SERIAL 0 +#define CMS_SIGNERINFO_KEYIDENTIFIER 1 + +#define CMS_RECIPINFO_NONE -1 +#define CMS_RECIPINFO_TRANS 0 +#define CMS_RECIPINFO_AGREE 1 +#define CMS_RECIPINFO_KEK 2 +#define CMS_RECIPINFO_PASS 3 +#define CMS_RECIPINFO_OTHER 4 + +/* S/MIME related flags */ + +#define CMS_TEXT 0x1 +#define CMS_NOCERTS 0x2 +#define CMS_NO_CONTENT_VERIFY 0x4 +#define CMS_NO_ATTR_VERIFY 0x8 +#define CMS_NOSIGS \ + (CMS_NO_CONTENT_VERIFY | CMS_NO_ATTR_VERIFY) +#define CMS_NOINTERN 0x10 +#define CMS_NO_SIGNER_CERT_VERIFY 0x20 +#define CMS_NOVERIFY 0x20 +#define CMS_DETACHED 0x40 +#define CMS_BINARY 0x80 +#define CMS_NOATTR 0x100 +#define CMS_NOSMIMECAP 0x200 +#define CMS_NOOLDMIMETYPE 0x400 +#define CMS_CRLFEOL 0x800 +#define CMS_STREAM 0x1000 +#define CMS_NOCRL 0x2000 +#define CMS_PARTIAL 0x4000 +#define CMS_REUSE_DIGEST 0x8000 +#define CMS_USE_KEYID 0x10000 +#define CMS_DEBUG_DECRYPT 0x20000 +#define CMS_KEY_PARAM 0x40000 +#define CMS_ASCIICRLF 0x80000 +#define CMS_CADES 0x100000 +#define CMS_USE_ORIGINATOR_KEYID 0x200000 +#define CMS_NO_SIGNING_TIME 0x400000 + +const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); + +BIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont); +int CMS_dataFinal(CMS_ContentInfo *cms, BIO *bio); + +ASN1_OCTET_STRING **CMS_get0_content(CMS_ContentInfo *cms); +int CMS_is_detached(CMS_ContentInfo *cms); +int CMS_set_detached(CMS_ContentInfo *cms, int detached); + +#ifdef OPENSSL_PEM_H +DECLARE_PEM_rw(CMS, CMS_ContentInfo) +#endif +int CMS_stream(unsigned char ***boundary, CMS_ContentInfo *cms); +CMS_ContentInfo *d2i_CMS_bio(BIO *bp, CMS_ContentInfo **cms); +int i2d_CMS_bio(BIO *bp, CMS_ContentInfo *cms); + +BIO *BIO_new_CMS(BIO *out, CMS_ContentInfo *cms); +int i2d_CMS_bio_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, int flags); +int PEM_write_bio_CMS_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, + int flags); +CMS_ContentInfo *SMIME_read_CMS(BIO *bio, BIO **bcont); +CMS_ContentInfo *SMIME_read_CMS_ex(BIO *bio, int flags, BIO **bcont, CMS_ContentInfo **ci); +int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); + +int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, + unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); + +CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, BIO *data, + unsigned int flags); +CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, BIO *data, + unsigned int flags, OSSL_LIB_CTX *libctx, + const char *propq); + +CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, + X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, unsigned int flags); + +int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); +CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); +CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); + +int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, + unsigned int flags); +CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, + unsigned int flags); +CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, + unsigned int flags, OSSL_LIB_CTX *libctx, + const char *propq); + +int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, + const unsigned char *key, size_t keylen, + BIO *dcont, BIO *out, unsigned int flags); +CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, + const unsigned char *key, + size_t keylen, unsigned int flags); +CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, + const unsigned char *key, + size_t keylen, unsigned int flags, + OSSL_LIB_CTX *libctx, + const char *propq); + +int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, + const unsigned char *key, size_t keylen); + +int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs, + X509_STORE *store, BIO *dcont, BIO *out, unsigned int flags); + +int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms, + STACK_OF(X509) *certs, + X509_STORE *store, unsigned int flags); + +STACK_OF(X509) *CMS_get0_signers(CMS_ContentInfo *cms); + +CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, unsigned int flags); +CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); + +int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, + BIO *dcont, BIO *out, unsigned int flags); + +int CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert); +int CMS_decrypt_set1_pkey_and_peer(CMS_ContentInfo *cms, EVP_PKEY *pk, + X509 *cert, X509 *peer); +int CMS_decrypt_set1_key(CMS_ContentInfo *cms, + unsigned char *key, size_t keylen, + const unsigned char *id, size_t idlen); +int CMS_decrypt_set1_password(CMS_ContentInfo *cms, + unsigned char *pass, ossl_ssize_t passlen); + +STACK_OF(CMS_RecipientInfo) *CMS_get0_RecipientInfos(CMS_ContentInfo *cms); +int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); +EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); +CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); +CMS_ContentInfo * +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, + const char *propq); +CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); +CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, + OSSL_LIB_CTX *libctx, + const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); + +CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, + X509 *recip, unsigned int flags); +CMS_RecipientInfo *CMS_add1_recipient(CMS_ContentInfo *cms, X509 *recip, + EVP_PKEY *originatorPrivKey, X509 *originator, unsigned int flags); +int CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey); +int CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert); +int CMS_RecipientInfo_ktri_get0_algs(CMS_RecipientInfo *ri, + EVP_PKEY **pk, X509 **recip, + X509_ALGOR **palg); +int CMS_RecipientInfo_ktri_get0_signer_id(CMS_RecipientInfo *ri, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, + ASN1_INTEGER **sno); + +CMS_RecipientInfo *CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid, + unsigned char *key, size_t keylen, + unsigned char *id, size_t idlen, + ASN1_GENERALIZEDTIME *date, + ASN1_OBJECT *otherTypeId, + ASN1_TYPE *otherType); + +int CMS_RecipientInfo_kekri_get0_id(CMS_RecipientInfo *ri, + X509_ALGOR **palg, + ASN1_OCTET_STRING **pid, + ASN1_GENERALIZEDTIME **pdate, + ASN1_OBJECT **potherid, + ASN1_TYPE **pothertype); + +int CMS_RecipientInfo_set0_key(CMS_RecipientInfo *ri, + unsigned char *key, size_t keylen); + +int CMS_RecipientInfo_kekri_id_cmp(CMS_RecipientInfo *ri, + const unsigned char *id, size_t idlen); + +int CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri, + unsigned char *pass, + ossl_ssize_t passlen); + +CMS_RecipientInfo *CMS_add0_recipient_password(CMS_ContentInfo *cms, + int iter, int wrap_nid, + int pbe_nid, + unsigned char *pass, + ossl_ssize_t passlen, + const EVP_CIPHER *kekciph); + +int CMS_RecipientInfo_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri); +int CMS_RecipientInfo_encrypt(const CMS_ContentInfo *cms, CMS_RecipientInfo *ri); + +int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out, + unsigned int flags); +CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags); + +int CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid); +const ASN1_OBJECT *CMS_get0_eContentType(CMS_ContentInfo *cms); + +CMS_CertificateChoices *CMS_add0_CertificateChoices(CMS_ContentInfo *cms); +int CMS_add0_cert(CMS_ContentInfo *cms, X509 *cert); +int CMS_add1_cert(CMS_ContentInfo *cms, X509 *cert); +STACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms); + +CMS_RevocationInfoChoice *CMS_add0_RevocationInfoChoice(CMS_ContentInfo *cms); +int CMS_add0_crl(CMS_ContentInfo *cms, X509_CRL *crl); +int CMS_add1_crl(CMS_ContentInfo *cms, X509_CRL *crl); +STACK_OF(X509_CRL) *CMS_get1_crls(CMS_ContentInfo *cms); + +int CMS_SignedData_init(CMS_ContentInfo *cms); +CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms, + X509 *signer, EVP_PKEY *pk, const EVP_MD *md, + unsigned int flags); +EVP_PKEY_CTX *CMS_SignerInfo_get0_pkey_ctx(CMS_SignerInfo *si); +EVP_MD_CTX *CMS_SignerInfo_get0_md_ctx(CMS_SignerInfo *si); +STACK_OF(CMS_SignerInfo) *CMS_get0_SignerInfos(CMS_ContentInfo *cms); + +void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer); +int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, ASN1_INTEGER **sno); +int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert); +int CMS_set1_signers_certs(CMS_ContentInfo *cms, STACK_OF(X509) *certs, + unsigned int flags); +void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk, + X509 **signer, X509_ALGOR **pdig, + X509_ALGOR **psig); +ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); +int CMS_SignerInfo_sign(CMS_SignerInfo *si); +int CMS_SignerInfo_verify(CMS_SignerInfo *si); +int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); + +int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); +int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, + int algnid, int keysize); +int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap); + +int CMS_signed_get_attr_count(const CMS_SignerInfo *si); +int CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid, + int lastpos); +int CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *CMS_signed_get_attr(const CMS_SignerInfo *si, int loc); +X509_ATTRIBUTE *CMS_signed_delete_attr(CMS_SignerInfo *si, int loc); +int CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr); +int CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int type, + const void *bytes, int len); +int CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si, + int nid, int type, + const void *bytes, int len); +int CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si, + const char *attrname, int type, + const void *bytes, int len); +void *CMS_signed_get0_data_by_OBJ(const CMS_SignerInfo *si, + const ASN1_OBJECT *oid, + int lastpos, int type); + +int CMS_unsigned_get_attr_count(const CMS_SignerInfo *si); +int CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid, + int lastpos); +int CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc); +X509_ATTRIBUTE *CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc); +int CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr); +int CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int type, + const void *bytes, int len); +int CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si, + int nid, int type, + const void *bytes, int len); +int CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si, + const char *attrname, int type, + const void *bytes, int len); +void *CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid, + int lastpos, int type); + +int CMS_get1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest **prr); +CMS_ReceiptRequest *CMS_ReceiptRequest_create0( + unsigned char *id, int idlen, int allorfirst, + STACK_OF(GENERAL_NAMES) *receiptList, + STACK_OF(GENERAL_NAMES) *receiptsTo); +CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( + unsigned char *id, int idlen, int allorfirst, + STACK_OF(GENERAL_NAMES) *receiptList, + STACK_OF(GENERAL_NAMES) *receiptsTo, + OSSL_LIB_CTX *libctx); + +int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); +void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, + ASN1_STRING **pcid, + int *pallorfirst, + STACK_OF(GENERAL_NAMES) **plist, + STACK_OF(GENERAL_NAMES) **prto); +int CMS_RecipientInfo_kari_get0_alg(CMS_RecipientInfo *ri, + X509_ALGOR **palg, + ASN1_OCTET_STRING **pukm); +STACK_OF(CMS_RecipientEncryptedKey) +*CMS_RecipientInfo_kari_get0_reks(CMS_RecipientInfo *ri); + +int CMS_RecipientInfo_kari_get0_orig_id(CMS_RecipientInfo *ri, + X509_ALGOR **pubalg, + ASN1_BIT_STRING **pubkey, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, + ASN1_INTEGER **sno); + +int CMS_RecipientInfo_kari_orig_id_cmp(CMS_RecipientInfo *ri, X509 *cert); + +int CMS_RecipientEncryptedKey_get0_id(CMS_RecipientEncryptedKey *rek, + ASN1_OCTET_STRING **keyid, + ASN1_GENERALIZEDTIME **tm, + CMS_OtherKeyAttribute **other, + X509_NAME **issuer, ASN1_INTEGER **sno); +int CMS_RecipientEncryptedKey_cert_cmp(CMS_RecipientEncryptedKey *rek, + X509 *cert); +int CMS_RecipientInfo_kari_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk); +int CMS_RecipientInfo_kari_set0_pkey_and_peer(CMS_RecipientInfo *ri, EVP_PKEY *pk, X509 *peer); +EVP_CIPHER_CTX *CMS_RecipientInfo_kari_get0_ctx(CMS_RecipientInfo *ri); +int CMS_RecipientInfo_kari_decrypt(CMS_ContentInfo *cms, + CMS_RecipientInfo *ri, + CMS_RecipientEncryptedKey *rek); + +int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg, + ASN1_OCTET_STRING *ukm, int keylen); + +/* Backward compatibility for spelling errors. */ +#define CMS_R_UNKNOWN_DIGEST_ALGORITM CMS_R_UNKNOWN_DIGEST_ALGORITHM +#define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE \ + CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/comp.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/comp.h new file mode 100644 index 00000000000000..d47246a1a20238 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/comp.h @@ -0,0 +1,101 @@ +/* + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_COMP_H +#define OPENSSL_COMP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_COMP_H +#endif + +#include + +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_COMP + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX *comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define COMP_zlib_cleanup() \ + while (0) \ + continue +#endif + +#ifdef OPENSSL_BIO_H +const BIO_METHOD *BIO_f_zlib(void); +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); +#endif + +#endif + +typedef struct ssl_comp_st SSL_COMP; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + +/* clang-format on */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/conf.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/conf.h new file mode 100644 index 00000000000000..96b1c680308855 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/conf.h @@ -0,0 +1,219 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/conf.h.in + * + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CONF_H +#define OPENSSL_CONF_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CONF_H +#endif + +#include +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char *section; + char *name; + char *value; +} CONF_VALUE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) +#define sk_CONF_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_value(sk, idx) ((CONF_VALUE *)OPENSSL_sk_value(ossl_check_const_CONF_VALUE_sk_type(sk), (idx))) +#define sk_CONF_VALUE_new(cmp) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new(ossl_check_CONF_VALUE_compfunc_type(cmp))) +#define sk_CONF_VALUE_new_null() ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_null()) +#define sk_CONF_VALUE_new_reserve(cmp, n) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_CONF_VALUE_compfunc_type(cmp), (n))) +#define sk_CONF_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CONF_VALUE_sk_type(sk), (n)) +#define sk_CONF_VALUE_free(sk) OPENSSL_sk_free(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_delete(sk, i) ((CONF_VALUE *)OPENSSL_sk_delete(ossl_check_CONF_VALUE_sk_type(sk), (i))) +#define sk_CONF_VALUE_delete_ptr(sk, ptr) ((CONF_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))) +#define sk_CONF_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_pop(sk) ((CONF_VALUE *)OPENSSL_sk_pop(ossl_check_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_shift(sk) ((CONF_VALUE *)OPENSSL_sk_shift(ossl_check_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CONF_VALUE_sk_type(sk),ossl_check_CONF_VALUE_freefunc_type(freefunc)) +#define sk_CONF_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), (idx)) +#define sk_CONF_VALUE_set(sk, idx, ptr) ((CONF_VALUE *)OPENSSL_sk_set(ossl_check_CONF_VALUE_sk_type(sk), (idx), ossl_check_CONF_VALUE_type(ptr))) +#define sk_CONF_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), pnum) +#define sk_CONF_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_dup(sk) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_dup(ossl_check_const_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) +#define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) +DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)), lh_CONF_VALUE_hash_thunk, lh_CONF_VALUE_comp_thunk, lh_CONF_VALUE_doall_thunk, lh_CONF_VALUE_doall_arg_thunk)) +#define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_delete(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_delete(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_retrieve(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_retrieve(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_error(lh) OPENSSL_LH_error(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_num_items(lh) OPENSSL_LH_num_items(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_CONF_VALUE_lh_type(lh), dl) +#define lh_CONF_VALUE_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +struct conf_st; +struct conf_method_st; +typedef struct conf_method_st CONF_METHOD; + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#include +#endif + +/* Module definitions */ +typedef struct conf_imodule_st CONF_IMODULE; +typedef struct conf_module_st CONF_MODULE; + +STACK_OF(CONF_MODULE); +STACK_OF(CONF_IMODULE); + +/* DSO module function typedefs */ +typedef int conf_init_func(CONF_IMODULE *md, const CONF *cnf); +typedef void conf_finish_func(CONF_IMODULE *md); + +#define CONF_MFLAGS_IGNORE_ERRORS 0x1 +#define CONF_MFLAGS_IGNORE_RETURN_CODES 0x2 +#define CONF_MFLAGS_SILENT 0x4 +#define CONF_MFLAGS_NO_DSO 0x8 +#define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10 +#define CONF_MFLAGS_DEFAULT_SECTION 0x20 + +int CONF_set_default_method(CONF_METHOD *meth); +void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash); +LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file, + long *eline); +#ifndef OPENSSL_NO_STDIO +LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp, + long *eline); +#endif +LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp, + long *eline); +STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf, + const char *section); +char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf, const char *group, + const char *name); +long CONF_get_number(LHASH_OF(CONF_VALUE) *conf, const char *group, + const char *name); +void CONF_free(LHASH_OF(CONF_VALUE) *conf); +#ifndef OPENSSL_NO_STDIO +int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out); +#endif +int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void OPENSSL_config(const char *config_name); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OPENSSL_no_config() \ + OPENSSL_init_crypto(OPENSSL_INIT_NO_LOAD_CONFIG, NULL) +#endif + +/* + * New conf code. The semantics are different from the functions above. If + * that wasn't the case, the above functions would have been replaced + */ + +CONF *NCONF_new_ex(OSSL_LIB_CTX *libctx, CONF_METHOD *meth); +OSSL_LIB_CTX *NCONF_get0_libctx(const CONF *conf); +CONF *NCONF_new(CONF_METHOD *meth); +CONF_METHOD *NCONF_default(void); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 CONF_METHOD *NCONF_WIN32(void); +#endif +void NCONF_free(CONF *conf); +void NCONF_free_data(CONF *conf); + +int NCONF_load(CONF *conf, const char *file, long *eline); +#ifndef OPENSSL_NO_STDIO +int NCONF_load_fp(CONF *conf, FILE *fp, long *eline); +#endif +int NCONF_load_bio(CONF *conf, BIO *bp, long *eline); +STACK_OF(OPENSSL_CSTRING) *NCONF_get_section_names(const CONF *conf); +STACK_OF(CONF_VALUE) *NCONF_get_section(const CONF *conf, + const char *section); +char *NCONF_get_string(const CONF *conf, const char *group, const char *name); +int NCONF_get_number_e(const CONF *conf, const char *group, const char *name, + long *result); +#ifndef OPENSSL_NO_STDIO +int NCONF_dump_fp(const CONF *conf, FILE *out); +#endif +int NCONF_dump_bio(const CONF *conf, BIO *out); + +#define NCONF_get_number(c, g, n, r) NCONF_get_number_e(c, g, n, r) + +/* Module functions */ + +int CONF_modules_load(const CONF *cnf, const char *appname, + unsigned long flags); +int CONF_modules_load_file_ex(OSSL_LIB_CTX *libctx, const char *filename, + const char *appname, unsigned long flags); +int CONF_modules_load_file(const char *filename, const char *appname, + unsigned long flags); +void CONF_modules_unload(int all); +void CONF_modules_finish(void); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define CONF_modules_free() \ + while (0) \ + continue +#endif +int CONF_module_add(const char *name, conf_init_func *ifunc, + conf_finish_func *ffunc); + +const char *CONF_imodule_get_name(const CONF_IMODULE *md); +const char *CONF_imodule_get_value(const CONF_IMODULE *md); +void *CONF_imodule_get_usr_data(const CONF_IMODULE *md); +void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data); +CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md); +unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md); +void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags); +void *CONF_module_get_usr_data(CONF_MODULE *pmod); +void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data); + +char *CONF_get1_default_config_file(void); + +int CONF_parse_list(const char *list, int sep, int nospc, + int (*list_cb)(const char *elem, int len, void *usr), + void *arg); + +void OPENSSL_load_builtin_modules(void); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/configuration.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/configuration.h new file mode 100644 index 00000000000000..8dc77fcbf2f72a --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/configuration.h @@ -0,0 +1,190 @@ +/* + * WARNING: do not edit! + * Generated by configdata.pm from Configurations/common0.tmpl, Configurations/unix-Makefile.tmpl + * via Makefile.in + * + * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CONFIGURATION_H +#define OPENSSL_CONFIGURATION_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +#error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +/* clang-format off */ +# define OPENSSL_CONFIGURED_API 30500 +# ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +# endif +# ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +# endif +# ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +# endif +# ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif +# ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +# endif +# ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# endif +# ifndef OPENSSL_NO_DEMOS +# define OPENSSL_NO_DEMOS +# endif +# ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +# endif +# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +# endif +# ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +# endif +# ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +# endif +# ifndef OPENSSL_NO_FIPS_JITTER +# define OPENSSL_NO_FIPS_JITTER +# endif +# ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +# endif +# ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +# endif +# ifndef OPENSSL_NO_H3DEMO +# define OPENSSL_NO_H3DEMO +# endif +# ifndef OPENSSL_NO_HQINTEROP +# define OPENSSL_NO_HQINTEROP +# endif +# ifndef OPENSSL_NO_JITTER +# define OPENSSL_NO_JITTER +# endif +# ifndef OPENSSL_NO_KTLS +# define OPENSSL_NO_KTLS +# endif +# ifndef OPENSSL_NO_LOADERENG +# define OPENSSL_NO_LOADERENG +# endif +# ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +# endif +# ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +# endif +# ifndef OPENSSL_NO_PIE +# define OPENSSL_NO_PIE +# endif +# ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +# endif +# ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +# endif +# ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +# endif +# ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +# endif +# ifndef OPENSSL_NO_SSLKEYLOG +# define OPENSSL_NO_SSLKEYLOG +# endif +# ifndef OPENSSL_NO_TESTS +# define OPENSSL_NO_TESTS +# endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif +# ifndef OPENSSL_NO_TRACE +# define OPENSSL_NO_TRACE +# endif +# ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +# endif +# ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +# endif +# ifndef OPENSSL_NO_UPLINK +# define OPENSSL_NO_UPLINK +# endif +# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +# endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif +# ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +# endif + +/* clang-format on */ + +/* Generate 80386 code? */ +/* clang-format off */ +# undef I386_ONLY +/* clang-format on */ + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) + /* clang-format off */ +# undef BN_LLONG + /* clang-format on */ + /* Only one for the following should be defined */ + /* clang-format off */ +# define SIXTY_FOUR_BIT_LONG + /* clang-format on */ + /* clang-format off */ +# undef SIXTY_FOUR_BIT + /* clang-format on */ + /* clang-format off */ +# undef THIRTY_TWO_BIT +/* clang-format on */ +#endif + +/* clang-format off */ +# define RC4_INT unsigned char +/* clang-format on */ + +#if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +#define OPENSSL_NO_COMP_ALG +#else +#undef OPENSSL_NO_COMP_ALG +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_CONFIGURATION_H */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/core_names.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/core_names.h new file mode 100644 index 00000000000000..aa445e8f1de7ba --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/core_names.h @@ -0,0 +1,579 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * + * Copyright 2019-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CORE_NAMES_H +#define OPENSSL_CORE_NAMES_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +#define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +#define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +#define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +#define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +#define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +#define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +#define OSSL_DIGEST_NAME_MD5 "MD5" +#define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +#define OSSL_DIGEST_NAME_SHA1 "SHA1" +#define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +#define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +#define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +#define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +#define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +#define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +#define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +#define OSSL_DIGEST_NAME_MD2 "MD2" +#define OSSL_DIGEST_NAME_MD4 "MD4" +#define OSSL_DIGEST_NAME_MDC2 "MDC2" +#define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +#define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +#define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +#define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +#define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +#define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +#define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +#define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +#define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +#define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +#define OSSL_MAC_NAME_CMAC "CMAC" +#define OSSL_MAC_NAME_GMAC "GMAC" +#define OSSL_MAC_NAME_HMAC "HMAC" +#define OSSL_MAC_NAME_KMAC128 "KMAC128" +#define OSSL_MAC_NAME_KMAC256 "KMAC256" +#define OSSL_MAC_NAME_POLY1305 "POLY1305" +#define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +#define OSSL_KDF_NAME_HKDF "HKDF" +#define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +#define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +#define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +#define OSSL_KDF_NAME_SCRYPT "SCRYPT" +#define OSSL_KDF_NAME_SSHKDF "SSHKDF" +#define OSSL_KDF_NAME_SSKDF "SSKDF" +#define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +#define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +#define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +#define OSSL_KDF_NAME_X963KDF "X963KDF" +#define OSSL_KDF_NAME_KBKDF "KBKDF" +#define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +#define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +#define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +#define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +#define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +#define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +#define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +#define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +#define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +#define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +#define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +#define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +#define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +#define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +#define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +#define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* PROV_SKEY well known key types */ +#define OSSL_SKEY_TYPE_GENERIC "GENERIC-SECRET" +#define OSSL_SKEY_TYPE_AES "AES" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Provider configuration variables */ +#define OSSL_PKEY_RETAIN_SEED "pkey_retain_seed" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +/* clang-format off */ +# define OSSL_ALG_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS "algorithm-id-params" +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR "fips-indicator" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_ASYM_CIPHER_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_ASYM_CIPHER_PARAM_FIPS_RSA_PKCS15_PAD_DISABLED OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_IV_GENERATED "iv-generated" +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS_OLD "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_DECRYPT_ONLY "decrypt-only" +# define OSSL_CIPHER_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_CIPHER_PARAM_FIPS_ENCRYPT_CHECK "encrypt-check" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_PIPELINE_AEAD_TAG "pipeline-tag" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_DRBG_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_EXCHANGE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_ECDH_COFACTOR_CHECK OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK +# define OSSL_EXCHANGE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KDF_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_KDF_PARAM_FIPS_EMS_CHECK "ems_check" +# define OSSL_KDF_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_KEM_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_HS_PADDING "hs_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_MAC_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_MAC_PARAM_FIPS_NO_SHORT_MAC OSSL_PROV_PARAM_NO_SHORT_MAC +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_INPUT_TYPE "input-type" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_ALGORITHM_ID OSSL_ALG_PARAM_ALGORITHM_ID +# define OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS OSSL_ALG_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK "digest-check" +# define OSSL_PKEY_PARAM_FIPS_KEY_CHECK "key-check" +# define OSSL_PKEY_PARAM_FIPS_SIGN_CHECK "sign-check" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS "ml-dsa.input_formats" +# define OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS "ml-dsa.output_formats" +# define OSSL_PKEY_PARAM_ML_DSA_PREFER_SEED "ml-dsa.prefer_seed" +# define OSSL_PKEY_PARAM_ML_DSA_RETAIN_SEED "ml-dsa.retain_seed" +# define OSSL_PKEY_PARAM_ML_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_ML_KEM_IMPORT_PCT_TYPE "ml-kem.import_pct_type" +# define OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS "ml-kem.input_formats" +# define OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS "ml-kem.output_formats" +# define OSSL_PKEY_PARAM_ML_KEM_PREFER_SEED "ml-kem.prefer_seed" +# define OSSL_PKEY_PARAM_ML_KEM_RETAIN_SEED "ml-kem.retain_seed" +# define OSSL_PKEY_PARAM_ML_KEM_SEED "seed" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ "rsa-derive-from-pq" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_SLH_DSA_SEED "seed" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_DSA_SIGN_DISABLED "dsa-sign-disabled" +# define OSSL_PROV_PARAM_ECDH_COFACTOR_CHECK "ecdh-cofactor-check" +# define OSSL_PROV_PARAM_HKDF_DIGEST_CHECK "hkdf-digest-check" +# define OSSL_PROV_PARAM_HKDF_KEY_CHECK "hkdf-key-check" +# define OSSL_PROV_PARAM_HMAC_KEY_CHECK "hmac-key-check" +# define OSSL_PROV_PARAM_KBKDF_KEY_CHECK "kbkdf-key-check" +# define OSSL_PROV_PARAM_KMAC_KEY_CHECK "kmac-key-check" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_NO_SHORT_MAC "no-short-mac" +# define OSSL_PROV_PARAM_PBKDF2_LOWER_BOUND_CHECK "pbkdf2-lower-bound-check" +# define OSSL_PROV_PARAM_RSA_PKCS15_PAD_DISABLED "rsa-pkcs15-pad-disabled" +# define OSSL_PROV_PARAM_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_PROV_PARAM_RSA_SIGN_X931_PAD_DISABLED "rsa-sign-x931-pad-disabled" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_SIGNATURE_DIGEST_CHECK "signature-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_DIGEST_CHECK "sshkdf-digest-check" +# define OSSL_PROV_PARAM_SSHKDF_KEY_CHECK "sshkdf-key-check" +# define OSSL_PROV_PARAM_SSKDF_DIGEST_CHECK "sskdf-digest-check" +# define OSSL_PROV_PARAM_SSKDF_KEY_CHECK "sskdf-key-check" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TDES_ENCRYPT_DISABLED "tdes-encrypt-disabled" +# define OSSL_PROV_PARAM_TLS13_KDF_DIGEST_CHECK "tls13-kdf-digest-check" +# define OSSL_PROV_PARAM_TLS13_KDF_KEY_CHECK "tls13-kdf-key-check" +# define OSSL_PROV_PARAM_TLS1_PRF_DIGEST_CHECK "tls1-prf-digest-check" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_TLS1_PRF_KEY_CHECK "tls1-prf-key-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_PROV_PARAM_X942KDF_KEY_CHECK "x942kdf-key-check" +# define OSSL_PROV_PARAM_X963KDF_DIGEST_CHECK "x963kdf-digest-check" +# define OSSL_PROV_PARAM_X963KDF_KEY_CHECK "x963kdf-key-check" +# define OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ADD_RANDOM "additional-random" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID OSSL_PKEY_PARAM_ALGORITHM_ID +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID_PARAMS OSSL_PKEY_PARAM_ALGORITHM_ID_PARAMS +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DETERMINISTIC "deterministic" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR OSSL_ALG_PARAM_FIPS_APPROVED_INDICATOR +# define OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK OSSL_PKEY_PARAM_FIPS_DIGEST_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK OSSL_PKEY_PARAM_FIPS_KEY_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK "rsa-pss-saltlen-check" +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_CHECK OSSL_PKEY_PARAM_FIPS_SIGN_CHECK +# define OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK "sign-x931-pad-check" +# define OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE "verify-message" +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MESSAGE_ENCODING "message-encoding" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_MU "mu" +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_SIGNATURE_PARAM_SIGNATURE "signature" +# define OSSL_SIGNATURE_PARAM_TEST_ENTROPY "test-entropy" +# define OSSL_SKEY_PARAM_KEY_LENGTH "key-length" +# define OSSL_SKEY_PARAM_RAW_BYTES "raw-bytes" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/crmf.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/crmf.h new file mode 100644 index 00000000000000..8b32ffb136b6a6 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/crmf.h @@ -0,0 +1,279 @@ +/*- + * WARNING: do not edit! + * Generated by Makefile from include/openssl/crmf.h.in + * + * Copyright 2007-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright Nokia 2007-2019 + * Copyright Siemens AG 2015-2019 + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + * + * CRMF (RFC 4211) implementation by M. Peylo, M. Viljanen, and D. von Oheimb. + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CRMF_H +#define OPENSSL_CRMF_H + +#include + +#ifndef OPENSSL_NO_CRMF +#include +#include +#include +#include /* for GENERAL_NAME etc. */ +#include + +/* explicit #includes not strictly needed since implied by the above: */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSSL_CRMF_POPOPRIVKEY_THISMESSAGE 0 +#define OSSL_CRMF_POPOPRIVKEY_SUBSEQUENTMESSAGE 1 +#define OSSL_CRMF_POPOPRIVKEY_DHMAC 2 +#define OSSL_CRMF_POPOPRIVKEY_AGREEMAC 3 +#define OSSL_CRMF_POPOPRIVKEY_ENCRYPTEDKEY 4 + +#define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 +#define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 +typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) + +typedef struct ossl_crmf_encryptedkey_st OSSL_CRMF_ENCRYPTEDKEY; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDKEY) + +typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) +#define sk_OSSL_CRMF_MSG_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_value(sk, idx) ((OSSL_CRMF_MSG *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_MSG_new(cmp) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) +#define sk_OSSL_CRMF_MSG_new_null() ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_MSG_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_MSG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (n)) +#define sk_OSSL_CRMF_MSG_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_delete(sk, i) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (i))) +#define sk_OSSL_CRMF_MSG_delete_ptr(sk, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))) +#define sk_OSSL_CRMF_MSG_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_pop(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_shift(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk),ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_MSG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), (idx)) +#define sk_OSSL_CRMF_MSG_set(sk, idx, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (idx), ossl_check_OSSL_CRMF_MSG_type(ptr))) +#define sk_OSSL_CRMF_MSG_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), pnum) +#define sk_OSSL_CRMF_MSG_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_dup(sk) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +void OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(OSSL_CRMF_ATTRIBUTETYPEANDVALUE *v); +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE, OSSL_CRMF_ATTRIBUTETYPEANDVALUE) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_value(sk, idx) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new(cmp) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_null() ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (n)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete(sk, i) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (i))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_delete_ptr(sk, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_shift(sk) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk),ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), (idx)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set(sk, idx, ptr) ((OSSL_CRMF_ATTRIBUTETYPEANDVALUE *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), (idx), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_type(ptr), pnum) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk)) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_dup(sk) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_sk_type(sk), ossl_check_OSSL_CRMF_ATTRIBUTETYPEANDVALUE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) +typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; +typedef struct ossl_crmf_certrequest_st OSSL_CRMF_CERTREQUEST; +typedef struct ossl_crmf_certid_st OSSL_CRMF_CERTID; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTID) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTID) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_CERTID, OSSL_CRMF_CERTID, OSSL_CRMF_CERTID) +#define sk_OSSL_CRMF_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_value(sk, idx) ((OSSL_CRMF_CERTID *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_CERTID_new(cmp) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) +#define sk_OSSL_CRMF_CERTID_new_null() ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_CERTID_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (n)) +#define sk_OSSL_CRMF_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_delete(sk, i) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (i))) +#define sk_OSSL_CRMF_CERTID_delete_ptr(sk, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))) +#define sk_OSSL_CRMF_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_pop(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_shift(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk),ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), (idx)) +#define sk_OSSL_CRMF_CERTID_set(sk, idx, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (idx), ossl_check_OSSL_CRMF_CERTID_type(ptr))) +#define sk_OSSL_CRMF_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), pnum) +#define sk_OSSL_CRMF_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_dup(sk) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_CERTID_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ossl_crmf_pkipublicationinfo_st OSSL_CRMF_PKIPUBLICATIONINFO; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PKIPUBLICATIONINFO) +typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) +typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTTEMPLATE) +typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) + +typedef struct ossl_crmf_optionalvalidity_st OSSL_CRMF_OPTIONALVALIDITY; + +/* crmf_pbm.c */ +OSSL_CRMF_PBMPARAMETER *OSSL_CRMF_pbmp_new(OSSL_LIB_CTX *libctx, size_t slen, + int owfnid, size_t itercnt, + int macnid); +int OSSL_CRMF_pbm_new(OSSL_LIB_CTX *libctx, const char *propq, + const OSSL_CRMF_PBMPARAMETER *pbmp, + const unsigned char *msg, size_t msglen, + const unsigned char *sec, size_t seclen, + unsigned char **mac, size_t *maclen); + +/* crmf_lib.c */ +int OSSL_CRMF_MSG_set1_regCtrl_regToken(OSSL_CRMF_MSG *msg, + const ASN1_UTF8STRING *tok); +ASN1_UTF8STRING +*OSSL_CRMF_MSG_get0_regCtrl_regToken(const OSSL_CRMF_MSG *msg); +int OSSL_CRMF_MSG_set1_regCtrl_authenticator(OSSL_CRMF_MSG *msg, + const ASN1_UTF8STRING *auth); +ASN1_UTF8STRING +*OSSL_CRMF_MSG_get0_regCtrl_authenticator(const OSSL_CRMF_MSG *msg); +int OSSL_CRMF_MSG_PKIPublicationInfo_push0_SinglePubInfo(OSSL_CRMF_PKIPUBLICATIONINFO *pi, + OSSL_CRMF_SINGLEPUBINFO *spi); +#define OSSL_CRMF_PUB_METHOD_DONTCARE 0 +#define OSSL_CRMF_PUB_METHOD_X500 1 +#define OSSL_CRMF_PUB_METHOD_WEB 2 +#define OSSL_CRMF_PUB_METHOD_LDAP 3 +int OSSL_CRMF_MSG_set0_SinglePubInfo(OSSL_CRMF_SINGLEPUBINFO *spi, + int method, GENERAL_NAME *nm); +#define OSSL_CRMF_PUB_ACTION_DONTPUBLISH 0 +#define OSSL_CRMF_PUB_ACTION_PLEASEPUBLISH 1 +int OSSL_CRMF_MSG_set_PKIPublicationInfo_action(OSSL_CRMF_PKIPUBLICATIONINFO *pi, + int action); +int OSSL_CRMF_MSG_set1_regCtrl_pkiPublicationInfo(OSSL_CRMF_MSG *msg, + const OSSL_CRMF_PKIPUBLICATIONINFO *pi); +OSSL_CRMF_PKIPUBLICATIONINFO +*OSSL_CRMF_MSG_get0_regCtrl_pkiPublicationInfo(const OSSL_CRMF_MSG *msg); +int OSSL_CRMF_MSG_set1_regCtrl_protocolEncrKey(OSSL_CRMF_MSG *msg, + const X509_PUBKEY *pubkey); +X509_PUBKEY +*OSSL_CRMF_MSG_get0_regCtrl_protocolEncrKey(const OSSL_CRMF_MSG *msg); +int OSSL_CRMF_MSG_set1_regCtrl_oldCertID(OSSL_CRMF_MSG *msg, + const OSSL_CRMF_CERTID *cid); +OSSL_CRMF_CERTID +*OSSL_CRMF_MSG_get0_regCtrl_oldCertID(const OSSL_CRMF_MSG *msg); +OSSL_CRMF_CERTID *OSSL_CRMF_CERTID_gen(const X509_NAME *issuer, + const ASN1_INTEGER *serial); + +int OSSL_CRMF_MSG_set1_regInfo_utf8Pairs(OSSL_CRMF_MSG *msg, + const ASN1_UTF8STRING *utf8pairs); +ASN1_UTF8STRING +*OSSL_CRMF_MSG_get0_regInfo_utf8Pairs(const OSSL_CRMF_MSG *msg); +int OSSL_CRMF_MSG_set1_regInfo_certReq(OSSL_CRMF_MSG *msg, + const OSSL_CRMF_CERTREQUEST *cr); +OSSL_CRMF_CERTREQUEST +*OSSL_CRMF_MSG_get0_regInfo_certReq(const OSSL_CRMF_MSG *msg); + +int OSSL_CRMF_MSG_set0_validity(OSSL_CRMF_MSG *crm, + ASN1_TIME *notBefore, ASN1_TIME *notAfter); +int OSSL_CRMF_MSG_set_certReqId(OSSL_CRMF_MSG *crm, int rid); +int OSSL_CRMF_MSG_get_certReqId(const OSSL_CRMF_MSG *crm); +int OSSL_CRMF_MSG_set0_extensions(OSSL_CRMF_MSG *crm, X509_EXTENSIONS *exts); + +int OSSL_CRMF_MSG_push0_extension(OSSL_CRMF_MSG *crm, X509_EXTENSION *ext); +#define OSSL_CRMF_POPO_NONE -1 +#define OSSL_CRMF_POPO_RAVERIFIED 0 +#define OSSL_CRMF_POPO_SIGNATURE 1 +#define OSSL_CRMF_POPO_KEYENC 2 +#define OSSL_CRMF_POPO_KEYAGREE 3 +int OSSL_CRMF_MSG_create_popo(int meth, OSSL_CRMF_MSG *crm, + EVP_PKEY *pkey, const EVP_MD *digest, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, + int rid, int acceptRAVerified, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER *OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_EXTENSIONS +*OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const X509_NAME *OSSL_CRMF_CERTID_get0_issuer(const OSSL_CRMF_CERTID *cid); +const ASN1_INTEGER *OSSL_CRMF_CERTID_get0_serialNumber(const OSSL_CRMF_CERTID *cid); +int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, + EVP_PKEY *pubkey, + const X509_NAME *subject, + const X509_NAME *issuer, + const ASN1_INTEGER *serial); +X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); +X509 *OSSL_CRMF_ENCRYPTEDKEY_get1_encCert(const OSSL_CRMF_ENCRYPTEDKEY *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, unsigned int flags); +unsigned char *OSSL_CRMF_ENCRYPTEDVALUE_decrypt(const OSSL_CRMF_ENCRYPTEDVALUE *enc, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey, int *outlen); +EVP_PKEY *OSSL_CRMF_ENCRYPTEDKEY_get1_pkey(const OSSL_CRMF_ENCRYPTEDKEY *encryptedKey, + X509_STORE *ts, STACK_OF(X509) *extra, EVP_PKEY *pkey, + X509 *cert, ASN1_OCTET_STRING *secret, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSG_centralkeygen_requested(const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr); +#ifndef OPENSSL_NO_CMS +OSSL_CRMF_ENCRYPTEDKEY *OSSL_CRMF_ENCRYPTEDKEY_init_envdata(CMS_EnvelopedData *envdata); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_CRMF) */ +#endif /* !defined(OPENSSL_CRMF_H) */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/crypto.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/crypto.h new file mode 100644 index 00000000000000..cce93833c2cb5d --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/crypto.h @@ -0,0 +1,588 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/crypto.h.in + * + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CRYPTO_H +#define OPENSSL_CRYPTO_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CRYPTO_H +#endif + +#include +#include + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#include +#include +#include +#include +#include +#include + +#ifdef CHARSET_EBCDIC +#include +#endif + +/* + * Resolve problems on some operating systems with symbol names that clash + * one way or another + */ +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSLeay OpenSSL_version_num +#define SSLeay_version OpenSSL_version +#define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER +#define SSLEAY_VERSION OPENSSL_VERSION +#define SSLEAY_CFLAGS OPENSSL_CFLAGS +#define SSLEAY_BUILT_ON OPENSSL_BUILT_ON +#define SSLEAY_PLATFORM OPENSSL_PLATFORM +#define SSLEAY_DIR OPENSSL_DIR + +/* + * Old type for allocating dynamic locks. No longer used. Use the new thread + * API instead. + */ +typedef struct { + int dummy; +} CRYPTO_dynlock; + +#endif /* OPENSSL_NO_DEPRECATED_1_1_0 */ + +typedef void CRYPTO_RWLOCK; + +CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); +__owur int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock); +__owur int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock); +int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); +void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); + +int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_add64(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_and(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock); + +/* No longer needed, so this is a no-op */ +#define OPENSSL_malloc_init() \ + while (0) \ + continue + +#define OPENSSL_malloc(num) \ + CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_zalloc(num) \ + CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_aligned_alloc(num, alignment, freeptr) \ + CRYPTO_aligned_alloc(num, alignment, freeptr, \ + OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_realloc(addr, num) \ + CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_clear_realloc(addr, old_num, num) \ + CRYPTO_clear_realloc(addr, old_num, num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_clear_free(addr, num) \ + CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_free(addr) \ + CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_memdup(str, s) \ + CRYPTO_memdup((str), s, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_strdup(str) \ + CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_strndup(str, n) \ + CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_secure_malloc(num) \ + CRYPTO_secure_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_secure_zalloc(num) \ + CRYPTO_secure_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_secure_free(addr) \ + CRYPTO_secure_free(addr, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_secure_clear_free(addr, num) \ + CRYPTO_secure_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_secure_actual_size(ptr) \ + CRYPTO_secure_actual_size(ptr) + +size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); +size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); +size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_strtoul(const char *str, char **endptr, int base, unsigned long *num); +int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, + const unsigned char *buf, size_t buflen, + const char sep); +char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen); +int OPENSSL_hexstr2buf_ex(unsigned char *buf, size_t buf_n, size_t *buflen, + const char *str, const char sep); +unsigned char *OPENSSL_hexstr2buf(const char *str, long *buflen); +int OPENSSL_hexchar2int(unsigned char c); +int OPENSSL_strcasecmp(const char *s1, const char *s2); +int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n); + +#define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U << (sizeof(int) * 8 - 1)) - 1) / sizeof(type)) + +/* + * These functions return the values of OPENSSL_VERSION_MAJOR, + * OPENSSL_VERSION_MINOR, OPENSSL_VERSION_PATCH, OPENSSL_VERSION_PRE_RELEASE + * and OPENSSL_VERSION_BUILD_METADATA, respectively. + */ +unsigned int OPENSSL_version_major(void); +unsigned int OPENSSL_version_minor(void); +unsigned int OPENSSL_version_patch(void); +const char *OPENSSL_version_pre_release(void); +const char *OPENSSL_version_build_metadata(void); + +unsigned long OpenSSL_version_num(void); +const char *OpenSSL_version(int type); +#define OPENSSL_VERSION 0 +#define OPENSSL_CFLAGS 1 +#define OPENSSL_BUILT_ON 2 +#define OPENSSL_PLATFORM 3 +#define OPENSSL_DIR 4 +#define OPENSSL_ENGINES_DIR 5 +#define OPENSSL_VERSION_STRING 6 +#define OPENSSL_FULL_VERSION_STRING 7 +#define OPENSSL_MODULES_DIR 8 +#define OPENSSL_CPU_INFO 9 +#define OPENSSL_WINCTX 10 + +const char *OPENSSL_info(int type); +/* + * The series starts at 1001 to avoid confusion with the OpenSSL_version + * types. + */ +#define OPENSSL_INFO_CONFIG_DIR 1001 +#define OPENSSL_INFO_ENGINES_DIR 1002 +#define OPENSSL_INFO_MODULES_DIR 1003 +#define OPENSSL_INFO_DSO_EXTENSION 1004 +#define OPENSSL_INFO_DIR_FILENAME_SEPARATOR 1005 +#define OPENSSL_INFO_LIST_SEPARATOR 1006 +#define OPENSSL_INFO_SEED_SOURCE 1007 +#define OPENSSL_INFO_CPU_SETTINGS 1008 +#define OPENSSL_INFO_WINDOWS_CONTEXT 1009 + +int OPENSSL_issetugid(void); + +struct crypto_ex_data_st { + OSSL_LIB_CTX *ctx; + STACK_OF(void) *sk; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(void, void, void) +#define sk_void_num(sk) OPENSSL_sk_num(ossl_check_const_void_sk_type(sk)) +#define sk_void_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_void_sk_type(sk), (idx))) +#define sk_void_new(cmp) ((STACK_OF(void) *)OPENSSL_sk_new(ossl_check_void_compfunc_type(cmp))) +#define sk_void_new_null() ((STACK_OF(void) *)OPENSSL_sk_new_null()) +#define sk_void_new_reserve(cmp, n) ((STACK_OF(void) *)OPENSSL_sk_new_reserve(ossl_check_void_compfunc_type(cmp), (n))) +#define sk_void_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_void_sk_type(sk), (n)) +#define sk_void_free(sk) OPENSSL_sk_free(ossl_check_void_sk_type(sk)) +#define sk_void_zero(sk) OPENSSL_sk_zero(ossl_check_void_sk_type(sk)) +#define sk_void_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_void_sk_type(sk), (i))) +#define sk_void_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))) +#define sk_void_push(sk, ptr) OPENSSL_sk_push(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_void_sk_type(sk))) +#define sk_void_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_void_sk_type(sk))) +#define sk_void_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_void_sk_type(sk),ossl_check_void_freefunc_type(freefunc)) +#define sk_void_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), (idx)) +#define sk_void_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_void_sk_type(sk), (idx), ossl_check_void_type(ptr))) +#define sk_void_find(sk, ptr) OPENSSL_sk_find(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), pnum) +#define sk_void_sort(sk) OPENSSL_sk_sort(ossl_check_void_sk_type(sk)) +#define sk_void_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_void_sk_type(sk)) +#define sk_void_dup(sk) ((STACK_OF(void) *)OPENSSL_sk_dup(ossl_check_const_void_sk_type(sk))) +#define sk_void_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(void) *)OPENSSL_sk_deep_copy(ossl_check_const_void_sk_type(sk), ossl_check_void_copyfunc_type(copyfunc), ossl_check_void_freefunc_type(freefunc))) +#define sk_void_set_cmp_func(sk, cmp) ((sk_void_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_void_sk_type(sk), ossl_check_void_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * Per class, we have a STACK of function pointers. + */ +#define CRYPTO_EX_INDEX_SSL 0 +#define CRYPTO_EX_INDEX_SSL_CTX 1 +#define CRYPTO_EX_INDEX_SSL_SESSION 2 +#define CRYPTO_EX_INDEX_X509 3 +#define CRYPTO_EX_INDEX_X509_STORE 4 +#define CRYPTO_EX_INDEX_X509_STORE_CTX 5 +#define CRYPTO_EX_INDEX_DH 6 +#define CRYPTO_EX_INDEX_DSA 7 +#define CRYPTO_EX_INDEX_EC_KEY 8 +#define CRYPTO_EX_INDEX_RSA 9 +#define CRYPTO_EX_INDEX_ENGINE 10 +#define CRYPTO_EX_INDEX_UI 11 +#define CRYPTO_EX_INDEX_BIO 12 +#define CRYPTO_EX_INDEX_APP 13 +#define CRYPTO_EX_INDEX_UI_METHOD 14 +#define CRYPTO_EX_INDEX_RAND_DRBG 15 +#define CRYPTO_EX_INDEX_DRBG CRYPTO_EX_INDEX_RAND_DRBG +#define CRYPTO_EX_INDEX_OSSL_LIB_CTX 16 +#define CRYPTO_EX_INDEX_EVP_PKEY 17 +#define CRYPTO_EX_INDEX__COUNT 18 + +typedef void CRYPTO_EX_new(void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef void CRYPTO_EX_free(void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef int CRYPTO_EX_dup(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void **from_d, int idx, long argl, void *argp); +__owur int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, + CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); +/* No longer use an index. */ +int CRYPTO_free_ex_index(int class_index, int idx); + +/* + * Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a + * given class (invokes whatever per-class callbacks are applicable) + */ +int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); +int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, + const CRYPTO_EX_DATA *from); + +void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); + +/* Allocate a single item in the CRYPTO_EX_DATA variable */ +int CRYPTO_alloc_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad, + int idx); + +/* + * Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular + * index (relative to the class type involved) + */ +int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val); +void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* + * This function cleans up all "ex_data" state. It mustn't be called under + * potential race-conditions. + */ +#define CRYPTO_cleanup_all_ex_data() \ + while (0) \ + continue + +/* + * The old locking functions have been removed completely without compatibility + * macros. This is because the old functions either could not properly report + * errors, or the returned error values were not clearly documented. + * Replacing the locking functions with no-ops would cause race condition + * issues in the affected applications. It is far better for them to fail at + * compile time. + * On the other hand, the locking callbacks are no longer used. Consequently, + * the callback management functions can be safely replaced with no-op macros. + */ +#define CRYPTO_num_locks() (1) +#define CRYPTO_set_locking_callback(func) +#define CRYPTO_get_locking_callback() (NULL) +#define CRYPTO_set_add_lock_callback(func) +#define CRYPTO_get_add_lock_callback() (NULL) + +/* + * These defines where used in combination with the old locking callbacks, + * they are not called anymore, but old code that's not called might still + * use them. + */ +#define CRYPTO_LOCK 1 +#define CRYPTO_UNLOCK 2 +#define CRYPTO_READ 4 +#define CRYPTO_WRITE 8 + +/* This structure is no longer used */ +typedef struct crypto_threadid_st { + int dummy; +} CRYPTO_THREADID; +/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */ +#define CRYPTO_THREADID_set_numeric(id, val) +#define CRYPTO_THREADID_set_pointer(id, ptr) +#define CRYPTO_THREADID_set_callback(threadid_func) (0) +#define CRYPTO_THREADID_get_callback() (NULL) +#define CRYPTO_THREADID_current(id) +#define CRYPTO_THREADID_cmp(a, b) (-1) +#define CRYPTO_THREADID_cpy(dest, src) +#define CRYPTO_THREADID_hash(id) (0UL) + +#ifndef OPENSSL_NO_DEPRECATED_1_0_0 +#define CRYPTO_set_id_callback(func) +#define CRYPTO_get_id_callback() (NULL) +#define CRYPTO_thread_id() (0UL) +#endif /* OPENSSL_NO_DEPRECATED_1_0_0 */ + +#define CRYPTO_set_dynlock_create_callback(dyn_create_function) +#define CRYPTO_set_dynlock_lock_callback(dyn_lock_function) +#define CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function) +#define CRYPTO_get_dynlock_create_callback() (NULL) +#define CRYPTO_get_dynlock_lock_callback() (NULL) +#define CRYPTO_get_dynlock_destroy_callback() (NULL) +#endif /* OPENSSL_NO_DEPRECATED_1_1_0 */ + +typedef void *(*CRYPTO_malloc_fn)(size_t num, const char *file, int line); +typedef void *(*CRYPTO_realloc_fn)(void *addr, size_t num, const char *file, + int line); +typedef void (*CRYPTO_free_fn)(void *addr, const char *file, int line); +int CRYPTO_set_mem_functions(CRYPTO_malloc_fn malloc_fn, + CRYPTO_realloc_fn realloc_fn, + CRYPTO_free_fn free_fn); +void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, + CRYPTO_realloc_fn *realloc_fn, + CRYPTO_free_fn *free_fn); + +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_aligned_alloc(size_t num, size_t align, + void **freeptr, const char *file, + int line); +void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +char *CRYPTO_strdup(const char *str, const char *file, int line); +char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +void CRYPTO_free(void *ptr, const char *file, int line); +void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); +void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); +void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, + const char *file, int line); + +int CRYPTO_secure_malloc_init(size_t sz, size_t minsize); +int CRYPTO_secure_malloc_done(void); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +void CRYPTO_secure_free(void *ptr, const char *file, int line); +void CRYPTO_secure_clear_free(void *ptr, size_t num, + const char *file, int line); +int CRYPTO_secure_allocated(const void *ptr); +int CRYPTO_secure_malloc_initialized(void); +size_t CRYPTO_secure_actual_size(void *ptr); +size_t CRYPTO_secure_used(void); + +void OPENSSL_cleanse(void *ptr, size_t len); + +#ifndef OPENSSL_NO_CRYPTO_MDEBUG +/* + * The following can be used to detect memory leaks in the library. If + * used, it turns on malloc checking + */ +#define CRYPTO_MEM_CHECK_OFF 0x0 /* Control only */ +#define CRYPTO_MEM_CHECK_ON 0x1 /* Control and mode bit */ +#define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ +#define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ + +/* max allowed length for value of OPENSSL_MALLOC_FAILURES env var. */ +#define CRYPTO_MEM_CHECK_MAX_FS 256 + +void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define OPENSSL_mem_debug_push(info) \ + CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE) +#define OPENSSL_mem_debug_pop() \ + CRYPTO_mem_debug_pop() +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int CRYPTO_set_mem_debug(int flag); +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_ctrl(int mode); +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_push(const char *info, + const char *file, int line); +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_pop(void); +OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_malloc(void *addr, size_t num, + int flag, + const char *file, int line); +OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, + size_t num, int flag, + const char *file, int line); +OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_free(void *addr, int flag, + const char *file, int line); +OSSL_DEPRECATEDIN_3_0 +int CRYPTO_mem_leaks_cb(int (*cb)(const char *str, size_t len, void *u), + void *u); +#endif +#ifndef OPENSSL_NO_STDIO +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks_fp(FILE *); +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks(BIO *bio); +#endif +#endif /* OPENSSL_NO_CRYPTO_MDEBUG */ + +/* die if we have to */ +ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OpenSSLDie(f, l, a) OPENSSL_die((a), (f), (l)) +#endif +#define OPENSSL_assert(e) \ + (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1)) + +int OPENSSL_isservice(void); + +void OPENSSL_init(void); +#ifdef OPENSSL_SYS_UNIX +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_prepare(void); +OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_parent(void); +OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_child(void); +#endif +#endif + +struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result); +int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec); +int OPENSSL_gmtime_diff(int *pday, int *psec, + const struct tm *from, const struct tm *to); + +/* + * CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal. + * It takes an amount of time dependent on |len|, but independent of the + * contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements + * into a defined order as the return value when a != b is undefined, other + * than to be non-zero. + */ +int CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len); + +/* Standard initialisation options */ +#define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L +#define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L +#define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L +#define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L +#define OPENSSL_INIT_NO_ADD_ALL_CIPHERS 0x00000010L +#define OPENSSL_INIT_NO_ADD_ALL_DIGESTS 0x00000020L +#define OPENSSL_INIT_LOAD_CONFIG 0x00000040L +#define OPENSSL_INIT_NO_LOAD_CONFIG 0x00000080L +#define OPENSSL_INIT_ASYNC 0x00000100L +#define OPENSSL_INIT_ENGINE_RDRAND 0x00000200L +#define OPENSSL_INIT_ENGINE_DYNAMIC 0x00000400L +#define OPENSSL_INIT_ENGINE_OPENSSL 0x00000800L +#define OPENSSL_INIT_ENGINE_CRYPTODEV 0x00001000L +#define OPENSSL_INIT_ENGINE_CAPI 0x00002000L +#define OPENSSL_INIT_ENGINE_PADLOCK 0x00004000L +#define OPENSSL_INIT_ENGINE_AFALG 0x00008000L +/* FREE: 0x00010000L */ +#define OPENSSL_INIT_ATFORK 0x00020000L +/* OPENSSL_INIT_BASE_ONLY 0x00040000L */ +#define OPENSSL_INIT_NO_ATEXIT 0x00080000L +/* OPENSSL_INIT flag range 0x03f00000 reserved for OPENSSL_init_ssl() */ +/* FREE: 0x04000000L */ +/* FREE: 0x08000000L */ +/* FREE: 0x10000000L */ +/* FREE: 0x20000000L */ +/* FREE: 0x40000000L */ +/* FREE: 0x80000000L */ +/* Max OPENSSL_INIT flag value is 0x80000000 */ + +/* openssl and dasync not counted as builtin */ +#define OPENSSL_INIT_ENGINE_ALL_BUILTIN \ + (OPENSSL_INIT_ENGINE_RDRAND | OPENSSL_INIT_ENGINE_DYNAMIC \ + | OPENSSL_INIT_ENGINE_CRYPTODEV | OPENSSL_INIT_ENGINE_CAPI | OPENSSL_INIT_ENGINE_PADLOCK) + +/* Library initialisation functions */ +void OPENSSL_cleanup(void); +int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); +int OPENSSL_atexit(void (*handler)(void)); +void OPENSSL_thread_stop(void); +void OPENSSL_thread_stop_ex(OSSL_LIB_CTX *ctx); + +/* Low-level control of initialization */ +OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void); +#ifndef OPENSSL_NO_STDIO +int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings, + const char *config_filename); +void OPENSSL_INIT_set_config_file_flags(OPENSSL_INIT_SETTINGS *settings, + unsigned long flags); +int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings, + const char *config_appname); +#endif +void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings); + +#if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG) +#if defined(_WIN32) +#if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include in order to use this */ +typedef DWORD CRYPTO_THREAD_LOCAL; +typedef DWORD CRYPTO_THREAD_ID; + +typedef LONG CRYPTO_ONCE; +#define CRYPTO_ONCE_STATIC_INIT 0 +#endif +#else +#if defined(__TANDEM) && defined(_SPT_MODEL_) +#define SPT_THREAD_SIGNAL 1 +#define SPT_THREAD_AWARE 1 +#include +#else +#include +#endif +typedef pthread_once_t CRYPTO_ONCE; +typedef pthread_key_t CRYPTO_THREAD_LOCAL; +typedef pthread_t CRYPTO_THREAD_ID; + +#define CRYPTO_ONCE_STATIC_INIT PTHREAD_ONCE_INIT +#endif +#endif + +#if !defined(CRYPTO_ONCE_STATIC_INIT) +typedef unsigned int CRYPTO_ONCE; +typedef unsigned int CRYPTO_THREAD_LOCAL; +typedef unsigned int CRYPTO_THREAD_ID; +#define CRYPTO_ONCE_STATIC_INIT 0 +#endif + +int CRYPTO_THREAD_run_once(CRYPTO_ONCE *once, void (*init)(void)); + +int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *)); +void *CRYPTO_THREAD_get_local(CRYPTO_THREAD_LOCAL *key); +int CRYPTO_THREAD_set_local(CRYPTO_THREAD_LOCAL *key, void *val); +int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key); + +CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void); +int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b); + +OSSL_LIB_CTX *OSSL_LIB_CTX_new(void); +OSSL_LIB_CTX *OSSL_LIB_CTX_new_from_dispatch(const OSSL_CORE_HANDLE *handle, + const OSSL_DISPATCH *in); +OSSL_LIB_CTX *OSSL_LIB_CTX_new_child(const OSSL_CORE_HANDLE *handle, + const OSSL_DISPATCH *in); +int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); +void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); +OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); +OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +int OSSL_LIB_CTX_get_conf_diagnostics(OSSL_LIB_CTX *ctx); +void OSSL_LIB_CTX_set_conf_diagnostics(OSSL_LIB_CTX *ctx, int value); + +void OSSL_sleep(uint64_t millis); + +void *OSSL_LIB_CTX_get_data(OSSL_LIB_CTX *ctx, int index); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ct.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ct.h new file mode 100644 index 00000000000000..0b60803f98cad9 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ct.h @@ -0,0 +1,574 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/ct.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_CT_H +#define OPENSSL_CT_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_CT_H +#endif + +#include + +#ifndef OPENSSL_NO_CT +#include +#include +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + +/* Minimum RSA key size, from RFC6962 */ +#define SCT_MIN_RSA_BITS 2048 + +/* All hashes are SHA256 in v1 of Certificate Transparency */ +#define CT_V1_HASHLEN SHA256_DIGEST_LENGTH + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SCT, SCT, SCT) +#define sk_SCT_num(sk) OPENSSL_sk_num(ossl_check_const_SCT_sk_type(sk)) +#define sk_SCT_value(sk, idx) ((SCT *)OPENSSL_sk_value(ossl_check_const_SCT_sk_type(sk), (idx))) +#define sk_SCT_new(cmp) ((STACK_OF(SCT) *)OPENSSL_sk_new(ossl_check_SCT_compfunc_type(cmp))) +#define sk_SCT_new_null() ((STACK_OF(SCT) *)OPENSSL_sk_new_null()) +#define sk_SCT_new_reserve(cmp, n) ((STACK_OF(SCT) *)OPENSSL_sk_new_reserve(ossl_check_SCT_compfunc_type(cmp), (n))) +#define sk_SCT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SCT_sk_type(sk), (n)) +#define sk_SCT_free(sk) OPENSSL_sk_free(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_zero(sk) OPENSSL_sk_zero(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_delete(sk, i) ((SCT *)OPENSSL_sk_delete(ossl_check_SCT_sk_type(sk), (i))) +#define sk_SCT_delete_ptr(sk, ptr) ((SCT *)OPENSSL_sk_delete_ptr(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr))) +#define sk_SCT_push(sk, ptr) OPENSSL_sk_push(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_pop(sk) ((SCT *)OPENSSL_sk_pop(ossl_check_SCT_sk_type(sk))) +#define sk_SCT_shift(sk) ((SCT *)OPENSSL_sk_shift(ossl_check_SCT_sk_type(sk))) +#define sk_SCT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SCT_sk_type(sk),ossl_check_SCT_freefunc_type(freefunc)) +#define sk_SCT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), (idx)) +#define sk_SCT_set(sk, idx, ptr) ((SCT *)OPENSSL_sk_set(ossl_check_SCT_sk_type(sk), (idx), ossl_check_SCT_type(ptr))) +#define sk_SCT_find(sk, ptr) OPENSSL_sk_find(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), pnum) +#define sk_SCT_sort(sk) OPENSSL_sk_sort(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SCT_sk_type(sk)) +#define sk_SCT_dup(sk) ((STACK_OF(SCT) *)OPENSSL_sk_dup(ossl_check_const_SCT_sk_type(sk))) +#define sk_SCT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SCT) *)OPENSSL_sk_deep_copy(ossl_check_const_SCT_sk_type(sk), ossl_check_SCT_copyfunc_type(copyfunc), ossl_check_SCT_freefunc_type(freefunc))) +#define sk_SCT_set_cmp_func(sk, cmp) ((sk_SCT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SCT_sk_type(sk), ossl_check_SCT_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CTLOG, CTLOG, CTLOG) +#define sk_CTLOG_num(sk) OPENSSL_sk_num(ossl_check_const_CTLOG_sk_type(sk)) +#define sk_CTLOG_value(sk, idx) ((CTLOG *)OPENSSL_sk_value(ossl_check_const_CTLOG_sk_type(sk), (idx))) +#define sk_CTLOG_new(cmp) ((STACK_OF(CTLOG) *)OPENSSL_sk_new(ossl_check_CTLOG_compfunc_type(cmp))) +#define sk_CTLOG_new_null() ((STACK_OF(CTLOG) *)OPENSSL_sk_new_null()) +#define sk_CTLOG_new_reserve(cmp, n) ((STACK_OF(CTLOG) *)OPENSSL_sk_new_reserve(ossl_check_CTLOG_compfunc_type(cmp), (n))) +#define sk_CTLOG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CTLOG_sk_type(sk), (n)) +#define sk_CTLOG_free(sk) OPENSSL_sk_free(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_zero(sk) OPENSSL_sk_zero(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_delete(sk, i) ((CTLOG *)OPENSSL_sk_delete(ossl_check_CTLOG_sk_type(sk), (i))) +#define sk_CTLOG_delete_ptr(sk, ptr) ((CTLOG *)OPENSSL_sk_delete_ptr(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr))) +#define sk_CTLOG_push(sk, ptr) OPENSSL_sk_push(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_pop(sk) ((CTLOG *)OPENSSL_sk_pop(ossl_check_CTLOG_sk_type(sk))) +#define sk_CTLOG_shift(sk) ((CTLOG *)OPENSSL_sk_shift(ossl_check_CTLOG_sk_type(sk))) +#define sk_CTLOG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CTLOG_sk_type(sk),ossl_check_CTLOG_freefunc_type(freefunc)) +#define sk_CTLOG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), (idx)) +#define sk_CTLOG_set(sk, idx, ptr) ((CTLOG *)OPENSSL_sk_set(ossl_check_CTLOG_sk_type(sk), (idx), ossl_check_CTLOG_type(ptr))) +#define sk_CTLOG_find(sk, ptr) OPENSSL_sk_find(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), pnum) +#define sk_CTLOG_sort(sk) OPENSSL_sk_sort(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CTLOG_sk_type(sk)) +#define sk_CTLOG_dup(sk) ((STACK_OF(CTLOG) *)OPENSSL_sk_dup(ossl_check_const_CTLOG_sk_type(sk))) +#define sk_CTLOG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CTLOG) *)OPENSSL_sk_deep_copy(ossl_check_const_CTLOG_sk_type(sk), ossl_check_CTLOG_copyfunc_type(copyfunc), ossl_check_CTLOG_freefunc_type(freefunc))) +#define sk_CTLOG_set_cmp_func(sk, cmp) ((sk_CTLOG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_compfunc_type(cmp))) + +/* clang-format on */ + +typedef enum { + CT_LOG_ENTRY_TYPE_NOT_SET = -1, + CT_LOG_ENTRY_TYPE_X509 = 0, + CT_LOG_ENTRY_TYPE_PRECERT = 1 +} ct_log_entry_type_t; + +typedef enum { + SCT_VERSION_NOT_SET = -1, + SCT_VERSION_V1 = 0 +} sct_version_t; + +typedef enum { + SCT_SOURCE_UNKNOWN, + SCT_SOURCE_TLS_EXTENSION, + SCT_SOURCE_X509V3_EXTENSION, + SCT_SOURCE_OCSP_STAPLED_RESPONSE +} sct_source_t; + +typedef enum { + SCT_VALIDATION_STATUS_NOT_SET, + SCT_VALIDATION_STATUS_UNKNOWN_LOG, + SCT_VALIDATION_STATUS_VALID, + SCT_VALIDATION_STATUS_INVALID, + SCT_VALIDATION_STATUS_UNVERIFIED, + SCT_VALIDATION_STATUS_UNKNOWN_VERSION +} sct_validation_status_t; + +/****************************************** + * CT policy evaluation context functions * + ******************************************/ + +/* + * Creates a new, empty policy evaluation context associated with the given + * library context and property query string. + * The caller is responsible for calling CT_POLICY_EVAL_CTX_free when finished + * with the CT_POLICY_EVAL_CTX. + */ +CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, + const char *propq); + +/* + * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library + * context and property query string is used. + */ +CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new(void); + +/* Deletes a policy evaluation context and anything it owns. */ +void CT_POLICY_EVAL_CTX_free(CT_POLICY_EVAL_CTX *ctx); + +/* Gets the peer certificate that the SCTs are for */ +X509 *CT_POLICY_EVAL_CTX_get0_cert(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the certificate associated with the received SCTs. + * Increments the reference count of cert. + * Returns 1 on success, 0 otherwise. + */ +int CT_POLICY_EVAL_CTX_set1_cert(CT_POLICY_EVAL_CTX *ctx, X509 *cert); + +/* Gets the issuer of the aforementioned certificate */ +X509 *CT_POLICY_EVAL_CTX_get0_issuer(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the issuer of the certificate associated with the received SCTs. + * Increments the reference count of issuer. + * Returns 1 on success, 0 otherwise. + */ +int CT_POLICY_EVAL_CTX_set1_issuer(CT_POLICY_EVAL_CTX *ctx, X509 *issuer); + +/* Gets the CT logs that are trusted sources of SCTs */ +const CTLOG_STORE *CT_POLICY_EVAL_CTX_get0_log_store(const CT_POLICY_EVAL_CTX *ctx); + +/* Sets the log store that is in use. It must outlive the CT_POLICY_EVAL_CTX. */ +void CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE(CT_POLICY_EVAL_CTX *ctx, + CTLOG_STORE *log_store); + +/* + * Gets the time, in milliseconds since the Unix epoch, that will be used as the + * current time when checking whether an SCT was issued in the future. + * Such SCTs will fail validation, as required by RFC6962. + */ +uint64_t CT_POLICY_EVAL_CTX_get_time(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the time to evaluate SCTs against, in milliseconds since the Unix epoch. + * If an SCT's timestamp is after this time, it will be interpreted as having + * been issued in the future. RFC6962 states that "TLS clients MUST reject SCTs + * whose timestamp is in the future", so an SCT will not validate in this case. + */ +void CT_POLICY_EVAL_CTX_set_time(CT_POLICY_EVAL_CTX *ctx, uint64_t time_in_ms); + +/***************** + * SCT functions * + *****************/ + +/* + * Creates a new, blank SCT. + * The caller is responsible for calling SCT_free when finished with the SCT. + */ +SCT *SCT_new(void); + +/* + * Creates a new SCT from some base64-encoded strings. + * The caller is responsible for calling SCT_free when finished with the SCT. + */ +SCT *SCT_new_from_base64(unsigned char version, + const char *logid_base64, + ct_log_entry_type_t entry_type, + uint64_t timestamp, + const char *extensions_base64, + const char *signature_base64); + +/* + * Frees the SCT and the underlying data structures. + */ +void SCT_free(SCT *sct); + +/* + * Free a stack of SCTs, and the underlying SCTs themselves. + * Intended to be compatible with X509V3_EXT_FREE. + */ +void SCT_LIST_free(STACK_OF(SCT) *a); + +/* + * Returns the version of the SCT. + */ +sct_version_t SCT_get_version(const SCT *sct); + +/* + * Set the version of an SCT. + * Returns 1 on success, 0 if the version is unrecognized. + */ +__owur int SCT_set_version(SCT *sct, sct_version_t version); + +/* + * Returns the log entry type of the SCT. + */ +ct_log_entry_type_t SCT_get_log_entry_type(const SCT *sct); + +/* + * Set the log entry type of an SCT. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_log_entry_type(SCT *sct, ct_log_entry_type_t entry_type); + +/* + * Gets the ID of the log that an SCT came from. + * Ownership of the log ID remains with the SCT. + * Returns the length of the log ID. + */ +size_t SCT_get0_log_id(const SCT *sct, unsigned char **log_id); + +/* + * Set the log ID of an SCT to point directly to the *log_id specified. + * The SCT takes ownership of the specified pointer. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set0_log_id(SCT *sct, unsigned char *log_id, size_t log_id_len); + +/* + * Set the log ID of an SCT. + * This makes a copy of the log_id. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_log_id(SCT *sct, const unsigned char *log_id, + size_t log_id_len); + +/* + * Returns the timestamp for the SCT (epoch time in milliseconds). + */ +uint64_t SCT_get_timestamp(const SCT *sct); + +/* + * Set the timestamp of an SCT (epoch time in milliseconds). + */ +void SCT_set_timestamp(SCT *sct, uint64_t timestamp); + +/* + * Return the NID for the signature used by the SCT. + * For CT v1, this will be either NID_sha256WithRSAEncryption or + * NID_ecdsa_with_SHA256 (or NID_undef if incorrect/unset). + */ +int SCT_get_signature_nid(const SCT *sct); + +/* + * Set the signature type of an SCT + * For CT v1, this should be either NID_sha256WithRSAEncryption or + * NID_ecdsa_with_SHA256. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_signature_nid(SCT *sct, int nid); + +/* + * Set *ext to point to the extension data for the SCT. ext must not be NULL. + * The SCT retains ownership of this pointer. + * Returns length of the data pointed to. + */ +size_t SCT_get0_extensions(const SCT *sct, unsigned char **ext); + +/* + * Set the extensions of an SCT to point directly to the *ext specified. + * The SCT takes ownership of the specified pointer. + */ +void SCT_set0_extensions(SCT *sct, unsigned char *ext, size_t ext_len); + +/* + * Set the extensions of an SCT. + * This takes a copy of the ext. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_extensions(SCT *sct, const unsigned char *ext, + size_t ext_len); + +/* + * Set *sig to point to the signature for the SCT. sig must not be NULL. + * The SCT retains ownership of this pointer. + * Returns length of the data pointed to. + */ +size_t SCT_get0_signature(const SCT *sct, unsigned char **sig); + +/* + * Set the signature of an SCT to point directly to the *sig specified. + * The SCT takes ownership of the specified pointer. + */ +void SCT_set0_signature(SCT *sct, unsigned char *sig, size_t sig_len); + +/* + * Set the signature of an SCT to be a copy of the *sig specified. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_signature(SCT *sct, const unsigned char *sig, + size_t sig_len); + +/* + * The origin of this SCT, e.g. TLS extension, OCSP response, etc. + */ +sct_source_t SCT_get_source(const SCT *sct); + +/* + * Set the origin of this SCT, e.g. TLS extension, OCSP response, etc. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_source(SCT *sct, sct_source_t source); + +/* + * Returns a text string describing the validation status of |sct|. + */ +const char *SCT_validation_status_string(const SCT *sct); + +/* + * Pretty-prints an |sct| to |out|. + * It will be indented by the number of spaces specified by |indent|. + * If |logs| is not NULL, it will be used to lookup the CT log that the SCT came + * from, so that the log name can be printed. + */ +void SCT_print(const SCT *sct, BIO *out, int indent, const CTLOG_STORE *logs); + +/* + * Pretty-prints an |sct_list| to |out|. + * It will be indented by the number of spaces specified by |indent|. + * SCTs will be delimited by |separator|. + * If |logs| is not NULL, it will be used to lookup the CT log that each SCT + * came from, so that the log names can be printed. + */ +void SCT_LIST_print(const STACK_OF(SCT) *sct_list, BIO *out, int indent, + const char *separator, const CTLOG_STORE *logs); + +/* + * Gets the last result of validating this SCT. + * If it has not been validated yet, returns SCT_VALIDATION_STATUS_NOT_SET. + */ +sct_validation_status_t SCT_get_validation_status(const SCT *sct); + +/* + * Validates the given SCT with the provided context. + * Sets the "validation_status" field of the SCT. + * Returns 1 if the SCT is valid and the signature verifies. + * Returns 0 if the SCT is invalid or could not be verified. + * Returns -1 if an error occurs. + */ +__owur int SCT_validate(SCT *sct, const CT_POLICY_EVAL_CTX *ctx); + +/* + * Validates the given list of SCTs with the provided context. + * Sets the "validation_status" field of each SCT. + * Returns 1 if there are no invalid SCTs and all signatures verify. + * Returns 0 if at least one SCT is invalid or could not be verified. + * Returns a negative integer if an error occurs. + */ +__owur int SCT_LIST_validate(const STACK_OF(SCT) *scts, + CT_POLICY_EVAL_CTX *ctx); + +/********************************* + * SCT parsing and serialization * + *********************************/ + +/* + * Serialize (to TLS format) a stack of SCTs and return the length. + * "a" must not be NULL. + * If "pp" is NULL, just return the length of what would have been serialized. + * If "pp" is not NULL and "*pp" is null, function will allocate a new pointer + * for data that caller is responsible for freeing (only if function returns + * successfully). + * If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring + * that "*pp" is large enough to accept all of the serialized data. + * Returns < 0 on error, >= 0 indicating bytes written (or would have been) + * on success. + */ +__owur int i2o_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp); + +/* + * Convert TLS format SCT list to a stack of SCTs. + * If "a" or "*a" is NULL, a new stack will be created that the caller is + * responsible for freeing (by calling SCT_LIST_free). + * "**pp" and "*pp" must not be NULL. + * Upon success, "*pp" will point to after the last bytes read, and a stack + * will be returned. + * Upon failure, a NULL pointer will be returned, and the position of "*pp" is + * not defined. + */ +STACK_OF(SCT) *o2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp, + size_t len); + +/* + * Serialize (to DER format) a stack of SCTs and return the length. + * "a" must not be NULL. + * If "pp" is NULL, just returns the length of what would have been serialized. + * If "pp" is not NULL and "*pp" is null, function will allocate a new pointer + * for data that caller is responsible for freeing (only if function returns + * successfully). + * If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring + * that "*pp" is large enough to accept all of the serialized data. + * Returns < 0 on error, >= 0 indicating bytes written (or would have been) + * on success. + */ +__owur int i2d_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp); + +/* + * Parses an SCT list in DER format and returns it. + * If "a" or "*a" is NULL, a new stack will be created that the caller is + * responsible for freeing (by calling SCT_LIST_free). + * "**pp" and "*pp" must not be NULL. + * Upon success, "*pp" will point to after the last bytes read, and a stack + * will be returned. + * Upon failure, a NULL pointer will be returned, and the position of "*pp" is + * not defined. + */ +STACK_OF(SCT) *d2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp, + long len); + +/* + * Serialize (to TLS format) an |sct| and write it to |out|. + * If |out| is null, no SCT will be output but the length will still be returned. + * If |out| points to a null pointer, a string will be allocated to hold the + * TLS-format SCT. It is the responsibility of the caller to free it. + * If |out| points to an allocated string, the TLS-format SCT will be written + * to it. + * The length of the SCT in TLS format will be returned. + */ +__owur int i2o_SCT(const SCT *sct, unsigned char **out); + +/* + * Parses an SCT in TLS format and returns it. + * If |psct| is not null, it will end up pointing to the parsed SCT. If it + * already points to a non-null pointer, the pointer will be free'd. + * |in| should be a pointer to a string containing the TLS-format SCT. + * |in| will be advanced to the end of the SCT if parsing succeeds. + * |len| should be the length of the SCT in |in|. + * Returns NULL if an error occurs. + * If the SCT is an unsupported version, only the SCT's 'sct' and 'sct_len' + * fields will be populated (with |in| and |len| respectively). + */ +SCT *o2i_SCT(SCT **psct, const unsigned char **in, size_t len); + +/******************** + * CT log functions * + ********************/ + +/* + * Creates a new CT log instance with the given |public_key| and |name| and + * associates it with the give library context |libctx| and property query + * string |propq|. + * Takes ownership of |public_key| but copies |name|. + * Returns NULL if malloc fails or if |public_key| cannot be converted to DER. + * Should be deleted by the caller using CTLOG_free when no longer needed. + */ +CTLOG *CTLOG_new_ex(EVP_PKEY *public_key, const char *name, OSSL_LIB_CTX *libctx, + const char *propq); + +/* + * The same as CTLOG_new_ex except that the default library context and + * property query string are used. + */ +CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name); + +/* + * Creates a new CTLOG instance with the base64-encoded SubjectPublicKeyInfo DER + * in |pkey_base64| and associated with the given library context |libctx| and + * property query string |propq|. The |name| is a string to help users identify + * this log. + * Returns 1 on success, 0 on failure. + * Should be deleted by the caller using CTLOG_free when no longer needed. + */ +int CTLOG_new_from_base64_ex(CTLOG **ct_log, const char *pkey_base64, + const char *name, OSSL_LIB_CTX *libctx, + const char *propq); + +/* + * The same as CTLOG_new_from_base64_ex() except that the default + * library context and property query string are used. + * Returns 1 on success, 0 on failure. + */ +int CTLOG_new_from_base64(CTLOG **ct_log, + const char *pkey_base64, const char *name); + +/* + * Deletes a CT log instance and its fields. + */ +void CTLOG_free(CTLOG *log); + +/* Gets the name of the CT log */ +const char *CTLOG_get0_name(const CTLOG *log); +/* Gets the ID of the CT log */ +void CTLOG_get0_log_id(const CTLOG *log, const uint8_t **log_id, + size_t *log_id_len); +/* Gets the public key of the CT log */ +EVP_PKEY *CTLOG_get0_public_key(const CTLOG *log); + +/************************** + * CT log store functions * + **************************/ + +/* + * Creates a new CT log store and associates it with the given libctx and + * property query string. + * Should be deleted by the caller using CTLOG_STORE_free when no longer needed. + */ +CTLOG_STORE *CTLOG_STORE_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +/* + * Same as CTLOG_STORE_new_ex except that the default libctx and + * property query string are used. + * Should be deleted by the caller using CTLOG_STORE_free when no longer needed. + */ +CTLOG_STORE *CTLOG_STORE_new(void); + +/* + * Deletes a CT log store and all of the CT log instances held within. + */ +void CTLOG_STORE_free(CTLOG_STORE *store); + +/* + * Finds a CT log in the store based on its log ID. + * Returns the CT log, or NULL if no match is found. + */ +const CTLOG *CTLOG_STORE_get0_log_by_id(const CTLOG_STORE *store, + const uint8_t *log_id, + size_t log_id_len); + +/* + * Loads a CT log list into a |store| from a |file|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_file(CTLOG_STORE *store, const char *file); + +/* + * Loads the default CT log list into a |store|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_default_file(CTLOG_STORE *store); + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/err.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/err.h new file mode 100644 index 00000000000000..a15ac6ac1f7856 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/err.h @@ -0,0 +1,517 @@ +/* + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ERR_H +#define OPENSSL_ERR_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_ERR_H +#endif + +#include + +#ifndef OPENSSL_NO_STDIO +#include +#include +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_FILENAMES +#define ERR_PUT_error(l, f, r, fn, ln) ERR_put_error(l, f, r, fn, ln) +#else +#define ERR_PUT_error(l, f, r, fn, ln) ERR_put_error(l, f, r, NULL, 0) +#endif +#endif + +#include +#include + +#define ERR_TXT_MALLOCED 0x01 +#define ERR_TXT_STRING 0x02 + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) || defined(OSSL_FORCE_ERR_STATE) +#define ERR_FLAG_MARK 0x01 +#define ERR_FLAG_CLEAR 0x02 + +#define ERR_NUM_ERRORS 16 +struct err_state_st { + int err_flags[ERR_NUM_ERRORS]; + int err_marks[ERR_NUM_ERRORS]; + unsigned long err_buffer[ERR_NUM_ERRORS]; + char *err_data[ERR_NUM_ERRORS]; + size_t err_data_size[ERR_NUM_ERRORS]; + int err_data_flags[ERR_NUM_ERRORS]; + char *err_file[ERR_NUM_ERRORS]; + int err_line[ERR_NUM_ERRORS]; + char *err_func[ERR_NUM_ERRORS]; + int top, bottom; +}; +#endif + +/* library */ +#define ERR_LIB_NONE 1 +#define ERR_LIB_SYS 2 +#define ERR_LIB_BN 3 +#define ERR_LIB_RSA 4 +#define ERR_LIB_DH 5 +#define ERR_LIB_EVP 6 +#define ERR_LIB_BUF 7 +#define ERR_LIB_OBJ 8 +#define ERR_LIB_PEM 9 +#define ERR_LIB_DSA 10 +#define ERR_LIB_X509 11 +/* #define ERR_LIB_METH 12 */ +#define ERR_LIB_ASN1 13 +#define ERR_LIB_CONF 14 +#define ERR_LIB_CRYPTO 15 +#define ERR_LIB_EC 16 +#define ERR_LIB_SSL 20 +/* #define ERR_LIB_SSL23 21 */ +/* #define ERR_LIB_SSL2 22 */ +/* #define ERR_LIB_SSL3 23 */ +/* #define ERR_LIB_RSAREF 30 */ +/* #define ERR_LIB_PROXY 31 */ +#define ERR_LIB_BIO 32 +#define ERR_LIB_PKCS7 33 +#define ERR_LIB_X509V3 34 +#define ERR_LIB_PKCS12 35 +#define ERR_LIB_RAND 36 +#define ERR_LIB_DSO 37 +#define ERR_LIB_ENGINE 38 +#define ERR_LIB_OCSP 39 +#define ERR_LIB_UI 40 +#define ERR_LIB_COMP 41 +#define ERR_LIB_ECDSA 42 +#define ERR_LIB_ECDH 43 +#define ERR_LIB_OSSL_STORE 44 +#define ERR_LIB_FIPS 45 +#define ERR_LIB_CMS 46 +#define ERR_LIB_TS 47 +#define ERR_LIB_HMAC 48 +/* # define ERR_LIB_JPAKE 49 */ +#define ERR_LIB_CT 50 +#define ERR_LIB_ASYNC 51 +#define ERR_LIB_KDF 52 +#define ERR_LIB_SM2 53 +#define ERR_LIB_ESS 54 +#define ERR_LIB_PROP 55 +#define ERR_LIB_CRMF 56 +#define ERR_LIB_PROV 57 +#define ERR_LIB_CMP 58 +#define ERR_LIB_OSSL_ENCODER 59 +#define ERR_LIB_OSSL_DECODER 60 +#define ERR_LIB_HTTP 61 + +#define ERR_LIB_USER 128 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define ASN1err(f, r) ERR_raise_data(ERR_LIB_ASN1, (r), NULL) +#define ASYNCerr(f, r) ERR_raise_data(ERR_LIB_ASYNC, (r), NULL) +#define BIOerr(f, r) ERR_raise_data(ERR_LIB_BIO, (r), NULL) +#define BNerr(f, r) ERR_raise_data(ERR_LIB_BN, (r), NULL) +#define BUFerr(f, r) ERR_raise_data(ERR_LIB_BUF, (r), NULL) +#define CMPerr(f, r) ERR_raise_data(ERR_LIB_CMP, (r), NULL) +#define CMSerr(f, r) ERR_raise_data(ERR_LIB_CMS, (r), NULL) +#define COMPerr(f, r) ERR_raise_data(ERR_LIB_COMP, (r), NULL) +#define CONFerr(f, r) ERR_raise_data(ERR_LIB_CONF, (r), NULL) +#define CRMFerr(f, r) ERR_raise_data(ERR_LIB_CRMF, (r), NULL) +#define CRYPTOerr(f, r) ERR_raise_data(ERR_LIB_CRYPTO, (r), NULL) +#define CTerr(f, r) ERR_raise_data(ERR_LIB_CT, (r), NULL) +#define DHerr(f, r) ERR_raise_data(ERR_LIB_DH, (r), NULL) +#define DSAerr(f, r) ERR_raise_data(ERR_LIB_DSA, (r), NULL) +#define DSOerr(f, r) ERR_raise_data(ERR_LIB_DSO, (r), NULL) +#define ECDHerr(f, r) ERR_raise_data(ERR_LIB_ECDH, (r), NULL) +#define ECDSAerr(f, r) ERR_raise_data(ERR_LIB_ECDSA, (r), NULL) +#define ECerr(f, r) ERR_raise_data(ERR_LIB_EC, (r), NULL) +#define ENGINEerr(f, r) ERR_raise_data(ERR_LIB_ENGINE, (r), NULL) +#define ESSerr(f, r) ERR_raise_data(ERR_LIB_ESS, (r), NULL) +#define EVPerr(f, r) ERR_raise_data(ERR_LIB_EVP, (r), NULL) +#define FIPSerr(f, r) ERR_raise_data(ERR_LIB_FIPS, (r), NULL) +#define HMACerr(f, r) ERR_raise_data(ERR_LIB_HMAC, (r), NULL) +#define HTTPerr(f, r) ERR_raise_data(ERR_LIB_HTTP, (r), NULL) +#define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL) +#define OBJerr(f, r) ERR_raise_data(ERR_LIB_OBJ, (r), NULL) +#define OCSPerr(f, r) ERR_raise_data(ERR_LIB_OCSP, (r), NULL) +#define OSSL_STOREerr(f, r) ERR_raise_data(ERR_LIB_OSSL_STORE, (r), NULL) +#define PEMerr(f, r) ERR_raise_data(ERR_LIB_PEM, (r), NULL) +#define PKCS12err(f, r) ERR_raise_data(ERR_LIB_PKCS12, (r), NULL) +#define PKCS7err(f, r) ERR_raise_data(ERR_LIB_PKCS7, (r), NULL) +#define PROPerr(f, r) ERR_raise_data(ERR_LIB_PROP, (r), NULL) +#define PROVerr(f, r) ERR_raise_data(ERR_LIB_PROV, (r), NULL) +#define RANDerr(f, r) ERR_raise_data(ERR_LIB_RAND, (r), NULL) +#define RSAerr(f, r) ERR_raise_data(ERR_LIB_RSA, (r), NULL) +#define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL) +#define SM2err(f, r) ERR_raise_data(ERR_LIB_SM2, (r), NULL) +#define SSLerr(f, r) ERR_raise_data(ERR_LIB_SSL, (r), NULL) +#define SYSerr(f, r) ERR_raise_data(ERR_LIB_SYS, (r), NULL) +#define TSerr(f, r) ERR_raise_data(ERR_LIB_TS, (r), NULL) +#define UIerr(f, r) ERR_raise_data(ERR_LIB_UI, (r), NULL) +#define X509V3err(f, r) ERR_raise_data(ERR_LIB_X509V3, (r), NULL) +#define X509err(f, r) ERR_raise_data(ERR_LIB_X509, (r), NULL) +#endif + +/*- + * The error code packs differently depending on if it records a system + * error or an OpenSSL error. + * + * A system error packs like this (we follow POSIX and only allow positive + * numbers that fit in an |int|): + * + * +-+-------------------------------------------------------------+ + * |1| system error number | + * +-+-------------------------------------------------------------+ + * + * An OpenSSL error packs like this: + * + * <---------------------------- 32 bits --------------------------> + * <--- 8 bits ---><------------------ 23 bits -----------------> + * +-+---------------+---------------------------------------------+ + * |0| library | reason | + * +-+---------------+---------------------------------------------+ + * + * A few of the reason bits are reserved as flags with special meaning: + * + * <5 bits-<>--------- 19 bits -----------------> + * +-------+-+-----------------------------------+ + * | rflags| | reason | + * +-------+-+-----------------------------------+ + * ^ + * | + * ERR_RFLAG_FATAL = ERR_R_FATAL + * + * The reason flags are part of the overall reason code for practical + * reasons, as they provide an easy way to place different types of + * reason codes in different numeric ranges. + * + * The currently known reason flags are: + * + * ERR_RFLAG_FATAL Flags that the reason code is considered fatal. + * For backward compatibility reasons, this flag + * is also the code for ERR_R_FATAL (that reason + * code served the dual purpose of flag and reason + * code in one in pre-3.0 OpenSSL). + * ERR_RFLAG_COMMON Flags that the reason code is common to all + * libraries. All ERR_R_ macros must use this flag, + * and no other _R_ macro is allowed to use it. + */ + +/* Macros to help decode recorded system errors */ +#define ERR_SYSTEM_FLAG ((unsigned int)INT_MAX + 1) +#define ERR_SYSTEM_MASK ((unsigned int)INT_MAX) + +/* + * Macros to help decode recorded OpenSSL errors + * As expressed above, RFLAGS and REASON overlap by one bit to allow + * ERR_R_FATAL to use ERR_RFLAG_FATAL as its reason code. + */ +#define ERR_LIB_OFFSET 23L +#define ERR_LIB_MASK 0xFF +#define ERR_RFLAGS_OFFSET 18L +#define ERR_RFLAGS_MASK 0x1F +#define ERR_REASON_MASK 0X7FFFFF + +/* + * Reason flags are defined pre-shifted to easily combine with the reason + * number. + */ +#define ERR_RFLAG_FATAL (0x1 << ERR_RFLAGS_OFFSET) +#define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET) + +#define ERR_SYSTEM_ERROR(errcode) (((errcode) & ERR_SYSTEM_FLAG) != 0) + +static ossl_unused ossl_inline int ERR_GET_LIB(unsigned long errcode) +{ + if (ERR_SYSTEM_ERROR(errcode)) + return ERR_LIB_SYS; + return (errcode >> ERR_LIB_OFFSET) & ERR_LIB_MASK; +} + +static ossl_unused ossl_inline int ERR_GET_RFLAGS(unsigned long errcode) +{ + if (ERR_SYSTEM_ERROR(errcode)) + return 0; + return errcode & (ERR_RFLAGS_MASK << ERR_RFLAGS_OFFSET); +} + +static ossl_unused ossl_inline int ERR_GET_REASON(unsigned long errcode) +{ + if (ERR_SYSTEM_ERROR(errcode)) + return errcode & ERR_SYSTEM_MASK; + return errcode & ERR_REASON_MASK; +} + +static ossl_unused ossl_inline int ERR_FATAL_ERROR(unsigned long errcode) +{ + return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_FATAL) != 0; +} + +static ossl_unused ossl_inline int ERR_COMMON_ERROR(unsigned long errcode) +{ + return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_COMMON) != 0; +} + +/* + * ERR_PACK is a helper macro to properly pack OpenSSL error codes and may + * only be used for that purpose. System errors are packed internally. + * ERR_PACK takes reason flags and reason code combined in |reason|. + * ERR_PACK ignores |func|, that parameter is just legacy from pre-3.0 OpenSSL. + */ +#define ERR_PACK(lib, func, reason) \ + ((((unsigned long)(lib) & ERR_LIB_MASK) << ERR_LIB_OFFSET) | (((unsigned long)(reason) & ERR_REASON_MASK))) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SYS_F_FOPEN 0 +#define SYS_F_CONNECT 0 +#define SYS_F_GETSERVBYNAME 0 +#define SYS_F_SOCKET 0 +#define SYS_F_IOCTLSOCKET 0 +#define SYS_F_BIND 0 +#define SYS_F_LISTEN 0 +#define SYS_F_ACCEPT 0 +#define SYS_F_WSASTARTUP 0 +#define SYS_F_OPENDIR 0 +#define SYS_F_FREAD 0 +#define SYS_F_GETADDRINFO 0 +#define SYS_F_GETNAMEINFO 0 +#define SYS_F_SETSOCKOPT 0 +#define SYS_F_GETSOCKOPT 0 +#define SYS_F_GETSOCKNAME 0 +#define SYS_F_GETHOSTBYNAME 0 +#define SYS_F_FFLUSH 0 +#define SYS_F_OPEN 0 +#define SYS_F_CLOSE 0 +#define SYS_F_IOCTL 0 +#define SYS_F_STAT 0 +#define SYS_F_FCNTL 0 +#define SYS_F_FSTAT 0 +#define SYS_F_SENDFILE 0 +#endif + +/* + * All ERR_R_ codes must be combined with ERR_RFLAG_COMMON. + */ + +/* "we came from here" global reason codes, range 1..255 */ +#define ERR_R_SYS_LIB (ERR_LIB_SYS /* 2 */ | ERR_RFLAG_COMMON) +#define ERR_R_BN_LIB (ERR_LIB_BN /* 3 */ | ERR_RFLAG_COMMON) +#define ERR_R_RSA_LIB (ERR_LIB_RSA /* 4 */ | ERR_RFLAG_COMMON) +#define ERR_R_DH_LIB (ERR_LIB_DH /* 5 */ | ERR_RFLAG_COMMON) +#define ERR_R_EVP_LIB (ERR_LIB_EVP /* 6 */ | ERR_RFLAG_COMMON) +#define ERR_R_BUF_LIB (ERR_LIB_BUF /* 7 */ | ERR_RFLAG_COMMON) +#define ERR_R_OBJ_LIB (ERR_LIB_OBJ /* 8 */ | ERR_RFLAG_COMMON) +#define ERR_R_PEM_LIB (ERR_LIB_PEM /* 9 */ | ERR_RFLAG_COMMON) +#define ERR_R_DSA_LIB (ERR_LIB_DSA /* 10 */ | ERR_RFLAG_COMMON) +#define ERR_R_X509_LIB (ERR_LIB_X509 /* 11 */ | ERR_RFLAG_COMMON) +#define ERR_R_ASN1_LIB (ERR_LIB_ASN1 /* 13 */ | ERR_RFLAG_COMMON) +#define ERR_R_CONF_LIB (ERR_LIB_CONF /* 14 */ | ERR_RFLAG_COMMON) +#define ERR_R_CRYPTO_LIB (ERR_LIB_CRYPTO /* 15 */ | ERR_RFLAG_COMMON) +#define ERR_R_EC_LIB (ERR_LIB_EC /* 16 */ | ERR_RFLAG_COMMON) +#define ERR_R_SSL_LIB (ERR_LIB_SSL /* 20 */ | ERR_RFLAG_COMMON) +#define ERR_R_BIO_LIB (ERR_LIB_BIO /* 32 */ | ERR_RFLAG_COMMON) +#define ERR_R_PKCS7_LIB (ERR_LIB_PKCS7 /* 33 */ | ERR_RFLAG_COMMON) +#define ERR_R_X509V3_LIB (ERR_LIB_X509V3 /* 34 */ | ERR_RFLAG_COMMON) +#define ERR_R_PKCS12_LIB (ERR_LIB_PKCS12 /* 35 */ | ERR_RFLAG_COMMON) +#define ERR_R_RAND_LIB (ERR_LIB_RAND /* 36 */ | ERR_RFLAG_COMMON) +#define ERR_R_DSO_LIB (ERR_LIB_DSO /* 37 */ | ERR_RFLAG_COMMON) +#define ERR_R_ENGINE_LIB (ERR_LIB_ENGINE /* 38 */ | ERR_RFLAG_COMMON) +#define ERR_R_UI_LIB (ERR_LIB_UI /* 40 */ | ERR_RFLAG_COMMON) +#define ERR_R_ECDSA_LIB (ERR_LIB_ECDSA /* 42 */ | ERR_RFLAG_COMMON) +#define ERR_R_OSSL_STORE_LIB (ERR_LIB_OSSL_STORE /* 44 */ | ERR_RFLAG_COMMON) +#define ERR_R_CMS_LIB (ERR_LIB_CMS /* 46 */ | ERR_RFLAG_COMMON) +#define ERR_R_TS_LIB (ERR_LIB_TS /* 47 */ | ERR_RFLAG_COMMON) +#define ERR_R_CT_LIB (ERR_LIB_CT /* 50 */ | ERR_RFLAG_COMMON) +#define ERR_R_PROV_LIB (ERR_LIB_PROV /* 57 */ | ERR_RFLAG_COMMON) +#define ERR_R_ESS_LIB (ERR_LIB_ESS /* 54 */ | ERR_RFLAG_COMMON) +#define ERR_R_CMP_LIB (ERR_LIB_CMP /* 58 */ | ERR_RFLAG_COMMON) +#define ERR_R_OSSL_ENCODER_LIB (ERR_LIB_OSSL_ENCODER /* 59 */ | ERR_RFLAG_COMMON) +#define ERR_R_OSSL_DECODER_LIB (ERR_LIB_OSSL_DECODER /* 60 */ | ERR_RFLAG_COMMON) + +/* Other common error codes, range 256..2^ERR_RFLAGS_OFFSET-1 */ +#define ERR_R_FATAL (ERR_RFLAG_FATAL | ERR_RFLAG_COMMON) +#define ERR_R_MALLOC_FAILURE (256 | ERR_R_FATAL) +#define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (257 | ERR_R_FATAL) +#define ERR_R_PASSED_NULL_PARAMETER (258 | ERR_R_FATAL) +#define ERR_R_INTERNAL_ERROR (259 | ERR_R_FATAL) +#define ERR_R_DISABLED (260 | ERR_R_FATAL) +#define ERR_R_INIT_FAIL (261 | ERR_R_FATAL) +#define ERR_R_PASSED_INVALID_ARGUMENT (262 | ERR_RFLAG_COMMON) +#define ERR_R_OPERATION_FAIL (263 | ERR_R_FATAL) +#define ERR_R_INVALID_PROVIDER_FUNCTIONS (264 | ERR_R_FATAL) +#define ERR_R_INTERRUPTED_OR_CANCELLED (265 | ERR_RFLAG_COMMON) +#define ERR_R_NESTED_ASN1_ERROR (266 | ERR_RFLAG_COMMON) +#define ERR_R_MISSING_ASN1_EOS (267 | ERR_RFLAG_COMMON) +#define ERR_R_UNSUPPORTED (268 | ERR_RFLAG_COMMON) +#define ERR_R_FETCH_FAILED (269 | ERR_RFLAG_COMMON) +#define ERR_R_INVALID_PROPERTY_DEFINITION (270 | ERR_RFLAG_COMMON) +#define ERR_R_UNABLE_TO_GET_READ_LOCK (271 | ERR_R_FATAL) +#define ERR_R_UNABLE_TO_GET_WRITE_LOCK (272 | ERR_R_FATAL) + +typedef struct ERR_string_data_st { + unsigned long error; + const char *string; +} ERR_STRING_DATA; + +/* clang-format off */ +DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp)), lh_ERR_STRING_DATA_hash_thunk, lh_ERR_STRING_DATA_comp_thunk, lh_ERR_STRING_DATA_doall_thunk, lh_ERR_STRING_DATA_doall_arg_thunk)) +#define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_delete(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_delete(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_retrieve(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_retrieve(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_error(lh) OPENSSL_LH_error(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_num_items(lh) OPENSSL_LH_num_items(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh), dl) +#define lh_ERR_STRING_DATA_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +/* 12 lines and some on an 80 column terminal */ +#define ERR_MAX_DATA_SIZE 1024 + +/* Building blocks */ +void ERR_new(void); +void ERR_set_debug(const char *file, int line, const char *func); +void ERR_set_error(int lib, int reason, const char *fmt, ...); +void ERR_vset_error(int lib, int reason, const char *fmt, va_list args); + +/* Main error raising functions */ +#define ERR_raise(lib, reason) ERR_raise_data((lib), (reason), NULL) +#define ERR_raise_data \ + (ERR_new(), \ + ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \ + ERR_set_error) + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* Backward compatibility */ +#define ERR_put_error(lib, func, reason, file, line) \ + (ERR_new(), \ + ERR_set_debug((file), (line), OPENSSL_FUNC), \ + ERR_set_error((lib), (reason), NULL)) +#endif + +void ERR_set_error_data(char *data, int flags); + +unsigned long ERR_get_error(void); +unsigned long ERR_get_error_all(const char **file, int *line, + const char **func, + const char **data, int *flags); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +unsigned long ERR_get_error_line(const char **file, int *line); +OSSL_DEPRECATEDIN_3_0 +unsigned long ERR_get_error_line_data(const char **file, int *line, + const char **data, int *flags); +#endif +unsigned long ERR_peek_error(void); +unsigned long ERR_peek_error_line(const char **file, int *line); +unsigned long ERR_peek_error_func(const char **func); +unsigned long ERR_peek_error_data(const char **data, int *flags); +unsigned long ERR_peek_error_all(const char **file, int *line, + const char **func, + const char **data, int *flags); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +unsigned long ERR_peek_error_line_data(const char **file, int *line, + const char **data, int *flags); +#endif +unsigned long ERR_peek_last_error(void); +unsigned long ERR_peek_last_error_line(const char **file, int *line); +unsigned long ERR_peek_last_error_func(const char **func); +unsigned long ERR_peek_last_error_data(const char **data, int *flags); +unsigned long ERR_peek_last_error_all(const char **file, int *line, + const char **func, + const char **data, int *flags); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +unsigned long ERR_peek_last_error_line_data(const char **file, int *line, + const char **data, int *flags); +#endif + +void ERR_clear_error(void); + +char *ERR_error_string(unsigned long e, char *buf); +void ERR_error_string_n(unsigned long e, char *buf, size_t len); +const char *ERR_lib_error_string(unsigned long e); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *ERR_func_error_string(unsigned long e); +#endif +const char *ERR_reason_error_string(unsigned long e); + +void ERR_print_errors_cb(int (*cb)(const char *str, size_t len, void *u), + void *u); +#ifndef OPENSSL_NO_STDIO +void ERR_print_errors_fp(FILE *fp); +#endif +void ERR_print_errors(BIO *bp); + +void ERR_add_error_data(int num, ...); +void ERR_add_error_vdata(int num, va_list args); +void ERR_add_error_txt(const char *sepr, const char *txt); +void ERR_add_error_mem_bio(const char *sep, BIO *bio); + +int ERR_load_strings(int lib, ERR_STRING_DATA *str); +int ERR_load_strings_const(const ERR_STRING_DATA *str); +int ERR_unload_strings(int lib, ERR_STRING_DATA *str); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define ERR_load_crypto_strings() \ + OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) +#define ERR_free_strings() \ + while (0) \ + continue +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void ERR_remove_thread_state(void *); +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_0_0 +OSSL_DEPRECATEDIN_1_0_0 void ERR_remove_state(unsigned long pid); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 ERR_STATE *ERR_get_state(void); +#endif + +int ERR_get_next_error_library(void); + +int ERR_set_mark(void); +int ERR_pop_to_mark(void); +int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); +int ERR_pop(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ess.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ess.h new file mode 100644 index 00000000000000..82f38894763dde --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ess.h @@ -0,0 +1,131 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/ess.h.in + * + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_ESS_H +#define OPENSSL_ESS_H +#pragma once + +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ESS_issuer_serial ESS_ISSUER_SERIAL; +typedef struct ESS_cert_id ESS_CERT_ID; +typedef struct ESS_signing_cert ESS_SIGNING_CERT; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID, ESS_CERT_ID, ESS_CERT_ID) +#define sk_ESS_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_value(sk, idx) ((ESS_CERT_ID *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_sk_type(sk), (idx))) +#define sk_ESS_CERT_ID_new(cmp) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_compfunc_type(cmp))) +#define sk_ESS_CERT_ID_new_null() ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_ESS_CERT_ID_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_compfunc_type(cmp), (n))) +#define sk_ESS_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_sk_type(sk), (n)) +#define sk_ESS_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_delete(sk, i) ((ESS_CERT_ID *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_sk_type(sk), (i))) +#define sk_ESS_CERT_ID_delete_ptr(sk, ptr) ((ESS_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr))) +#define sk_ESS_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_pop(sk) ((ESS_CERT_ID *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_shift(sk) ((ESS_CERT_ID *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_sk_type(sk),ossl_check_ESS_CERT_ID_freefunc_type(freefunc)) +#define sk_ESS_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), (idx)) +#define sk_ESS_CERT_ID_set(sk, idx, ptr) ((ESS_CERT_ID *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_type(ptr))) +#define sk_ESS_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), pnum) +#define sk_ESS_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_dup(sk) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_freefunc_type(freefunc))) +#define sk_ESS_CERT_ID_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; +typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID_V2, ESS_CERT_ID_V2, ESS_CERT_ID_V2) +#define sk_ESS_CERT_ID_V2_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_value(sk, idx) ((ESS_CERT_ID_V2 *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), (idx))) +#define sk_ESS_CERT_ID_V2_new(cmp) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) +#define sk_ESS_CERT_ID_V2_new_null() ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_null()) +#define sk_ESS_CERT_ID_V2_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp), (n))) +#define sk_ESS_CERT_ID_V2_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (n)) +#define sk_ESS_CERT_ID_V2_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_delete(sk, i) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (i))) +#define sk_ESS_CERT_ID_V2_delete_ptr(sk, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr))) +#define sk_ESS_CERT_ID_V2_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_pop(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_shift(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk),ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc)) +#define sk_ESS_CERT_ID_V2_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), (idx)) +#define sk_ESS_CERT_ID_V2_set(sk, idx, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_V2_type(ptr))) +#define sk_ESS_CERT_ID_V2_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), pnum) +#define sk_ESS_CERT_ID_V2_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_dup(sk) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc))) +#define sk_ESS_CERT_ID_V2_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_V2_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_ISSUER_SERIAL) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_ISSUER_SERIAL, ESS_ISSUER_SERIAL) +DECLARE_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL) + +DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID, ESS_CERT_ID) +DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID) + +DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT) +DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT) + +DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID_V2) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID_V2, ESS_CERT_ID_V2) +DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID_V2) + +DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT_V2) +DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT_V2) + +ESS_SIGNING_CERT *OSSL_ESS_signing_cert_new_init(const X509 *signcert, + const STACK_OF(X509) *certs, + int set_issuer_serial); +ESS_SIGNING_CERT_V2 *OSSL_ESS_signing_cert_v2_new_init(const EVP_MD *hash_alg, + const X509 *signcert, + const STACK_OF(X509) *certs, + int set_issuer_serial); +int OSSL_ESS_check_signing_certs(const ESS_SIGNING_CERT *ss, + const ESS_SIGNING_CERT_V2 *ssv2, + const STACK_OF(X509) *chain, + int require_signing_cert); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/fipskey.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/fipskey.h new file mode 100644 index 00000000000000..2defbe7b232a77 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/fipskey.h @@ -0,0 +1,47 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/fipskey.h.in + * + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_FIPSKEY_H +#define OPENSSL_FIPSKEY_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The FIPS validation HMAC key, usable as an array initializer. + */ +/* clang-format off */ +#define FIPS_KEY_ELEMENTS \ + 0xf4, 0x55, 0x66, 0x50, 0xac, 0x31, 0xd3, 0x54, 0x61, 0x61, 0x0b, 0xac, 0x4e, 0xd8, 0x1b, 0x1a, 0x18, 0x1b, 0x2d, 0x8a, 0x43, 0xea, 0x28, 0x54, 0xcb, 0xae, 0x22, 0xca, 0x74, 0x56, 0x08, 0x13 +/* clang-format on */ + +/* + * The FIPS validation key, as a string. + */ +/* clang-format off */ +#define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" +/* clang-format on */ + +/* + * The FIPS provider vendor name, as a string. + */ +/* clang-format off */ +#define FIPS_VENDOR "OpenSSL FIPS Provider" +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/lhash.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/lhash.h new file mode 100644 index 00000000000000..dab9372b0b67dc --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/lhash.h @@ -0,0 +1,417 @@ +/* + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +/* + * Header for dynamic hash table routines Author - Eric Young + */ + +#ifndef OPENSSL_LHASH_H +#define OPENSSL_LHASH_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_LHASH_H +#endif + +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct lhash_node_st OPENSSL_LH_NODE; +typedef int (*OPENSSL_LH_COMPFUNC)(const void *, const void *); +typedef int (*OPENSSL_LH_COMPFUNCTHUNK)(const void *, const void *, OPENSSL_LH_COMPFUNC cfn); +typedef unsigned long (*OPENSSL_LH_HASHFUNC)(const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNCTHUNK)(const void *, OPENSSL_LH_HASHFUNC hfn); +typedef void (*OPENSSL_LH_DOALL_FUNC)(void *); +typedef void (*OPENSSL_LH_DOALL_FUNC_THUNK)(void *, OPENSSL_LH_DOALL_FUNC doall); +typedef void (*OPENSSL_LH_DOALL_FUNCARG)(void *, void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG_THUNK)(void *, void *, OPENSSL_LH_DOALL_FUNCARG doall); +typedef struct lhash_st OPENSSL_LHASH; + +/* + * Macros for declaring and implementing type-safe wrappers for LHASH + * callbacks. This way, callbacks can be provided to LHASH structures without + * function pointer casting and the macro-defined callbacks provide + * per-variable casting before deferring to the underlying type-specific + * callbacks. NB: It is possible to place a "static" in front of both the + * DECLARE and IMPLEMENT macros if the functions are strictly internal. + */ + +/* First: "hash" functions */ +#define DECLARE_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *); +#define IMPLEMENT_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *arg) \ + { \ + const o_type *a = arg; \ + return name##_hash(a); \ + } +#define LHASH_HASH_FN(name) name##_LHASH_HASH + +/* Second: "compare" functions */ +#define DECLARE_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *, const void *); +#define IMPLEMENT_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *arg1, const void *arg2) \ + { \ + const o_type *a = arg1; \ + const o_type *b = arg2; \ + return name##_cmp(a, b); \ + } +#define LHASH_COMP_FN(name) name##_LHASH_COMP + +/* Fourth: "doall_arg" functions */ +#define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *, void *); +#define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) \ + { \ + o_type *a = arg1; \ + a_type *b = arg2; \ + name##_doall_arg(a, b); \ + } +#define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG + +#define LH_LOAD_MULT 256 + +int OPENSSL_LH_error(OPENSSL_LHASH *lh); +OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +OPENSSL_LHASH *OPENSSL_LH_set_thunks(OPENSSL_LHASH *lh, + OPENSSL_LH_HASHFUNCTHUNK hw, + OPENSSL_LH_COMPFUNCTHUNK cw, + OPENSSL_LH_DOALL_FUNC_THUNK daw, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw); +void OPENSSL_LH_free(OPENSSL_LHASH *lh); +void OPENSSL_LH_flush(OPENSSL_LHASH *lh); +void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); +void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); +void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); +void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG func, void *arg); +void OPENSSL_LH_doall_arg_thunk(OPENSSL_LHASH *lh, + OPENSSL_LH_DOALL_FUNCARG_THUNK daaw, + OPENSSL_LH_DOALL_FUNCARG fn, void *arg); + +unsigned long OPENSSL_LH_strhash(const char *c); +unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); +unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); +void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); + +#ifndef OPENSSL_NO_STDIO +#ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define _LHASH OPENSSL_LHASH +#define LHASH_NODE OPENSSL_LH_NODE +#define lh_error OPENSSL_LH_error +#define lh_new OPENSSL_LH_new +#define lh_free OPENSSL_LH_free +#define lh_insert OPENSSL_LH_insert +#define lh_delete OPENSSL_LH_delete +#define lh_retrieve OPENSSL_LH_retrieve +#define lh_doall OPENSSL_LH_doall +#define lh_doall_arg OPENSSL_LH_doall_arg +#define lh_strhash OPENSSL_LH_strhash +#define lh_num_items OPENSSL_LH_num_items +#ifndef OPENSSL_NO_STDIO +#define lh_stats OPENSSL_LH_stats +#define lh_node_stats OPENSSL_LH_node_stats +#define lh_node_usage_stats OPENSSL_LH_node_usage_stats +#endif +#define lh_stats_bio OPENSSL_LH_stats_bio +#define lh_node_stats_bio OPENSSL_LH_node_stats_bio +#define lh_node_usage_stats_bio OPENSSL_LH_node_usage_stats_bio +#endif + +/* Type checking... */ + +#define LHASH_OF(type) struct lhash_st_##type + +/* Helper macro for internal use */ +#define DEFINE_LHASH_OF_INTERNAL(type) \ + LHASH_OF(type) \ + { \ + union lh_##type##_dummy { \ + void *d1; \ + unsigned long d2; \ + int d3; \ + } dummy; \ + }; \ + typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ + typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ + typedef void (*lh_##type##_doallfunc)(type * a); \ + static ossl_inline unsigned long lh_##type##_hash_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static ossl_inline int lh_##type##_comp_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_inline void lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_inline void lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline type * \ + ossl_check_##type##_lh_plain_type(type *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + { \ + return (const OPENSSL_LHASH *)lh; \ + } \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + { \ + return (OPENSSL_LHASH *)lh; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + { \ + return (OPENSSL_LH_COMPFUNC)cmp; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + { \ + return (OPENSSL_LH_HASHFUNC)hfn; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + { \ + return (OPENSSL_LH_DOALL_FUNC)dfn; \ + } \ + LHASH_OF(type) + +#ifndef OPENSSL_NO_DEPRECATED_3_1 +#define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +#else +#define DEFINE_LHASH_OF_DEPRECATED(type) +#endif + +#define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) \ + { \ + union lh_##type##_dummy { \ + void *d1; \ + unsigned long d2; \ + int d3; \ + } dummy; \ + }; \ + static unsigned long \ + lh_##type##_hfn_thunk(const void *data, OPENSSL_LH_HASHFUNC hfn) \ + { \ + unsigned long (*hfn_conv)(const type *) = (unsigned long (*)(const type *))hfn; \ + return hfn_conv((const type *)data); \ + } \ + static int lh_##type##_cfn_thunk(const void *da, const void *db, OPENSSL_LH_COMPFUNC cfn) \ + { \ + int (*cfn_conv)(const type *, const type *) = (int (*)(const type *, const type *))cfn; \ + return cfn_conv((const type *)da, (const type *)db); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + { \ + return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + { \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_thunk(void *node, OPENSSL_LH_DOALL_FUNC doall) \ + { \ + void (*doall_conv)(type *) = (void (*)(type *))doall; \ + doall_conv((type *)node); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG doall) \ + { \ + void (*doall_conv)(type *, void *) = (void (*)(type *, void *))doall; \ + doall_conv((type *)node, arg); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ + { \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + } \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ + { \ + return (LHASH_OF(type) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn), \ + lh_##type##_hfn_thunk, lh_##type##_cfn_thunk, \ + lh_##type##_doall_thunk, \ + lh_##type##_doall_arg_thunk); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ + { \ + OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ + (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ + } \ + LHASH_OF(type) + +#define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + +#define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ + int_implement_lhash_doall(type, argtype, const type) + +#define IMPLEMENT_LHASH_DOALL_ARG(type, argtype) \ + int_implement_lhash_doall(type, argtype, type) + +#define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype##_thunk(void *node, void *arg, OPENSSL_LH_DOALL_FUNCARG fn) \ + { \ + void (*fn_conv)(cbargtype *, argtype *) = (void (*)(cbargtype *, argtype *))fn; \ + fn_conv((cbargtype *)node, (argtype *)arg); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ + void (*fn)(cbargtype *, argtype *), \ + argtype *arg) \ + { \ + OPENSSL_LH_doall_arg_thunk((OPENSSL_LHASH *)lh, \ + lh_##type##_doall_##argtype##_thunk, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, \ + (void *)arg); \ + } \ + LHASH_OF(type) + +/* clang-format off */ +DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp)), lh_OPENSSL_STRING_hash_thunk, lh_OPENSSL_STRING_comp_thunk, lh_OPENSSL_STRING_doall_thunk, lh_OPENSSL_STRING_doall_arg_thunk)) +#define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_delete(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_retrieve(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) +#define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) +DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_set_thunks(OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp)), lh_OPENSSL_CSTRING_hash_thunk, lh_OPENSSL_CSTRING_comp_thunk, lh_OPENSSL_CSTRING_doall_thunk, lh_OPENSSL_CSTRING_doall_arg_thunk)) +#define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_delete(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_retrieve(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh), dl) +#define lh_OPENSSL_CSTRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_doallfunc_type(dfn)) + +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ocsp.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ocsp.h new file mode 100644 index 00000000000000..70a4f484d7e778 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ocsp.h @@ -0,0 +1,487 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/ocsp.h.in + * + * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_OCSP_H +#define OPENSSL_OCSP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OCSP_H +#endif + +#include +#include +#include + +/* + * These definitions are outside the OPENSSL_NO_OCSP guard because although for + * historical reasons they have OCSP_* names, they can actually be used + * independently of OCSP. E.g. see RFC5280 + */ +/*- + * CRLReason ::= ENUMERATED { + * unspecified (0), + * keyCompromise (1), + * cACompromise (2), + * affiliationChanged (3), + * superseded (4), + * cessationOfOperation (5), + * certificateHold (6), + * -- value 7 is not used + * removeFromCRL (8), + * privilegeWithdrawn (9), + * aACompromise (10) } + */ +#define OCSP_REVOKED_STATUS_NOSTATUS -1 +#define OCSP_REVOKED_STATUS_UNSPECIFIED 0 +#define OCSP_REVOKED_STATUS_KEYCOMPROMISE 1 +#define OCSP_REVOKED_STATUS_CACOMPROMISE 2 +#define OCSP_REVOKED_STATUS_AFFILIATIONCHANGED 3 +#define OCSP_REVOKED_STATUS_SUPERSEDED 4 +#define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION 5 +#define OCSP_REVOKED_STATUS_CERTIFICATEHOLD 6 +#define OCSP_REVOKED_STATUS_REMOVEFROMCRL 8 +#define OCSP_REVOKED_STATUS_PRIVILEGEWITHDRAWN 9 +#define OCSP_REVOKED_STATUS_AACOMPROMISE 10 + +#ifndef OPENSSL_NO_OCSP + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Various flags and values */ + +#define OCSP_DEFAULT_NONCE_LENGTH 16 + +#define OCSP_NOCERTS 0x1 +#define OCSP_NOINTERN 0x2 +#define OCSP_NOSIGS 0x4 +#define OCSP_NOCHAIN 0x8 +#define OCSP_NOVERIFY 0x10 +#define OCSP_NOEXPLICIT 0x20 +#define OCSP_NOCASIGN 0x40 +#define OCSP_NODELEGATED 0x80 +#define OCSP_NOCHECKS 0x100 +#define OCSP_TRUSTOTHER 0x200 +#define OCSP_RESPID_KEY 0x400 +#define OCSP_NOTIME 0x800 +#define OCSP_PARTIAL_CHAIN 0x1000 + +typedef struct ocsp_cert_id_st OCSP_CERTID; +typedef struct ocsp_one_request_st OCSP_ONEREQ; +typedef struct ocsp_req_info_st OCSP_REQINFO; +typedef struct ocsp_signature_st OCSP_SIGNATURE; +typedef struct ocsp_request_st OCSP_REQUEST; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_CERTID, OCSP_CERTID, OCSP_CERTID) +#define sk_OCSP_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_value(sk, idx) ((OCSP_CERTID *)OPENSSL_sk_value(ossl_check_const_OCSP_CERTID_sk_type(sk), (idx))) +#define sk_OCSP_CERTID_new(cmp) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new(ossl_check_OCSP_CERTID_compfunc_type(cmp))) +#define sk_OCSP_CERTID_new_null() ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_null()) +#define sk_OCSP_CERTID_new_reserve(cmp, n) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_CERTID_compfunc_type(cmp), (n))) +#define sk_OCSP_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_CERTID_sk_type(sk), (n)) +#define sk_OCSP_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_delete(sk, i) ((OCSP_CERTID *)OPENSSL_sk_delete(ossl_check_OCSP_CERTID_sk_type(sk), (i))) +#define sk_OCSP_CERTID_delete_ptr(sk, ptr) ((OCSP_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr))) +#define sk_OCSP_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_pop(sk) ((OCSP_CERTID *)OPENSSL_sk_pop(ossl_check_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_shift(sk) ((OCSP_CERTID *)OPENSSL_sk_shift(ossl_check_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_CERTID_sk_type(sk),ossl_check_OCSP_CERTID_freefunc_type(freefunc)) +#define sk_OCSP_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), (idx)) +#define sk_OCSP_CERTID_set(sk, idx, ptr) ((OCSP_CERTID *)OPENSSL_sk_set(ossl_check_OCSP_CERTID_sk_type(sk), (idx), ossl_check_OCSP_CERTID_type(ptr))) +#define sk_OCSP_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), pnum) +#define sk_OCSP_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_dup(sk) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_copyfunc_type(copyfunc), ossl_check_OCSP_CERTID_freefunc_type(freefunc))) +#define sk_OCSP_CERTID_set_cmp_func(sk, cmp) ((sk_OCSP_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_ONEREQ, OCSP_ONEREQ, OCSP_ONEREQ) +#define sk_OCSP_ONEREQ_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_value(sk, idx) ((OCSP_ONEREQ *)OPENSSL_sk_value(ossl_check_const_OCSP_ONEREQ_sk_type(sk), (idx))) +#define sk_OCSP_ONEREQ_new(cmp) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new(ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) +#define sk_OCSP_ONEREQ_new_null() ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_null()) +#define sk_OCSP_ONEREQ_new_reserve(cmp, n) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_ONEREQ_compfunc_type(cmp), (n))) +#define sk_OCSP_ONEREQ_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_ONEREQ_sk_type(sk), (n)) +#define sk_OCSP_ONEREQ_free(sk) OPENSSL_sk_free(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_delete(sk, i) ((OCSP_ONEREQ *)OPENSSL_sk_delete(ossl_check_OCSP_ONEREQ_sk_type(sk), (i))) +#define sk_OCSP_ONEREQ_delete_ptr(sk, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr))) +#define sk_OCSP_ONEREQ_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_pop(sk) ((OCSP_ONEREQ *)OPENSSL_sk_pop(ossl_check_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_shift(sk) ((OCSP_ONEREQ *)OPENSSL_sk_shift(ossl_check_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_ONEREQ_sk_type(sk),ossl_check_OCSP_ONEREQ_freefunc_type(freefunc)) +#define sk_OCSP_ONEREQ_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), (idx)) +#define sk_OCSP_ONEREQ_set(sk, idx, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_set(ossl_check_OCSP_ONEREQ_sk_type(sk), (idx), ossl_check_OCSP_ONEREQ_type(ptr))) +#define sk_OCSP_ONEREQ_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), pnum) +#define sk_OCSP_ONEREQ_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_dup(sk) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_dup(ossl_check_const_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_copyfunc_type(copyfunc), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc))) +#define sk_OCSP_ONEREQ_set_cmp_func(sk, cmp) ((sk_OCSP_ONEREQ_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) + +/* clang-format on */ + +#define OCSP_RESPONSE_STATUS_SUCCESSFUL 0 +#define OCSP_RESPONSE_STATUS_MALFORMEDREQUEST 1 +#define OCSP_RESPONSE_STATUS_INTERNALERROR 2 +#define OCSP_RESPONSE_STATUS_TRYLATER 3 +#define OCSP_RESPONSE_STATUS_SIGREQUIRED 5 +#define OCSP_RESPONSE_STATUS_UNAUTHORIZED 6 + +typedef struct ocsp_resp_bytes_st OCSP_RESPBYTES; + +#define V_OCSP_RESPID_NAME 0 +#define V_OCSP_RESPID_KEY 1 + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_RESPID, OCSP_RESPID, OCSP_RESPID) +#define sk_OCSP_RESPID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_value(sk, idx) ((OCSP_RESPID *)OPENSSL_sk_value(ossl_check_const_OCSP_RESPID_sk_type(sk), (idx))) +#define sk_OCSP_RESPID_new(cmp) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new(ossl_check_OCSP_RESPID_compfunc_type(cmp))) +#define sk_OCSP_RESPID_new_null() ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_null()) +#define sk_OCSP_RESPID_new_reserve(cmp, n) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_RESPID_compfunc_type(cmp), (n))) +#define sk_OCSP_RESPID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_RESPID_sk_type(sk), (n)) +#define sk_OCSP_RESPID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_delete(sk, i) ((OCSP_RESPID *)OPENSSL_sk_delete(ossl_check_OCSP_RESPID_sk_type(sk), (i))) +#define sk_OCSP_RESPID_delete_ptr(sk, ptr) ((OCSP_RESPID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr))) +#define sk_OCSP_RESPID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_pop(sk) ((OCSP_RESPID *)OPENSSL_sk_pop(ossl_check_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_shift(sk) ((OCSP_RESPID *)OPENSSL_sk_shift(ossl_check_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_RESPID_sk_type(sk),ossl_check_OCSP_RESPID_freefunc_type(freefunc)) +#define sk_OCSP_RESPID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), (idx)) +#define sk_OCSP_RESPID_set(sk, idx, ptr) ((OCSP_RESPID *)OPENSSL_sk_set(ossl_check_OCSP_RESPID_sk_type(sk), (idx), ossl_check_OCSP_RESPID_type(ptr))) +#define sk_OCSP_RESPID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), pnum) +#define sk_OCSP_RESPID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_dup(sk) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_copyfunc_type(copyfunc), ossl_check_OCSP_RESPID_freefunc_type(freefunc))) +#define sk_OCSP_RESPID_set_cmp_func(sk, cmp) ((sk_OCSP_RESPID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ocsp_revoked_info_st OCSP_REVOKEDINFO; + +#define V_OCSP_CERTSTATUS_GOOD 0 +#define V_OCSP_CERTSTATUS_REVOKED 1 +#define V_OCSP_CERTSTATUS_UNKNOWN 2 + +typedef struct ocsp_cert_status_st OCSP_CERTSTATUS; +typedef struct ocsp_single_response_st OCSP_SINGLERESP; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_SINGLERESP, OCSP_SINGLERESP, OCSP_SINGLERESP) +#define sk_OCSP_SINGLERESP_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_value(sk, idx) ((OCSP_SINGLERESP *)OPENSSL_sk_value(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), (idx))) +#define sk_OCSP_SINGLERESP_new(cmp) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) +#define sk_OCSP_SINGLERESP_new_null() ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_null()) +#define sk_OCSP_SINGLERESP_new_reserve(cmp, n) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp), (n))) +#define sk_OCSP_SINGLERESP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_SINGLERESP_sk_type(sk), (n)) +#define sk_OCSP_SINGLERESP_free(sk) OPENSSL_sk_free(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_delete(sk, i) ((OCSP_SINGLERESP *)OPENSSL_sk_delete(ossl_check_OCSP_SINGLERESP_sk_type(sk), (i))) +#define sk_OCSP_SINGLERESP_delete_ptr(sk, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr))) +#define sk_OCSP_SINGLERESP_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_pop(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_pop(ossl_check_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_shift(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_shift(ossl_check_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_SINGLERESP_sk_type(sk),ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc)) +#define sk_OCSP_SINGLERESP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), (idx)) +#define sk_OCSP_SINGLERESP_set(sk, idx, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_set(ossl_check_OCSP_SINGLERESP_sk_type(sk), (idx), ossl_check_OCSP_SINGLERESP_type(ptr))) +#define sk_OCSP_SINGLERESP_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), pnum) +#define sk_OCSP_SINGLERESP_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_dup(sk) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_dup(ossl_check_const_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_copyfunc_type(copyfunc), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc))) +#define sk_OCSP_SINGLERESP_set_cmp_func(sk, cmp) ((sk_OCSP_SINGLERESP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct ocsp_response_data_st OCSP_RESPDATA; + +typedef struct ocsp_basic_response_st OCSP_BASICRESP; + +typedef struct ocsp_crl_id_st OCSP_CRLID; +typedef struct ocsp_service_locator_st OCSP_SERVICELOC; + +#define PEM_STRING_OCSP_REQUEST "OCSP REQUEST" +#define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE" + +#define d2i_OCSP_REQUEST_bio(bp, p) ASN1_d2i_bio_of(OCSP_REQUEST, OCSP_REQUEST_new, d2i_OCSP_REQUEST, bp, p) + +#define d2i_OCSP_RESPONSE_bio(bp, p) ASN1_d2i_bio_of(OCSP_RESPONSE, OCSP_RESPONSE_new, d2i_OCSP_RESPONSE, bp, p) + +#define PEM_read_bio_OCSP_REQUEST(bp, x, cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \ + (d2i_of_void *)d2i_OCSP_REQUEST, PEM_STRING_OCSP_REQUEST, \ + bp, (char **)(x), cb, NULL) + +#define PEM_read_bio_OCSP_RESPONSE(bp, x, cb) (OCSP_RESPONSE *)PEM_ASN1_read_bio( \ + (d2i_of_void *)d2i_OCSP_RESPONSE, PEM_STRING_OCSP_RESPONSE, \ + bp, (char **)(x), cb, NULL) + +#define PEM_write_bio_OCSP_REQUEST(bp, o) \ + PEM_ASN1_write_bio((i2d_of_void *)i2d_OCSP_REQUEST, PEM_STRING_OCSP_REQUEST, \ + bp, (char *)(o), NULL, NULL, 0, NULL, NULL) + +#define PEM_write_bio_OCSP_RESPONSE(bp, o) \ + PEM_ASN1_write_bio((i2d_of_void *)i2d_OCSP_RESPONSE, PEM_STRING_OCSP_RESPONSE, \ + bp, (char *)(o), NULL, NULL, 0, NULL, NULL) + +#define i2d_OCSP_RESPONSE_bio(bp, o) ASN1_i2d_bio_of(OCSP_RESPONSE, i2d_OCSP_RESPONSE, bp, o) + +#define i2d_OCSP_REQUEST_bio(bp, o) ASN1_i2d_bio_of(OCSP_REQUEST, i2d_OCSP_REQUEST, bp, o) + +#define ASN1_BIT_STRING_digest(data, type, md, len) \ + ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING), type, data, md, len) + +#define OCSP_CERTSTATUS_dup(cs) \ + (OCSP_CERTSTATUS *)ASN1_dup((i2d_of_void *)i2d_OCSP_CERTSTATUS, \ + (d2i_of_void *)d2i_OCSP_CERTSTATUS, (char *)(cs)) + +DECLARE_ASN1_DUP_FUNCTION(OCSP_CERTID) + +OSSL_HTTP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, + const OCSP_REQUEST *req, int buf_size); +OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef OSSL_HTTP_REQ_CTX OCSP_REQ_CTX; +#define OCSP_REQ_CTX_new(io, buf_size) \ + OSSL_HTTP_REQ_CTX_new(io, io, buf_size) +#define OCSP_REQ_CTX_free OSSL_HTTP_REQ_CTX_free +#define OCSP_REQ_CTX_http(rctx, op, path) \ + (OSSL_HTTP_REQ_CTX_set_expected(rctx, NULL, 1 /* asn1 */, 0, 0) && OSSL_HTTP_REQ_CTX_set_request_line(rctx, strcmp(op, "POST") == 0, NULL, NULL, path)) +#define OCSP_REQ_CTX_add1_header OSSL_HTTP_REQ_CTX_add1_header +#define OCSP_REQ_CTX_i2d(r, it, req) \ + OSSL_HTTP_REQ_CTX_set1_req(r, "application/ocsp-request", it, req) +#define OCSP_REQ_CTX_set1_req(r, req) \ + OCSP_REQ_CTX_i2d(r, ASN1_ITEM_rptr(OCSP_REQUEST), (ASN1_VALUE *)(req)) +#define OCSP_REQ_CTX_nbio OSSL_HTTP_REQ_CTX_nbio +#define OCSP_REQ_CTX_nbio_d2i OSSL_HTTP_REQ_CTX_nbio_d2i +#define OCSP_sendreq_nbio(p, r) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(r, (ASN1_VALUE **)(p), \ + ASN1_ITEM_rptr(OCSP_RESPONSE)) +#define OCSP_REQ_CTX_get0_mem_bio OSSL_HTTP_REQ_CTX_get0_mem_bio +#define OCSP_set_max_response_length OSSL_HTTP_REQ_CTX_set_max_response_length +#endif + +OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, const X509 *subject, + const X509 *issuer); + +OCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst, + const X509_NAME *issuerName, + const ASN1_BIT_STRING *issuerKey, + const ASN1_INTEGER *serialNumber); + +OCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid); + +int OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len); +int OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len); +int OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *bs); +int OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req); + +int OCSP_request_set1_name(OCSP_REQUEST *req, const X509_NAME *nm); +int OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert); + +int OCSP_request_sign(OCSP_REQUEST *req, + X509 *signer, + EVP_PKEY *key, + const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); + +int OCSP_response_status(OCSP_RESPONSE *resp); +OCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp); + +const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *bs); +const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs); +const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_signer(OCSP_BASICRESP *bs, X509 **signer, + STACK_OF(X509) *extra_certs); + +int OCSP_resp_count(OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx); +const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(const OCSP_BASICRESP *bs); +const STACK_OF(X509) *OCSP_resp_get0_certs(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_id(const OCSP_BASICRESP *bs, + const ASN1_OCTET_STRING **pid, + const X509_NAME **pname); +int OCSP_resp_get1_id(const OCSP_BASICRESP *bs, + ASN1_OCTET_STRING **pid, + X509_NAME **pname); + +int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last); +int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status, + int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd, + ASN1_GENERALIZEDTIME *nextupd, long sec, long maxsec); + +int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, + X509_STORE *store, unsigned long flags); + +#define OCSP_parse_url(url, host, port, path, ssl) \ + OSSL_HTTP_parse_url(url, ssl, NULL, host, port, NULL, path, NULL, NULL) + +int OCSP_id_issuer_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); +int OCSP_id_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); + +int OCSP_request_onereq_count(OCSP_REQUEST *req); +OCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i); +OCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one); +int OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, + ASN1_OCTET_STRING **pikeyHash, + ASN1_INTEGER **pserial, OCSP_CERTID *cid); +int OCSP_request_is_signed(OCSP_REQUEST *req); +OCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp, + OCSP_CERTID *cid, + int status, int reason, + ASN1_TIME *revtime, + ASN1_TIME *thisupd, + ASN1_TIME *nextupd); +int OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert); +int OCSP_basic_sign(OCSP_BASICRESP *brsp, + X509 *signer, EVP_PKEY *key, const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_basic_sign_ctx(OCSP_BASICRESP *brsp, + X509 *signer, EVP_MD_CTX *ctx, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_RESPID_set_by_name(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_set_by_key_ex(OCSP_RESPID *respid, X509 *cert, + OSSL_LIB_CTX *libctx, const char *propq); +int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_match_ex(OCSP_RESPID *respid, X509 *cert, OSSL_LIB_CTX *libctx, + const char *propq); +int OCSP_RESPID_match(OCSP_RESPID *respid, X509 *cert); + +X509_EXTENSION *OCSP_crlID_new(const char *url, long *n, char *tim); + +X509_EXTENSION *OCSP_accept_responses_new(char **oids); + +X509_EXTENSION *OCSP_archive_cutoff_new(char *tim); + +X509_EXTENSION *OCSP_url_svcloc_new(const X509_NAME *issuer, const char **urls); + +int OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x); +int OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos); +int OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos); +X509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc); +X509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc); +void *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit, + int *idx); +int OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc); + +int OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x); +int OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos); +int OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, const ASN1_OBJECT *obj, int lastpos); +int OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos); +X509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc); +X509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc); +void *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx); +int OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc); + +int OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x); +int OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos); +int OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc); +X509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc); +void *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit, + int *idx); +int OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc); + +int OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x); +int OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos); +int OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc); +X509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc); +void *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit, + int *idx); +int OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc); +const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x); + +DECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS) +DECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPID) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES) +DECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTID) +DECLARE_ASN1_FUNCTIONS(OCSP_REQUEST) +DECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE) +DECLARE_ASN1_FUNCTIONS(OCSP_REQINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_CRLID) +DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC) + +const char *OCSP_response_status_str(long s); +const char *OCSP_cert_status_str(long s); +const char *OCSP_crl_reason_str(long s); + +int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST *a, unsigned long flags); +int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE *o, unsigned long flags); + +int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, + X509_STORE *st, unsigned long flags); + +#ifdef __cplusplus +} +#endif +#endif /* !defined(OPENSSL_NO_OCSP) */ +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/opensslv.h new file mode 100644 index 00000000000000..8e9329bcc0dd5e --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/opensslv.h @@ -0,0 +1,131 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/opensslv.h.in + * + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_OPENSSLV_H +#define OPENSSL_OPENSSLV_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SECTION 1: VERSION DATA. These will change for each release + */ + +/* + * Base version macros + * + * These macros express version number MAJOR.MINOR.PATCH exactly + */ +/* clang-format off */ +# define OPENSSL_VERSION_MAJOR 3 +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_VERSION_MINOR 5 +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_VERSION_PATCH 7 +/* clang-format on */ + +/* + * Additional version information + * + * These are also part of the new version scheme, but aren't part + * of the version number itself. + */ + +/* Could be: #define OPENSSL_VERSION_PRE_RELEASE "-alpha.1" */ +/* clang-format off */ +# define OPENSSL_VERSION_PRE_RELEASE "" +/* clang-format on */ +/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+fips" */ +/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+vendor.1" */ +/* clang-format off */ +# define OPENSSL_VERSION_BUILD_METADATA "" +/* clang-format on */ + +/* + * Note: The OpenSSL Project will never define OPENSSL_VERSION_BUILD_METADATA + * to be anything but the empty string. Its use is entirely reserved for + * others + */ + +/* + * Shared library version + * + * This is strictly to express ABI version, which may or may not + * be related to the API version expressed with the macros above. + * This is defined in free form. + */ +/* clang-format off */ +# define OPENSSL_SHLIB_VERSION 3 +/* clang-format on */ + +/* + * SECTION 2: USEFUL MACROS + */ + +/* For checking general API compatibility when preprocessing */ +#define OPENSSL_VERSION_PREREQ(maj, min) \ + ((OPENSSL_VERSION_MAJOR << 16) + OPENSSL_VERSION_MINOR >= ((maj) << 16) + (min)) + +/* + * Macros to get the version in easily digested string form, both the short + * "MAJOR.MINOR.PATCH" variant (where MAJOR, MINOR and PATCH are replaced + * with the values from the corresponding OPENSSL_VERSION_ macros) and the + * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and + * OPENSSL_VERSION_BUILD_METADATA_STR appended. + */ +/* clang-format off */ +# define OPENSSL_VERSION_STR "3.5.7" +/* clang-format on */ +/* clang-format off */ +# define OPENSSL_FULL_VERSION_STR "3.5.7" +/* clang-format on */ + +/* + * SECTION 3: ADDITIONAL METADATA + * + * These strings are defined separately to allow them to be parsable. + */ +/* clang-format off */ +# define OPENSSL_RELEASE_DATE "9 Jun 2026" +/* clang-format on */ + +/* + * SECTION 4: BACKWARD COMPATIBILITY + */ + +/* clang-format off */ +# define OPENSSL_VERSION_TEXT "OpenSSL 3.5.7 9 Jun 2026" +/* clang-format on */ + +/* clang-format off */ +/* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PP0L */ +# define OPENSSL_VERSION_NUMBER \ + ( (OPENSSL_VERSION_MAJOR<<28) \ + |(OPENSSL_VERSION_MINOR<<20) \ + |(OPENSSL_VERSION_PATCH<<4) \ + |0x0L ) +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_OPENSSLV_H +#endif + +#endif /* OPENSSL_OPENSSLV_H */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/pkcs12.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/pkcs12.h new file mode 100644 index 00000000000000..f7e38ace03bc0b --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/pkcs12.h @@ -0,0 +1,370 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/pkcs12.h.in + * + * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_PKCS12_H +#define OPENSSL_PKCS12_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PKCS12_H +#endif + +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define PKCS12_KEY_ID 1 +#define PKCS12_IV_ID 2 +#define PKCS12_MAC_ID 3 + +/* Default iteration count */ +#ifndef PKCS12_DEFAULT_ITER +#define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER +#endif + +#define PKCS12_MAC_KEY_LENGTH 20 + +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ +#define PKCS12_SALT_LEN 8 + +/* It's not clear if these are actually needed... */ +#define PKCS12_key_gen PKCS12_key_gen_utf8 +#define PKCS12_add_friendlyname PKCS12_add_friendlyname_utf8 + +/* MS key usage constants */ + +#define KEY_EX 0x10 +#define KEY_SIG 0x80 + +typedef struct PKCS12_MAC_DATA_st PKCS12_MAC_DATA; + +typedef struct PKCS12_st PKCS12; + +typedef struct PKCS12_SAFEBAG_st PKCS12_SAFEBAG; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS12_SAFEBAG, PKCS12_SAFEBAG, PKCS12_SAFEBAG) +#define sk_PKCS12_SAFEBAG_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_value(sk, idx) ((PKCS12_SAFEBAG *)OPENSSL_sk_value(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), (idx))) +#define sk_PKCS12_SAFEBAG_new(cmp) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) +#define sk_PKCS12_SAFEBAG_new_null() ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_null()) +#define sk_PKCS12_SAFEBAG_new_reserve(cmp, n) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_reserve(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp), (n))) +#define sk_PKCS12_SAFEBAG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (n)) +#define sk_PKCS12_SAFEBAG_free(sk) OPENSSL_sk_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_delete(sk, i) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (i))) +#define sk_PKCS12_SAFEBAG_delete_ptr(sk, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete_ptr(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr))) +#define sk_PKCS12_SAFEBAG_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_pop(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_pop(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_shift(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_shift(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk),ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc)) +#define sk_PKCS12_SAFEBAG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), (idx)) +#define sk_PKCS12_SAFEBAG_set(sk, idx, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_set(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (idx), ossl_check_PKCS12_SAFEBAG_type(ptr))) +#define sk_PKCS12_SAFEBAG_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), pnum) +#define sk_PKCS12_SAFEBAG_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_dup(sk) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_dup(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_copyfunc_type(copyfunc), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc))) +#define sk_PKCS12_SAFEBAG_set_cmp_func(sk, cmp) ((sk_PKCS12_SAFEBAG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs12_bag_st PKCS12_BAGS; + +#define PKCS12_ERROR 0 +#define PKCS12_OK 1 + +/* Compatibility macros */ + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 + +#define M_PKCS12_bag_type PKCS12_bag_type +#define M_PKCS12_cert_bag_type PKCS12_cert_bag_type +#define M_PKCS12_crl_bag_type PKCS12_cert_bag_type + +#define PKCS12_certbag2x509 PKCS12_SAFEBAG_get1_cert +#define PKCS12_certbag2scrl PKCS12_SAFEBAG_get1_crl +#define PKCS12_bag_type PKCS12_SAFEBAG_get_nid +#define PKCS12_cert_bag_type PKCS12_SAFEBAG_get_bag_nid +#define PKCS12_x5092certbag PKCS12_SAFEBAG_create_cert +#define PKCS12_x509crl2certbag PKCS12_SAFEBAG_create_crl +#define PKCS12_MAKE_KEYBAG PKCS12_SAFEBAG_create0_p8inf +#define PKCS12_MAKE_SHKEYBAG PKCS12_SAFEBAG_create_pkcs8_encrypt + +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +#endif + +ASN1_TYPE *PKCS8_get_attr(PKCS8_PRIV_KEY_INFO *p8, int attr_nid); +int PKCS12_mac_present(const PKCS12 *p12); +void PKCS12_get0_mac(const ASN1_OCTET_STRING **pmac, + const X509_ALGOR **pmacalg, + const ASN1_OCTET_STRING **psalt, + const ASN1_INTEGER **piter, + const PKCS12 *p12); + +const ASN1_TYPE *PKCS12_SAFEBAG_get0_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_type(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_nid(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); +const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); + +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); +X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); +X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); +const STACK_OF(PKCS12_SAFEBAG) * +PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); +const PKCS8_PRIV_KEY_INFO *PKCS12_SAFEBAG_get0_p8inf(const PKCS12_SAFEBAG *bag); +const X509_SIG *PKCS12_SAFEBAG_get0_pkcs8(const PKCS12_SAFEBAG *bag); + +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_cert(X509 *x509); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_crl(X509_CRL *crl); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_secret(int type, int vtype, const unsigned char *value, int len); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_p8inf(PKCS8_PRIV_KEY_INFO *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_pkcs8(X509_SIG *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt_ex(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf, + OSSL_LIB_CTX *ctx, + const char *propq); + +PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, + int nid1, int nid2); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(const X509_SIG *p8, const char *pass, + int passlen); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt_ex(const X509_SIG *p8, const char *pass, + int passlen, OSSL_LIB_CTX *ctx, + const char *propq); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey_ex(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen, + OSSL_LIB_CTX *ctx, + const char *propq); +X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8); +X509_SIG *PKCS8_encrypt_ex(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8, + OSSL_LIB_CTX *ctx, const char *propq); +X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); +X509_SIG *PKCS8_set0_pbe_ex(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe, + OSSL_LIB_CTX *ctx, const char *propq); +PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk); +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7); +PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags); +PKCS7 *PKCS12_pack_p7encdata_ex(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags, + OSSL_LIB_CTX *ctx, const char *propq); + +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass, + int passlen); + +int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes); +STACK_OF(PKCS7) *PKCS12_unpack_authsafes(const PKCS12 *p12); + +int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, + int namelen); +int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_utf8(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_CSPName_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag, + const unsigned char *name, int namelen); +int PKCS12_add1_attr_by_NID(PKCS12_SAFEBAG *bag, int nid, int type, + const unsigned char *bytes, int len); +int PKCS12_add1_attr_by_txt(PKCS12_SAFEBAG *bag, const char *attrname, int type, + const unsigned char *bytes, int len); +int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage); +ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, + int attr_nid); +char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); +const STACK_OF(X509_ATTRIBUTE) * +PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); +unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de); +unsigned char *PKCS12_pbe_crypt_ex(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de, OSSL_LIB_CTX *libctx, + const char *propq); +void *PKCS12_item_decrypt_d2i(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf); +void *PKCS12_item_decrypt_d2i_ex(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf, + OSSL_LIB_CTX *libctx, + const char *propq); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt_ex(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf, + OSSL_LIB_CTX *ctx, + const char *propq); +PKCS12 *PKCS12_init(int mode); +PKCS12 *PKCS12_init_ex(int mode, OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_asc_ex(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); +int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_uni_ex(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); +int PKCS12_key_gen_utf8(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_utf8_ex(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); + +int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de); +int PKCS12_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); +int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *mac, unsigned int *maclen); +int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); +int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type); +int PKCS12_set_pbmac1_pbkdf2(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type, const char *prf_md_name); +int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, + int saltlen, const EVP_MD *md_type); +unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2asc(const unsigned char *uni, int unilen); +unsigned char *OPENSSL_utf82uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2utf8(const unsigned char *uni, int unilen); + +DECLARE_ASN1_FUNCTIONS(PKCS12) +DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA) +DECLARE_ASN1_FUNCTIONS(PKCS12_SAFEBAG) +DECLARE_ASN1_FUNCTIONS(PKCS12_BAGS) + +DECLARE_ASN1_ITEM(PKCS12_SAFEBAGS) +DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) + +void PKCS12_PBE_add(void); +int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, + STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); +PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype); +PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); + +PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); +PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass); +PKCS12_SAFEBAG *PKCS12_add_key_ex(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass, + OSSL_LIB_CTX *ctx, const char *propq); + +PKCS12_SAFEBAG *PKCS12_add_secret(STACK_OF(PKCS12_SAFEBAG) **pbags, + int nid_type, const unsigned char *value, int len); +int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass); +int PKCS12_add_safe_ex(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass, + OSSL_LIB_CTX *ctx, const char *propq); + +PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); +PKCS12 *PKCS12_add_safes_ex(STACK_OF(PKCS7) *safes, int p7_nid, + OSSL_LIB_CTX *ctx, const char *propq); + +int i2d_PKCS12_bio(BIO *bp, const PKCS12 *p12); +#ifndef OPENSSL_NO_STDIO +int i2d_PKCS12_fp(FILE *fp, const PKCS12 *p12); +#endif +PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); +#ifndef OPENSSL_NO_STDIO +PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); +#endif +int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/pkcs7.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/pkcs7.h new file mode 100644 index 00000000000000..b6ab21e8b423f7 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/pkcs7.h @@ -0,0 +1,435 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/pkcs7.h.in + * + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_PKCS7_H +#define OPENSSL_PKCS7_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_PKCS7_H +#endif + +#include +#include +#include + +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +Encryption_ID DES-CBC +Digest_ID MD5 +Digest_Encryption_ID rsaEncryption +Key_Encryption_ID rsaEncryption +*/ + +typedef struct PKCS7_CTX_st { + OSSL_LIB_CTX *libctx; + char *propq; +} PKCS7_CTX; + +typedef struct pkcs7_issuer_and_serial_st { + X509_NAME *issuer; + ASN1_INTEGER *serial; +} PKCS7_ISSUER_AND_SERIAL; + +typedef struct pkcs7_signer_info_st { + ASN1_INTEGER *version; /* version 1 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *digest_alg; + STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */ + X509_ALGOR *digest_enc_alg; /* confusing name, actually used for signing */ + ASN1_OCTET_STRING *enc_digest; /* confusing name, actually signature */ + STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */ + /* The private key to sign with */ + EVP_PKEY *pkey; + const PKCS7_CTX *ctx; +} PKCS7_SIGNER_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO) +#define sk_PKCS7_SIGNER_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_value(sk, idx) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), (idx))) +#define sk_PKCS7_SIGNER_INFO_new(cmp) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) +#define sk_PKCS7_SIGNER_INFO_new_null() ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_SIGNER_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp), (n))) +#define sk_PKCS7_SIGNER_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (n)) +#define sk_PKCS7_SIGNER_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_delete(sk, i) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (i))) +#define sk_PKCS7_SIGNER_INFO_delete_ptr(sk, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) +#define sk_PKCS7_SIGNER_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_pop(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_shift(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk),ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc)) +#define sk_PKCS7_SIGNER_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), (idx)) +#define sk_PKCS7_SIGNER_INFO_set(sk, idx, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (idx), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) +#define sk_PKCS7_SIGNER_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), pnum) +#define sk_PKCS7_SIGNER_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_dup(sk) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc))) +#define sk_PKCS7_SIGNER_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_SIGNER_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs7_recip_info_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *key_enc_algor; + ASN1_OCTET_STRING *enc_key; + X509 *cert; /* get the pub-key from this */ + const PKCS7_CTX *ctx; +} PKCS7_RECIP_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INFO) +#define sk_PKCS7_RECIP_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_value(sk, idx) ((PKCS7_RECIP_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), (idx))) +#define sk_PKCS7_RECIP_INFO_new(cmp) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) +#define sk_PKCS7_RECIP_INFO_new_null() ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_RECIP_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp), (n))) +#define sk_PKCS7_RECIP_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (n)) +#define sk_PKCS7_RECIP_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_delete(sk, i) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (i))) +#define sk_PKCS7_RECIP_INFO_delete_ptr(sk, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr))) +#define sk_PKCS7_RECIP_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_pop(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_shift(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk),ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc)) +#define sk_PKCS7_RECIP_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), (idx)) +#define sk_PKCS7_RECIP_INFO_set(sk, idx, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (idx), ossl_check_PKCS7_RECIP_INFO_type(ptr))) +#define sk_PKCS7_RECIP_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), pnum) +#define sk_PKCS7_RECIP_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_dup(sk) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc))) +#define sk_PKCS7_RECIP_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_RECIP_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct pkcs7_signed_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + struct pkcs7_st *contents; +} PKCS7_SIGNED; +/* + * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about + * merging the two + */ + +typedef struct pkcs7_enc_content_st { + ASN1_OBJECT *content_type; + X509_ALGOR *algorithm; + ASN1_OCTET_STRING *enc_data; /* [ 0 ] */ + const EVP_CIPHER *cipher; + const PKCS7_CTX *ctx; +} PKCS7_ENC_CONTENT; + +typedef struct pkcs7_enveloped_st { + ASN1_INTEGER *version; /* version 0 */ + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENVELOPE; + +typedef struct pkcs7_signedandenveloped_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + PKCS7_ENC_CONTENT *enc_data; + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; +} PKCS7_SIGN_ENVELOPE; + +typedef struct pkcs7_digest_st { + ASN1_INTEGER *version; /* version 0 */ + X509_ALGOR *md; /* md used */ + struct pkcs7_st *contents; + ASN1_OCTET_STRING *digest; +} PKCS7_DIGEST; + +typedef struct pkcs7_encrypted_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENCRYPT; + +typedef struct pkcs7_st { + /* + * The following is non NULL if it contains ASN1 encoding of this + * structure + */ + unsigned char *asn1; + long length; +#define PKCS7_S_HEADER 0 +#define PKCS7_S_BODY 1 +#define PKCS7_S_TAIL 2 + int state; /* used during processing */ + int detached; + ASN1_OBJECT *type; + /* content as defined by the type */ + /* + * all encryption/message digests are applied to the 'contents', leaving + * out the 'type' field. + */ + union { + char *ptr; + /* NID_pkcs7_data */ + ASN1_OCTET_STRING *data; + /* NID_pkcs7_signed */ + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ + /* NID_pkcs7_enveloped */ + PKCS7_ENVELOPE *enveloped; + /* NID_pkcs7_signedAndEnveloped */ + PKCS7_SIGN_ENVELOPE *signed_and_enveloped; + /* NID_pkcs7_digest */ + PKCS7_DIGEST *digest; + /* NID_pkcs7_encrypted */ + PKCS7_ENCRYPT *encrypted; + /* Anything else */ + ASN1_TYPE *other; + } d; + PKCS7_CTX ctx; +} PKCS7; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7, PKCS7, PKCS7) +#define sk_PKCS7_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_sk_type(sk)) +#define sk_PKCS7_value(sk, idx) ((PKCS7 *)OPENSSL_sk_value(ossl_check_const_PKCS7_sk_type(sk), (idx))) +#define sk_PKCS7_new(cmp) ((STACK_OF(PKCS7) *)OPENSSL_sk_new(ossl_check_PKCS7_compfunc_type(cmp))) +#define sk_PKCS7_new_null() ((STACK_OF(PKCS7) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_new_reserve(cmp, n) ((STACK_OF(PKCS7) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_compfunc_type(cmp), (n))) +#define sk_PKCS7_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_sk_type(sk), (n)) +#define sk_PKCS7_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_delete(sk, i) ((PKCS7 *)OPENSSL_sk_delete(ossl_check_PKCS7_sk_type(sk), (i))) +#define sk_PKCS7_delete_ptr(sk, ptr) ((PKCS7 *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr))) +#define sk_PKCS7_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_pop(sk) ((PKCS7 *)OPENSSL_sk_pop(ossl_check_PKCS7_sk_type(sk))) +#define sk_PKCS7_shift(sk) ((PKCS7 *)OPENSSL_sk_shift(ossl_check_PKCS7_sk_type(sk))) +#define sk_PKCS7_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_sk_type(sk),ossl_check_PKCS7_freefunc_type(freefunc)) +#define sk_PKCS7_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), (idx)) +#define sk_PKCS7_set(sk, idx, ptr) ((PKCS7 *)OPENSSL_sk_set(ossl_check_PKCS7_sk_type(sk), (idx), ossl_check_PKCS7_type(ptr))) +#define sk_PKCS7_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), pnum) +#define sk_PKCS7_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_sk_type(sk)) +#define sk_PKCS7_dup(sk) ((STACK_OF(PKCS7) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_sk_type(sk))) +#define sk_PKCS7_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_sk_type(sk), ossl_check_PKCS7_copyfunc_type(copyfunc), ossl_check_PKCS7_freefunc_type(freefunc))) +#define sk_PKCS7_set_cmp_func(sk, cmp) ((sk_PKCS7_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_compfunc_type(cmp))) + +/* clang-format on */ + +#define PKCS7_OP_SET_DETACHED_SIGNATURE 1 +#define PKCS7_OP_GET_DETACHED_SIGNATURE 2 + +#define PKCS7_get_signed_attributes(si) ((si)->auth_attr) +#define PKCS7_get_attributes(si) ((si)->unauth_attr) + +#define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed) +#define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted) +#define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped) +#define PKCS7_type_is_signedAndEnveloped(a) \ + (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped) +#define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data) +#define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest) + +#define PKCS7_set_detached(p, v) \ + PKCS7_ctrl(p, PKCS7_OP_SET_DETACHED_SIGNATURE, v, NULL) +#define PKCS7_get_detached(p) \ + PKCS7_ctrl(p, PKCS7_OP_GET_DETACHED_SIGNATURE, 0, NULL) + +#define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7)) + +/* S/MIME related flags */ + +#define PKCS7_TEXT 0x1 +#define PKCS7_NOCERTS 0x2 +#define PKCS7_NOSIGS 0x4 +#define PKCS7_NOCHAIN 0x8 +#define PKCS7_NOINTERN 0x10 +#define PKCS7_NOVERIFY 0x20 +#define PKCS7_DETACHED 0x40 +#define PKCS7_BINARY 0x80 +#define PKCS7_NOATTR 0x100 +#define PKCS7_NOSMIMECAP 0x200 +#define PKCS7_NOOLDMIMETYPE 0x400 +#define PKCS7_CRLFEOL 0x800 +#define PKCS7_STREAM 0x1000 +#define PKCS7_NOCRL 0x2000 +#define PKCS7_PARTIAL 0x4000 +#define PKCS7_REUSE_DIGEST 0x8000 +#define PKCS7_NO_DUAL_CONTENT 0x10000 + +/* Flags: for compatibility with older code */ + +#define SMIME_TEXT PKCS7_TEXT +#define SMIME_NOCERTS PKCS7_NOCERTS +#define SMIME_NOSIGS PKCS7_NOSIGS +#define SMIME_NOCHAIN PKCS7_NOCHAIN +#define SMIME_NOINTERN PKCS7_NOINTERN +#define SMIME_NOVERIFY PKCS7_NOVERIFY +#define SMIME_DETACHED PKCS7_DETACHED +#define SMIME_BINARY PKCS7_BINARY +#define SMIME_NOATTR PKCS7_NOATTR + +/* CRLF ASCII canonicalisation */ +#define SMIME_ASCIICRLF 0x80000 + +DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) + +int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, + const EVP_MD *type, unsigned char *md, + unsigned int *len); +#ifndef OPENSSL_NO_STDIO +PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7); +int i2d_PKCS7_fp(FILE *fp, const PKCS7 *p7); +#endif +DECLARE_ASN1_DUP_FUNCTION(PKCS7) +PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); +int i2d_PKCS7_bio(BIO *bp, const PKCS7 *p7); +int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); +int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); + +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT) +DECLARE_ASN1_FUNCTIONS(PKCS7) +PKCS7 *PKCS7_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN) +DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY) + +DECLARE_ASN1_NDEF_FUNCTION(PKCS7) +DECLARE_ASN1_PRINT_FUNCTION(PKCS7) + +long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg); + +int PKCS7_type_is_other(PKCS7 *p7); +int PKCS7_set_type(PKCS7 *p7, int type); +int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other); +int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data); +int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, + const EVP_MD *dgst); +int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); +int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); +int PKCS7_content_new(PKCS7 *p7, int nid); +int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, + BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, + X509 *signer); + +BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); +int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); +BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert); + +PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, + EVP_PKEY *pkey, const EVP_MD *dgst); +X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md); +STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7); + +PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); +void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk, + X509_ALGOR **pdig, X509_ALGOR **psig); +void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc); +int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); +int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); +int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher); +int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7); + +PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx); +ASN1_OCTET_STRING *PKCS7_get_octet_string(PKCS7 *p7); +ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type, + void *data); +int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype, + void *value); +ASN1_TYPE *PKCS7_get_attribute(const PKCS7_SIGNER_INFO *si, int nid); +ASN1_TYPE *PKCS7_get_signed_attribute(const PKCS7_SIGNER_INFO *si, int nid); +int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); + +PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags); +PKCS7 *PKCS7_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags, OSSL_LIB_CTX *libctx, + const char *propq); + +PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, + X509 *signcert, EVP_PKEY *pkey, + const EVP_MD *md, int flags); + +int PKCS7_final(PKCS7 *p7, BIO *data, int flags); +int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, + BIO *indata, BIO *out, int flags); +STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, + int flags); +PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, + int flags); +PKCS7 *PKCS7_encrypt_ex(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, int flags, + OSSL_LIB_CTX *libctx, const char *propq); +int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, + int flags); + +int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, + STACK_OF(X509_ALGOR) *cap); +STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si); +int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg); + +int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid); +int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t); +int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, + const unsigned char *md, int mdlen); + +int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags); +PKCS7 *SMIME_read_PKCS7_ex(BIO *bio, BIO **bcont, PKCS7 **p7); +PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); + +BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/safestack.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/safestack.h new file mode 100644 index 00000000000000..084f610b5bf705 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/safestack.h @@ -0,0 +1,303 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/safestack.h.in + * + * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SAFESTACK_H +#define OPENSSL_SAFESTACK_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SAFESTACK_H +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define STACK_OF(type) struct stack_st_##type + +/* Helper macro for internal use */ +#define SKM_DEFINE_STACK_OF_INTERNAL(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 *const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 * a); \ + typedef t3 *(*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_unused ossl_inline t2 *ossl_check_##t1##_type(t2 *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const OPENSSL_STACK *ossl_check_const_##t1##_sk_type(const STACK_OF(t1) *sk) \ + { \ + return (const OPENSSL_STACK *)sk; \ + } \ + static ossl_unused ossl_inline OPENSSL_STACK *ossl_check_##t1##_sk_type(STACK_OF(t1) *sk) \ + { \ + return (OPENSSL_STACK *)sk; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_compfunc ossl_check_##t1##_compfunc_type(sk_##t1##_compfunc cmp) \ + { \ + return (OPENSSL_sk_compfunc)cmp; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_copyfunc ossl_check_##t1##_copyfunc_type(sk_##t1##_copyfunc cpy) \ + { \ + return (OPENSSL_sk_copyfunc)cpy; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_freefunc ossl_check_##t1##_freefunc_type(sk_##t1##_freefunc fr) \ + { \ + return (OPENSSL_sk_freefunc)fr; \ + } + +#define SKM_DEFINE_STACK_OF(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 *const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 * a); \ + typedef t3 *(*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + { \ + return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ + { \ + return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_free((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + { \ + return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \ + (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ + { \ + OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ + { \ + return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_all(STACK_OF(t1) *sk, t2 *ptr, int *pnum) \ + { \ + return OPENSSL_sk_find_all((OPENSSL_STACK *)sk, (const void *)ptr, pnum); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_dup(const STACK_OF(t1) *sk) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ + sk_##t1##_copyfunc copyfunc, \ + sk_##t1##_freefunc freefunc) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, \ + (OPENSSL_sk_copyfunc)copyfunc, \ + (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ + { \ + return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \ + } + +#define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) +#define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) +#define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) +#define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ + SKM_DEFINE_STACK_OF(t1, const t2, t2) + +/*- + * Strings are special: normally an lhash entry will point to a single + * (somewhat) mutable object. In the case of strings: + * + * a) Instead of a single char, there is an array of chars, NUL-terminated. + * b) The string may have be immutable. + * + * So, they need their own declarations. Especially important for + * type-checking tools, such as Deputy. + * + * In practice, however, it appears to be hard to have a const + * string. For now, I'm settling for dealing with the fact it is a + * string at all. + */ +typedef char *OPENSSL_STRING; +typedef const char *OPENSSL_CSTRING; + +/*- + * Confusingly, LHASH_OF(STRING) deals with char ** throughout, but + * STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned + * above, instead of a single char each entry is a NUL-terminated array of + * chars. So, we have to implement STRING specially for STACK_OF. This is + * dealt with in the autogenerated macros below. + */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_STRING, char, char) +#define sk_OPENSSL_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_value(sk, idx) ((char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_STRING_sk_type(sk), (idx))) +#define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_STRING_compfunc_type(cmp))) +#define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_STRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_STRING_compfunc_type(cmp), (n))) +#define sk_OPENSSL_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_STRING_sk_type(sk), (n)) +#define sk_OPENSSL_STRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_delete(sk, i) ((char *)OPENSSL_sk_delete(ossl_check_OPENSSL_STRING_sk_type(sk), (i))) +#define sk_OPENSSL_STRING_delete_ptr(sk, ptr) ((char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))) +#define sk_OPENSSL_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_pop(sk) ((char *)OPENSSL_sk_pop(ossl_check_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_shift(sk) ((char *)OPENSSL_sk_shift(ossl_check_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_STRING_sk_type(sk),ossl_check_OPENSSL_STRING_freefunc_type(freefunc)) +#define sk_OPENSSL_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), (idx)) +#define sk_OPENSSL_STRING_set(sk, idx, ptr) ((char *)OPENSSL_sk_set(ossl_check_OPENSSL_STRING_sk_type(sk), (idx), ossl_check_OPENSSL_STRING_type(ptr))) +#define sk_OPENSSL_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), pnum) +#define sk_OPENSSL_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_dup(sk) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_STRING_freefunc_type(freefunc))) +#define sk_OPENSSL_STRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_CSTRING, const char, char) +#define sk_OPENSSL_CSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_value(sk, idx) ((const char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), (idx))) +#define sk_OPENSSL_CSTRING_new(cmp) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) +#define sk_OPENSSL_CSTRING_new_null() ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_CSTRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp), (n))) +#define sk_OPENSSL_CSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_CSTRING_sk_type(sk), (n)) +#define sk_OPENSSL_CSTRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_delete(sk, i) ((const char *)OPENSSL_sk_delete(ossl_check_OPENSSL_CSTRING_sk_type(sk), (i))) +#define sk_OPENSSL_CSTRING_delete_ptr(sk, ptr) ((const char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))) +#define sk_OPENSSL_CSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_pop(sk) ((const char *)OPENSSL_sk_pop(ossl_check_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_shift(sk) ((const char *)OPENSSL_sk_shift(ossl_check_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_CSTRING_sk_type(sk),ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc)) +#define sk_OPENSSL_CSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), (idx)) +#define sk_OPENSSL_CSTRING_set(sk, idx, ptr) ((const char *)OPENSSL_sk_set(ossl_check_OPENSSL_CSTRING_sk_type(sk), (idx), ossl_check_OPENSSL_CSTRING_type(ptr))) +#define sk_OPENSSL_CSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), pnum) +#define sk_OPENSSL_CSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_dup(sk) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc))) +#define sk_OPENSSL_CSTRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_CSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) + +/* clang-format on */ + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) +/* + * This is not used by OpenSSL. A block of bytes, NOT nul-terminated. + * These should also be distinguished from "normal" stacks. + */ +typedef void *OPENSSL_BLOCK; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_BLOCK, void, void) +#define sk_OPENSSL_BLOCK_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), (idx))) +#define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) +#define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_BLOCK_new_reserve(cmp, n) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp), (n))) +#define sk_OPENSSL_BLOCK_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_BLOCK_sk_type(sk), (n)) +#define sk_OPENSSL_BLOCK_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_OPENSSL_BLOCK_sk_type(sk), (i))) +#define sk_OPENSSL_BLOCK_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))) +#define sk_OPENSSL_BLOCK_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_BLOCK_sk_type(sk),ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc)) +#define sk_OPENSSL_BLOCK_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), (idx)) +#define sk_OPENSSL_BLOCK_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_OPENSSL_BLOCK_sk_type(sk), (idx), ossl_check_OPENSSL_BLOCK_type(ptr))) +#define sk_OPENSSL_BLOCK_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), pnum) +#define sk_OPENSSL_BLOCK_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_dup(sk) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_copyfunc_type(copyfunc), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc))) +#define sk_OPENSSL_BLOCK_set_cmp_func(sk, cmp) ((sk_OPENSSL_BLOCK_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) + +/* clang-format on */ +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/srp.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/srp.h new file mode 100644 index 00000000000000..4ef926d61fc8fa --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/srp.h @@ -0,0 +1,291 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/srp.h.in + * + * Copyright 2004-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2004, EdelKey Project. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + * + * Originally written by Christophe Renou and Peter Sylvester, + * for the EdelKey project. + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SRP_H +#define OPENSSL_SRP_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SRP_H +#endif + +#include + +#ifndef OPENSSL_NO_SRP +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +typedef struct SRP_gN_cache_st { + char *b64_bn; + BIGNUM *bn; +} SRP_gN_cache; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN_cache, SRP_gN_cache, SRP_gN_cache) +#define sk_SRP_gN_cache_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_value(sk, idx) ((SRP_gN_cache *)OPENSSL_sk_value(ossl_check_const_SRP_gN_cache_sk_type(sk), (idx))) +#define sk_SRP_gN_cache_new(cmp) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new(ossl_check_SRP_gN_cache_compfunc_type(cmp))) +#define sk_SRP_gN_cache_new_null() ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_null()) +#define sk_SRP_gN_cache_new_reserve(cmp, n) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_cache_compfunc_type(cmp), (n))) +#define sk_SRP_gN_cache_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_cache_sk_type(sk), (n)) +#define sk_SRP_gN_cache_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_delete(sk, i) ((SRP_gN_cache *)OPENSSL_sk_delete(ossl_check_SRP_gN_cache_sk_type(sk), (i))) +#define sk_SRP_gN_cache_delete_ptr(sk, ptr) ((SRP_gN_cache *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))) +#define sk_SRP_gN_cache_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_pop(sk) ((SRP_gN_cache *)OPENSSL_sk_pop(ossl_check_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_shift(sk) ((SRP_gN_cache *)OPENSSL_sk_shift(ossl_check_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_cache_sk_type(sk),ossl_check_SRP_gN_cache_freefunc_type(freefunc)) +#define sk_SRP_gN_cache_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), (idx)) +#define sk_SRP_gN_cache_set(sk, idx, ptr) ((SRP_gN_cache *)OPENSSL_sk_set(ossl_check_SRP_gN_cache_sk_type(sk), (idx), ossl_check_SRP_gN_cache_type(ptr))) +#define sk_SRP_gN_cache_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), pnum) +#define sk_SRP_gN_cache_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_dup(sk) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_copyfunc_type(copyfunc), ossl_check_SRP_gN_cache_freefunc_type(freefunc))) +#define sk_SRP_gN_cache_set_cmp_func(sk, cmp) ((sk_SRP_gN_cache_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct SRP_user_pwd_st { + /* Owned by us. */ + char *id; + BIGNUM *s; + BIGNUM *v; + /* Not owned by us. */ + const BIGNUM *g; + const BIGNUM *N; + /* Owned by us. */ + char *info; +} SRP_user_pwd; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_user_pwd, SRP_user_pwd, SRP_user_pwd) +#define sk_SRP_user_pwd_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_value(sk, idx) ((SRP_user_pwd *)OPENSSL_sk_value(ossl_check_const_SRP_user_pwd_sk_type(sk), (idx))) +#define sk_SRP_user_pwd_new(cmp) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new(ossl_check_SRP_user_pwd_compfunc_type(cmp))) +#define sk_SRP_user_pwd_new_null() ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_null()) +#define sk_SRP_user_pwd_new_reserve(cmp, n) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_reserve(ossl_check_SRP_user_pwd_compfunc_type(cmp), (n))) +#define sk_SRP_user_pwd_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_user_pwd_sk_type(sk), (n)) +#define sk_SRP_user_pwd_free(sk) OPENSSL_sk_free(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_delete(sk, i) ((SRP_user_pwd *)OPENSSL_sk_delete(ossl_check_SRP_user_pwd_sk_type(sk), (i))) +#define sk_SRP_user_pwd_delete_ptr(sk, ptr) ((SRP_user_pwd *)OPENSSL_sk_delete_ptr(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))) +#define sk_SRP_user_pwd_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_pop(sk) ((SRP_user_pwd *)OPENSSL_sk_pop(ossl_check_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_shift(sk) ((SRP_user_pwd *)OPENSSL_sk_shift(ossl_check_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_user_pwd_sk_type(sk),ossl_check_SRP_user_pwd_freefunc_type(freefunc)) +#define sk_SRP_user_pwd_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), (idx)) +#define sk_SRP_user_pwd_set(sk, idx, ptr) ((SRP_user_pwd *)OPENSSL_sk_set(ossl_check_SRP_user_pwd_sk_type(sk), (idx), ossl_check_SRP_user_pwd_type(ptr))) +#define sk_SRP_user_pwd_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), pnum) +#define sk_SRP_user_pwd_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_dup(sk) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_dup(ossl_check_const_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_copyfunc_type(copyfunc), ossl_check_SRP_user_pwd_freefunc_type(freefunc))) +#define sk_SRP_user_pwd_set_cmp_func(sk, cmp) ((sk_SRP_user_pwd_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_compfunc_type(cmp))) + +/* clang-format on */ + +OSSL_DEPRECATEDIN_3_0 +SRP_user_pwd *SRP_user_pwd_new(void); +OSSL_DEPRECATEDIN_3_0 +void SRP_user_pwd_free(SRP_user_pwd *user_pwd); + +OSSL_DEPRECATEDIN_3_0 +void SRP_user_pwd_set_gN(SRP_user_pwd *user_pwd, const BIGNUM *g, + const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +int SRP_user_pwd_set1_ids(SRP_user_pwd *user_pwd, const char *id, + const char *info); +OSSL_DEPRECATEDIN_3_0 +int SRP_user_pwd_set0_sv(SRP_user_pwd *user_pwd, BIGNUM *s, BIGNUM *v); + +typedef struct SRP_VBASE_st { + STACK_OF(SRP_user_pwd) *users_pwd; + STACK_OF(SRP_gN_cache) *gN_cache; + /* to simulate a user */ + char *seed_key; + const BIGNUM *default_g; + const BIGNUM *default_N; +} SRP_VBASE; + +/* + * Internal structure storing N and g pair + */ +typedef struct SRP_gN_st { + char *id; + const BIGNUM *g; + const BIGNUM *N; +} SRP_gN; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN, SRP_gN, SRP_gN) +#define sk_SRP_gN_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_value(sk, idx) ((SRP_gN *)OPENSSL_sk_value(ossl_check_const_SRP_gN_sk_type(sk), (idx))) +#define sk_SRP_gN_new(cmp) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new(ossl_check_SRP_gN_compfunc_type(cmp))) +#define sk_SRP_gN_new_null() ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_null()) +#define sk_SRP_gN_new_reserve(cmp, n) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_compfunc_type(cmp), (n))) +#define sk_SRP_gN_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_sk_type(sk), (n)) +#define sk_SRP_gN_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_delete(sk, i) ((SRP_gN *)OPENSSL_sk_delete(ossl_check_SRP_gN_sk_type(sk), (i))) +#define sk_SRP_gN_delete_ptr(sk, ptr) ((SRP_gN *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))) +#define sk_SRP_gN_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_pop(sk) ((SRP_gN *)OPENSSL_sk_pop(ossl_check_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_shift(sk) ((SRP_gN *)OPENSSL_sk_shift(ossl_check_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_sk_type(sk),ossl_check_SRP_gN_freefunc_type(freefunc)) +#define sk_SRP_gN_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), (idx)) +#define sk_SRP_gN_set(sk, idx, ptr) ((SRP_gN *)OPENSSL_sk_set(ossl_check_SRP_gN_sk_type(sk), (idx), ossl_check_SRP_gN_type(ptr))) +#define sk_SRP_gN_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), pnum) +#define sk_SRP_gN_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_dup(sk) ((STACK_OF(SRP_gN) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_sk_type(sk), ossl_check_SRP_gN_copyfunc_type(copyfunc), ossl_check_SRP_gN_freefunc_type(freefunc))) +#define sk_SRP_gN_set_cmp_func(sk, cmp) ((sk_SRP_gN_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_compfunc_type(cmp))) + +/* clang-format on */ + +OSSL_DEPRECATEDIN_3_0 +SRP_VBASE *SRP_VBASE_new(char *seed_key); +OSSL_DEPRECATEDIN_3_0 +void SRP_VBASE_free(SRP_VBASE *vb); +OSSL_DEPRECATEDIN_3_0 +int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); + +OSSL_DEPRECATEDIN_3_0 +int SRP_VBASE_add0_user(SRP_VBASE *vb, SRP_user_pwd *user_pwd); + +/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ +OSSL_DEPRECATEDIN_3_0 +SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); + +OSSL_DEPRECATEDIN_3_0 +char *SRP_create_verifier_ex(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +char *SRP_create_verifier(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g); +OSSL_DEPRECATEDIN_3_0 +int SRP_create_verifier_BN_ex(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g, OSSL_LIB_CTX *libctx, + const char *propq); +OSSL_DEPRECATEDIN_3_0 +int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g); + +#define SRP_NO_ERROR 0 +#define SRP_ERR_VBASE_INCOMPLETE_FILE 1 +#define SRP_ERR_VBASE_BN_LIB 2 +#define SRP_ERR_OPEN_FILE 3 +#define SRP_ERR_MEMORY 4 + +#define DB_srptype 0 +#define DB_srpverifier 1 +#define DB_srpsalt 2 +#define DB_srpid 3 +#define DB_srpgN 4 +#define DB_srpinfo 5 +#undef DB_NUMBER +#define DB_NUMBER 6 + +#define DB_SRP_INDEX 'I' +#define DB_SRP_VALID 'V' +#define DB_SRP_REVOKED 'R' +#define DB_SRP_MODIF 'v' + +/* see srp.c */ +OSSL_DEPRECATEDIN_3_0 +char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +SRP_gN *SRP_get_default_gN(const char *id); + +/* server side .... */ +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, + const BIGNUM *b, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_B_ex(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v, OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v); + +OSSL_DEPRECATEDIN_3_0 +int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_u_ex(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); + +/* client side .... */ + +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_x_ex(const BIGNUM *s, const char *user, const char *pass, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_client_key_ex(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); +OSSL_DEPRECATEDIN_3_0 +int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); + +#define SRP_MINIMAL_N 1024 + +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/* This method ignores the configured seed and fails for an unknown user. */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 +SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username); +#endif + +#ifdef __cplusplus +} +#endif +#endif + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ssl.h new file mode 100644 index 00000000000000..eaeeea7d10b407 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ssl.h @@ -0,0 +1,2940 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/ssl.h.in + * + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_SSL_H +#define OPENSSL_SSL_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_SSL_H +#endif + +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#endif +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* OpenSSL version number for ASN.1 encoding of the session information */ +/*- + * Version 0 - initial version + * Version 1 - added the optional peer certificate + */ +#define SSL_SESSION_ASN1_VERSION 0x0001 + +#define SSL_MAX_SSL_SESSION_ID_LENGTH 32 +#define SSL_MAX_SID_CTX_LENGTH 32 + +#define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512 / 8) +#define SSL_MAX_KEY_ARG_LENGTH 8 +/* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */ + +/* The maximum number of encrypt/decrypt pipelines we can support */ +#define SSL_MAX_PIPELINES 32 + +/* text strings for the ciphers */ + +/* These are used to specify which ciphers to use and not to use */ + +#define SSL_TXT_LOW "LOW" +#define SSL_TXT_MEDIUM "MEDIUM" +#define SSL_TXT_HIGH "HIGH" +#define SSL_TXT_FIPS "FIPS" + +#define SSL_TXT_aNULL "aNULL" +#define SSL_TXT_eNULL "eNULL" +#define SSL_TXT_NULL "NULL" + +#define SSL_TXT_kRSA "kRSA" +#define SSL_TXT_kDHr "kDHr" /* this cipher class has been removed */ +#define SSL_TXT_kDHd "kDHd" /* this cipher class has been removed */ +#define SSL_TXT_kDH "kDH" /* this cipher class has been removed */ +#define SSL_TXT_kEDH "kEDH" /* alias for kDHE */ +#define SSL_TXT_kDHE "kDHE" +#define SSL_TXT_kECDHr "kECDHr" /* this cipher class has been removed */ +#define SSL_TXT_kECDHe "kECDHe" /* this cipher class has been removed */ +#define SSL_TXT_kECDH "kECDH" /* this cipher class has been removed */ +#define SSL_TXT_kEECDH "kEECDH" /* alias for kECDHE */ +#define SSL_TXT_kECDHE "kECDHE" +#define SSL_TXT_kPSK "kPSK" +#define SSL_TXT_kRSAPSK "kRSAPSK" +#define SSL_TXT_kECDHEPSK "kECDHEPSK" +#define SSL_TXT_kDHEPSK "kDHEPSK" +#define SSL_TXT_kGOST "kGOST" +#define SSL_TXT_kGOST18 "kGOST18" +#define SSL_TXT_kSRP "kSRP" + +#define SSL_TXT_aRSA "aRSA" +#define SSL_TXT_aDSS "aDSS" +#define SSL_TXT_aDH "aDH" /* this cipher class has been removed */ +#define SSL_TXT_aECDH "aECDH" /* this cipher class has been removed */ +#define SSL_TXT_aECDSA "aECDSA" +#define SSL_TXT_aPSK "aPSK" +#define SSL_TXT_aGOST94 "aGOST94" +#define SSL_TXT_aGOST01 "aGOST01" +#define SSL_TXT_aGOST12 "aGOST12" +#define SSL_TXT_aGOST "aGOST" +#define SSL_TXT_aSRP "aSRP" + +#define SSL_TXT_DSS "DSS" +#define SSL_TXT_DH "DH" +#define SSL_TXT_DHE "DHE" /* same as "kDHE:-ADH" */ +#define SSL_TXT_EDH "EDH" /* alias for DHE */ +#define SSL_TXT_ADH "ADH" +#define SSL_TXT_RSA "RSA" +#define SSL_TXT_ECDH "ECDH" +#define SSL_TXT_EECDH "EECDH" /* alias for ECDHE" */ +#define SSL_TXT_ECDHE "ECDHE" /* same as "kECDHE:-AECDH" */ +#define SSL_TXT_AECDH "AECDH" +#define SSL_TXT_ECDSA "ECDSA" +#define SSL_TXT_PSK "PSK" +#define SSL_TXT_SRP "SRP" + +#define SSL_TXT_DES "DES" +#define SSL_TXT_3DES "3DES" +#define SSL_TXT_RC4 "RC4" +#define SSL_TXT_RC2 "RC2" +#define SSL_TXT_IDEA "IDEA" +#define SSL_TXT_SEED "SEED" +#define SSL_TXT_AES128 "AES128" +#define SSL_TXT_AES256 "AES256" +#define SSL_TXT_AES "AES" +#define SSL_TXT_AES_GCM "AESGCM" +#define SSL_TXT_AES_CCM "AESCCM" +#define SSL_TXT_AES_CCM_8 "AESCCM8" +#define SSL_TXT_CAMELLIA128 "CAMELLIA128" +#define SSL_TXT_CAMELLIA256 "CAMELLIA256" +#define SSL_TXT_CAMELLIA "CAMELLIA" +#define SSL_TXT_CHACHA20 "CHACHA20" +#define SSL_TXT_GOST "GOST89" +#define SSL_TXT_ARIA "ARIA" +#define SSL_TXT_ARIA_GCM "ARIAGCM" +#define SSL_TXT_ARIA128 "ARIA128" +#define SSL_TXT_ARIA256 "ARIA256" +#define SSL_TXT_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912" +#define SSL_TXT_CBC "CBC" + +#define SSL_TXT_MD5 "MD5" +#define SSL_TXT_SHA1 "SHA1" +#define SSL_TXT_SHA "SHA" /* same as "SHA1" */ +#define SSL_TXT_GOST94 "GOST94" +#define SSL_TXT_GOST89MAC "GOST89MAC" +#define SSL_TXT_GOST12 "GOST12" +#define SSL_TXT_GOST89MAC12 "GOST89MAC12" +#define SSL_TXT_SHA256 "SHA256" +#define SSL_TXT_SHA384 "SHA384" + +#define SSL_TXT_SSLV3 "SSLv3" +#define SSL_TXT_TLSV1 "TLSv1" +#define SSL_TXT_TLSV1_1 "TLSv1.1" +#define SSL_TXT_TLSV1_2 "TLSv1.2" + +#define SSL_TXT_ALL "ALL" + +/*- + * COMPLEMENTOF* definitions. These identifiers are used to (de-select) + * ciphers normally not being used. + * Example: "RC4" will activate all ciphers using RC4 including ciphers + * without authentication, which would normally disabled by DEFAULT (due + * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" + * will make sure that it is also disabled in the specific selection. + * COMPLEMENTOF* identifiers are portable between version, as adjustments + * to the default cipher setup will also be included here. + * + * COMPLEMENTOFDEFAULT does not experience the same special treatment that + * DEFAULT gets, as only selection is being done and no sorting as needed + * for DEFAULT. + */ +#define SSL_TXT_CMPALL "COMPLEMENTOFALL" +#define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" + +/* + * The following cipher list is used by default. It also is substituted when + * an application-defined cipher list string starts with 'DEFAULT'. + * This applies to ciphersuites for TLSv1.2 and below. + * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list() + * Update both macro and function simultaneously + */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" +/* + * This is the default set of TLSv1.3 ciphersuites + * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites() + * Update both macro and function simultaneously + */ +#define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_CHACHA20_POLY1305_SHA256:" \ + "TLS_AES_128_GCM_SHA256" +#endif +/* + * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always + * starts with a reasonable order, and all we have to do for DEFAULT is + * throwing out anonymous and unencrypted ciphersuites! (The latter are not + * actually enabled by ALL, but "ALL:RSA" would enable some of them.) + */ + +/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ +#define SSL_SENT_SHUTDOWN 1 +#define SSL_RECEIVED_SHUTDOWN 2 + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 +#define SSL_FILETYPE_PEM X509_FILETYPE_PEM + +/* + * This is needed to stop compilers complaining about the 'struct ssl_st *' + * function parameters used to prototype callbacks in SSL_CTX. + */ +typedef struct ssl_st *ssl_crock_st; +typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; +typedef struct ssl_method_st SSL_METHOD; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct ssl_session_st SSL_SESSION; +typedef struct tls_sigalgs_st TLS_SIGALGS; +typedef struct ssl_conf_ctx_st SSL_CONF_CTX; + +STACK_OF(SSL_CIPHER); + +/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ +typedef struct srtp_protection_profile_st { + const char *name; + unsigned long id; +} SRTP_PROTECTION_PROFILE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE) +#define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx))) +#define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) +#define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null()) +#define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n))) +#define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n)) +#define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i))) +#define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) +#define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk),ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)) +#define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx)) +#define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) +#define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum) +#define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))) +#define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, + int len, void *arg); +typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, + STACK_OF(SSL_CIPHER) *peer_ciphers, + const SSL_CIPHER **cipher, void *arg); + +/* Extension context codes */ +/* This extension is only allowed in TLS */ +#define SSL_EXT_TLS_ONLY 0x00001 +/* This extension is only allowed in DTLS */ +#define SSL_EXT_DTLS_ONLY 0x00002 +/* Some extensions may be allowed in DTLS but we don't implement them for it */ +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 +/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ +#define SSL_EXT_SSL3_ALLOWED 0x00008 +/* Extension is only defined for TLS1.2 and below */ +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 +/* Extension is only defined for TLS1.3 and above */ +#define SSL_EXT_TLS1_3_ONLY 0x00020 +/* Ignore this extension during parsing if we are resuming */ +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 +/* Really means TLS1.2 or below */ +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 + +/* Typedefs for handling custom extensions */ + +typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type, + const unsigned char **out, size_t *outlen, + int *al, void *add_arg); + +typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type, + const unsigned char *out, void *add_arg); + +typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type, + const unsigned char *in, size_t inlen, + int *al, void *parse_arg); + +typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char **out, + size_t *outlen, X509 *x, + size_t chainidx, + int *al, void *add_arg); + +typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *out, + void *add_arg); + +typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *in, + size_t inlen, X509 *x, + size_t chainidx, + int *al, void *parse_arg); + +/* Typedef for verification callback */ +typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); + +/* Typedef for SSL async callback */ +typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); + +#define SSL_OP_BIT(n) ((uint64_t)1 << (uint64_t)n) + +/* + * SSL/TLS connection options. + */ +/* Disable Extended master secret */ +#define SSL_OP_NO_EXTENDED_MASTER_SECRET SSL_OP_BIT(0) +/* Cleanse plaintext copies of data delivered to the application */ +#define SSL_OP_CLEANSE_PLAINTEXT SSL_OP_BIT(1) +/* Allow initial connection to servers that don't support RI */ +#define SSL_OP_LEGACY_SERVER_CONNECT SSL_OP_BIT(2) +/* Enable support for Kernel TLS */ +#define SSL_OP_ENABLE_KTLS SSL_OP_BIT(3) +#define SSL_OP_TLSEXT_PADDING SSL_OP_BIT(4) +#define SSL_OP_SAFARI_ECDHE_ECDSA_BUG SSL_OP_BIT(6) +#define SSL_OP_IGNORE_UNEXPECTED_EOF SSL_OP_BIT(7) +#define SSL_OP_ALLOW_CLIENT_RENEGOTIATION SSL_OP_BIT(8) +#define SSL_OP_DISABLE_TLSEXT_CA_NAMES SSL_OP_BIT(9) +/* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ +#define SSL_OP_ALLOW_NO_DHE_KEX SSL_OP_BIT(10) +/* + * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added + * in OpenSSL 0.9.6d. Usually (depending on the application protocol) + * the workaround is not needed. Unfortunately some broken SSL/TLS + * implementations cannot handle it at all, which is why we include it + * in SSL_OP_ALL. Added in 0.9.6e + */ +#define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS SSL_OP_BIT(11) +/* DTLS options */ +#define SSL_OP_NO_QUERY_MTU SSL_OP_BIT(12) +/* Turn on Cookie Exchange (on relevant for servers) */ +#define SSL_OP_COOKIE_EXCHANGE SSL_OP_BIT(13) +/* Don't use RFC4507 ticket extension */ +#define SSL_OP_NO_TICKET SSL_OP_BIT(14) +#ifndef OPENSSL_NO_DTLS1_METHOD +/* + * Use Cisco's version identifier of DTLS_BAD_VER + * (only with deprecated DTLSv1_client_method()) + */ +#define SSL_OP_CISCO_ANYCONNECT SSL_OP_BIT(15) +#endif +/* As server, disallow session resumption on renegotiation */ +#define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION SSL_OP_BIT(16) +/* Don't use compression even if supported */ +#define SSL_OP_NO_COMPRESSION SSL_OP_BIT(17) +/* Permit unsafe legacy renegotiation */ +#define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION SSL_OP_BIT(18) +/* Disable encrypt-then-mac */ +#define SSL_OP_NO_ENCRYPT_THEN_MAC SSL_OP_BIT(19) +/* + * Enable TLSv1.3 Compatibility mode. This is on by default. A future + * version of OpenSSL may have this disabled by default. + */ +#define SSL_OP_ENABLE_MIDDLEBOX_COMPAT SSL_OP_BIT(20) +/* + * Prioritize Chacha20Poly1305 when client does. + * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE + */ +#define SSL_OP_PRIORITIZE_CHACHA SSL_OP_BIT(21) +/* + * Set on servers to choose the cipher according to server's preferences. + */ +#define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) +/* + * If set, a server will allow a client to issue an SSLv3.0 version + * number as latest version supported in the premaster secret, even when + * TLSv1.0 (version 3.1) was announced in the client hello. Normally + * this is forbidden to prevent version rollback attacks. + */ +#define SSL_OP_TLS_ROLLBACK_BUG SSL_OP_BIT(23) +/* + * Switches off automatic TLSv1.3 anti-replay protection for early data. + * This is a server-side option only (no effect on the client). + */ +#define SSL_OP_NO_ANTI_REPLAY SSL_OP_BIT(24) +#define SSL_OP_NO_SSLv3 SSL_OP_BIT(25) +#define SSL_OP_NO_TLSv1 SSL_OP_BIT(26) +#define SSL_OP_NO_TLSv1_2 SSL_OP_BIT(27) +#define SSL_OP_NO_TLSv1_1 SSL_OP_BIT(28) +#define SSL_OP_NO_TLSv1_3 SSL_OP_BIT(29) +#define SSL_OP_NO_DTLSv1 SSL_OP_BIT(26) +#define SSL_OP_NO_DTLSv1_2 SSL_OP_BIT(27) +/* Disallow all renegotiation */ +#define SSL_OP_NO_RENEGOTIATION SSL_OP_BIT(30) +/* + * Make server add server-hello extension from early version of + * cryptopro draft, when GOST ciphersuite is negotiated. Required for + * interoperability with CryptoPro CSP 3.x + */ +#define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +#define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +#define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) +/* Enable KTLS TX zerocopy on Linux */ +#define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) + +#define SSL_OP_PREFER_NO_DHE_KEX SSL_OP_BIT(35) + +/* + * Option "collections." + */ +#define SSL_OP_NO_SSL_MASK \ + (SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 \ + | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3) +#define SSL_OP_NO_DTLS_MASK \ + (SSL_OP_NO_DTLSv1 | SSL_OP_NO_DTLSv1_2) + +/* Various bug workarounds that should be rather harmless. */ +#define SSL_OP_ALL \ + (SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \ + | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG) + +/* + * OBSOLETE OPTIONS retained for compatibility + */ + +#define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 +#define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 +#define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 +#define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 +#define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 +#define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +#define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 +#define SSL_OP_TLS_D5_BUG 0x0 +#define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 +#define SSL_OP_SINGLE_ECDH_USE 0x0 +#define SSL_OP_SINGLE_DH_USE 0x0 +#define SSL_OP_EPHEMERAL_RSA 0x0 +#define SSL_OP_NO_SSLv2 0x0 +#define SSL_OP_PKCS1_CHECK_1 0x0 +#define SSL_OP_PKCS1_CHECK_2 0x0 +#define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 +#define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x0 + +/* + * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success + * when just a single record has been written): + */ +#define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001U +/* + * Make it possible to retry SSL_write() with changed buffer location (buffer + * contents must stay the same!); this is not the default to avoid the + * misconception that non-blocking SSL_write() behaves like non-blocking + * write(): + */ +#define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U +/* + * Never bother the application with retries if the transport is blocking: + */ +#define SSL_MODE_AUTO_RETRY 0x00000004U +/* Don't attempt to automatically build certificate chain */ +#define SSL_MODE_NO_AUTO_CHAIN 0x00000008U +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) Released buffers are freed. + */ +#define SSL_MODE_RELEASE_BUFFERS 0x00000010U +/* + * Send the current time in the Random fields of the ClientHello and + * ServerHello records for compatibility with hypothetical implementations + * that require it. + */ +#define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U +#define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U +/* + * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications + * that reconnect with a downgraded protocol version; see + * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your + * application attempts a normal handshake. Only use this in explicit + * fallback retries, following the guidance in + * draft-ietf-tls-downgrade-scsv-00. + */ +#define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U +/* + * Support Asynchronous operation + */ +#define SSL_MODE_ASYNC 0x00000100U + +/* + * When using DTLS/SCTP, include the terminating zero in the label + * used for computing the endpoint-pair shared secret. Required for + * interoperability with implementations having this bug like these + * older version of OpenSSL: + * - OpenSSL 1.0.0 series + * - OpenSSL 1.0.1 series + * - OpenSSL 1.0.2 series + * - OpenSSL 1.1.0 series + * - OpenSSL 1.1.1 and 1.1.1a + */ +#define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certificate chain algorithms. When this is set we enforce them. + */ +#define SSL_CERT_FLAG_TLS_STRICT 0x00000001U + +/* Suite B modes, takes same values as certificate verify flags */ +#define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +#define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +#define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 + +/* Perform all sorts of protocol violations for testing purposes */ +#define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 + +/* Flags for building certificate chains */ +/* Treat any existing certificates as untrusted CAs */ +#define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 +/* Don't include root CA in chain */ +#define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 +/* Just check certificates already there */ +#define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 +/* Ignore verification errors */ +#define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 +/* Clear verification errors from queue */ +#define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 + +/* Flags returned by SSL_check_chain */ +/* Certificate can be used with this session */ +#define CERT_PKEY_VALID 0x1 +/* Certificate can also be used for signing */ +#define CERT_PKEY_SIGN 0x2 +/* EE certificate signing algorithm OK */ +#define CERT_PKEY_EE_SIGNATURE 0x10 +/* CA signature algorithms OK */ +#define CERT_PKEY_CA_SIGNATURE 0x20 +/* EE certificate parameters OK */ +#define CERT_PKEY_EE_PARAM 0x40 +/* CA certificate parameters OK */ +#define CERT_PKEY_CA_PARAM 0x80 +/* Signing explicitly allowed as opposed to SHA1 fallback */ +#define CERT_PKEY_EXPLICIT_SIGN 0x100 +/* Client CA issuer names match (always set for server cert) */ +#define CERT_PKEY_ISSUER_NAME 0x200 +/* Cert type matches client types (always set for server cert) */ +#define CERT_PKEY_CERT_TYPE 0x400 +/* Cert chain suitable to Suite B */ +#define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +#define CERT_PKEY_RPK 0x1000 + +#define SSL_CONF_FLAG_CMDLINE 0x1 +#define SSL_CONF_FLAG_FILE 0x2 +#define SSL_CONF_FLAG_CLIENT 0x4 +#define SSL_CONF_FLAG_SERVER 0x8 +#define SSL_CONF_FLAG_SHOW_ERRORS 0x10 +#define SSL_CONF_FLAG_CERTIFICATE 0x20 +#define SSL_CONF_FLAG_REQUIRE_PRIVATE 0x40 +/* Configuration value types */ +#define SSL_CONF_TYPE_UNKNOWN 0x0 +#define SSL_CONF_TYPE_STRING 0x1 +#define SSL_CONF_TYPE_FILE 0x2 +#define SSL_CONF_TYPE_DIR 0x3 +#define SSL_CONF_TYPE_NONE 0x4 +#define SSL_CONF_TYPE_STORE 0x5 + +/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */ +#define SSL_COOKIE_LENGTH 4096 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +uint64_t SSL_CTX_get_options(const SSL_CTX *ctx); +uint64_t SSL_get_options(const SSL *s); +uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op); +uint64_t SSL_clear_options(SSL *s, uint64_t op); +uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op); +uint64_t SSL_set_options(SSL *s, uint64_t op); + +#define SSL_CTX_set_mode(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_MODE, (op), NULL) +#define SSL_CTX_clear_mode(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CLEAR_MODE, (op), NULL) +#define SSL_CTX_get_mode(ctx) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_MODE, 0, NULL) +#define SSL_clear_mode(ssl, op) \ + SSL_ctrl((ssl), SSL_CTRL_CLEAR_MODE, (op), NULL) +#define SSL_set_mode(ssl, op) \ + SSL_ctrl((ssl), SSL_CTRL_MODE, (op), NULL) +#define SSL_get_mode(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_MODE, 0, NULL) +#define SSL_set_mtu(ssl, mtu) \ + SSL_ctrl((ssl), SSL_CTRL_SET_MTU, (mtu), NULL) +#define DTLS_set_link_mtu(ssl, mtu) \ + SSL_ctrl((ssl), DTLS_CTRL_SET_LINK_MTU, (mtu), NULL) +#define DTLS_get_link_min_mtu(ssl) \ + SSL_ctrl((ssl), DTLS_CTRL_GET_LINK_MIN_MTU, 0, NULL) + +#define SSL_get_secure_renegotiation_support(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) + +#define SSL_CTX_set_cert_flags(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CERT_FLAGS, (op), NULL) +#define SSL_set_cert_flags(s, op) \ + SSL_ctrl((s), SSL_CTRL_CERT_FLAGS, (op), NULL) +#define SSL_CTX_clear_cert_flags(ctx, op) \ + SSL_CTX_ctrl((ctx), SSL_CTRL_CLEAR_CERT_FLAGS, (op), NULL) +#define SSL_clear_cert_flags(s, op) \ + SSL_ctrl((s), SSL_CTRL_CLEAR_CERT_FLAGS, (op), NULL) + +void SSL_CTX_set_msg_callback(SSL_CTX *ctx, + void (*cb)(int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +void SSL_set_msg_callback(SSL *ssl, + void (*cb)(int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +#define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) +#define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) + +#define SSL_get_extms_support(s) \ + SSL_ctrl((s), SSL_CTRL_GET_EXTMS_SUPPORT, 0, NULL) + +#ifndef OPENSSL_NO_SRP +/* see tls_srp.c */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s, + int *ad); +OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s); +#endif +#endif + +/* 100k max cert list */ +#define SSL_MAX_CERT_LIST_DEFAULT (1024 * 100) + +#define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024 * 20) + +/* + * This callback type is used inside SSL_CTX, SSL, and in the functions that + * set them. It is used to override the generation of SSL/TLS session IDs in + * a server. Return value should be zero on an error, non-zero to proceed. + * Also, callbacks should themselves check if the id they generate is unique + * otherwise the SSL handshake will fail with an error - callbacks can do + * this using the 'ssl' value they're passed by; + * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in + * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32 + * bytes. The callback can alter this length to be less if desired. It is + * also an error for the callback to set the size to zero. + */ +typedef int (*GEN_SESSION_CB)(SSL *ssl, unsigned char *id, + unsigned int *id_len); + +#define SSL_SESS_CACHE_OFF 0x0000 +#define SSL_SESS_CACHE_CLIENT 0x0001 +#define SSL_SESS_CACHE_SERVER 0x0002 +#define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT | SSL_SESS_CACHE_SERVER) +#define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 +/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ +#define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 +#define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 +#define SSL_SESS_CACHE_NO_INTERNAL \ + (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP | SSL_SESS_CACHE_NO_INTERNAL_STORE) +#define SSL_SESS_CACHE_UPDATE_TIME 0x0400 + +LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); +#define SSL_CTX_sess_number(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_NUMBER, 0, NULL) +#define SSL_CTX_sess_connect(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT, 0, NULL) +#define SSL_CTX_sess_connect_good(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT_GOOD, 0, NULL) +#define SSL_CTX_sess_connect_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CONNECT_RENEGOTIATE, 0, NULL) +#define SSL_CTX_sess_accept(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT, 0, NULL) +#define SSL_CTX_sess_accept_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT_RENEGOTIATE, 0, NULL) +#define SSL_CTX_sess_accept_good(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_ACCEPT_GOOD, 0, NULL) +#define SSL_CTX_sess_hits(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_HIT, 0, NULL) +#define SSL_CTX_sess_cb_hits(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CB_HIT, 0, NULL) +#define SSL_CTX_sess_misses(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_MISSES, 0, NULL) +#define SSL_CTX_sess_timeouts(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_TIMEOUTS, 0, NULL) +#define SSL_CTX_sess_cache_full(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SESS_CACHE_FULL, 0, NULL) + +void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, + int (*new_session_cb)(struct ssl_st *ssl, + SSL_SESSION *sess)); +int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))(struct ssl_st *ssl, + SSL_SESSION *sess); +void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, + void (*remove_session_cb)(struct ssl_ctx_st + *ctx, + SSL_SESSION *sess)); +void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx))(struct ssl_ctx_st *ctx, + SSL_SESSION *sess); +void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, + SSL_SESSION *(*get_session_cb)(struct ssl_st + *ssl, + const unsigned char + *data, + int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(struct ssl_st *ssl, + const unsigned char *data, + int len, int *copy); +void SSL_CTX_set_info_callback(SSL_CTX *ctx, + void (*cb)(const SSL *ssl, int type, int val)); +void (*SSL_CTX_get_info_callback(SSL_CTX *ctx))(const SSL *ssl, int type, + int val); +void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, + int (*client_cert_cb)(SSL *ssl, X509 **x509, + EVP_PKEY **pkey)); +int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL *ssl, X509 **x509, + EVP_PKEY **pkey); +#ifndef OPENSSL_NO_ENGINE +__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); +#endif +void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb)(SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb)(SSL *ssl, + const unsigned char *cookie, + unsigned int + cookie_len)); + +void SSL_CTX_set_stateless_cookie_generate_cb( + SSL_CTX *ctx, + int (*gen_stateless_cookie_cb)(SSL *ssl, + unsigned char *cookie, + size_t *cookie_len)); +void SSL_CTX_set_stateless_cookie_verify_cb( + SSL_CTX *ctx, + int (*verify_stateless_cookie_cb)(SSL *ssl, + const unsigned char *cookie, + size_t cookie_len)); +#ifndef OPENSSL_NO_NEXTPROTONEG + +typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned int *outlen, + void *arg); +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + SSL_CTX_npn_advertised_cb_func cb, + void *arg); +#define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb + +typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + SSL_CTX_npn_select_cb_func cb, + void *arg); +#define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb + +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +#define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated +#endif + +__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *in, unsigned int inlen, + const unsigned char *client, + unsigned int client_len); + +#define OPENSSL_NPN_UNSUPPORTED 0 +#define OPENSSL_NPN_NEGOTIATED 1 +#define OPENSSL_NPN_NO_OVERLAP 2 + +__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned int protos_len); +__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned int protos_len); +typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + SSL_CTX_alpn_select_cb_func cb, + void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned int *len); + +#ifndef OPENSSL_NO_PSK +/* + * the maximum length of the buffer given to callbacks containing the + * resulting identity/psk + */ +#define PSK_MAX_IDENTITY_LEN 256 +#define PSK_MAX_PSK_LEN 512 +typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl, + const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb); +void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb); + +typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl, + const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb); +void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb); + +__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); +const char *SSL_get_psk_identity_hint(const SSL *s); +const char *SSL_get_psk_identity(const SSL *s); +#endif + +typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl, + const unsigned char *identity, + size_t identity_len, + SSL_SESSION **sess); +typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, + const unsigned char **id, + size_t *idlen, + SSL_SESSION **sess); + +void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb); +void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx, + SSL_psk_find_session_cb_func cb); +void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb); +void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, + SSL_psk_use_session_cb_func cb); + +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx, + unsigned int ext_type); + +__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + unsigned int context, + SSL_custom_ext_add_cb_ex add_cb, + SSL_custom_ext_free_cb_ex free_cb, + void *add_arg, + SSL_custom_ext_parse_cb_ex parse_cb, + void *parse_arg); + +__owur int SSL_extension_supported(unsigned int ext_type); + +#define SSL_NOTHING 1 +#define SSL_WRITING 2 +#define SSL_READING 3 +#define SSL_X509_LOOKUP 4 +#define SSL_ASYNC_PAUSED 5 +#define SSL_ASYNC_NO_JOBS 6 +#define SSL_CLIENT_HELLO_CB 7 +#define SSL_RETRY_VERIFY 8 + +/* These will only be used when doing non-blocking IO */ +#define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) +#define SSL_want_read(s) (SSL_want(s) == SSL_READING) +#define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) +#define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) +#define SSL_want_retry_verify(s) (SSL_want(s) == SSL_RETRY_VERIFY) +#define SSL_want_async(s) (SSL_want(s) == SSL_ASYNC_PAUSED) +#define SSL_want_async_job(s) (SSL_want(s) == SSL_ASYNC_NO_JOBS) +#define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB) + +#define SSL_MAC_FLAG_READ_MAC_STREAM 1 +#define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 +#define SSL_MAC_FLAG_READ_MAC_TLSTREE 4 +#define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8 + +/* + * A callback for logging out TLS key material. This callback should log out + * |line| followed by a newline. + */ +typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line); + +/* + * SSL_CTX_set_keylog_callback configures a callback to log key material. This + * is intended for debugging use with tools like Wireshark. The cb function + * should log line followed by a newline. + */ +void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb); + +/* + * SSL_CTX_get_keylog_callback returns the callback configured by + * SSL_CTX_set_keylog_callback. + */ +SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx); + +int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data); +uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx); +int SSL_set_max_early_data(SSL *s, uint32_t max_early_data); +uint32_t SSL_get_max_early_data(const SSL *s); +int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data); +uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx); +int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data); +uint32_t SSL_get_recv_max_early_data(const SSL *s); + +#ifdef __cplusplus +} +#endif + +#include +#include +#include /* This is mostly sslv3 with a few tweaks */ +#include /* Datagram TLS */ +#include /* Support for the use_srtp extension */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These need to be after the above set of includes due to a compiler bug + * in VisualStudio 2015 + */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) +#define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx))) +#define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp))) +#define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null()) +#define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n))) +#define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n)) +#define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i))) +#define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))) +#define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk),ossl_check_SSL_CIPHER_freefunc_type(freefunc)) +#define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx)) +#define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr))) +#define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum) +#define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) +#define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) + +/* clang-format on */ + +/* compatibility */ +#define SSL_set_app_data(s, arg) (SSL_set_ex_data(s, 0, (char *)(arg))) +#define SSL_get_app_data(s) (SSL_get_ex_data(s, 0)) +#define SSL_SESSION_set_app_data(s, a) (SSL_SESSION_set_ex_data(s, 0, \ + (char *)(a))) +#define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s, 0)) +#define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx, 0)) +#define SSL_CTX_set_app_data(ctx, arg) (SSL_CTX_set_ex_data(ctx, 0, \ + (char *)(arg))) +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug); +#endif + +/* TLSv1.3 KeyUpdate message types */ +/* -1 used so that this is an invalid value for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NONE -1 +/* Values as defined for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NOT_REQUESTED 0 +#define SSL_KEY_UPDATE_REQUESTED 1 + +/* + * The valid handshake states (one for each type message sent and one for each + * type of message received). There are also two "special" states: + * TLS = TLS or DTLS state + * DTLS = DTLS specific state + * CR/SR = Client Read/Server Read + * CW/SW = Client Write/Server Write + * + * The "special" states are: + * TLS_ST_BEFORE = No handshake has been initiated yet + * TLS_ST_OK = A handshake has been successfully completed + */ +typedef enum { + TLS_ST_BEFORE, + TLS_ST_OK, + DTLS_ST_CR_HELLO_VERIFY_REQUEST, + TLS_ST_CR_SRVR_HELLO, + TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, + TLS_ST_CR_CERT_STATUS, + TLS_ST_CR_KEY_EXCH, + TLS_ST_CR_CERT_REQ, + TLS_ST_CR_SRVR_DONE, + TLS_ST_CR_SESSION_TICKET, + TLS_ST_CR_CHANGE, + TLS_ST_CR_FINISHED, + TLS_ST_CW_CLNT_HELLO, + TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, + TLS_ST_CW_KEY_EXCH, + TLS_ST_CW_CERT_VRFY, + TLS_ST_CW_CHANGE, + TLS_ST_CW_NEXT_PROTO, + TLS_ST_CW_FINISHED, + TLS_ST_SW_HELLO_REQ, + TLS_ST_SR_CLNT_HELLO, + DTLS_ST_SW_HELLO_VERIFY_REQUEST, + TLS_ST_SW_SRVR_HELLO, + TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, + TLS_ST_SW_KEY_EXCH, + TLS_ST_SW_CERT_REQ, + TLS_ST_SW_SRVR_DONE, + TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, + TLS_ST_SR_KEY_EXCH, + TLS_ST_SR_CERT_VRFY, + TLS_ST_SR_NEXT_PROTO, + TLS_ST_SR_CHANGE, + TLS_ST_SR_FINISHED, + TLS_ST_SW_SESSION_TICKET, + TLS_ST_SW_CERT_STATUS, + TLS_ST_SW_CHANGE, + TLS_ST_SW_FINISHED, + TLS_ST_SW_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_CERT_VRFY, + TLS_ST_SW_CERT_VRFY, + TLS_ST_CR_HELLO_REQ, + TLS_ST_SW_KEY_UPDATE, + TLS_ST_CW_KEY_UPDATE, + TLS_ST_SR_KEY_UPDATE, + TLS_ST_CR_KEY_UPDATE, + TLS_ST_EARLY_DATA, + TLS_ST_PENDING_EARLY_DATA_END, + TLS_ST_CW_END_OF_EARLY_DATA, + TLS_ST_SR_END_OF_EARLY_DATA +} OSSL_HANDSHAKE_STATE; + +/* + * Most of the following state values are no longer used and are defined to be + * the closest equivalent value in the current state machine code. Not all + * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT + * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP, + * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT. + */ + +#define SSL_ST_CONNECT 0x1000 +#define SSL_ST_ACCEPT 0x2000 + +#define SSL_ST_MASK 0x0FFF + +#define SSL_CB_LOOP 0x01 +#define SSL_CB_EXIT 0x02 +#define SSL_CB_READ 0x04 +#define SSL_CB_WRITE 0x08 +#define SSL_CB_ALERT 0x4000 /* used in callback */ +#define SSL_CB_READ_ALERT (SSL_CB_ALERT | SSL_CB_READ) +#define SSL_CB_WRITE_ALERT (SSL_CB_ALERT | SSL_CB_WRITE) +#define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT | SSL_CB_LOOP) +#define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT | SSL_CB_EXIT) +#define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT | SSL_CB_LOOP) +#define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT | SSL_CB_EXIT) +#define SSL_CB_HANDSHAKE_START 0x10 +#define SSL_CB_HANDSHAKE_DONE 0x20 + +/* Is the SSL_connection established? */ +#define SSL_in_connect_init(a) (SSL_in_init(a) && !SSL_is_server(a)) +#define SSL_in_accept_init(a) (SSL_in_init(a) && SSL_is_server(a)) +int SSL_in_init(const SSL *s); +int SSL_in_before(const SSL *s); +int SSL_is_init_finished(const SSL *s); + +/* + * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you + * should not need these + */ +#define SSL_ST_READ_HEADER 0xF0 +#define SSL_ST_READ_BODY 0xF1 +#define SSL_ST_READ_DONE 0xF2 + +/*- + * Obtain latest Finished message + * -- that we sent (SSL_get_finished) + * -- that we expected from peer (SSL_get_peer_finished). + * Returns length (0 == no Finished so far), copies up to 'count' bytes. + */ +size_t SSL_get_finished(const SSL *s, void *buf, size_t count); +size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); + +/* + * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are + * 'ored' with SSL_VERIFY_PEER if they are desired + */ +#define SSL_VERIFY_NONE 0x00 +#define SSL_VERIFY_PEER 0x01 +#define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 +#define SSL_VERIFY_CLIENT_ONCE 0x04 +#define SSL_VERIFY_POST_HANDSHAKE 0x08 + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define OpenSSL_add_ssl_algorithms() SSL_library_init() +#define SSLeay_add_ssl_algorithms() SSL_library_init() +#endif + +/* More backward compatibility */ +#define SSL_get_cipher(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +#define SSL_get_cipher_bits(s, np) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(s), np) +#define SSL_get_cipher_version(s) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(s)) +#define SSL_get_cipher_name(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +#define SSL_get_time(a) SSL_SESSION_get_time(a) +#define SSL_set_time(a, b) SSL_SESSION_set_time((a), (b)) +#define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) +#define SSL_set_timeout(a, b) SSL_SESSION_set_timeout((a), (b)) + +#define d2i_SSL_SESSION_bio(bp, s_id) ASN1_d2i_bio_of(SSL_SESSION, SSL_SESSION_new, d2i_SSL_SESSION, bp, s_id) +#define i2d_SSL_SESSION_bio(bp, s_id) ASN1_i2d_bio_of(SSL_SESSION, i2d_SSL_SESSION, bp, s_id) + +DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) +#define SSL_AD_REASON_OFFSET 1000 /* offset to get SSL_R_... value \ + * from SSL_AD_... */ +/* These alert types are for SSLv3 and TLSv1 */ +#define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY +/* fatal */ +#define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE +/* fatal */ +#define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC +#define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED +#define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW +/* fatal */ +#define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE +/* fatal */ +#define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE +/* Not for TLS */ +#define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE +#define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE +#define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE +#define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED +#define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED +#define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN +/* fatal */ +#define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER +/* fatal */ +#define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA +/* fatal */ +#define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED +/* fatal */ +#define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR +#define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR +/* fatal */ +#define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION +/* fatal */ +#define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION +/* fatal */ +#define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY +/* fatal */ +#define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR +#define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED +#define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION +#define SSL_AD_MISSING_EXTENSION TLS13_AD_MISSING_EXTENSION +#define SSL_AD_CERTIFICATE_REQUIRED TLS13_AD_CERTIFICATE_REQUIRED +#define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION +#define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE +#define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME +#define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE +#define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE +/* fatal */ +#define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY +/* fatal */ +#define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK +#define SSL_AD_NO_APPLICATION_PROTOCOL TLS1_AD_NO_APPLICATION_PROTOCOL +#define SSL_ERROR_NONE 0 +#define SSL_ERROR_SSL 1 +#define SSL_ERROR_WANT_READ 2 +#define SSL_ERROR_WANT_WRITE 3 +#define SSL_ERROR_WANT_X509_LOOKUP 4 +#define SSL_ERROR_SYSCALL 5 /* look at error stack/return \ + * value/errno */ +#define SSL_ERROR_ZERO_RETURN 6 +#define SSL_ERROR_WANT_CONNECT 7 +#define SSL_ERROR_WANT_ACCEPT 8 +#define SSL_ERROR_WANT_ASYNC 9 +#define SSL_ERROR_WANT_ASYNC_JOB 10 +#define SSL_ERROR_WANT_CLIENT_HELLO_CB 11 +#define SSL_ERROR_WANT_RETRY_VERIFY 12 + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTRL_SET_TMP_DH 3 +#define SSL_CTRL_SET_TMP_ECDH 4 +#define SSL_CTRL_SET_TMP_DH_CB 6 +#endif + +#define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 +#define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 +#define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 +#define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 +#define SSL_CTRL_GET_FLAGS 13 +#define SSL_CTRL_EXTRA_CHAIN_CERT 14 +#define SSL_CTRL_SET_MSG_CALLBACK 15 +#define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 +/* only applies to datagram connections */ +#define SSL_CTRL_SET_MTU 17 +/* Stats */ +#define SSL_CTRL_SESS_NUMBER 20 +#define SSL_CTRL_SESS_CONNECT 21 +#define SSL_CTRL_SESS_CONNECT_GOOD 22 +#define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 +#define SSL_CTRL_SESS_ACCEPT 24 +#define SSL_CTRL_SESS_ACCEPT_GOOD 25 +#define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 +#define SSL_CTRL_SESS_HIT 27 +#define SSL_CTRL_SESS_CB_HIT 28 +#define SSL_CTRL_SESS_MISSES 29 +#define SSL_CTRL_SESS_TIMEOUTS 30 +#define SSL_CTRL_SESS_CACHE_FULL 31 +#define SSL_CTRL_MODE 33 +#define SSL_CTRL_GET_READ_AHEAD 40 +#define SSL_CTRL_SET_READ_AHEAD 41 +#define SSL_CTRL_SET_SESS_CACHE_SIZE 42 +#define SSL_CTRL_GET_SESS_CACHE_SIZE 43 +#define SSL_CTRL_SET_SESS_CACHE_MODE 44 +#define SSL_CTRL_GET_SESS_CACHE_MODE 45 +#define SSL_CTRL_GET_MAX_CERT_LIST 50 +#define SSL_CTRL_SET_MAX_CERT_LIST 51 +#define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 +/* see tls1.h for macros based on these */ +#define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 +#define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 +#define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 +#define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 +#define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 +#define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 +#define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */ +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 +#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +#endif +#define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 +#define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 +#define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 +#define SSL_CTRL_SET_SRP_ARG 78 +#define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 +#define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 +#define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 +#define DTLS_CTRL_GET_TIMEOUT 73 +#define DTLS_CTRL_HANDLE_TIMEOUT 74 +#define SSL_CTRL_GET_RI_SUPPORT 76 +#define SSL_CTRL_CLEAR_MODE 78 +#define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB 79 +#define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 +#define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 +#define SSL_CTRL_CHAIN 88 +#define SSL_CTRL_CHAIN_CERT 89 +#define SSL_CTRL_GET_GROUPS 90 +#define SSL_CTRL_SET_GROUPS 91 +#define SSL_CTRL_SET_GROUPS_LIST 92 +#define SSL_CTRL_GET_SHARED_GROUP 93 +#define SSL_CTRL_SET_SIGALGS 97 +#define SSL_CTRL_SET_SIGALGS_LIST 98 +#define SSL_CTRL_CERT_FLAGS 99 +#define SSL_CTRL_CLEAR_CERT_FLAGS 100 +#define SSL_CTRL_SET_CLIENT_SIGALGS 101 +#define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 +#define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 +#define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 +#define SSL_CTRL_BUILD_CERT_CHAIN 105 +#define SSL_CTRL_SET_VERIFY_CERT_STORE 106 +#define SSL_CTRL_SET_CHAIN_CERT_STORE 107 +#define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 +#define SSL_CTRL_GET_PEER_TMP_KEY 109 +#define SSL_CTRL_GET_RAW_CIPHERLIST 110 +#define SSL_CTRL_GET_EC_POINT_FORMATS 111 +#define SSL_CTRL_GET_CHAIN_CERTS 115 +#define SSL_CTRL_SELECT_CURRENT_CERT 116 +#define SSL_CTRL_SET_CURRENT_CERT 117 +#define SSL_CTRL_SET_DH_AUTO 118 +#define DTLS_CTRL_SET_LINK_MTU 120 +#define DTLS_CTRL_GET_LINK_MIN_MTU 121 +#define SSL_CTRL_GET_EXTMS_SUPPORT 122 +#define SSL_CTRL_SET_MIN_PROTO_VERSION 123 +#define SSL_CTRL_SET_MAX_PROTO_VERSION 124 +#define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125 +#define SSL_CTRL_SET_MAX_PIPELINES 126 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE 127 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB 128 +#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG 129 +#define SSL_CTRL_GET_MIN_PROTO_VERSION 130 +#define SSL_CTRL_GET_MAX_PROTO_VERSION 131 +#define SSL_CTRL_GET_SIGNATURE_NID 132 +#define SSL_CTRL_GET_TMP_KEY 133 +#define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +#define SSL_CTRL_GET_IANA_GROUPS 135 +#define SSL_CTRL_SET_RETRY_VERIFY 136 +#define SSL_CTRL_GET_VERIFY_CERT_STORE 137 +#define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +#define SSL_CTRL_GET0_IMPLEMENTED_GROUPS 139 +#define SSL_CTRL_GET_SIGNATURE_NAME 140 +#define SSL_CTRL_GET_PEER_SIGNATURE_NAME 141 +#define SSL_CERT_SET_FIRST 1 +#define SSL_CERT_SET_NEXT 2 +#define SSL_CERT_SET_SERVER 3 +#define DTLSv1_get_timeout(ssl, arg) \ + SSL_ctrl(ssl, DTLS_CTRL_GET_TIMEOUT, 0, (void *)(arg)) +#define DTLSv1_handle_timeout(ssl) \ + SSL_ctrl(ssl, DTLS_CTRL_HANDLE_TIMEOUT, 0, NULL) +#define SSL_num_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_NUM_RENEGOTIATIONS, 0, NULL) +#define SSL_clear_num_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS, 0, NULL) +#define SSL_total_renegotiations(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_TOTAL_RENEGOTIATIONS, 0, NULL) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tmp_dh(ctx, dh) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TMP_DH, 0, (char *)(dh)) +#endif +#define SSL_CTX_set_dh_auto(ctx, onoff) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_DH_AUTO, onoff, NULL) +#define SSL_set_dh_auto(s, onoff) \ + SSL_ctrl(s, SSL_CTRL_SET_DH_AUTO, onoff, NULL) +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_set_tmp_dh(ssl, dh) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TMP_DH, 0, (char *)(dh)) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_CTX_set_tmp_ecdh(ctx, ecdh) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TMP_ECDH, 0, (char *)(ecdh)) +#define SSL_set_tmp_ecdh(ssl, ecdh) \ + SSL_ctrl(ssl, SSL_CTRL_SET_TMP_ECDH, 0, (char *)(ecdh)) +#endif +#define SSL_CTX_add_extra_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_CTX_get_extra_chain_certs(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_EXTRA_CHAIN_CERTS, 0, px509) +#define SSL_CTX_get_extra_chain_certs_only(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_EXTRA_CHAIN_CERTS, 1, px509) +#define SSL_CTX_clear_extra_chain_certs(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS, 0, NULL) +#define SSL_CTX_set0_chain(ctx, sk) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN, 0, (char *)(sk)) +#define SSL_CTX_set1_chain(ctx, sk) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN, 1, (char *)(sk)) +#define SSL_CTX_add0_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_CTX_add1_chain_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_CHAIN_CERT, 1, (char *)(x509)) +#define SSL_CTX_get0_chain_certs(ctx, px509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_CHAIN_CERTS, 0, px509) +#define SSL_CTX_clear_chain_certs(ctx) \ + SSL_CTX_set0_chain(ctx, NULL) +#define SSL_CTX_build_cert_chain(ctx, flags) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +#define SSL_CTX_select_current_cert(ctx, x509) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SELECT_CURRENT_CERT, 0, (char *)(x509)) +#define SSL_CTX_set_current_cert(ctx, op) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CURRENT_CERT, op, NULL) +#define SSL_CTX_set0_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set1_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 1, (char *)(st)) +#define SSL_CTX_get0_verify_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set0_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_CTX_set1_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CHAIN_CERT_STORE, 1, (char *)(st)) +#define SSL_CTX_get0_chain_cert_store(ctx, st) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_set0_chain(s, sk) \ + SSL_ctrl(s, SSL_CTRL_CHAIN, 0, (char *)(sk)) +#define SSL_set1_chain(s, sk) \ + SSL_ctrl(s, SSL_CTRL_CHAIN, 1, (char *)(sk)) +#define SSL_add0_chain_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_CHAIN_CERT, 0, (char *)(x509)) +#define SSL_add1_chain_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_CHAIN_CERT, 1, (char *)(x509)) +#define SSL_get0_chain_certs(s, px509) \ + SSL_ctrl(s, SSL_CTRL_GET_CHAIN_CERTS, 0, px509) +#define SSL_clear_chain_certs(s) \ + SSL_set0_chain(s, NULL) +#define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s, SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +#define SSL_select_current_cert(s, x509) \ + SSL_ctrl(s, SSL_CTRL_SELECT_CURRENT_CERT, 0, (char *)(x509)) +#define SSL_set_current_cert(s, op) \ + SSL_ctrl(s, SSL_CTRL_SET_CURRENT_CERT, op, NULL) +#define SSL_set0_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_set1_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_VERIFY_CERT_STORE, 1, (char *)(st)) +#define SSL_get0_verify_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_GET_VERIFY_CERT_STORE, 0, (char *)(st)) +#define SSL_set0_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_CHAIN_CERT_STORE, 0, (char *)(st)) +#define SSL_set1_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_SET_CHAIN_CERT_STORE, 1, (char *)(st)) +#define SSL_get0_chain_cert_store(s, st) \ + SSL_ctrl(s, SSL_CTRL_GET_CHAIN_CERT_STORE, 0, (char *)(st)) + +#define SSL_get1_groups(s, glist) \ + SSL_ctrl(s, SSL_CTRL_GET_GROUPS, 0, (int *)(glist)) +#define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_IANA_GROUPS, 0, (uint16_t **)(plst)) +#define SSL_CTX_set1_groups(ctx, glist, glistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_GROUPS, glistlen, (int *)(glist)) +#define SSL_CTX_set1_groups_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_GROUPS_LIST, 0, (char *)(s)) +#define SSL_CTX_get0_implemented_groups(ctx, all, out) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \ + (STACK_OF(OPENSSL_CSTRING) *)(out)) +#define SSL_set1_groups(s, glist, glistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_GROUPS, glistlen, (char *)(glist)) +#define SSL_set1_groups_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_GROUPS_LIST, 0, (char *)(str)) +#define SSL_get_shared_group(s, n) \ + SSL_ctrl(s, SSL_CTRL_GET_SHARED_GROUP, n, NULL) +#define SSL_get_negotiated_group(s) \ + SSL_ctrl(s, SSL_CTRL_GET_NEGOTIATED_GROUP, 0, NULL) +#define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SIGALGS, slistlen, (int *)(slist)) +#define SSL_CTX_set1_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SIGALGS_LIST, 0, (char *)(s)) +#define SSL_set1_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_SIGALGS, slistlen, (int *)(slist)) +#define SSL_set1_sigalgs_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_SIGALGS_LIST, 0, (char *)(str)) +#define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_SIGALGS, slistlen, (int *)(slist)) +#define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_SIGALGS_LIST, 0, (char *)(s)) +#define SSL_set1_client_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_SIGALGS, slistlen, (int *)(slist)) +#define SSL_set1_client_sigalgs_list(s, str) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_SIGALGS_LIST, 0, (char *)(str)) +#define SSL_get0_certificate_types(s, clist) \ + SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist)) +#define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_CLIENT_CERT_TYPES, clistlen, \ + (char *)(clist)) +#define SSL_set1_client_certificate_types(s, clist, clistlen) \ + SSL_ctrl(s, SSL_CTRL_SET_CLIENT_CERT_TYPES, clistlen, (char *)(clist)) +#define SSL_get0_signature_name(s, str) \ + SSL_ctrl(s, SSL_CTRL_GET_SIGNATURE_NAME, 0, (1 ? (str) : (const char **)NULL)) +#define SSL_get_signature_nid(s, pn) \ + SSL_ctrl(s, SSL_CTRL_GET_SIGNATURE_NID, 0, pn) +#define SSL_get0_peer_signature_name(s, str) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_SIGNATURE_NAME, 0, (1 ? (str) : (const char **)NULL)) +#define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_SIGNATURE_NID, 0, pn) +#define SSL_get_peer_tmp_key(s, pk) \ + SSL_ctrl(s, SSL_CTRL_GET_PEER_TMP_KEY, 0, pk) +#define SSL_get_tmp_key(s, pk) \ + SSL_ctrl(s, SSL_CTRL_GET_TMP_KEY, 0, pk) +#define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_RAW_CIPHERLIST, 0, plst) +#define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s, SSL_CTRL_GET_EC_POINT_FORMATS, 0, plst) +#define SSL_CTX_set_min_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +#define SSL_CTX_set_max_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +#define SSL_CTX_get_min_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +#define SSL_CTX_get_max_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +#define SSL_set_min_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +#define SSL_set_max_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +#define SSL_get_min_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +#define SSL_get_max_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) + +const char *SSL_get0_group_name(SSL *s); +const char *SSL_group_to_name(SSL *s, int id); + +/* Backwards compatibility, original 1.1.0 names */ +#define SSL_CTRL_GET_SERVER_TMP_KEY \ + SSL_CTRL_GET_PEER_TMP_KEY +#define SSL_get_server_tmp_key(s, pk) \ + SSL_get_peer_tmp_key(s, pk) + +int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey); +int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey); + +/* + * The following symbol names are old and obsolete. They are kept + * for compatibility reasons only and should not be used anymore. + */ +#define SSL_CTRL_GET_CURVES SSL_CTRL_GET_GROUPS +#define SSL_CTRL_SET_CURVES SSL_CTRL_SET_GROUPS +#define SSL_CTRL_SET_CURVES_LIST SSL_CTRL_SET_GROUPS_LIST +#define SSL_CTRL_GET_SHARED_CURVE SSL_CTRL_GET_SHARED_GROUP + +#define SSL_get1_curves SSL_get1_groups +#define SSL_CTX_set1_curves SSL_CTX_set1_groups +#define SSL_CTX_set1_curves_list SSL_CTX_set1_groups_list +#define SSL_set1_curves SSL_set1_groups +#define SSL_set1_curves_list SSL_set1_groups_list +#define SSL_get_shared_curve SSL_get_shared_group + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* Provide some compatibility macros for removed functionality. */ +#define SSL_CTX_need_tmp_RSA(ctx) 0 +#define SSL_CTX_set_tmp_rsa(ctx, rsa) 1 +#define SSL_need_tmp_RSA(ssl) 0 +#define SSL_set_tmp_rsa(ssl, rsa) 1 +#define SSL_CTX_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +#define SSL_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +/* + * We "pretend" to call the callback to avoid warnings about unused static + * functions. + */ +#define SSL_CTX_set_tmp_rsa_callback(ctx, cb) \ + while (0) \ + (cb)(NULL, 0, 0) +#define SSL_set_tmp_rsa_callback(ssl, cb) \ + while (0) \ + (cb)(NULL, 0, 0) +#endif +__owur const BIO_METHOD *BIO_f_ssl(void); +__owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client); +__owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx); +__owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); +__owur int BIO_ssl_copy_session_id(BIO *to, BIO *from); +void BIO_ssl_shutdown(BIO *ssl_bio); + +__owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); +__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); +__owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq, + const SSL_METHOD *meth); +int SSL_CTX_up_ref(SSL_CTX *ctx); +void SSL_CTX_free(SSL_CTX *); +__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx); +__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); +__owur int SSL_want(const SSL *s); +__owur int SSL_clear(SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); +#endif +void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm); + +__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); +__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +__owur const char *OPENSSL_cipher_name(const char *rfc_name); +__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c); +__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c); +__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c); +__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c); + +__owur int SSL_get_fd(const SSL *s); +__owur int SSL_get_rfd(const SSL *s); +__owur int SSL_get_wfd(const SSL *s); +__owur const char *SSL_get_cipher_list(const SSL *s, int n); +__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size); +__owur int SSL_get_read_ahead(const SSL *s); +__owur int SSL_pending(const SSL *s); +__owur int SSL_has_pending(const SSL *s); +#ifndef OPENSSL_NO_SOCK +__owur int SSL_set_fd(SSL *s, int fd); +__owur int SSL_set_rfd(SSL *s, int fd); +__owur int SSL_set_wfd(SSL *s, int fd); +#endif +void SSL_set0_rbio(SSL *s, BIO *rbio); +void SSL_set0_wbio(SSL *s, BIO *wbio); +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +__owur BIO *SSL_get_rbio(const SSL *s); +__owur BIO *SSL_get_wbio(const SSL *s); +__owur int SSL_set_cipher_list(SSL *s, const char *str); +__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str); +__owur int SSL_set_ciphersuites(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +__owur int SSL_get_verify_mode(const SSL *s); +__owur int SSL_get_verify_depth(const SSL *s); +__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s); +void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback); +void SSL_set_verify_depth(SSL *s, int depth); +void SSL_set_cert_cb(SSL *s, int (*cb)(SSL *ssl, void *arg), void *arg); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, + const unsigned char *d, long len); +#endif +__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +__owur int SSL_use_certificate(SSL *ssl, X509 *x); +__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); +__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +/* serverinfo file format versions */ +#define SSL_SERVERINFOV1 1 +#define SSL_SERVERINFOV2 2 + +/* Set serverinfo data for the current active cert. */ +__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version, + const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); +#endif + +__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); +__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +#endif +__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +__owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, + int type); +/* PEM type */ +__owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); +__owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx, + const char *propq); +__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *file); +int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *dir); +int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *uri); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_load_error_strings() \ + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, \ + NULL) +#endif + +__owur const char *SSL_state_string(const SSL *s); +__owur const char *SSL_rstate_string(const SSL *s); +__owur const char *SSL_state_string_long(const SSL *s); +__owur const char *SSL_rstate_string_long(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_3_4 +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") +__owur long SSL_SESSION_get_time(const SSL_SESSION *s); +OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") +__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +#endif +__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); +__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); +__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); + +__owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s); +__owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t); + +__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); +__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); +void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, + const unsigned char **alpn, + size_t *len); +__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s, + const unsigned char *alpn, + size_t len); +__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s); +__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher); +__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s); +__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s); +void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick, + size_t *len); +__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s); +__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s, + uint32_t max_early_data); +__owur int SSL_copy_session_id(SSL *to, const SSL *from); +__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); +__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid, + unsigned int sid_len); +__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s); + +__owur SSL_SESSION *SSL_SESSION_new(void); +__owur SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s, + unsigned int *len); +__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +#ifndef OPENSSL_NO_STDIO +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +#endif +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x); +int SSL_SESSION_up_ref(SSL_SESSION *ses); +void SSL_SESSION_free(SSL_SESSION *ses); +__owur int i2d_SSL_SESSION(const SSL_SESSION *in, unsigned char **pp); +__owur int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session); +int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session); +__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb); +__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb); +__owur int SSL_has_matching_session_id(const SSL *s, + const unsigned char *id, + unsigned int id_len); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, + long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); + +#ifdef OPENSSL_X509_H +__owur X509 *SSL_get0_peer_certificate(const SSL *s); +__owur X509 *SSL_get1_peer_certificate(const SSL *s); +/* Deprecated in 3.0.0 */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define SSL_get_peer_certificate SSL_get1_peer_certificate +#endif +#endif + +__owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); + +__owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +__owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +__owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx); +void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback); +void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); +void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, + int (*cb)(X509_STORE_CTX *, void *), + void *arg); +void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb)(SSL *ssl, void *arg), + void *arg); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +#endif +__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); +__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); +void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); +pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx); +void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx); +void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb); +void SSL_set_default_passwd_cb_userdata(SSL *s, void *u); +pem_password_cb *SSL_get_default_passwd_cb(SSL *s); +void *SSL_get_default_passwd_cb_userdata(SSL *s); + +__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx); +__owur int SSL_check_private_key(const SSL *ctx); + +__owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL *SSL_new(SSL_CTX *ctx); +int SSL_up_ref(SSL *s); +int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); +__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose); +__owur int SSL_set_purpose(SSL *ssl, int purpose); +__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); +__owur int SSL_set_trust(SSL *ssl, int trust); + +__owur int SSL_set1_host(SSL *s, const char *host); +__owur int SSL_add1_host(SSL *s, const char *host); +__owur const char *SSL_get0_peername(SSL *s); +void SSL_set_hostflags(SSL *s, unsigned int flags); + +__owur int SSL_CTX_dane_enable(SSL_CTX *ctx); +__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md, + uint8_t mtype, uint8_t ord); +__owur int SSL_dane_enable(SSL *s, const char *basedomain); +__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector, + uint8_t mtype, const unsigned char *data, size_t dlen); +__owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki); +__owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector, + uint8_t *mtype, const unsigned char **data, + size_t *dlen); +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +SSL_DANE *SSL_get0_dane(SSL *ssl); +/* + * DANE flags + */ +unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags); +unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags); + +__owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); +__owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); + +__owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); +__owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); + +#ifndef OPENSSL_NO_SRP +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb)(SSL *, void *)); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb)(SSL *, void *)); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb)(SSL *, int *, void *)); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +OSSL_DEPRECATEDIN_3_0 +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +OSSL_DEPRECATEDIN_3_0 +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s); + +OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); +#endif +#endif + +/* + * ClientHello callback and helpers. + */ + +#define SSL_CLIENT_HELLO_SUCCESS 1 +#define SSL_CLIENT_HELLO_ERROR 0 +#define SSL_CLIENT_HELLO_RETRY (-1) + +typedef int (*SSL_client_hello_cb_fn)(SSL *s, int *al, void *arg); +void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, + void *arg); +typedef int (*SSL_new_pending_conn_cb_fn)(SSL_CTX *ctx, SSL *new_ssl, + void *arg); +void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb, + void *arg); + +int SSL_client_hello_isv2(SSL *s); +unsigned int SSL_client_hello_get0_legacy_version(SSL *s); +size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_compression_methods(SSL *s, + const unsigned char **out); +int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); +int SSL_client_hello_get0_ext(SSL *s, unsigned int type, + const unsigned char **out, size_t *outlen); + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +#ifdef OSSL_ASYNC_FD +/* + * Windows application developer has to include windows.h to use these. + */ +__owur int SSL_waiting_for_async(SSL *s); +__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds); +__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +__owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback); +__owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg); +__owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback); +__owur int SSL_set_async_callback_arg(SSL *s, void *arg); +__owur int SSL_get_async_status(SSL *s, int *status); + +#endif +__owur int SSL_accept(SSL *ssl); +__owur int SSL_stateless(SSL *s); +__owur int SSL_connect(SSL *ssl); +__owur int SSL_read(SSL *ssl, void *buf, int num); +__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); + +#define SSL_READ_EARLY_DATA_ERROR 0 +#define SSL_READ_EARLY_DATA_SUCCESS 1 +#define SSL_READ_EARLY_DATA_FINISH 2 + +__owur int SSL_read_early_data(SSL *s, void *buf, size_t num, + size_t *readbytes); +__owur int SSL_peek(SSL *ssl, void *buf, int num); +__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); +__owur ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size, + int flags); +__owur int SSL_write(SSL *ssl, const void *buf, int num); +__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written); +__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num, + size_t *written); +long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); +long SSL_callback_ctrl(SSL *, int, void (*)(void)); +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); + +#define SSL_WRITE_FLAG_CONCLUDE (1U << 0) + +__owur int SSL_write_ex2(SSL *s, const void *buf, size_t num, + uint64_t flags, + size_t *written); + +#define SSL_EARLY_DATA_NOT_SENT 0 +#define SSL_EARLY_DATA_REJECTED 1 +#define SSL_EARLY_DATA_ACCEPTED 2 + +__owur int SSL_get_early_data_status(const SSL *s); + +__owur int SSL_get_error(const SSL *s, int ret_code); +__owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); + +/* This sets the 'default' SSL version that SSL_new() will create */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); +#endif + +#ifndef OPENSSL_NO_SSL3_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void); +#endif +#endif + +#define SSLv23_method TLS_method +#define SSLv23_server_method TLS_server_method +#define SSLv23_client_method TLS_client_method + +/* Negotiate highest available SSL/TLS version */ +__owur const SSL_METHOD *TLS_method(void); +__owur const SSL_METHOD *TLS_server_method(void); +__owur const SSL_METHOD *TLS_client_method(void); + +#ifndef OPENSSL_NO_TLS1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_TLS1_1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_TLS1_2_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_DTLS1_METHOD +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void); +#endif +#endif + +#ifndef OPENSSL_NO_DTLS1_2_METHOD +/* DTLSv1.2 */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void); +#endif +#endif + +__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +__owur size_t DTLS_get_data_mtu(const SSL *s); + +__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx); +__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s); + +__owur int SSL_do_handshake(SSL *s); +int SSL_key_update(SSL *s, int updatetype); +int SSL_get_key_update_type(const SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +__owur int SSL_renegotiate_pending(const SSL *s); +int SSL_new_session_ticket(SSL *s); +int SSL_shutdown(SSL *s); +__owur int SSL_verify_client_post_handshake(SSL *s); +void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); +void SSL_set_post_handshake_auth(SSL *s, int val); + +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s); +__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +__owur const char *SSL_alert_type_string_long(int value); +__owur const char *SSL_alert_type_string(int value); +__owur const char *SSL_alert_desc_string_long(int value); +__owur const char *SSL_alert_desc_string(int value); + +void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s); +__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx); +__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x); +__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x); +__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s); + +void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +__owur int SSL_add_client_CA(SSL *ssl, X509 *x); +__owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); + +void SSL_set_connect_state(SSL *s); +void SSL_set_accept_state(SSL *s); + +__owur long SSL_get_default_timeout(const SSL *s); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_library_init() OPENSSL_init_ssl(0, NULL) +#endif + +__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk); + +__owur SSL *SSL_dup(SSL *ssl); + +__owur X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ +struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +__owur int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +__owur int SSL_get_shutdown(const SSL *ssl); +__owur int SSL_version(const SSL *ssl); +__owur int SSL_client_version(const SSL *s); +__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_store(SSL_CTX *ctx); +__owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile); +__owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath); +__owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore); +__owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx, + const char *CAfile, + const char *CApath); +#define SSL_get0_session SSL_get_session /* just peek at pointer */ +__owur SSL_SESSION *SSL_get_session(const SSL *ssl); +__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +__owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); +SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +void SSL_set_info_callback(SSL *ssl, + void (*cb)(const SSL *ssl, int type, int val)); +void (*SSL_get_info_callback(const SSL *ssl))(const SSL *ssl, int type, + int val); +__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl); + +void SSL_set_verify_result(SSL *ssl, long v); +__owur long SSL_get_verify_result(const SSL *ssl); +__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s); + +__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess, + unsigned char *out, size_t outlen); +__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess, + const unsigned char *in, size_t len); +uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess); + +#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef) +__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef) +__owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); +void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); +#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef) +__owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); +void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); + +__owur int SSL_get_ex_data_X509_STORE_CTX_idx(void); + +#define SSL_CTX_sess_set_cache_size(ctx, t) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SESS_CACHE_SIZE, t, NULL) +#define SSL_CTX_sess_get_cache_size(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_SESS_CACHE_SIZE, 0, NULL) +#define SSL_CTX_set_session_cache_mode(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SESS_CACHE_MODE, m, NULL) +#define SSL_CTX_get_session_cache_mode(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_SESS_CACHE_MODE, 0, NULL) + +#define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) +#define SSL_CTX_set_default_read_ahead(ctx, m) SSL_CTX_set_read_ahead(ctx, m) +#define SSL_CTX_get_read_ahead(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_READ_AHEAD, 0, NULL) +#define SSL_CTX_set_read_ahead(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_READ_AHEAD, m, NULL) +#define SSL_CTX_get_max_cert_list(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_CERT_LIST, 0, NULL) +#define SSL_CTX_set_max_cert_list(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_CERT_LIST, m, NULL) +#define SSL_get_max_cert_list(ssl) \ + SSL_ctrl(ssl, SSL_CTRL_GET_MAX_CERT_LIST, 0, NULL) +#define SSL_set_max_cert_list(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_CERT_LIST, m, NULL) + +#define SSL_CTX_set_max_send_fragment(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_SEND_FRAGMENT, m, NULL) +#define SSL_set_max_send_fragment(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_SEND_FRAGMENT, m, NULL) +#define SSL_CTX_set_split_send_fragment(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SPLIT_SEND_FRAGMENT, m, NULL) +#define SSL_set_split_send_fragment(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_SPLIT_SEND_FRAGMENT, m, NULL) +#define SSL_CTX_set_max_pipelines(ctx, m) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PIPELINES, m, NULL) +#define SSL_set_max_pipelines(ssl, m) \ + SSL_ctrl(ssl, SSL_CTRL_SET_MAX_PIPELINES, m, NULL) +#define SSL_set_retry_verify(ssl) \ + (SSL_ctrl(ssl, SSL_CTRL_SET_RETRY_VERIFY, 0, NULL) > 0) + +void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len); +void SSL_set_default_read_buffer_len(SSL *s, size_t len); + +#ifndef OPENSSL_NO_DH +#ifndef OPENSSL_NO_DEPRECATED_3_0 +/* NB: the |keylength| is only applicable when is_export is true */ +OSSL_DEPRECATEDIN_3_0 +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh)(SSL *ssl, int is_export, + int keylength)); +OSSL_DEPRECATEDIN_3_0 +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh)(SSL *ssl, int is_export, + int keylength)); +#endif +#endif + +__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s); +__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp); +__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp); +__owur int SSL_COMP_get_id(const SSL_COMP *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_COMP_free_compression_methods() \ + while (0) \ + continue +#endif +__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); +int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c); +int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c); +int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len, + int isv2format, STACK_OF(SSL_CIPHER) **sk, + STACK_OF(SSL_CIPHER) **scsvs); + +/* TLS extensions functions */ +__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +__owur int SSL_set_session_ticket_ext_cb(SSL *s, + tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +__owur int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn session_secret_cb, + void *arg); + +void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, + int (*cb)(SSL *ssl, + int + is_forward_secure)); + +void SSL_set_not_resumable_session_callback(SSL *ssl, + int (*cb)(SSL *ssl, + int is_forward_secure)); + +void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, + size_t (*cb)(SSL *ssl, int type, + size_t len, void *arg)); +void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); +int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); +int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size, + size_t hs_block_size); + +int SSL_set_record_padding_callback(SSL *ssl, + size_t (*cb)(SSL *ssl, int type, + size_t len, void *arg)); +void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); +void *SSL_get_record_padding_callback_arg(const SSL *ssl); +int SSL_set_block_padding(SSL *ssl, size_t block_size); +int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size, + size_t hs_block_size); +int SSL_set_num_tickets(SSL *s, size_t num_tickets); +size_t SSL_get_num_tickets(const SSL *s); +int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); + +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +__owur int SSL_is_listener(SSL *ssl); +__owur SSL *SSL_get0_listener(SSL *s); +#define SSL_LISTENER_FLAG_NO_VALIDATE (1UL << 1) +__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags); +__owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags); +__owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags); +#define SSL_ACCEPT_CONNECTION_NO_BLOCK (1UL << 0) +__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags); +__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl); +__owur int SSL_listen(SSL *ssl); + +__owur int SSL_is_domain(SSL *s); +__owur SSL *SSL_get0_domain(SSL *s); +__owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags); + +#define SSL_DOMAIN_FLAG_SINGLE_THREAD (1U << 0) +#define SSL_DOMAIN_FLAG_MULTI_THREAD (1U << 1) +#define SSL_DOMAIN_FLAG_THREAD_ASSISTED (1U << 2) +#define SSL_DOMAIN_FLAG_BLOCKING (1U << 3) +#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING (1U << 4) + +__owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags); +__owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags); +__owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +#ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +#endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +#define SSL_VALUE_CLASS_GENERIC 0 +#define SSL_VALUE_CLASS_FEATURE_REQUEST 1 +#define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST 2 +#define SSL_VALUE_CLASS_FEATURE_NEGOTIATED 3 + +#define SSL_VALUE_NONE 0 +#define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL 1 +#define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL 2 +#define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL 3 +#define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL 4 +#define SSL_VALUE_QUIC_IDLE_TIMEOUT 5 +#define SSL_VALUE_EVENT_HANDLING_MODE 6 +#define SSL_VALUE_STREAM_WRITE_BUF_SIZE 7 +#define SSL_VALUE_STREAM_WRITE_BUF_USED 8 +#define SSL_VALUE_STREAM_WRITE_BUF_AVAIL 9 + +#define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT 0 +#define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT 1 +#define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT 2 + +int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v); +int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v); + +#define SSL_get_generic_value_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +#define SSL_set_generic_value_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v)) +#define SSL_get_feature_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +#define SSL_set_feature_request_uint(ssl, id, v) \ + SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v)) +#define SSL_get_feature_peer_request_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v)) +#define SSL_get_feature_negotiated_uint(ssl, id, v) \ + SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v)) + +#define SSL_get_quic_stream_bidi_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \ + (value)) +#define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \ + (value)) +#define SSL_get_quic_stream_uni_local_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \ + (value)) +#define SSL_get_quic_stream_uni_remote_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \ + (value)) + +#define SSL_get_event_handling_mode(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) +#define SSL_set_event_handling_mode(ssl, value) \ + SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \ + (value)) + +#define SSL_get_stream_write_buf_size(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \ + (value)) +#define SSL_get_stream_write_buf_used(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \ + (value)) +#define SSL_get_stream_write_buf_avail(ssl, value) \ + SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \ + (value)) + +#define SSL_POLL_EVENT_NONE 0 + +#define SSL_POLL_EVENT_F (1U << 0) /* F (Failure) */ +#define SSL_POLL_EVENT_EL (1U << 1) /* EL (Exception on Listener) */ +#define SSL_POLL_EVENT_EC (1U << 2) /* EC (Exception on Conn) */ +#define SSL_POLL_EVENT_ECD (1U << 3) /* ECD (Exception on Conn Drained) */ +#define SSL_POLL_EVENT_ER (1U << 4) /* ER (Exception on Read) */ +#define SSL_POLL_EVENT_EW (1U << 5) /* EW (Exception on Write) */ +#define SSL_POLL_EVENT_R (1U << 6) /* R (Readable) */ +#define SSL_POLL_EVENT_W (1U << 7) /* W (Writable) */ +#define SSL_POLL_EVENT_IC (1U << 8) /* IC (Incoming Connection) */ +#define SSL_POLL_EVENT_ISB (1U << 9) /* ISB (Incoming Stream: Bidi) */ +#define SSL_POLL_EVENT_ISU (1U << 10) /* ISU (Incoming Stream: Uni) */ +#define SSL_POLL_EVENT_OSB (1U << 11) /* OSB (Outgoing Stream: Bidi) */ +#define SSL_POLL_EVENT_OSU (1U << 12) /* OSU (Outgoing Stream: Uni) */ + +#define SSL_POLL_EVENT_RW (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W) +#define SSL_POLL_EVENT_RE (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER) +#define SSL_POLL_EVENT_WE (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW) +#define SSL_POLL_EVENT_RWE (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE) +#define SSL_POLL_EVENT_E (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \ + | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW) +#define SSL_POLL_EVENT_IS (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU) +#define SSL_POLL_EVENT_ISE (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC) +#define SSL_POLL_EVENT_I (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC) +#define SSL_POLL_EVENT_OS (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU) +#define SSL_POLL_EVENT_OSE (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC) + +typedef struct ssl_poll_item_st { + BIO_POLL_DESCRIPTOR desc; + uint64_t events, revents; +} SSL_POLL_ITEM; + +#define SSL_POLL_FLAG_NO_HANDLE_EVENTS (1U << 0) + +__owur int SSL_poll(SSL_POLL_ITEM *items, + size_t num_items, + size_t stride, + const struct timeval *timeout, + uint64_t flags, + size_t *result_count); + +static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR +SSL_as_poll_descriptor(SSL *s) +{ + BIO_POLL_DESCRIPTOR d; + + d.type = BIO_POLL_DESCRIPTOR_TYPE_SSL; + d.value.ssl = s; + return d; +} + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define SSL_cache_hit(s) SSL_session_reused(s) +#endif + +__owur int SSL_session_reused(const SSL *s); +__owur int SSL_is_server(const SSL *s); + +__owur SSL_CONF_CTX *SSL_CONF_CTX_new(void); +int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); +void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); +unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); +__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, + unsigned int flags); +__owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); + +void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); +void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); + +__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +void SSL_add_ssl_module(void); +int SSL_config(SSL *s, const char *name); +int SSL_CTX_config(SSL_CTX *ctx, const char *name); + +#ifndef OPENSSL_NO_SSL_TRACE +void SSL_trace(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); +#endif + +#ifndef OPENSSL_NO_SOCK +int DTLSv1_listen(SSL *s, BIO_ADDR *client); +#endif + +#ifndef OPENSSL_NO_CT + +/* + * A callback for verifying that the received SCTs are sufficient. + * Expected to return 1 if they are sufficient, otherwise 0. + * May return a negative integer if an error occurs. + * A connection should be aborted if the SCTs are deemed insufficient. + */ +typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx, + const STACK_OF(SCT) *scts, void *arg); + +/* + * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate + * the received SCTs. + * If the callback returns a non-positive result, the connection is terminated. + * Call this function before beginning a handshake. + * If a NULL |callback| is provided, SCT validation is disabled. + * |arg| is arbitrary userdata that will be passed to the callback whenever it + * is invoked. Ownership of |arg| remains with the caller. + * + * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response + * will be requested. + */ +int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback, + void *arg); +int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx, + ssl_ct_validation_cb callback, + void *arg); +#define SSL_disable_ct(s) \ + ((void)SSL_set_validation_callback((s), NULL, NULL)) +#define SSL_CTX_disable_ct(ctx) \ + ((void)SSL_CTX_set_validation_callback((ctx), NULL, NULL)) + +/* + * The validation type enumerates the available behaviours of the built-in SSL + * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct(). + * The underlying callback is a static function in libssl. + */ +enum { + SSL_CT_VALIDATION_PERMISSIVE = 0, + SSL_CT_VALIDATION_STRICT +}; + +/* + * Enable CT by setting up a callback that implements one of the built-in + * validation variants. The SSL_CT_VALIDATION_PERMISSIVE variant always + * continues the handshake, the application can make appropriate decisions at + * handshake completion. The SSL_CT_VALIDATION_STRICT variant requires at + * least one valid SCT, or else handshake termination will be requested. The + * handshake may continue anyway if SSL_VERIFY_NONE is in effect. + */ +int SSL_enable_ct(SSL *s, int validation_mode); +int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode); + +/* + * Report whether a non-NULL callback is enabled. + */ +int SSL_ct_is_enabled(const SSL *s); +int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx); + +/* Gets the SCTs received from a connection */ +const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s); + +/* + * Loads the CT log list from the default location. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx); + +/* + * Loads the CT log list from the specified file path. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path); + +/* + * Sets the CT log list used by all SSL connections created from this SSL_CTX. + * Ownership of the CTLOG_STORE is transferred to the SSL_CTX. + */ +void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs); + +/* + * Gets the CT log list used by all SSL connections created from this SSL_CTX. + * This will be NULL unless one of the following functions has been called: + * - SSL_CTX_set_default_ctlog_list_file + * - SSL_CTX_set_ctlog_list_file + * - SSL_CTX_set_ctlog_store + */ +const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx); + +#endif /* OPENSSL_NO_CT */ + +/* What the "other" parameter contains in security callback */ +/* Mask for type */ +#define SSL_SECOP_OTHER_TYPE 0xffff0000 +#define SSL_SECOP_OTHER_NONE 0 +#define SSL_SECOP_OTHER_CIPHER (1 << 16) +#define SSL_SECOP_OTHER_CURVE (2 << 16) +#define SSL_SECOP_OTHER_DH (3 << 16) +#define SSL_SECOP_OTHER_PKEY (4 << 16) +#define SSL_SECOP_OTHER_SIGALG (5 << 16) +#define SSL_SECOP_OTHER_CERT (6 << 16) + +/* Indicated operation refers to peer key or certificate */ +#define SSL_SECOP_PEER 0x1000 + +/* Values for "op" parameter in security callback */ + +/* Called to filter ciphers */ +/* Ciphers client supports */ +#define SSL_SECOP_CIPHER_SUPPORTED (1 | SSL_SECOP_OTHER_CIPHER) +/* Cipher shared by client/server */ +#define SSL_SECOP_CIPHER_SHARED (2 | SSL_SECOP_OTHER_CIPHER) +/* Sanity check of cipher server selects */ +#define SSL_SECOP_CIPHER_CHECK (3 | SSL_SECOP_OTHER_CIPHER) +/* Curves supported by client */ +#define SSL_SECOP_CURVE_SUPPORTED (4 | SSL_SECOP_OTHER_CURVE) +/* Curves shared by client/server */ +#define SSL_SECOP_CURVE_SHARED (5 | SSL_SECOP_OTHER_CURVE) +/* Sanity check of curve server selects */ +#define SSL_SECOP_CURVE_CHECK (6 | SSL_SECOP_OTHER_CURVE) +/* Temporary DH key */ +#define SSL_SECOP_TMP_DH (7 | SSL_SECOP_OTHER_PKEY) +/* SSL/TLS version */ +#define SSL_SECOP_VERSION (9 | SSL_SECOP_OTHER_NONE) +/* Session tickets */ +#define SSL_SECOP_TICKET (10 | SSL_SECOP_OTHER_NONE) +/* Supported signature algorithms sent to peer */ +#define SSL_SECOP_SIGALG_SUPPORTED (11 | SSL_SECOP_OTHER_SIGALG) +/* Shared signature algorithm */ +#define SSL_SECOP_SIGALG_SHARED (12 | SSL_SECOP_OTHER_SIGALG) +/* Sanity check signature algorithm allowed */ +#define SSL_SECOP_SIGALG_CHECK (13 | SSL_SECOP_OTHER_SIGALG) +/* Used to get mask of supported public key signature algorithms */ +#define SSL_SECOP_SIGALG_MASK (14 | SSL_SECOP_OTHER_SIGALG) +/* Use to see if compression is allowed */ +#define SSL_SECOP_COMPRESSION (15 | SSL_SECOP_OTHER_NONE) +/* EE key in certificate */ +#define SSL_SECOP_EE_KEY (16 | SSL_SECOP_OTHER_CERT) +/* CA key in certificate */ +#define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT) +/* CA digest algorithm in certificate */ +#define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT) +/* Peer EE key in certificate */ +#define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER) +/* Peer CA key in certificate */ +#define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER) +/* Peer CA digest algorithm in certificate */ +#define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER) + +void SSL_set_security_level(SSL *s, int level); +__owur int SSL_get_security_level(const SSL *s); +void SSL_set_security_callback(SSL *s, + int (*cb)(const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_get_security_callback(const SSL *s))(const SSL *s, + const SSL_CTX *ctx, int op, + int bits, int nid, void *other, + void *ex); +void SSL_set0_security_ex_data(SSL *s, void *ex); +__owur void *SSL_get0_security_ex_data(const SSL *s); + +void SSL_CTX_set_security_level(SSL_CTX *ctx, int level); +__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx); +void SSL_CTX_set_security_callback(SSL_CTX *ctx, + int (*cb)(const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx))(const SSL *s, + const SSL_CTX *ctx, + int op, int bits, + int nid, + void *other, + void *ex); +void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex); +__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx); + +/* OPENSSL_INIT flag 0x010000 reserved for internal use */ +#define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L +#define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L + +#define OPENSSL_INIT_SSL_DEFAULT \ + (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS) + +int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); + +#ifndef OPENSSL_NO_UNIT_TEST +__owur const struct openssl_ssl_test_functions *SSL_test_functions(void); +#endif + +__owur int SSL_free_buffers(SSL *ssl); +__owur int SSL_alloc_buffers(SSL *ssl); + +/* Status codes passed to the decrypt session ticket callback. Some of these + * are for internal use only and are never passed to the callback. */ +typedef int SSL_TICKET_STATUS; + +/* Support for ticket appdata */ +/* fatal error, malloc failure */ +#define SSL_TICKET_FATAL_ERR_MALLOC 0 +/* fatal error, either from parsing or decrypting the ticket */ +#define SSL_TICKET_FATAL_ERR_OTHER 1 +/* No ticket present */ +#define SSL_TICKET_NONE 2 +/* Empty ticket present */ +#define SSL_TICKET_EMPTY 3 +/* the ticket couldn't be decrypted */ +#define SSL_TICKET_NO_DECRYPT 4 +/* a ticket was successfully decrypted */ +#define SSL_TICKET_SUCCESS 5 +/* same as above but the ticket needs to be renewed */ +#define SSL_TICKET_SUCCESS_RENEW 6 + +/* Return codes for the decrypt session ticket callback */ +typedef int SSL_TICKET_RETURN; + +/* An error occurred */ +#define SSL_TICKET_RETURN_ABORT 0 +/* Do not use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE 1 +/* Do not use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE_RENEW 2 +/* Use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE 3 +/* Use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE_RENEW 4 + +typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg); +typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss, + const unsigned char *keyname, + size_t keyname_length, + SSL_TICKET_STATUS status, + void *arg); +int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx, + SSL_CTX_generate_session_ticket_fn gen_cb, + SSL_CTX_decrypt_session_ticket_fn dec_cb, + void *arg); +int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len); +int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len); + +typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us); + +void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb); + +typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); +void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg); +void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg); + +/* store the default cipher strings inside the library */ +const char *OSSL_default_cipher_list(void); +const char *OSSL_default_ciphersuites(void); + +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +#define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +#define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +#define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +#define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg); +int SSL_set_quic_tls_transport_params(SSL *s, + const unsigned char *params, + size_t params_len); + +int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ui.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ui.h new file mode 100644 index 00000000000000..901af471fd0b16 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/ui.h @@ -0,0 +1,409 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/ui.h.in + * + * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_UI_H +#define OPENSSL_UI_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_UI_H +#endif + +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#endif +#include +#include +#include +#include + +/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifdef OPENSSL_NO_UI_CONSOLE +#define OPENSSL_NO_UI +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * All the following functions return -1 or NULL on error and in some cases + * (UI_process()) -2 if interrupted or in some other way cancelled. When + * everything is fine, they return 0, a positive value or a non-NULL pointer, + * all depending on their purpose. + */ + +/* Creators and destructor. */ +UI *UI_new(void); +UI *UI_new_method(const UI_METHOD *method); +void UI_free(UI *ui); + +/*- + The following functions are used to add strings to be printed and prompt + strings to prompt for data. The names are UI_{add,dup}__string + and UI_{add,dup}_input_boolean. + + UI_{add,dup}__string have the following meanings: + add add a text or prompt string. The pointers given to these + functions are used verbatim, no copying is done. + dup make a copy of the text or prompt string, then add the copy + to the collection of strings in the user interface. + + The function is a name for the functionality that the given + string shall be used for. It can be one of: + input use the string as data prompt. + verify use the string as verification prompt. This + is used to verify a previous input. + info use the string for informational output. + error use the string for error output. + Honestly, there's currently no difference between info and error for the + moment. + + UI_{add,dup}_input_boolean have the same semantics for "add" and "dup", + and are typically used when one wants to prompt for a yes/no response. + + All of the functions in this group take a UI and a prompt string. + The string input and verify addition functions also take a flag argument, + a buffer for the result to end up with, a minimum input size and a maximum + input size (the result buffer MUST be large enough to be able to contain + the maximum number of characters). Additionally, the verify addition + functions takes another buffer to compare the result against. + The boolean input functions take an action description string (which should + be safe to ignore if the expected user action is obvious, for example with + a dialog box with an OK button and a Cancel button), a string of acceptable + characters to mean OK and to mean Cancel. The two last strings are checked + to make sure they don't have common characters. Additionally, the same + flag argument as for the string input is taken, as well as a result buffer. + The result buffer is required to be at least one byte long. Depending on + the answer, the first character from the OK or the Cancel character strings + will be stored in the first byte of the result buffer. No NUL will be + added, so the result is *not* a string. + + On success, the all return an index of the added information. That index + is useful when retrieving results with UI_get0_result(). */ +int UI_add_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_dup_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_add_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_dup_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_add_info_string(UI *ui, const char *text); +int UI_dup_info_string(UI *ui, const char *text); +int UI_add_error_string(UI *ui, const char *text); +int UI_dup_error_string(UI *ui, const char *text); + +/* These are the possible flags. They can be or'ed together. */ +/* Use to have echoing of input */ +#define UI_INPUT_FLAG_ECHO 0x01 +/* + * Use a default password. Where that password is found is completely up to + * the application, it might for example be in the user data set with + * UI_add_user_data(). It is not recommended to have more than one input in + * each UI being marked with this flag, or the application might get + * confused. + */ +#define UI_INPUT_FLAG_DEFAULT_PWD 0x02 + +/*- + * The user of these routines may want to define flags of their own. The core + * UI won't look at those, but will pass them on to the method routines. They + * must use higher bits so they don't get confused with the UI bits above. + * UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use. A good + * example of use is this: + * + * #define MY_UI_FLAG1 (0x01 << UI_INPUT_FLAG_USER_BASE) + * + */ +#define UI_INPUT_FLAG_USER_BASE 16 + +/*- + * The following function helps construct a prompt. + * phrase_desc is a textual short description of the phrase to enter, + * for example "pass phrase", and + * object_name is the name of the object + * (which might be a card name or a file name) or NULL. + * The returned string shall always be allocated on the heap with + * OPENSSL_malloc(), and need to be free'd with OPENSSL_free(). + * + * If the ui_method doesn't contain a pointer to a user-defined prompt + * constructor, a default string is built, looking like this: + * + * "Enter {phrase_desc} for {object_name}:" + * + * So, if phrase_desc has the value "pass phrase" and object_name has + * the value "foo.key", the resulting string is: + * + * "Enter pass phrase for foo.key:" + */ +char *UI_construct_prompt(UI *ui_method, + const char *phrase_desc, const char *object_name); + +/* + * The following function is used to store a pointer to user-specific data. + * Any previous such pointer will be returned and replaced. + * + * For callback purposes, this function makes a lot more sense than using + * ex_data, since the latter requires that different parts of OpenSSL or + * applications share the same ex_data index. + * + * Note that the UI_OpenSSL() method completely ignores the user data. Other + * methods may not, however. + */ +void *UI_add_user_data(UI *ui, void *user_data); +/* + * Alternatively, this function is used to duplicate the user data. + * This uses the duplicator method function. The destroy function will + * be used to free the user data in this case. + */ +int UI_dup_user_data(UI *ui, void *user_data); +/* We need a user data retrieving function as well. */ +void *UI_get0_user_data(UI *ui); + +/* Return the result associated with a prompt given with the index i. */ +const char *UI_get0_result(UI *ui, int i); +int UI_get_result_length(UI *ui, int i); + +/* When all strings have been added, process the whole thing. */ +int UI_process(UI *ui); + +/* + * Give a user interface parameterised control commands. This can be used to + * send down an integer, a data pointer or a function pointer, as well as be + * used to get information from a UI. + */ +int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f)(void)); + +/* The commands */ +/* + * Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the + * OpenSSL error stack before printing any info or added error messages and + * before any prompting. + */ +#define UI_CTRL_PRINT_ERRORS 1 +/* + * Check if a UI_process() is possible to do again with the same instance of + * a user interface. This makes UI_ctrl() return 1 if it is redoable, and 0 + * if not. + */ +#define UI_CTRL_IS_REDOABLE 2 + +/* Some methods may use extra data */ +#define UI_set_app_data(s, arg) UI_set_ex_data(s, 0, arg) +#define UI_get_app_data(s) UI_get_ex_data(s, 0) + +#define UI_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, l, p, newf, dupf, freef) +int UI_set_ex_data(UI *r, int idx, void *arg); +void *UI_get_ex_data(const UI *r, int idx); + +/* Use specific methods instead of the built-in one */ +void UI_set_default_method(const UI_METHOD *meth); +const UI_METHOD *UI_get_default_method(void); +const UI_METHOD *UI_get_method(UI *ui); +const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth); + +#ifndef OPENSSL_NO_UI_CONSOLE + +/* The method with all the built-in thingies */ +UI_METHOD *UI_OpenSSL(void); + +#endif + +/* + * NULL method. Literally does nothing, but may serve as a placeholder + * to avoid internal default. + */ +const UI_METHOD *UI_null(void); + +/* ---------- For method writers ---------- */ +/*- + A method contains a number of functions that implement the low level + of the User Interface. The functions are: + + an opener This function starts a session, maybe by opening + a channel to a tty, or by opening a window. + a writer This function is called to write a given string, + maybe to the tty, maybe as a field label in a + window. + a flusher This function is called to flush everything that + has been output so far. It can be used to actually + display a dialog box after it has been built. + a reader This function is called to read a given prompt, + maybe from the tty, maybe from a field in a + window. Note that it's called with all string + structures, not only the prompt ones, so it must + check such things itself. + a closer This function closes the session, maybe by closing + the channel to the tty, or closing the window. + + All these functions are expected to return: + + 0 on error. + 1 on success. + -1 on out-of-band events, for example if some prompting has + been canceled (by pressing Ctrl-C, for example). This is + only checked when returned by the flusher or the reader. + + The way this is used, the opener is first called, then the writer for all + strings, then the flusher, then the reader for all strings and finally the + closer. Note that if you want to prompt from a terminal or other command + line interface, the best is to have the reader also write the prompts + instead of having the writer do it. If you want to prompt from a dialog + box, the writer can be used to build up the contents of the box, and the + flusher to actually display the box and run the event loop until all data + has been given, after which the reader only grabs the given data and puts + them back into the UI strings. + + All method functions take a UI as argument. Additionally, the writer and + the reader take a UI_STRING. +*/ + +/* + * The UI_STRING type is the data structure that contains all the needed info + * about a string or a prompt, including test data for a verification prompt. + */ +typedef struct ui_string_st UI_STRING; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(UI_STRING, UI_STRING, UI_STRING) +#define sk_UI_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_value(sk, idx) ((UI_STRING *)OPENSSL_sk_value(ossl_check_const_UI_STRING_sk_type(sk), (idx))) +#define sk_UI_STRING_new(cmp) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new(ossl_check_UI_STRING_compfunc_type(cmp))) +#define sk_UI_STRING_new_null() ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_null()) +#define sk_UI_STRING_new_reserve(cmp, n) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_reserve(ossl_check_UI_STRING_compfunc_type(cmp), (n))) +#define sk_UI_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_UI_STRING_sk_type(sk), (n)) +#define sk_UI_STRING_free(sk) OPENSSL_sk_free(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_delete(sk, i) ((UI_STRING *)OPENSSL_sk_delete(ossl_check_UI_STRING_sk_type(sk), (i))) +#define sk_UI_STRING_delete_ptr(sk, ptr) ((UI_STRING *)OPENSSL_sk_delete_ptr(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))) +#define sk_UI_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_pop(sk) ((UI_STRING *)OPENSSL_sk_pop(ossl_check_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_shift(sk) ((UI_STRING *)OPENSSL_sk_shift(ossl_check_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_UI_STRING_sk_type(sk),ossl_check_UI_STRING_freefunc_type(freefunc)) +#define sk_UI_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), (idx)) +#define sk_UI_STRING_set(sk, idx, ptr) ((UI_STRING *)OPENSSL_sk_set(ossl_check_UI_STRING_sk_type(sk), (idx), ossl_check_UI_STRING_type(ptr))) +#define sk_UI_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), pnum) +#define sk_UI_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_dup(sk) ((STACK_OF(UI_STRING) *)OPENSSL_sk_dup(ossl_check_const_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(UI_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_UI_STRING_sk_type(sk), ossl_check_UI_STRING_copyfunc_type(copyfunc), ossl_check_UI_STRING_freefunc_type(freefunc))) +#define sk_UI_STRING_set_cmp_func(sk, cmp) ((sk_UI_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * The different types of strings that are currently supported. This is only + * needed by method authors. + */ +enum UI_string_types { + UIT_NONE = 0, + UIT_PROMPT, /* Prompt for a string */ + UIT_VERIFY, /* Prompt for a string and verify */ + UIT_BOOLEAN, /* Prompt for a yes/no response */ + UIT_INFO, /* Send info to the user */ + UIT_ERROR /* Send an error message to the user */ +}; + +/* Create and manipulate methods */ +UI_METHOD *UI_create_method(const char *name); +void UI_destroy_method(UI_METHOD *ui_method); +int UI_method_set_opener(UI_METHOD *method, int (*opener)(UI *ui)); +int UI_method_set_writer(UI_METHOD *method, + int (*writer)(UI *ui, UI_STRING *uis)); +int UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui)); +int UI_method_set_reader(UI_METHOD *method, + int (*reader)(UI *ui, UI_STRING *uis)); +int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui)); +int UI_method_set_data_duplicator(UI_METHOD *method, + void *(*duplicator)(UI *ui, void *ui_data), + void (*destructor)(UI *ui, void *ui_data)); +int UI_method_set_prompt_constructor(UI_METHOD *method, + char *(*prompt_constructor)(UI *ui, + const char + *phrase_desc, + const char + *object_name)); +int UI_method_set_ex_data(UI_METHOD *method, int idx, void *data); +int (*UI_method_get_opener(const UI_METHOD *method))(UI *); +int (*UI_method_get_writer(const UI_METHOD *method))(UI *, UI_STRING *); +int (*UI_method_get_flusher(const UI_METHOD *method))(UI *); +int (*UI_method_get_reader(const UI_METHOD *method))(UI *, UI_STRING *); +int (*UI_method_get_closer(const UI_METHOD *method))(UI *); +char *(*UI_method_get_prompt_constructor(const UI_METHOD *method))(UI *, const char *, const char *); +void *(*UI_method_get_data_duplicator(const UI_METHOD *method))(UI *, void *); +void (*UI_method_get_data_destructor(const UI_METHOD *method))(UI *, void *); +const void *UI_method_get_ex_data(const UI_METHOD *method, int idx); + +/* + * The following functions are helpers for method writers to access relevant + * data from a UI_STRING. + */ + +/* Return type of the UI_STRING */ +enum UI_string_types UI_get_string_type(UI_STRING *uis); +/* Return input flags of the UI_STRING */ +int UI_get_input_flags(UI_STRING *uis); +/* Return the actual string to output (the prompt, info or error) */ +const char *UI_get0_output_string(UI_STRING *uis); +/* + * Return the optional action string to output (the boolean prompt + * instruction) + */ +const char *UI_get0_action_string(UI_STRING *uis); +/* Return the result of a prompt */ +const char *UI_get0_result_string(UI_STRING *uis); +int UI_get_result_string_length(UI_STRING *uis); +/* + * Return the string to test the result against. Only useful with verifies. + */ +const char *UI_get0_test_string(UI_STRING *uis); +/* Return the required minimum size of the result */ +int UI_get_result_minsize(UI_STRING *uis); +/* Return the required maximum size of the result */ +int UI_get_result_maxsize(UI_STRING *uis); +/* Set the result of a UI_STRING. */ +int UI_set_result(UI *ui, UI_STRING *uis, const char *result); +int UI_set_result_ex(UI *ui, UI_STRING *uis, const char *result, int len); + +/* A couple of popular utility functions */ +int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt, + int verify); +int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt, + int verify); +UI_METHOD *UI_UTIL_wrap_read_pem_callback(pem_password_cb *cb, int rwflag); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/x509.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/x509.h new file mode 100644 index 00000000000000..30681e4fb698aa --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/x509.h @@ -0,0 +1,1301 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509.h.in + * + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_H +#define OPENSSL_X509_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509_H +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#include +#include +#include +#endif + +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Needed stacks for types defined in other headers */ +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME, X509_NAME, X509_NAME) +#define sk_X509_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_value(sk, idx) ((X509_NAME *)OPENSSL_sk_value(ossl_check_const_X509_NAME_sk_type(sk), (idx))) +#define sk_X509_NAME_new(cmp) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new(ossl_check_X509_NAME_compfunc_type(cmp))) +#define sk_X509_NAME_new_null() ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_null()) +#define sk_X509_NAME_new_reserve(cmp, n) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_compfunc_type(cmp), (n))) +#define sk_X509_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_sk_type(sk), (n)) +#define sk_X509_NAME_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_delete(sk, i) ((X509_NAME *)OPENSSL_sk_delete(ossl_check_X509_NAME_sk_type(sk), (i))) +#define sk_X509_NAME_delete_ptr(sk, ptr) ((X509_NAME *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr))) +#define sk_X509_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_pop(sk) ((X509_NAME *)OPENSSL_sk_pop(ossl_check_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_shift(sk) ((X509_NAME *)OPENSSL_sk_shift(ossl_check_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_sk_type(sk),ossl_check_X509_NAME_freefunc_type(freefunc)) +#define sk_X509_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), (idx)) +#define sk_X509_NAME_set(sk, idx, ptr) ((X509_NAME *)OPENSSL_sk_set(ossl_check_X509_NAME_sk_type(sk), (idx), ossl_check_X509_NAME_type(ptr))) +#define sk_X509_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), pnum) +#define sk_X509_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_dup(sk) ((STACK_OF(X509_NAME) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_sk_type(sk), ossl_check_X509_NAME_copyfunc_type(copyfunc), ossl_check_X509_NAME_freefunc_type(freefunc))) +#define sk_X509_NAME_set_cmp_func(sk, cmp) ((sk_X509_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509, X509, X509) +#define sk_X509_num(sk) OPENSSL_sk_num(ossl_check_const_X509_sk_type(sk)) +#define sk_X509_value(sk, idx) ((X509 *)OPENSSL_sk_value(ossl_check_const_X509_sk_type(sk), (idx))) +#define sk_X509_new(cmp) ((STACK_OF(X509) *)OPENSSL_sk_new(ossl_check_X509_compfunc_type(cmp))) +#define sk_X509_new_null() ((STACK_OF(X509) *)OPENSSL_sk_new_null()) +#define sk_X509_new_reserve(cmp, n) ((STACK_OF(X509) *)OPENSSL_sk_new_reserve(ossl_check_X509_compfunc_type(cmp), (n))) +#define sk_X509_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_sk_type(sk), (n)) +#define sk_X509_free(sk) OPENSSL_sk_free(ossl_check_X509_sk_type(sk)) +#define sk_X509_zero(sk) OPENSSL_sk_zero(ossl_check_X509_sk_type(sk)) +#define sk_X509_delete(sk, i) ((X509 *)OPENSSL_sk_delete(ossl_check_X509_sk_type(sk), (i))) +#define sk_X509_delete_ptr(sk, ptr) ((X509 *)OPENSSL_sk_delete_ptr(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr))) +#define sk_X509_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_pop(sk) ((X509 *)OPENSSL_sk_pop(ossl_check_X509_sk_type(sk))) +#define sk_X509_shift(sk) ((X509 *)OPENSSL_sk_shift(ossl_check_X509_sk_type(sk))) +#define sk_X509_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_sk_type(sk),ossl_check_X509_freefunc_type(freefunc)) +#define sk_X509_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), (idx)) +#define sk_X509_set(sk, idx, ptr) ((X509 *)OPENSSL_sk_set(ossl_check_X509_sk_type(sk), (idx), ossl_check_X509_type(ptr))) +#define sk_X509_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), pnum) +#define sk_X509_sort(sk) OPENSSL_sk_sort(ossl_check_X509_sk_type(sk)) +#define sk_X509_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_sk_type(sk)) +#define sk_X509_dup(sk) ((STACK_OF(X509) *)OPENSSL_sk_dup(ossl_check_const_X509_sk_type(sk))) +#define sk_X509_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_sk_type(sk), ossl_check_X509_copyfunc_type(copyfunc), ossl_check_X509_freefunc_type(freefunc))) +#define sk_X509_set_cmp_func(sk, cmp) ((sk_X509_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_sk_type(sk), ossl_check_X509_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_REVOKED, X509_REVOKED, X509_REVOKED) +#define sk_X509_REVOKED_num(sk) OPENSSL_sk_num(ossl_check_const_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_value(sk, idx) ((X509_REVOKED *)OPENSSL_sk_value(ossl_check_const_X509_REVOKED_sk_type(sk), (idx))) +#define sk_X509_REVOKED_new(cmp) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new(ossl_check_X509_REVOKED_compfunc_type(cmp))) +#define sk_X509_REVOKED_new_null() ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_null()) +#define sk_X509_REVOKED_new_reserve(cmp, n) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_reserve(ossl_check_X509_REVOKED_compfunc_type(cmp), (n))) +#define sk_X509_REVOKED_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_REVOKED_sk_type(sk), (n)) +#define sk_X509_REVOKED_free(sk) OPENSSL_sk_free(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_zero(sk) OPENSSL_sk_zero(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_delete(sk, i) ((X509_REVOKED *)OPENSSL_sk_delete(ossl_check_X509_REVOKED_sk_type(sk), (i))) +#define sk_X509_REVOKED_delete_ptr(sk, ptr) ((X509_REVOKED *)OPENSSL_sk_delete_ptr(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr))) +#define sk_X509_REVOKED_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_pop(sk) ((X509_REVOKED *)OPENSSL_sk_pop(ossl_check_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_shift(sk) ((X509_REVOKED *)OPENSSL_sk_shift(ossl_check_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_REVOKED_sk_type(sk),ossl_check_X509_REVOKED_freefunc_type(freefunc)) +#define sk_X509_REVOKED_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), (idx)) +#define sk_X509_REVOKED_set(sk, idx, ptr) ((X509_REVOKED *)OPENSSL_sk_set(ossl_check_X509_REVOKED_sk_type(sk), (idx), ossl_check_X509_REVOKED_type(ptr))) +#define sk_X509_REVOKED_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), pnum) +#define sk_X509_REVOKED_sort(sk) OPENSSL_sk_sort(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_dup(sk) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_dup(ossl_check_const_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_copyfunc_type(copyfunc), ossl_check_X509_REVOKED_freefunc_type(freefunc))) +#define sk_X509_REVOKED_set_cmp_func(sk, cmp) ((sk_X509_REVOKED_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) +#define sk_X509_CRL_num(sk) OPENSSL_sk_num(ossl_check_const_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_value(sk, idx) ((X509_CRL *)OPENSSL_sk_value(ossl_check_const_X509_CRL_sk_type(sk), (idx))) +#define sk_X509_CRL_new(cmp) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new(ossl_check_X509_CRL_compfunc_type(cmp))) +#define sk_X509_CRL_new_null() ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_null()) +#define sk_X509_CRL_new_reserve(cmp, n) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_reserve(ossl_check_X509_CRL_compfunc_type(cmp), (n))) +#define sk_X509_CRL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_CRL_sk_type(sk), (n)) +#define sk_X509_CRL_free(sk) OPENSSL_sk_free(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_zero(sk) OPENSSL_sk_zero(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_delete(sk, i) ((X509_CRL *)OPENSSL_sk_delete(ossl_check_X509_CRL_sk_type(sk), (i))) +#define sk_X509_CRL_delete_ptr(sk, ptr) ((X509_CRL *)OPENSSL_sk_delete_ptr(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr))) +#define sk_X509_CRL_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_pop(sk) ((X509_CRL *)OPENSSL_sk_pop(ossl_check_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_shift(sk) ((X509_CRL *)OPENSSL_sk_shift(ossl_check_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_CRL_sk_type(sk),ossl_check_X509_CRL_freefunc_type(freefunc)) +#define sk_X509_CRL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), (idx)) +#define sk_X509_CRL_set(sk, idx, ptr) ((X509_CRL *)OPENSSL_sk_set(ossl_check_X509_CRL_sk_type(sk), (idx), ossl_check_X509_CRL_type(ptr))) +#define sk_X509_CRL_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), pnum) +#define sk_X509_CRL_sort(sk) OPENSSL_sk_sort(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_dup(sk) ((STACK_OF(X509_CRL) *)OPENSSL_sk_dup(ossl_check_const_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_CRL) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_CRL_sk_type(sk), ossl_check_X509_CRL_copyfunc_type(copyfunc), ossl_check_X509_CRL_freefunc_type(freefunc))) +#define sk_X509_CRL_set_cmp_func(sk, cmp) ((sk_X509_CRL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_compfunc_type(cmp))) + +/* clang-format on */ + +/* Flags for X509_get_signature_info() */ +/* Signature info is valid */ +#define X509_SIG_INFO_VALID 0x1 +/* Signature is suitable for TLS use */ +#define X509_SIG_INFO_TLS 0x2 + +#define X509_FILETYPE_PEM 1 +#define X509_FILETYPE_ASN1 2 +#define X509_FILETYPE_DEFAULT 3 + +/*- + * : + * The KeyUsage BITSTRING is treated as a little-endian integer, hence bit `0` + * is 0x80, while bit `7` is 0x01 (the LSB of the integer value), bit `8` is + * then the MSB of the second octet, or 0x8000. + */ +#define X509v3_KU_DIGITAL_SIGNATURE 0x0080 /* (0) */ +#define X509v3_KU_NON_REPUDIATION 0x0040 /* (1) */ +#define X509v3_KU_KEY_ENCIPHERMENT 0x0020 /* (2) */ +#define X509v3_KU_DATA_ENCIPHERMENT 0x0010 /* (3) */ +#define X509v3_KU_KEY_AGREEMENT 0x0008 /* (4) */ +#define X509v3_KU_KEY_CERT_SIGN 0x0004 /* (5) */ +#define X509v3_KU_CRL_SIGN 0x0002 /* (6) */ +#define X509v3_KU_ENCIPHER_ONLY 0x0001 /* (7) */ +#define X509v3_KU_DECIPHER_ONLY 0x8000 /* (8) */ +#ifndef OPENSSL_NO_DEPRECATED_3_4 +#define X509v3_KU_UNDEF 0xffff /* vestigial, not used */ +#endif + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */; + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +typedef struct X509_sig_st X509_SIG; + +typedef struct X509_name_entry_st X509_NAME_ENTRY; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME_ENTRY, X509_NAME_ENTRY, X509_NAME_ENTRY) +#define sk_X509_NAME_ENTRY_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_value(sk, idx) ((X509_NAME_ENTRY *)OPENSSL_sk_value(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), (idx))) +#define sk_X509_NAME_ENTRY_new(cmp) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) +#define sk_X509_NAME_ENTRY_new_null() ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_null()) +#define sk_X509_NAME_ENTRY_new_reserve(cmp, n) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp), (n))) +#define sk_X509_NAME_ENTRY_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_ENTRY_sk_type(sk), (n)) +#define sk_X509_NAME_ENTRY_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_delete(sk, i) ((X509_NAME_ENTRY *)OPENSSL_sk_delete(ossl_check_X509_NAME_ENTRY_sk_type(sk), (i))) +#define sk_X509_NAME_ENTRY_delete_ptr(sk, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr))) +#define sk_X509_NAME_ENTRY_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_pop(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_pop(ossl_check_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_shift(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_shift(ossl_check_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_ENTRY_sk_type(sk),ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc)) +#define sk_X509_NAME_ENTRY_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), (idx)) +#define sk_X509_NAME_ENTRY_set(sk, idx, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_set(ossl_check_X509_NAME_ENTRY_sk_type(sk), (idx), ossl_check_X509_NAME_ENTRY_type(ptr))) +#define sk_X509_NAME_ENTRY_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), pnum) +#define sk_X509_NAME_ENTRY_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_dup(sk) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_copyfunc_type(copyfunc), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc))) +#define sk_X509_NAME_ENTRY_set_cmp_func(sk, cmp) ((sk_X509_NAME_ENTRY_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) + +/* clang-format on */ + +#define X509_EX_V_NETSCAPE_HACK 0x8000 +#define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st X509_EXTENSION; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_EXTENSION, X509_EXTENSION, X509_EXTENSION) +#define sk_X509_EXTENSION_num(sk) OPENSSL_sk_num(ossl_check_const_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_value(sk, idx) ((X509_EXTENSION *)OPENSSL_sk_value(ossl_check_const_X509_EXTENSION_sk_type(sk), (idx))) +#define sk_X509_EXTENSION_new(cmp) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new(ossl_check_X509_EXTENSION_compfunc_type(cmp))) +#define sk_X509_EXTENSION_new_null() ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_null()) +#define sk_X509_EXTENSION_new_reserve(cmp, n) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_reserve(ossl_check_X509_EXTENSION_compfunc_type(cmp), (n))) +#define sk_X509_EXTENSION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_EXTENSION_sk_type(sk), (n)) +#define sk_X509_EXTENSION_free(sk) OPENSSL_sk_free(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_zero(sk) OPENSSL_sk_zero(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_delete(sk, i) ((X509_EXTENSION *)OPENSSL_sk_delete(ossl_check_X509_EXTENSION_sk_type(sk), (i))) +#define sk_X509_EXTENSION_delete_ptr(sk, ptr) ((X509_EXTENSION *)OPENSSL_sk_delete_ptr(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr))) +#define sk_X509_EXTENSION_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_pop(sk) ((X509_EXTENSION *)OPENSSL_sk_pop(ossl_check_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_shift(sk) ((X509_EXTENSION *)OPENSSL_sk_shift(ossl_check_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_EXTENSION_sk_type(sk),ossl_check_X509_EXTENSION_freefunc_type(freefunc)) +#define sk_X509_EXTENSION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), (idx)) +#define sk_X509_EXTENSION_set(sk, idx, ptr) ((X509_EXTENSION *)OPENSSL_sk_set(ossl_check_X509_EXTENSION_sk_type(sk), (idx), ossl_check_X509_EXTENSION_type(ptr))) +#define sk_X509_EXTENSION_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), pnum) +#define sk_X509_EXTENSION_sort(sk) OPENSSL_sk_sort(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_dup(sk) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_dup(ossl_check_const_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_copyfunc_type(copyfunc), ossl_check_X509_EXTENSION_freefunc_type(freefunc))) +#define sk_X509_EXTENSION_set_cmp_func(sk, cmp) ((sk_X509_EXTENSION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_compfunc_type(cmp))) + +/* clang-format on */ +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; +typedef struct x509_attributes_st X509_ATTRIBUTE; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_ATTRIBUTE, X509_ATTRIBUTE, X509_ATTRIBUTE) +#define sk_X509_ATTRIBUTE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_value(sk, idx) ((X509_ATTRIBUTE *)OPENSSL_sk_value(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), (idx))) +#define sk_X509_ATTRIBUTE_new(cmp) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) +#define sk_X509_ATTRIBUTE_new_null() ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_null()) +#define sk_X509_ATTRIBUTE_new_reserve(cmp, n) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_reserve(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp), (n))) +#define sk_X509_ATTRIBUTE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ATTRIBUTE_sk_type(sk), (n)) +#define sk_X509_ATTRIBUTE_free(sk) OPENSSL_sk_free(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_delete(sk, i) ((X509_ATTRIBUTE *)OPENSSL_sk_delete(ossl_check_X509_ATTRIBUTE_sk_type(sk), (i))) +#define sk_X509_ATTRIBUTE_delete_ptr(sk, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_delete_ptr(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr))) +#define sk_X509_ATTRIBUTE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_pop(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_pop(ossl_check_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_shift(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_shift(ossl_check_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ATTRIBUTE_sk_type(sk),ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc)) +#define sk_X509_ATTRIBUTE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), (idx)) +#define sk_X509_ATTRIBUTE_set(sk, idx, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_set(ossl_check_X509_ATTRIBUTE_sk_type(sk), (idx), ossl_check_X509_ATTRIBUTE_type(ptr))) +#define sk_X509_ATTRIBUTE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), pnum) +#define sk_X509_ATTRIBUTE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_dup(sk) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_dup(ossl_check_const_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_copyfunc_type(copyfunc), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc))) +#define sk_X509_ATTRIBUTE_set_cmp_func(sk, cmp) ((sk_X509_ATTRIBUTE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) + +/* clang-format on */ +typedef struct X509_req_info_st X509_REQ_INFO; +typedef struct X509_req_st X509_REQ; +typedef struct x509_cert_aux_st X509_CERT_AUX; +typedef struct x509_cinf_st X509_CINF; + +/* Flags for X509_print_ex() */ + +#define X509_FLAG_COMPAT 0 +#define X509_FLAG_NO_HEADER 1L +#define X509_FLAG_NO_VERSION (1L << 1) +#define X509_FLAG_NO_SERIAL (1L << 2) +#define X509_FLAG_NO_SIGNAME (1L << 3) +#define X509_FLAG_NO_ISSUER (1L << 4) +#define X509_FLAG_NO_VALIDITY (1L << 5) +#define X509_FLAG_NO_SUBJECT (1L << 6) +#define X509_FLAG_NO_PUBKEY (1L << 7) +#define X509_FLAG_NO_EXTENSIONS (1L << 8) +#define X509_FLAG_NO_SIGDUMP (1L << 9) +#define X509_FLAG_NO_AUX (1L << 10) +#define X509_FLAG_NO_ATTRIBUTES (1L << 11) +#define X509_FLAG_NO_IDS (1L << 12) +#define X509_FLAG_EXTENSIONS_ONLY_KID (1L << 13) + +/* Flags specific to X509_NAME_print_ex() */ + +/* The field separator information */ + +#define XN_FLAG_SEP_MASK (0xf << 16) + +#define XN_FLAG_COMPAT 0 /* Traditional; use old X509_NAME_print */ +#define XN_FLAG_SEP_COMMA_PLUS (1 << 16) /* RFC2253 ,+ */ +#define XN_FLAG_SEP_CPLUS_SPC (2 << 16) /* ,+ spaced: more readable */ +#define XN_FLAG_SEP_SPLUS_SPC (3 << 16) /* ;+ spaced */ +#define XN_FLAG_SEP_MULTILINE (4 << 16) /* One line per field */ + +#define XN_FLAG_DN_REV (1 << 20) /* Reverse DN order */ + +/* How the field name is shown */ + +#define XN_FLAG_FN_MASK (0x3 << 21) + +#define XN_FLAG_FN_SN 0 /* Object short name */ +#define XN_FLAG_FN_LN (1 << 21) /* Object long name */ +#define XN_FLAG_FN_OID (2 << 21) /* Always use OIDs */ +#define XN_FLAG_FN_NONE (3 << 21) /* No field names */ + +#define XN_FLAG_SPC_EQ (1 << 23) /* Put spaces round '=' */ + +/* + * This determines if we dump fields we don't recognise: RFC2253 requires + * this. + */ + +#define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) + +#define XN_FLAG_FN_ALIGN (1 << 25) /* Align field names to 20 \ + * characters */ + +/* Complete set of RFC2253 flags */ + +#define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | XN_FLAG_SEP_COMMA_PLUS | XN_FLAG_DN_REV | XN_FLAG_FN_SN | XN_FLAG_DUMP_UNKNOWN_FIELDS) + +/* readable oneline form */ + +#define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | ASN1_STRFLGS_ESC_QUOTE | XN_FLAG_SEP_CPLUS_SPC | XN_FLAG_SPC_EQ | XN_FLAG_FN_SN) + +/* readable multiline form */ + +#define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | ASN1_STRFLGS_ESC_MSB | XN_FLAG_SEP_MULTILINE | XN_FLAG_SPC_EQ | XN_FLAG_FN_LN | XN_FLAG_FN_ALIGN) + +typedef struct X509_crl_info_st X509_CRL_INFO; + +typedef struct private_key_st { + int version; + /* The PKCS#8 data types */ + X509_ALGOR *enc_algor; + ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ + /* When decrypted, the following will not be NULL */ + EVP_PKEY *dec_pkey; + /* used to encrypt and decrypt */ + int key_length; + char *key_data; + int key_free; /* true if we should auto free key_data */ + /* expanded version of 'enc_algor' */ + EVP_CIPHER_INFO cipher; +} X509_PKEY; + +typedef struct X509_info_st { + X509 *x509; + X509_CRL *crl; + X509_PKEY *x_pkey; + EVP_CIPHER_INFO enc_cipher; + int enc_len; + char *enc_data; +} X509_INFO; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_INFO, X509_INFO, X509_INFO) +#define sk_X509_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_value(sk, idx) ((X509_INFO *)OPENSSL_sk_value(ossl_check_const_X509_INFO_sk_type(sk), (idx))) +#define sk_X509_INFO_new(cmp) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new(ossl_check_X509_INFO_compfunc_type(cmp))) +#define sk_X509_INFO_new_null() ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_null()) +#define sk_X509_INFO_new_reserve(cmp, n) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_reserve(ossl_check_X509_INFO_compfunc_type(cmp), (n))) +#define sk_X509_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_INFO_sk_type(sk), (n)) +#define sk_X509_INFO_free(sk) OPENSSL_sk_free(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_delete(sk, i) ((X509_INFO *)OPENSSL_sk_delete(ossl_check_X509_INFO_sk_type(sk), (i))) +#define sk_X509_INFO_delete_ptr(sk, ptr) ((X509_INFO *)OPENSSL_sk_delete_ptr(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr))) +#define sk_X509_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_pop(sk) ((X509_INFO *)OPENSSL_sk_pop(ossl_check_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_shift(sk) ((X509_INFO *)OPENSSL_sk_shift(ossl_check_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_INFO_sk_type(sk),ossl_check_X509_INFO_freefunc_type(freefunc)) +#define sk_X509_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), (idx)) +#define sk_X509_INFO_set(sk, idx, ptr) ((X509_INFO *)OPENSSL_sk_set(ossl_check_X509_INFO_sk_type(sk), (idx), ossl_check_X509_INFO_type(ptr))) +#define sk_X509_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), pnum) +#define sk_X509_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_dup(sk) ((STACK_OF(X509_INFO) *)OPENSSL_sk_dup(ossl_check_const_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_INFO_sk_type(sk), ossl_check_X509_INFO_copyfunc_type(copyfunc), ossl_check_X509_INFO_freefunc_type(freefunc))) +#define sk_X509_INFO_set_cmp_func(sk, cmp) ((sk_X509_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * The next 2 structures and their 8 routines are used to manipulate Netscape's + * spki structures - useful if you are writing a CA web page + */ +typedef struct Netscape_spkac_st { + X509_PUBKEY *pubkey; + ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ +} NETSCAPE_SPKAC; + +typedef struct Netscape_spki_st { + NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ + X509_ALGOR sig_algor; + ASN1_BIT_STRING *signature; +} NETSCAPE_SPKI; + +/* Netscape certificate sequence structure */ +typedef struct Netscape_certificate_sequence { + ASN1_OBJECT *type; + STACK_OF(X509) *certs; +} NETSCAPE_CERT_SEQUENCE; + +/*- Unused (and iv length is wrong) +typedef struct CBCParameter_st + { + unsigned char iv[8]; + } CBC_PARAM; +*/ + +/* Password based encryption structure */ + +typedef struct PBEPARAM_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; +} PBEPARAM; + +/* Password based encryption V2 structures */ + +typedef struct PBE2PARAM_st { + X509_ALGOR *keyfunc; + X509_ALGOR *encryption; +} PBE2PARAM; + +typedef struct PBKDF2PARAM_st { + /* Usually OCTET STRING but could be anything */ + ASN1_TYPE *salt; + ASN1_INTEGER *iter; + ASN1_INTEGER *keylength; + X509_ALGOR *prf; +} PBKDF2PARAM; + +typedef struct { + X509_ALGOR *keyDerivationFunc; + X509_ALGOR *messageAuthScheme; +} PBMAC1PARAM; + +#ifndef OPENSSL_NO_SCRYPT +typedef struct SCRYPT_PARAMS_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *costParameter; + ASN1_INTEGER *blockSize; + ASN1_INTEGER *parallelizationParameter; + ASN1_INTEGER *keyLength; +} SCRYPT_PARAMS; +#endif + +#ifdef __cplusplus +} +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define X509_EXT_PACK_UNKNOWN 1 +#define X509_EXT_PACK_STRING 2 + +#define X509_extract_key(x) X509_get_pubkey(x) /*****/ +#define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +#define X509_name_cmp(a, b) X509_NAME_cmp((a), (b)) + +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init)(X509_CRL *crl), + int (*crl_free)(X509_CRL *crl), + int (*crl_lookup)(X509_CRL *crl, + X509_REVOKED **ret, + const ASN1_INTEGER *serial, + const X509_NAME *issuer), + int (*crl_verify)(X509_CRL *crl, + EVP_PKEY *pk)); +void X509_CRL_METHOD_free(X509_CRL_METHOD *m); + +void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); +void *X509_CRL_get_meth_data(X509_CRL *crl); + +const char *X509_verify_cert_error_string(long n); + +int X509_verify(X509 *a, EVP_PKEY *r); +int X509_self_signed(X509 *cert, int verify_signature); + +int X509_REQ_verify_ex(X509_REQ *a, EVP_PKEY *r, OSSL_LIB_CTX *libctx, + const char *propq); +int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); +int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); +int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); + +NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); +char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); +EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); +int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); + +int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); + +int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); +int X509_signature_print(BIO *bp, const X509_ALGOR *alg, + const ASN1_STRING *sig); + +int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); +int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); +int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); +int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); + +int X509_pubkey_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +ASN1_OCTET_STRING *X509_digest_sig(const X509 *cert, + EVP_MD **md_used, int *md_is_fallback); +int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); + +X509 *X509_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); +X509_CRL *X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#include /* OSSL_HTTP_REQ_CTX_nbio_d2i */ +#define X509_http_nbio(rctx, pcert) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcert, ASN1_ITEM_rptr(X509)) +#define X509_CRL_http_nbio(rctx, pcrl) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcrl, ASN1_ITEM_rptr(X509_CRL)) +#endif + +#ifndef OPENSSL_NO_STDIO +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, const X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, const X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, const X509_REQ *req); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_fp(FILE *fp, const DSA *dsa); +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_fp(FILE *fp, const DSA *dsa); +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_fp(FILE *fp, const EC_KEY *eckey); +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_fp(FILE *fp, const EC_KEY *eckey); +#endif /* OPENSSL_NO_EC */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, const X509_SIG *p8); +X509_PUBKEY *d2i_X509_PUBKEY_fp(FILE *fp, X509_PUBKEY **xpk); +int i2d_X509_PUBKEY_fp(FILE *fp, const X509_PUBKEY *xpk); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, const PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, const EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); +#endif + +X509 *d2i_X509_bio(BIO *bp, X509 **x509); +int i2d_X509_bio(BIO *bp, const X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, const X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, const X509_REQ *req); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_bio(BIO *bp, const DSA *dsa); +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_bio(BIO *bp, const DSA *dsa); +#endif +#endif + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_bio(BIO *bp, const EC_KEY *eckey); +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_bio(BIO *bp, const EC_KEY *eckey); +#endif /* OPENSSL_NO_EC */ +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, const X509_SIG *p8); +X509_PUBKEY *d2i_X509_PUBKEY_bio(BIO *bp, X509_PUBKEY **xpk); +int i2d_X509_PUBKEY_bio(BIO *bp, const X509_PUBKEY *xpk); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, const PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, const EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); + +DECLARE_ASN1_DUP_FUNCTION(X509) +DECLARE_ASN1_DUP_FUNCTION(X509_ALGOR) +DECLARE_ASN1_DUP_FUNCTION(X509_ATTRIBUTE) +DECLARE_ASN1_DUP_FUNCTION(X509_CRL) +DECLARE_ASN1_DUP_FUNCTION(X509_EXTENSION) +DECLARE_ASN1_DUP_FUNCTION(X509_PUBKEY) +DECLARE_ASN1_DUP_FUNCTION(X509_REQ) +DECLARE_ASN1_DUP_FUNCTION(X509_REVOKED) +int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, + void *pval); +void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype, + const void **ppval, const X509_ALGOR *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); +int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); +int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src); + +DECLARE_ASN1_DUP_FUNCTION(X509_NAME) +DECLARE_ASN1_DUP_FUNCTION(X509_NAME_ENTRY) + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +int X509_cmp_timeframe(const X509_VERIFY_PARAM *vpm, + const ASN1_TIME *start, const ASN1_TIME *end); +ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); +ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, + int offset_day, long offset_sec, time_t *t); +ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); + +const char *X509_get_default_cert_area(void); +const char *X509_get_default_cert_dir(void); +const char *X509_get_default_cert_file(void); +const char *X509_get_default_cert_dir_env(void); +const char *X509_get_default_cert_file_env(void); +const char *X509_get_default_private_dir(void); + +X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); + +DECLARE_ASN1_FUNCTIONS(X509_ALGOR) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) +DECLARE_ASN1_FUNCTIONS(X509_VAL) + +DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) + +X509_PUBKEY *X509_PUBKEY_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get0(const X509_PUBKEY *key); +EVP_PKEY *X509_PUBKEY_get(const X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +long X509_get_pathlen(X509 *x); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(EVP_PKEY, PUBKEY) +EVP_PKEY *d2i_PUBKEY_ex(EVP_PKEY **a, const unsigned char **pp, long length, + OSSL_LIB_CTX *libctx, const char *propq); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSA_PUBKEY) +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_DSA +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, DSA, DSA_PUBKEY) +#endif +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#ifndef OPENSSL_NO_EC +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, EC_KEY, EC_PUBKEY) +#endif +#endif + +DECLARE_ASN1_FUNCTIONS(X509_SIG) +void X509_SIG_get0(const X509_SIG *sig, const X509_ALGOR **palg, + const ASN1_OCTET_STRING **pdigest); +void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **palg, + ASN1_OCTET_STRING **pdigest); + +DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) +DECLARE_ASN1_FUNCTIONS(X509_REQ) +X509_REQ *X509_REQ_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) +X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); + +DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) + +DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) + +DECLARE_ASN1_FUNCTIONS(X509_NAME) + +int X509_NAME_set(X509_NAME **xn, const X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) +DECLARE_ASN1_FUNCTIONS(X509) +X509 *X509_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) + +#define X509_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509, l, p, newf, dupf, freef) +int X509_set_ex_data(X509 *r, int idx, void *arg); +void *X509_get_ex_data(const X509 *r, int idx); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(X509, X509_AUX) + +int i2d_re_X509_tbs(X509 *x, unsigned char **pp); + +int X509_SIG_INFO_get(const X509_SIG_INFO *siginf, int *mdnid, int *pknid, + int *secbits, uint32_t *flags); +void X509_SIG_INFO_set(X509_SIG_INFO *siginf, int mdnid, int pknid, + int secbits, uint32_t flags); + +int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits, + uint32_t *flags); + +void X509_get0_signature(const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg, const X509 *x); +int X509_get_signature_nid(const X509 *x); + +void X509_set0_distinguishing_id(X509 *x, ASN1_OCTET_STRING *d_id); +ASN1_OCTET_STRING *X509_get0_distinguishing_id(X509 *x); +void X509_REQ_set0_distinguishing_id(X509_REQ *x, ASN1_OCTET_STRING *d_id); +ASN1_OCTET_STRING *X509_REQ_get0_distinguishing_id(X509_REQ *x); + +int X509_alias_set1(X509 *x, const unsigned char *name, int len); +int X509_keyid_set1(X509 *x, const unsigned char *id, int len); +unsigned char *X509_alias_get0(X509 *x, int *len); +unsigned char *X509_keyid_get0(X509 *x, int *len); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) +X509_CRL *X509_CRL_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, const ASN1_INTEGER *serial); +int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); + +X509_PKEY *X509_PKEY_new(void); +void X509_PKEY_free(X509_PKEY *a); + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) + +X509_INFO *X509_INFO_new(void); +void X509_INFO_free(X509_INFO *a); +char *X509_NAME_oneline(const X509_NAME *a, char *buf, int size); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); +OSSL_DEPRECATEDIN_3_0 +int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, X509_ALGOR *algor2, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey, + const EVP_MD *type); +#endif +int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, + unsigned char *md, unsigned int *len); +int ASN1_item_verify(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + EVP_PKEY *pkey); +int ASN1_item_verify_ctx(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + EVP_MD_CTX *ctx); +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2, + ASN1_BIT_STRING *signature, const void *data, + EVP_PKEY *pkey, const EVP_MD *md); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + const void *data, EVP_MD_CTX *ctx); + +#define X509_VERSION_1 0 +#define X509_VERSION_2 1 +#define X509_VERSION_3 2 + +long X509_get_version(const X509 *x); +int X509_set_version(X509 *x, long version); +int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); +ASN1_INTEGER *X509_get_serialNumber(X509 *x); +const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x); +int X509_set_issuer_name(X509 *x, const X509_NAME *name); +X509_NAME *X509_get_issuer_name(const X509 *a); +int X509_set_subject_name(X509 *x, const X509_NAME *name); +X509_NAME *X509_get_subject_name(const X509 *a); +const ASN1_TIME *X509_get0_notBefore(const X509 *x); +ASN1_TIME *X509_getm_notBefore(const X509 *x); +int X509_set1_notBefore(X509 *x, const ASN1_TIME *tm); +const ASN1_TIME *X509_get0_notAfter(const X509 *x); +ASN1_TIME *X509_getm_notAfter(const X509 *x); +int X509_set1_notAfter(X509 *x, const ASN1_TIME *tm); +int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); +int X509_up_ref(X509 *x); +int X509_get_signature_type(const X509 *x); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_get_notBefore X509_getm_notBefore +#define X509_get_notAfter X509_getm_notAfter +#define X509_set_notBefore X509_set1_notBefore +#define X509_set_notAfter X509_set1_notAfter +#endif + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x), &buf) + */ +X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x); +const STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x); +void X509_get0_uids(const X509 *x, const ASN1_BIT_STRING **piuid, + const ASN1_BIT_STRING **psuid); +const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x); + +EVP_PKEY *X509_get0_pubkey(const X509 *x); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); + +#define X509_REQ_VERSION_1 0 + +long X509_REQ_get_version(const X509_REQ *req); +int X509_REQ_set_version(X509_REQ *x, long version); +X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req); +int X509_REQ_set_subject_name(X509_REQ *req, const X509_NAME *name); +void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +void X509_REQ_set0_signature(X509_REQ *req, ASN1_BIT_STRING *psig); +int X509_REQ_set1_signature_algo(X509_REQ *req, X509_ALGOR *palg); +int X509_REQ_get_signature_nid(const X509_REQ *req); +int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); +X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); +int X509_REQ_extension_nid(int nid); +int *X509_REQ_get_extension_nids(void); +void X509_REQ_set_extension_nids(int *nids); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(OSSL_FUTURE_CONST X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, + const STACK_OF(X509_EXTENSION) *exts, int nid); +int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); +int X509_REQ_get_attr_count(const X509_REQ *req); +int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); +int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); +X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); +int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); +int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_NID(X509_REQ *req, + int nid, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_txt(X509_REQ *req, + const char *attrname, int type, + const unsigned char *bytes, int len); + +#define X509_CRL_VERSION_1 0 +#define X509_CRL_VERSION_2 1 + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, const X509_NAME *name); +int X509_CRL_set1_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set1_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_sort(X509_CRL *crl); +int X509_CRL_up_ref(X509_CRL *crl); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate +#define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate +#endif + +long X509_CRL_get_version(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl); +OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl); +#endif +X509_NAME *X509_CRL_get_issuer(const X509_CRL *crl); +const STACK_OF(X509_EXTENSION) *X509_CRL_get0_extensions(const X509_CRL *crl); +STACK_OF(X509_REVOKED) *X509_CRL_get_REVOKED(X509_CRL *crl); +void X509_CRL_get0_signature(const X509_CRL *crl, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_CRL_get_signature_nid(const X509_CRL *crl); +int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp); + +const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(const X509_REVOKED *x); +int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); +const ASN1_TIME *X509_REVOKED_get0_revocationDate(const X509_REVOKED *x); +int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); +const STACK_OF(X509_EXTENSION) * +X509_REVOKED_get0_extensions(const X509_REVOKED *r); + +X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, + EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); + +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); + +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); +int X509_chain_check_suiteb(int *perror_depth, + X509 *x, STACK_OF(X509) *chain, + unsigned long flags); +int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); +STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); + +int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_and_serial_hash(X509 *a); + +int X509_issuer_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_name_hash(X509 *a); + +int X509_subject_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_subject_name_hash(X509 *x); + +#ifndef OPENSSL_NO_MD5 +unsigned long X509_issuer_name_hash_old(X509 *a); +unsigned long X509_subject_name_hash_old(X509 *x); +#endif + +#define X509_ADD_FLAG_DEFAULT 0 +#define X509_ADD_FLAG_UP_REF 0x1 +#define X509_ADD_FLAG_PREPEND 0x2 +#define X509_ADD_FLAG_NO_DUP 0x4 +#define X509_ADD_FLAG_NO_SS 0x8 +int X509_add_cert(STACK_OF(X509) *sk, X509 *cert, int flags); +int X509_add_certs(STACK_OF(X509) *sk, STACK_OF(X509) *certs, int flags); + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define X509_NAME_hash(x) X509_NAME_hash_ex(x, NULL, NULL, NULL) +OSSL_DEPRECATEDIN_3_0 int X509_certificate_type(const X509 *x, + const EVP_PKEY *pubkey); +#endif +unsigned long X509_NAME_hash_ex(const X509_NAME *x, OSSL_LIB_CTX *libctx, + const char *propq, int *ok); +unsigned long X509_NAME_hash_old(const X509_NAME *x); + +int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); +int X509_aux_print(BIO *out, X509 *x, int indent); +#ifndef OPENSSL_NO_STDIO +int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print_fp(FILE *bp, X509 *x); +int X509_CRL_print_fp(FILE *bp, X509_CRL *x); +int X509_REQ_print_fp(FILE *bp, X509_REQ *req); +int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent, + unsigned long flags); +#endif + +int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent, + unsigned long flags); +int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print(BIO *bp, X509 *x); +int X509_ocspid_print(BIO *bp, X509 *x); +int X509_CRL_print_ex(BIO *out, X509_CRL *x, unsigned long nmflag); +int X509_CRL_print(BIO *bp, X509_CRL *x); +int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, + unsigned long cflag); +int X509_REQ_print(BIO *bp, X509_REQ *req); + +int X509_NAME_entry_count(const X509_NAME *name); +int X509_NAME_get_text_by_NID(const X509_NAME *name, int nid, + char *buf, int len); +int X509_NAME_get_text_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj, + char *buf, int len); + +/* + * NOTE: you should be passing -1, not 0 as lastpos. The functions that use + * lastpos, search after that position on. + */ +int X509_NAME_get_index_by_NID(const X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj, + int lastpos); +X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc); +X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); +int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, + int loc, int set); +int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len, int loc, + int set); +int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, + const char *field, int type, + const unsigned char *bytes, + int len); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, + int type, + const unsigned char *bytes, + int len); +int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, + int len); +int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj); +int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, + const unsigned char *bytes, int len); +ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne); +ASN1_STRING *X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne); +int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne); + +int X509_NAME_get0_der(const X509_NAME *nm, const unsigned char **pder, + size_t *pderlen); + +int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); +int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, + int nid, int lastpos); +int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, + const ASN1_OBJECT *obj, int lastpos); +int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, + int crit, int lastpos); +X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); +X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, + X509_EXTENSION *ex, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_extensions(STACK_OF(X509_EXTENSION) **target, + const STACK_OF(X509_EXTENSION) *exts); + +int X509_get_ext_count(const X509 *x); +int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(const X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(const X509 *x, int loc); +X509_EXTENSION *X509_delete_ext(X509 *x, int loc); +int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); +void *X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx); +int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_CRL_get_ext_count(const X509_CRL *x); +int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(const X509_CRL *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc); +X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); +int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); +void *X509_CRL_get_ext_d2i(const X509_CRL *x, int nid, int *crit, int *idx); +int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_REVOKED_get_ext_count(const X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x, int crit, + int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x, int loc); +X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); +int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); +void *X509_REVOKED_get_ext_d2i(const X509_REVOKED *x, int nid, int *crit, + int *idx); +int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, + unsigned long flags); + +X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, + int nid, int crit, + ASN1_OCTET_STRING *data); +X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, + const ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj); +int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); +int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); +ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); +ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); +int X509_EXTENSION_get_critical(const X509_EXTENSION *ex); + +int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); +int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, + int lastpos); +int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); +X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, + X509_ATTRIBUTE *attr); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) + **x, + const ASN1_OBJECT *obj, + int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) + **x, + int nid, int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) + **x, + const char *attrname, + int type, + const unsigned char *bytes, + int len); +void *X509at_get0_data_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *x, + const ASN1_OBJECT *obj, int lastpos, int type); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, + const ASN1_OBJECT *obj, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, + const char *atrname, int type, + const unsigned char *bytes, + int len); +int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); +int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, + const void *data, int len); +void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, + void *data); +int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr); +ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); +ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); + +int EVP_PKEY_get_attr_count(const EVP_PKEY *key); +int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); +int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); +X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); +int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); +int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, + int nid, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, + const char *attrname, int type, + const unsigned char *bytes, int len); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, const X509_NAME *name, + const ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) +DECLARE_ASN1_FUNCTIONS(PBMAC1PARAM) +#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) +#endif + +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen); +int PKCS5_pbe_set0_algor_ex(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen, + OSSL_LIB_CTX *libctx); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe_set_ex(int alg, int iter, + const unsigned char *salt, int saltlen, + OSSL_LIB_CTX *libctx); + +X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid); +X509_ALGOR *PKCS5_pbe2_set_iv_ex(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid, + OSSL_LIB_CTX *libctx); + +#ifndef OPENSSL_NO_SCRYPT +X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher, + const unsigned char *salt, int saltlen, + unsigned char *aiv, uint64_t N, uint64_t r, + uint64_t p); +#endif + +X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen); +X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen, + OSSL_LIB_CTX *libctx); + +PBKDF2PARAM *PBMAC1_get1_pbkdf2_param(const X509_ALGOR *macalg); +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); +EVP_PKEY *EVP_PKCS82PKEY_ex(const PKCS8_PRIV_KEY_INFO *p8, OSSL_LIB_CTX *libctx, + const char *propq); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(const EVP_PKEY *pkey); + +int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, + int version, int ptype, void *pval, + unsigned char *penc, int penclen); +int PKCS8_pkey_get0(const ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + const X509_ALGOR **pa, const PKCS8_PRIV_KEY_INFO *p8); + +const STACK_OF(X509_ATTRIBUTE) * +PKCS8_pkey_get0_attrs(const PKCS8_PRIV_KEY_INFO *p8); +int PKCS8_pkey_add1_attr(PKCS8_PRIV_KEY_INFO *p8, X509_ATTRIBUTE *attr); +int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, + const unsigned char *bytes, int len); +int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, + int type, const unsigned char *bytes, int len); + +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); +int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, + int ptype, void *pval, + unsigned char *penc, int penclen); +int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, const X509_PUBKEY *pub); +int X509_PUBKEY_eq(const X509_PUBKEY *a, const X509_PUBKEY *b); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/x509_acert.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/x509_acert.h new file mode 100644 index 00000000000000..ed45c1e9184bb0 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/x509_acert.h @@ -0,0 +1,312 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_acert.h.in + * + * Copyright 2022-2026 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_ACERT_H +#define OPENSSL_X509_ACERT_H +#pragma once + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct X509_acert_st X509_ACERT; +typedef struct X509_acert_info_st X509_ACERT_INFO; +typedef struct ossl_object_digest_info_st OSSL_OBJECT_DIGEST_INFO; +typedef struct ossl_issuer_serial_st OSSL_ISSUER_SERIAL; +typedef struct X509_acert_issuer_v2form_st X509_ACERT_ISSUER_V2FORM; + +DECLARE_ASN1_FUNCTIONS(X509_ACERT) +DECLARE_ASN1_DUP_FUNCTION(X509_ACERT) +DECLARE_ASN1_ITEM(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_OBJECT_DIGEST_INFO) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_ISSUER_SERIAL) +DECLARE_ASN1_ALLOC_FUNCTIONS(X509_ACERT_ISSUER_V2FORM) + +#ifndef OPENSSL_NO_STDIO +X509_ACERT *d2i_X509_ACERT_fp(FILE *fp, X509_ACERT **acert); +int i2d_X509_ACERT_fp(FILE *fp, const X509_ACERT *acert); +#endif + +DECLARE_PEM_rw(X509_ACERT, X509_ACERT) + +X509_ACERT *d2i_X509_ACERT_bio(BIO *bp, X509_ACERT **acert); +int i2d_X509_ACERT_bio(BIO *bp, const X509_ACERT *acert); + +int X509_ACERT_sign(X509_ACERT *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_ACERT_sign_ctx(X509_ACERT *x, EVP_MD_CTX *ctx); +int X509_ACERT_verify(X509_ACERT *a, EVP_PKEY *r); + +#define X509_ACERT_VERSION_2 1 + +const GENERAL_NAMES *X509_ACERT_get0_holder_entityName(const X509_ACERT *x); +const OSSL_ISSUER_SERIAL *X509_ACERT_get0_holder_baseCertId(const X509_ACERT *x); +const OSSL_OBJECT_DIGEST_INFO *X509_ACERT_get0_holder_digest(const X509_ACERT *x); +const X509_NAME *X509_ACERT_get0_issuerName(const X509_ACERT *x); +long X509_ACERT_get_version(const X509_ACERT *x); +void X509_ACERT_get0_signature(const X509_ACERT *x, + const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_ACERT_get_signature_nid(const X509_ACERT *x); +const X509_ALGOR *X509_ACERT_get0_info_sigalg(const X509_ACERT *x); +const ASN1_INTEGER *X509_ACERT_get0_serialNumber(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notBefore(const X509_ACERT *x); +const ASN1_TIME *X509_ACERT_get0_notAfter(const X509_ACERT *x); +const ASN1_BIT_STRING *X509_ACERT_get0_issuerUID(const X509_ACERT *x); + +int X509_ACERT_print(BIO *bp, X509_ACERT *x); +int X509_ACERT_print_ex(BIO *bp, X509_ACERT *x, unsigned long nmflags, + unsigned long cflag); + +int X509_ACERT_get_attr_count(const X509_ACERT *x); +int X509_ACERT_get_attr_by_NID(const X509_ACERT *x, int nid, int lastpos); +int X509_ACERT_get_attr_by_OBJ(const X509_ACERT *x, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_ACERT_get_attr(const X509_ACERT *x, int loc); +X509_ATTRIBUTE *X509_ACERT_delete_attr(X509_ACERT *x, int loc); + +void *X509_ACERT_get_ext_d2i(const X509_ACERT *x, int nid, int *crit, int *idx); +int X509_ACERT_add1_ext_i2d(X509_ACERT *x, int nid, void *value, int crit, + unsigned long flags); +const STACK_OF(X509_EXTENSION) *X509_ACERT_get0_extensions(const X509_ACERT *x); + +#define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY 0 +#define OSSL_OBJECT_DIGEST_INFO_PUBLIC_KEY_CERT 1 +#define OSSL_OBJECT_DIGEST_INFO_OTHER 2 /* must not be used in RFC 5755 profile */ +int X509_ACERT_set_version(X509_ACERT *x, long version); +void X509_ACERT_set0_holder_entityName(X509_ACERT *x, GENERAL_NAMES *name); +void X509_ACERT_set0_holder_baseCertId(X509_ACERT *x, OSSL_ISSUER_SERIAL *isss); +void X509_ACERT_set0_holder_digest(X509_ACERT *x, + OSSL_OBJECT_DIGEST_INFO *dinfo); + +int X509_ACERT_add1_attr(X509_ACERT *x, X509_ATTRIBUTE *attr); +int X509_ACERT_add1_attr_by_OBJ(X509_ACERT *x, const ASN1_OBJECT *obj, + int type, const void *bytes, int len); +int X509_ACERT_add1_attr_by_NID(X509_ACERT *x, int nid, int type, + const void *bytes, int len); +int X509_ACERT_add1_attr_by_txt(X509_ACERT *x, const char *attrname, int type, + const unsigned char *bytes, int len); +int X509_ACERT_add_attr_nconf(CONF *conf, const char *section, + X509_ACERT *acert); + +int X509_ACERT_set1_issuerName(X509_ACERT *x, const X509_NAME *name); +int X509_ACERT_set1_serialNumber(X509_ACERT *x, const ASN1_INTEGER *serial); +int X509_ACERT_set1_notBefore(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); +int X509_ACERT_set1_notAfter(X509_ACERT *x, const ASN1_GENERALIZEDTIME *time); + +void OSSL_OBJECT_DIGEST_INFO_get0_digest(const OSSL_OBJECT_DIGEST_INFO *o, + int *digestedObjectType, + const X509_ALGOR **digestAlgorithm, + const ASN1_BIT_STRING **digest); + +int OSSL_OBJECT_DIGEST_INFO_set1_digest(OSSL_OBJECT_DIGEST_INFO *o, + int digestedObjectType, + X509_ALGOR *digestAlgorithm, + ASN1_BIT_STRING *digest); + +const X509_NAME *OSSL_ISSUER_SERIAL_get0_issuer(const OSSL_ISSUER_SERIAL *isss); +const ASN1_INTEGER *OSSL_ISSUER_SERIAL_get0_serial(const OSSL_ISSUER_SERIAL *isss); +const ASN1_BIT_STRING *OSSL_ISSUER_SERIAL_get0_issuerUID(const OSSL_ISSUER_SERIAL *isss); + +int OSSL_ISSUER_SERIAL_set1_issuer(OSSL_ISSUER_SERIAL *isss, + const X509_NAME *issuer); +int OSSL_ISSUER_SERIAL_set1_serial(OSSL_ISSUER_SERIAL *isss, + const ASN1_INTEGER *serial); +int OSSL_ISSUER_SERIAL_set1_issuerUID(OSSL_ISSUER_SERIAL *isss, + const ASN1_BIT_STRING *uid); + +#define OSSL_IETFAS_OCTETS 0 +#define OSSL_IETFAS_OID 1 +#define OSSL_IETFAS_STRING 2 + +typedef struct OSSL_IETF_ATTR_SYNTAX_VALUE_st OSSL_IETF_ATTR_SYNTAX_VALUE; +typedef struct OSSL_IETF_ATTR_SYNTAX_st OSSL_IETF_ATTR_SYNTAX; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE, OSSL_IETF_ATTR_SYNTAX_VALUE) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_value(sk, idx) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_value(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new(cmp) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_null() ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_new_reserve(cmp, n) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp), (n))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (n)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete(sk, i) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (i))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_delete_ptr(sk, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_pop(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_shift(sk) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_shift(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk),ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), (idx)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set(sk, idx, ptr) ((OSSL_IETF_ATTR_SYNTAX_VALUE *)OPENSSL_sk_set(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), (idx), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_type(ptr), pnum) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk)) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_dup(sk) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_IETF_ATTR_SYNTAX_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_copyfunc_type(copyfunc), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_freefunc_type(freefunc))) +#define sk_OSSL_IETF_ATTR_SYNTAX_VALUE_set_cmp_func(sk, cmp) ((sk_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_sk_type(sk), ossl_check_OSSL_IETF_ATTR_SYNTAX_VALUE_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_ITEM(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_ALLOC_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX_VALUE) +DECLARE_ASN1_FUNCTIONS(OSSL_IETF_ATTR_SYNTAX) + +const GENERAL_NAMES * +OSSL_IETF_ATTR_SYNTAX_get0_policyAuthority(const OSSL_IETF_ATTR_SYNTAX *a); +void OSSL_IETF_ATTR_SYNTAX_set0_policyAuthority(OSSL_IETF_ATTR_SYNTAX *a, + GENERAL_NAMES *names); + +int OSSL_IETF_ATTR_SYNTAX_get_value_num(const OSSL_IETF_ATTR_SYNTAX *a); +void *OSSL_IETF_ATTR_SYNTAX_get0_value(const OSSL_IETF_ATTR_SYNTAX *a, + int ind, int *type); +int OSSL_IETF_ATTR_SYNTAX_add1_value(OSSL_IETF_ATTR_SYNTAX *a, int type, + void *data); +int OSSL_IETF_ATTR_SYNTAX_print(BIO *bp, OSSL_IETF_ATTR_SYNTAX *a, int indent); + +struct TARGET_CERT_st { + OSSL_ISSUER_SERIAL *targetCertificate; + GENERAL_NAME *targetName; + OSSL_OBJECT_DIGEST_INFO *certDigestInfo; +}; + +typedef struct TARGET_CERT_st OSSL_TARGET_CERT; + +#define OSSL_TGT_TARGET_NAME 0 +#define OSSL_TGT_TARGET_GROUP 1 +#define OSSL_TGT_TARGET_CERT 2 + +typedef struct TARGET_st { + int type; + union { + GENERAL_NAME *targetName; + GENERAL_NAME *targetGroup; + OSSL_TARGET_CERT *targetCert; + } choice; +} OSSL_TARGET; + +typedef STACK_OF(OSSL_TARGET) OSSL_TARGETS; +typedef STACK_OF(OSSL_TARGETS) OSSL_TARGETING_INFORMATION; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGET, OSSL_TARGET, OSSL_TARGET) +#define sk_OSSL_TARGET_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_value(sk, idx) ((OSSL_TARGET *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGET_sk_type(sk), (idx))) +#define sk_OSSL_TARGET_new(cmp) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new(ossl_check_OSSL_TARGET_compfunc_type(cmp))) +#define sk_OSSL_TARGET_new_null() ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGET_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGET_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGET_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGET_sk_type(sk), (n)) +#define sk_OSSL_TARGET_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_delete(sk, i) ((OSSL_TARGET *)OPENSSL_sk_delete(ossl_check_OSSL_TARGET_sk_type(sk), (i))) +#define sk_OSSL_TARGET_delete_ptr(sk, ptr) ((OSSL_TARGET *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_pop(sk) ((OSSL_TARGET *)OPENSSL_sk_pop(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_shift(sk) ((OSSL_TARGET *)OPENSSL_sk_shift(ossl_check_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGET_sk_type(sk),ossl_check_OSSL_TARGET_freefunc_type(freefunc)) +#define sk_OSSL_TARGET_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), (idx)) +#define sk_OSSL_TARGET_set(sk, idx, ptr) ((OSSL_TARGET *)OPENSSL_sk_set(ossl_check_OSSL_TARGET_sk_type(sk), (idx), ossl_check_OSSL_TARGET_type(ptr))) +#define sk_OSSL_TARGET_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr)) +#define sk_OSSL_TARGET_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_type(ptr), pnum) +#define sk_OSSL_TARGET_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGET_sk_type(sk)) +#define sk_OSSL_TARGET_dup(sk) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGET_sk_type(sk))) +#define sk_OSSL_TARGET_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGET) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_copyfunc_type(copyfunc), ossl_check_OSSL_TARGET_freefunc_type(freefunc))) +#define sk_OSSL_TARGET_set_cmp_func(sk, cmp) ((sk_OSSL_TARGET_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGET_sk_type(sk), ossl_check_OSSL_TARGET_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TARGETS, OSSL_TARGETS, OSSL_TARGETS) +#define sk_OSSL_TARGETS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_value(sk, idx) ((OSSL_TARGETS *)OPENSSL_sk_value(ossl_check_const_OSSL_TARGETS_sk_type(sk), (idx))) +#define sk_OSSL_TARGETS_new(cmp) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new(ossl_check_OSSL_TARGETS_compfunc_type(cmp))) +#define sk_OSSL_TARGETS_new_null() ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TARGETS_new_reserve(cmp, n) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TARGETS_compfunc_type(cmp), (n))) +#define sk_OSSL_TARGETS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TARGETS_sk_type(sk), (n)) +#define sk_OSSL_TARGETS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_delete(sk, i) ((OSSL_TARGETS *)OPENSSL_sk_delete(ossl_check_OSSL_TARGETS_sk_type(sk), (i))) +#define sk_OSSL_TARGETS_delete_ptr(sk, ptr) ((OSSL_TARGETS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_pop(sk) ((OSSL_TARGETS *)OPENSSL_sk_pop(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_shift(sk) ((OSSL_TARGETS *)OPENSSL_sk_shift(ossl_check_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TARGETS_sk_type(sk),ossl_check_OSSL_TARGETS_freefunc_type(freefunc)) +#define sk_OSSL_TARGETS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), (idx)) +#define sk_OSSL_TARGETS_set(sk, idx, ptr) ((OSSL_TARGETS *)OPENSSL_sk_set(ossl_check_OSSL_TARGETS_sk_type(sk), (idx), ossl_check_OSSL_TARGETS_type(ptr))) +#define sk_OSSL_TARGETS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr)) +#define sk_OSSL_TARGETS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_type(ptr), pnum) +#define sk_OSSL_TARGETS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TARGETS_sk_type(sk)) +#define sk_OSSL_TARGETS_dup(sk) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TARGETS_sk_type(sk))) +#define sk_OSSL_TARGETS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TARGETS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_copyfunc_type(copyfunc), ossl_check_OSSL_TARGETS_freefunc_type(freefunc))) +#define sk_OSSL_TARGETS_set_cmp_func(sk, cmp) ((sk_OSSL_TARGETS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TARGETS_sk_type(sk), ossl_check_OSSL_TARGETS_compfunc_type(cmp))) + +/* clang-format on */ + +DECLARE_ASN1_FUNCTIONS(OSSL_TARGET) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETS) +DECLARE_ASN1_FUNCTIONS(OSSL_TARGETING_INFORMATION) + +typedef STACK_OF(OSSL_ISSUER_SERIAL) OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_AUTHORITY_ATTRIBUTE_ID_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL, OSSL_ISSUER_SERIAL) +#define sk_OSSL_ISSUER_SERIAL_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_value(sk, idx) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_value(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), (idx))) +#define sk_OSSL_ISSUER_SERIAL_new(cmp) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) +#define sk_OSSL_ISSUER_SERIAL_new_null() ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ISSUER_SERIAL_new_reserve(cmp, n) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp), (n))) +#define sk_OSSL_ISSUER_SERIAL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (n)) +#define sk_OSSL_ISSUER_SERIAL_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_delete(sk, i) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (i))) +#define sk_OSSL_ISSUER_SERIAL_delete_ptr(sk, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_pop(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_pop(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_shift(sk) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_shift(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk),ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc)) +#define sk_OSSL_ISSUER_SERIAL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), (idx)) +#define sk_OSSL_ISSUER_SERIAL_set(sk, idx, ptr) ((OSSL_ISSUER_SERIAL *)OPENSSL_sk_set(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), (idx), ossl_check_OSSL_ISSUER_SERIAL_type(ptr))) +#define sk_OSSL_ISSUER_SERIAL_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr)) +#define sk_OSSL_ISSUER_SERIAL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_type(ptr), pnum) +#define sk_OSSL_ISSUER_SERIAL_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk)) +#define sk_OSSL_ISSUER_SERIAL_dup(sk) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk))) +#define sk_OSSL_ISSUER_SERIAL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ISSUER_SERIAL) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_copyfunc_type(copyfunc), ossl_check_OSSL_ISSUER_SERIAL_freefunc_type(freefunc))) +#define sk_OSSL_ISSUER_SERIAL_set_cmp_func(sk, cmp) ((sk_OSSL_ISSUER_SERIAL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ISSUER_SERIAL_sk_type(sk), ossl_check_OSSL_ISSUER_SERIAL_compfunc_type(cmp))) + +/* clang-format on */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/x509_vfy.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/x509_vfy.h new file mode 100644 index 00000000000000..22e713f1ec3d7d --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/x509_vfy.h @@ -0,0 +1,904 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509_vfy.h.in + * + * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509_VFY_H +#define OPENSSL_X509_VFY_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509_VFY_H +#endif + +/* + * Protect against recursion, x509.h and x509_vfy.h each include the other. + */ +#ifndef OPENSSL_X509_H +#include +#endif + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +SSL_CTX -> X509_STORE + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + +SSL -> X509_STORE_CTX + ->X509_STORE + +The X509_STORE holds the tables etc for verification stuff. +A X509_STORE_CTX is used while validating a single certificate. +The X509_STORE has X509_LOOKUPs for looking up certs. +The X509_STORE then calls a function to actually verify the +certificate chain. +*/ + +typedef enum { + X509_LU_NONE = 0, + X509_LU_X509, + X509_LU_CRL +} X509_LOOKUP_TYPE; + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_LU_RETRY -1 +#define X509_LU_FAIL 0 +#endif + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_LOOKUP, X509_LOOKUP, X509_LOOKUP) +#define sk_X509_LOOKUP_num(sk) OPENSSL_sk_num(ossl_check_const_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_value(sk, idx) ((X509_LOOKUP *)OPENSSL_sk_value(ossl_check_const_X509_LOOKUP_sk_type(sk), (idx))) +#define sk_X509_LOOKUP_new(cmp) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new(ossl_check_X509_LOOKUP_compfunc_type(cmp))) +#define sk_X509_LOOKUP_new_null() ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_null()) +#define sk_X509_LOOKUP_new_reserve(cmp, n) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_reserve(ossl_check_X509_LOOKUP_compfunc_type(cmp), (n))) +#define sk_X509_LOOKUP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_LOOKUP_sk_type(sk), (n)) +#define sk_X509_LOOKUP_free(sk) OPENSSL_sk_free(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_zero(sk) OPENSSL_sk_zero(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_delete(sk, i) ((X509_LOOKUP *)OPENSSL_sk_delete(ossl_check_X509_LOOKUP_sk_type(sk), (i))) +#define sk_X509_LOOKUP_delete_ptr(sk, ptr) ((X509_LOOKUP *)OPENSSL_sk_delete_ptr(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr))) +#define sk_X509_LOOKUP_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_pop(sk) ((X509_LOOKUP *)OPENSSL_sk_pop(ossl_check_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_shift(sk) ((X509_LOOKUP *)OPENSSL_sk_shift(ossl_check_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_LOOKUP_sk_type(sk),ossl_check_X509_LOOKUP_freefunc_type(freefunc)) +#define sk_X509_LOOKUP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), (idx)) +#define sk_X509_LOOKUP_set(sk, idx, ptr) ((X509_LOOKUP *)OPENSSL_sk_set(ossl_check_X509_LOOKUP_sk_type(sk), (idx), ossl_check_X509_LOOKUP_type(ptr))) +#define sk_X509_LOOKUP_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), pnum) +#define sk_X509_LOOKUP_sort(sk) OPENSSL_sk_sort(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_dup(sk) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_dup(ossl_check_const_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_copyfunc_type(copyfunc), ossl_check_X509_LOOKUP_freefunc_type(freefunc))) +#define sk_X509_LOOKUP_set_cmp_func(sk, cmp) ((sk_X509_LOOKUP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_OBJECT, X509_OBJECT, X509_OBJECT) +#define sk_X509_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_value(sk, idx) ((X509_OBJECT *)OPENSSL_sk_value(ossl_check_const_X509_OBJECT_sk_type(sk), (idx))) +#define sk_X509_OBJECT_new(cmp) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new(ossl_check_X509_OBJECT_compfunc_type(cmp))) +#define sk_X509_OBJECT_new_null() ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_null()) +#define sk_X509_OBJECT_new_reserve(cmp, n) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_X509_OBJECT_compfunc_type(cmp), (n))) +#define sk_X509_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_OBJECT_sk_type(sk), (n)) +#define sk_X509_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_delete(sk, i) ((X509_OBJECT *)OPENSSL_sk_delete(ossl_check_X509_OBJECT_sk_type(sk), (i))) +#define sk_X509_OBJECT_delete_ptr(sk, ptr) ((X509_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr))) +#define sk_X509_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_pop(sk) ((X509_OBJECT *)OPENSSL_sk_pop(ossl_check_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_shift(sk) ((X509_OBJECT *)OPENSSL_sk_shift(ossl_check_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_OBJECT_sk_type(sk),ossl_check_X509_OBJECT_freefunc_type(freefunc)) +#define sk_X509_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), (idx)) +#define sk_X509_OBJECT_set(sk, idx, ptr) ((X509_OBJECT *)OPENSSL_sk_set(ossl_check_X509_OBJECT_sk_type(sk), (idx), ossl_check_X509_OBJECT_type(ptr))) +#define sk_X509_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), pnum) +#define sk_X509_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_dup(sk) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_copyfunc_type(copyfunc), ossl_check_X509_OBJECT_freefunc_type(freefunc))) +#define sk_X509_OBJECT_set_cmp_func(sk, cmp) ((sk_X509_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_VERIFY_PARAM, X509_VERIFY_PARAM, X509_VERIFY_PARAM) +#define sk_X509_VERIFY_PARAM_num(sk) OPENSSL_sk_num(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_value(sk, idx) ((X509_VERIFY_PARAM *)OPENSSL_sk_value(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), (idx))) +#define sk_X509_VERIFY_PARAM_new(cmp) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) +#define sk_X509_VERIFY_PARAM_new_null() ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_null()) +#define sk_X509_VERIFY_PARAM_new_reserve(cmp, n) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_reserve(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp), (n))) +#define sk_X509_VERIFY_PARAM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (n)) +#define sk_X509_VERIFY_PARAM_free(sk) OPENSSL_sk_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_zero(sk) OPENSSL_sk_zero(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_delete(sk, i) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (i))) +#define sk_X509_VERIFY_PARAM_delete_ptr(sk, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete_ptr(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr))) +#define sk_X509_VERIFY_PARAM_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_pop(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_pop(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_shift(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_shift(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk),ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc)) +#define sk_X509_VERIFY_PARAM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), (idx)) +#define sk_X509_VERIFY_PARAM_set(sk, idx, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_set(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (idx), ossl_check_X509_VERIFY_PARAM_type(ptr))) +#define sk_X509_VERIFY_PARAM_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), pnum) +#define sk_X509_VERIFY_PARAM_sort(sk) OPENSSL_sk_sort(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_dup(sk) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_dup(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_copyfunc_type(copyfunc), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc))) +#define sk_X509_VERIFY_PARAM_set_cmp_func(sk, cmp) ((sk_X509_VERIFY_PARAM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) + +/* clang-format on */ + +/* This is used for a table of trust checking functions */ +typedef struct x509_trust_st { + int trust; + int flags; + int (*check_trust)(struct x509_trust_st *, X509 *, int); + char *name; + int arg1; + void *arg2; +} X509_TRUST; +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_TRUST, X509_TRUST, X509_TRUST) +#define sk_X509_TRUST_num(sk) OPENSSL_sk_num(ossl_check_const_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_value(sk, idx) ((X509_TRUST *)OPENSSL_sk_value(ossl_check_const_X509_TRUST_sk_type(sk), (idx))) +#define sk_X509_TRUST_new(cmp) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new(ossl_check_X509_TRUST_compfunc_type(cmp))) +#define sk_X509_TRUST_new_null() ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_null()) +#define sk_X509_TRUST_new_reserve(cmp, n) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_reserve(ossl_check_X509_TRUST_compfunc_type(cmp), (n))) +#define sk_X509_TRUST_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_TRUST_sk_type(sk), (n)) +#define sk_X509_TRUST_free(sk) OPENSSL_sk_free(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_zero(sk) OPENSSL_sk_zero(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_delete(sk, i) ((X509_TRUST *)OPENSSL_sk_delete(ossl_check_X509_TRUST_sk_type(sk), (i))) +#define sk_X509_TRUST_delete_ptr(sk, ptr) ((X509_TRUST *)OPENSSL_sk_delete_ptr(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr))) +#define sk_X509_TRUST_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_pop(sk) ((X509_TRUST *)OPENSSL_sk_pop(ossl_check_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_shift(sk) ((X509_TRUST *)OPENSSL_sk_shift(ossl_check_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_TRUST_sk_type(sk),ossl_check_X509_TRUST_freefunc_type(freefunc)) +#define sk_X509_TRUST_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), (idx)) +#define sk_X509_TRUST_set(sk, idx, ptr) ((X509_TRUST *)OPENSSL_sk_set(ossl_check_X509_TRUST_sk_type(sk), (idx), ossl_check_X509_TRUST_type(ptr))) +#define sk_X509_TRUST_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), pnum) +#define sk_X509_TRUST_sort(sk) OPENSSL_sk_sort(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_dup(sk) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_dup(ossl_check_const_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_copyfunc_type(copyfunc), ossl_check_X509_TRUST_freefunc_type(freefunc))) +#define sk_X509_TRUST_set_cmp_func(sk, cmp) ((sk_X509_TRUST_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_compfunc_type(cmp))) + +/* clang-format on */ + +/* standard trust ids */ +#define X509_TRUST_DEFAULT 0 /* Only valid in purpose settings */ +#define X509_TRUST_COMPAT 1 +#define X509_TRUST_SSL_CLIENT 2 +#define X509_TRUST_SSL_SERVER 3 +#define X509_TRUST_EMAIL 4 +#define X509_TRUST_OBJECT_SIGN 5 +#define X509_TRUST_OCSP_SIGN 6 +#define X509_TRUST_OCSP_REQUEST 7 +#define X509_TRUST_TSA 8 +/* Keep these up to date! */ +#define X509_TRUST_MIN 1 +#define X509_TRUST_MAX 8 + +/* trust_flags values */ +#define X509_TRUST_DYNAMIC (1U << 0) +#define X509_TRUST_DYNAMIC_NAME (1U << 1) +/* No compat trust if self-signed, preempts "DO_SS" */ +#define X509_TRUST_NO_SS_COMPAT (1U << 2) +/* Compat trust if no explicit accepted trust EKUs */ +#define X509_TRUST_DO_SS_COMPAT (1U << 3) +/* Accept "anyEKU" as a wildcard rejection OID and as a wildcard trust OID */ +#define X509_TRUST_OK_ANY_EKU (1U << 4) + +/* check_trust return codes */ +#define X509_TRUST_TRUSTED 1 +#define X509_TRUST_REJECTED 2 +#define X509_TRUST_UNTRUSTED 3 + +int X509_TRUST_set(int *t, int trust); +int X509_TRUST_get_count(void); +X509_TRUST *X509_TRUST_get0(int idx); +int X509_TRUST_get_by_id(int id); +int X509_TRUST_add(int id, int flags, int (*ck)(X509_TRUST *, X509 *, int), + const char *name, int arg1, void *arg2); +void X509_TRUST_cleanup(void); +int X509_TRUST_get_flags(const X509_TRUST *xp); +char *X509_TRUST_get0_name(const X509_TRUST *xp); +int X509_TRUST_get_trust(const X509_TRUST *xp); + +int X509_trusted(const X509 *x); +int X509_add1_trust_object(X509 *x, const ASN1_OBJECT *obj); +int X509_add1_reject_object(X509 *x, const ASN1_OBJECT *obj); +void X509_trust_clear(X509 *x); +void X509_reject_clear(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_trust_objects(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_reject_objects(X509 *x); + +int (*X509_TRUST_set_default(int (*trust)(int, X509 *, int)))(int, X509 *, + int); +int X509_check_trust(X509 *x, int id, int flags); + +int X509_verify_cert(X509_STORE_CTX *ctx); +int X509_STORE_CTX_verify(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_build_chain(X509 *target, STACK_OF(X509) *certs, + X509_STORE *store, int with_self_signed, + OSSL_LIB_CTX *libctx, const char *propq); + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); +int X509_STORE_CTX_print_verify_cb(int ok, X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer, + X509_STORE_CTX *ctx, X509 *x); +typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx, + X509 *x, X509 *issuer); +typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL **crl, X509 *x); +typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl); +typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL *crl, X509 *x); +typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx); +typedef STACK_OF(X509) + *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx, + const X509_NAME *nm); +typedef STACK_OF(X509_CRL) + *(*X509_STORE_CTX_lookup_crls_fn)(const X509_STORE_CTX *ctx, + const X509_NAME *nm); +typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx); + +void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); + +#define X509_STORE_CTX_set_app_data(ctx, data) \ + X509_STORE_CTX_set_ex_data(ctx, 0, data) +#define X509_STORE_CTX_get_app_data(ctx) \ + X509_STORE_CTX_get_ex_data(ctx, 0) + +#define X509_L_FILE_LOAD 1 +#define X509_L_ADD_DIR 2 +#define X509_L_ADD_STORE 3 +#define X509_L_LOAD_STORE 4 + +#define X509_LOOKUP_load_file(x, name, type) \ + X509_LOOKUP_ctrl((x), X509_L_FILE_LOAD, (name), (long)(type), NULL) + +#define X509_LOOKUP_add_dir(x, name, type) \ + X509_LOOKUP_ctrl((x), X509_L_ADD_DIR, (name), (long)(type), NULL) + +#define X509_LOOKUP_add_store(x, name) \ + X509_LOOKUP_ctrl((x), X509_L_ADD_STORE, (name), 0, NULL) + +#define X509_LOOKUP_load_store(x, name) \ + X509_LOOKUP_ctrl((x), X509_L_LOAD_STORE, (name), 0, NULL) + +#define X509_LOOKUP_load_file_ex(x, name, type, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_FILE_LOAD, (name), (long)(type), NULL, \ + (libctx), (propq)) + +#define X509_LOOKUP_load_store_ex(x, name, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_LOAD_STORE, (name), 0, NULL, \ + (libctx), (propq)) + +#define X509_LOOKUP_add_store_ex(x, name, libctx, propq) \ + X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ + (libctx), (propq)) + +#define X509_V_OK 0 +#define X509_V_ERR_UNSPECIFIED 1 +#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 +#define X509_V_ERR_UNABLE_TO_GET_CRL 3 +#define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 +#define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 +#define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 +#define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 +#define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 +#define X509_V_ERR_CERT_NOT_YET_VALID 9 +#define X509_V_ERR_CERT_HAS_EXPIRED 10 +#define X509_V_ERR_CRL_NOT_YET_VALID 11 +#define X509_V_ERR_CRL_HAS_EXPIRED 12 +#define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 +#define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 +#define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 +#define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 +#define X509_V_ERR_OUT_OF_MEM 17 +#define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 +#define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 +#define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 +#define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 +#define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 +#define X509_V_ERR_CERT_REVOKED 23 +#define X509_V_ERR_NO_ISSUER_PUBLIC_KEY 24 +#define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +#define X509_V_ERR_INVALID_PURPOSE 26 +#define X509_V_ERR_CERT_UNTRUSTED 27 +#define X509_V_ERR_CERT_REJECTED 28 + +/* These are 'informational' when looking for issuer cert */ +#define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +#define X509_V_ERR_AKID_SKID_MISMATCH 30 +#define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +#define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 +#define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +#define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +#define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +#define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +#define X509_V_ERR_INVALID_NON_CA 37 +#define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +#define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +#define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 +#define X509_V_ERR_INVALID_EXTENSION 41 +#define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +#define X509_V_ERR_NO_EXPLICIT_POLICY 43 +#define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +#define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 +#define X509_V_ERR_UNNESTED_RESOURCE 46 +#define X509_V_ERR_PERMITTED_VIOLATION 47 +#define X509_V_ERR_EXCLUDED_VIOLATION 48 +#define X509_V_ERR_SUBTREE_MINMAX 49 +/* The application is not happy */ +#define X509_V_ERR_APPLICATION_VERIFICATION 50 +#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +#define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +#define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 +/* Another issuer check debug option */ +#define X509_V_ERR_PATH_LOOP 55 +/* Suite B mode algorithm violation */ +#define X509_V_ERR_SUITE_B_INVALID_VERSION 56 +#define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 +#define X509_V_ERR_SUITE_B_INVALID_CURVE 58 +#define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 +#define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 +#define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 +/* Host, email and IP check errors */ +#define X509_V_ERR_HOSTNAME_MISMATCH 62 +#define X509_V_ERR_EMAIL_MISMATCH 63 +#define X509_V_ERR_IP_ADDRESS_MISMATCH 64 +/* DANE TLSA errors */ +#define X509_V_ERR_DANE_NO_MATCH 65 +/* security level errors */ +#define X509_V_ERR_EE_KEY_TOO_SMALL 66 +#define X509_V_ERR_CA_KEY_TOO_SMALL 67 +#define X509_V_ERR_CA_MD_TOO_WEAK 68 +/* Caller error */ +#define X509_V_ERR_INVALID_CALL 69 +/* Issuer lookup error */ +#define X509_V_ERR_STORE_LOOKUP 70 +/* Certificate transparency */ +#define X509_V_ERR_NO_VALID_SCTS 71 + +#define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 72 +/* OCSP status errors */ +#define X509_V_ERR_OCSP_VERIFY_NEEDED 73 /* Need OCSP verification */ +#define X509_V_ERR_OCSP_VERIFY_FAILED 74 /* Couldn't verify cert through OCSP */ +#define X509_V_ERR_OCSP_CERT_UNKNOWN 75 /* Certificate wasn't recognized by the OCSP responder */ + +#define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 76 +#define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 77 + +/* Errors in case a check in X509_V_FLAG_X509_STRICT mode fails */ +#define X509_V_ERR_SIGNATURE_ALGORITHM_INCONSISTENCY 78 +#define X509_V_ERR_INVALID_CA 79 +#define X509_V_ERR_PATHLEN_INVALID_FOR_NON_CA 80 +#define X509_V_ERR_PATHLEN_WITHOUT_KU_KEY_CERT_SIGN 81 +#define X509_V_ERR_KU_KEY_CERT_SIGN_INVALID_FOR_NON_CA 82 +#define X509_V_ERR_ISSUER_NAME_EMPTY 83 +#define X509_V_ERR_SUBJECT_NAME_EMPTY 84 +#define X509_V_ERR_MISSING_AUTHORITY_KEY_IDENTIFIER 85 +#define X509_V_ERR_MISSING_SUBJECT_KEY_IDENTIFIER 86 +#define X509_V_ERR_EMPTY_SUBJECT_ALT_NAME 87 +#define X509_V_ERR_EMPTY_SUBJECT_SAN_NOT_CRITICAL 88 +#define X509_V_ERR_CA_BCONS_NOT_CRITICAL 89 +#define X509_V_ERR_AUTHORITY_KEY_IDENTIFIER_CRITICAL 90 +#define X509_V_ERR_SUBJECT_KEY_IDENTIFIER_CRITICAL 91 +#define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 +#define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 +#define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +#define X509_V_ERR_RPK_UNTRUSTED 95 + +/* Certificate verify flags */ +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_V_FLAG_CB_ISSUER_CHECK 0x0 /* Deprecated */ +#endif +/* Use check time instead of current time */ +#define X509_V_FLAG_USE_CHECK_TIME 0x2 +/* Lookup CRLs */ +#define X509_V_FLAG_CRL_CHECK 0x4 +/* Lookup CRLs for whole chain */ +#define X509_V_FLAG_CRL_CHECK_ALL 0x8 +/* Ignore unhandled critical extensions */ +#define X509_V_FLAG_IGNORE_CRITICAL 0x10 +/* Disable workarounds for broken certificates */ +#define X509_V_FLAG_X509_STRICT 0x20 +/* Enable proxy certificate validation */ +#define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 +/* Enable policy checking */ +#define X509_V_FLAG_POLICY_CHECK 0x80 +/* Policy variable require-explicit-policy */ +#define X509_V_FLAG_EXPLICIT_POLICY 0x100 +/* Policy variable inhibit-any-policy */ +#define X509_V_FLAG_INHIBIT_ANY 0x200 +/* Policy variable inhibit-policy-mapping */ +#define X509_V_FLAG_INHIBIT_MAP 0x400 +/* Notify callback that policy is OK */ +#define X509_V_FLAG_NOTIFY_POLICY 0x800 +/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ +#define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 +/* Delta CRL support */ +#define X509_V_FLAG_USE_DELTAS 0x2000 +/* Check self-signed CA signature */ +#define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 +/* Use trusted store first */ +#define X509_V_FLAG_TRUSTED_FIRST 0x8000 +/* Suite B 128 bit only mode: not normally used */ +#define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +#define X509_V_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +#define X509_V_FLAG_SUITEB_128_LOS 0x30000 +/* Allow partial chains if at least one certificate is in trusted store */ +#define X509_V_FLAG_PARTIAL_CHAIN 0x80000 +/* + * If the initial chain is not trusted, do not attempt to build an alternative + * chain. Alternate chain checking was introduced in 1.1.0. Setting this flag + * will force the behaviour to match that of previous versions. + */ +#define X509_V_FLAG_NO_ALT_CHAINS 0x100000 +/* Do not check certificate/CRL validity against current time */ +#define X509_V_FLAG_NO_CHECK_TIME 0x200000 + +#define X509_VP_FLAG_DEFAULT 0x1 +#define X509_VP_FLAG_OVERWRITE 0x2 +#define X509_VP_FLAG_RESET_FLAGS 0x4 +#define X509_VP_FLAG_LOCKED 0x8 +#define X509_VP_FLAG_ONCE 0x10 + +/* Internal use: mask of policy related options */ +#define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ + | X509_V_FLAG_EXPLICIT_POLICY \ + | X509_V_FLAG_INHIBIT_ANY \ + | X509_V_FLAG_INHIBIT_MAP) + +int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, X509_LOOKUP_TYPE type, + const X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + X509_LOOKUP_TYPE type, + const X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +int X509_OBJECT_up_ref_count(X509_OBJECT *a); +X509_OBJECT *X509_OBJECT_new(void); +void X509_OBJECT_free(X509_OBJECT *a); +X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a); +X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a); +int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); +X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); +int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, + const X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, + const X509_NAME *nm); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); + +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); +#define X509_STORE_set_verify_func(ctx, func) \ + X509_STORE_set_verify((ctx), (func)) +void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_fn verify); +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, + X509_STORE_CTX_verify_cb verify_cb); +#define X509_STORE_set_verify_cb_func(ctx, func) \ + X509_STORE_set_verify_cb((ctx), (func)) +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, + X509_STORE_CTX_get_issuer_fn get_issuer); +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, + X509_STORE_CTX_check_issued_fn check_issued); +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, + X509_STORE_CTX_check_revocation_fn check_revocation); +X509_STORE_CTX_check_revocation_fn +X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, + X509_STORE_CTX_check_crl_fn check_crl); +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, + X509_STORE_CTX_cert_crl_fn cert_crl); +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, + X509_STORE_CTX_check_policy_fn check_policy); +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, + X509_STORE_CTX_lookup_certs_fn lookup_certs); +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, + X509_STORE_CTX_lookup_crls_fn lookup_crls); +#define X509_STORE_set_lookup_crls_cb(ctx, func) \ + X509_STORE_set_lookup_crls((ctx), (func)) +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, + X509_STORE_CTX_cleanup_fn cleanup); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); + +#define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); + +X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +X509_STORE_CTX *X509_STORE_CTX_new(void); + +int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + +void X509_STORE_CTX_free(X509_STORE_CTX *ctx); +int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, + X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY *rpk); +void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); + +X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_cb verify); +X509_STORE_CTX_verify_cb X509_STORE_CTX_get_verify_cb(const X509_STORE_CTX *ctx); +X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); +X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(const X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(const X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(const X509_STORE_CTX *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_STORE_CTX_get_chain X509_STORE_CTX_get0_chain +#define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted +#define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack +#define X509_STORE_get_by_subject X509_STORE_CTX_get_by_subject +#define X509_STORE_get1_certs X509_STORE_CTX_get1_certs +#define X509_STORE_get1_crls X509_STORE_CTX_get1_crls +/* the following macro is misspelled; use X509_STORE_get1_certs instead */ +#define X509_STORE_get1_cert X509_STORE_CTX_get1_certs +/* the following macro is misspelled; use X509_STORE_get1_crls instead */ +#define X509_STORE_get1_crl X509_STORE_CTX_get1_crls +#endif + +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); +X509_LOOKUP_METHOD *X509_LOOKUP_store(void); + +typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +typedef int (*X509_LOOKUP_ctrl_ex_fn)( + X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret, + OSSL_LIB_CTX *libctx, const char *propq); + +typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_subject_ex_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + X509_OBJECT *ret, + OSSL_LIB_CTX *libctx, + const char *propq); +typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + const ASN1_INTEGER *serial, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const unsigned char *bytes, + int len, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const char *str, + int len, + X509_OBJECT *ret); + +X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name); +void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method, + int (*new_item)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method, + void (*free_fn)(X509_LOOKUP *ctx)); +void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method, + int (*init)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method, + int (*shutdown)(X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD *method))(X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method, + X509_LOOKUP_ctrl_fn ctrl_fn); +X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_subject_fn fn); +X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_issuer_serial(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_issuer_serial_fn fn); +X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_fingerprint_fn fn); +X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_alias_fn fn); +X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( + const X509_LOOKUP_METHOD *method); + +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); + +int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret); +X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + const X509_NAME *name); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +int X509_LOOKUP_ctrl_ex(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, + char **ret, OSSL_LIB_CTX *libctx, const char *propq); + +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_file_ex(X509_LOOKUP *ctx, const char *file, int type, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file_ex(X509_LOOKUP *ctx, const char *file, int type, + OSSL_LIB_CTX *libctx, const char *propq); + +X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); +void X509_LOOKUP_free(X509_LOOKUP *ctx); +int X509_LOOKUP_init(X509_LOOKUP *ctx); +int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret); +int X509_LOOKUP_by_subject_ex(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, + const ASN1_INTEGER *serial, + X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const char *str, int len, X509_OBJECT *ret); +int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); +void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); +X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); + +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); + +#define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) +int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); +void *X509_STORE_CTX_get_ex_data(const X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); +X509 *X509_STORE_CTX_get_current_cert(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); +X509 *X509_STORE_CTX_get0_current_issuer(const X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); +void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); +int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); +int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); +int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, + int purpose, int trust); +void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); +void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, + time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_num_untrusted(const X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); +int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); + +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +void X509_STORE_CTX_set0_dane(X509_STORE_CTX *ctx, SSL_DANE *dane); +#define DANE_FLAG_NO_DANE_EE_NAMECHECKS (1L << 0) + +/* X509_VERIFY_PARAM functions */ + +X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); +void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); +int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +unsigned long X509_VERIFY_PARAM_get_flags(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_get_purpose(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); +void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); +void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); +time_t X509_VERIFY_PARAM_get_time(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); +int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, + ASN1_OBJECT *policy); +int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, + STACK_OF(ASN1_OBJECT) *policies); + +int X509_VERIFY_PARAM_set_inh_flags(X509_VERIFY_PARAM *param, + uint32_t flags); +uint32_t X509_VERIFY_PARAM_get_inh_flags(const X509_VERIFY_PARAM *param); + +char *X509_VERIFY_PARAM_get0_host(X509_VERIFY_PARAM *param, int idx); +int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, + unsigned int flags); +unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param); +char *X509_VERIFY_PARAM_get0_peername(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); +char *X509_VERIFY_PARAM_get0_email(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +char *X509_VERIFY_PARAM_get1_ip_asc(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, + const unsigned char *ip, size_t iplen); +int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, + const char *ipasc); + +int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_auth_level(const X509_VERIFY_PARAM *param); +const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_count(void); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); +void X509_VERIFY_PARAM_table_cleanup(void); + +/* Non positive return values are errors */ +#define X509_PCY_TREE_FAILURE -2 /* Failure to satisfy explicit policy */ +#define X509_PCY_TREE_INVALID -1 /* Inconsistent or invalid extensions */ +#define X509_PCY_TREE_INTERNAL 0 /* Internal error, most likely malloc */ + +/* + * Positive return values form a bit mask, all but the first are internal to + * the library and don't appear in results from X509_policy_check(). + */ +#define X509_PCY_TREE_VALID 1 /* The policy tree is valid */ +#define X509_PCY_TREE_EMPTY 2 /* The policy tree is empty */ +#define X509_PCY_TREE_EXPLICIT 4 /* Explicit policy required */ + +int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, + STACK_OF(X509) *certs, + STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); + +void X509_policy_tree_free(X509_POLICY_TREE *tree); + +int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); +X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, + int i); + +STACK_OF(X509_POLICY_NODE) +*X509_policy_tree_get0_policies(const X509_POLICY_TREE *tree); + +STACK_OF(X509_POLICY_NODE) +*X509_policy_tree_get0_user_policies(const X509_POLICY_TREE *tree); + +int X509_policy_level_node_count(X509_POLICY_LEVEL *level); + +X509_POLICY_NODE *X509_policy_level_get0_node(const X509_POLICY_LEVEL *level, + int i); + +const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); + +STACK_OF(POLICYQUALINFO) +*X509_policy_node_get0_qualifiers(const X509_POLICY_NODE *node); +const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE *node); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/x509v3.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/x509v3.h new file mode 100644 index 00000000000000..5dd402d2a913e8 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/openssl/x509v3.h @@ -0,0 +1,2013 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/x509v3.h.in + * + * Copyright 1999-2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* clang-format off */ + +/* clang-format on */ + +#ifndef OPENSSL_X509V3_H +#define OPENSSL_X509V3_H +#pragma once + +#include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define HEADER_X509V3_H +#endif + +#include +#include +#include +#include +#ifndef OPENSSL_NO_STDIO +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward reference */ +struct v3_ext_method; +struct v3_ext_ctx; + +/* Useful typedefs */ + +typedef void *(*X509V3_EXT_NEW)(void); +typedef void (*X509V3_EXT_FREE)(void *); +typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); +typedef int (*X509V3_EXT_I2D)(const void *, unsigned char **); +typedef STACK_OF(CONF_VALUE) *(*X509V3_EXT_I2V)(const struct v3_ext_method *method, void *ext, + STACK_OF(CONF_VALUE) *extlist); +typedef void *(*X509V3_EXT_V2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, + STACK_OF(CONF_VALUE) *values); +typedef char *(*X509V3_EXT_I2S)(const struct v3_ext_method *method, + void *ext); +typedef void *(*X509V3_EXT_S2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); +typedef int (*X509V3_EXT_I2R)(const struct v3_ext_method *method, void *ext, + BIO *out, int indent); +typedef void *(*X509V3_EXT_R2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); + +/* V3 extension structure */ + +struct v3_ext_method { + int ext_nid; + int ext_flags; + /* If this is set the following four fields are ignored */ + ASN1_ITEM_EXP *it; + /* Old style ASN1 calls */ + X509V3_EXT_NEW ext_new; + X509V3_EXT_FREE ext_free; + X509V3_EXT_D2I d2i; + X509V3_EXT_I2D i2d; + /* The following pair is used for string extensions */ + X509V3_EXT_I2S i2s; + X509V3_EXT_S2I s2i; + /* The following pair is used for multi-valued extensions */ + X509V3_EXT_I2V i2v; + X509V3_EXT_V2I v2i; + /* The following are used for raw extensions */ + X509V3_EXT_I2R i2r; + X509V3_EXT_R2I r2i; + void *usr_data; /* Any extension specific data */ +}; + +typedef struct X509V3_CONF_METHOD_st { + char *(*get_string)(void *db, const char *section, const char *value); + STACK_OF(CONF_VALUE) *(*get_section)(void *db, const char *section); + void (*free_string)(void *db, char *string); + void (*free_section)(void *db, STACK_OF(CONF_VALUE) *section); +} X509V3_CONF_METHOD; + +/* Context specific info for producing X509 v3 extensions*/ +struct v3_ext_ctx { +#define X509V3_CTX_TEST 0x1 +#ifndef OPENSSL_NO_DEPRECATED_3_0 +#define CTX_TEST X509V3_CTX_TEST +#endif +#define X509V3_CTX_REPLACE 0x2 + int flags; + X509 *issuer_cert; + X509 *subject_cert; + X509_REQ *subject_req; + X509_CRL *crl; + X509V3_CONF_METHOD *db_meth; + void *db; + EVP_PKEY *issuer_pkey; + /* Maybe more here */ +}; + +typedef struct v3_ext_method X509V3_EXT_METHOD; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509V3_EXT_METHOD, X509V3_EXT_METHOD, X509V3_EXT_METHOD) +#define sk_X509V3_EXT_METHOD_num(sk) OPENSSL_sk_num(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_value(sk, idx) ((X509V3_EXT_METHOD *)OPENSSL_sk_value(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), (idx))) +#define sk_X509V3_EXT_METHOD_new(cmp) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) +#define sk_X509V3_EXT_METHOD_new_null() ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_null()) +#define sk_X509V3_EXT_METHOD_new_reserve(cmp, n) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_reserve(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp), (n))) +#define sk_X509V3_EXT_METHOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (n)) +#define sk_X509V3_EXT_METHOD_free(sk) OPENSSL_sk_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_zero(sk) OPENSSL_sk_zero(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_delete(sk, i) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (i))) +#define sk_X509V3_EXT_METHOD_delete_ptr(sk, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete_ptr(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))) +#define sk_X509V3_EXT_METHOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_pop(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_pop(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_shift(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_shift(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk),ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc)) +#define sk_X509V3_EXT_METHOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), (idx)) +#define sk_X509V3_EXT_METHOD_set(sk, idx, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_set(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (idx), ossl_check_X509V3_EXT_METHOD_type(ptr))) +#define sk_X509V3_EXT_METHOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), pnum) +#define sk_X509V3_EXT_METHOD_sort(sk) OPENSSL_sk_sort(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_dup(sk) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_dup(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_deep_copy(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_copyfunc_type(copyfunc), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc))) +#define sk_X509V3_EXT_METHOD_set_cmp_func(sk, cmp) ((sk_X509V3_EXT_METHOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) + +/* clang-format on */ + +/* ext_flags values */ +#define X509V3_EXT_DYNAMIC 0x1 +#define X509V3_EXT_CTX_DEP 0x2 +#define X509V3_EXT_MULTILINE 0x4 + +typedef BIT_STRING_BITNAME ENUMERATED_NAMES; + +typedef struct BASIC_CONSTRAINTS_st { + int ca; + ASN1_INTEGER *pathlen; +} BASIC_CONSTRAINTS; + +typedef struct OSSL_BASIC_ATTR_CONSTRAINTS_st { + int authority; + ASN1_INTEGER *pathlen; +} OSSL_BASIC_ATTR_CONSTRAINTS; + +typedef struct PKEY_USAGE_PERIOD_st { + ASN1_GENERALIZEDTIME *notBefore; + ASN1_GENERALIZEDTIME *notAfter; +} PKEY_USAGE_PERIOD; + +typedef struct otherName_st { + ASN1_OBJECT *type_id; + ASN1_TYPE *value; +} OTHERNAME; + +typedef struct EDIPartyName_st { + ASN1_STRING *nameAssigner; + ASN1_STRING *partyName; +} EDIPARTYNAME; + +typedef struct GENERAL_NAME_st { +#define GEN_OTHERNAME 0 +#define GEN_EMAIL 1 +#define GEN_DNS 2 +#define GEN_X400 3 +#define GEN_DIRNAME 4 +#define GEN_EDIPARTY 5 +#define GEN_URI 6 +#define GEN_IPADD 7 +#define GEN_RID 8 + int type; + union { + char *ptr; + OTHERNAME *otherName; /* otherName */ + ASN1_IA5STRING *rfc822Name; + ASN1_IA5STRING *dNSName; + ASN1_STRING *x400Address; + X509_NAME *directoryName; + EDIPARTYNAME *ediPartyName; + ASN1_IA5STRING *uniformResourceIdentifier; + ASN1_OCTET_STRING *iPAddress; + ASN1_OBJECT *registeredID; + /* Old names */ + ASN1_OCTET_STRING *ip; /* iPAddress */ + X509_NAME *dirn; /* dirn */ + ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, + * uniformResourceIdentifier */ + ASN1_OBJECT *rid; /* registeredID */ + ASN1_TYPE *other; /* x400Address */ + } d; +} GENERAL_NAME; + +typedef struct ACCESS_DESCRIPTION_st { + ASN1_OBJECT *method; + GENERAL_NAME *location; +} ACCESS_DESCRIPTION; + +int GENERAL_NAME_set1_X509_NAME(GENERAL_NAME **tgt, const X509_NAME *src); + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) +#define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) +#define sk_ACCESS_DESCRIPTION_new(cmp) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) +#define sk_ACCESS_DESCRIPTION_new_null() ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_null()) +#define sk_ACCESS_DESCRIPTION_new_reserve(cmp, n) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_reserve(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp), (n))) +#define sk_ACCESS_DESCRIPTION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (n)) +#define sk_ACCESS_DESCRIPTION_free(sk) OPENSSL_sk_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_zero(sk) OPENSSL_sk_zero(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_delete(sk, i) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (i))) +#define sk_ACCESS_DESCRIPTION_delete_ptr(sk, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete_ptr(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))) +#define sk_ACCESS_DESCRIPTION_push(sk, ptr) OPENSSL_sk_push(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_pop(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_pop(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_shift(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_shift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk),ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc)) +#define sk_ACCESS_DESCRIPTION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), (idx)) +#define sk_ACCESS_DESCRIPTION_set(sk, idx, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_set(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (idx), ossl_check_ACCESS_DESCRIPTION_type(ptr))) +#define sk_ACCESS_DESCRIPTION_find(sk, ptr) OPENSSL_sk_find(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), pnum) +#define sk_ACCESS_DESCRIPTION_sort(sk) OPENSSL_sk_sort(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_dup(sk) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_dup(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_deep_copy(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_copyfunc_type(copyfunc), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc))) +#define sk_ACCESS_DESCRIPTION_set_cmp_func(sk, cmp) ((sk_ACCESS_DESCRIPTION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAME, GENERAL_NAME, GENERAL_NAME) +#define sk_GENERAL_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_value(sk, idx) ((GENERAL_NAME *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAME_sk_type(sk), (idx))) +#define sk_GENERAL_NAME_new(cmp) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new(ossl_check_GENERAL_NAME_compfunc_type(cmp))) +#define sk_GENERAL_NAME_new_null() ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_NAME_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAME_compfunc_type(cmp), (n))) +#define sk_GENERAL_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAME_sk_type(sk), (n)) +#define sk_GENERAL_NAME_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_delete(sk, i) ((GENERAL_NAME *)OPENSSL_sk_delete(ossl_check_GENERAL_NAME_sk_type(sk), (i))) +#define sk_GENERAL_NAME_delete_ptr(sk, ptr) ((GENERAL_NAME *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))) +#define sk_GENERAL_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_pop(sk) ((GENERAL_NAME *)OPENSSL_sk_pop(ossl_check_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_shift(sk) ((GENERAL_NAME *)OPENSSL_sk_shift(ossl_check_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAME_sk_type(sk),ossl_check_GENERAL_NAME_freefunc_type(freefunc)) +#define sk_GENERAL_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), (idx)) +#define sk_GENERAL_NAME_set(sk, idx, ptr) ((GENERAL_NAME *)OPENSSL_sk_set(ossl_check_GENERAL_NAME_sk_type(sk), (idx), ossl_check_GENERAL_NAME_type(ptr))) +#define sk_GENERAL_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), pnum) +#define sk_GENERAL_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_dup(sk) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_copyfunc_type(copyfunc), ossl_check_GENERAL_NAME_freefunc_type(freefunc))) +#define sk_GENERAL_NAME_set_cmp_func(sk, cmp) ((sk_GENERAL_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; +typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; +typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; +typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAMES, GENERAL_NAMES, GENERAL_NAMES) +#define sk_GENERAL_NAMES_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_value(sk, idx) ((GENERAL_NAMES *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAMES_sk_type(sk), (idx))) +#define sk_GENERAL_NAMES_new(cmp) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new(ossl_check_GENERAL_NAMES_compfunc_type(cmp))) +#define sk_GENERAL_NAMES_new_null() ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_NAMES_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAMES_compfunc_type(cmp), (n))) +#define sk_GENERAL_NAMES_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAMES_sk_type(sk), (n)) +#define sk_GENERAL_NAMES_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_delete(sk, i) ((GENERAL_NAMES *)OPENSSL_sk_delete(ossl_check_GENERAL_NAMES_sk_type(sk), (i))) +#define sk_GENERAL_NAMES_delete_ptr(sk, ptr) ((GENERAL_NAMES *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))) +#define sk_GENERAL_NAMES_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_pop(sk) ((GENERAL_NAMES *)OPENSSL_sk_pop(ossl_check_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_shift(sk) ((GENERAL_NAMES *)OPENSSL_sk_shift(ossl_check_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAMES_sk_type(sk),ossl_check_GENERAL_NAMES_freefunc_type(freefunc)) +#define sk_GENERAL_NAMES_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), (idx)) +#define sk_GENERAL_NAMES_set(sk, idx, ptr) ((GENERAL_NAMES *)OPENSSL_sk_set(ossl_check_GENERAL_NAMES_sk_type(sk), (idx), ossl_check_GENERAL_NAMES_type(ptr))) +#define sk_GENERAL_NAMES_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), pnum) +#define sk_GENERAL_NAMES_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_dup(sk) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_copyfunc_type(copyfunc), ossl_check_GENERAL_NAMES_freefunc_type(freefunc))) +#define sk_GENERAL_NAMES_set_cmp_func(sk, cmp) ((sk_GENERAL_NAMES_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct DIST_POINT_NAME_st { + int type; + union { + GENERAL_NAMES *fullname; + STACK_OF(X509_NAME_ENTRY) *relativename; + } name; + /* If relativename then this contains the full distribution point name */ + X509_NAME *dpname; +} DIST_POINT_NAME; +DECLARE_ASN1_DUP_FUNCTION(DIST_POINT_NAME) +/* All existing reasons */ +#define CRLDP_ALL_REASONS 0x807f + +#define CRL_REASON_NONE -1 +#define CRL_REASON_UNSPECIFIED 0 +#define CRL_REASON_KEY_COMPROMISE 1 +#define CRL_REASON_CA_COMPROMISE 2 +#define CRL_REASON_AFFILIATION_CHANGED 3 +#define CRL_REASON_SUPERSEDED 4 +#define CRL_REASON_CESSATION_OF_OPERATION 5 +#define CRL_REASON_CERTIFICATE_HOLD 6 +#define CRL_REASON_REMOVE_FROM_CRL 8 +#define CRL_REASON_PRIVILEGE_WITHDRAWN 9 +#define CRL_REASON_AA_COMPROMISE 10 + +struct DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + GENERAL_NAMES *CRLissuer; + int dp_reasons; +}; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(DIST_POINT, DIST_POINT, DIST_POINT) +#define sk_DIST_POINT_num(sk) OPENSSL_sk_num(ossl_check_const_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_value(sk, idx) ((DIST_POINT *)OPENSSL_sk_value(ossl_check_const_DIST_POINT_sk_type(sk), (idx))) +#define sk_DIST_POINT_new(cmp) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new(ossl_check_DIST_POINT_compfunc_type(cmp))) +#define sk_DIST_POINT_new_null() ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_null()) +#define sk_DIST_POINT_new_reserve(cmp, n) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_reserve(ossl_check_DIST_POINT_compfunc_type(cmp), (n))) +#define sk_DIST_POINT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_DIST_POINT_sk_type(sk), (n)) +#define sk_DIST_POINT_free(sk) OPENSSL_sk_free(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_zero(sk) OPENSSL_sk_zero(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_delete(sk, i) ((DIST_POINT *)OPENSSL_sk_delete(ossl_check_DIST_POINT_sk_type(sk), (i))) +#define sk_DIST_POINT_delete_ptr(sk, ptr) ((DIST_POINT *)OPENSSL_sk_delete_ptr(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))) +#define sk_DIST_POINT_push(sk, ptr) OPENSSL_sk_push(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_pop(sk) ((DIST_POINT *)OPENSSL_sk_pop(ossl_check_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_shift(sk) ((DIST_POINT *)OPENSSL_sk_shift(ossl_check_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_DIST_POINT_sk_type(sk),ossl_check_DIST_POINT_freefunc_type(freefunc)) +#define sk_DIST_POINT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), (idx)) +#define sk_DIST_POINT_set(sk, idx, ptr) ((DIST_POINT *)OPENSSL_sk_set(ossl_check_DIST_POINT_sk_type(sk), (idx), ossl_check_DIST_POINT_type(ptr))) +#define sk_DIST_POINT_find(sk, ptr) OPENSSL_sk_find(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), pnum) +#define sk_DIST_POINT_sort(sk) OPENSSL_sk_sort(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_dup(sk) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_dup(ossl_check_const_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_deep_copy(ossl_check_const_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_copyfunc_type(copyfunc), ossl_check_DIST_POINT_freefunc_type(freefunc))) +#define sk_DIST_POINT_set_cmp_func(sk, cmp) ((sk_DIST_POINT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; + +struct AUTHORITY_KEYID_st { + ASN1_OCTET_STRING *keyid; + GENERAL_NAMES *issuer; + ASN1_INTEGER *serial; +}; + +/* Strong extranet structures */ + +typedef struct SXNET_ID_st { + ASN1_INTEGER *zone; + ASN1_OCTET_STRING *user; +} SXNETID; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(SXNETID, SXNETID, SXNETID) +#define sk_SXNETID_num(sk) OPENSSL_sk_num(ossl_check_const_SXNETID_sk_type(sk)) +#define sk_SXNETID_value(sk, idx) ((SXNETID *)OPENSSL_sk_value(ossl_check_const_SXNETID_sk_type(sk), (idx))) +#define sk_SXNETID_new(cmp) ((STACK_OF(SXNETID) *)OPENSSL_sk_new(ossl_check_SXNETID_compfunc_type(cmp))) +#define sk_SXNETID_new_null() ((STACK_OF(SXNETID) *)OPENSSL_sk_new_null()) +#define sk_SXNETID_new_reserve(cmp, n) ((STACK_OF(SXNETID) *)OPENSSL_sk_new_reserve(ossl_check_SXNETID_compfunc_type(cmp), (n))) +#define sk_SXNETID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SXNETID_sk_type(sk), (n)) +#define sk_SXNETID_free(sk) OPENSSL_sk_free(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_zero(sk) OPENSSL_sk_zero(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_delete(sk, i) ((SXNETID *)OPENSSL_sk_delete(ossl_check_SXNETID_sk_type(sk), (i))) +#define sk_SXNETID_delete_ptr(sk, ptr) ((SXNETID *)OPENSSL_sk_delete_ptr(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))) +#define sk_SXNETID_push(sk, ptr) OPENSSL_sk_push(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_pop(sk) ((SXNETID *)OPENSSL_sk_pop(ossl_check_SXNETID_sk_type(sk))) +#define sk_SXNETID_shift(sk) ((SXNETID *)OPENSSL_sk_shift(ossl_check_SXNETID_sk_type(sk))) +#define sk_SXNETID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SXNETID_sk_type(sk),ossl_check_SXNETID_freefunc_type(freefunc)) +#define sk_SXNETID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), (idx)) +#define sk_SXNETID_set(sk, idx, ptr) ((SXNETID *)OPENSSL_sk_set(ossl_check_SXNETID_sk_type(sk), (idx), ossl_check_SXNETID_type(ptr))) +#define sk_SXNETID_find(sk, ptr) OPENSSL_sk_find(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), pnum) +#define sk_SXNETID_sort(sk) OPENSSL_sk_sort(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SXNETID_sk_type(sk)) +#define sk_SXNETID_dup(sk) ((STACK_OF(SXNETID) *)OPENSSL_sk_dup(ossl_check_const_SXNETID_sk_type(sk))) +#define sk_SXNETID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SXNETID) *)OPENSSL_sk_deep_copy(ossl_check_const_SXNETID_sk_type(sk), ossl_check_SXNETID_copyfunc_type(copyfunc), ossl_check_SXNETID_freefunc_type(freefunc))) +#define sk_SXNETID_set_cmp_func(sk, cmp) ((sk_SXNETID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct SXNET_st { + ASN1_INTEGER *version; + STACK_OF(SXNETID) *ids; +} SXNET; + +typedef struct ISSUER_SIGN_TOOL_st { + ASN1_UTF8STRING *signTool; + ASN1_UTF8STRING *cATool; + ASN1_UTF8STRING *signToolCert; + ASN1_UTF8STRING *cAToolCert; +} ISSUER_SIGN_TOOL; + +typedef struct NOTICEREF_st { + ASN1_STRING *organization; + STACK_OF(ASN1_INTEGER) *noticenos; +} NOTICEREF; + +typedef struct USERNOTICE_st { + NOTICEREF *noticeref; + ASN1_STRING *exptext; +} USERNOTICE; + +typedef struct POLICYQUALINFO_st { + ASN1_OBJECT *pqualid; + union { + ASN1_IA5STRING *cpsuri; + USERNOTICE *usernotice; + ASN1_TYPE *other; + } d; +} POLICYQUALINFO; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICYQUALINFO, POLICYQUALINFO, POLICYQUALINFO) +#define sk_POLICYQUALINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_value(sk, idx) ((POLICYQUALINFO *)OPENSSL_sk_value(ossl_check_const_POLICYQUALINFO_sk_type(sk), (idx))) +#define sk_POLICYQUALINFO_new(cmp) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new(ossl_check_POLICYQUALINFO_compfunc_type(cmp))) +#define sk_POLICYQUALINFO_new_null() ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_null()) +#define sk_POLICYQUALINFO_new_reserve(cmp, n) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYQUALINFO_compfunc_type(cmp), (n))) +#define sk_POLICYQUALINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYQUALINFO_sk_type(sk), (n)) +#define sk_POLICYQUALINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_delete(sk, i) ((POLICYQUALINFO *)OPENSSL_sk_delete(ossl_check_POLICYQUALINFO_sk_type(sk), (i))) +#define sk_POLICYQUALINFO_delete_ptr(sk, ptr) ((POLICYQUALINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))) +#define sk_POLICYQUALINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_pop(sk) ((POLICYQUALINFO *)OPENSSL_sk_pop(ossl_check_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_shift(sk) ((POLICYQUALINFO *)OPENSSL_sk_shift(ossl_check_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYQUALINFO_sk_type(sk),ossl_check_POLICYQUALINFO_freefunc_type(freefunc)) +#define sk_POLICYQUALINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), (idx)) +#define sk_POLICYQUALINFO_set(sk, idx, ptr) ((POLICYQUALINFO *)OPENSSL_sk_set(ossl_check_POLICYQUALINFO_sk_type(sk), (idx), ossl_check_POLICYQUALINFO_type(ptr))) +#define sk_POLICYQUALINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), pnum) +#define sk_POLICYQUALINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_dup(sk) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_copyfunc_type(copyfunc), ossl_check_POLICYQUALINFO_freefunc_type(freefunc))) +#define sk_POLICYQUALINFO_set_cmp_func(sk, cmp) ((sk_POLICYQUALINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct POLICYINFO_st { + ASN1_OBJECT *policyid; + STACK_OF(POLICYQUALINFO) *qualifiers; +} POLICYINFO; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICYINFO, POLICYINFO, POLICYINFO) +#define sk_POLICYINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_value(sk, idx) ((POLICYINFO *)OPENSSL_sk_value(ossl_check_const_POLICYINFO_sk_type(sk), (idx))) +#define sk_POLICYINFO_new(cmp) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new(ossl_check_POLICYINFO_compfunc_type(cmp))) +#define sk_POLICYINFO_new_null() ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_null()) +#define sk_POLICYINFO_new_reserve(cmp, n) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYINFO_compfunc_type(cmp), (n))) +#define sk_POLICYINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYINFO_sk_type(sk), (n)) +#define sk_POLICYINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_delete(sk, i) ((POLICYINFO *)OPENSSL_sk_delete(ossl_check_POLICYINFO_sk_type(sk), (i))) +#define sk_POLICYINFO_delete_ptr(sk, ptr) ((POLICYINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))) +#define sk_POLICYINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_pop(sk) ((POLICYINFO *)OPENSSL_sk_pop(ossl_check_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_shift(sk) ((POLICYINFO *)OPENSSL_sk_shift(ossl_check_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYINFO_sk_type(sk),ossl_check_POLICYINFO_freefunc_type(freefunc)) +#define sk_POLICYINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), (idx)) +#define sk_POLICYINFO_set(sk, idx, ptr) ((POLICYINFO *)OPENSSL_sk_set(ossl_check_POLICYINFO_sk_type(sk), (idx), ossl_check_POLICYINFO_type(ptr))) +#define sk_POLICYINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), pnum) +#define sk_POLICYINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_dup(sk) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_copyfunc_type(copyfunc), ossl_check_POLICYINFO_freefunc_type(freefunc))) +#define sk_POLICYINFO_set_cmp_func(sk, cmp) ((sk_POLICYINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; + +typedef struct POLICY_MAPPING_st { + ASN1_OBJECT *issuerDomainPolicy; + ASN1_OBJECT *subjectDomainPolicy; +} POLICY_MAPPING; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(POLICY_MAPPING, POLICY_MAPPING, POLICY_MAPPING) +#define sk_POLICY_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_value(sk, idx) ((POLICY_MAPPING *)OPENSSL_sk_value(ossl_check_const_POLICY_MAPPING_sk_type(sk), (idx))) +#define sk_POLICY_MAPPING_new(cmp) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new(ossl_check_POLICY_MAPPING_compfunc_type(cmp))) +#define sk_POLICY_MAPPING_new_null() ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_POLICY_MAPPING_new_reserve(cmp, n) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_POLICY_MAPPING_compfunc_type(cmp), (n))) +#define sk_POLICY_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICY_MAPPING_sk_type(sk), (n)) +#define sk_POLICY_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_delete(sk, i) ((POLICY_MAPPING *)OPENSSL_sk_delete(ossl_check_POLICY_MAPPING_sk_type(sk), (i))) +#define sk_POLICY_MAPPING_delete_ptr(sk, ptr) ((POLICY_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))) +#define sk_POLICY_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_pop(sk) ((POLICY_MAPPING *)OPENSSL_sk_pop(ossl_check_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_shift(sk) ((POLICY_MAPPING *)OPENSSL_sk_shift(ossl_check_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICY_MAPPING_sk_type(sk),ossl_check_POLICY_MAPPING_freefunc_type(freefunc)) +#define sk_POLICY_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), (idx)) +#define sk_POLICY_MAPPING_set(sk, idx, ptr) ((POLICY_MAPPING *)OPENSSL_sk_set(ossl_check_POLICY_MAPPING_sk_type(sk), (idx), ossl_check_POLICY_MAPPING_type(ptr))) +#define sk_POLICY_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), pnum) +#define sk_POLICY_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_dup(sk) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_copyfunc_type(copyfunc), ossl_check_POLICY_MAPPING_freefunc_type(freefunc))) +#define sk_POLICY_MAPPING_set_cmp_func(sk, cmp) ((sk_POLICY_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; + +typedef struct GENERAL_SUBTREE_st { + GENERAL_NAME *base; + ASN1_INTEGER *minimum; + ASN1_INTEGER *maximum; +} GENERAL_SUBTREE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_SUBTREE, GENERAL_SUBTREE, GENERAL_SUBTREE) +#define sk_GENERAL_SUBTREE_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_value(sk, idx) ((GENERAL_SUBTREE *)OPENSSL_sk_value(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), (idx))) +#define sk_GENERAL_SUBTREE_new(cmp) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) +#define sk_GENERAL_SUBTREE_new_null() ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_SUBTREE_new_reserve(cmp, n) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp), (n))) +#define sk_GENERAL_SUBTREE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_SUBTREE_sk_type(sk), (n)) +#define sk_GENERAL_SUBTREE_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_delete(sk, i) ((GENERAL_SUBTREE *)OPENSSL_sk_delete(ossl_check_GENERAL_SUBTREE_sk_type(sk), (i))) +#define sk_GENERAL_SUBTREE_delete_ptr(sk, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))) +#define sk_GENERAL_SUBTREE_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_pop(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_pop(ossl_check_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_shift(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_shift(ossl_check_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_SUBTREE_sk_type(sk),ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc)) +#define sk_GENERAL_SUBTREE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), (idx)) +#define sk_GENERAL_SUBTREE_set(sk, idx, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_set(ossl_check_GENERAL_SUBTREE_sk_type(sk), (idx), ossl_check_GENERAL_SUBTREE_type(ptr))) +#define sk_GENERAL_SUBTREE_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), pnum) +#define sk_GENERAL_SUBTREE_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_dup(sk) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_copyfunc_type(copyfunc), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc))) +#define sk_GENERAL_SUBTREE_set_cmp_func(sk, cmp) ((sk_GENERAL_SUBTREE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) + +/* clang-format on */ + +struct NAME_CONSTRAINTS_st { + STACK_OF(GENERAL_SUBTREE) *permittedSubtrees; + STACK_OF(GENERAL_SUBTREE) *excludedSubtrees; +}; + +typedef struct POLICY_CONSTRAINTS_st { + ASN1_INTEGER *requireExplicitPolicy; + ASN1_INTEGER *inhibitPolicyMapping; +} POLICY_CONSTRAINTS; + +/* Proxy certificate structures, see RFC 3820 */ +typedef struct PROXY_POLICY_st { + ASN1_OBJECT *policyLanguage; + ASN1_OCTET_STRING *policy; +} PROXY_POLICY; + +typedef struct PROXY_CERT_INFO_EXTENSION_st { + ASN1_INTEGER *pcPathLengthConstraint; + PROXY_POLICY *proxyPolicy; +} PROXY_CERT_INFO_EXTENSION; + +DECLARE_ASN1_FUNCTIONS(PROXY_POLICY) +DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION) + +struct ISSUING_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + int onlyuser; + int onlyCA; + ASN1_BIT_STRING *onlysomereasons; + int indirectCRL; + int onlyattr; +}; + +/* Values in idp_flags field */ +/* IDP present */ +#define IDP_PRESENT 0x1 +/* IDP values inconsistent */ +#define IDP_INVALID 0x2 +/* onlyuser true */ +#define IDP_ONLYUSER 0x4 +/* onlyCA true */ +#define IDP_ONLYCA 0x8 +/* onlyattr true */ +#define IDP_ONLYATTR 0x10 +/* indirectCRL true */ +#define IDP_INDIRECT 0x20 +/* onlysomereasons present */ +#define IDP_REASONS 0x40 + +#define X509V3_conf_err(val) ERR_add_error_data(6, \ + "section:", (val)->section, \ + ",name:", (val)->name, ",value:", (val)->value) + +#define X509V3_set_ctx_test(ctx) \ + X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, X509V3_CTX_TEST) +#define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL; + +#define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \ + 0, 0, 0, 0, \ + 0, 0, \ + (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ + (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ + NULL, NULL, \ + table } + +#define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \ + 0, 0, 0, 0, \ + (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ + 0, 0, 0, 0, \ + NULL } + +#define EXT_UTF8STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_UTF8STRING), \ + 0, 0, 0, 0, \ + (X509V3_EXT_I2S)i2s_ASN1_UTF8STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_UTF8STRING, \ + 0, 0, 0, 0, \ + NULL } + +/* clang-format off */ +# define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +/* clang-format on */ + +/* X509_PURPOSE stuff */ + +#define EXFLAG_BCONS 0x1 +#define EXFLAG_KUSAGE 0x2 +#define EXFLAG_XKUSAGE 0x4 +#define EXFLAG_NSCERT 0x8 + +#define EXFLAG_CA 0x10 +#define EXFLAG_SI 0x20 /* self-issued, maybe not self-signed */ +#define EXFLAG_V1 0x40 +#define EXFLAG_INVALID 0x80 +/* EXFLAG_SET is set to indicate that some values have been precomputed */ +#define EXFLAG_SET 0x100 +#define EXFLAG_CRITICAL 0x200 +#define EXFLAG_PROXY 0x400 + +#define EXFLAG_INVALID_POLICY 0x800 +#define EXFLAG_FRESHEST 0x1000 +#define EXFLAG_SS 0x2000 /* cert is apparently self-signed */ + +#define EXFLAG_BCONS_CRITICAL 0x10000 +#define EXFLAG_AKID_CRITICAL 0x20000 +#define EXFLAG_SKID_CRITICAL 0x40000 +#define EXFLAG_SAN_CRITICAL 0x80000 +#define EXFLAG_NO_FINGERPRINT 0x100000 + +/* https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3 */ +#define KU_DIGITAL_SIGNATURE X509v3_KU_DIGITAL_SIGNATURE +#define KU_NON_REPUDIATION X509v3_KU_NON_REPUDIATION +#define KU_KEY_ENCIPHERMENT X509v3_KU_KEY_ENCIPHERMENT +#define KU_DATA_ENCIPHERMENT X509v3_KU_DATA_ENCIPHERMENT +#define KU_KEY_AGREEMENT X509v3_KU_KEY_AGREEMENT +#define KU_KEY_CERT_SIGN X509v3_KU_KEY_CERT_SIGN +#define KU_CRL_SIGN X509v3_KU_CRL_SIGN +#define KU_ENCIPHER_ONLY X509v3_KU_ENCIPHER_ONLY +#define KU_DECIPHER_ONLY X509v3_KU_DECIPHER_ONLY + +#define NS_SSL_CLIENT 0x80 +#define NS_SSL_SERVER 0x40 +#define NS_SMIME 0x20 +#define NS_OBJSIGN 0x10 +#define NS_SSL_CA 0x04 +#define NS_SMIME_CA 0x02 +#define NS_OBJSIGN_CA 0x01 +#define NS_ANY_CA (NS_SSL_CA | NS_SMIME_CA | NS_OBJSIGN_CA) + +#define XKU_SSL_SERVER 0x1 +#define XKU_SSL_CLIENT 0x2 +#define XKU_SMIME 0x4 +#define XKU_CODE_SIGN 0x8 +#define XKU_SGC 0x10 /* Netscape or MS Server-Gated Crypto */ +#define XKU_OCSP_SIGN 0x20 +#define XKU_TIMESTAMP 0x40 +#define XKU_DVCS 0x80 +#define XKU_ANYEKU 0x100 + +#define X509_PURPOSE_DYNAMIC 0x1 +#define X509_PURPOSE_DYNAMIC_NAME 0x2 + +typedef struct x509_purpose_st { + int purpose; + int trust; /* Default trust ID */ + int flags; + int (*check_purpose)(const struct x509_purpose_st *, const X509 *, int); + char *name; + char *sname; + void *usr_data; +} X509_PURPOSE; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) +#define sk_X509_PURPOSE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_value(sk, idx) ((X509_PURPOSE *)OPENSSL_sk_value(ossl_check_const_X509_PURPOSE_sk_type(sk), (idx))) +#define sk_X509_PURPOSE_new(cmp) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new(ossl_check_X509_PURPOSE_compfunc_type(cmp))) +#define sk_X509_PURPOSE_new_null() ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_null()) +#define sk_X509_PURPOSE_new_reserve(cmp, n) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_reserve(ossl_check_X509_PURPOSE_compfunc_type(cmp), (n))) +#define sk_X509_PURPOSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_PURPOSE_sk_type(sk), (n)) +#define sk_X509_PURPOSE_free(sk) OPENSSL_sk_free(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_delete(sk, i) ((X509_PURPOSE *)OPENSSL_sk_delete(ossl_check_X509_PURPOSE_sk_type(sk), (i))) +#define sk_X509_PURPOSE_delete_ptr(sk, ptr) ((X509_PURPOSE *)OPENSSL_sk_delete_ptr(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))) +#define sk_X509_PURPOSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_pop(sk) ((X509_PURPOSE *)OPENSSL_sk_pop(ossl_check_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_shift(sk) ((X509_PURPOSE *)OPENSSL_sk_shift(ossl_check_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_PURPOSE_sk_type(sk),ossl_check_X509_PURPOSE_freefunc_type(freefunc)) +#define sk_X509_PURPOSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), (idx)) +#define sk_X509_PURPOSE_set(sk, idx, ptr) ((X509_PURPOSE *)OPENSSL_sk_set(ossl_check_X509_PURPOSE_sk_type(sk), (idx), ossl_check_X509_PURPOSE_type(ptr))) +#define sk_X509_PURPOSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), pnum) +#define sk_X509_PURPOSE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_dup(sk) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_dup(ossl_check_const_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_copyfunc_type(copyfunc), ossl_check_X509_PURPOSE_freefunc_type(freefunc))) +#define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) + +/* clang-format on */ + +#define X509_PURPOSE_DEFAULT_ANY 0 +#define X509_PURPOSE_SSL_CLIENT 1 +#define X509_PURPOSE_SSL_SERVER 2 +#define X509_PURPOSE_NS_SSL_SERVER 3 +#define X509_PURPOSE_SMIME_SIGN 4 +#define X509_PURPOSE_SMIME_ENCRYPT 5 +#define X509_PURPOSE_CRL_SIGN 6 +#define X509_PURPOSE_ANY 7 +#define X509_PURPOSE_OCSP_HELPER 8 +#define X509_PURPOSE_TIMESTAMP_SIGN 9 +#define X509_PURPOSE_CODE_SIGN 10 + +#define X509_PURPOSE_MIN 1 +#define X509_PURPOSE_MAX 10 + +/* Flags for X509V3_EXT_print() */ + +#define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) +/* Return error for unknown extensions */ +#define X509V3_EXT_DEFAULT 0 +/* Print error for unknown extensions */ +#define X509V3_EXT_ERROR_UNKNOWN (1L << 16) +/* ASN1 parse unknown extensions */ +#define X509V3_EXT_PARSE_UNKNOWN (2L << 16) +/* BIO_dump unknown extensions */ +#define X509V3_EXT_DUMP_UNKNOWN (3L << 16) + +/* Flags for X509V3_add1_i2d */ + +#define X509V3_ADD_OP_MASK 0xfL +#define X509V3_ADD_DEFAULT 0L +#define X509V3_ADD_APPEND 1L +#define X509V3_ADD_REPLACE 2L +#define X509V3_ADD_REPLACE_EXISTING 3L +#define X509V3_ADD_KEEP_EXISTING 4L +#define X509V3_ADD_DELETE 5L +#define X509V3_ADD_SILENT 0x10 + +DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) +DECLARE_ASN1_FUNCTIONS(OSSL_BASIC_ATTR_CONSTRAINTS) + +DECLARE_ASN1_FUNCTIONS(SXNET) +DECLARE_ASN1_FUNCTIONS(SXNETID) + +DECLARE_ASN1_FUNCTIONS(ISSUER_SIGN_TOOL) + +int SXNET_add_id_asc(SXNET **psx, const char *zone, const char *user, int userlen); +int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, const char *user, + int userlen); +int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, const char *user, + int userlen); + +ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, const char *zone); +ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone); +ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone); + +DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID) + +DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD) + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAME) +DECLARE_ASN1_DUP_FUNCTION(GENERAL_NAME) +int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b); + +ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, + STACK_OF(CONF_VALUE) *nval); +STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + ASN1_BIT_STRING *bits, + STACK_OF(CONF_VALUE) *extlist); +char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); +ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); +char *i2s_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, ASN1_UTF8STRING *utf8); +ASN1_UTF8STRING *s2i_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, + GENERAL_NAME *gen, + STACK_OF(CONF_VALUE) *ret); +int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen); + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES) + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, + GENERAL_NAMES *gen, + STACK_OF(CONF_VALUE) *extlist); +GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); + +DECLARE_ASN1_FUNCTIONS(OTHERNAME) +DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) +int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b); +void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value); +void *GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype); +int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, + ASN1_OBJECT *oid, ASN1_TYPE *value); +int GENERAL_NAME_get0_otherName(const GENERAL_NAME *gen, + ASN1_OBJECT **poid, ASN1_TYPE **pvalue); + +char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + const ASN1_OCTET_STRING *ia5); +ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) +int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TLS_FEATURE) + +DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) +DECLARE_ASN1_FUNCTIONS(POLICYINFO) +DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO) +DECLARE_ASN1_FUNCTIONS(USERNOTICE) +DECLARE_ASN1_FUNCTIONS(NOTICEREF) + +DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) +DECLARE_ASN1_FUNCTIONS(DIST_POINT) +DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) +DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT) + +int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, const X509_NAME *iname); + +int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc); +int NAME_CONSTRAINTS_check_CN(X509 *x, NAME_CONSTRAINTS *nc); + +DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) +DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) + +DECLARE_ASN1_ITEM(POLICY_MAPPING) +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) +DECLARE_ASN1_ITEM(POLICY_MAPPINGS) + +DECLARE_ASN1_ITEM(GENERAL_SUBTREE) +DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE) + +DECLARE_ASN1_ITEM(NAME_CONSTRAINTS) +DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS) + +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS) +DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS) + +GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, int gen_type, + const char *value, int is_nc); + +#ifdef OPENSSL_CONF_H +GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf); +GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf, + int is_nc); + +void X509V3_conf_free(CONF_VALUE *val); + +X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, const char *name, + const char *value); +int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, const char *section, + STACK_OF(X509_EXTENSION) **sk); +int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509 *cert); +int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_REQ *req); +int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_CRL *crl); + +X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, + X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *name, const char *value); +int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509 *cert); +int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_REQ *req); +int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_CRL *crl); + +int X509V3_add_value_bool_nf(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool); +int X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint); +void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); +void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash); +#endif + +char *X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section); +STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section); +void X509V3_string_free(X509V3_CTX *ctx, char *str); +void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section); +void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, + X509_REQ *req, X509_CRL *crl, int flags); +/* For API backward compatibility, this is separate from X509V3_set_ctx(): */ +int X509V3_set_issuer_pkey(X509V3_CTX *ctx, EVP_PKEY *pkey); + +int X509V3_add_value(const char *name, const char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_uchar(const char *name, const unsigned char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_bool(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint, + STACK_OF(CONF_VALUE) **extlist); +char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint); +ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value); +char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint); +char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, + const ASN1_ENUMERATED *aint); +int X509V3_EXT_add(X509V3_EXT_METHOD *ext); +int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist); +int X509V3_EXT_add_alias(int nid_to, int nid_from); +void X509V3_EXT_cleanup(void); + +const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); +const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); +int X509V3_add_standard_extensions(void); +STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line); +void *X509V3_EXT_d2i(X509_EXTENSION *ext); +void *X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, + int *idx); + +X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); +int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, + int crit, unsigned long flags); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* The new declarations are in crypto.h, but the old ones were here. */ +#define hex_to_string OPENSSL_buf2hexstr +#define string_to_hex OPENSSL_hexstr2buf +#endif + +void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, + int ml); +int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, + int indent); +#ifndef OPENSSL_NO_STDIO +int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); +#endif +int X509V3_extensions_print(BIO *out, const char *title, + const STACK_OF(X509_EXTENSION) *exts, + unsigned long flag, int indent); + +int X509_check_ca(X509 *x); +int X509_check_purpose(X509 *x, int id, int ca); +int X509_supported_extension(X509_EXTENSION *ex); +int X509_check_issued(X509 *issuer, X509 *subject); +int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid); +void X509_set_proxy_flag(X509 *x); +void X509_set_proxy_pathlen(X509 *x, long l); +long X509_get_proxy_pathlen(X509 *x); + +uint32_t X509_get_extension_flags(X509 *x); +uint32_t X509_get_key_usage(X509 *x); +uint32_t X509_get_extended_key_usage(X509 *x); +const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x); +const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x); +const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); +const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); + +int X509_PURPOSE_get_count(void); +int X509_PURPOSE_get_unused_id(OSSL_LIB_CTX *libctx); +int X509_PURPOSE_get_by_sname(const char *sname); +int X509_PURPOSE_get_by_id(int id); +int X509_PURPOSE_add(int id, int trust, int flags, + int (*ck)(const X509_PURPOSE *, const X509 *, int), + const char *name, const char *sname, void *arg); +void X509_PURPOSE_cleanup(void); + +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_id(const X509_PURPOSE *); +char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); +char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); +int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); +int X509_PURPOSE_set(int *p, int purpose); + +STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); +STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); +void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); +STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); + +/* Flags for X509_check_* functions */ + +/* + * Always check subject name for host match even if subject alt names present + */ +#define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1 +/* Disable wildcard matching for dnsName fields and common name. */ +#define X509_CHECK_FLAG_NO_WILDCARDS 0x2 +/* Wildcards must not match a partial label. */ +#define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4 +/* Allow (non-partial) wildcards to match multiple labels. */ +#define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8 +/* Constraint verifier subdomain patterns to match a single labels. */ +#define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10 +/* Never check the subject CN */ +#define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 0x20 +/* + * Match reference identifiers starting with "." to any sub-domain. + * This is a non-public flag, turned on implicitly when the subject + * reference identity is a DNS name. + */ +#define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000 + +int X509_check_host(X509 *x, const char *chk, size_t chklen, + unsigned int flags, char **peername); +int X509_check_email(X509 *x, const char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags); + +ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc); +ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc); +int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk, + unsigned long chtype); + +void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent); +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_POLICY_NODE, X509_POLICY_NODE, X509_POLICY_NODE) +#define sk_X509_POLICY_NODE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_value(sk, idx) ((X509_POLICY_NODE *)OPENSSL_sk_value(ossl_check_const_X509_POLICY_NODE_sk_type(sk), (idx))) +#define sk_X509_POLICY_NODE_new(cmp) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new(ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) +#define sk_X509_POLICY_NODE_new_null() ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_null()) +#define sk_X509_POLICY_NODE_new_reserve(cmp, n) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_reserve(ossl_check_X509_POLICY_NODE_compfunc_type(cmp), (n))) +#define sk_X509_POLICY_NODE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_POLICY_NODE_sk_type(sk), (n)) +#define sk_X509_POLICY_NODE_free(sk) OPENSSL_sk_free(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_delete(sk, i) ((X509_POLICY_NODE *)OPENSSL_sk_delete(ossl_check_X509_POLICY_NODE_sk_type(sk), (i))) +#define sk_X509_POLICY_NODE_delete_ptr(sk, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_delete_ptr(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))) +#define sk_X509_POLICY_NODE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_pop(sk) ((X509_POLICY_NODE *)OPENSSL_sk_pop(ossl_check_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_shift(sk) ((X509_POLICY_NODE *)OPENSSL_sk_shift(ossl_check_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_POLICY_NODE_sk_type(sk),ossl_check_X509_POLICY_NODE_freefunc_type(freefunc)) +#define sk_X509_POLICY_NODE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), (idx)) +#define sk_X509_POLICY_NODE_set(sk, idx, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_set(ossl_check_X509_POLICY_NODE_sk_type(sk), (idx), ossl_check_X509_POLICY_NODE_type(ptr))) +#define sk_X509_POLICY_NODE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), pnum) +#define sk_X509_POLICY_NODE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_dup(sk) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_dup(ossl_check_const_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_copyfunc_type(copyfunc), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc))) +#define sk_X509_POLICY_NODE_set_cmp_func(sk, cmp) ((sk_X509_POLICY_NODE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) + +/* clang-format on */ + +#ifndef OPENSSL_NO_RFC3779 +typedef struct ASRange_st { + ASN1_INTEGER *min, *max; +} ASRange; + +#define ASIdOrRange_id 0 +#define ASIdOrRange_range 1 + +typedef struct ASIdOrRange_st { + int type; + union { + ASN1_INTEGER *id; + ASRange *range; + } u; +} ASIdOrRange; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASIdOrRange, ASIdOrRange, ASIdOrRange) +#define sk_ASIdOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_value(sk, idx) ((ASIdOrRange *)OPENSSL_sk_value(ossl_check_const_ASIdOrRange_sk_type(sk), (idx))) +#define sk_ASIdOrRange_new(cmp) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new(ossl_check_ASIdOrRange_compfunc_type(cmp))) +#define sk_ASIdOrRange_new_null() ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_null()) +#define sk_ASIdOrRange_new_reserve(cmp, n) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_reserve(ossl_check_ASIdOrRange_compfunc_type(cmp), (n))) +#define sk_ASIdOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASIdOrRange_sk_type(sk), (n)) +#define sk_ASIdOrRange_free(sk) OPENSSL_sk_free(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_delete(sk, i) ((ASIdOrRange *)OPENSSL_sk_delete(ossl_check_ASIdOrRange_sk_type(sk), (i))) +#define sk_ASIdOrRange_delete_ptr(sk, ptr) ((ASIdOrRange *)OPENSSL_sk_delete_ptr(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))) +#define sk_ASIdOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_pop(sk) ((ASIdOrRange *)OPENSSL_sk_pop(ossl_check_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_shift(sk) ((ASIdOrRange *)OPENSSL_sk_shift(ossl_check_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASIdOrRange_sk_type(sk),ossl_check_ASIdOrRange_freefunc_type(freefunc)) +#define sk_ASIdOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), (idx)) +#define sk_ASIdOrRange_set(sk, idx, ptr) ((ASIdOrRange *)OPENSSL_sk_set(ossl_check_ASIdOrRange_sk_type(sk), (idx), ossl_check_ASIdOrRange_type(ptr))) +#define sk_ASIdOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), pnum) +#define sk_ASIdOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_dup(sk) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_dup(ossl_check_const_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_copyfunc_type(copyfunc), ossl_check_ASIdOrRange_freefunc_type(freefunc))) +#define sk_ASIdOrRange_set_cmp_func(sk, cmp) ((sk_ASIdOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(ASIdOrRange) ASIdOrRanges; + +#define ASIdentifierChoice_inherit 0 +#define ASIdentifierChoice_asIdsOrRanges 1 + +typedef struct ASIdentifierChoice_st { + int type; + union { + ASN1_NULL *inherit; + ASIdOrRanges *asIdsOrRanges; + } u; +} ASIdentifierChoice; + +typedef struct ASIdentifiers_st { + ASIdentifierChoice *asnum, *rdi; +} ASIdentifiers; + +DECLARE_ASN1_FUNCTIONS(ASRange) +DECLARE_ASN1_FUNCTIONS(ASIdOrRange) +DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice) +DECLARE_ASN1_FUNCTIONS(ASIdentifiers) + +typedef struct IPAddressRange_st { + ASN1_BIT_STRING *min, *max; +} IPAddressRange; + +#define IPAddressOrRange_addressPrefix 0 +#define IPAddressOrRange_addressRange 1 + +typedef struct IPAddressOrRange_st { + int type; + union { + ASN1_BIT_STRING *addressPrefix; + IPAddressRange *addressRange; + } u; +} IPAddressOrRange; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(IPAddressOrRange, IPAddressOrRange, IPAddressOrRange) +#define sk_IPAddressOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_value(sk, idx) ((IPAddressOrRange *)OPENSSL_sk_value(ossl_check_const_IPAddressOrRange_sk_type(sk), (idx))) +#define sk_IPAddressOrRange_new(cmp) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new(ossl_check_IPAddressOrRange_compfunc_type(cmp))) +#define sk_IPAddressOrRange_new_null() ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_null()) +#define sk_IPAddressOrRange_new_reserve(cmp, n) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressOrRange_compfunc_type(cmp), (n))) +#define sk_IPAddressOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressOrRange_sk_type(sk), (n)) +#define sk_IPAddressOrRange_free(sk) OPENSSL_sk_free(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_delete(sk, i) ((IPAddressOrRange *)OPENSSL_sk_delete(ossl_check_IPAddressOrRange_sk_type(sk), (i))) +#define sk_IPAddressOrRange_delete_ptr(sk, ptr) ((IPAddressOrRange *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))) +#define sk_IPAddressOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_pop(sk) ((IPAddressOrRange *)OPENSSL_sk_pop(ossl_check_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_shift(sk) ((IPAddressOrRange *)OPENSSL_sk_shift(ossl_check_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressOrRange_sk_type(sk),ossl_check_IPAddressOrRange_freefunc_type(freefunc)) +#define sk_IPAddressOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), (idx)) +#define sk_IPAddressOrRange_set(sk, idx, ptr) ((IPAddressOrRange *)OPENSSL_sk_set(ossl_check_IPAddressOrRange_sk_type(sk), (idx), ossl_check_IPAddressOrRange_type(ptr))) +#define sk_IPAddressOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), pnum) +#define sk_IPAddressOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_dup(sk) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_dup(ossl_check_const_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_copyfunc_type(copyfunc), ossl_check_IPAddressOrRange_freefunc_type(freefunc))) +#define sk_IPAddressOrRange_set_cmp_func(sk, cmp) ((sk_IPAddressOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; + +#define IPAddressChoice_inherit 0 +#define IPAddressChoice_addressesOrRanges 1 + +typedef struct IPAddressChoice_st { + int type; + union { + ASN1_NULL *inherit; + IPAddressOrRanges *addressesOrRanges; + } u; +} IPAddressChoice; + +typedef struct IPAddressFamily_st { + ASN1_OCTET_STRING *addressFamily; + IPAddressChoice *ipAddressChoice; +} IPAddressFamily; + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(IPAddressFamily, IPAddressFamily, IPAddressFamily) +#define sk_IPAddressFamily_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_value(sk, idx) ((IPAddressFamily *)OPENSSL_sk_value(ossl_check_const_IPAddressFamily_sk_type(sk), (idx))) +#define sk_IPAddressFamily_new(cmp) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new(ossl_check_IPAddressFamily_compfunc_type(cmp))) +#define sk_IPAddressFamily_new_null() ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_null()) +#define sk_IPAddressFamily_new_reserve(cmp, n) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressFamily_compfunc_type(cmp), (n))) +#define sk_IPAddressFamily_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressFamily_sk_type(sk), (n)) +#define sk_IPAddressFamily_free(sk) OPENSSL_sk_free(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_delete(sk, i) ((IPAddressFamily *)OPENSSL_sk_delete(ossl_check_IPAddressFamily_sk_type(sk), (i))) +#define sk_IPAddressFamily_delete_ptr(sk, ptr) ((IPAddressFamily *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))) +#define sk_IPAddressFamily_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_pop(sk) ((IPAddressFamily *)OPENSSL_sk_pop(ossl_check_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_shift(sk) ((IPAddressFamily *)OPENSSL_sk_shift(ossl_check_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressFamily_sk_type(sk),ossl_check_IPAddressFamily_freefunc_type(freefunc)) +#define sk_IPAddressFamily_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), (idx)) +#define sk_IPAddressFamily_set(sk, idx, ptr) ((IPAddressFamily *)OPENSSL_sk_set(ossl_check_IPAddressFamily_sk_type(sk), (idx), ossl_check_IPAddressFamily_type(ptr))) +#define sk_IPAddressFamily_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), pnum) +#define sk_IPAddressFamily_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_dup(sk) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_dup(ossl_check_const_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_copyfunc_type(copyfunc), ossl_check_IPAddressFamily_freefunc_type(freefunc))) +#define sk_IPAddressFamily_set_cmp_func(sk, cmp) ((sk_IPAddressFamily_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(IPAddressFamily) IPAddrBlocks; + +DECLARE_ASN1_FUNCTIONS(IPAddressRange) +DECLARE_ASN1_FUNCTIONS(IPAddressOrRange) +DECLARE_ASN1_FUNCTIONS(IPAddressChoice) +DECLARE_ASN1_FUNCTIONS(IPAddressFamily) + +/* + * API tag for elements of the ASIdentifer SEQUENCE. + */ +#define V3_ASID_ASNUM 0 +#define V3_ASID_RDI 1 + +/* + * AFI values, assigned by IANA. It'd be nice to make the AFI + * handling code totally generic, but there are too many little things + * that would need to be defined for other address families for it to + * be worth the trouble. + */ +#define IANA_AFI_IPV4 1 +#define IANA_AFI_IPV6 2 + +/* + * Utilities to construct and extract values from RFC3779 extensions, + * since some of the encodings (particularly for IP address prefixes + * and ranges) are a bit tedious to work with directly. + */ +int X509v3_asid_add_inherit(ASIdentifiers *asid, int which); +int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which, + ASN1_INTEGER *min, ASN1_INTEGER *max); +int X509v3_addr_add_inherit(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi); +int X509v3_addr_add_prefix(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *a, const int prefixlen); +int X509v3_addr_add_range(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *min, unsigned char *max); +unsigned X509v3_addr_get_afi(const IPAddressFamily *f); +int X509v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi, + unsigned char *min, unsigned char *max, + const int length); + +/* + * Canonical forms. + */ +int X509v3_asid_is_canonical(ASIdentifiers *asid); +int X509v3_addr_is_canonical(IPAddrBlocks *addr); +int X509v3_asid_canonize(ASIdentifiers *asid); +int X509v3_addr_canonize(IPAddrBlocks *addr); + +/* + * Tests for inheritance and containment. + */ +int X509v3_asid_inherits(ASIdentifiers *asid); +int X509v3_addr_inherits(IPAddrBlocks *addr); +int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b); +int X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b); + +/* + * Check whether RFC 3779 extensions nest properly in chains. + */ +int X509v3_asid_validate_path(X509_STORE_CTX *); +int X509v3_addr_validate_path(X509_STORE_CTX *); +int X509v3_asid_validate_resource_set(STACK_OF(X509) *chain, + ASIdentifiers *ext, + int allow_inheritance); +int X509v3_addr_validate_resource_set(STACK_OF(X509) *chain, + IPAddrBlocks *ext, int allow_inheritance); + +#endif /* OPENSSL_NO_RFC3779 */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING, ASN1_STRING, ASN1_STRING) +#define sk_ASN1_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_value(sk, idx) ((ASN1_STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_sk_type(sk), (idx))) +#define sk_ASN1_STRING_new(cmp) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_compfunc_type(cmp))) +#define sk_ASN1_STRING_new_null() ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_compfunc_type(cmp), (n))) +#define sk_ASN1_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_sk_type(sk), (n)) +#define sk_ASN1_STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_delete(sk, i) ((ASN1_STRING *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_sk_type(sk), (i))) +#define sk_ASN1_STRING_delete_ptr(sk, ptr) ((ASN1_STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))) +#define sk_ASN1_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_pop(sk) ((ASN1_STRING *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_shift(sk) ((ASN1_STRING *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_sk_type(sk),ossl_check_ASN1_STRING_freefunc_type(freefunc)) +#define sk_ASN1_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), (idx)) +#define sk_ASN1_STRING_set(sk, idx, ptr) ((ASN1_STRING *)OPENSSL_sk_set(ossl_check_ASN1_STRING_sk_type(sk), (idx), ossl_check_ASN1_STRING_type(ptr))) +#define sk_ASN1_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), pnum) +#define sk_ASN1_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_dup(sk) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_freefunc_type(freefunc))) +#define sk_ASN1_STRING_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_compfunc_type(cmp))) + +/* clang-format on */ + +/* + * Admission Syntax + */ +typedef struct NamingAuthority_st NAMING_AUTHORITY; +typedef struct ProfessionInfo_st PROFESSION_INFO; +typedef struct Admissions_st ADMISSIONS; +typedef struct AdmissionSyntax_st ADMISSION_SYNTAX; +DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY) +DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO) +DECLARE_ASN1_FUNCTIONS(ADMISSIONS) +DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX) +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(PROFESSION_INFO, PROFESSION_INFO, PROFESSION_INFO) +#define sk_PROFESSION_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_value(sk, idx) ((PROFESSION_INFO *)OPENSSL_sk_value(ossl_check_const_PROFESSION_INFO_sk_type(sk), (idx))) +#define sk_PROFESSION_INFO_new(cmp) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new(ossl_check_PROFESSION_INFO_compfunc_type(cmp))) +#define sk_PROFESSION_INFO_new_null() ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_null()) +#define sk_PROFESSION_INFO_new_reserve(cmp, n) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PROFESSION_INFO_compfunc_type(cmp), (n))) +#define sk_PROFESSION_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PROFESSION_INFO_sk_type(sk), (n)) +#define sk_PROFESSION_INFO_free(sk) OPENSSL_sk_free(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_delete(sk, i) ((PROFESSION_INFO *)OPENSSL_sk_delete(ossl_check_PROFESSION_INFO_sk_type(sk), (i))) +#define sk_PROFESSION_INFO_delete_ptr(sk, ptr) ((PROFESSION_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))) +#define sk_PROFESSION_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_pop(sk) ((PROFESSION_INFO *)OPENSSL_sk_pop(ossl_check_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_shift(sk) ((PROFESSION_INFO *)OPENSSL_sk_shift(ossl_check_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PROFESSION_INFO_sk_type(sk),ossl_check_PROFESSION_INFO_freefunc_type(freefunc)) +#define sk_PROFESSION_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), (idx)) +#define sk_PROFESSION_INFO_set(sk, idx, ptr) ((PROFESSION_INFO *)OPENSSL_sk_set(ossl_check_PROFESSION_INFO_sk_type(sk), (idx), ossl_check_PROFESSION_INFO_type(ptr))) +#define sk_PROFESSION_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), pnum) +#define sk_PROFESSION_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_dup(sk) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_dup(ossl_check_const_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_copyfunc_type(copyfunc), ossl_check_PROFESSION_INFO_freefunc_type(freefunc))) +#define sk_PROFESSION_INFO_set_cmp_func(sk, cmp) ((sk_PROFESSION_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(ADMISSIONS, ADMISSIONS, ADMISSIONS) +#define sk_ADMISSIONS_num(sk) OPENSSL_sk_num(ossl_check_const_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_value(sk, idx) ((ADMISSIONS *)OPENSSL_sk_value(ossl_check_const_ADMISSIONS_sk_type(sk), (idx))) +#define sk_ADMISSIONS_new(cmp) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new(ossl_check_ADMISSIONS_compfunc_type(cmp))) +#define sk_ADMISSIONS_new_null() ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_null()) +#define sk_ADMISSIONS_new_reserve(cmp, n) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_reserve(ossl_check_ADMISSIONS_compfunc_type(cmp), (n))) +#define sk_ADMISSIONS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ADMISSIONS_sk_type(sk), (n)) +#define sk_ADMISSIONS_free(sk) OPENSSL_sk_free(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_zero(sk) OPENSSL_sk_zero(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_delete(sk, i) ((ADMISSIONS *)OPENSSL_sk_delete(ossl_check_ADMISSIONS_sk_type(sk), (i))) +#define sk_ADMISSIONS_delete_ptr(sk, ptr) ((ADMISSIONS *)OPENSSL_sk_delete_ptr(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))) +#define sk_ADMISSIONS_push(sk, ptr) OPENSSL_sk_push(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_pop(sk) ((ADMISSIONS *)OPENSSL_sk_pop(ossl_check_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_shift(sk) ((ADMISSIONS *)OPENSSL_sk_shift(ossl_check_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ADMISSIONS_sk_type(sk),ossl_check_ADMISSIONS_freefunc_type(freefunc)) +#define sk_ADMISSIONS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), (idx)) +#define sk_ADMISSIONS_set(sk, idx, ptr) ((ADMISSIONS *)OPENSSL_sk_set(ossl_check_ADMISSIONS_sk_type(sk), (idx), ossl_check_ADMISSIONS_type(ptr))) +#define sk_ADMISSIONS_find(sk, ptr) OPENSSL_sk_find(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), pnum) +#define sk_ADMISSIONS_sort(sk) OPENSSL_sk_sort(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_dup(sk) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_dup(ossl_check_const_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_deep_copy(ossl_check_const_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_copyfunc_type(copyfunc), ossl_check_ADMISSIONS_freefunc_type(freefunc))) +#define sk_ADMISSIONS_set_cmp_func(sk, cmp) ((sk_ADMISSIONS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_compfunc_type(cmp))) + +/* clang-format on */ +typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS; + +const ASN1_OBJECT *NAMING_AUTHORITY_get0_authorityId( + const NAMING_AUTHORITY *n); +const ASN1_IA5STRING *NAMING_AUTHORITY_get0_authorityURL( + const NAMING_AUTHORITY *n); +const ASN1_STRING *NAMING_AUTHORITY_get0_authorityText( + const NAMING_AUTHORITY *n); +void NAMING_AUTHORITY_set0_authorityId(NAMING_AUTHORITY *n, + ASN1_OBJECT *namingAuthorityId); +void NAMING_AUTHORITY_set0_authorityURL(NAMING_AUTHORITY *n, + ASN1_IA5STRING *namingAuthorityUrl); +void NAMING_AUTHORITY_set0_authorityText(NAMING_AUTHORITY *n, + ASN1_STRING *namingAuthorityText); + +const GENERAL_NAME *ADMISSION_SYNTAX_get0_admissionAuthority( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_admissionAuthority( + ADMISSION_SYNTAX *as, GENERAL_NAME *aa); +const STACK_OF(ADMISSIONS) *ADMISSION_SYNTAX_get0_contentsOfAdmissions( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_contentsOfAdmissions( + ADMISSION_SYNTAX *as, STACK_OF(ADMISSIONS) *a); +const GENERAL_NAME *ADMISSIONS_get0_admissionAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_admissionAuthority(ADMISSIONS *a, GENERAL_NAME *aa); +const NAMING_AUTHORITY *ADMISSIONS_get0_namingAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_namingAuthority(ADMISSIONS *a, NAMING_AUTHORITY *na); +const PROFESSION_INFOS *ADMISSIONS_get0_professionInfos(const ADMISSIONS *a); +void ADMISSIONS_set0_professionInfos(ADMISSIONS *a, PROFESSION_INFOS *pi); +const ASN1_OCTET_STRING *PROFESSION_INFO_get0_addProfessionInfo( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_addProfessionInfo( + PROFESSION_INFO *pi, ASN1_OCTET_STRING *aos); +const NAMING_AUTHORITY *PROFESSION_INFO_get0_namingAuthority( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_namingAuthority( + PROFESSION_INFO *pi, NAMING_AUTHORITY *na); +const STACK_OF(ASN1_STRING) *PROFESSION_INFO_get0_professionItems( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionItems( + PROFESSION_INFO *pi, STACK_OF(ASN1_STRING) *as); +const STACK_OF(ASN1_OBJECT) *PROFESSION_INFO_get0_professionOIDs( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionOIDs( + PROFESSION_INFO *pi, STACK_OF(ASN1_OBJECT) *po); +const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_registrationNumber( + PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); + +int OSSL_GENERAL_NAMES_print(BIO *out, GENERAL_NAMES *gens, int indent); + +typedef STACK_OF(X509_ATTRIBUTE) OSSL_ATTRIBUTES_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTES_SYNTAX) + +typedef STACK_OF(USERNOTICE) OSSL_USER_NOTICE_SYNTAX; +DECLARE_ASN1_FUNCTIONS(OSSL_USER_NOTICE_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(USERNOTICE, USERNOTICE, USERNOTICE) +#define sk_USERNOTICE_num(sk) OPENSSL_sk_num(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_value(sk, idx) ((USERNOTICE *)OPENSSL_sk_value(ossl_check_const_USERNOTICE_sk_type(sk), (idx))) +#define sk_USERNOTICE_new(cmp) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new(ossl_check_USERNOTICE_compfunc_type(cmp))) +#define sk_USERNOTICE_new_null() ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_null()) +#define sk_USERNOTICE_new_reserve(cmp, n) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_new_reserve(ossl_check_USERNOTICE_compfunc_type(cmp), (n))) +#define sk_USERNOTICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_USERNOTICE_sk_type(sk), (n)) +#define sk_USERNOTICE_free(sk) OPENSSL_sk_free(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_zero(sk) OPENSSL_sk_zero(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_delete(sk, i) ((USERNOTICE *)OPENSSL_sk_delete(ossl_check_USERNOTICE_sk_type(sk), (i))) +#define sk_USERNOTICE_delete_ptr(sk, ptr) ((USERNOTICE *)OPENSSL_sk_delete_ptr(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_pop(sk) ((USERNOTICE *)OPENSSL_sk_pop(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_shift(sk) ((USERNOTICE *)OPENSSL_sk_shift(ossl_check_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_USERNOTICE_sk_type(sk),ossl_check_USERNOTICE_freefunc_type(freefunc)) +#define sk_USERNOTICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), (idx)) +#define sk_USERNOTICE_set(sk, idx, ptr) ((USERNOTICE *)OPENSSL_sk_set(ossl_check_USERNOTICE_sk_type(sk), (idx), ossl_check_USERNOTICE_type(ptr))) +#define sk_USERNOTICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr)) +#define sk_USERNOTICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_type(ptr), pnum) +#define sk_USERNOTICE_sort(sk) OPENSSL_sk_sort(ossl_check_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_USERNOTICE_sk_type(sk)) +#define sk_USERNOTICE_dup(sk) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_dup(ossl_check_const_USERNOTICE_sk_type(sk))) +#define sk_USERNOTICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(USERNOTICE) *)OPENSSL_sk_deep_copy(ossl_check_const_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_copyfunc_type(copyfunc), ossl_check_USERNOTICE_freefunc_type(freefunc))) +#define sk_USERNOTICE_set_cmp_func(sk, cmp) ((sk_USERNOTICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_USERNOTICE_sk_type(sk), ossl_check_USERNOTICE_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct OSSL_ROLE_SPEC_CERT_ID_st { + GENERAL_NAME *roleName; + GENERAL_NAME *roleCertIssuer; + ASN1_INTEGER *roleCertSerialNumber; + GENERAL_NAMES *roleCertLocator; +} OSSL_ROLE_SPEC_CERT_ID; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID, OSSL_ROLE_SPEC_CERT_ID) +#define sk_OSSL_ROLE_SPEC_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_value(sk, idx) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_value(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new(cmp) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_null() ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ROLE_SPEC_CERT_ID_new_reserve(cmp, n) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp), (n))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (n)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete(sk, i) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (i))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_delete_ptr(sk, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_pop(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_shift(sk) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_shift(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk),ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), (idx)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set(sk, idx, ptr) ((OSSL_ROLE_SPEC_CERT_ID *)OPENSSL_sk_set(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), (idx), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_type(ptr), pnum) +#define sk_OSSL_ROLE_SPEC_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk)) +#define sk_OSSL_ROLE_SPEC_CERT_ID_dup(sk) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ROLE_SPEC_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_copyfunc_type(copyfunc), ossl_check_OSSL_ROLE_SPEC_CERT_ID_freefunc_type(freefunc))) +#define sk_OSSL_ROLE_SPEC_CERT_ID_set_cmp_func(sk, cmp) ((sk_OSSL_ROLE_SPEC_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ROLE_SPEC_CERT_ID_sk_type(sk), ossl_check_OSSL_ROLE_SPEC_CERT_ID_compfunc_type(cmp))) + +/* clang-format on */ + +typedef STACK_OF(OSSL_ROLE_SPEC_CERT_ID) OSSL_ROLE_SPEC_CERT_ID_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ROLE_SPEC_CERT_ID_SYNTAX) +typedef struct OSSL_HASH_st { + X509_ALGOR *algorithmIdentifier; + ASN1_BIT_STRING *hashValue; +} OSSL_HASH; + +typedef struct OSSL_INFO_SYNTAX_POINTER_st { + GENERAL_NAMES *name; + OSSL_HASH *hash; +} OSSL_INFO_SYNTAX_POINTER; + +#define OSSL_INFO_SYNTAX_TYPE_CONTENT 0 +#define OSSL_INFO_SYNTAX_TYPE_POINTER 1 + +typedef struct OSSL_INFO_SYNTAX_st { + int type; + union { + ASN1_STRING *content; + OSSL_INFO_SYNTAX_POINTER *pointer; + } choice; +} OSSL_INFO_SYNTAX; + +typedef struct OSSL_PRIVILEGE_POLICY_ID_st { + ASN1_OBJECT *privilegePolicy; + OSSL_INFO_SYNTAX *privPolSyntax; +} OSSL_PRIVILEGE_POLICY_ID; + +typedef struct OSSL_ATTRIBUTE_DESCRIPTOR_st { + ASN1_OBJECT *identifier; + ASN1_STRING *attributeSyntax; + ASN1_UTF8STRING *name; + ASN1_UTF8STRING *description; + OSSL_PRIVILEGE_POLICY_ID *dominationRule; +} OSSL_ATTRIBUTE_DESCRIPTOR; + +DECLARE_ASN1_FUNCTIONS(OSSL_HASH) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX) +DECLARE_ASN1_FUNCTIONS(OSSL_INFO_SYNTAX_POINTER) +DECLARE_ASN1_FUNCTIONS(OSSL_PRIVILEGE_POLICY_ID) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_DESCRIPTOR) + +typedef struct OSSL_TIME_SPEC_ABSOLUTE_st { + ASN1_GENERALIZEDTIME *startTime; + ASN1_GENERALIZEDTIME *endTime; +} OSSL_TIME_SPEC_ABSOLUTE; + +typedef struct OSSL_DAY_TIME_st { + ASN1_INTEGER *hour; + ASN1_INTEGER *minute; + ASN1_INTEGER *second; +} OSSL_DAY_TIME; + +typedef struct OSSL_DAY_TIME_BAND_st { + OSSL_DAY_TIME *startDayTime; + OSSL_DAY_TIME *endDayTime; +} OSSL_DAY_TIME_BAND; + +#define OSSL_NAMED_DAY_TYPE_INT 0 +#define OSSL_NAMED_DAY_TYPE_BIT 1 +#define OSSL_NAMED_DAY_INT_SUN 1 +#define OSSL_NAMED_DAY_INT_MON 2 +#define OSSL_NAMED_DAY_INT_TUE 3 +#define OSSL_NAMED_DAY_INT_WED 4 +#define OSSL_NAMED_DAY_INT_THU 5 +#define OSSL_NAMED_DAY_INT_FRI 6 +#define OSSL_NAMED_DAY_INT_SAT 7 +#define OSSL_NAMED_DAY_BIT_SUN 0 +#define OSSL_NAMED_DAY_BIT_MON 1 +#define OSSL_NAMED_DAY_BIT_TUE 2 +#define OSSL_NAMED_DAY_BIT_WED 3 +#define OSSL_NAMED_DAY_BIT_THU 4 +#define OSSL_NAMED_DAY_BIT_FRI 5 +#define OSSL_NAMED_DAY_BIT_SAT 6 + +typedef struct OSSL_NAMED_DAY_st { + int type; + union { + ASN1_INTEGER *intNamedDays; + ASN1_BIT_STRING *bitNamedDays; + } choice; +} OSSL_NAMED_DAY; + +#define OSSL_TIME_SPEC_X_DAY_OF_FIRST 0 +#define OSSL_TIME_SPEC_X_DAY_OF_SECOND 1 +#define OSSL_TIME_SPEC_X_DAY_OF_THIRD 2 +#define OSSL_TIME_SPEC_X_DAY_OF_FOURTH 3 +#define OSSL_TIME_SPEC_X_DAY_OF_FIFTH 4 + +typedef struct OSSL_TIME_SPEC_X_DAY_OF_st { + int type; + union { + OSSL_NAMED_DAY *first; + OSSL_NAMED_DAY *second; + OSSL_NAMED_DAY *third; + OSSL_NAMED_DAY *fourth; + OSSL_NAMED_DAY *fifth; + } choice; +} OSSL_TIME_SPEC_X_DAY_OF; + +#define OSSL_TIME_SPEC_DAY_TYPE_INT 0 +#define OSSL_TIME_SPEC_DAY_TYPE_BIT 1 +#define OSSL_TIME_SPEC_DAY_TYPE_DAY_OF 2 +#define OSSL_TIME_SPEC_DAY_BIT_SUN 0 +#define OSSL_TIME_SPEC_DAY_BIT_MON 1 +#define OSSL_TIME_SPEC_DAY_BIT_TUE 2 +#define OSSL_TIME_SPEC_DAY_BIT_WED 3 +#define OSSL_TIME_SPEC_DAY_BIT_THU 4 +#define OSSL_TIME_SPEC_DAY_BIT_FRI 5 +#define OSSL_TIME_SPEC_DAY_BIT_SAT 6 +#define OSSL_TIME_SPEC_DAY_INT_SUN 1 +#define OSSL_TIME_SPEC_DAY_INT_MON 2 +#define OSSL_TIME_SPEC_DAY_INT_TUE 3 +#define OSSL_TIME_SPEC_DAY_INT_WED 4 +#define OSSL_TIME_SPEC_DAY_INT_THU 5 +#define OSSL_TIME_SPEC_DAY_INT_FRI 6 +#define OSSL_TIME_SPEC_DAY_INT_SAT 7 + +typedef struct OSSL_TIME_SPEC_DAY_st { + int type; + union { + STACK_OF(ASN1_INTEGER) *intDay; + ASN1_BIT_STRING *bitDay; + OSSL_TIME_SPEC_X_DAY_OF *dayOf; + } choice; +} OSSL_TIME_SPEC_DAY; + +#define OSSL_TIME_SPEC_WEEKS_TYPE_ALL 0 +#define OSSL_TIME_SPEC_WEEKS_TYPE_INT 1 +#define OSSL_TIME_SPEC_WEEKS_TYPE_BIT 2 +#define OSSL_TIME_SPEC_BIT_WEEKS_1 0 +#define OSSL_TIME_SPEC_BIT_WEEKS_2 1 +#define OSSL_TIME_SPEC_BIT_WEEKS_3 2 +#define OSSL_TIME_SPEC_BIT_WEEKS_4 3 +#define OSSL_TIME_SPEC_BIT_WEEKS_5 4 + +typedef struct OSSL_TIME_SPEC_WEEKS_st { + int type; + union { + ASN1_NULL *allWeeks; + STACK_OF(ASN1_INTEGER) *intWeek; + ASN1_BIT_STRING *bitWeek; + } choice; +} OSSL_TIME_SPEC_WEEKS; + +#define OSSL_TIME_SPEC_MONTH_TYPE_ALL 0 +#define OSSL_TIME_SPEC_MONTH_TYPE_INT 1 +#define OSSL_TIME_SPEC_MONTH_TYPE_BIT 2 +#define OSSL_TIME_SPEC_INT_MONTH_JAN 1 +#define OSSL_TIME_SPEC_INT_MONTH_FEB 2 +#define OSSL_TIME_SPEC_INT_MONTH_MAR 3 +#define OSSL_TIME_SPEC_INT_MONTH_APR 4 +#define OSSL_TIME_SPEC_INT_MONTH_MAY 5 +#define OSSL_TIME_SPEC_INT_MONTH_JUN 6 +#define OSSL_TIME_SPEC_INT_MONTH_JUL 7 +#define OSSL_TIME_SPEC_INT_MONTH_AUG 8 +#define OSSL_TIME_SPEC_INT_MONTH_SEP 9 +#define OSSL_TIME_SPEC_INT_MONTH_OCT 10 +#define OSSL_TIME_SPEC_INT_MONTH_NOV 11 +#define OSSL_TIME_SPEC_INT_MONTH_DEC 12 +#define OSSL_TIME_SPEC_BIT_MONTH_JAN 0 +#define OSSL_TIME_SPEC_BIT_MONTH_FEB 1 +#define OSSL_TIME_SPEC_BIT_MONTH_MAR 2 +#define OSSL_TIME_SPEC_BIT_MONTH_APR 3 +#define OSSL_TIME_SPEC_BIT_MONTH_MAY 4 +#define OSSL_TIME_SPEC_BIT_MONTH_JUN 5 +#define OSSL_TIME_SPEC_BIT_MONTH_JUL 6 +#define OSSL_TIME_SPEC_BIT_MONTH_AUG 7 +#define OSSL_TIME_SPEC_BIT_MONTH_SEP 8 +#define OSSL_TIME_SPEC_BIT_MONTH_OCT 9 +#define OSSL_TIME_SPEC_BIT_MONTH_NOV 10 +#define OSSL_TIME_SPEC_BIT_MONTH_DEC 11 + +typedef struct OSSL_TIME_SPEC_MONTH_st { + int type; + union { + ASN1_NULL *allMonths; + STACK_OF(ASN1_INTEGER) *intMonth; + ASN1_BIT_STRING *bitMonth; + } choice; +} OSSL_TIME_SPEC_MONTH; + +typedef struct OSSL_TIME_PERIOD_st { + STACK_OF(OSSL_DAY_TIME_BAND) *timesOfDay; + OSSL_TIME_SPEC_DAY *days; + OSSL_TIME_SPEC_WEEKS *weeks; + OSSL_TIME_SPEC_MONTH *months; + STACK_OF(ASN1_INTEGER) *years; +} OSSL_TIME_PERIOD; + +#define OSSL_TIME_SPEC_TIME_TYPE_ABSOLUTE 0 +#define OSSL_TIME_SPEC_TIME_TYPE_PERIODIC 1 + +typedef struct OSSL_TIME_SPEC_TIME_st { + int type; + union { + OSSL_TIME_SPEC_ABSOLUTE *absolute; + STACK_OF(OSSL_TIME_PERIOD) *periodic; + } choice; +} OSSL_TIME_SPEC_TIME; + +typedef struct OSSL_TIME_SPEC_st { + OSSL_TIME_SPEC_TIME *time; + ASN1_BOOLEAN notThisTime; + ASN1_INTEGER *timeZone; +} OSSL_TIME_SPEC; + +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_DAY_TIME_BAND) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_WEEKS) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_MONTH) +DECLARE_ASN1_FUNCTIONS(OSSL_NAMED_DAY) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_X_DAY_OF) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_ABSOLUTE) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC_TIME) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_SPEC) +DECLARE_ASN1_FUNCTIONS(OSSL_TIME_PERIOD) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_TIME_PERIOD, OSSL_TIME_PERIOD, OSSL_TIME_PERIOD) +#define sk_OSSL_TIME_PERIOD_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_value(sk, idx) ((OSSL_TIME_PERIOD *)OPENSSL_sk_value(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), (idx))) +#define sk_OSSL_TIME_PERIOD_new(cmp) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) +#define sk_OSSL_TIME_PERIOD_new_null() ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_null()) +#define sk_OSSL_TIME_PERIOD_new_reserve(cmp, n) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp), (n))) +#define sk_OSSL_TIME_PERIOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (n)) +#define sk_OSSL_TIME_PERIOD_free(sk) OPENSSL_sk_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_delete(sk, i) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (i))) +#define sk_OSSL_TIME_PERIOD_delete_ptr(sk, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_pop(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_pop(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_shift(sk) ((OSSL_TIME_PERIOD *)OPENSSL_sk_shift(ossl_check_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_TIME_PERIOD_sk_type(sk),ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc)) +#define sk_OSSL_TIME_PERIOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), (idx)) +#define sk_OSSL_TIME_PERIOD_set(sk, idx, ptr) ((OSSL_TIME_PERIOD *)OPENSSL_sk_set(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), (idx), ossl_check_OSSL_TIME_PERIOD_type(ptr))) +#define sk_OSSL_TIME_PERIOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr)) +#define sk_OSSL_TIME_PERIOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_type(ptr), pnum) +#define sk_OSSL_TIME_PERIOD_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk)) +#define sk_OSSL_TIME_PERIOD_dup(sk) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_dup(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk))) +#define sk_OSSL_TIME_PERIOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_TIME_PERIOD) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_copyfunc_type(copyfunc), ossl_check_OSSL_TIME_PERIOD_freefunc_type(freefunc))) +#define sk_OSSL_TIME_PERIOD_set_cmp_func(sk, cmp) ((sk_OSSL_TIME_PERIOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_TIME_PERIOD_sk_type(sk), ossl_check_OSSL_TIME_PERIOD_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND, OSSL_DAY_TIME_BAND) +#define sk_OSSL_DAY_TIME_BAND_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_value(sk, idx) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_value(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), (idx))) +#define sk_OSSL_DAY_TIME_BAND_new(cmp) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) +#define sk_OSSL_DAY_TIME_BAND_new_null() ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_null()) +#define sk_OSSL_DAY_TIME_BAND_new_reserve(cmp, n) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp), (n))) +#define sk_OSSL_DAY_TIME_BAND_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (n)) +#define sk_OSSL_DAY_TIME_BAND_free(sk) OPENSSL_sk_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_delete(sk, i) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (i))) +#define sk_OSSL_DAY_TIME_BAND_delete_ptr(sk, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_pop(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_pop(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_shift(sk) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_shift(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk),ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc)) +#define sk_OSSL_DAY_TIME_BAND_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), (idx)) +#define sk_OSSL_DAY_TIME_BAND_set(sk, idx, ptr) ((OSSL_DAY_TIME_BAND *)OPENSSL_sk_set(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), (idx), ossl_check_OSSL_DAY_TIME_BAND_type(ptr))) +#define sk_OSSL_DAY_TIME_BAND_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr)) +#define sk_OSSL_DAY_TIME_BAND_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_type(ptr), pnum) +#define sk_OSSL_DAY_TIME_BAND_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk)) +#define sk_OSSL_DAY_TIME_BAND_dup(sk) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_dup(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk))) +#define sk_OSSL_DAY_TIME_BAND_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_DAY_TIME_BAND) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_copyfunc_type(copyfunc), ossl_check_OSSL_DAY_TIME_BAND_freefunc_type(freefunc))) +#define sk_OSSL_DAY_TIME_BAND_set_cmp_func(sk, cmp) ((sk_OSSL_DAY_TIME_BAND_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_DAY_TIME_BAND_sk_type(sk), ossl_check_OSSL_DAY_TIME_BAND_compfunc_type(cmp))) + +/* clang-format on */ + +/* Attribute Type and Value */ +typedef struct atav_st { + ASN1_OBJECT *type; + ASN1_TYPE *value; +} OSSL_ATAV; + +typedef struct ATTRIBUTE_TYPE_MAPPING_st { + ASN1_OBJECT *local; + ASN1_OBJECT *remote; +} OSSL_ATTRIBUTE_TYPE_MAPPING; + +typedef struct ATTRIBUTE_VALUE_MAPPING_st { + OSSL_ATAV *local; + OSSL_ATAV *remote; +} OSSL_ATTRIBUTE_VALUE_MAPPING; + +#define OSSL_ATTR_MAP_TYPE 0 +#define OSSL_ATTR_MAP_VALUE 1 + +typedef struct ATTRIBUTE_MAPPING_st { + int type; + union { + OSSL_ATTRIBUTE_TYPE_MAPPING *typeMappings; + OSSL_ATTRIBUTE_VALUE_MAPPING *typeValueMappings; + } choice; +} OSSL_ATTRIBUTE_MAPPING; + +typedef STACK_OF(OSSL_ATTRIBUTE_MAPPING) OSSL_ATTRIBUTE_MAPPINGS; +DECLARE_ASN1_FUNCTIONS(OSSL_ATAV) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_TYPE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_VALUE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPING) +DECLARE_ASN1_FUNCTIONS(OSSL_ATTRIBUTE_MAPPINGS) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING, OSSL_ATTRIBUTE_MAPPING) +#define sk_OSSL_ATTRIBUTE_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_value(sk, idx) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_value(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new(cmp) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_null() ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ATTRIBUTE_MAPPING_new_reserve(cmp, n) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp), (n))) +#define sk_OSSL_ATTRIBUTE_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (n)) +#define sk_OSSL_ATTRIBUTE_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete(sk, i) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (i))) +#define sk_OSSL_ATTRIBUTE_MAPPING_delete_ptr(sk, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_pop(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_shift(sk) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_shift(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk),ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc)) +#define sk_OSSL_ATTRIBUTE_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), (idx)) +#define sk_OSSL_ATTRIBUTE_MAPPING_set(sk, idx, ptr) ((OSSL_ATTRIBUTE_MAPPING *)OPENSSL_sk_set(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), (idx), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr))) +#define sk_OSSL_ATTRIBUTE_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr)) +#define sk_OSSL_ATTRIBUTE_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_type(ptr), pnum) +#define sk_OSSL_ATTRIBUTE_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk)) +#define sk_OSSL_ATTRIBUTE_MAPPING_dup(sk) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk))) +#define sk_OSSL_ATTRIBUTE_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ATTRIBUTE_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_copyfunc_type(copyfunc), ossl_check_OSSL_ATTRIBUTE_MAPPING_freefunc_type(freefunc))) +#define sk_OSSL_ATTRIBUTE_MAPPING_set_cmp_func(sk, cmp) ((sk_OSSL_ATTRIBUTE_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ATTRIBUTE_MAPPING_sk_type(sk), ossl_check_OSSL_ATTRIBUTE_MAPPING_compfunc_type(cmp))) + +/* clang-format on */ + +#define OSSL_AAA_ATTRIBUTE_TYPE 0 +#define OSSL_AAA_ATTRIBUTE_VALUES 1 + +typedef struct ALLOWED_ATTRIBUTES_CHOICE_st { + int type; + union { + ASN1_OBJECT *attributeType; + X509_ATTRIBUTE *attributeTypeandValues; + } choice; +} OSSL_ALLOWED_ATTRIBUTES_CHOICE; + +typedef struct ALLOWED_ATTRIBUTES_ITEM_st { + STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *attributes; + GENERAL_NAME *holderDomain; +} OSSL_ALLOWED_ATTRIBUTES_ITEM; + +typedef STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) OSSL_ALLOWED_ATTRIBUTES_SYNTAX; + +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_CHOICE) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_ITEM) +DECLARE_ASN1_FUNCTIONS(OSSL_ALLOWED_ATTRIBUTES_SYNTAX) + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE, OSSL_ALLOWED_ATTRIBUTES_CHOICE) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_CHOICE *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_CHOICE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_CHOICE_compfunc_type(cmp))) + +/* clang-format on */ + +/* clang-format off */ +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM, OSSL_ALLOWED_ATTRIBUTES_ITEM) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_value(sk, idx) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_value(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new(cmp) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_null() ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_null()) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_new_reserve(cmp, n) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp), (n))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (n)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_free(sk) OPENSSL_sk_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete(sk, i) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (i))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_delete_ptr(sk, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_pop(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_shift(sk) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_shift(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk),ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), (idx)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set(sk, idx, ptr) ((OSSL_ALLOWED_ATTRIBUTES_ITEM *)OPENSSL_sk_set(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), (idx), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_type(ptr), pnum) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk)) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_dup(sk) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_dup(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_ALLOWED_ATTRIBUTES_ITEM) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_copyfunc_type(copyfunc), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_freefunc_type(freefunc))) +#define sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_set_cmp_func(sk, cmp) ((sk_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_sk_type(sk), ossl_check_OSSL_ALLOWED_ATTRIBUTES_ITEM_compfunc_type(cmp))) + +/* clang-format on */ + +typedef struct AA_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + int dp_reasons; + ASN1_BOOLEAN indirectCRL; + ASN1_BOOLEAN containsUserAttributeCerts; + ASN1_BOOLEAN containsAACerts; + ASN1_BOOLEAN containsSOAPublicKeyCerts; +} OSSL_AA_DIST_POINT; + +DECLARE_ASN1_FUNCTIONS(OSSL_AA_DIST_POINT) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/progs.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/progs.h new file mode 100644 index 00000000000000..2214340fa813ac --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/include/progs.h @@ -0,0 +1,125 @@ +/* + * WARNING: do not edit! + * Generated by apps/progs.pl + * + * Copyright 1995-2026 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "function.h" + +extern int asn1parse_main(int argc, char *argv[]); +extern int ca_main(int argc, char *argv[]); +extern int ciphers_main(int argc, char *argv[]); +extern int cmp_main(int argc, char *argv[]); +extern int cms_main(int argc, char *argv[]); +extern int crl_main(int argc, char *argv[]); +extern int crl2pkcs7_main(int argc, char *argv[]); +extern int dgst_main(int argc, char *argv[]); +extern int dhparam_main(int argc, char *argv[]); +extern int dsa_main(int argc, char *argv[]); +extern int dsaparam_main(int argc, char *argv[]); +extern int ec_main(int argc, char *argv[]); +extern int ecparam_main(int argc, char *argv[]); +extern int enc_main(int argc, char *argv[]); +extern int engine_main(int argc, char *argv[]); +extern int errstr_main(int argc, char *argv[]); +extern int fipsinstall_main(int argc, char *argv[]); +extern int gendsa_main(int argc, char *argv[]); +extern int genpkey_main(int argc, char *argv[]); +extern int genrsa_main(int argc, char *argv[]); +extern int help_main(int argc, char *argv[]); +extern int info_main(int argc, char *argv[]); +extern int kdf_main(int argc, char *argv[]); +extern int list_main(int argc, char *argv[]); +extern int mac_main(int argc, char *argv[]); +extern int nseq_main(int argc, char *argv[]); +extern int ocsp_main(int argc, char *argv[]); +extern int passwd_main(int argc, char *argv[]); +extern int pkcs12_main(int argc, char *argv[]); +extern int pkcs7_main(int argc, char *argv[]); +extern int pkcs8_main(int argc, char *argv[]); +extern int pkey_main(int argc, char *argv[]); +extern int pkeyparam_main(int argc, char *argv[]); +extern int pkeyutl_main(int argc, char *argv[]); +extern int prime_main(int argc, char *argv[]); +extern int rand_main(int argc, char *argv[]); +extern int rehash_main(int argc, char *argv[]); +extern int req_main(int argc, char *argv[]); +extern int rsa_main(int argc, char *argv[]); +extern int rsautl_main(int argc, char *argv[]); +extern int s_client_main(int argc, char *argv[]); +extern int s_server_main(int argc, char *argv[]); +extern int s_time_main(int argc, char *argv[]); +extern int sess_id_main(int argc, char *argv[]); +extern int skeyutl_main(int argc, char *argv[]); +extern int smime_main(int argc, char *argv[]); +extern int speed_main(int argc, char *argv[]); +extern int spkac_main(int argc, char *argv[]); +extern int srp_main(int argc, char *argv[]); +extern int storeutl_main(int argc, char *argv[]); +extern int ts_main(int argc, char *argv[]); +extern int verify_main(int argc, char *argv[]); +extern int version_main(int argc, char *argv[]); +extern int x509_main(int argc, char *argv[]); + +extern const OPTIONS asn1parse_options[]; +extern const OPTIONS ca_options[]; +extern const OPTIONS ciphers_options[]; +extern const OPTIONS cmp_options[]; +extern const OPTIONS cms_options[]; +extern const OPTIONS crl_options[]; +extern const OPTIONS crl2pkcs7_options[]; +extern const OPTIONS dgst_options[]; +extern const OPTIONS dhparam_options[]; +extern const OPTIONS dsa_options[]; +extern const OPTIONS dsaparam_options[]; +extern const OPTIONS ec_options[]; +extern const OPTIONS ecparam_options[]; +extern const OPTIONS enc_options[]; +extern const OPTIONS engine_options[]; +extern const OPTIONS errstr_options[]; +extern const OPTIONS fipsinstall_options[]; +extern const OPTIONS gendsa_options[]; +extern const OPTIONS genpkey_options[]; +extern const OPTIONS genrsa_options[]; +extern const OPTIONS help_options[]; +extern const OPTIONS info_options[]; +extern const OPTIONS kdf_options[]; +extern const OPTIONS list_options[]; +extern const OPTIONS mac_options[]; +extern const OPTIONS nseq_options[]; +extern const OPTIONS ocsp_options[]; +extern const OPTIONS passwd_options[]; +extern const OPTIONS pkcs12_options[]; +extern const OPTIONS pkcs7_options[]; +extern const OPTIONS pkcs8_options[]; +extern const OPTIONS pkey_options[]; +extern const OPTIONS pkeyparam_options[]; +extern const OPTIONS pkeyutl_options[]; +extern const OPTIONS prime_options[]; +extern const OPTIONS rand_options[]; +extern const OPTIONS rehash_options[]; +extern const OPTIONS req_options[]; +extern const OPTIONS rsa_options[]; +extern const OPTIONS rsautl_options[]; +extern const OPTIONS s_client_options[]; +extern const OPTIONS s_server_options[]; +extern const OPTIONS s_time_options[]; +extern const OPTIONS sess_id_options[]; +extern const OPTIONS skeyutl_options[]; +extern const OPTIONS smime_options[]; +extern const OPTIONS speed_options[]; +extern const OPTIONS spkac_options[]; +extern const OPTIONS srp_options[]; +extern const OPTIONS storeutl_options[]; +extern const OPTIONS ts_options[]; +extern const OPTIONS verify_options[]; +extern const OPTIONS version_options[]; +extern const OPTIONS x509_options[]; + +extern FUNCTION functions[]; diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/openssl-cl.gypi b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/openssl-cl.gypi new file mode 100644 index 00000000000000..d09b4d13fb69e6 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/openssl-cl.gypi @@ -0,0 +1,116 @@ +{ + 'variables': { + 'openssl_defines_linux64-riscv64': [ + 'NDEBUG', + 'OPENSSL_USE_NODELETE', + 'OPENSSL_BUILDING_OPENSSL', + 'BROTLI', + 'ZLIB', + 'ZSTD', + 'AES_ASM', + 'GHASH_ASM', + 'INCLUDE_C_CHACHA20', + 'INCLUDE_C_SHA256', + 'INCLUDE_C_SHA512', + 'OPENSSL_CPUID_OBJ', + 'OPENSSL_SM3_ASM', + 'SHA256_ASM', + 'SHA512_ASM', + 'SM4_ASM', + 'OPENSSL_PIC', + ], + 'openssl_cflags_linux64-riscv64': [ + '-Wa,--noexecstack', + '-Wall -O3', + '-pthread', + '-Wall -O3', + ], + 'openssl_ex_libs_linux64-riscv64': [ + '-lm -ldl -pthread', + ], + 'openssl_cli_srcs_linux64-riscv64': [ + 'openssl/apps/lib/cmp_mock_srv.c', + 'openssl/apps/asn1parse.c', + 'openssl/apps/ca.c', + 'openssl/apps/ciphers.c', + 'openssl/apps/cmp.c', + 'openssl/apps/cms.c', + 'openssl/apps/crl.c', + 'openssl/apps/crl2pkcs7.c', + 'openssl/apps/dgst.c', + 'openssl/apps/dhparam.c', + 'openssl/apps/dsa.c', + 'openssl/apps/dsaparam.c', + 'openssl/apps/ec.c', + 'openssl/apps/ecparam.c', + 'openssl/apps/enc.c', + 'openssl/apps/engine.c', + 'openssl/apps/errstr.c', + 'openssl/apps/fipsinstall.c', + 'openssl/apps/gendsa.c', + 'openssl/apps/genpkey.c', + 'openssl/apps/genrsa.c', + 'openssl/apps/info.c', + 'openssl/apps/kdf.c', + 'openssl/apps/list.c', + 'openssl/apps/mac.c', + 'openssl/apps/nseq.c', + 'openssl/apps/ocsp.c', + 'openssl/apps/openssl.c', + 'openssl/apps/passwd.c', + 'openssl/apps/pkcs12.c', + 'openssl/apps/pkcs7.c', + 'openssl/apps/pkcs8.c', + 'openssl/apps/pkey.c', + 'openssl/apps/pkeyparam.c', + 'openssl/apps/pkeyutl.c', + 'openssl/apps/prime.c', + './config/archs/linux64-riscv64/asm_avx2/apps/progs.c', + 'openssl/apps/rand.c', + 'openssl/apps/rehash.c', + 'openssl/apps/req.c', + 'openssl/apps/rsa.c', + 'openssl/apps/rsautl.c', + 'openssl/apps/s_client.c', + 'openssl/apps/s_server.c', + 'openssl/apps/s_time.c', + 'openssl/apps/sess_id.c', + 'openssl/apps/skeyutl.c', + 'openssl/apps/smime.c', + 'openssl/apps/speed.c', + 'openssl/apps/spkac.c', + 'openssl/apps/srp.c', + 'openssl/apps/storeutl.c', + 'openssl/apps/ts.c', + 'openssl/apps/verify.c', + 'openssl/apps/version.c', + 'openssl/apps/x509.c', + 'openssl/apps/lib/app_libctx.c', + 'openssl/apps/lib/app_params.c', + 'openssl/apps/lib/app_provider.c', + 'openssl/apps/lib/app_rand.c', + 'openssl/apps/lib/app_x509.c', + 'openssl/apps/lib/apps.c', + 'openssl/apps/lib/apps_opt_printf.c', + 'openssl/apps/lib/apps_ui.c', + 'openssl/apps/lib/columns.c', + 'openssl/apps/lib/engine.c', + 'openssl/apps/lib/engine_loader.c', + 'openssl/apps/lib/fmt.c', + 'openssl/apps/lib/http_server.c', + 'openssl/apps/lib/log.c', + 'openssl/apps/lib/names.c', + 'openssl/apps/lib/opt.c', + 'openssl/apps/lib/s_cb.c', + 'openssl/apps/lib/s_socket.c', + 'openssl/apps/lib/tlssrp_depr.c', + ], + }, + 'defines': ['<@(openssl_defines_linux64-riscv64)'], + 'include_dirs': [ + './include', + ], + 'cflags' : ['<@(openssl_cflags_linux64-riscv64)'], + 'libraries': ['<@(openssl_ex_libs_linux64-riscv64)'], + 'sources': ['<@(openssl_cli_srcs_linux64-riscv64)'], +} diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/openssl-fips.gypi b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/openssl-fips.gypi new file mode 100644 index 00000000000000..35f8f523264287 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/openssl-fips.gypi @@ -0,0 +1,393 @@ +{ + 'variables': { + 'openssl_sources': [ + 'openssl/crypto/aes/aes_cbc.c', + 'openssl/crypto/aes/aes_ecb.c', + 'openssl/crypto/aes/aes_misc.c', + 'openssl/crypto/bn/bn_add.c', + 'openssl/crypto/bn/bn_asm.c', + 'openssl/crypto/bn/bn_blind.c', + 'openssl/crypto/bn/bn_const.c', + 'openssl/crypto/bn/bn_conv.c', + 'openssl/crypto/bn/bn_ctx.c', + 'openssl/crypto/bn/bn_dh.c', + 'openssl/crypto/bn/bn_div.c', + 'openssl/crypto/bn/bn_exp.c', + 'openssl/crypto/bn/bn_exp2.c', + 'openssl/crypto/bn/bn_gcd.c', + 'openssl/crypto/bn/bn_gf2m.c', + 'openssl/crypto/bn/bn_intern.c', + 'openssl/crypto/bn/bn_kron.c', + 'openssl/crypto/bn/bn_lib.c', + 'openssl/crypto/bn/bn_mod.c', + 'openssl/crypto/bn/bn_mont.c', + 'openssl/crypto/bn/bn_mpi.c', + 'openssl/crypto/bn/bn_mul.c', + 'openssl/crypto/bn/bn_nist.c', + 'openssl/crypto/bn/bn_prime.c', + 'openssl/crypto/bn/bn_rand.c', + 'openssl/crypto/bn/bn_recp.c', + 'openssl/crypto/bn/bn_rsa_fips186_4.c', + 'openssl/crypto/bn/bn_shift.c', + 'openssl/crypto/bn/bn_sqr.c', + 'openssl/crypto/bn/bn_sqrt.c', + 'openssl/crypto/bn/bn_word.c', + 'openssl/crypto/buffer/buffer.c', + 'openssl/crypto/cmac/cmac.c', + 'openssl/crypto/des/des_enc.c', + 'openssl/crypto/des/ecb3_enc.c', + 'openssl/crypto/des/fcrypt_b.c', + 'openssl/crypto/des/set_key.c', + 'openssl/crypto/dh/dh_backend.c', + 'openssl/crypto/dh/dh_check.c', + 'openssl/crypto/dh/dh_gen.c', + 'openssl/crypto/dh/dh_group_params.c', + 'openssl/crypto/dh/dh_kdf.c', + 'openssl/crypto/dh/dh_key.c', + 'openssl/crypto/dh/dh_lib.c', + 'openssl/crypto/dsa/dsa_backend.c', + 'openssl/crypto/dsa/dsa_check.c', + 'openssl/crypto/dsa/dsa_gen.c', + 'openssl/crypto/dsa/dsa_key.c', + 'openssl/crypto/dsa/dsa_lib.c', + 'openssl/crypto/dsa/dsa_ossl.c', + 'openssl/crypto/dsa/dsa_sign.c', + 'openssl/crypto/dsa/dsa_vrf.c', + 'openssl/crypto/ec/curve448/arch_32/f_impl32.c', + 'openssl/crypto/ec/curve448/arch_64/f_impl64.c', + 'openssl/crypto/ec/curve448/curve448.c', + 'openssl/crypto/ec/curve448/curve448_tables.c', + 'openssl/crypto/ec/curve448/eddsa.c', + 'openssl/crypto/ec/curve448/f_generic.c', + 'openssl/crypto/ec/curve448/scalar.c', + 'openssl/crypto/ec/curve25519.c', + 'openssl/crypto/ec/ec2_oct.c', + 'openssl/crypto/ec/ec2_smpl.c', + 'openssl/crypto/ec/ec_asn1.c', + 'openssl/crypto/ec/ec_backend.c', + 'openssl/crypto/ec/ec_check.c', + 'openssl/crypto/ec/ec_curve.c', + 'openssl/crypto/ec/ec_cvt.c', + 'openssl/crypto/ec/ec_key.c', + 'openssl/crypto/ec/ec_kmeth.c', + 'openssl/crypto/ec/ec_lib.c', + 'openssl/crypto/ec/ec_mult.c', + 'openssl/crypto/ec/ec_oct.c', + 'openssl/crypto/ec/ecdh_kdf.c', + 'openssl/crypto/ec/ecdh_ossl.c', + 'openssl/crypto/ec/ecdsa_ossl.c', + 'openssl/crypto/ec/ecdsa_sign.c', + 'openssl/crypto/ec/ecdsa_vrf.c', + 'openssl/crypto/ec/ecp_mont.c', + 'openssl/crypto/ec/ecp_nist.c', + 'openssl/crypto/ec/ecp_oct.c', + 'openssl/crypto/ec/ecp_smpl.c', + 'openssl/crypto/ec/ecx_backend.c', + 'openssl/crypto/ec/ecx_key.c', + 'openssl/crypto/evp/asymcipher.c', + 'openssl/crypto/evp/dh_support.c', + 'openssl/crypto/evp/digest.c', + 'openssl/crypto/evp/ec_support.c', + 'openssl/crypto/evp/evp_enc.c', + 'openssl/crypto/evp/evp_fetch.c', + 'openssl/crypto/evp/evp_lib.c', + 'openssl/crypto/evp/evp_rand.c', + 'openssl/crypto/evp/evp_utils.c', + 'openssl/crypto/evp/exchange.c', + 'openssl/crypto/evp/kdf_lib.c', + 'openssl/crypto/evp/kdf_meth.c', + 'openssl/crypto/evp/kem.c', + 'openssl/crypto/evp/keymgmt_lib.c', + 'openssl/crypto/evp/keymgmt_meth.c', + 'openssl/crypto/evp/mac_lib.c', + 'openssl/crypto/evp/mac_meth.c', + 'openssl/crypto/evp/p_lib.c', + 'openssl/crypto/evp/pmeth_check.c', + 'openssl/crypto/evp/pmeth_gn.c', + 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', + 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', + 'openssl/crypto/ffc/ffc_backend.c', + 'openssl/crypto/ffc/ffc_dh.c', + 'openssl/crypto/ffc/ffc_key_generate.c', + 'openssl/crypto/ffc/ffc_key_validate.c', + 'openssl/crypto/ffc/ffc_params.c', + 'openssl/crypto/ffc/ffc_params_generate.c', + 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', + 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/lhash/lhash.c', + 'openssl/crypto/asn1_dsa.c', + 'openssl/crypto/bsearch.c', + 'openssl/crypto/context.c', + 'openssl/crypto/core_algorithm.c', + 'openssl/crypto/core_fetch.c', + 'openssl/crypto/core_namemap.c', + 'openssl/crypto/cpuid.c', + 'openssl/crypto/cryptlib.c', + 'openssl/crypto/ctype.c', + 'openssl/crypto/der_writer.c', + 'openssl/crypto/ex_data.c', + 'openssl/crypto/initthread.c', + 'openssl/crypto/o_str.c', + 'openssl/crypto/packet.c', + 'openssl/crypto/param_build.c', + 'openssl/crypto/param_build_set.c', + 'openssl/crypto/params.c', + 'openssl/crypto/params_dup.c', + 'openssl/crypto/params_from_text.c', + 'openssl/crypto/provider_core.c', + 'openssl/crypto/provider_predefined.c', + 'openssl/crypto/riscvcap.c', + 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sparse_array.c', + 'openssl/crypto/threads_lib.c', + 'openssl/crypto/threads_none.c', + 'openssl/crypto/threads_pthread.c', + 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', + 'openssl/crypto/modes/cbc128.c', + 'openssl/crypto/modes/ccm128.c', + 'openssl/crypto/modes/cfb128.c', + 'openssl/crypto/modes/ctr128.c', + 'openssl/crypto/modes/gcm128.c', + 'openssl/crypto/modes/ofb128.c', + 'openssl/crypto/modes/wrap128.c', + 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', + 'openssl/crypto/property/defn_cache.c', + 'openssl/crypto/property/property.c', + 'openssl/crypto/property/property_parse.c', + 'openssl/crypto/property/property_query.c', + 'openssl/crypto/property/property_string.c', + 'openssl/crypto/rand/rand_lib.c', + 'openssl/crypto/rsa/rsa_acvp_test_params.c', + 'openssl/crypto/rsa/rsa_backend.c', + 'openssl/crypto/rsa/rsa_chk.c', + 'openssl/crypto/rsa/rsa_crpt.c', + 'openssl/crypto/rsa/rsa_gen.c', + 'openssl/crypto/rsa/rsa_lib.c', + 'openssl/crypto/rsa/rsa_mp_names.c', + 'openssl/crypto/rsa/rsa_none.c', + 'openssl/crypto/rsa/rsa_oaep.c', + 'openssl/crypto/rsa/rsa_ossl.c', + 'openssl/crypto/rsa/rsa_pk1.c', + 'openssl/crypto/rsa/rsa_pss.c', + 'openssl/crypto/rsa/rsa_schemes.c', + 'openssl/crypto/rsa/rsa_sign.c', + 'openssl/crypto/rsa/rsa_sp800_56b_check.c', + 'openssl/crypto/rsa/rsa_sp800_56b_gen.c', + 'openssl/crypto/rsa/rsa_x931.c', + 'openssl/crypto/sha/keccak1600.c', + 'openssl/crypto/sha/sha1dgst.c', + 'openssl/crypto/sha/sha256.c', + 'openssl/crypto/sha/sha3.c', + 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/sha/sha_riscv.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', + 'openssl/crypto/stack/stack.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', + 'openssl/providers/common/der/der_rsa_sig.c', + 'openssl/providers/common/bio_prov.c', + 'openssl/providers/common/capabilities.c', + 'openssl/providers/common/digest_to_nid.c', + 'openssl/providers/common/provider_seeding.c', + 'openssl/providers/common/provider_util.c', + 'openssl/providers/common/securitycheck.c', + 'openssl/providers/common/securitycheck_fips.c', + 'openssl/providers/fips/fipsindicator.c', + 'openssl/providers/fips/fipsprov.c', + 'openssl/providers/fips/self_test.c', + 'openssl/providers/fips/self_test_kats.c', + 'openssl/providers/implementations/asymciphers/rsa_enc.c', + 'openssl/providers/implementations/ciphers/cipher_aes.c', + 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c', + 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_wrp.c', + 'openssl/providers/implementations/ciphers/cipher_aes_xts.c', + 'openssl/providers/implementations/ciphers/cipher_aes_xts_fips.c', + 'openssl/providers/implementations/ciphers/cipher_aes_xts_hw.c', + 'openssl/providers/implementations/ciphers/cipher_cts.c', + 'openssl/providers/implementations/ciphers/cipher_tdes.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_hw.c', + 'openssl/providers/implementations/digests/sha2_prov.c', + 'openssl/providers/implementations/digests/sha3_prov.c', + 'openssl/providers/implementations/exchange/dh_exch.c', + 'openssl/providers/implementations/exchange/ecdh_exch.c', + 'openssl/providers/implementations/exchange/ecx_exch.c', + 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/kbkdf.c', + 'openssl/providers/implementations/kdfs/pbkdf2.c', + 'openssl/providers/implementations/kdfs/pbkdf2_fips.c', + 'openssl/providers/implementations/kdfs/sshkdf.c', + 'openssl/providers/implementations/kdfs/sskdf.c', + 'openssl/providers/implementations/kdfs/tls1_prf.c', + 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', + 'openssl/providers/implementations/kem/rsa_kem.c', + 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', + 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ec_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', + 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', + 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', + 'openssl/providers/implementations/macs/cmac_prov.c', + 'openssl/providers/implementations/macs/gmac_prov.c', + 'openssl/providers/implementations/macs/hmac_prov.c', + 'openssl/providers/implementations/macs/kmac_prov.c', + 'openssl/providers/implementations/rands/drbg.c', + 'openssl/providers/implementations/rands/drbg_ctr.c', + 'openssl/providers/implementations/rands/drbg_hash.c', + 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/fips_crng_test.c', + 'openssl/providers/implementations/rands/test_rng.c', + 'openssl/providers/implementations/signature/dsa_sig.c', + 'openssl/providers/implementations/signature/ecdsa_sig.c', + 'openssl/providers/implementations/signature/eddsa_sig.c', + 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', + 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', + 'openssl/providers/common/der/der_dsa_key.c', + 'openssl/providers/common/der/der_dsa_sig.c', + 'openssl/providers/common/der/der_ec_key.c', + 'openssl/providers/common/der/der_ec_sig.c', + 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', + 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', + 'openssl/providers/common/provider_ctx.c', + 'openssl/providers/common/provider_err.c', + 'openssl/providers/implementations/ciphers/ciphercommon.c', + 'openssl/providers/implementations/ciphers/ciphercommon_block.c', + 'openssl/providers/implementations/ciphers/ciphercommon_ccm.c', + 'openssl/providers/implementations/ciphers/ciphercommon_ccm_hw.c', + 'openssl/providers/implementations/ciphers/ciphercommon_gcm.c', + 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', + 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', + 'openssl/providers/implementations/digests/digestcommon.c', + 'openssl/ssl/record/methods/tls_pad.c', + 'openssl/providers/fips/fips_entry.c', + + ], + 'openssl_sources_linux64-riscv64': [ + './config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zkn.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvkb-zvkned.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvkned.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/chacha/chacha-riscv64-v-zbb-zvkb.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/chacha/chacha-riscv64-v-zbb.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/params_idx.c', + './config/archs/linux64-riscv64/asm_avx2/crypto/riscv64cpuid.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64-zvkb-zvbc.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64-zvkg.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S', + './config/archs/linux64-riscv64/asm_avx2/crypto/sha/sha512-riscv64-zvkb-zvknhb.S', + './config/archs/linux64-riscv64/asm_avx2/crypto/sm3/sm3-riscv64-zvksh.S', + './config/archs/linux64-riscv64/asm_avx2/crypto/sm4/sm4-riscv64-zvksed.s', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_sm2_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_digests_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_dsa_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ec_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ecx_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ml_dsa_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_rsa_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_slh_dsa_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_wrap_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/legacy.ld', + './config/archs/linux64-riscv64/asm_avx2/providers/fips.ld', + + ], + 'openssl_defines_linux64-riscv64': [ + 'NDEBUG', + 'OPENSSL_USE_NODELETE', + 'OPENSSL_BUILDING_OPENSSL', + 'BROTLI', + 'ZLIB', + 'ZSTD', + 'AES_ASM', + 'FIPS_MODULE', + 'GHASH_ASM', + 'INCLUDE_C_SHA256', + 'INCLUDE_C_SHA512', + 'OPENSSL_CPUID_OBJ', + 'SHA256_ASM', + 'SHA512_ASM', + 'SM4_ASM', + 'FIPS_MODULE', + ], + 'openssl_cflags_linux64-riscv64': [ + '-Wa,--noexecstack', + '-Wall -O3', + '-pthread', + '-Wall -O3', + ], + 'openssl_ex_libs_linux64-riscv64': [ + '-lm -ldl -pthread', + ], + 'linker_script': '<(PRODUCT_DIR)/../../deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/fips.ld' + }, + 'include_dirs': [ + '.', + './include', + './crypto', + './crypto/include/internal', + './providers/common/include', + ], + 'defines': ['<@(openssl_defines_linux64-riscv64)'], + 'cflags': ['<@(openssl_cflags_linux64-riscv64)'], + 'libraries': ['<@(openssl_ex_libs_linux64-riscv64)'], + 'ldflags': ['-Wl,--version-script=<@(linker_script)'], + 'sources': ['<@(openssl_sources)', '<@(openssl_sources_linux64-riscv64)'], + 'direct_dependent_settings': { + 'include_dirs': ['./include', '.'], + 'defines': ['<@(openssl_defines_linux64-riscv64)'], + }, +} diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/openssl.gypi b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/openssl.gypi new file mode 100644 index 00000000000000..54d04e4938e614 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/openssl.gypi @@ -0,0 +1,1196 @@ +{ + 'variables': { + 'openssl_sources': [ + 'openssl/ssl/bio_ssl.c', + 'openssl/ssl/d1_lib.c', + 'openssl/ssl/d1_msg.c', + 'openssl/ssl/d1_srtp.c', + 'openssl/ssl/methods.c', + 'openssl/ssl/pqueue.c', + 'openssl/ssl/priority_queue.c', + 'openssl/ssl/s3_enc.c', + 'openssl/ssl/s3_lib.c', + 'openssl/ssl/s3_msg.c', + 'openssl/ssl/ssl_asn1.c', + 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_cert_comp.c', + 'openssl/ssl/ssl_ciph.c', + 'openssl/ssl/ssl_conf.c', + 'openssl/ssl/ssl_err_legacy.c', + 'openssl/ssl/ssl_init.c', + 'openssl/ssl/ssl_lib.c', + 'openssl/ssl/ssl_mcnf.c', + 'openssl/ssl/ssl_rsa.c', + 'openssl/ssl/ssl_rsa_legacy.c', + 'openssl/ssl/ssl_sess.c', + 'openssl/ssl/ssl_stat.c', + 'openssl/ssl/ssl_txt.c', + 'openssl/ssl/ssl_utst.c', + 'openssl/ssl/t1_enc.c', + 'openssl/ssl/t1_lib.c', + 'openssl/ssl/t1_trce.c', + 'openssl/ssl/tls13_enc.c', + 'openssl/ssl/tls_depr.c', + 'openssl/ssl/tls_srp.c', + 'openssl/ssl/quic/cc_newreno.c', + 'openssl/ssl/quic/json_enc.c', + 'openssl/ssl/quic/qlog.c', + 'openssl/ssl/quic/qlog_event_helpers.c', + 'openssl/ssl/quic/quic_ackm.c', + 'openssl/ssl/quic/quic_cfq.c', + 'openssl/ssl/quic/quic_channel.c', + 'openssl/ssl/quic/quic_demux.c', + 'openssl/ssl/quic/quic_engine.c', + 'openssl/ssl/quic/quic_fc.c', + 'openssl/ssl/quic/quic_fifd.c', + 'openssl/ssl/quic/quic_impl.c', + 'openssl/ssl/quic/quic_lcidm.c', + 'openssl/ssl/quic/quic_method.c', + 'openssl/ssl/quic/quic_obj.c', + 'openssl/ssl/quic/quic_port.c', + 'openssl/ssl/quic/quic_rcidm.c', + 'openssl/ssl/quic/quic_reactor.c', + 'openssl/ssl/quic/quic_reactor_wait_ctx.c', + 'openssl/ssl/quic/quic_record_rx.c', + 'openssl/ssl/quic/quic_record_shared.c', + 'openssl/ssl/quic/quic_record_tx.c', + 'openssl/ssl/quic/quic_record_util.c', + 'openssl/ssl/quic/quic_rstream.c', + 'openssl/ssl/quic/quic_rx_depack.c', + 'openssl/ssl/quic/quic_sf_list.c', + 'openssl/ssl/quic/quic_srt_gen.c', + 'openssl/ssl/quic/quic_srtm.c', + 'openssl/ssl/quic/quic_sstream.c', + 'openssl/ssl/quic/quic_statm.c', + 'openssl/ssl/quic/quic_stream_map.c', + 'openssl/ssl/quic/quic_thread_assist.c', + 'openssl/ssl/quic/quic_tls.c', + 'openssl/ssl/quic/quic_tls_api.c', + 'openssl/ssl/quic/quic_trace.c', + 'openssl/ssl/quic/quic_tserver.c', + 'openssl/ssl/quic/quic_txp.c', + 'openssl/ssl/quic/quic_txpim.c', + 'openssl/ssl/quic/quic_types.c', + 'openssl/ssl/quic/quic_wire.c', + 'openssl/ssl/quic/quic_wire_pkt.c', + 'openssl/ssl/quic/uint_set.c', + 'openssl/ssl/record/rec_layer_d1.c', + 'openssl/ssl/record/rec_layer_s3.c', + 'openssl/ssl/record/methods/dtls_meth.c', + 'openssl/ssl/record/methods/ssl3_meth.c', + 'openssl/ssl/record/methods/tls13_meth.c', + 'openssl/ssl/record/methods/tls1_meth.c', + 'openssl/ssl/record/methods/tls_common.c', + 'openssl/ssl/record/methods/tls_multib.c', + 'openssl/ssl/record/methods/tlsany_meth.c', + 'openssl/ssl/rio/poll_builder.c', + 'openssl/ssl/rio/poll_immediate.c', + 'openssl/ssl/rio/rio_notifier.c', + 'openssl/ssl/statem/extensions.c', + 'openssl/ssl/statem/extensions_clnt.c', + 'openssl/ssl/statem/extensions_cust.c', + 'openssl/ssl/statem/extensions_srvr.c', + 'openssl/ssl/statem/statem.c', + 'openssl/ssl/statem/statem_clnt.c', + 'openssl/ssl/statem/statem_dtls.c', + 'openssl/ssl/statem/statem_lib.c', + 'openssl/ssl/statem/statem_srvr.c', + 'openssl/crypto/aes/aes_cbc.c', + 'openssl/crypto/aes/aes_cfb.c', + 'openssl/crypto/aes/aes_ecb.c', + 'openssl/crypto/aes/aes_ige.c', + 'openssl/crypto/aes/aes_misc.c', + 'openssl/crypto/aes/aes_ofb.c', + 'openssl/crypto/aes/aes_wrap.c', + 'openssl/crypto/aria/aria.c', + 'openssl/crypto/asn1/a_bitstr.c', + 'openssl/crypto/asn1/a_d2i_fp.c', + 'openssl/crypto/asn1/a_digest.c', + 'openssl/crypto/asn1/a_dup.c', + 'openssl/crypto/asn1/a_gentm.c', + 'openssl/crypto/asn1/a_i2d_fp.c', + 'openssl/crypto/asn1/a_int.c', + 'openssl/crypto/asn1/a_mbstr.c', + 'openssl/crypto/asn1/a_object.c', + 'openssl/crypto/asn1/a_octet.c', + 'openssl/crypto/asn1/a_print.c', + 'openssl/crypto/asn1/a_sign.c', + 'openssl/crypto/asn1/a_strex.c', + 'openssl/crypto/asn1/a_strnid.c', + 'openssl/crypto/asn1/a_time.c', + 'openssl/crypto/asn1/a_type.c', + 'openssl/crypto/asn1/a_utctm.c', + 'openssl/crypto/asn1/a_utf8.c', + 'openssl/crypto/asn1/a_verify.c', + 'openssl/crypto/asn1/ameth_lib.c', + 'openssl/crypto/asn1/asn1_err.c', + 'openssl/crypto/asn1/asn1_gen.c', + 'openssl/crypto/asn1/asn1_item_list.c', + 'openssl/crypto/asn1/asn1_lib.c', + 'openssl/crypto/asn1/asn1_parse.c', + 'openssl/crypto/asn1/asn_mime.c', + 'openssl/crypto/asn1/asn_moid.c', + 'openssl/crypto/asn1/asn_mstbl.c', + 'openssl/crypto/asn1/asn_pack.c', + 'openssl/crypto/asn1/bio_asn1.c', + 'openssl/crypto/asn1/bio_ndef.c', + 'openssl/crypto/asn1/d2i_param.c', + 'openssl/crypto/asn1/d2i_pr.c', + 'openssl/crypto/asn1/d2i_pu.c', + 'openssl/crypto/asn1/evp_asn1.c', + 'openssl/crypto/asn1/f_int.c', + 'openssl/crypto/asn1/f_string.c', + 'openssl/crypto/asn1/i2d_evp.c', + 'openssl/crypto/asn1/n_pkey.c', + 'openssl/crypto/asn1/nsseq.c', + 'openssl/crypto/asn1/p5_pbe.c', + 'openssl/crypto/asn1/p5_pbev2.c', + 'openssl/crypto/asn1/p5_scrypt.c', + 'openssl/crypto/asn1/p8_pkey.c', + 'openssl/crypto/asn1/t_bitst.c', + 'openssl/crypto/asn1/t_pkey.c', + 'openssl/crypto/asn1/t_spki.c', + 'openssl/crypto/asn1/tasn_dec.c', + 'openssl/crypto/asn1/tasn_enc.c', + 'openssl/crypto/asn1/tasn_fre.c', + 'openssl/crypto/asn1/tasn_new.c', + 'openssl/crypto/asn1/tasn_prn.c', + 'openssl/crypto/asn1/tasn_scn.c', + 'openssl/crypto/asn1/tasn_typ.c', + 'openssl/crypto/asn1/tasn_utl.c', + 'openssl/crypto/asn1/x_algor.c', + 'openssl/crypto/asn1/x_bignum.c', + 'openssl/crypto/asn1/x_info.c', + 'openssl/crypto/asn1/x_int64.c', + 'openssl/crypto/asn1/x_long.c', + 'openssl/crypto/asn1/x_pkey.c', + 'openssl/crypto/asn1/x_sig.c', + 'openssl/crypto/asn1/x_spki.c', + 'openssl/crypto/asn1/x_val.c', + 'openssl/crypto/async/arch/async_null.c', + 'openssl/crypto/async/arch/async_posix.c', + 'openssl/crypto/async/arch/async_win.c', + 'openssl/crypto/async/async.c', + 'openssl/crypto/async/async_err.c', + 'openssl/crypto/async/async_wait.c', + 'openssl/crypto/bf/bf_cfb64.c', + 'openssl/crypto/bf/bf_ecb.c', + 'openssl/crypto/bf/bf_enc.c', + 'openssl/crypto/bf/bf_ofb64.c', + 'openssl/crypto/bf/bf_skey.c', + 'openssl/crypto/bio/bf_buff.c', + 'openssl/crypto/bio/bf_lbuf.c', + 'openssl/crypto/bio/bf_nbio.c', + 'openssl/crypto/bio/bf_null.c', + 'openssl/crypto/bio/bf_prefix.c', + 'openssl/crypto/bio/bf_readbuff.c', + 'openssl/crypto/bio/bio_addr.c', + 'openssl/crypto/bio/bio_cb.c', + 'openssl/crypto/bio/bio_dump.c', + 'openssl/crypto/bio/bio_err.c', + 'openssl/crypto/bio/bio_lib.c', + 'openssl/crypto/bio/bio_meth.c', + 'openssl/crypto/bio/bio_print.c', + 'openssl/crypto/bio/bio_sock.c', + 'openssl/crypto/bio/bio_sock2.c', + 'openssl/crypto/bio/bss_acpt.c', + 'openssl/crypto/bio/bss_bio.c', + 'openssl/crypto/bio/bss_conn.c', + 'openssl/crypto/bio/bss_core.c', + 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_dgram_pair.c', + 'openssl/crypto/bio/bss_fd.c', + 'openssl/crypto/bio/bss_file.c', + 'openssl/crypto/bio/bss_log.c', + 'openssl/crypto/bio/bss_mem.c', + 'openssl/crypto/bio/bss_null.c', + 'openssl/crypto/bio/bss_sock.c', + 'openssl/crypto/bio/ossl_core_bio.c', + 'openssl/crypto/bn/bn_add.c', + 'openssl/crypto/bn/bn_asm.c', + 'openssl/crypto/bn/bn_blind.c', + 'openssl/crypto/bn/bn_const.c', + 'openssl/crypto/bn/bn_conv.c', + 'openssl/crypto/bn/bn_ctx.c', + 'openssl/crypto/bn/bn_depr.c', + 'openssl/crypto/bn/bn_dh.c', + 'openssl/crypto/bn/bn_div.c', + 'openssl/crypto/bn/bn_err.c', + 'openssl/crypto/bn/bn_exp.c', + 'openssl/crypto/bn/bn_exp2.c', + 'openssl/crypto/bn/bn_gcd.c', + 'openssl/crypto/bn/bn_gf2m.c', + 'openssl/crypto/bn/bn_intern.c', + 'openssl/crypto/bn/bn_kron.c', + 'openssl/crypto/bn/bn_lib.c', + 'openssl/crypto/bn/bn_mod.c', + 'openssl/crypto/bn/bn_mont.c', + 'openssl/crypto/bn/bn_mpi.c', + 'openssl/crypto/bn/bn_mul.c', + 'openssl/crypto/bn/bn_nist.c', + 'openssl/crypto/bn/bn_prime.c', + 'openssl/crypto/bn/bn_print.c', + 'openssl/crypto/bn/bn_rand.c', + 'openssl/crypto/bn/bn_recp.c', + 'openssl/crypto/bn/bn_rsa_fips186_4.c', + 'openssl/crypto/bn/bn_shift.c', + 'openssl/crypto/bn/bn_sqr.c', + 'openssl/crypto/bn/bn_sqrt.c', + 'openssl/crypto/bn/bn_srp.c', + 'openssl/crypto/bn/bn_word.c', + 'openssl/crypto/bn/bn_x931p.c', + 'openssl/crypto/buffer/buf_err.c', + 'openssl/crypto/buffer/buffer.c', + 'openssl/crypto/camellia/camellia.c', + 'openssl/crypto/camellia/cmll_cbc.c', + 'openssl/crypto/camellia/cmll_cfb.c', + 'openssl/crypto/camellia/cmll_ctr.c', + 'openssl/crypto/camellia/cmll_ecb.c', + 'openssl/crypto/camellia/cmll_misc.c', + 'openssl/crypto/camellia/cmll_ofb.c', + 'openssl/crypto/cast/c_cfb64.c', + 'openssl/crypto/cast/c_ecb.c', + 'openssl/crypto/cast/c_enc.c', + 'openssl/crypto/cast/c_ofb64.c', + 'openssl/crypto/cast/c_skey.c', + 'openssl/crypto/chacha/chacha_enc.c', + 'openssl/crypto/chacha/chacha_riscv.c', + 'openssl/crypto/cmac/cmac.c', + 'openssl/crypto/cmp/cmp_asn.c', + 'openssl/crypto/cmp/cmp_client.c', + 'openssl/crypto/cmp/cmp_ctx.c', + 'openssl/crypto/cmp/cmp_err.c', + 'openssl/crypto/cmp/cmp_genm.c', + 'openssl/crypto/cmp/cmp_hdr.c', + 'openssl/crypto/cmp/cmp_http.c', + 'openssl/crypto/cmp/cmp_msg.c', + 'openssl/crypto/cmp/cmp_protect.c', + 'openssl/crypto/cmp/cmp_server.c', + 'openssl/crypto/cmp/cmp_status.c', + 'openssl/crypto/cmp/cmp_util.c', + 'openssl/crypto/cmp/cmp_vfy.c', + 'openssl/crypto/cms/cms_asn1.c', + 'openssl/crypto/cms/cms_att.c', + 'openssl/crypto/cms/cms_cd.c', + 'openssl/crypto/cms/cms_dd.c', + 'openssl/crypto/cms/cms_dh.c', + 'openssl/crypto/cms/cms_ec.c', + 'openssl/crypto/cms/cms_enc.c', + 'openssl/crypto/cms/cms_env.c', + 'openssl/crypto/cms/cms_err.c', + 'openssl/crypto/cms/cms_ess.c', + 'openssl/crypto/cms/cms_io.c', + 'openssl/crypto/cms/cms_kari.c', + 'openssl/crypto/cms/cms_lib.c', + 'openssl/crypto/cms/cms_pwri.c', + 'openssl/crypto/cms/cms_rsa.c', + 'openssl/crypto/cms/cms_sd.c', + 'openssl/crypto/cms/cms_smime.c', + 'openssl/crypto/comp/c_brotli.c', + 'openssl/crypto/comp/c_zlib.c', + 'openssl/crypto/comp/c_zstd.c', + 'openssl/crypto/comp/comp_err.c', + 'openssl/crypto/comp/comp_lib.c', + 'openssl/crypto/conf/conf_api.c', + 'openssl/crypto/conf/conf_def.c', + 'openssl/crypto/conf/conf_err.c', + 'openssl/crypto/conf/conf_lib.c', + 'openssl/crypto/conf/conf_mall.c', + 'openssl/crypto/conf/conf_mod.c', + 'openssl/crypto/conf/conf_sap.c', + 'openssl/crypto/conf/conf_ssl.c', + 'openssl/crypto/crmf/crmf_asn.c', + 'openssl/crypto/crmf/crmf_err.c', + 'openssl/crypto/crmf/crmf_lib.c', + 'openssl/crypto/crmf/crmf_pbm.c', + 'openssl/crypto/ct/ct_b64.c', + 'openssl/crypto/ct/ct_err.c', + 'openssl/crypto/ct/ct_log.c', + 'openssl/crypto/ct/ct_oct.c', + 'openssl/crypto/ct/ct_policy.c', + 'openssl/crypto/ct/ct_prn.c', + 'openssl/crypto/ct/ct_sct.c', + 'openssl/crypto/ct/ct_sct_ctx.c', + 'openssl/crypto/ct/ct_vfy.c', + 'openssl/crypto/ct/ct_x509v3.c', + 'openssl/crypto/des/cbc_cksm.c', + 'openssl/crypto/des/cbc_enc.c', + 'openssl/crypto/des/cfb64ede.c', + 'openssl/crypto/des/cfb64enc.c', + 'openssl/crypto/des/cfb_enc.c', + 'openssl/crypto/des/des_enc.c', + 'openssl/crypto/des/ecb3_enc.c', + 'openssl/crypto/des/ecb_enc.c', + 'openssl/crypto/des/fcrypt.c', + 'openssl/crypto/des/fcrypt_b.c', + 'openssl/crypto/des/ofb64ede.c', + 'openssl/crypto/des/ofb64enc.c', + 'openssl/crypto/des/ofb_enc.c', + 'openssl/crypto/des/pcbc_enc.c', + 'openssl/crypto/des/qud_cksm.c', + 'openssl/crypto/des/rand_key.c', + 'openssl/crypto/des/set_key.c', + 'openssl/crypto/des/str2key.c', + 'openssl/crypto/des/xcbc_enc.c', + 'openssl/crypto/dh/dh_ameth.c', + 'openssl/crypto/dh/dh_asn1.c', + 'openssl/crypto/dh/dh_backend.c', + 'openssl/crypto/dh/dh_check.c', + 'openssl/crypto/dh/dh_depr.c', + 'openssl/crypto/dh/dh_err.c', + 'openssl/crypto/dh/dh_gen.c', + 'openssl/crypto/dh/dh_group_params.c', + 'openssl/crypto/dh/dh_kdf.c', + 'openssl/crypto/dh/dh_key.c', + 'openssl/crypto/dh/dh_lib.c', + 'openssl/crypto/dh/dh_meth.c', + 'openssl/crypto/dh/dh_pmeth.c', + 'openssl/crypto/dh/dh_prn.c', + 'openssl/crypto/dh/dh_rfc5114.c', + 'openssl/crypto/dsa/dsa_ameth.c', + 'openssl/crypto/dsa/dsa_asn1.c', + 'openssl/crypto/dsa/dsa_backend.c', + 'openssl/crypto/dsa/dsa_check.c', + 'openssl/crypto/dsa/dsa_depr.c', + 'openssl/crypto/dsa/dsa_err.c', + 'openssl/crypto/dsa/dsa_gen.c', + 'openssl/crypto/dsa/dsa_key.c', + 'openssl/crypto/dsa/dsa_lib.c', + 'openssl/crypto/dsa/dsa_meth.c', + 'openssl/crypto/dsa/dsa_ossl.c', + 'openssl/crypto/dsa/dsa_pmeth.c', + 'openssl/crypto/dsa/dsa_prn.c', + 'openssl/crypto/dsa/dsa_sign.c', + 'openssl/crypto/dsa/dsa_vrf.c', + 'openssl/crypto/dso/dso_dl.c', + 'openssl/crypto/dso/dso_dlfcn.c', + 'openssl/crypto/dso/dso_err.c', + 'openssl/crypto/dso/dso_lib.c', + 'openssl/crypto/dso/dso_openssl.c', + 'openssl/crypto/dso/dso_vms.c', + 'openssl/crypto/dso/dso_win32.c', + 'openssl/crypto/ec/curve448/arch_32/f_impl32.c', + 'openssl/crypto/ec/curve448/arch_64/f_impl64.c', + 'openssl/crypto/ec/curve448/curve448.c', + 'openssl/crypto/ec/curve448/curve448_tables.c', + 'openssl/crypto/ec/curve448/eddsa.c', + 'openssl/crypto/ec/curve448/f_generic.c', + 'openssl/crypto/ec/curve448/scalar.c', + 'openssl/crypto/ec/curve25519.c', + 'openssl/crypto/ec/ec2_oct.c', + 'openssl/crypto/ec/ec2_smpl.c', + 'openssl/crypto/ec/ec_ameth.c', + 'openssl/crypto/ec/ec_asn1.c', + 'openssl/crypto/ec/ec_backend.c', + 'openssl/crypto/ec/ec_check.c', + 'openssl/crypto/ec/ec_curve.c', + 'openssl/crypto/ec/ec_cvt.c', + 'openssl/crypto/ec/ec_deprecated.c', + 'openssl/crypto/ec/ec_err.c', + 'openssl/crypto/ec/ec_key.c', + 'openssl/crypto/ec/ec_kmeth.c', + 'openssl/crypto/ec/ec_lib.c', + 'openssl/crypto/ec/ec_mult.c', + 'openssl/crypto/ec/ec_oct.c', + 'openssl/crypto/ec/ec_pmeth.c', + 'openssl/crypto/ec/ec_print.c', + 'openssl/crypto/ec/ecdh_kdf.c', + 'openssl/crypto/ec/ecdh_ossl.c', + 'openssl/crypto/ec/ecdsa_ossl.c', + 'openssl/crypto/ec/ecdsa_sign.c', + 'openssl/crypto/ec/ecdsa_vrf.c', + 'openssl/crypto/ec/eck_prn.c', + 'openssl/crypto/ec/ecp_mont.c', + 'openssl/crypto/ec/ecp_nist.c', + 'openssl/crypto/ec/ecp_oct.c', + 'openssl/crypto/ec/ecp_smpl.c', + 'openssl/crypto/ec/ecx_backend.c', + 'openssl/crypto/ec/ecx_key.c', + 'openssl/crypto/ec/ecx_meth.c', + 'openssl/crypto/encode_decode/decoder_err.c', + 'openssl/crypto/encode_decode/decoder_lib.c', + 'openssl/crypto/encode_decode/decoder_meth.c', + 'openssl/crypto/encode_decode/decoder_pkey.c', + 'openssl/crypto/encode_decode/encoder_err.c', + 'openssl/crypto/encode_decode/encoder_lib.c', + 'openssl/crypto/encode_decode/encoder_meth.c', + 'openssl/crypto/encode_decode/encoder_pkey.c', + 'openssl/crypto/engine/eng_all.c', + 'openssl/crypto/engine/eng_cnf.c', + 'openssl/crypto/engine/eng_ctrl.c', + 'openssl/crypto/engine/eng_dyn.c', + 'openssl/crypto/engine/eng_err.c', + 'openssl/crypto/engine/eng_fat.c', + 'openssl/crypto/engine/eng_init.c', + 'openssl/crypto/engine/eng_lib.c', + 'openssl/crypto/engine/eng_list.c', + 'openssl/crypto/engine/eng_openssl.c', + 'openssl/crypto/engine/eng_pkey.c', + 'openssl/crypto/engine/eng_rdrand.c', + 'openssl/crypto/engine/eng_table.c', + 'openssl/crypto/engine/tb_asnmth.c', + 'openssl/crypto/engine/tb_cipher.c', + 'openssl/crypto/engine/tb_dh.c', + 'openssl/crypto/engine/tb_digest.c', + 'openssl/crypto/engine/tb_dsa.c', + 'openssl/crypto/engine/tb_eckey.c', + 'openssl/crypto/engine/tb_pkmeth.c', + 'openssl/crypto/engine/tb_rand.c', + 'openssl/crypto/engine/tb_rsa.c', + 'openssl/crypto/err/err.c', + 'openssl/crypto/err/err_all.c', + 'openssl/crypto/err/err_all_legacy.c', + 'openssl/crypto/err/err_blocks.c', + 'openssl/crypto/err/err_mark.c', + 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/err/err_save.c', + 'openssl/crypto/ess/ess_asn1.c', + 'openssl/crypto/ess/ess_err.c', + 'openssl/crypto/ess/ess_lib.c', + 'openssl/crypto/evp/asymcipher.c', + 'openssl/crypto/evp/bio_b64.c', + 'openssl/crypto/evp/bio_enc.c', + 'openssl/crypto/evp/bio_md.c', + 'openssl/crypto/evp/bio_ok.c', + 'openssl/crypto/evp/c_allc.c', + 'openssl/crypto/evp/c_alld.c', + 'openssl/crypto/evp/cmeth_lib.c', + 'openssl/crypto/evp/ctrl_params_translate.c', + 'openssl/crypto/evp/dh_ctrl.c', + 'openssl/crypto/evp/dh_support.c', + 'openssl/crypto/evp/digest.c', + 'openssl/crypto/evp/dsa_ctrl.c', + 'openssl/crypto/evp/e_aes.c', + 'openssl/crypto/evp/e_aes_cbc_hmac_sha1.c', + 'openssl/crypto/evp/e_aes_cbc_hmac_sha256.c', + 'openssl/crypto/evp/e_aria.c', + 'openssl/crypto/evp/e_bf.c', + 'openssl/crypto/evp/e_camellia.c', + 'openssl/crypto/evp/e_cast.c', + 'openssl/crypto/evp/e_chacha20_poly1305.c', + 'openssl/crypto/evp/e_des.c', + 'openssl/crypto/evp/e_des3.c', + 'openssl/crypto/evp/e_idea.c', + 'openssl/crypto/evp/e_null.c', + 'openssl/crypto/evp/e_old.c', + 'openssl/crypto/evp/e_rc2.c', + 'openssl/crypto/evp/e_rc4.c', + 'openssl/crypto/evp/e_rc4_hmac_md5.c', + 'openssl/crypto/evp/e_rc5.c', + 'openssl/crypto/evp/e_seed.c', + 'openssl/crypto/evp/e_sm4.c', + 'openssl/crypto/evp/e_xcbc_d.c', + 'openssl/crypto/evp/ec_ctrl.c', + 'openssl/crypto/evp/ec_support.c', + 'openssl/crypto/evp/encode.c', + 'openssl/crypto/evp/evp_cnf.c', + 'openssl/crypto/evp/evp_enc.c', + 'openssl/crypto/evp/evp_err.c', + 'openssl/crypto/evp/evp_fetch.c', + 'openssl/crypto/evp/evp_key.c', + 'openssl/crypto/evp/evp_lib.c', + 'openssl/crypto/evp/evp_pbe.c', + 'openssl/crypto/evp/evp_pkey.c', + 'openssl/crypto/evp/evp_rand.c', + 'openssl/crypto/evp/evp_utils.c', + 'openssl/crypto/evp/exchange.c', + 'openssl/crypto/evp/kdf_lib.c', + 'openssl/crypto/evp/kdf_meth.c', + 'openssl/crypto/evp/kem.c', + 'openssl/crypto/evp/keymgmt_lib.c', + 'openssl/crypto/evp/keymgmt_meth.c', + 'openssl/crypto/evp/legacy_blake2.c', + 'openssl/crypto/evp/legacy_md4.c', + 'openssl/crypto/evp/legacy_md5.c', + 'openssl/crypto/evp/legacy_md5_sha1.c', + 'openssl/crypto/evp/legacy_mdc2.c', + 'openssl/crypto/evp/legacy_ripemd.c', + 'openssl/crypto/evp/legacy_sha.c', + 'openssl/crypto/evp/legacy_wp.c', + 'openssl/crypto/evp/m_null.c', + 'openssl/crypto/evp/m_sigver.c', + 'openssl/crypto/evp/mac_lib.c', + 'openssl/crypto/evp/mac_meth.c', + 'openssl/crypto/evp/names.c', + 'openssl/crypto/evp/p5_crpt.c', + 'openssl/crypto/evp/p5_crpt2.c', + 'openssl/crypto/evp/p_dec.c', + 'openssl/crypto/evp/p_enc.c', + 'openssl/crypto/evp/p_legacy.c', + 'openssl/crypto/evp/p_lib.c', + 'openssl/crypto/evp/p_open.c', + 'openssl/crypto/evp/p_seal.c', + 'openssl/crypto/evp/p_sign.c', + 'openssl/crypto/evp/p_verify.c', + 'openssl/crypto/evp/pbe_scrypt.c', + 'openssl/crypto/evp/pmeth_check.c', + 'openssl/crypto/evp/pmeth_gn.c', + 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/evp/s_lib.c', + 'openssl/crypto/evp/signature.c', + 'openssl/crypto/evp/skeymgmt_meth.c', + 'openssl/crypto/ffc/ffc_backend.c', + 'openssl/crypto/ffc/ffc_dh.c', + 'openssl/crypto/ffc/ffc_key_generate.c', + 'openssl/crypto/ffc/ffc_key_validate.c', + 'openssl/crypto/ffc/ffc_params.c', + 'openssl/crypto/ffc/ffc_params_generate.c', + 'openssl/crypto/ffc/ffc_params_validate.c', + 'openssl/crypto/hashtable/hashfunc.c', + 'openssl/crypto/hashtable/hashtable.c', + 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/hpke/hpke.c', + 'openssl/crypto/hpke/hpke_util.c', + 'openssl/crypto/http/http_client.c', + 'openssl/crypto/http/http_err.c', + 'openssl/crypto/http/http_lib.c', + 'openssl/crypto/idea/i_cbc.c', + 'openssl/crypto/idea/i_cfb64.c', + 'openssl/crypto/idea/i_ecb.c', + 'openssl/crypto/idea/i_ofb64.c', + 'openssl/crypto/idea/i_skey.c', + 'openssl/crypto/kdf/kdf_err.c', + 'openssl/crypto/lhash/lh_stats.c', + 'openssl/crypto/lhash/lhash.c', + 'openssl/crypto/asn1_dsa.c', + 'openssl/crypto/bsearch.c', + 'openssl/crypto/comp_methods.c', + 'openssl/crypto/context.c', + 'openssl/crypto/core_algorithm.c', + 'openssl/crypto/core_fetch.c', + 'openssl/crypto/core_namemap.c', + 'openssl/crypto/cpt_err.c', + 'openssl/crypto/cpuid.c', + 'openssl/crypto/cryptlib.c', + 'openssl/crypto/ctype.c', + 'openssl/crypto/cversion.c', + 'openssl/crypto/defaults.c', + 'openssl/crypto/der_writer.c', + 'openssl/crypto/deterministic_nonce.c', + 'openssl/crypto/ebcdic.c', + 'openssl/crypto/ex_data.c', + 'openssl/crypto/getenv.c', + 'openssl/crypto/indicator_core.c', + 'openssl/crypto/info.c', + 'openssl/crypto/init.c', + 'openssl/crypto/initthread.c', + 'openssl/crypto/mem.c', + 'openssl/crypto/mem_sec.c', + 'openssl/crypto/o_dir.c', + 'openssl/crypto/o_fopen.c', + 'openssl/crypto/o_init.c', + 'openssl/crypto/o_str.c', + 'openssl/crypto/o_time.c', + 'openssl/crypto/packet.c', + 'openssl/crypto/param_build.c', + 'openssl/crypto/param_build_set.c', + 'openssl/crypto/params.c', + 'openssl/crypto/params_dup.c', + 'openssl/crypto/params_from_text.c', + 'openssl/crypto/passphrase.c', + 'openssl/crypto/provider.c', + 'openssl/crypto/provider_child.c', + 'openssl/crypto/provider_conf.c', + 'openssl/crypto/provider_core.c', + 'openssl/crypto/provider_predefined.c', + 'openssl/crypto/punycode.c', + 'openssl/crypto/quic_vlint.c', + 'openssl/crypto/riscvcap.c', + 'openssl/crypto/self_test_core.c', + 'openssl/crypto/sleep.c', + 'openssl/crypto/sparse_array.c', + 'openssl/crypto/ssl_err.c', + 'openssl/crypto/threads_lib.c', + 'openssl/crypto/threads_none.c', + 'openssl/crypto/threads_pthread.c', + 'openssl/crypto/threads_win.c', + 'openssl/crypto/time.c', + 'openssl/crypto/trace.c', + 'openssl/crypto/uid.c', + 'openssl/crypto/md4/md4_dgst.c', + 'openssl/crypto/md4/md4_one.c', + 'openssl/crypto/md5/md5_dgst.c', + 'openssl/crypto/md5/md5_one.c', + 'openssl/crypto/md5/md5_sha1.c', + 'openssl/crypto/mdc2/mdc2_one.c', + 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/ml_dsa/ml_dsa_encoders.c', + 'openssl/crypto/ml_dsa/ml_dsa_key.c', + 'openssl/crypto/ml_dsa/ml_dsa_key_compress.c', + 'openssl/crypto/ml_dsa/ml_dsa_matrix.c', + 'openssl/crypto/ml_dsa/ml_dsa_ntt.c', + 'openssl/crypto/ml_dsa/ml_dsa_params.c', + 'openssl/crypto/ml_dsa/ml_dsa_sample.c', + 'openssl/crypto/ml_dsa/ml_dsa_sign.c', + 'openssl/crypto/ml_kem/ml_kem.c', + 'openssl/crypto/modes/cbc128.c', + 'openssl/crypto/modes/ccm128.c', + 'openssl/crypto/modes/cfb128.c', + 'openssl/crypto/modes/ctr128.c', + 'openssl/crypto/modes/cts128.c', + 'openssl/crypto/modes/gcm128.c', + 'openssl/crypto/modes/ocb128.c', + 'openssl/crypto/modes/ofb128.c', + 'openssl/crypto/modes/siv128.c', + 'openssl/crypto/modes/wrap128.c', + 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/modes/xts128gb.c', + 'openssl/crypto/objects/o_names.c', + 'openssl/crypto/objects/obj_dat.c', + 'openssl/crypto/objects/obj_err.c', + 'openssl/crypto/objects/obj_lib.c', + 'openssl/crypto/objects/obj_xref.c', + 'openssl/crypto/ocsp/ocsp_asn.c', + 'openssl/crypto/ocsp/ocsp_cl.c', + 'openssl/crypto/ocsp/ocsp_err.c', + 'openssl/crypto/ocsp/ocsp_ext.c', + 'openssl/crypto/ocsp/ocsp_http.c', + 'openssl/crypto/ocsp/ocsp_lib.c', + 'openssl/crypto/ocsp/ocsp_prn.c', + 'openssl/crypto/ocsp/ocsp_srv.c', + 'openssl/crypto/ocsp/ocsp_vfy.c', + 'openssl/crypto/ocsp/v3_ocsp.c', + 'openssl/crypto/pem/pem_all.c', + 'openssl/crypto/pem/pem_err.c', + 'openssl/crypto/pem/pem_info.c', + 'openssl/crypto/pem/pem_lib.c', + 'openssl/crypto/pem/pem_oth.c', + 'openssl/crypto/pem/pem_pk8.c', + 'openssl/crypto/pem/pem_pkey.c', + 'openssl/crypto/pem/pem_sign.c', + 'openssl/crypto/pem/pem_x509.c', + 'openssl/crypto/pem/pem_xaux.c', + 'openssl/crypto/pem/pvkfmt.c', + 'openssl/crypto/pkcs12/p12_add.c', + 'openssl/crypto/pkcs12/p12_asn.c', + 'openssl/crypto/pkcs12/p12_attr.c', + 'openssl/crypto/pkcs12/p12_crpt.c', + 'openssl/crypto/pkcs12/p12_crt.c', + 'openssl/crypto/pkcs12/p12_decr.c', + 'openssl/crypto/pkcs12/p12_init.c', + 'openssl/crypto/pkcs12/p12_key.c', + 'openssl/crypto/pkcs12/p12_kiss.c', + 'openssl/crypto/pkcs12/p12_mutl.c', + 'openssl/crypto/pkcs12/p12_npas.c', + 'openssl/crypto/pkcs12/p12_p8d.c', + 'openssl/crypto/pkcs12/p12_p8e.c', + 'openssl/crypto/pkcs12/p12_sbag.c', + 'openssl/crypto/pkcs12/p12_utl.c', + 'openssl/crypto/pkcs12/pk12err.c', + 'openssl/crypto/pkcs7/bio_pk7.c', + 'openssl/crypto/pkcs7/pk7_asn1.c', + 'openssl/crypto/pkcs7/pk7_attr.c', + 'openssl/crypto/pkcs7/pk7_doit.c', + 'openssl/crypto/pkcs7/pk7_lib.c', + 'openssl/crypto/pkcs7/pk7_mime.c', + 'openssl/crypto/pkcs7/pk7_smime.c', + 'openssl/crypto/pkcs7/pkcs7err.c', + 'openssl/crypto/poly1305/poly1305.c', + 'openssl/crypto/property/defn_cache.c', + 'openssl/crypto/property/property.c', + 'openssl/crypto/property/property_err.c', + 'openssl/crypto/property/property_parse.c', + 'openssl/crypto/property/property_query.c', + 'openssl/crypto/property/property_string.c', + 'openssl/crypto/rand/prov_seed.c', + 'openssl/crypto/rand/rand_deprecated.c', + 'openssl/crypto/rand/rand_err.c', + 'openssl/crypto/rand/rand_lib.c', + 'openssl/crypto/rand/rand_meth.c', + 'openssl/crypto/rand/rand_pool.c', + 'openssl/crypto/rand/rand_uniform.c', + 'openssl/crypto/rand/randfile.c', + 'openssl/crypto/rc2/rc2_cbc.c', + 'openssl/crypto/rc2/rc2_ecb.c', + 'openssl/crypto/rc2/rc2_skey.c', + 'openssl/crypto/rc2/rc2cfb64.c', + 'openssl/crypto/rc2/rc2ofb64.c', + 'openssl/crypto/rc4/rc4_enc.c', + 'openssl/crypto/rc4/rc4_skey.c', + 'openssl/crypto/ripemd/rmd_dgst.c', + 'openssl/crypto/ripemd/rmd_one.c', + 'openssl/crypto/rsa/rsa_ameth.c', + 'openssl/crypto/rsa/rsa_asn1.c', + 'openssl/crypto/rsa/rsa_backend.c', + 'openssl/crypto/rsa/rsa_chk.c', + 'openssl/crypto/rsa/rsa_crpt.c', + 'openssl/crypto/rsa/rsa_depr.c', + 'openssl/crypto/rsa/rsa_err.c', + 'openssl/crypto/rsa/rsa_gen.c', + 'openssl/crypto/rsa/rsa_lib.c', + 'openssl/crypto/rsa/rsa_meth.c', + 'openssl/crypto/rsa/rsa_mp.c', + 'openssl/crypto/rsa/rsa_mp_names.c', + 'openssl/crypto/rsa/rsa_none.c', + 'openssl/crypto/rsa/rsa_oaep.c', + 'openssl/crypto/rsa/rsa_ossl.c', + 'openssl/crypto/rsa/rsa_pk1.c', + 'openssl/crypto/rsa/rsa_pmeth.c', + 'openssl/crypto/rsa/rsa_prn.c', + 'openssl/crypto/rsa/rsa_pss.c', + 'openssl/crypto/rsa/rsa_saos.c', + 'openssl/crypto/rsa/rsa_schemes.c', + 'openssl/crypto/rsa/rsa_sign.c', + 'openssl/crypto/rsa/rsa_sp800_56b_check.c', + 'openssl/crypto/rsa/rsa_sp800_56b_gen.c', + 'openssl/crypto/rsa/rsa_x931.c', + 'openssl/crypto/rsa/rsa_x931g.c', + 'openssl/crypto/seed/seed.c', + 'openssl/crypto/seed/seed_cbc.c', + 'openssl/crypto/seed/seed_cfb.c', + 'openssl/crypto/seed/seed_ecb.c', + 'openssl/crypto/seed/seed_ofb.c', + 'openssl/crypto/sha/keccak1600.c', + 'openssl/crypto/sha/sha1_one.c', + 'openssl/crypto/sha/sha1dgst.c', + 'openssl/crypto/sha/sha256.c', + 'openssl/crypto/sha/sha3.c', + 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/sha/sha_riscv.c', + 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/slh_dsa/slh_adrs.c', + 'openssl/crypto/slh_dsa/slh_dsa.c', + 'openssl/crypto/slh_dsa/slh_dsa_hash_ctx.c', + 'openssl/crypto/slh_dsa/slh_dsa_key.c', + 'openssl/crypto/slh_dsa/slh_fors.c', + 'openssl/crypto/slh_dsa/slh_hash.c', + 'openssl/crypto/slh_dsa/slh_hypertree.c', + 'openssl/crypto/slh_dsa/slh_params.c', + 'openssl/crypto/slh_dsa/slh_wots.c', + 'openssl/crypto/slh_dsa/slh_xmss.c', + 'openssl/crypto/sm2/sm2_crypt.c', + 'openssl/crypto/sm2/sm2_err.c', + 'openssl/crypto/sm2/sm2_key.c', + 'openssl/crypto/sm2/sm2_sign.c', + 'openssl/crypto/sm3/legacy_sm3.c', + 'openssl/crypto/sm3/sm3.c', + 'openssl/crypto/sm3/sm3_riscv.c', + 'openssl/crypto/sm4/sm4.c', + 'openssl/crypto/srp/srp_lib.c', + 'openssl/crypto/srp/srp_vfy.c', + 'openssl/crypto/stack/stack.c', + 'openssl/crypto/store/store_err.c', + 'openssl/crypto/store/store_init.c', + 'openssl/crypto/store/store_lib.c', + 'openssl/crypto/store/store_meth.c', + 'openssl/crypto/store/store_register.c', + 'openssl/crypto/store/store_result.c', + 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/thread/arch/thread_none.c', + 'openssl/crypto/thread/arch/thread_posix.c', + 'openssl/crypto/thread/arch/thread_win.c', + 'openssl/crypto/thread/api.c', + 'openssl/crypto/thread/arch.c', + 'openssl/crypto/thread/internal.c', + 'openssl/crypto/ts/ts_asn1.c', + 'openssl/crypto/ts/ts_conf.c', + 'openssl/crypto/ts/ts_err.c', + 'openssl/crypto/ts/ts_lib.c', + 'openssl/crypto/ts/ts_req_print.c', + 'openssl/crypto/ts/ts_req_utils.c', + 'openssl/crypto/ts/ts_rsp_print.c', + 'openssl/crypto/ts/ts_rsp_sign.c', + 'openssl/crypto/ts/ts_rsp_utils.c', + 'openssl/crypto/ts/ts_rsp_verify.c', + 'openssl/crypto/ts/ts_verify_ctx.c', + 'openssl/crypto/txt_db/txt_db.c', + 'openssl/crypto/ui/ui_err.c', + 'openssl/crypto/ui/ui_lib.c', + 'openssl/crypto/ui/ui_null.c', + 'openssl/crypto/ui/ui_openssl.c', + 'openssl/crypto/ui/ui_util.c', + 'openssl/crypto/whrlpool/wp_block.c', + 'openssl/crypto/whrlpool/wp_dgst.c', + 'openssl/crypto/x509/by_dir.c', + 'openssl/crypto/x509/by_file.c', + 'openssl/crypto/x509/by_store.c', + 'openssl/crypto/x509/pcy_cache.c', + 'openssl/crypto/x509/pcy_data.c', + 'openssl/crypto/x509/pcy_lib.c', + 'openssl/crypto/x509/pcy_map.c', + 'openssl/crypto/x509/pcy_node.c', + 'openssl/crypto/x509/pcy_tree.c', + 'openssl/crypto/x509/t_acert.c', + 'openssl/crypto/x509/t_crl.c', + 'openssl/crypto/x509/t_req.c', + 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/v3_aaa.c', + 'openssl/crypto/x509/v3_ac_tgt.c', + 'openssl/crypto/x509/v3_addr.c', + 'openssl/crypto/x509/v3_admis.c', + 'openssl/crypto/x509/v3_akeya.c', + 'openssl/crypto/x509/v3_akid.c', + 'openssl/crypto/x509/v3_asid.c', + 'openssl/crypto/x509/v3_attrdesc.c', + 'openssl/crypto/x509/v3_attrmap.c', + 'openssl/crypto/x509/v3_audit_id.c', + 'openssl/crypto/x509/v3_authattid.c', + 'openssl/crypto/x509/v3_battcons.c', + 'openssl/crypto/x509/v3_bcons.c', + 'openssl/crypto/x509/v3_bitst.c', + 'openssl/crypto/x509/v3_conf.c', + 'openssl/crypto/x509/v3_cpols.c', + 'openssl/crypto/x509/v3_crld.c', + 'openssl/crypto/x509/v3_enum.c', + 'openssl/crypto/x509/v3_extku.c', + 'openssl/crypto/x509/v3_genn.c', + 'openssl/crypto/x509/v3_group_ac.c', + 'openssl/crypto/x509/v3_ia5.c', + 'openssl/crypto/x509/v3_ind_iss.c', + 'openssl/crypto/x509/v3_info.c', + 'openssl/crypto/x509/v3_int.c', + 'openssl/crypto/x509/v3_iobo.c', + 'openssl/crypto/x509/v3_ist.c', + 'openssl/crypto/x509/v3_lib.c', + 'openssl/crypto/x509/v3_ncons.c', + 'openssl/crypto/x509/v3_no_ass.c', + 'openssl/crypto/x509/v3_no_rev_avail.c', + 'openssl/crypto/x509/v3_pci.c', + 'openssl/crypto/x509/v3_pcia.c', + 'openssl/crypto/x509/v3_pcons.c', + 'openssl/crypto/x509/v3_pku.c', + 'openssl/crypto/x509/v3_pmaps.c', + 'openssl/crypto/x509/v3_prn.c', + 'openssl/crypto/x509/v3_purp.c', + 'openssl/crypto/x509/v3_rolespec.c', + 'openssl/crypto/x509/v3_san.c', + 'openssl/crypto/x509/v3_sda.c', + 'openssl/crypto/x509/v3_single_use.c', + 'openssl/crypto/x509/v3_skid.c', + 'openssl/crypto/x509/v3_soa_id.c', + 'openssl/crypto/x509/v3_sxnet.c', + 'openssl/crypto/x509/v3_timespec.c', + 'openssl/crypto/x509/v3_tlsf.c', + 'openssl/crypto/x509/v3_usernotice.c', + 'openssl/crypto/x509/v3_utf8.c', + 'openssl/crypto/x509/v3_utl.c', + 'openssl/crypto/x509/v3err.c', + 'openssl/crypto/x509/x509_acert.c', + 'openssl/crypto/x509/x509_att.c', + 'openssl/crypto/x509/x509_cmp.c', + 'openssl/crypto/x509/x509_d2.c', + 'openssl/crypto/x509/x509_def.c', + 'openssl/crypto/x509/x509_err.c', + 'openssl/crypto/x509/x509_ext.c', + 'openssl/crypto/x509/x509_lu.c', + 'openssl/crypto/x509/x509_meth.c', + 'openssl/crypto/x509/x509_obj.c', + 'openssl/crypto/x509/x509_r2x.c', + 'openssl/crypto/x509/x509_req.c', + 'openssl/crypto/x509/x509_set.c', + 'openssl/crypto/x509/x509_trust.c', + 'openssl/crypto/x509/x509_txt.c', + 'openssl/crypto/x509/x509_v3.c', + 'openssl/crypto/x509/x509_vfy.c', + 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509aset.c', + 'openssl/crypto/x509/x509cset.c', + 'openssl/crypto/x509/x509name.c', + 'openssl/crypto/x509/x509rset.c', + 'openssl/crypto/x509/x509spki.c', + 'openssl/crypto/x509/x509type.c', + 'openssl/crypto/x509/x_all.c', + 'openssl/crypto/x509/x_attrib.c', + 'openssl/crypto/x509/x_crl.c', + 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_ietfatt.c', + 'openssl/crypto/x509/x_name.c', + 'openssl/crypto/x509/x_pubkey.c', + 'openssl/crypto/x509/x_req.c', + 'openssl/crypto/x509/x_x509.c', + 'openssl/crypto/x509/x_x509a.c', + 'openssl/engines/e_capi.c', + 'openssl/engines/e_padlock.c', + 'openssl/providers/baseprov.c', + 'openssl/providers/defltprov.c', + 'openssl/providers/nullprov.c', + 'openssl/providers/prov_running.c', + 'openssl/providers/common/der/der_rsa_sig.c', + 'openssl/providers/common/der/der_sm2_key.c', + 'openssl/providers/common/der/der_sm2_sig.c', + 'openssl/providers/common/bio_prov.c', + 'openssl/providers/common/capabilities.c', + 'openssl/providers/common/digest_to_nid.c', + 'openssl/providers/common/provider_seeding.c', + 'openssl/providers/common/provider_util.c', + 'openssl/providers/common/securitycheck.c', + 'openssl/providers/common/securitycheck_default.c', + 'openssl/providers/implementations/asymciphers/rsa_enc.c', + 'openssl/providers/implementations/asymciphers/sm2_enc.c', + 'openssl/providers/implementations/ciphers/cipher_aes.c', + 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c', + 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_gcm_siv_polyval.c', + 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', + 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_siv.c', + 'openssl/providers/implementations/ciphers/cipher_aes_siv_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aes_wrp.c', + 'openssl/providers/implementations/ciphers/cipher_aes_xts.c', + 'openssl/providers/implementations/ciphers/cipher_aes_xts_fips.c', + 'openssl/providers/implementations/ciphers/cipher_aes_xts_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aria.c', + 'openssl/providers/implementations/ciphers/cipher_aria_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_aria_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aria_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_aria_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_aria_hw.c', + 'openssl/providers/implementations/ciphers/cipher_camellia.c', + 'openssl/providers/implementations/ciphers/cipher_camellia_hw.c', + 'openssl/providers/implementations/ciphers/cipher_chacha20.c', + 'openssl/providers/implementations/ciphers/cipher_chacha20_hw.c', + 'openssl/providers/implementations/ciphers/cipher_chacha20_poly1305.c', + 'openssl/providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c', + 'openssl/providers/implementations/ciphers/cipher_cts.c', + 'openssl/providers/implementations/ciphers/cipher_null.c', + 'openssl/providers/implementations/ciphers/cipher_sm4.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_ccm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_gcm_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts.c', + 'openssl/providers/implementations/ciphers/cipher_sm4_xts_hw.c', + 'openssl/providers/implementations/ciphers/cipher_tdes.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_default_hw.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_hw.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_wrap.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_wrap_hw.c', + 'openssl/providers/implementations/digests/blake2_prov.c', + 'openssl/providers/implementations/digests/blake2b_prov.c', + 'openssl/providers/implementations/digests/blake2s_prov.c', + 'openssl/providers/implementations/digests/md5_prov.c', + 'openssl/providers/implementations/digests/md5_sha1_prov.c', + 'openssl/providers/implementations/digests/null_prov.c', + 'openssl/providers/implementations/digests/ripemd_prov.c', + 'openssl/providers/implementations/digests/sha2_prov.c', + 'openssl/providers/implementations/digests/sha3_prov.c', + 'openssl/providers/implementations/digests/sm3_prov.c', + 'openssl/providers/implementations/encode_decode/decode_der2key.c', + 'openssl/providers/implementations/encode_decode/decode_epki2pki.c', + 'openssl/providers/implementations/encode_decode/decode_msblob2key.c', + 'openssl/providers/implementations/encode_decode/decode_pem2der.c', + 'openssl/providers/implementations/encode_decode/decode_pvk2key.c', + 'openssl/providers/implementations/encode_decode/decode_spki2typespki.c', + 'openssl/providers/implementations/encode_decode/encode_key2any.c', + 'openssl/providers/implementations/encode_decode/encode_key2blob.c', + 'openssl/providers/implementations/encode_decode/encode_key2ms.c', + 'openssl/providers/implementations/encode_decode/encode_key2text.c', + 'openssl/providers/implementations/encode_decode/endecoder_common.c', + 'openssl/providers/implementations/encode_decode/ml_common_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_dsa_codecs.c', + 'openssl/providers/implementations/encode_decode/ml_kem_codecs.c', + 'openssl/providers/implementations/exchange/dh_exch.c', + 'openssl/providers/implementations/exchange/ecdh_exch.c', + 'openssl/providers/implementations/exchange/ecx_exch.c', + 'openssl/providers/implementations/exchange/kdf_exch.c', + 'openssl/providers/implementations/kdfs/argon2.c', + 'openssl/providers/implementations/kdfs/hkdf.c', + 'openssl/providers/implementations/kdfs/hmacdrbg_kdf.c', + 'openssl/providers/implementations/kdfs/kbkdf.c', + 'openssl/providers/implementations/kdfs/krb5kdf.c', + 'openssl/providers/implementations/kdfs/pbkdf2.c', + 'openssl/providers/implementations/kdfs/pbkdf2_fips.c', + 'openssl/providers/implementations/kdfs/pkcs12kdf.c', + 'openssl/providers/implementations/kdfs/scrypt.c', + 'openssl/providers/implementations/kdfs/sshkdf.c', + 'openssl/providers/implementations/kdfs/sskdf.c', + 'openssl/providers/implementations/kdfs/tls1_prf.c', + 'openssl/providers/implementations/kdfs/x942kdf.c', + 'openssl/providers/implementations/kem/ec_kem.c', + 'openssl/providers/implementations/kem/ecx_kem.c', + 'openssl/providers/implementations/kem/kem_util.c', + 'openssl/providers/implementations/kem/ml_kem_kem.c', + 'openssl/providers/implementations/kem/mlx_kem.c', + 'openssl/providers/implementations/kem/rsa_kem.c', + 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', + 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ec_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', + 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_dsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/ml_kem_kmgmt.c', + 'openssl/providers/implementations/keymgmt/mlx_kmgmt.c', + 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', + 'openssl/providers/implementations/keymgmt/slh_dsa_kmgmt.c', + 'openssl/providers/implementations/macs/blake2b_mac.c', + 'openssl/providers/implementations/macs/blake2s_mac.c', + 'openssl/providers/implementations/macs/cmac_prov.c', + 'openssl/providers/implementations/macs/gmac_prov.c', + 'openssl/providers/implementations/macs/hmac_prov.c', + 'openssl/providers/implementations/macs/kmac_prov.c', + 'openssl/providers/implementations/macs/poly1305_prov.c', + 'openssl/providers/implementations/macs/siphash_prov.c', + 'openssl/providers/implementations/rands/drbg.c', + 'openssl/providers/implementations/rands/drbg_ctr.c', + 'openssl/providers/implementations/rands/drbg_hash.c', + 'openssl/providers/implementations/rands/drbg_hmac.c', + 'openssl/providers/implementations/rands/seed_src.c', + 'openssl/providers/implementations/rands/seed_src_jitter.c', + 'openssl/providers/implementations/rands/test_rng.c', + 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', + 'openssl/providers/implementations/rands/seeding/rand_tsc.c', + 'openssl/providers/implementations/rands/seeding/rand_unix.c', + 'openssl/providers/implementations/rands/seeding/rand_win.c', + 'openssl/providers/implementations/signature/dsa_sig.c', + 'openssl/providers/implementations/signature/ecdsa_sig.c', + 'openssl/providers/implementations/signature/eddsa_sig.c', + 'openssl/providers/implementations/signature/mac_legacy_sig.c', + 'openssl/providers/implementations/signature/ml_dsa_sig.c', + 'openssl/providers/implementations/signature/rsa_sig.c', + 'openssl/providers/implementations/signature/slh_dsa_sig.c', + 'openssl/providers/implementations/signature/sm2_sig.c', + 'openssl/providers/implementations/skeymgmt/aes_skmgmt.c', + 'openssl/providers/implementations/skeymgmt/generic.c', + 'openssl/providers/implementations/storemgmt/file_store.c', + 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', + 'openssl/ssl/record/methods/ssl3_cbc.c', + 'openssl/providers/common/der/der_dsa_key.c', + 'openssl/providers/common/der/der_dsa_sig.c', + 'openssl/providers/common/der/der_ec_key.c', + 'openssl/providers/common/der/der_ec_sig.c', + 'openssl/providers/common/der/der_ecx_key.c', + 'openssl/providers/common/der/der_ml_dsa_key.c', + 'openssl/providers/common/der/der_rsa_key.c', + 'openssl/providers/common/der/der_slh_dsa_key.c', + 'openssl/providers/common/provider_ctx.c', + 'openssl/providers/common/provider_err.c', + 'openssl/providers/implementations/ciphers/ciphercommon.c', + 'openssl/providers/implementations/ciphers/ciphercommon_block.c', + 'openssl/providers/implementations/ciphers/ciphercommon_ccm.c', + 'openssl/providers/implementations/ciphers/ciphercommon_ccm_hw.c', + 'openssl/providers/implementations/ciphers/ciphercommon_gcm.c', + 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', + 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', + 'openssl/providers/implementations/digests/digestcommon.c', + 'openssl/ssl/record/methods/tls_pad.c', + 'openssl/providers/implementations/ciphers/cipher_blowfish.c', + 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', + 'openssl/providers/implementations/ciphers/cipher_cast5.c', + 'openssl/providers/implementations/ciphers/cipher_cast5_hw.c', + 'openssl/providers/implementations/ciphers/cipher_des.c', + 'openssl/providers/implementations/ciphers/cipher_des_hw.c', + 'openssl/providers/implementations/ciphers/cipher_desx.c', + 'openssl/providers/implementations/ciphers/cipher_desx_hw.c', + 'openssl/providers/implementations/ciphers/cipher_idea.c', + 'openssl/providers/implementations/ciphers/cipher_idea_hw.c', + 'openssl/providers/implementations/ciphers/cipher_rc2.c', + 'openssl/providers/implementations/ciphers/cipher_rc2_hw.c', + 'openssl/providers/implementations/ciphers/cipher_rc4.c', + 'openssl/providers/implementations/ciphers/cipher_rc4_hmac_md5.c', + 'openssl/providers/implementations/ciphers/cipher_rc4_hmac_md5_hw.c', + 'openssl/providers/implementations/ciphers/cipher_rc4_hw.c', + 'openssl/providers/implementations/ciphers/cipher_seed.c', + 'openssl/providers/implementations/ciphers/cipher_seed_hw.c', + 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', + 'openssl/providers/implementations/digests/md4_prov.c', + 'openssl/providers/implementations/digests/mdc2_prov.c', + 'openssl/providers/implementations/digests/ripemd_prov.c', + 'openssl/providers/implementations/digests/wp_prov.c', + 'openssl/providers/implementations/kdfs/pbkdf1.c', + 'openssl/providers/implementations/kdfs/pvkkdf.c', + 'openssl/providers/prov_running.c', + 'openssl/providers/legacyprov.c', + ], + 'openssl_sources_linux64-riscv64': [ + './config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zkn.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvbb-zvkg-zvkned.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvkb-zvkned.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64-zvkned.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/aes/aes-riscv64.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/chacha/chacha-riscv64-v-zbb-zvkb.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/chacha/chacha-riscv64-v-zbb.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/params_idx.c', + './config/archs/linux64-riscv64/asm_avx2/crypto/riscv64cpuid.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/modes/aes-gcm-riscv64-zvkb-zvkg-zvkned.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64-zvkb-zvbc.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64-zvkg.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/modes/ghash-riscv64.s', + './config/archs/linux64-riscv64/asm_avx2/crypto/sha/sha256-riscv64-zvkb-zvknha_or_zvknhb.S', + './config/archs/linux64-riscv64/asm_avx2/crypto/sha/sha512-riscv64-zvkb-zvknhb.S', + './config/archs/linux64-riscv64/asm_avx2/crypto/sm3/sm3-riscv64-zvksh.S', + './config/archs/linux64-riscv64/asm_avx2/crypto/sm4/sm4-riscv64-zvksed.s', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_sm2_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_digests_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_dsa_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ec_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ecx_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ml_dsa_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_rsa_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_slh_dsa_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_wrap_gen.c', + './config/archs/linux64-riscv64/asm_avx2/providers/legacy.ld', + './config/archs/linux64-riscv64/asm_avx2/providers/fips.ld', + ], + 'openssl_defines_linux64-riscv64': [ + 'NDEBUG', + 'OPENSSL_USE_NODELETE', + 'OPENSSL_BUILDING_OPENSSL', + 'BROTLI', + 'ZLIB', + 'ZSTD', + 'AES_ASM', + 'GHASH_ASM', + 'INCLUDE_C_CHACHA20', + 'INCLUDE_C_SHA256', + 'INCLUDE_C_SHA512', + 'OPENSSL_CPUID_OBJ', + 'OPENSSL_SM3_ASM', + 'SHA256_ASM', + 'SHA512_ASM', + 'SM4_ASM', + 'OPENSSL_PIC', + ], + 'openssl_defines_exported_linux64-riscv64': [ + 'NDEBUG', + 'OPENSSL_USE_NODELETE', + 'OPENSSL_BUILDING_OPENSSL', + 'AES_ASM', + 'GHASH_ASM', + 'INCLUDE_C_CHACHA20', + 'INCLUDE_C_SHA256', + 'INCLUDE_C_SHA512', + 'OPENSSL_CPUID_OBJ', + 'OPENSSL_SM3_ASM', + 'SHA256_ASM', + 'SHA512_ASM', + 'SM4_ASM', + 'OPENSSL_PIC', + ], + 'openssl_cflags_linux64-riscv64': [ + '-Wa,--noexecstack', + '-Wall -O3', + '-pthread', + '-Wall -O3', + ], + 'openssl_ex_libs_linux64-riscv64': [ + '-lm -ldl -pthread', + ], + }, + 'include_dirs': [ + '.', + './include', + './crypto', + './crypto/include/internal', + './providers/common/include', + ], + 'defines': ['<@(openssl_defines_linux64-riscv64)'], + 'cflags' : ['<@(openssl_cflags_linux64-riscv64)'], + 'libraries': ['<@(openssl_ex_libs_linux64-riscv64)'], + 'sources': ['<@(openssl_sources)', '<@(openssl_sources_linux64-riscv64)'], + 'direct_dependent_settings': { + 'include_dirs': ['./include', '.'], + 'defines': ['<@(openssl_defines_exported_linux64-riscv64)'], + }, +} diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_digests_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_digests_gen.c new file mode 100644 index 00000000000000..340f5148298d37 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_digests_gen.c @@ -0,0 +1,162 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_digests_gen.c.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_digests.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * sigAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 3 } + */ +const unsigned char ossl_der_oid_sigAlgs[DER_OID_SZ_sigAlgs] = { + DER_OID_V_sigAlgs +}; + +/* + * id-sha1 OBJECT IDENTIFIER ::= { iso(1) + * identified-organization(3) oiw(14) + * secsig(3) algorithms(2) 26 } + */ +const unsigned char ossl_der_oid_id_sha1[DER_OID_SZ_id_sha1] = { + DER_OID_V_id_sha1 +}; + +/* + * id-md2 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 } + */ +const unsigned char ossl_der_oid_id_md2[DER_OID_SZ_id_md2] = { + DER_OID_V_id_md2 +}; + +/* + * id-md5 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } + */ +const unsigned char ossl_der_oid_id_md5[DER_OID_SZ_id_md5] = { + DER_OID_V_id_md5 +}; + +/* + * id-sha256 OBJECT IDENTIFIER ::= { hashAlgs 1 } + */ +const unsigned char ossl_der_oid_id_sha256[DER_OID_SZ_id_sha256] = { + DER_OID_V_id_sha256 +}; + +/* + * id-sha384 OBJECT IDENTIFIER ::= { hashAlgs 2 } + */ +const unsigned char ossl_der_oid_id_sha384[DER_OID_SZ_id_sha384] = { + DER_OID_V_id_sha384 +}; + +/* + * id-sha512 OBJECT IDENTIFIER ::= { hashAlgs 3 } + */ +const unsigned char ossl_der_oid_id_sha512[DER_OID_SZ_id_sha512] = { + DER_OID_V_id_sha512 +}; + +/* + * id-sha224 OBJECT IDENTIFIER ::= { hashAlgs 4 } + */ +const unsigned char ossl_der_oid_id_sha224[DER_OID_SZ_id_sha224] = { + DER_OID_V_id_sha224 +}; + +/* + * id-sha512-224 OBJECT IDENTIFIER ::= { hashAlgs 5 } + */ +const unsigned char ossl_der_oid_id_sha512_224[DER_OID_SZ_id_sha512_224] = { + DER_OID_V_id_sha512_224 +}; + +/* + * id-sha512-256 OBJECT IDENTIFIER ::= { hashAlgs 6 } + */ +const unsigned char ossl_der_oid_id_sha512_256[DER_OID_SZ_id_sha512_256] = { + DER_OID_V_id_sha512_256 +}; + +/* + * id-sha3-224 OBJECT IDENTIFIER ::= { hashAlgs 7 } + */ +const unsigned char ossl_der_oid_id_sha3_224[DER_OID_SZ_id_sha3_224] = { + DER_OID_V_id_sha3_224 +}; + +/* + * id-sha3-256 OBJECT IDENTIFIER ::= { hashAlgs 8 } + */ +const unsigned char ossl_der_oid_id_sha3_256[DER_OID_SZ_id_sha3_256] = { + DER_OID_V_id_sha3_256 +}; + +/* + * id-sha3-384 OBJECT IDENTIFIER ::= { hashAlgs 9 } + */ +const unsigned char ossl_der_oid_id_sha3_384[DER_OID_SZ_id_sha3_384] = { + DER_OID_V_id_sha3_384 +}; + +/* + * id-sha3-512 OBJECT IDENTIFIER ::= { hashAlgs 10 } + */ +const unsigned char ossl_der_oid_id_sha3_512[DER_OID_SZ_id_sha3_512] = { + DER_OID_V_id_sha3_512 +}; + +/* + * id-shake128 OBJECT IDENTIFIER ::= { hashAlgs 11 } + */ +const unsigned char ossl_der_oid_id_shake128[DER_OID_SZ_id_shake128] = { + DER_OID_V_id_shake128 +}; + +/* + * id-shake256 OBJECT IDENTIFIER ::= { hashAlgs 12 } + */ +const unsigned char ossl_der_oid_id_shake256[DER_OID_SZ_id_shake256] = { + DER_OID_V_id_shake256 +}; + +/* + * id-shake128-len OBJECT IDENTIFIER ::= { hashAlgs 17 } + */ +const unsigned char ossl_der_oid_id_shake128_len[DER_OID_SZ_id_shake128_len] = { + DER_OID_V_id_shake128_len +}; + +/* + * id-shake256-len OBJECT IDENTIFIER ::= { hashAlgs 18 } + */ +const unsigned char ossl_der_oid_id_shake256_len[DER_OID_SZ_id_shake256_len] = { + DER_OID_V_id_shake256_len +}; + +/* + * id-KMACWithSHAKE128 OBJECT IDENTIFIER ::={hashAlgs 19} + */ +const unsigned char ossl_der_oid_id_KMACWithSHAKE128[DER_OID_SZ_id_KMACWithSHAKE128] = { + DER_OID_V_id_KMACWithSHAKE128 +}; + +/* + * id-KMACWithSHAKE256 OBJECT IDENTIFIER ::={ hashAlgs 20} + */ +const unsigned char ossl_der_oid_id_KMACWithSHAKE256[DER_OID_SZ_id_KMACWithSHAKE256] = { + DER_OID_V_id_KMACWithSHAKE256 +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_dsa_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_dsa_gen.c new file mode 100644 index 00000000000000..02598156050181 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_dsa_gen.c @@ -0,0 +1,96 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_dsa_gen.c.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * DSA low level APIs are deprecated for public use, but still ok for + * internal use. + */ +#include "internal/deprecated.h" + +#include "prov/der_dsa.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-dsa OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } + */ +const unsigned char ossl_der_oid_id_dsa[DER_OID_SZ_id_dsa] = { + DER_OID_V_id_dsa +}; + +/* + * id-dsa-with-sha1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha1[DER_OID_SZ_id_dsa_with_sha1] = { + DER_OID_V_id_dsa_with_sha1 +}; + +/* + * id-dsa-with-sha224 OBJECT IDENTIFIER ::= { sigAlgs 1 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha224[DER_OID_SZ_id_dsa_with_sha224] = { + DER_OID_V_id_dsa_with_sha224 +}; + +/* + * id-dsa-with-sha256 OBJECT IDENTIFIER ::= { sigAlgs 2 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha256[DER_OID_SZ_id_dsa_with_sha256] = { + DER_OID_V_id_dsa_with_sha256 +}; + +/* + * id-dsa-with-sha384 OBJECT IDENTIFIER ::= { sigAlgs 3 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha384[DER_OID_SZ_id_dsa_with_sha384] = { + DER_OID_V_id_dsa_with_sha384 +}; + +/* + * id-dsa-with-sha512 OBJECT IDENTIFIER ::= { sigAlgs 4 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha512[DER_OID_SZ_id_dsa_with_sha512] = { + DER_OID_V_id_dsa_with_sha512 +}; + +/* + * id-dsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 5 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha3_224[DER_OID_SZ_id_dsa_with_sha3_224] = { + DER_OID_V_id_dsa_with_sha3_224 +}; + +/* + * id-dsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 6 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha3_256[DER_OID_SZ_id_dsa_with_sha3_256] = { + DER_OID_V_id_dsa_with_sha3_256 +}; + +/* + * id-dsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 7 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha3_384[DER_OID_SZ_id_dsa_with_sha3_384] = { + DER_OID_V_id_dsa_with_sha3_384 +}; + +/* + * id-dsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 8 } + */ +const unsigned char ossl_der_oid_id_dsa_with_sha3_512[DER_OID_SZ_id_dsa_with_sha3_512] = { + DER_OID_V_id_dsa_with_sha3_512 +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ec_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ec_gen.c new file mode 100644 index 00000000000000..49ce209ec40afa --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ec_gen.c @@ -0,0 +1,281 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ec_gen.c.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ec.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { id-ecSigType 1 } + */ +const unsigned char ossl_der_oid_ecdsa_with_SHA1[DER_OID_SZ_ecdsa_with_SHA1] = { + DER_OID_V_ecdsa_with_SHA1 +}; + +/* + * id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 } + */ +const unsigned char ossl_der_oid_id_ecPublicKey[DER_OID_SZ_id_ecPublicKey] = { + DER_OID_V_id_ecPublicKey +}; + +/* + * c2pnb163v1 OBJECT IDENTIFIER ::= { c-TwoCurve 1 } + */ +const unsigned char ossl_der_oid_c2pnb163v1[DER_OID_SZ_c2pnb163v1] = { + DER_OID_V_c2pnb163v1 +}; + +/* + * c2pnb163v2 OBJECT IDENTIFIER ::= { c-TwoCurve 2 } + */ +const unsigned char ossl_der_oid_c2pnb163v2[DER_OID_SZ_c2pnb163v2] = { + DER_OID_V_c2pnb163v2 +}; + +/* + * c2pnb163v3 OBJECT IDENTIFIER ::= { c-TwoCurve 3 } + */ +const unsigned char ossl_der_oid_c2pnb163v3[DER_OID_SZ_c2pnb163v3] = { + DER_OID_V_c2pnb163v3 +}; + +/* + * c2pnb176w1 OBJECT IDENTIFIER ::= { c-TwoCurve 4 } + */ +const unsigned char ossl_der_oid_c2pnb176w1[DER_OID_SZ_c2pnb176w1] = { + DER_OID_V_c2pnb176w1 +}; + +/* + * c2tnb191v1 OBJECT IDENTIFIER ::= { c-TwoCurve 5 } + */ +const unsigned char ossl_der_oid_c2tnb191v1[DER_OID_SZ_c2tnb191v1] = { + DER_OID_V_c2tnb191v1 +}; + +/* + * c2tnb191v2 OBJECT IDENTIFIER ::= { c-TwoCurve 6 } + */ +const unsigned char ossl_der_oid_c2tnb191v2[DER_OID_SZ_c2tnb191v2] = { + DER_OID_V_c2tnb191v2 +}; + +/* + * c2tnb191v3 OBJECT IDENTIFIER ::= { c-TwoCurve 7 } + */ +const unsigned char ossl_der_oid_c2tnb191v3[DER_OID_SZ_c2tnb191v3] = { + DER_OID_V_c2tnb191v3 +}; + +/* + * c2onb191v4 OBJECT IDENTIFIER ::= { c-TwoCurve 8 } + */ +const unsigned char ossl_der_oid_c2onb191v4[DER_OID_SZ_c2onb191v4] = { + DER_OID_V_c2onb191v4 +}; + +/* + * c2onb191v5 OBJECT IDENTIFIER ::= { c-TwoCurve 9 } + */ +const unsigned char ossl_der_oid_c2onb191v5[DER_OID_SZ_c2onb191v5] = { + DER_OID_V_c2onb191v5 +}; + +/* + * c2pnb208w1 OBJECT IDENTIFIER ::= { c-TwoCurve 10 } + */ +const unsigned char ossl_der_oid_c2pnb208w1[DER_OID_SZ_c2pnb208w1] = { + DER_OID_V_c2pnb208w1 +}; + +/* + * c2tnb239v1 OBJECT IDENTIFIER ::= { c-TwoCurve 11 } + */ +const unsigned char ossl_der_oid_c2tnb239v1[DER_OID_SZ_c2tnb239v1] = { + DER_OID_V_c2tnb239v1 +}; + +/* + * c2tnb239v2 OBJECT IDENTIFIER ::= { c-TwoCurve 12 } + */ +const unsigned char ossl_der_oid_c2tnb239v2[DER_OID_SZ_c2tnb239v2] = { + DER_OID_V_c2tnb239v2 +}; + +/* + * c2tnb239v3 OBJECT IDENTIFIER ::= { c-TwoCurve 13 } + */ +const unsigned char ossl_der_oid_c2tnb239v3[DER_OID_SZ_c2tnb239v3] = { + DER_OID_V_c2tnb239v3 +}; + +/* + * c2onb239v4 OBJECT IDENTIFIER ::= { c-TwoCurve 14 } + */ +const unsigned char ossl_der_oid_c2onb239v4[DER_OID_SZ_c2onb239v4] = { + DER_OID_V_c2onb239v4 +}; + +/* + * c2onb239v5 OBJECT IDENTIFIER ::= { c-TwoCurve 15 } + */ +const unsigned char ossl_der_oid_c2onb239v5[DER_OID_SZ_c2onb239v5] = { + DER_OID_V_c2onb239v5 +}; + +/* + * c2pnb272w1 OBJECT IDENTIFIER ::= { c-TwoCurve 16 } + */ +const unsigned char ossl_der_oid_c2pnb272w1[DER_OID_SZ_c2pnb272w1] = { + DER_OID_V_c2pnb272w1 +}; + +/* + * c2pnb304w1 OBJECT IDENTIFIER ::= { c-TwoCurve 17 } + */ +const unsigned char ossl_der_oid_c2pnb304w1[DER_OID_SZ_c2pnb304w1] = { + DER_OID_V_c2pnb304w1 +}; + +/* + * c2tnb359v1 OBJECT IDENTIFIER ::= { c-TwoCurve 18 } + */ +const unsigned char ossl_der_oid_c2tnb359v1[DER_OID_SZ_c2tnb359v1] = { + DER_OID_V_c2tnb359v1 +}; + +/* + * c2pnb368w1 OBJECT IDENTIFIER ::= { c-TwoCurve 19 } + */ +const unsigned char ossl_der_oid_c2pnb368w1[DER_OID_SZ_c2pnb368w1] = { + DER_OID_V_c2pnb368w1 +}; + +/* + * c2tnb431r1 OBJECT IDENTIFIER ::= { c-TwoCurve 20 } + */ +const unsigned char ossl_der_oid_c2tnb431r1[DER_OID_SZ_c2tnb431r1] = { + DER_OID_V_c2tnb431r1 +}; + +/* + * prime192v1 OBJECT IDENTIFIER ::= { primeCurve 1 } + */ +const unsigned char ossl_der_oid_prime192v1[DER_OID_SZ_prime192v1] = { + DER_OID_V_prime192v1 +}; + +/* + * prime192v2 OBJECT IDENTIFIER ::= { primeCurve 2 } + */ +const unsigned char ossl_der_oid_prime192v2[DER_OID_SZ_prime192v2] = { + DER_OID_V_prime192v2 +}; + +/* + * prime192v3 OBJECT IDENTIFIER ::= { primeCurve 3 } + */ +const unsigned char ossl_der_oid_prime192v3[DER_OID_SZ_prime192v3] = { + DER_OID_V_prime192v3 +}; + +/* + * prime239v1 OBJECT IDENTIFIER ::= { primeCurve 4 } + */ +const unsigned char ossl_der_oid_prime239v1[DER_OID_SZ_prime239v1] = { + DER_OID_V_prime239v1 +}; + +/* + * prime239v2 OBJECT IDENTIFIER ::= { primeCurve 5 } + */ +const unsigned char ossl_der_oid_prime239v2[DER_OID_SZ_prime239v2] = { + DER_OID_V_prime239v2 +}; + +/* + * prime239v3 OBJECT IDENTIFIER ::= { primeCurve 6 } + */ +const unsigned char ossl_der_oid_prime239v3[DER_OID_SZ_prime239v3] = { + DER_OID_V_prime239v3 +}; + +/* + * prime256v1 OBJECT IDENTIFIER ::= { primeCurve 7 } + */ +const unsigned char ossl_der_oid_prime256v1[DER_OID_SZ_prime256v1] = { + DER_OID_V_prime256v1 +}; + +/* + * ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 1 } + */ +const unsigned char ossl_der_oid_ecdsa_with_SHA224[DER_OID_SZ_ecdsa_with_SHA224] = { + DER_OID_V_ecdsa_with_SHA224 +}; + +/* + * ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 } + */ +const unsigned char ossl_der_oid_ecdsa_with_SHA256[DER_OID_SZ_ecdsa_with_SHA256] = { + DER_OID_V_ecdsa_with_SHA256 +}; + +/* + * ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 } + */ +const unsigned char ossl_der_oid_ecdsa_with_SHA384[DER_OID_SZ_ecdsa_with_SHA384] = { + DER_OID_V_ecdsa_with_SHA384 +}; + +/* + * ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 } + */ +const unsigned char ossl_der_oid_ecdsa_with_SHA512[DER_OID_SZ_ecdsa_with_SHA512] = { + DER_OID_V_ecdsa_with_SHA512 +}; + +/* + * id-ecdsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 9 } + */ +const unsigned char ossl_der_oid_id_ecdsa_with_sha3_224[DER_OID_SZ_id_ecdsa_with_sha3_224] = { + DER_OID_V_id_ecdsa_with_sha3_224 +}; + +/* + * id-ecdsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 10 } + */ +const unsigned char ossl_der_oid_id_ecdsa_with_sha3_256[DER_OID_SZ_id_ecdsa_with_sha3_256] = { + DER_OID_V_id_ecdsa_with_sha3_256 +}; + +/* + * id-ecdsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 11 } + */ +const unsigned char ossl_der_oid_id_ecdsa_with_sha3_384[DER_OID_SZ_id_ecdsa_with_sha3_384] = { + DER_OID_V_id_ecdsa_with_sha3_384 +}; + +/* + * id-ecdsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 12 } + */ +const unsigned char ossl_der_oid_id_ecdsa_with_sha3_512[DER_OID_SZ_id_ecdsa_with_sha3_512] = { + DER_OID_V_id_ecdsa_with_sha3_512 +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ecx_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ecx_gen.c new file mode 100644 index 00000000000000..64d73e3fc5255f --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ecx_gen.c @@ -0,0 +1,46 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ecx_gen.c.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ecx.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-X25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 110 } + */ +const unsigned char ossl_der_oid_id_X25519[DER_OID_SZ_id_X25519] = { + DER_OID_V_id_X25519 +}; + +/* + * id-X448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 111 } + */ +const unsigned char ossl_der_oid_id_X448[DER_OID_SZ_id_X448] = { + DER_OID_V_id_X448 +}; + +/* + * id-Ed25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 112 } + */ +const unsigned char ossl_der_oid_id_Ed25519[DER_OID_SZ_id_Ed25519] = { + DER_OID_V_id_Ed25519 +}; + +/* + * id-Ed448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 113 } + */ +const unsigned char ossl_der_oid_id_Ed448[DER_OID_SZ_id_Ed448] = { + DER_OID_V_id_Ed448 +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ml_dsa_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ml_dsa_gen.c new file mode 100644 index 00000000000000..69f4e852123187 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_ml_dsa_gen.c @@ -0,0 +1,39 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_ml_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_ml_dsa.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44] = { + DER_OID_V_id_ml_dsa_44 +}; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65] = { + DER_OID_V_id_ml_dsa_65 +}; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87] = { + DER_OID_V_id_ml_dsa_87 +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_rsa_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_rsa_gen.c new file mode 100644 index 00000000000000..911b6e58936f19 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_rsa_gen.c @@ -0,0 +1,176 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_rsa_gen.c.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_rsa.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * hashAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 2 } + */ +const unsigned char ossl_der_oid_hashAlgs[DER_OID_SZ_hashAlgs] = { + DER_OID_V_hashAlgs +}; + +/* + * rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } + */ +const unsigned char ossl_der_oid_rsaEncryption[DER_OID_SZ_rsaEncryption] = { + DER_OID_V_rsaEncryption +}; + +/* + * id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 } + */ +const unsigned char ossl_der_oid_id_RSAES_OAEP[DER_OID_SZ_id_RSAES_OAEP] = { + DER_OID_V_id_RSAES_OAEP +}; + +/* + * id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 } + */ +const unsigned char ossl_der_oid_id_pSpecified[DER_OID_SZ_id_pSpecified] = { + DER_OID_V_id_pSpecified +}; + +/* + * id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } + */ +const unsigned char ossl_der_oid_id_RSASSA_PSS[DER_OID_SZ_id_RSASSA_PSS] = { + DER_OID_V_id_RSASSA_PSS +}; + +/* + * md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } + */ +const unsigned char ossl_der_oid_md2WithRSAEncryption[DER_OID_SZ_md2WithRSAEncryption] = { + DER_OID_V_md2WithRSAEncryption +}; + +/* + * md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } + */ +const unsigned char ossl_der_oid_md5WithRSAEncryption[DER_OID_SZ_md5WithRSAEncryption] = { + DER_OID_V_md5WithRSAEncryption +}; + +/* + * sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } + */ +const unsigned char ossl_der_oid_sha1WithRSAEncryption[DER_OID_SZ_sha1WithRSAEncryption] = { + DER_OID_V_sha1WithRSAEncryption +}; + +/* + * sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 } + */ +const unsigned char ossl_der_oid_sha224WithRSAEncryption[DER_OID_SZ_sha224WithRSAEncryption] = { + DER_OID_V_sha224WithRSAEncryption +}; + +/* + * sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 } + */ +const unsigned char ossl_der_oid_sha256WithRSAEncryption[DER_OID_SZ_sha256WithRSAEncryption] = { + DER_OID_V_sha256WithRSAEncryption +}; + +/* + * sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 } + */ +const unsigned char ossl_der_oid_sha384WithRSAEncryption[DER_OID_SZ_sha384WithRSAEncryption] = { + DER_OID_V_sha384WithRSAEncryption +}; + +/* + * sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 } + */ +const unsigned char ossl_der_oid_sha512WithRSAEncryption[DER_OID_SZ_sha512WithRSAEncryption] = { + DER_OID_V_sha512WithRSAEncryption +}; + +/* + * sha512-224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 15 } + */ +const unsigned char ossl_der_oid_sha512_224WithRSAEncryption[DER_OID_SZ_sha512_224WithRSAEncryption] = { + DER_OID_V_sha512_224WithRSAEncryption +}; + +/* + * sha512-256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 16 } + */ +const unsigned char ossl_der_oid_sha512_256WithRSAEncryption[DER_OID_SZ_sha512_256WithRSAEncryption] = { + DER_OID_V_sha512_256WithRSAEncryption +}; + +/* + * id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 } + */ +const unsigned char ossl_der_oid_id_mgf1[DER_OID_SZ_id_mgf1] = { + DER_OID_V_id_mgf1 +}; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 13 } + */ +const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_224[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224] = { + DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_224 +}; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 14 } + */ +const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_256[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256] = { + DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_256 +}; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 15 } + */ +const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_384[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384] = { + DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_384 +}; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 16 } + */ +const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_512[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512] = { + DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_512 +}; + +/* + * md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 } + */ +const unsigned char ossl_der_oid_md4WithRSAEncryption[DER_OID_SZ_md4WithRSAEncryption] = { + DER_OID_V_md4WithRSAEncryption +}; + +/* + * ripemd160WithRSAEncryption OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) teletrust(36) algorithm(3) signatureAlgorithm(3) rsaSignature(1) 2 + * } + */ +const unsigned char ossl_der_oid_ripemd160WithRSAEncryption[DER_OID_SZ_ripemd160WithRSAEncryption] = { + DER_OID_V_ripemd160WithRSAEncryption +}; + +/* + * mdc2WithRSASignature OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) mdc2WithRSASignature(14) + * } + */ +const unsigned char ossl_der_oid_mdc2WithRSASignature[DER_OID_SZ_mdc2WithRSASignature] = { + DER_OID_V_mdc2WithRSASignature +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_slh_dsa_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_slh_dsa_gen.c new file mode 100644 index 00000000000000..81adc3b658697c --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_slh_dsa_gen.c @@ -0,0 +1,102 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_slh_dsa_gen.c.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_slh_dsa.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s] = { + DER_OID_V_id_slh_dsa_sha2_128s +}; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f] = { + DER_OID_V_id_slh_dsa_sha2_128f +}; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s] = { + DER_OID_V_id_slh_dsa_sha2_192s +}; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f] = { + DER_OID_V_id_slh_dsa_sha2_192f +}; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s] = { + DER_OID_V_id_slh_dsa_sha2_256s +}; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f] = { + DER_OID_V_id_slh_dsa_sha2_256f +}; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s] = { + DER_OID_V_id_slh_dsa_shake_128s +}; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f] = { + DER_OID_V_id_slh_dsa_shake_128f +}; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s] = { + DER_OID_V_id_slh_dsa_shake_192s +}; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f] = { + DER_OID_V_id_slh_dsa_shake_192f +}; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s] = { + DER_OID_V_id_slh_dsa_shake_256s +}; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f] = { + DER_OID_V_id_slh_dsa_shake_256f +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_sm2_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_sm2_gen.c new file mode 100644 index 00000000000000..6488058af2d2b1 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_sm2_gen.c @@ -0,0 +1,32 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_sm2_gen.c.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_sm2.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * sm2-with-SM3 OBJECT IDENTIFIER ::= { sm-scheme 501 } + */ +const unsigned char ossl_der_oid_sm2_with_SM3[DER_OID_SZ_sm2_with_SM3] = { + DER_OID_V_sm2_with_SM3 +}; + +/* + * curveSM2 OBJECT IDENTIFIER ::= { sm-scheme 301 } + */ +const unsigned char ossl_der_oid_curveSM2[DER_OID_SZ_curveSM2] = { + DER_OID_V_curveSM2 +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_wrap_gen.c b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_wrap_gen.c new file mode 100644 index 00000000000000..def5c3524185a3 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/der/der_wrap_gen.c @@ -0,0 +1,48 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/der/der_wrap_gen.c.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "prov/der_wrap.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-alg-CMS3DESwrap OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 6 + * } + */ +const unsigned char ossl_der_oid_id_alg_CMS3DESwrap[DER_OID_SZ_id_alg_CMS3DESwrap] = { + DER_OID_V_id_alg_CMS3DESwrap +}; + +/* + * id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 } + */ +const unsigned char ossl_der_oid_id_aes128_wrap[DER_OID_SZ_id_aes128_wrap] = { + DER_OID_V_id_aes128_wrap +}; + +/* + * id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 } + */ +const unsigned char ossl_der_oid_id_aes192_wrap[DER_OID_SZ_id_aes192_wrap] = { + DER_OID_V_id_aes192_wrap +}; + +/* + * id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 } + */ +const unsigned char ossl_der_oid_id_aes256_wrap[DER_OID_SZ_id_aes256_wrap] = { + DER_OID_V_id_aes256_wrap +}; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_digests.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_digests.h new file mode 100644 index 00000000000000..c6531033f27941 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_digests.h @@ -0,0 +1,162 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_digests.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * sigAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 3 } + */ +#define DER_OID_V_sigAlgs DER_P_OBJECT, 8, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03 +#define DER_OID_SZ_sigAlgs 10 +extern const unsigned char ossl_der_oid_sigAlgs[DER_OID_SZ_sigAlgs]; + +/* + * id-sha1 OBJECT IDENTIFIER ::= { iso(1) + * identified-organization(3) oiw(14) + * secsig(3) algorithms(2) 26 } + */ +#define DER_OID_V_id_sha1 DER_P_OBJECT, 5, 0x2B, 0x0E, 0x03, 0x02, 0x1A +#define DER_OID_SZ_id_sha1 7 +extern const unsigned char ossl_der_oid_id_sha1[DER_OID_SZ_id_sha1]; + +/* + * id-md2 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 } + */ +#define DER_OID_V_id_md2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x02 +#define DER_OID_SZ_id_md2 10 +extern const unsigned char ossl_der_oid_id_md2[DER_OID_SZ_id_md2]; + +/* + * id-md5 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } + */ +#define DER_OID_V_id_md5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05 +#define DER_OID_SZ_id_md5 10 +extern const unsigned char ossl_der_oid_id_md5[DER_OID_SZ_id_md5]; + +/* + * id-sha256 OBJECT IDENTIFIER ::= { hashAlgs 1 } + */ +#define DER_OID_V_id_sha256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01 +#define DER_OID_SZ_id_sha256 11 +extern const unsigned char ossl_der_oid_id_sha256[DER_OID_SZ_id_sha256]; + +/* + * id-sha384 OBJECT IDENTIFIER ::= { hashAlgs 2 } + */ +#define DER_OID_V_id_sha384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02 +#define DER_OID_SZ_id_sha384 11 +extern const unsigned char ossl_der_oid_id_sha384[DER_OID_SZ_id_sha384]; + +/* + * id-sha512 OBJECT IDENTIFIER ::= { hashAlgs 3 } + */ +#define DER_OID_V_id_sha512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03 +#define DER_OID_SZ_id_sha512 11 +extern const unsigned char ossl_der_oid_id_sha512[DER_OID_SZ_id_sha512]; + +/* + * id-sha224 OBJECT IDENTIFIER ::= { hashAlgs 4 } + */ +#define DER_OID_V_id_sha224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04 +#define DER_OID_SZ_id_sha224 11 +extern const unsigned char ossl_der_oid_id_sha224[DER_OID_SZ_id_sha224]; + +/* + * id-sha512-224 OBJECT IDENTIFIER ::= { hashAlgs 5 } + */ +#define DER_OID_V_id_sha512_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x05 +#define DER_OID_SZ_id_sha512_224 11 +extern const unsigned char ossl_der_oid_id_sha512_224[DER_OID_SZ_id_sha512_224]; + +/* + * id-sha512-256 OBJECT IDENTIFIER ::= { hashAlgs 6 } + */ +#define DER_OID_V_id_sha512_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x06 +#define DER_OID_SZ_id_sha512_256 11 +extern const unsigned char ossl_der_oid_id_sha512_256[DER_OID_SZ_id_sha512_256]; + +/* + * id-sha3-224 OBJECT IDENTIFIER ::= { hashAlgs 7 } + */ +#define DER_OID_V_id_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x07 +#define DER_OID_SZ_id_sha3_224 11 +extern const unsigned char ossl_der_oid_id_sha3_224[DER_OID_SZ_id_sha3_224]; + +/* + * id-sha3-256 OBJECT IDENTIFIER ::= { hashAlgs 8 } + */ +#define DER_OID_V_id_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x08 +#define DER_OID_SZ_id_sha3_256 11 +extern const unsigned char ossl_der_oid_id_sha3_256[DER_OID_SZ_id_sha3_256]; + +/* + * id-sha3-384 OBJECT IDENTIFIER ::= { hashAlgs 9 } + */ +#define DER_OID_V_id_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x09 +#define DER_OID_SZ_id_sha3_384 11 +extern const unsigned char ossl_der_oid_id_sha3_384[DER_OID_SZ_id_sha3_384]; + +/* + * id-sha3-512 OBJECT IDENTIFIER ::= { hashAlgs 10 } + */ +#define DER_OID_V_id_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0A +#define DER_OID_SZ_id_sha3_512 11 +extern const unsigned char ossl_der_oid_id_sha3_512[DER_OID_SZ_id_sha3_512]; + +/* + * id-shake128 OBJECT IDENTIFIER ::= { hashAlgs 11 } + */ +#define DER_OID_V_id_shake128 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0B +#define DER_OID_SZ_id_shake128 11 +extern const unsigned char ossl_der_oid_id_shake128[DER_OID_SZ_id_shake128]; + +/* + * id-shake256 OBJECT IDENTIFIER ::= { hashAlgs 12 } + */ +#define DER_OID_V_id_shake256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0C +#define DER_OID_SZ_id_shake256 11 +extern const unsigned char ossl_der_oid_id_shake256[DER_OID_SZ_id_shake256]; + +/* + * id-shake128-len OBJECT IDENTIFIER ::= { hashAlgs 17 } + */ +#define DER_OID_V_id_shake128_len DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x11 +#define DER_OID_SZ_id_shake128_len 11 +extern const unsigned char ossl_der_oid_id_shake128_len[DER_OID_SZ_id_shake128_len]; + +/* + * id-shake256-len OBJECT IDENTIFIER ::= { hashAlgs 18 } + */ +#define DER_OID_V_id_shake256_len DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x12 +#define DER_OID_SZ_id_shake256_len 11 +extern const unsigned char ossl_der_oid_id_shake256_len[DER_OID_SZ_id_shake256_len]; + +/* + * id-KMACWithSHAKE128 OBJECT IDENTIFIER ::={hashAlgs 19} + */ +#define DER_OID_V_id_KMACWithSHAKE128 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x13 +#define DER_OID_SZ_id_KMACWithSHAKE128 11 +extern const unsigned char ossl_der_oid_id_KMACWithSHAKE128[DER_OID_SZ_id_KMACWithSHAKE128]; + +/* + * id-KMACWithSHAKE256 OBJECT IDENTIFIER ::={ hashAlgs 20} + */ +#define DER_OID_V_id_KMACWithSHAKE256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x14 +#define DER_OID_SZ_id_KMACWithSHAKE256 11 +extern const unsigned char ossl_der_oid_id_KMACWithSHAKE256[DER_OID_SZ_id_KMACWithSHAKE256]; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_dsa.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_dsa.h new file mode 100644 index 00000000000000..3dcd57ebec4383 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_dsa.h @@ -0,0 +1,96 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_dsa.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-dsa OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } + */ +#define DER_OID_V_id_dsa DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x38, 0x04, 0x01 +#define DER_OID_SZ_id_dsa 9 +extern const unsigned char ossl_der_oid_id_dsa[DER_OID_SZ_id_dsa]; + +/* + * id-dsa-with-sha1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } + */ +#define DER_OID_V_id_dsa_with_sha1 DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x38, 0x04, 0x03 +#define DER_OID_SZ_id_dsa_with_sha1 9 +extern const unsigned char ossl_der_oid_id_dsa_with_sha1[DER_OID_SZ_id_dsa_with_sha1]; + +/* + * id-dsa-with-sha224 OBJECT IDENTIFIER ::= { sigAlgs 1 } + */ +#define DER_OID_V_id_dsa_with_sha224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x01 +#define DER_OID_SZ_id_dsa_with_sha224 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha224[DER_OID_SZ_id_dsa_with_sha224]; + +/* + * id-dsa-with-sha256 OBJECT IDENTIFIER ::= { sigAlgs 2 } + */ +#define DER_OID_V_id_dsa_with_sha256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x02 +#define DER_OID_SZ_id_dsa_with_sha256 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha256[DER_OID_SZ_id_dsa_with_sha256]; + +/* + * id-dsa-with-sha384 OBJECT IDENTIFIER ::= { sigAlgs 3 } + */ +#define DER_OID_V_id_dsa_with_sha384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x03 +#define DER_OID_SZ_id_dsa_with_sha384 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha384[DER_OID_SZ_id_dsa_with_sha384]; + +/* + * id-dsa-with-sha512 OBJECT IDENTIFIER ::= { sigAlgs 4 } + */ +#define DER_OID_V_id_dsa_with_sha512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x04 +#define DER_OID_SZ_id_dsa_with_sha512 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha512[DER_OID_SZ_id_dsa_with_sha512]; + +/* + * id-dsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 5 } + */ +#define DER_OID_V_id_dsa_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x05 +#define DER_OID_SZ_id_dsa_with_sha3_224 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha3_224[DER_OID_SZ_id_dsa_with_sha3_224]; + +/* + * id-dsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 6 } + */ +#define DER_OID_V_id_dsa_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x06 +#define DER_OID_SZ_id_dsa_with_sha3_256 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha3_256[DER_OID_SZ_id_dsa_with_sha3_256]; + +/* + * id-dsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 7 } + */ +#define DER_OID_V_id_dsa_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x07 +#define DER_OID_SZ_id_dsa_with_sha3_384 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha3_384[DER_OID_SZ_id_dsa_with_sha3_384]; + +/* + * id-dsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 8 } + */ +#define DER_OID_V_id_dsa_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x08 +#define DER_OID_SZ_id_dsa_with_sha3_512 11 +extern const unsigned char ossl_der_oid_id_dsa_with_sha3_512[DER_OID_SZ_id_dsa_with_sha3_512]; + +/* clang-format on */ + +/* Subject Public Key Info */ +int ossl_DER_w_algorithmIdentifier_DSA(WPACKET *pkt, int tag, DSA *dsa); +/* Signature */ +int ossl_DER_w_algorithmIdentifier_DSA_with_MD(WPACKET *pkt, int tag, + DSA *dsa, int mdnid); diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_ec.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_ec.h new file mode 100644 index 00000000000000..059c77d38ea794 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_ec.h @@ -0,0 +1,288 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ec.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "crypto/ec.h" +#include "internal/der.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { id-ecSigType 1 } + */ +#define DER_OID_V_ecdsa_with_SHA1 DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x01 +#define DER_OID_SZ_ecdsa_with_SHA1 9 +extern const unsigned char ossl_der_oid_ecdsa_with_SHA1[DER_OID_SZ_ecdsa_with_SHA1]; + +/* + * id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 } + */ +#define DER_OID_V_id_ecPublicKey DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01 +#define DER_OID_SZ_id_ecPublicKey 9 +extern const unsigned char ossl_der_oid_id_ecPublicKey[DER_OID_SZ_id_ecPublicKey]; + +/* + * c2pnb163v1 OBJECT IDENTIFIER ::= { c-TwoCurve 1 } + */ +#define DER_OID_V_c2pnb163v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x01 +#define DER_OID_SZ_c2pnb163v1 10 +extern const unsigned char ossl_der_oid_c2pnb163v1[DER_OID_SZ_c2pnb163v1]; + +/* + * c2pnb163v2 OBJECT IDENTIFIER ::= { c-TwoCurve 2 } + */ +#define DER_OID_V_c2pnb163v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x02 +#define DER_OID_SZ_c2pnb163v2 10 +extern const unsigned char ossl_der_oid_c2pnb163v2[DER_OID_SZ_c2pnb163v2]; + +/* + * c2pnb163v3 OBJECT IDENTIFIER ::= { c-TwoCurve 3 } + */ +#define DER_OID_V_c2pnb163v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x03 +#define DER_OID_SZ_c2pnb163v3 10 +extern const unsigned char ossl_der_oid_c2pnb163v3[DER_OID_SZ_c2pnb163v3]; + +/* + * c2pnb176w1 OBJECT IDENTIFIER ::= { c-TwoCurve 4 } + */ +#define DER_OID_V_c2pnb176w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x04 +#define DER_OID_SZ_c2pnb176w1 10 +extern const unsigned char ossl_der_oid_c2pnb176w1[DER_OID_SZ_c2pnb176w1]; + +/* + * c2tnb191v1 OBJECT IDENTIFIER ::= { c-TwoCurve 5 } + */ +#define DER_OID_V_c2tnb191v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x05 +#define DER_OID_SZ_c2tnb191v1 10 +extern const unsigned char ossl_der_oid_c2tnb191v1[DER_OID_SZ_c2tnb191v1]; + +/* + * c2tnb191v2 OBJECT IDENTIFIER ::= { c-TwoCurve 6 } + */ +#define DER_OID_V_c2tnb191v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x06 +#define DER_OID_SZ_c2tnb191v2 10 +extern const unsigned char ossl_der_oid_c2tnb191v2[DER_OID_SZ_c2tnb191v2]; + +/* + * c2tnb191v3 OBJECT IDENTIFIER ::= { c-TwoCurve 7 } + */ +#define DER_OID_V_c2tnb191v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x07 +#define DER_OID_SZ_c2tnb191v3 10 +extern const unsigned char ossl_der_oid_c2tnb191v3[DER_OID_SZ_c2tnb191v3]; + +/* + * c2onb191v4 OBJECT IDENTIFIER ::= { c-TwoCurve 8 } + */ +#define DER_OID_V_c2onb191v4 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x08 +#define DER_OID_SZ_c2onb191v4 10 +extern const unsigned char ossl_der_oid_c2onb191v4[DER_OID_SZ_c2onb191v4]; + +/* + * c2onb191v5 OBJECT IDENTIFIER ::= { c-TwoCurve 9 } + */ +#define DER_OID_V_c2onb191v5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x09 +#define DER_OID_SZ_c2onb191v5 10 +extern const unsigned char ossl_der_oid_c2onb191v5[DER_OID_SZ_c2onb191v5]; + +/* + * c2pnb208w1 OBJECT IDENTIFIER ::= { c-TwoCurve 10 } + */ +#define DER_OID_V_c2pnb208w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0A +#define DER_OID_SZ_c2pnb208w1 10 +extern const unsigned char ossl_der_oid_c2pnb208w1[DER_OID_SZ_c2pnb208w1]; + +/* + * c2tnb239v1 OBJECT IDENTIFIER ::= { c-TwoCurve 11 } + */ +#define DER_OID_V_c2tnb239v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0B +#define DER_OID_SZ_c2tnb239v1 10 +extern const unsigned char ossl_der_oid_c2tnb239v1[DER_OID_SZ_c2tnb239v1]; + +/* + * c2tnb239v2 OBJECT IDENTIFIER ::= { c-TwoCurve 12 } + */ +#define DER_OID_V_c2tnb239v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0C +#define DER_OID_SZ_c2tnb239v2 10 +extern const unsigned char ossl_der_oid_c2tnb239v2[DER_OID_SZ_c2tnb239v2]; + +/* + * c2tnb239v3 OBJECT IDENTIFIER ::= { c-TwoCurve 13 } + */ +#define DER_OID_V_c2tnb239v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0D +#define DER_OID_SZ_c2tnb239v3 10 +extern const unsigned char ossl_der_oid_c2tnb239v3[DER_OID_SZ_c2tnb239v3]; + +/* + * c2onb239v4 OBJECT IDENTIFIER ::= { c-TwoCurve 14 } + */ +#define DER_OID_V_c2onb239v4 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0E +#define DER_OID_SZ_c2onb239v4 10 +extern const unsigned char ossl_der_oid_c2onb239v4[DER_OID_SZ_c2onb239v4]; + +/* + * c2onb239v5 OBJECT IDENTIFIER ::= { c-TwoCurve 15 } + */ +#define DER_OID_V_c2onb239v5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0F +#define DER_OID_SZ_c2onb239v5 10 +extern const unsigned char ossl_der_oid_c2onb239v5[DER_OID_SZ_c2onb239v5]; + +/* + * c2pnb272w1 OBJECT IDENTIFIER ::= { c-TwoCurve 16 } + */ +#define DER_OID_V_c2pnb272w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x10 +#define DER_OID_SZ_c2pnb272w1 10 +extern const unsigned char ossl_der_oid_c2pnb272w1[DER_OID_SZ_c2pnb272w1]; + +/* + * c2pnb304w1 OBJECT IDENTIFIER ::= { c-TwoCurve 17 } + */ +#define DER_OID_V_c2pnb304w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x11 +#define DER_OID_SZ_c2pnb304w1 10 +extern const unsigned char ossl_der_oid_c2pnb304w1[DER_OID_SZ_c2pnb304w1]; + +/* + * c2tnb359v1 OBJECT IDENTIFIER ::= { c-TwoCurve 18 } + */ +#define DER_OID_V_c2tnb359v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x12 +#define DER_OID_SZ_c2tnb359v1 10 +extern const unsigned char ossl_der_oid_c2tnb359v1[DER_OID_SZ_c2tnb359v1]; + +/* + * c2pnb368w1 OBJECT IDENTIFIER ::= { c-TwoCurve 19 } + */ +#define DER_OID_V_c2pnb368w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x13 +#define DER_OID_SZ_c2pnb368w1 10 +extern const unsigned char ossl_der_oid_c2pnb368w1[DER_OID_SZ_c2pnb368w1]; + +/* + * c2tnb431r1 OBJECT IDENTIFIER ::= { c-TwoCurve 20 } + */ +#define DER_OID_V_c2tnb431r1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x14 +#define DER_OID_SZ_c2tnb431r1 10 +extern const unsigned char ossl_der_oid_c2tnb431r1[DER_OID_SZ_c2tnb431r1]; + +/* + * prime192v1 OBJECT IDENTIFIER ::= { primeCurve 1 } + */ +#define DER_OID_V_prime192v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x01 +#define DER_OID_SZ_prime192v1 10 +extern const unsigned char ossl_der_oid_prime192v1[DER_OID_SZ_prime192v1]; + +/* + * prime192v2 OBJECT IDENTIFIER ::= { primeCurve 2 } + */ +#define DER_OID_V_prime192v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x02 +#define DER_OID_SZ_prime192v2 10 +extern const unsigned char ossl_der_oid_prime192v2[DER_OID_SZ_prime192v2]; + +/* + * prime192v3 OBJECT IDENTIFIER ::= { primeCurve 3 } + */ +#define DER_OID_V_prime192v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x03 +#define DER_OID_SZ_prime192v3 10 +extern const unsigned char ossl_der_oid_prime192v3[DER_OID_SZ_prime192v3]; + +/* + * prime239v1 OBJECT IDENTIFIER ::= { primeCurve 4 } + */ +#define DER_OID_V_prime239v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x04 +#define DER_OID_SZ_prime239v1 10 +extern const unsigned char ossl_der_oid_prime239v1[DER_OID_SZ_prime239v1]; + +/* + * prime239v2 OBJECT IDENTIFIER ::= { primeCurve 5 } + */ +#define DER_OID_V_prime239v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x05 +#define DER_OID_SZ_prime239v2 10 +extern const unsigned char ossl_der_oid_prime239v2[DER_OID_SZ_prime239v2]; + +/* + * prime239v3 OBJECT IDENTIFIER ::= { primeCurve 6 } + */ +#define DER_OID_V_prime239v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x06 +#define DER_OID_SZ_prime239v3 10 +extern const unsigned char ossl_der_oid_prime239v3[DER_OID_SZ_prime239v3]; + +/* + * prime256v1 OBJECT IDENTIFIER ::= { primeCurve 7 } + */ +#define DER_OID_V_prime256v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07 +#define DER_OID_SZ_prime256v1 10 +extern const unsigned char ossl_der_oid_prime256v1[DER_OID_SZ_prime256v1]; + +/* + * ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 1 } + */ +#define DER_OID_V_ecdsa_with_SHA224 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x01 +#define DER_OID_SZ_ecdsa_with_SHA224 10 +extern const unsigned char ossl_der_oid_ecdsa_with_SHA224[DER_OID_SZ_ecdsa_with_SHA224]; + +/* + * ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 } + */ +#define DER_OID_V_ecdsa_with_SHA256 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02 +#define DER_OID_SZ_ecdsa_with_SHA256 10 +extern const unsigned char ossl_der_oid_ecdsa_with_SHA256[DER_OID_SZ_ecdsa_with_SHA256]; + +/* + * ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 } + */ +#define DER_OID_V_ecdsa_with_SHA384 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x03 +#define DER_OID_SZ_ecdsa_with_SHA384 10 +extern const unsigned char ossl_der_oid_ecdsa_with_SHA384[DER_OID_SZ_ecdsa_with_SHA384]; + +/* + * ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 } + */ +#define DER_OID_V_ecdsa_with_SHA512 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x04 +#define DER_OID_SZ_ecdsa_with_SHA512 10 +extern const unsigned char ossl_der_oid_ecdsa_with_SHA512[DER_OID_SZ_ecdsa_with_SHA512]; + +/* + * id-ecdsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 9 } + */ +#define DER_OID_V_id_ecdsa_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x09 +#define DER_OID_SZ_id_ecdsa_with_sha3_224 11 +extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_224[DER_OID_SZ_id_ecdsa_with_sha3_224]; + +/* + * id-ecdsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 10 } + */ +#define DER_OID_V_id_ecdsa_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0A +#define DER_OID_SZ_id_ecdsa_with_sha3_256 11 +extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_256[DER_OID_SZ_id_ecdsa_with_sha3_256]; + +/* + * id-ecdsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 11 } + */ +#define DER_OID_V_id_ecdsa_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0B +#define DER_OID_SZ_id_ecdsa_with_sha3_384 11 +extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_384[DER_OID_SZ_id_ecdsa_with_sha3_384]; + +/* + * id-ecdsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 12 } + */ +#define DER_OID_V_id_ecdsa_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0C +#define DER_OID_SZ_id_ecdsa_with_sha3_512 11 +extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_512[DER_OID_SZ_id_ecdsa_with_sha3_512]; + +/* clang-format on */ + +/* Subject Public Key Info */ +int ossl_DER_w_algorithmIdentifier_EC(WPACKET *pkt, int cont, EC_KEY *ec); +/* Signature */ +int ossl_DER_w_algorithmIdentifier_ECDSA_with_MD(WPACKET *pkt, int cont, + EC_KEY *ec, int mdnid); diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_ecx.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_ecx.h new file mode 100644 index 00000000000000..80e15fad803d19 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_ecx.h @@ -0,0 +1,52 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ecx.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ecx.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-X25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 110 } + */ +#define DER_OID_V_id_X25519 DER_P_OBJECT, 3, 0x2B, 0x65, 0x6E +#define DER_OID_SZ_id_X25519 5 +extern const unsigned char ossl_der_oid_id_X25519[DER_OID_SZ_id_X25519]; + +/* + * id-X448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 111 } + */ +#define DER_OID_V_id_X448 DER_P_OBJECT, 3, 0x2B, 0x65, 0x6F +#define DER_OID_SZ_id_X448 5 +extern const unsigned char ossl_der_oid_id_X448[DER_OID_SZ_id_X448]; + +/* + * id-Ed25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 112 } + */ +#define DER_OID_V_id_Ed25519 DER_P_OBJECT, 3, 0x2B, 0x65, 0x70 +#define DER_OID_SZ_id_Ed25519 5 +extern const unsigned char ossl_der_oid_id_Ed25519[DER_OID_SZ_id_Ed25519]; + +/* + * id-Ed448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 113 } + */ +#define DER_OID_V_id_Ed448 DER_P_OBJECT, 3, 0x2B, 0x65, 0x71 +#define DER_OID_SZ_id_Ed448 5 +extern const unsigned char ossl_der_oid_id_Ed448[DER_OID_SZ_id_Ed448]; + +/* clang-format on */ + +int ossl_DER_w_algorithmIdentifier_ED25519(WPACKET *pkt, int cont, ECX_KEY *ec); +int ossl_DER_w_algorithmIdentifier_ED448(WPACKET *pkt, int cont, ECX_KEY *ec); +int ossl_DER_w_algorithmIdentifier_X25519(WPACKET *pkt, int cont, ECX_KEY *ec); +int ossl_DER_w_algorithmIdentifier_X448(WPACKET *pkt, int cont, ECX_KEY *ec); diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_ml_dsa.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_ml_dsa.h new file mode 100644 index 00000000000000..a6c4c87d7824f7 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_ml_dsa.h @@ -0,0 +1,42 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_ml_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/ml_dsa.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-ml-dsa-44 OBJECT IDENTIFIER ::= { sigAlgs 17 } + */ +#define DER_OID_V_id_ml_dsa_44 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x11 +#define DER_OID_SZ_id_ml_dsa_44 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_44[DER_OID_SZ_id_ml_dsa_44]; + +/* + * id-ml-dsa-65 OBJECT IDENTIFIER ::= { sigAlgs 18 } + */ +#define DER_OID_V_id_ml_dsa_65 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x12 +#define DER_OID_SZ_id_ml_dsa_65 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_65[DER_OID_SZ_id_ml_dsa_65]; + +/* + * id-ml-dsa-87 OBJECT IDENTIFIER ::= { sigAlgs 19 } + */ +#define DER_OID_V_id_ml_dsa_87 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x13 +#define DER_OID_SZ_id_ml_dsa_87 11 +extern const unsigned char ossl_der_oid_id_ml_dsa_87[DER_OID_SZ_id_ml_dsa_87]; + +/* clang-format on */ + +int ossl_DER_w_algorithmIdentifier_ML_DSA(WPACKET *pkt, int tag, ML_DSA_KEY *key); diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_rsa.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_rsa.h new file mode 100644 index 00000000000000..9c374ceb2b0ea6 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_rsa.h @@ -0,0 +1,189 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_rsa.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "crypto/rsa.h" +#include "internal/der.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * hashAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 2 } + */ +#define DER_OID_V_hashAlgs DER_P_OBJECT, 8, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02 +#define DER_OID_SZ_hashAlgs 10 +extern const unsigned char ossl_der_oid_hashAlgs[DER_OID_SZ_hashAlgs]; + +/* + * rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } + */ +#define DER_OID_V_rsaEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01 +#define DER_OID_SZ_rsaEncryption 11 +extern const unsigned char ossl_der_oid_rsaEncryption[DER_OID_SZ_rsaEncryption]; + +/* + * id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 } + */ +#define DER_OID_V_id_RSAES_OAEP DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x07 +#define DER_OID_SZ_id_RSAES_OAEP 11 +extern const unsigned char ossl_der_oid_id_RSAES_OAEP[DER_OID_SZ_id_RSAES_OAEP]; + +/* + * id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 } + */ +#define DER_OID_V_id_pSpecified DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x09 +#define DER_OID_SZ_id_pSpecified 11 +extern const unsigned char ossl_der_oid_id_pSpecified[DER_OID_SZ_id_pSpecified]; + +/* + * id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } + */ +#define DER_OID_V_id_RSASSA_PSS DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0A +#define DER_OID_SZ_id_RSASSA_PSS 11 +extern const unsigned char ossl_der_oid_id_RSASSA_PSS[DER_OID_SZ_id_RSASSA_PSS]; + +/* + * md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } + */ +#define DER_OID_V_md2WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x02 +#define DER_OID_SZ_md2WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_md2WithRSAEncryption[DER_OID_SZ_md2WithRSAEncryption]; + +/* + * md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } + */ +#define DER_OID_V_md5WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04 +#define DER_OID_SZ_md5WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_md5WithRSAEncryption[DER_OID_SZ_md5WithRSAEncryption]; + +/* + * sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } + */ +#define DER_OID_V_sha1WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05 +#define DER_OID_SZ_sha1WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_sha1WithRSAEncryption[DER_OID_SZ_sha1WithRSAEncryption]; + +/* + * sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 } + */ +#define DER_OID_V_sha224WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0E +#define DER_OID_SZ_sha224WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_sha224WithRSAEncryption[DER_OID_SZ_sha224WithRSAEncryption]; + +/* + * sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 } + */ +#define DER_OID_V_sha256WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B +#define DER_OID_SZ_sha256WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_sha256WithRSAEncryption[DER_OID_SZ_sha256WithRSAEncryption]; + +/* + * sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 } + */ +#define DER_OID_V_sha384WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0C +#define DER_OID_SZ_sha384WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_sha384WithRSAEncryption[DER_OID_SZ_sha384WithRSAEncryption]; + +/* + * sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 } + */ +#define DER_OID_V_sha512WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0D +#define DER_OID_SZ_sha512WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_sha512WithRSAEncryption[DER_OID_SZ_sha512WithRSAEncryption]; + +/* + * sha512-224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 15 } + */ +#define DER_OID_V_sha512_224WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0F +#define DER_OID_SZ_sha512_224WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_sha512_224WithRSAEncryption[DER_OID_SZ_sha512_224WithRSAEncryption]; + +/* + * sha512-256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 16 } + */ +#define DER_OID_V_sha512_256WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x10 +#define DER_OID_SZ_sha512_256WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_sha512_256WithRSAEncryption[DER_OID_SZ_sha512_256WithRSAEncryption]; + +/* + * id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 } + */ +#define DER_OID_V_id_mgf1 DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x08 +#define DER_OID_SZ_id_mgf1 11 +extern const unsigned char ossl_der_oid_id_mgf1[DER_OID_SZ_id_mgf1]; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 13 } + */ +#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0D +#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224 11 +extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_224[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224]; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 14 } + */ +#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0E +#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256 11 +extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_256[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256]; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 15 } + */ +#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0F +#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384 11 +extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_384[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384]; + +/* + * id-rsassa-pkcs1-v1_5-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 16 } + */ +#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x10 +#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512 11 +extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_512[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512]; + +/* + * md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 } + */ +#define DER_OID_V_md4WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x03 +#define DER_OID_SZ_md4WithRSAEncryption 11 +extern const unsigned char ossl_der_oid_md4WithRSAEncryption[DER_OID_SZ_md4WithRSAEncryption]; + +/* + * ripemd160WithRSAEncryption OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) teletrust(36) algorithm(3) signatureAlgorithm(3) rsaSignature(1) 2 + * } + */ +#define DER_OID_V_ripemd160WithRSAEncryption DER_P_OBJECT, 6, 0x2B, 0x24, 0x03, 0x03, 0x01, 0x02 +#define DER_OID_SZ_ripemd160WithRSAEncryption 8 +extern const unsigned char ossl_der_oid_ripemd160WithRSAEncryption[DER_OID_SZ_ripemd160WithRSAEncryption]; + +/* + * mdc2WithRSASignature OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) mdc2WithRSASignature(14) + * } + */ +#define DER_OID_V_mdc2WithRSASignature DER_P_OBJECT, 5, 0x2B, 0x0E, 0x03, 0x02, 0x0E +#define DER_OID_SZ_mdc2WithRSASignature 7 +extern const unsigned char ossl_der_oid_mdc2WithRSASignature[DER_OID_SZ_mdc2WithRSASignature]; + +/* clang-format on */ + +/* PSS parameters */ +int ossl_DER_w_RSASSA_PSS_params(WPACKET *pkt, int tag, + const RSA_PSS_PARAMS_30 *pss); +/* Subject Public Key Info */ +int ossl_DER_w_algorithmIdentifier_RSA(WPACKET *pkt, int tag, RSA *rsa); +int ossl_DER_w_algorithmIdentifier_RSA_PSS(WPACKET *pkt, int tag, + int rsa_type, + const RSA_PSS_PARAMS_30 *pss); +/* Signature */ +int ossl_DER_w_algorithmIdentifier_MDWithRSAEncryption(WPACKET *pkt, int tag, + int mdnid); diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_slh_dsa.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_slh_dsa.h new file mode 100644 index 00000000000000..eaf1ab14fd0032 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_slh_dsa.h @@ -0,0 +1,105 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_slh_dsa.h.in + * + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" +#include "crypto/slh_dsa.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-slh-dsa-sha2-128s OBJECT IDENTIFIER ::= { sigAlgs 20 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x14 +#define DER_OID_SZ_id_slh_dsa_sha2_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128s[DER_OID_SZ_id_slh_dsa_sha2_128s]; + +/* + * id-slh-dsa-sha2-128f OBJECT IDENTIFIER ::= { sigAlgs 21 } + */ +#define DER_OID_V_id_slh_dsa_sha2_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x15 +#define DER_OID_SZ_id_slh_dsa_sha2_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_128f[DER_OID_SZ_id_slh_dsa_sha2_128f]; + +/* + * id-slh-dsa-sha2-192s OBJECT IDENTIFIER ::= { sigAlgs 22 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x16 +#define DER_OID_SZ_id_slh_dsa_sha2_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192s[DER_OID_SZ_id_slh_dsa_sha2_192s]; + +/* + * id-slh-dsa-sha2-192f OBJECT IDENTIFIER ::= { sigAlgs 23 } + */ +#define DER_OID_V_id_slh_dsa_sha2_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x17 +#define DER_OID_SZ_id_slh_dsa_sha2_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_192f[DER_OID_SZ_id_slh_dsa_sha2_192f]; + +/* + * id-slh-dsa-sha2-256s OBJECT IDENTIFIER ::= { sigAlgs 24 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x18 +#define DER_OID_SZ_id_slh_dsa_sha2_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256s[DER_OID_SZ_id_slh_dsa_sha2_256s]; + +/* + * id-slh-dsa-sha2-256f OBJECT IDENTIFIER ::= { sigAlgs 25 } + */ +#define DER_OID_V_id_slh_dsa_sha2_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x19 +#define DER_OID_SZ_id_slh_dsa_sha2_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_sha2_256f[DER_OID_SZ_id_slh_dsa_sha2_256f]; + +/* + * id-slh-dsa-shake-128s OBJECT IDENTIFIER ::= { sigAlgs 26 } + */ +#define DER_OID_V_id_slh_dsa_shake_128s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1A +#define DER_OID_SZ_id_slh_dsa_shake_128s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128s[DER_OID_SZ_id_slh_dsa_shake_128s]; + +/* + * id-slh-dsa-shake-128f OBJECT IDENTIFIER ::= { sigAlgs 27 } + */ +#define DER_OID_V_id_slh_dsa_shake_128f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1B +#define DER_OID_SZ_id_slh_dsa_shake_128f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_128f[DER_OID_SZ_id_slh_dsa_shake_128f]; + +/* + * id-slh-dsa-shake-192s OBJECT IDENTIFIER ::= { sigAlgs 28 } + */ +#define DER_OID_V_id_slh_dsa_shake_192s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1C +#define DER_OID_SZ_id_slh_dsa_shake_192s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192s[DER_OID_SZ_id_slh_dsa_shake_192s]; + +/* + * id-slh-dsa-shake-192f OBJECT IDENTIFIER ::= { sigAlgs 29 } + */ +#define DER_OID_V_id_slh_dsa_shake_192f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1D +#define DER_OID_SZ_id_slh_dsa_shake_192f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_192f[DER_OID_SZ_id_slh_dsa_shake_192f]; + +/* + * id-slh-dsa-shake-256s OBJECT IDENTIFIER ::= { sigAlgs 30 } + */ +#define DER_OID_V_id_slh_dsa_shake_256s DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1E +#define DER_OID_SZ_id_slh_dsa_shake_256s 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256s[DER_OID_SZ_id_slh_dsa_shake_256s]; + +/* + * id-slh-dsa-shake-256f OBJECT IDENTIFIER ::= { sigAlgs 31 } + */ +#define DER_OID_V_id_slh_dsa_shake_256f DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x1F +#define DER_OID_SZ_id_slh_dsa_shake_256f 11 +extern const unsigned char ossl_der_oid_id_slh_dsa_shake_256f[DER_OID_SZ_id_slh_dsa_shake_256f]; + +/* clang-format on */ + +int ossl_DER_w_algorithmIdentifier_SLH_DSA(WPACKET *pkt, int tag, SLH_DSA_KEY *key); diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_sm2.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_sm2.h new file mode 100644 index 00000000000000..a6ab7b7166d3c8 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_sm2.h @@ -0,0 +1,39 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_sm2.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "crypto/ec.h" +#include "internal/der.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * sm2-with-SM3 OBJECT IDENTIFIER ::= { sm-scheme 501 } + */ +#define DER_OID_V_sm2_with_SM3 DER_P_OBJECT, 8, 0x2A, 0x81, 0x1C, 0xCF, 0x55, 0x01, 0x83, 0x75 +#define DER_OID_SZ_sm2_with_SM3 10 +extern const unsigned char ossl_der_oid_sm2_with_SM3[DER_OID_SZ_sm2_with_SM3]; + +/* + * curveSM2 OBJECT IDENTIFIER ::= { sm-scheme 301 } + */ +#define DER_OID_V_curveSM2 DER_P_OBJECT, 8, 0x2A, 0x81, 0x1C, 0xCF, 0x55, 0x01, 0x82, 0x2D +#define DER_OID_SZ_curveSM2 10 +extern const unsigned char ossl_der_oid_curveSM2[DER_OID_SZ_curveSM2]; + +/* clang-format on */ + +/* Subject Public Key Info */ +int ossl_DER_w_algorithmIdentifier_SM2(WPACKET *pkt, int cont, EC_KEY *ec); +/* Signature */ +int ossl_DER_w_algorithmIdentifier_SM2_with_MD(WPACKET *pkt, int cont, + EC_KEY *ec, int mdnid); diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_wrap.h b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_wrap.h new file mode 100644 index 00000000000000..56d4777bb3d2ff --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/common/include/prov/der_wrap.h @@ -0,0 +1,48 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from providers/common/include/prov/der_wrap.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "internal/der.h" + +/* Well known OIDs precompiled */ +/* clang-format off */ + +/* + * id-alg-CMS3DESwrap OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 6 + * } + */ +#define DER_OID_V_id_alg_CMS3DESwrap DER_P_OBJECT, 11, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x10, 0x03, 0x06 +#define DER_OID_SZ_id_alg_CMS3DESwrap 13 +extern const unsigned char ossl_der_oid_id_alg_CMS3DESwrap[DER_OID_SZ_id_alg_CMS3DESwrap]; + +/* + * id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 } + */ +#define DER_OID_V_id_aes128_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x05 +#define DER_OID_SZ_id_aes128_wrap 11 +extern const unsigned char ossl_der_oid_id_aes128_wrap[DER_OID_SZ_id_aes128_wrap]; + +/* + * id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 } + */ +#define DER_OID_V_id_aes192_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x19 +#define DER_OID_SZ_id_aes192_wrap 11 +extern const unsigned char ossl_der_oid_id_aes192_wrap[DER_OID_SZ_id_aes192_wrap]; + +/* + * id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 } + */ +#define DER_OID_V_id_aes256_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2D +#define DER_OID_SZ_id_aes256_wrap 11 +extern const unsigned char ossl_der_oid_id_aes256_wrap[DER_OID_SZ_id_aes256_wrap]; + +/* clang-format on */ diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/fips.ld b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/fips.ld new file mode 100644 index 00000000000000..1debaaa7ff652d --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/fips.ld @@ -0,0 +1,5 @@ +{ + global: + OSSL_provider_init; + local: *; +}; diff --git a/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/legacy.ld b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/legacy.ld new file mode 100644 index 00000000000000..1debaaa7ff652d --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/asm_avx2/providers/legacy.ld @@ -0,0 +1,5 @@ +{ + global: + OSSL_provider_init; + local: *; +}; diff --git a/deps/openssl/config/asn1_asm.h b/deps/openssl/config/asn1_asm.h index e74b3c6cb4aab5..caf8c0ce68e3f6 100644 --- a/deps/openssl/config/asn1_asm.h +++ b/deps/openssl/config/asn1_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/asn1.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/asn1.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/asn1.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/asn1.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/asn1_no-asm.h b/deps/openssl/config/asn1_no-asm.h index a70fc6e75d0693..38356ae0f0c033 100644 --- a/deps/openssl/config/asn1_no-asm.h +++ b/deps/openssl/config/asn1_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/asn1.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/asn1.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/asn1.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/asn1.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/asn1t_asm.h b/deps/openssl/config/asn1t_asm.h index 36e11729e40909..8ec1596b27eeb0 100644 --- a/deps/openssl/config/asn1t_asm.h +++ b/deps/openssl/config/asn1t_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/asn1t.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/asn1t.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/asn1t.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/asn1t.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/asn1t_no-asm.h b/deps/openssl/config/asn1t_no-asm.h index 24e297b71f24c2..952c6d2c2acd56 100644 --- a/deps/openssl/config/asn1t_no-asm.h +++ b/deps/openssl/config/asn1t_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/asn1t.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/asn1t.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/asn1t.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/asn1t.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/bio_asm.h b/deps/openssl/config/bio_asm.h index b09aed00aa2410..646d2238dc2e42 100644 --- a/deps/openssl/config/bio_asm.h +++ b/deps/openssl/config/bio_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/bio.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/bio.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/bio.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/bio.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/bio_no-asm.h b/deps/openssl/config/bio_no-asm.h index dd24a9d3a3f5ba..f1a60edc369063 100644 --- a/deps/openssl/config/bio_no-asm.h +++ b/deps/openssl/config/bio_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/bio.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/bio.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/bio.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/bio.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/bn_conf_asm.h b/deps/openssl/config/bn_conf_asm.h index e9c74868ef7299..80f61eac07da20 100644 --- a/deps/openssl/config/bn_conf_asm.h +++ b/deps/openssl/config/bn_conf_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/crypto/bn_conf.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/crypto/bn_conf.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/crypto/bn_conf.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/crypto/bn_conf.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/bn_conf_no-asm.h b/deps/openssl/config/bn_conf_no-asm.h index 50c1a6126e448e..fcb60c5bc77aad 100644 --- a/deps/openssl/config/bn_conf_no-asm.h +++ b/deps/openssl/config/bn_conf_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/crypto/bn_conf.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/crypto/bn_conf.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/crypto/bn_conf.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/crypto/bn_conf.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/cmp_asm.h b/deps/openssl/config/cmp_asm.h index 3078a2012464c4..68c0b635605c05 100644 --- a/deps/openssl/config/cmp_asm.h +++ b/deps/openssl/config/cmp_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/cmp.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/cmp.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/cmp.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/cmp.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/cmp_no-asm.h b/deps/openssl/config/cmp_no-asm.h index 7899dd1427ea4e..41e56b4b4966ca 100644 --- a/deps/openssl/config/cmp_no-asm.h +++ b/deps/openssl/config/cmp_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/cmp.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/cmp.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/cmp.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/cmp.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/cms_asm.h b/deps/openssl/config/cms_asm.h index 4892cfcf1fd720..806bebf7d05ac6 100644 --- a/deps/openssl/config/cms_asm.h +++ b/deps/openssl/config/cms_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/cms.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/cms.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/cms.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/cms.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/cms_no-asm.h b/deps/openssl/config/cms_no-asm.h index 7a6a8e6c3556f2..57c6ca20416da4 100644 --- a/deps/openssl/config/cms_no-asm.h +++ b/deps/openssl/config/cms_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/cms.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/cms.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/cms.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/cms.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/comp_asm.h b/deps/openssl/config/comp_asm.h index 9fe7c2b2b31fcc..200503f60937fb 100644 --- a/deps/openssl/config/comp_asm.h +++ b/deps/openssl/config/comp_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/comp.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/comp.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/comp.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/comp.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/comp_no-asm.h b/deps/openssl/config/comp_no-asm.h index 3d19d09b04b8df..8910b93e4c0833 100644 --- a/deps/openssl/config/comp_no-asm.h +++ b/deps/openssl/config/comp_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/comp.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/comp.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/comp.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/comp.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/conf_asm.h b/deps/openssl/config/conf_asm.h index f3047ef764f642..d609084b5ba34c 100644 --- a/deps/openssl/config/conf_asm.h +++ b/deps/openssl/config/conf_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/conf.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/conf.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/conf.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/conf.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/conf_no-asm.h b/deps/openssl/config/conf_no-asm.h index ce6cd62a4641f7..27877b1fbaa38f 100644 --- a/deps/openssl/config/conf_no-asm.h +++ b/deps/openssl/config/conf_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/conf.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/conf.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/conf.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/conf.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/configuration_asm.h b/deps/openssl/config/configuration_asm.h index b712fdfc651e47..28a086bba1f47f 100644 --- a/deps/openssl/config/configuration_asm.h +++ b/deps/openssl/config/configuration_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/configuration.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/configuration.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/configuration.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/configuration.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/configuration_no-asm.h b/deps/openssl/config/configuration_no-asm.h index 1f601c5489b8e1..1f49de72c86cfd 100644 --- a/deps/openssl/config/configuration_no-asm.h +++ b/deps/openssl/config/configuration_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/configuration.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/configuration.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/configuration.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/configuration.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/core_names_asm.h b/deps/openssl/config/core_names_asm.h index 0ef6b900a0dd4f..3c69a034cdc169 100644 --- a/deps/openssl/config/core_names_asm.h +++ b/deps/openssl/config/core_names_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/core_names.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/core_names.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/core_names.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/core_names.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/core_names_no-asm.h b/deps/openssl/config/core_names_no-asm.h index 3af25f42974c71..bdad83fda5b09b 100644 --- a/deps/openssl/config/core_names_no-asm.h +++ b/deps/openssl/config/core_names_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/core_names.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/core_names.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/core_names.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/core_names.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/crmf_asm.h b/deps/openssl/config/crmf_asm.h index 9be8994c80f06f..6ce6fd4027aaea 100644 --- a/deps/openssl/config/crmf_asm.h +++ b/deps/openssl/config/crmf_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/crmf.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/crmf.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/crmf.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/crmf.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/crmf_no-asm.h b/deps/openssl/config/crmf_no-asm.h index 099485314d332a..f3a8a868d21a9c 100644 --- a/deps/openssl/config/crmf_no-asm.h +++ b/deps/openssl/config/crmf_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/crmf.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/crmf.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/crmf.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/crmf.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/crypto_asm.h b/deps/openssl/config/crypto_asm.h index 92b9295d376e9f..a8851567c580f8 100644 --- a/deps/openssl/config/crypto_asm.h +++ b/deps/openssl/config/crypto_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/crypto.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/crypto.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/crypto.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/crypto.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/crypto_no-asm.h b/deps/openssl/config/crypto_no-asm.h index 28e3447a4a9cca..dbd5527df28737 100644 --- a/deps/openssl/config/crypto_no-asm.h +++ b/deps/openssl/config/crypto_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/crypto.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/crypto.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/crypto.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/crypto.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/ct_asm.h b/deps/openssl/config/ct_asm.h index 9e27f5ccca2bfb..0976f604b06892 100644 --- a/deps/openssl/config/ct_asm.h +++ b/deps/openssl/config/ct_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/ct.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/ct.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/ct.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/ct.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/ct_no-asm.h b/deps/openssl/config/ct_no-asm.h index 6ac5bdfc707a20..f19610305d2020 100644 --- a/deps/openssl/config/ct_no-asm.h +++ b/deps/openssl/config/ct_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/ct.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/ct.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/ct.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/ct.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/dso_conf_asm.h b/deps/openssl/config/dso_conf_asm.h index 1e4325557d393d..efe5d74d0a4018 100644 --- a/deps/openssl/config/dso_conf_asm.h +++ b/deps/openssl/config/dso_conf_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/crypto/dso_conf.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/crypto/dso_conf.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/crypto/dso_conf.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/crypto/dso_conf.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/dso_conf_no-asm.h b/deps/openssl/config/dso_conf_no-asm.h index 4f1674e2caab8c..edead61b71bc56 100644 --- a/deps/openssl/config/dso_conf_no-asm.h +++ b/deps/openssl/config/dso_conf_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/crypto/dso_conf.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/crypto/dso_conf.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/crypto/dso_conf.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/crypto/dso_conf.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/err_asm.h b/deps/openssl/config/err_asm.h index 7f92d845da4c65..80b0575372f377 100644 --- a/deps/openssl/config/err_asm.h +++ b/deps/openssl/config/err_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/err.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/err.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/err.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/err.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/err_no-asm.h b/deps/openssl/config/err_no-asm.h index 592a18b71c0ccc..4d78b148902292 100644 --- a/deps/openssl/config/err_no-asm.h +++ b/deps/openssl/config/err_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/err.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/err.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/err.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/err.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/ess_asm.h b/deps/openssl/config/ess_asm.h index cc549f6e705c49..3c495ea70a37b0 100644 --- a/deps/openssl/config/ess_asm.h +++ b/deps/openssl/config/ess_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/ess.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/ess.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/ess.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/ess.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/ess_no-asm.h b/deps/openssl/config/ess_no-asm.h index 462764497e9b83..c62a836ea11cc9 100644 --- a/deps/openssl/config/ess_no-asm.h +++ b/deps/openssl/config/ess_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/ess.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/ess.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/ess.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/ess.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/fipskey_asm.h b/deps/openssl/config/fipskey_asm.h index 8905e386bf9576..b9e020f7b88a11 100644 --- a/deps/openssl/config/fipskey_asm.h +++ b/deps/openssl/config/fipskey_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/fipskey.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/fipskey.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/fipskey.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/fipskey.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/fipskey_no-asm.h b/deps/openssl/config/fipskey_no-asm.h index 075e904c34d413..903a00b473e87d 100644 --- a/deps/openssl/config/fipskey_no-asm.h +++ b/deps/openssl/config/fipskey_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/fipskey.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/fipskey.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/fipskey.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/fipskey.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/include_asm.h.tmpl b/deps/openssl/config/include_asm.h.tmpl index 287c68fa7cab34..df4dbe07a6a1be 100644 --- a/deps/openssl/config/include_asm.h.tmpl +++ b/deps/openssl/config/include_asm.h.tmpl @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/%%-$asmdir-%%/include/%%-$incdir-%%/%%-$name-%%.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/%%-$asmdir-%%/include/%%-$incdir-%%/%%-$name-%%.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/%%-$asmdir-%%/include/%%-$incdir-%%/%%-$name-%%.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/%%-$asmdir-%%/include/%%-$incdir-%%/%%-$name-%%.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/include_no-asm.h.tmpl b/deps/openssl/config/include_no-asm.h.tmpl index a1d5dc9f65b204..1265943fecc33c 100644 --- a/deps/openssl/config/include_no-asm.h.tmpl +++ b/deps/openssl/config/include_no-asm.h.tmpl @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/%%-$asmdir-%%/include/%%-$incdir-%%/%%-$name-%%.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/%%-$asmdir-%%/include/%%-$incdir-%%/%%-$name-%%.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/%%-$asmdir-%%/include/%%-$incdir-%%/%%-$name-%%.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/%%-$asmdir-%%/include/%%-$incdir-%%/%%-$name-%%.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/lhash_asm.h b/deps/openssl/config/lhash_asm.h index cb066bc45fe759..fd2777febe7fe3 100644 --- a/deps/openssl/config/lhash_asm.h +++ b/deps/openssl/config/lhash_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/lhash.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/lhash.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/lhash.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/lhash.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/lhash_no-asm.h b/deps/openssl/config/lhash_no-asm.h index e38486f186b5fc..fb2d1d1943ab5d 100644 --- a/deps/openssl/config/lhash_no-asm.h +++ b/deps/openssl/config/lhash_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/lhash.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/lhash.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/lhash.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/lhash.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/ocsp_asm.h b/deps/openssl/config/ocsp_asm.h index f15f51d528bb6b..efd552fff3a10d 100644 --- a/deps/openssl/config/ocsp_asm.h +++ b/deps/openssl/config/ocsp_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/ocsp.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/ocsp.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/ocsp.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/ocsp.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/ocsp_no-asm.h b/deps/openssl/config/ocsp_no-asm.h index d88e6730994854..8acfd1e2e9ee41 100644 --- a/deps/openssl/config/ocsp_no-asm.h +++ b/deps/openssl/config/ocsp_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/ocsp.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/ocsp.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/ocsp.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/ocsp.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/opensslv_asm.h b/deps/openssl/config/opensslv_asm.h index 56d28cef174db0..f998a5bbbe9d97 100644 --- a/deps/openssl/config/opensslv_asm.h +++ b/deps/openssl/config/opensslv_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/opensslv.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/opensslv.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/opensslv.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/opensslv.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/opensslv_no-asm.h b/deps/openssl/config/opensslv_no-asm.h index 1622ee0987b5f7..3162d12649ae41 100644 --- a/deps/openssl/config/opensslv_no-asm.h +++ b/deps/openssl/config/opensslv_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/opensslv.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/opensslv.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/opensslv.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/param_names_asm.h b/deps/openssl/config/param_names_asm.h index d3b763128170c0..4b01f8dc2ca198 100644 --- a/deps/openssl/config/param_names_asm.h +++ b/deps/openssl/config/param_names_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/internal/param_names.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/internal/param_names.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/internal/param_names.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/internal/param_names.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/param_names_no-asm.h b/deps/openssl/config/param_names_no-asm.h index 725ed0aab7ffea..8a0c78545ac1db 100644 --- a/deps/openssl/config/param_names_no-asm.h +++ b/deps/openssl/config/param_names_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/internal/param_names.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/internal/param_names.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/internal/param_names.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/internal/param_names.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/pkcs12_asm.h b/deps/openssl/config/pkcs12_asm.h index d26928ae2c8f7f..902a8472e1b349 100644 --- a/deps/openssl/config/pkcs12_asm.h +++ b/deps/openssl/config/pkcs12_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/pkcs12.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/pkcs12.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/pkcs12.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/pkcs12.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/pkcs12_no-asm.h b/deps/openssl/config/pkcs12_no-asm.h index dc097bd278d5da..29d59dfb445e72 100644 --- a/deps/openssl/config/pkcs12_no-asm.h +++ b/deps/openssl/config/pkcs12_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/pkcs12.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/pkcs12.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/pkcs12.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/pkcs12.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/pkcs7_asm.h b/deps/openssl/config/pkcs7_asm.h index 40b36d238e0d1a..145b5afc474862 100644 --- a/deps/openssl/config/pkcs7_asm.h +++ b/deps/openssl/config/pkcs7_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/pkcs7.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/pkcs7.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/pkcs7.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/pkcs7.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/pkcs7_no-asm.h b/deps/openssl/config/pkcs7_no-asm.h index 6d643c75b6891c..4ced6af714c68f 100644 --- a/deps/openssl/config/pkcs7_no-asm.h +++ b/deps/openssl/config/pkcs7_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/pkcs7.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/pkcs7.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/pkcs7.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/pkcs7.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/safestack_asm.h b/deps/openssl/config/safestack_asm.h index 37e308d75a089e..febbe9003b267a 100644 --- a/deps/openssl/config/safestack_asm.h +++ b/deps/openssl/config/safestack_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/safestack.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/safestack.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/safestack.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/safestack.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/safestack_no-asm.h b/deps/openssl/config/safestack_no-asm.h index abadec1cf50f46..bebe9a0352dc1c 100644 --- a/deps/openssl/config/safestack_no-asm.h +++ b/deps/openssl/config/safestack_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/safestack.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/safestack.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/safestack.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/safestack.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/srp_asm.h b/deps/openssl/config/srp_asm.h index d3ddafa5e28315..f8f8088612bef7 100644 --- a/deps/openssl/config/srp_asm.h +++ b/deps/openssl/config/srp_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/srp.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/srp.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/srp.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/srp.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/srp_no-asm.h b/deps/openssl/config/srp_no-asm.h index b85bf9875ab2f9..6b0e5d0e70bcf0 100644 --- a/deps/openssl/config/srp_no-asm.h +++ b/deps/openssl/config/srp_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/srp.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/srp.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/srp.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/srp.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/ssl_asm.h b/deps/openssl/config/ssl_asm.h index 86ba489214c666..169e3ee9931cfa 100644 --- a/deps/openssl/config/ssl_asm.h +++ b/deps/openssl/config/ssl_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/ssl.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/ssl.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/ssl.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/ssl.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/ssl_no-asm.h b/deps/openssl/config/ssl_no-asm.h index 07f72f9312f2b7..0ca05e119a07ca 100644 --- a/deps/openssl/config/ssl_no-asm.h +++ b/deps/openssl/config/ssl_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/ssl.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/ssl.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/ssl.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/ssl.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/ui_asm.h b/deps/openssl/config/ui_asm.h index 39fbef4e92c1a1..c5b82a2452018c 100644 --- a/deps/openssl/config/ui_asm.h +++ b/deps/openssl/config/ui_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/ui.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/ui.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/ui.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/ui.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/ui_no-asm.h b/deps/openssl/config/ui_no-asm.h index fb3f99be5150a1..eb295117bec195 100644 --- a/deps/openssl/config/ui_no-asm.h +++ b/deps/openssl/config/ui_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/ui.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/ui.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/ui.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/ui.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/x509_acert_asm.h b/deps/openssl/config/x509_acert_asm.h index 92bc28c9a76b0a..07f04a9a554ee4 100644 --- a/deps/openssl/config/x509_acert_asm.h +++ b/deps/openssl/config/x509_acert_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/x509_acert.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/x509_acert.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/x509_acert.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/x509_acert.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/x509_acert_no-asm.h b/deps/openssl/config/x509_acert_no-asm.h index 2deed3faa78235..eb2fca3d47ab05 100644 --- a/deps/openssl/config/x509_acert_no-asm.h +++ b/deps/openssl/config/x509_acert_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/x509_acert.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/x509_acert.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/x509_acert.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/x509_acert.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/x509_asm.h b/deps/openssl/config/x509_asm.h index 898ec09d155b26..bf69421f6af52b 100644 --- a/deps/openssl/config/x509_asm.h +++ b/deps/openssl/config/x509_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/x509.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/x509.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/x509.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/x509.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/x509_no-asm.h b/deps/openssl/config/x509_no-asm.h index ef22c66dc60d17..0f28e115067861 100644 --- a/deps/openssl/config/x509_no-asm.h +++ b/deps/openssl/config/x509_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/x509.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/x509.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/x509.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/x509.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/x509_vfy_asm.h b/deps/openssl/config/x509_vfy_asm.h index 7e75104d41fbd1..67fd542be85159 100644 --- a/deps/openssl/config/x509_vfy_asm.h +++ b/deps/openssl/config/x509_vfy_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/x509_vfy.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/x509_vfy.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/x509_vfy.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/x509_vfy.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/x509_vfy_no-asm.h b/deps/openssl/config/x509_vfy_no-asm.h index 790be29b0682a6..cb2ac84fe98b79 100644 --- a/deps/openssl/config/x509_vfy_no-asm.h +++ b/deps/openssl/config/x509_vfy_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/x509_vfy.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/x509_vfy.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/x509_vfy.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/x509_vfy.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/config/x509v3_asm.h b/deps/openssl/config/x509v3_asm.h index 83172c0091bf47..37da7356bf0702 100644 --- a/deps/openssl/config/x509v3_asm.h +++ b/deps/openssl/config/x509v3_asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/asm/include/openssl/x509v3.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/asm/include/openssl/x509v3.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/asm/include/openssl/x509v3.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) # include "./archs/darwin-i386-cc/asm/include/openssl/x509v3.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) diff --git a/deps/openssl/config/x509v3_no-asm.h b/deps/openssl/config/x509v3_no-asm.h index 5477ec8ca065cc..6bad83c5796b0b 100644 --- a/deps/openssl/config/x509v3_no-asm.h +++ b/deps/openssl/config/x509v3_no-asm.h @@ -13,6 +13,8 @@ # include "./archs/linux-armv4/no-asm/include/openssl/x509v3.h" #elif defined(OPENSSL_LINUX) && defined(__aarch64__) # include "./archs/linux-aarch64/no-asm/include/openssl/x509v3.h" +#elif defined(OPENSSL_LINUX) && defined(__riscv) && (__riscv_xlen == 64) +# include "./archs/linux64-riscv64/no-asm/include/openssl/x509v3.h" #elif defined(OPENSSL_LINUX) && defined(__loongarch64) # include "./archs/linux64-loongarch64/no-asm/include/openssl/x509v3.h" #elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) diff --git a/deps/openssl/openssl-cl_asm.gypi b/deps/openssl/openssl-cl_asm.gypi index 2e58f0dcb094a0..c08000ba6c4abb 100644 --- a/deps/openssl/openssl-cl_asm.gypi +++ b/deps/openssl/openssl-cl_asm.gypi @@ -37,6 +37,8 @@ 'includes': ['config/archs/linux-x86_64/asm/openssl-cl.gypi'], }, 'target_arch=="mips64el" and OS=="linux"', { 'includes': ['config/archs/linux64-mips64/asm/openssl-cl.gypi'], + }, 'target_arch=="riscv64" and OS=="linux"', { + 'includes': ['config/archs/linux64-riscv64/asm/openssl-cl.gypi'], },{ # Other architectures don't use assembly 'includes': ['config/archs/linux-x86_64/asm/openssl-cl.gypi'], diff --git a/deps/openssl/openssl-cl_asm_avx2.gypi b/deps/openssl/openssl-cl_asm_avx2.gypi index 03056a832d0322..229e856e14d47f 100644 --- a/deps/openssl/openssl-cl_asm_avx2.gypi +++ b/deps/openssl/openssl-cl_asm_avx2.gypi @@ -35,6 +35,8 @@ 'includes': ['config/archs/VC-WIN64A/asm_avx2/openssl-cl.gypi'], }, 'target_arch=="x64" and OS=="linux"', { 'includes': ['config/archs/linux-x86_64/asm_avx2/openssl-cl.gypi'], + }, 'target_arch=="riscv64" and OS=="linux"', { + 'includes': ['config/archs/linux64-riscv64/asm_avx2/openssl-cl.gypi'], }, { # Other architectures don't use assembly 'includes': ['config/archs/linux-x86_64/asm_avx2/openssl-cl.gypi'], diff --git a/deps/openssl/openssl-fips_asm.gypi b/deps/openssl/openssl-fips_asm.gypi index 633aae4b386759..ed8a39771f69de 100644 --- a/deps/openssl/openssl-fips_asm.gypi +++ b/deps/openssl/openssl-fips_asm.gypi @@ -71,6 +71,8 @@ 'includes': ['config/archs/linux-x86_64/asm/openssl-fips.gypi'], }, 'target_arch=="mips64el" and OS=="linux"', { 'includes': ['config/archs/linux64-mips64/asm/openssl-fips.gypi'], + }, 'target_arch=="riscv64" and OS=="linux"', { + 'includes': ['config/archs/linux64-riscv64/asm/openssl-fips.gypi'], }, { # Other architectures don't use assembly 'includes': ['config/archs/linux-x86_64/asm/openssl-fips.gypi'], diff --git a/deps/openssl/openssl-fips_asm_avx2.gypi b/deps/openssl/openssl-fips_asm_avx2.gypi index 74cc78c42a7b15..2dd35807a5bb82 100644 --- a/deps/openssl/openssl-fips_asm_avx2.gypi +++ b/deps/openssl/openssl-fips_asm_avx2.gypi @@ -69,6 +69,8 @@ ], }, 'target_arch=="x64" and OS=="linux"', { 'includes': ['config/archs/linux-x86_64/asm_avx2/openssl-fips.gypi'], + }, 'target_arch=="riscv64" and OS=="linux"', { + 'includes': ['config/archs/linux64-riscv64/asm_avx2/openssl-fips.gypi'], }, { # Other architectures don't use assembly 'includes': ['config/archs/linux-x86_64/asm_avx2/openssl-fips.gypi'], diff --git a/deps/openssl/openssl_asm.gypi b/deps/openssl/openssl_asm.gypi index 51631c536bbbef..d1b3fbbcd6a746 100644 --- a/deps/openssl/openssl_asm.gypi +++ b/deps/openssl/openssl_asm.gypi @@ -71,6 +71,8 @@ 'includes': ['config/archs/linux-x86_64/asm/openssl.gypi'], }, 'target_arch=="mips64el" and OS=="linux"', { 'includes': ['config/archs/linux64-mips64/asm/openssl.gypi'], + }, 'target_arch=="riscv64" and OS=="linux"', { + 'includes': ['config/archs/linux64-riscv64/asm/openssl.gypi'], }, { # Other architectures don't use assembly 'includes': ['config/archs/linux-x86_64/asm/openssl.gypi'], diff --git a/deps/openssl/openssl_asm_avx2.gypi b/deps/openssl/openssl_asm_avx2.gypi index a6e69b71524366..52c89bb1134b66 100644 --- a/deps/openssl/openssl_asm_avx2.gypi +++ b/deps/openssl/openssl_asm_avx2.gypi @@ -69,6 +69,8 @@ ], }, 'target_arch=="x64" and OS=="linux"', { 'includes': ['config/archs/linux-x86_64/asm_avx2/openssl.gypi'], + }, 'target_arch=="riscv64" and OS=="linux"', { + 'includes': ['config/archs/linux64-riscv64/asm_avx2/openssl.gypi'], }, { # Other architectures don't use assembly 'includes': ['config/archs/linux-x86_64/asm_avx2/openssl.gypi'], diff --git a/deps/openssl/unofficial.gni b/deps/openssl/unofficial.gni index 6cc699c900d1ff..2a82d7d4484867 100644 --- a/deps/openssl/unofficial.gni +++ b/deps/openssl/unofficial.gni @@ -111,6 +111,8 @@ template("openssl_gn_build") { config_path_name = "linux-armv4" } else if (current_cpu == "arm64") { config_path_name = "linux-aarch64" + } else if (current_cpu == "riscv64") { + config_path_name = "linux64-riscv64" } } else if (is_apple) { if (current_cpu == "x86") { diff --git a/deps/v8/include/v8-template.h b/deps/v8/include/v8-template.h index 35c3c34e8badbc..299e17f86aa052 100644 --- a/deps/v8/include/v8-template.h +++ b/deps/v8/include/v8-template.h @@ -683,6 +683,13 @@ enum class PropertyHandlerFlags { */ kHasNoSideEffect = 1 << 2, + /** + * The interceptor may return non-configurable (PropertyAttribute::DontDelete) + * properties. When set on a global object's interceptor, it will be consulted + * during HasRestrictedGlobalProperty checks for lexical declarations. + */ + kHasDontDeleteProperty = 1 << 3, + /** * This flag is used to distinguish which callbacks were provided - * GenericNamedPropertyXXXCallback (old signature) or diff --git a/deps/v8/src/api/api.cc b/deps/v8/src/api/api.cc index bdb9f715de95b4..fbd628370c0b1b 100644 --- a/deps/v8/src/api/api.cc +++ b/deps/v8/src/api/api.cc @@ -1613,6 +1613,8 @@ i::DirectHandle CreateInterceptorInfo( !(flags & PropertyHandlerFlags::kOnlyInterceptStrings)); obj->set_non_masking(flags & PropertyHandlerFlags::kNonMasking); obj->set_has_no_side_effect(flags & PropertyHandlerFlags::kHasNoSideEffect); + obj->set_has_dont_delete_property( + flags & PropertyHandlerFlags::kHasDontDeleteProperty); if (data.IsEmpty()) { data = v8::Undefined(reinterpret_cast(i_isolate)); diff --git a/deps/v8/src/execution/execution.cc b/deps/v8/src/execution/execution.cc index 37c313309e1e24..4dfd84f842e061 100644 --- a/deps/v8/src/execution/execution.cc +++ b/deps/v8/src/execution/execution.cc @@ -230,18 +230,14 @@ MaybeDirectHandle NewScriptContext( } if (IsLexicalVariableMode(mode)) { - LookupIterator lookup_it(isolate, global_object, name, global_object, - LookupIterator::OWN_SKIP_INTERCEPTOR); - Maybe maybe = - JSReceiver::GetPropertyAttributes(&lookup_it); - // Can't fail since the we looking up own properties on the global object - // skipping interceptors. - CHECK(!maybe.IsNothing()); - if ((maybe.FromJust() & DONT_DELETE) != 0) { - // ES#sec-globaldeclarationinstantiation 5.a: + Maybe has_restricted = JSGlobalObject::HasRestrictedGlobalProperty( + isolate, global_object, name); + if (has_restricted.IsNothing()) return MaybeDirectHandle(); + if (has_restricted.FromJust()) { + // https://tc39.es/ecma262/#sec-globaldeclarationinstantiation 3.a: // If envRec.HasVarDeclaration(name) is true, throw a SyntaxError // exception. - // ES#sec-globaldeclarationinstantiation 5.d: + // https://tc39.es/ecma262/#sec-globaldeclarationinstantiation 3.d: // If hasRestrictedGlobal is true, throw a SyntaxError exception. MessageLocation location(script, 0, 1); isolate->ThrowAt(isolate->factory()->NewSyntaxError( diff --git a/deps/v8/src/objects/api-callbacks-inl.h b/deps/v8/src/objects/api-callbacks-inl.h index f08e91f563cf2c..7c28fedd9a2c17 100644 --- a/deps/v8/src/objects/api-callbacks-inl.h +++ b/deps/v8/src/objects/api-callbacks-inl.h @@ -203,6 +203,8 @@ BOOL_ACCESSORS(InterceptorInfo, flags, has_no_side_effect, // TODO(ishell): remove once all the Api changes are done. BOOL_ACCESSORS(InterceptorInfo, flags, has_new_callbacks_signature, HasNewCallbacksSignatureBit::kShift) +BOOL_ACCESSORS(InterceptorInfo, flags, has_dont_delete_property, + HasDontDeletePropertyBit::kShift) void InterceptorInfo::RemoveCallbackRedirectionForSerialization( IsolateForSandbox isolate) { diff --git a/deps/v8/src/objects/api-callbacks.h b/deps/v8/src/objects/api-callbacks.h index f6c7c35a4dc7f6..f55cf0881555b6 100644 --- a/deps/v8/src/objects/api-callbacks.h +++ b/deps/v8/src/objects/api-callbacks.h @@ -182,6 +182,7 @@ class InterceptorInfo // TODO(ishell): remove support for old signatures once they go through // Api deprecation process. DECL_BOOLEAN_ACCESSORS(has_new_callbacks_signature) + DECL_BOOLEAN_ACCESSORS(has_dont_delete_property) DEFINE_TORQUE_GENERATED_INTERCEPTOR_INFO_FLAGS() diff --git a/deps/v8/src/objects/api-callbacks.tq b/deps/v8/src/objects/api-callbacks.tq index 6c4946e941c78e..bb5c3b9aaf54da 100644 --- a/deps/v8/src/objects/api-callbacks.tq +++ b/deps/v8/src/objects/api-callbacks.tq @@ -8,6 +8,7 @@ bitfield struct InterceptorInfoFlags extends uint31 { named: bool: 1 bit; has_no_side_effect: bool: 1 bit; has_new_callbacks_signature: bool: 1 bit; + has_dont_delete_property: bool: 1 bit; } extern class InterceptorInfo extends HeapObject { diff --git a/deps/v8/src/objects/js-objects.cc b/deps/v8/src/objects/js-objects.cc index 8e18b4fe6602db..9c1f619fd0d75e 100644 --- a/deps/v8/src/objects/js-objects.cc +++ b/deps/v8/src/objects/js-objects.cc @@ -5785,6 +5785,24 @@ void JSGlobalObject::InvalidatePropertyCell(DirectHandle global, value); } +// static +Maybe JSGlobalObject::HasRestrictedGlobalProperty( + Isolate* isolate, DirectHandle global, + DirectHandle name) { + LookupIterator::Configuration config = LookupIterator::OWN_SKIP_INTERCEPTOR; + if (global->HasNamedInterceptor() && + global->GetNamedInterceptor()->has_dont_delete_property()) { + config = LookupIterator::OWN; + } + LookupIterator it(isolate, global, name, global, config); + Maybe maybe = JSReceiver::GetPropertyAttributes(&it); + if (maybe.IsNothing()) return Nothing(); + // Global var and function bindings (except those that are introduced by + // non-strict direct eval) are non-configurable and are therefore restricted + // global properties. + return Just((maybe.FromJust() & DONT_DELETE) != 0); +} + // static MaybeDirectHandle JSDate::New(Isolate* isolate, DirectHandle constructor, diff --git a/deps/v8/src/objects/js-objects.h b/deps/v8/src/objects/js-objects.h index e289aae8aca06b..fa7c2ec4179abd 100644 --- a/deps/v8/src/objects/js-objects.h +++ b/deps/v8/src/objects/js-objects.h @@ -1218,6 +1218,11 @@ class JSGlobalObject static void InvalidatePropertyCell(DirectHandle object, DirectHandle name); + // https://tc39.es/ecma262/#sec-hasrestrictedglobalproperty + static Maybe HasRestrictedGlobalProperty( + Isolate* isolate, DirectHandle global, + DirectHandle name); + inline bool IsDetached(); inline Tagged native_context(); diff --git a/deps/v8/src/wasm/jump-table-assembler.cc b/deps/v8/src/wasm/jump-table-assembler.cc index 47d21e29785be8..dfebd423c7c068 100644 --- a/deps/v8/src/wasm/jump-table-assembler.cc +++ b/deps/v8/src/wasm/jump-table-assembler.cc @@ -114,6 +114,10 @@ void JumpTableAssembler::EmitLazyCompileJumpSlot(uint32_t func_index, } bool JumpTableAssembler::EmitJumpSlot(Address target) { + intptr_t displacement = target - (pc_ + kJumpTableSlotEntryMarkerSize + + MacroAssembler::kIntraSegmentJmpInstrSize); + if (!is_int32(displacement)) return false; + #ifdef V8_ENABLE_CET_IBT uint32_t endbr_insn = 0xfa1e0ff3; uint32_t nop = 0x00401f0f; @@ -122,11 +126,7 @@ bool JumpTableAssembler::EmitJumpSlot(Address target) { emit(nop, kRelaxedStore); #endif - intptr_t displacement = - target - (pc_ + MacroAssembler::kIntraSegmentJmpInstrSize); - if (!is_int32(displacement)) return false; - - uint8_t inst[kJumpTableSlotSize] = { + uint8_t inst[8] = { 0xe9, 0, 0, 0, 0, // near_jmp displacement 0xcc, 0xcc, 0xcc, // int3 * 3 }; diff --git a/deps/v8/src/wasm/jump-table-assembler.h b/deps/v8/src/wasm/jump-table-assembler.h index 2024d74928136c..91252dc6e67c03 100644 --- a/deps/v8/src/wasm/jump-table-assembler.h +++ b/deps/v8/src/wasm/jump-table-assembler.h @@ -184,8 +184,10 @@ class V8_EXPORT_PRIVATE JumpTableAssembler { #if V8_TARGET_ARCH_X64 #ifdef V8_ENABLE_CET_IBT static constexpr int kJumpTableSlotSize = 16; + static constexpr int kJumpTableSlotEntryMarkerSize = 8; #else // V8_ENABLE_CET_IBT static constexpr int kJumpTableSlotSize = 8; + static constexpr int kJumpTableSlotEntryMarkerSize = 0; #endif static constexpr int kJumpTableLineSize = kJumpTableSlotSize; static constexpr int kFarJumpTableSlotSize = 16; diff --git a/deps/v8/test/cctest/test-api-interceptors.cc b/deps/v8/test/cctest/test-api-interceptors.cc index 2867809be4091e..6e801321c2abb3 100644 --- a/deps/v8/test/cctest/test-api-interceptors.cc +++ b/deps/v8/test/cctest/test-api-interceptors.cc @@ -834,6 +834,49 @@ THREADED_TEST(InterceptorFunctionRedeclareWithQueryCallback) { v8::Script::Compile(ctx, code).ToLocalChecked()->Run(ctx).ToLocalChecked(); } +// A lexical declaration must throw when the interceptor reports the property +// as non-configurable (DontDelete), per HasRestrictedGlobalProperty checks in +// https://tc39.es/ecma262/#sec-globaldeclarationinstantiation. +THREADED_TEST(LexicalDeclThrowsForRestrictedGlobalViaInterceptor) { + v8::HandleScope scope(CcTest::isolate()); + LocalContext env; + v8::Local templ = + v8::FunctionTemplate::New(CcTest::isolate()); + + v8::Local object_template = templ->InstanceTemplate(); + object_template->SetHandler(v8::NamedPropertyHandlerConfiguration( + nullptr, nullptr, QueryCallbackSetDontDelete, nullptr, nullptr, + v8::Local(), + v8::PropertyHandlerFlags::kHasDontDeleteProperty)); + v8::Local ctx = + v8::Context::New(CcTest::isolate(), nullptr, object_template); + + v8::TryCatch try_catch(CcTest::isolate()); + v8::Local code = v8_str("let x;"); + CHECK(v8::Script::Compile(ctx, code).ToLocalChecked()->Run(ctx).IsEmpty()); + CHECK(try_catch.HasCaught()); +} + +// Without kHasDontDeleteProperty, the interceptor is not consulted for +// HasRestrictedGlobalProperty and lexical declarations succeed. +THREADED_TEST(LexicalDeclSucceedsWithoutRestrictedGlobalFlag) { + v8::HandleScope scope(CcTest::isolate()); + LocalContext env; + v8::Local templ = + v8::FunctionTemplate::New(CcTest::isolate()); + + v8::Local object_template = templ->InstanceTemplate(); + object_template->SetHandler(v8::NamedPropertyHandlerConfiguration( + nullptr, nullptr, QueryCallbackSetDontDelete)); + v8::Local ctx = + v8::Context::New(CcTest::isolate(), nullptr, object_template); + + v8::TryCatch try_catch(CcTest::isolate()); + v8::Local code = v8_str("let x;"); + CHECK(!v8::Script::Compile(ctx, code).ToLocalChecked()->Run(ctx).IsEmpty()); + CHECK(!try_catch.HasCaught()); +} + // Regression test for chromium bug 656648. // Do not crash on non-masking, intercepting setter callbacks. THREADED_TEST(NonMaskingInterceptor) { diff --git a/deps/zlib/contrib/minizip/unzip.c b/deps/zlib/contrib/minizip/unzip.c index 0264f7ac570f7d..4eb0de302cfdf8 100644 --- a/deps/zlib/contrib/minizip/unzip.c +++ b/deps/zlib/contrib/minizip/unzip.c @@ -1439,6 +1439,8 @@ local int unz64local_CheckCurrentFileCoherencyHeader(unz64_s* s, uInt* piSizeVar */ if (unz64local_getShort(&s->z_filefunc, s->filestream,&uFlags) != UNZ_OK) err=UNZ_ERRNO; + else if ((err==UNZ_OK) && ((uFlags & 1) != (s->cur_file_info.flag & 1))) + err=UNZ_BADZIPFILE; /* LFH/CD encryption flag mismatch */ if (unz64local_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) err=UNZ_ERRNO; diff --git a/deps/zlib/contrib/tests/utils_unittest.cc b/deps/zlib/contrib/tests/utils_unittest.cc index f8cd93c705583b..6161e39f0262a0 100644 --- a/deps/zlib/contrib/tests/utils_unittest.cc +++ b/deps/zlib/contrib/tests/utils_unittest.cc @@ -1424,6 +1424,29 @@ TEST(ZlibTest, ZipUnicodePathExtra) { EXPECT_EQ(unzClose(uzf), UNZ_OK); } +TEST(ZlibTest, ZipEncryptionFlagMismatch) { + // Test archive created with info-zip: + // $ echo -n a > a && zip -P a -k a.zip a + // and then hex-edited to drop the encrypted flag from the central directory. + base::FilePath zip_file = TestDataDir().AppendASCII("enc_flag_mismatch.zip"); + + unzFile uzf = unzOpen(zip_file.AsUTF8Unsafe().c_str()); + ASSERT_NE(uzf, nullptr); + + char name[100]; + unz_file_info file_info; + + ASSERT_EQ(unzGoToFirstFile(uzf), UNZ_OK); + ASSERT_EQ(unzGetCurrentFileInfo(uzf, &file_info, name, sizeof(name), + nullptr, 0, nullptr, 0), UNZ_OK); + ASSERT_EQ(std::string(name), "A"); + + // minizip should reject the member due to lfh/cd encrypted flag mismatch. + EXPECT_EQ(unzOpenCurrentFilePassword(uzf, "a"), UNZ_BADZIPFILE); + + EXPECT_EQ(unzClose(uzf), UNZ_OK); +} + TEST(ZlibTest, Crbug500521311) { base::FilePath zip_file = TestDataDir().AppendASCII("bug500521311.zip"); unzFile uzf = unzOpen(zip_file.AsUTF8Unsafe().c_str()); diff --git a/deps/zlib/google/test/data/enc_flag_mismatch.zip b/deps/zlib/google/test/data/enc_flag_mismatch.zip new file mode 100644 index 00000000000000..bb140077bd7f6c Binary files /dev/null and b/deps/zlib/google/test/data/enc_flag_mismatch.zip differ diff --git a/deps/zlib/google/test_data.filelist b/deps/zlib/google/test_data.filelist index 73ed6c3c93173e..9761df11479781 100644 --- a/deps/zlib/google/test_data.filelist +++ b/deps/zlib/google/test_data.filelist @@ -19,6 +19,7 @@ test/data/bug500521311.zip test/data/create_symlink_test_zips.py test/data/create_test_zip.sh test/data/empty.zip +test/data/enc_flag_mismatch.zip test/data/evil.zip test/data/evil_via_absolute_file_name.zip test/data/evil_via_invalid_utf8.zip diff --git a/deps/zlib/google/zip_reader_unittest.cc b/deps/zlib/google/zip_reader_unittest.cc index 7a9f24b434ec20..3de65688b7e18e 100644 --- a/deps/zlib/google/zip_reader_unittest.cc +++ b/deps/zlib/google/zip_reader_unittest.cc @@ -558,6 +558,24 @@ TEST_F(ZipReaderTest, EncryptedFile_RightPassword) { EXPECT_TRUE(reader.ok()); } +// An entry whose local file header has the "encrypted" general-purpose flag +// bit set while the central directory does not should be rejected. +TEST_F(ZipReaderTest, MismatchedEncryptionFlag) { + ZipReader reader; + ASSERT_TRUE(reader.Open(data_dir_.AppendASCII("enc_flag_mismatch.zip"))); + + const ZipReader::Entry* entry = reader.Next(); + ASSERT_TRUE(entry); + EXPECT_EQ(base::FilePath::FromASCII("A"), entry->path); + EXPECT_FALSE(entry->is_directory); + std::string contents = "dummy"; + EXPECT_FALSE(reader.ExtractCurrentEntryToString(&contents)); + EXPECT_EQ("", contents); + + EXPECT_FALSE(reader.Next()); + EXPECT_TRUE(reader.ok()); +} + // Verifies that the ZipReader class can extract a file from a zip archive // stored in memory. This test opens a zip archive in a std::string object, // extracts its content, and verifies the content is the same as the expected diff --git a/deps/zlib/patches/0015-minizip-unzip-enable-decryption.patch b/deps/zlib/patches/0015-minizip-unzip-enable-decryption.patch index feeeb1c400777d..dcc7499f3535e9 100644 --- a/deps/zlib/patches/0015-minizip-unzip-enable-decryption.patch +++ b/deps/zlib/patches/0015-minizip-unzip-enable-decryption.patch @@ -26,3 +26,31 @@ index 82275d6c1775d..c8a01b23efd42 100644 s->encrypted=1; } # endif + +commit 874ed6b46a4f75407829e510db77cc673a4c86e7 +Author: Hans Wennborg +Date: Mon Jun 15 11:33:46 2026 +0200 + + Check LFH / CD encryption flag consistency + + unz64local_CheckCurrentFileCoherencyHeader performs various consistency + checks on the values in the Local File Header and Central Directory. + Make it check the encryption flag as well. + + Bug: 514461031 + Change-Id: Ifaf8620c6e0c345118712bce6e1206bbb83b3a2d + Reviewed-on: https://chromium-review.googlesource.com/7942389 + +diff --git a/third_party/zlib/contrib/minizip/unzip.c b/third_party/zlib/contrib/minizip/unzip.c +index 0264f7ac570f7..4eb0de302cfdf 100644 +--- a/third_party/zlib/contrib/minizip/unzip.c ++++ b/third_party/zlib/contrib/minizip/unzip.c +@@ -1439,6 +1439,8 @@ local int unz64local_CheckCurrentFileCoherencyHeader(unz64_s* s, uInt* piSizeVar + */ + if (unz64local_getShort(&s->z_filefunc, s->filestream,&uFlags) != UNZ_OK) + err=UNZ_ERRNO; ++ else if ((err==UNZ_OK) && ((uFlags & 1) != (s->cur_file_info.flag & 1))) ++ err=UNZ_BADZIPFILE; /* LFH/CD encryption flag mismatch */ + + if (unz64local_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) + err=UNZ_ERRNO; diff --git a/doc/api/cli.md b/doc/api/cli.md index 2bbcfdf0997ea3..e2d7beb462cd4b 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -1996,14 +1996,6 @@ node --max-old-space-size-percentage=50 index.js node --max-old-space-size-percentage=75 index.js ``` -### `--napi-modules` - - - -This option is a no-op. It is kept for compatibility. - ### `--network-family-autoselection-attempt-timeout` [#42511]: https://github.com/nodejs/node/issues/42511 +[Built-in Proxy Support]: http.md#built-in-proxy-support [Chrome DevTools Protocol]: https://chromedevtools.github.io/devtools-protocol/ [Chromium's policy for locally trusted certificates]: https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store/faq.md#does-the-chrome-certificate-verifier-consider-local-trust-decisions [CommonJS module]: modules.md diff --git a/doc/api/crypto.md b/doc/api/crypto.md index 7b2fe3112a0f37..fb40a3b3fef847 100644 --- a/doc/api/crypto.md +++ b/doc/api/crypto.md @@ -73,38 +73,48 @@ try { ## Asymmetric key types -The following table lists the asymmetric key types recognized by the -[`KeyObject`][] API and the export/import formats supported for each key type. - -| Key Type | Description | OID | `'pem'` | `'der'` | `'jwk'` | `'raw-public'` | `'raw-private'` | `'raw-seed'` | -| ---------------------------------- | ------------------ | ----------------------- | ------- | ------- | ------- | -------------- | --------------- | ------------ | -| `'dh'` | Diffie-Hellman | 1.2.840.113549.1.3.1 | ✔ | ✔ | | | | | -| `'dsa'` | DSA | 1.2.840.10040.4.1 | ✔ | ✔ | | | | | -| `'ec'` | Elliptic curve | 1.2.840.10045.2.1 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'ed25519'` | Ed25519 | 1.3.101.112 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'ed448'` | Ed448 | 1.3.101.113 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'ml-dsa-44'`[^openssl35] | ML-DSA-44 | 2.16.840.1.101.3.4.3.17 | ✔ | ✔ | ✔ | ✔ | | ✔ | -| `'ml-dsa-65'`[^openssl35] | ML-DSA-65 | 2.16.840.1.101.3.4.3.18 | ✔ | ✔ | ✔ | ✔ | | ✔ | -| `'ml-dsa-87'`[^openssl35] | ML-DSA-87 | 2.16.840.1.101.3.4.3.19 | ✔ | ✔ | ✔ | ✔ | | ✔ | -| `'ml-kem-512'`[^openssl35] | ML-KEM-512 | 2.16.840.1.101.3.4.4.1 | ✔ | ✔ | ✔ | ✔ | | ✔ | -| `'ml-kem-768'`[^openssl35] | ML-KEM-768 | 2.16.840.1.101.3.4.4.2 | ✔ | ✔ | ✔ | ✔ | | ✔ | -| `'ml-kem-1024'`[^openssl35] | ML-KEM-1024 | 2.16.840.1.101.3.4.4.3 | ✔ | ✔ | ✔ | ✔ | | ✔ | -| `'rsa-pss'` | RSA PSS | 1.2.840.113549.1.1.10 | ✔ | ✔ | | | | | -| `'rsa'` | RSA | 1.2.840.113549.1.1.1 | ✔ | ✔ | ✔ | | | | -| `'slh-dsa-sha2-128f'`[^openssl35] | SLH-DSA-SHA2-128f | 2.16.840.1.101.3.4.3.21 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'slh-dsa-sha2-128s'`[^openssl35] | SLH-DSA-SHA2-128s | 2.16.840.1.101.3.4.3.20 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'slh-dsa-sha2-192f'`[^openssl35] | SLH-DSA-SHA2-192f | 2.16.840.1.101.3.4.3.23 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'slh-dsa-sha2-192s'`[^openssl35] | SLH-DSA-SHA2-192s | 2.16.840.1.101.3.4.3.22 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'slh-dsa-sha2-256f'`[^openssl35] | SLH-DSA-SHA2-256f | 2.16.840.1.101.3.4.3.25 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'slh-dsa-sha2-256s'`[^openssl35] | SLH-DSA-SHA2-256s | 2.16.840.1.101.3.4.3.24 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'slh-dsa-shake-128f'`[^openssl35] | SLH-DSA-SHAKE-128f | 2.16.840.1.101.3.4.3.27 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'slh-dsa-shake-128s'`[^openssl35] | SLH-DSA-SHAKE-128s | 2.16.840.1.101.3.4.3.26 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'slh-dsa-shake-192f'`[^openssl35] | SLH-DSA-SHAKE-192f | 2.16.840.1.101.3.4.3.29 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'slh-dsa-shake-192s'`[^openssl35] | SLH-DSA-SHAKE-192s | 2.16.840.1.101.3.4.3.28 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'slh-dsa-shake-256f'`[^openssl35] | SLH-DSA-SHAKE-256f | 2.16.840.1.101.3.4.3.31 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'slh-dsa-shake-256s'`[^openssl35] | SLH-DSA-SHAKE-256s | 2.16.840.1.101.3.4.3.30 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'x25519'` | X25519 | 1.3.101.110 | ✔ | ✔ | ✔ | ✔ | ✔ | | -| `'x448'` | X448 | 1.3.101.111 | ✔ | ✔ | ✔ | ✔ | ✔ | | +The following lists group the asymmetric key types recognized by the +[`KeyObject`][] API by the complete set of formats supported for importing and +exporting each type. + +**Formats:** `'pem'`, `'der'` + +* **`'dh'` (Diffie-Hellman)** — OID `1.2.840.113549.1.3.1` +* **`'dsa'`** — OID `1.2.840.10040.4.1` +* **`'rsa-pss'`** — OID `1.2.840.113549.1.1.10` + +**Formats:** `'pem'`, `'der'`, `'jwk'` + +* **`'rsa'`** — OID `1.2.840.113549.1.1.1` + +**Formats:** `'pem'`, `'der'`, `'jwk'`, `'raw-public'`, `'raw-private'` + +* **`'ec'` (Elliptic curve)** — OID `1.2.840.10045.2.1` +* **`'ed25519'`** — OID `1.3.101.112` +* **`'ed448'`** — OID `1.3.101.113` +* **`'slh-dsa-sha2-128f'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.21` +* **`'slh-dsa-sha2-128s'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.20` +* **`'slh-dsa-sha2-192f'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.23` +* **`'slh-dsa-sha2-192s'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.22` +* **`'slh-dsa-sha2-256f'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.25` +* **`'slh-dsa-sha2-256s'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.24` +* **`'slh-dsa-shake-128f'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.27` +* **`'slh-dsa-shake-128s'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.26` +* **`'slh-dsa-shake-192f'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.29` +* **`'slh-dsa-shake-192s'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.28` +* **`'slh-dsa-shake-256f'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.31` +* **`'slh-dsa-shake-256s'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.30` +* **`'x25519'`** — OID `1.3.101.110` +* **`'x448'`** — OID `1.3.101.111` + +**Formats:** `'pem'`, `'der'`, `'jwk'`, `'raw-public'`, `'raw-seed'` + +* **`'ml-dsa-44'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.17` +* **`'ml-dsa-65'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.18` +* **`'ml-dsa-87'`[^openssl35]** — OID `2.16.840.1.101.3.4.3.19` +* **`'ml-kem-512'`[^openssl35]** — OID `2.16.840.1.101.3.4.4.1` +* **`'ml-kem-768'`[^openssl35]** — OID `2.16.840.1.101.3.4.4.2` +* **`'ml-kem-1024'`[^openssl35]** — OID `2.16.840.1.101.3.4.4.3` ### Key formats @@ -2656,8 +2666,10 @@ Calculates the signature on all the data passed through using either [`sign.update()`][] or [`sign.write()`][stream-writable-write]. If `privateKey` is not a [`KeyObject`][], this function behaves as if -`privateKey` had been passed to [`crypto.createPrivateKey()`][]. If it is an -object, the following additional properties can be passed: +`privateKey` had been passed to [`crypto.createPrivateKey()`][]. When +`privateKey` is a string, `ArrayBuffer`, [`Buffer`][], `TypedArray`, or +`DataView`, it must contain PEM-encoded key material. If it is an object, the +following additional properties can be passed: * `dsaEncoding` {string} For DSA and ECDSA, this option specifies the format of the generated signature. It can be one of the following: @@ -2787,8 +2799,10 @@ changes: Verifies the provided data using the given `key` and `signature`. If `key` is not a [`KeyObject`][], this function behaves as if -`key` had been passed to [`crypto.createPublicKey()`][]. If it is an -object, the following additional properties can be passed: +`key` had been passed to [`crypto.createPublicKey()`][]. When `key` is a string, +`ArrayBuffer`, [`Buffer`][], `TypedArray`, or `DataView`, it must contain +PEM-encoded key material. If it is an object, the following additional +properties can be passed: * `dsaEncoding` {string} For DSA and ECDSA, this option specifies the format of the signature. It can be one of the following: @@ -3769,6 +3783,8 @@ using the given `algorithm`. Optional `options` argument controls stream behavior. For XOF hash functions such as `'shake256'`, the `outputLength` option can be used to specify the desired output length in bytes. +When the data is small (< 5MB) and readily available, [`crypto.hash()`][] is usually faster. + The `algorithm` is dependent on the available algorithms supported by the version of OpenSSL on the platform. Examples are `'sha256'`, `'sha512'`, etc. On recent releases of OpenSSL, `openssl list -digest-algorithms` will @@ -6141,8 +6157,10 @@ dependent upon the key type. ML-DSA. If `key` is not a [`KeyObject`][], this function behaves as if `key` had been -passed to [`crypto.createPrivateKey()`][]. If it is an object, the following -additional properties can be passed: +passed to [`crypto.createPrivateKey()`][]. When `key` is a string, `ArrayBuffer`, +[`Buffer`][], `TypedArray`, or `DataView`, it must contain PEM-encoded key +material. If it is an object, the following additional properties can be +passed: * `dsaEncoding` {string} For DSA and ECDSA, this option specifies the format of the generated signature. It can be one of the following: @@ -6276,8 +6294,10 @@ key type. ML-DSA. If `key` is not a [`KeyObject`][], this function behaves as if `key` had been -passed to [`crypto.createPublicKey()`][]. If it is an object, the following -additional properties can be passed: +passed to [`crypto.createPublicKey()`][]. When `key` is a string, `ArrayBuffer`, +[`Buffer`][], `TypedArray`, or `DataView`, it must contain PEM-encoded key +material. If it is an object, the following additional properties can be +passed: * `dsaEncoding` {string} For DSA and ECDSA, this option specifies the format of the signature. It can be one of the following: @@ -6927,6 +6947,7 @@ See the [list of SSL OP Flags][] for details. [`crypto.getCurves()`]: #cryptogetcurves [`crypto.getDiffieHellman()`]: #cryptogetdiffiehellmangroupname [`crypto.getHashes()`]: #cryptogethashes +[`crypto.hash()`]: #cryptohashalgorithm-data-options [`crypto.privateDecrypt()`]: #cryptoprivatedecryptprivatekey-buffer [`crypto.privateEncrypt()`]: #cryptoprivateencryptprivatekey-buffer [`crypto.publicDecrypt()`]: #cryptopublicdecryptkey-buffer diff --git a/doc/api/debugger.md b/doc/api/debugger.md index 5543e9a408abc5..5692a12a46a026 100644 --- a/doc/api/debugger.md +++ b/doc/api/debugger.md @@ -236,6 +236,10 @@ debug> added: - v26.1.0 changes: + - version: v26.6.0 + pr-url: https://github.com/nodejs/node/pull/64328 + description: Add per-probe `--cond ` option to only record a hit when the + condition is truthy at the probe location. - version: v26.4.0 pr-url: https://github.com/nodejs/node/pull/63704 description: Add per-probe `--max-hit ` option to limit evaluated hits and finish @@ -268,8 +272,8 @@ printf-style debugging without having to modify the application code and clean up afterwards. It also supports structured JSON output for tool use. ```console -$ node inspect --probe :[:] --expr [--max-hit ] - [--probe :[:] --expr [--max-hit ] ...] +$ node inspect --probe :[:] --expr [--cond ] [--max-hit ] + [--probe :[:] --expr [--cond ] [--max-hit ] ...] [--json] [--preview] [--timeout=] [--port=] [--] [ ...] + + + + diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json index 32d186340386ab..ab815fdc217f26 100644 --- a/test/fixtures/wpt/versions.json +++ b/test/fixtures/wpt/versions.json @@ -76,7 +76,7 @@ "path": "url" }, "urlpattern": { - "commit": "11a459a2b1d411506d9230edf9f2ef32babfeb0b", + "commit": "5847ee5cfa4f710cbb78ab9ef5cc66f74433ee03", "path": "urlpattern" }, "user-timing": { @@ -96,7 +96,7 @@ "path": "web-locks" }, "WebCryptoAPI": { - "commit": "03a14768441c1ce2a31678d0dc080e81dc449d0a", + "commit": "ec2fee39a4ca3c13afd55236795547eedd7f165d", "path": "WebCryptoAPI" }, "webidl": { diff --git a/test/js-native-api/test_string/test_string.c b/test/js-native-api/test_string/test_string.c index 01e5dbee3912d8..0dbe1806d7b9c6 100644 --- a/test/js-native-api/test_string/test_string.c +++ b/test/js-native-api/test_string/test_string.c @@ -20,7 +20,7 @@ static napi_status validate_and_retrieve_single_string_arg( NODE_API_ASSERT_STATUS(env, valuetype == napi_string, - "Wrong type of argment. Expects a string."); + "Wrong type of argument. Expects a string."); return napi_ok; } diff --git a/test/known_issues/test-fs-cp-filter.js b/test/known_issues/test-fs-cp-filter.js index d6ac92aebe0e9b..334ade532b33ea 100644 --- a/test/known_issues/test-fs-cp-filter.js +++ b/test/known_issues/test-fs-cp-filter.js @@ -1,6 +1,6 @@ 'use strict'; -// This test will fail because the the implementation does not properly +// This test will fail because the implementation does not properly // handle the case when the `src` or `dest` is a Buffer and the `filter` // function is utilized when recursively copying directories. // Refs: https://github.com/nodejs/node/issues/58634 diff --git a/test/known_issues/test-fs-readdir-promise-recursive-with-buffer.js b/test/known_issues/test-fs-readdir-promise-recursive-with-buffer.js index 7d8649ac9826ab..314d6dda9a2d57 100644 --- a/test/known_issues/test-fs-readdir-promise-recursive-with-buffer.js +++ b/test/known_issues/test-fs-readdir-promise-recursive-with-buffer.js @@ -1,6 +1,6 @@ 'use strict'; -// This test will fail because the the implementation does not properly +// This test will fail because the implementation does not properly // handle the case when the path is a Buffer and the function is called // in recursive mode. diff --git a/test/known_issues/test-fs-readdir-recursive-with-buffer.js b/test/known_issues/test-fs-readdir-recursive-with-buffer.js index 2c1f74232ddaab..4938d36ffa84d7 100644 --- a/test/known_issues/test-fs-readdir-recursive-with-buffer.js +++ b/test/known_issues/test-fs-readdir-recursive-with-buffer.js @@ -1,6 +1,6 @@ 'use strict'; -// This test will fail because the the implementation does not properly +// This test will fail because the implementation does not properly // handle the case when the path is a Buffer and the function is called // in recursive mode. diff --git a/test/known_issues/test-fs-readdir-sync-recursive-with-buffer.js b/test/known_issues/test-fs-readdir-sync-recursive-with-buffer.js index 291fe7ffe8bce4..0f60c290f15d80 100644 --- a/test/known_issues/test-fs-readdir-sync-recursive-with-buffer.js +++ b/test/known_issues/test-fs-readdir-sync-recursive-with-buffer.js @@ -1,6 +1,6 @@ 'use strict'; -// This test will fail because the the implementation does not properly +// This test will fail because the implementation does not properly // handle the case when the path is a Buffer and the function is called // in recursive mode. diff --git a/test/node-api/test_fatal/test2.js b/test/node-api/test_fatal/test2.js index 6449f098458d76..44866d63ee7d75 100644 --- a/test/node-api/test_fatal/test2.js +++ b/test/node-api/test_fatal/test2.js @@ -12,7 +12,7 @@ if (process.argv[2] === 'child') { } const p = child_process.spawnSync( - process.execPath, [ '--napi-modules', __filename, 'child' ]); + process.execPath, [ __filename, 'child' ]); assert.ifError(p.error); assert.ok(p.stderr.toString().includes( 'FATAL ERROR: test_fatal::Test fatal message')); diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status index f6305871350c7e..7b15183e2fdbd7 100644 --- a/test/parallel/parallel.status +++ b/test/parallel/parallel.status @@ -22,16 +22,9 @@ test-snapshot-incompatible: SKIP [$system==win32] # https://github.com/nodejs/node/issues/59090 test-inspector-network-fetch: PASS, FLAKY -# https://github.com/nodejs/node/issues/54808 -test-async-context-frame: PASS, FLAKY # https://github.com/nodejs/node/issues/59636 -test-fs-cp-sync-error-on-exist: SKIP test-fs-cp-sync-symlink-points-to-dest-error: SKIP test-fs-cp-async-symlink-points-to-dest: SKIP -test-fs-cp-sync-unicode-folder-names: SKIP - -# https://github.com/nodejs/node/issues/56751 -test-without-async-context-frame: PASS, FLAKY # Windows on ARM [$system==win32 && $arch==arm64] @@ -146,7 +139,6 @@ test-http-pipeline-flood: SKIP test-inspector-network-fetch: SKIP test-inspector-network-content-type: SKIP test-fetch: SKIP -test-without-async-context-frame: SKIP test-process-cpuUsage: PASS, FLAKY test-web-locks: SKIP test-http2-allow-http1-upgrade-ws: SKIP diff --git a/test/parallel/test-abortcontroller.js b/test/parallel/test-abortcontroller.js index 95eea21437ead9..5b8df8233cd408 100644 --- a/test/parallel/test-abortcontroller.js +++ b/test/parallel/test-abortcontroller.js @@ -13,7 +13,7 @@ const { const { setTimeout: sleep } = require('timers/promises'); -// All of the the tests in this file depend on public-facing Node.js APIs. +// All of the tests in this file depend on public-facing Node.js APIs. // For tests that depend on Node.js internal APIs, please add them to // test-abortcontroller-internal.js instead. @@ -93,7 +93,7 @@ test('AbortSignal.abort() creates an already aborted signal', () => { assert.ok(signal.aborted); }); -test('AbortController properties and methods valiate the receiver', () => { +test('AbortController properties and methods validate the receiver', () => { const acSignalGet = Object.getOwnPropertyDescriptor( AbortController.prototype, 'signal' diff --git a/test/parallel/test-assert-deep.js b/test/parallel/test-assert-deep.js index 5d856bf1f378b9..16db17d171d40a 100644 --- a/test/parallel/test-assert-deep.js +++ b/test/parallel/test-assert-deep.js @@ -421,6 +421,17 @@ test('es6 Maps and Sets', () => { new Map([[undefined, null], ['+000', 2n]]), new Map([[null, undefined], [false, '2']]), ); + // A null key whose value is an object, alongside another object key and a + // matching map size, must not crash the unordered object-key matching (null + // is `typeof 'object'`). Refs: https://github.com/nodejs/node/issues/64433 + assertNotDeepOrStrict( + new Map([[null, { v: 1 }], [{ a: 1 }, 1]]), + new Map([[{ b: 2 }, { v: 1 }], [{ a: 1 }, 1]]) + ); + assertDeepAndStrictEqual( + new Map([[null, { v: 1 }], [{ a: 1 }, 1]]), + new Map([[null, { v: 1 }], [{ a: 1 }, 1]]) + ); const xarray = ['x']; assertDeepAndStrictEqual( new Set([xarray, ['y']]), diff --git a/test/parallel/test-blob-stream-gc.js b/test/parallel/test-blob-stream-gc.js new file mode 100644 index 00000000000000..24b2f15efc1265 --- /dev/null +++ b/test/parallel/test-blob-stream-gc.js @@ -0,0 +1,56 @@ +// Flags: --expose-gc --no-concurrent-array-buffer-sweeping +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const { setImmediate: setImmediatePromise } = require('timers/promises'); + +const MiB = 1024 * 1024; +const iterations = 64; +const maxRetained = 16 * MiB; + +async function collectArrayBuffers() { + for (let i = 0; i < 3; i++) { + global.gc(); + await setImmediatePromise(); + } +} + +async function assertNoBlobStreamRetention(name, fn) { + const buffer = Buffer.alloc(MiB); + + await collectArrayBuffers(); + const before = process.memoryUsage().arrayBuffers; + + for (let i = 0; i < iterations; i++) { + await fn(buffer); + } + + await collectArrayBuffers(); + const retained = process.memoryUsage().arrayBuffers - before; + + assert( + retained < maxRetained, + `${name} retained ${retained} bytes in arrayBuffers`, + ); +} + +(async () => { + await assertNoBlobStreamRetention('unused Blob streams', + common.mustCall(async (buffer) => { + new Blob([buffer]).stream(); + }, iterations)); + + await assertNoBlobStreamRetention('cancelled Blob streams', + common.mustCall(async (buffer) => { + await new Blob([buffer]).stream() + .cancel(); + }, iterations)); + + await assertNoBlobStreamRetention('drained Blob streams', + common.mustCall(async (buffer) => { + await new Response( + new Blob([buffer]).stream(), + ).arrayBuffer(); + }, iterations)); +})().then(common.mustCall()); diff --git a/test/parallel/test-blob.js b/test/parallel/test-blob.js index 9ec2a3c04079a7..e20ebbb86404bc 100644 --- a/test/parallel/test-blob.js +++ b/test/parallel/test-blob.js @@ -384,7 +384,9 @@ assert.throws(() => new Blob({}), { assert.strictEqual(value.byteLength, 5); assert(!done); setTimeout(common.mustCall(() => { - assert.strictEqual(stream[kState].controller.desiredSize, 0); + // Same setImmediate() pull vs. timer race as the non-BYOB case above: + // the stream may already have pulled the next 'hello' (5 bytes), hence -5. + assert([0, -5].includes(stream[kState].controller.desiredSize)); }), 0); })().then(common.mustCall()); @@ -405,6 +407,24 @@ assert.throws(() => new Blob({}), { const b = new Blob(['hello\n'], { endings: 'native' }); assert.strictEqual(b.size, EOL.length + 5); + // The WHATWG "convert line endings to native" algorithm normalizes every + // standalone "\r", "\n", and "\r\n" sequence to the native line ending. + // Refs: https://w3c.github.io/FileAPI/#convert-line-endings-to-native + (async () => { + const cases = [ + ['a\rb', `a${EOL}b`], + ['a\nb', `a${EOL}b`], + ['a\r\nb', `a${EOL}b`], + ['a\r\rb', `a${EOL}${EOL}b`], + ['a\n\rb', `a${EOL}${EOL}b`], + ['\r\n\r', `${EOL}${EOL}`], + ]; + for (const [input, expected] of cases) { + const blob = new Blob([input], { endings: 'native' }); + assert.strictEqual(await blob.text(), expected); + } + })().then(common.mustCall()); + [1, {}, 'foo'].forEach((endings) => { assert.throws(() => new Blob([], { endings }), { code: 'ERR_INVALID_ARG_VALUE', diff --git a/test/parallel/test-cli-node-print-help-style.js b/test/parallel/test-cli-node-print-help-style.js new file mode 100644 index 00000000000000..47fe7b75620a8d --- /dev/null +++ b/test/parallel/test-cli-node-print-help-style.js @@ -0,0 +1,64 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const { execFile } = require('child_process'); + +// eslint-disable-next-line no-control-regex +const ANSI_SGR_REGEX = new RegExp('\x1b\\[[0-9;]*m', 'g'); + +function stripAnsi(text) { + return text.replace(ANSI_SGR_REGEX, ''); +} + +// Test: FORCE_COLOR=1 produces styled output +{ + const env = { ...process.env, FORCE_COLOR: '1' }; + execFile(process.execPath, ['--help'], { env }, + common.mustSucceed((stdout) => { + assert.ok(stdout.includes('\x1b[1m'), 'bold for headers should be present'); + assert.ok(stdout.includes('\x1b[32m'), 'green for option names should be present'); + assert.ok(stdout.includes('\x1b[35m'), 'magenta for env var names should be present'); + assert.ok(stdout.includes('\x1b[34m'), 'blue for URL should be present'); + assert.ok(stdout.includes('\x1b[4m'), 'underline for URL should be present'); + })); +} + +// Test: NO_COLOR=1 produces plain output +{ + const env = { ...process.env, NO_COLOR: '1' }; + delete env.FORCE_COLOR; + execFile(process.execPath, ['--help'], { env }, + common.mustSucceed((stdout) => { + assert.ok(stripAnsi(stdout) === stdout, + 'no ANSI escape sequences should be present with NO_COLOR=1'); + })); +} + +// Test: piped (non-TTY, no FORCE_COLOR) produces plain output +{ + const env = { ...process.env }; + delete env.FORCE_COLOR; + delete env.NO_COLOR; + delete env.NODE_DISABLE_COLORS; + execFile(process.execPath, ['--help'], { env }, + common.mustSucceed((stdout) => { + assert.ok(stripAnsi(stdout) === stdout, + 'no ANSI escape sequences should be present when piped (non-TTY)'); + })); +} + +// Test: alignment preservation - stripped styled output matches plain output +{ + const envStyled = { ...process.env, FORCE_COLOR: '1' }; + const envPlain = { ...process.env, NO_COLOR: '1' }; + delete envPlain.FORCE_COLOR; + execFile(process.execPath, ['--help'], { env: envStyled }, + common.mustSucceed((styledStdout) => { + execFile(process.execPath, ['--help'], { env: envPlain }, + common.mustSucceed((plainStdout) => { + assert.ok(stripAnsi(styledStdout) === plainStdout, + 'stripped styled output should match plain output (alignment preservation)'); + })); + })); +} diff --git a/test/parallel/test-crypto-sec-level.js b/test/parallel/test-crypto-sec-level.js index 017db3e361e8bf..d7d2252be6c35d 100644 --- a/test/parallel/test-crypto-sec-level.js +++ b/test/parallel/test-crypto-sec-level.js @@ -8,7 +8,7 @@ if (!common.hasCrypto) const assert = require('assert'); // OpenSSL has a set of security levels which affect what algorithms -// are available by default. Different OpenSSL veresions have different +// are available by default. Different OpenSSL versions have different // default security levels and we use this value to adjust what a test // expects based on the security level. You can read more in // https://docs.openssl.org/1.1.1/man3/SSL_CTX_set_security_level/#default-callback-behaviour diff --git a/test/parallel/test-debugger-break.js b/test/parallel/test-debugger-break.js index 4da400e4475821..09481480c35eb4 100644 --- a/test/parallel/test-debugger-break.js +++ b/test/parallel/test-debugger-break.js @@ -41,7 +41,7 @@ const cli = startCLI([script]); assert.match( cli.output, /> 3 name = 'Robin';/, - 'marks the 3nd line'); + 'marks the 3rd line'); await cli.stepCommand('cont'); assert.ok( diff --git a/test/parallel/test-debugger-probe-cond-invalid.js b/test/parallel/test-debugger-probe-cond-invalid.js new file mode 100644 index 00000000000000..c5c137e05819d3 --- /dev/null +++ b/test/parallel/test-debugger-probe-cond-invalid.js @@ -0,0 +1,40 @@ +// This tests that probe mode rejects malformed --cond usage. +'use strict'; + +const common = require('../common'); +common.skipIfInspectorDisabled(); + +const fixtures = require('../common/fixtures'); +const { assertProbeCliError } = require('../common/debugger-probe'); + +const cwd = fixtures.path('debugger'); + +assertProbeCliError( + ['--cond', 'x', '--probe', 'probe.js:12', '--expr', 'finalValue', 'probe.js'], + /Unexpected --cond before --probe/, { cwd }); + +assertProbeCliError( + ['--probe', 'probe.js:12', '--cond', 'x', '--expr', 'finalValue', 'probe.js'], + /Each --probe must be followed immediately by --expr/, { cwd }); + +assertProbeCliError( + ['--probe', 'probe.js:12', '--expr', 'finalValue', '--cond', 'x', '--cond', 'y', 'probe.js'], + /A --probe can have at most one --cond/, { cwd }); + +assertProbeCliError( + ['--probe', 'probe.js:12', '--expr', 'finalValue', '--cond', ' ', 'probe.js'], + /Missing value for --cond/, { cwd }); + +assertProbeCliError( + ['--probe', 'probe.js:12', '--expr', 'finalValue', '--cond'], + /Missing value for --cond/, { cwd }); + +assertProbeCliError( + ['--probe', 'probe.js:12', '--expr', 'a', '--cond', 'x', + '--probe', 'probe.js:12', '--expr', 'b', '--cond', 'y', 'probe.js'], + /Probes at probe\.js:12 must use the same --cond \(or none\)/, { cwd }); + +assertProbeCliError( + ['--probe', 'probe.js:12', '--expr', 'a', '--cond', 'x', + '--probe', 'probe.js:12', '--expr', 'b', 'probe.js'], + /Probes at probe\.js:12 must use the same --cond \(or none\)/, { cwd }); diff --git a/test/parallel/test-debugger-probe-cond-max-hit.js b/test/parallel/test-debugger-probe-cond-max-hit.js new file mode 100644 index 00000000000000..ca5b831194e9c9 --- /dev/null +++ b/test/parallel/test-debugger-probe-cond-max-hit.js @@ -0,0 +1,47 @@ +// This tests that --cond and --max-hit work together. +'use strict'; + +const common = require('../common'); +common.skipIfInspectorDisabled(); + +const fixtures = require('../common/fixtures'); +const { spawnSyncAndAssert } = require('../common/child_process'); +const { assertProbeJson } = require('../common/debugger-probe'); + +const cwd = fixtures.path('debugger'); +const probeUrl = fixtures.fileURL('debugger', 'probe-max-hit.js').href; + +// --max-hit written before --cond. The condition still filters index !== 1, so +// the only recorded hit carries value 1 rather than the loop's first iteration. +spawnSyncAndAssert(process.execPath, [ + 'inspect', + '--json', + '--probe', 'probe-max-hit.js:5', + '--expr', 'index', + '--max-hit', '5', + '--cond', 'index === 1', + 'probe-max-hit.js', +], { cwd }, { + stdout(output) { + assertProbeJson(output, { + v: 2, + probes: [{ + expr: 'index', + condition: 'index === 1', + maxHit: 5, + target: { suffix: 'probe-max-hit.js', line: 5 }, + }], + results: [ + { + probe: 0, + event: 'hit', + hit: 1, + location: { url: probeUrl, line: 5, column: 3 }, + result: { type: 'number', value: 1, description: '1' }, + }, + { event: 'completed' }, + ], + }); + }, + trim: true, +}); diff --git a/test/parallel/test-debugger-probe-cond-shared.js b/test/parallel/test-debugger-probe-cond-shared.js new file mode 100644 index 00000000000000..0a00854177137b --- /dev/null +++ b/test/parallel/test-debugger-probe-cond-shared.js @@ -0,0 +1,61 @@ +// This tests that two probes at the same location with the same --cond share a +// single breakpoint and both evaluate only when the condition holds. +'use strict'; + +const common = require('../common'); +common.skipIfInspectorDisabled(); + +const fixtures = require('../common/fixtures'); +const { spawnSyncAndAssert } = require('../common/child_process'); +const { assertProbeJson } = require('../common/debugger-probe'); + +const cwd = fixtures.path('debugger'); +const probeUrl = fixtures.fileURL('debugger', 'probe-max-hit.js').href; + +spawnSyncAndAssert(process.execPath, [ + 'inspect', + '--json', + '--probe', 'probe-max-hit.js:5', + '--expr', 'index', + '--cond', 'index === 1', + '--probe', 'probe-max-hit.js:5', + '--expr', 'total', + '--cond', 'index === 1', + 'probe-max-hit.js', +], { cwd }, { + stdout(output) { + assertProbeJson(output, { + v: 2, + probes: [ + { + expr: 'index', + condition: 'index === 1', + target: { suffix: 'probe-max-hit.js', line: 5 }, + }, + { + expr: 'total', + condition: 'index === 1', + target: { suffix: 'probe-max-hit.js', line: 5 }, + }, + ], + results: [ + { + probe: 0, + event: 'hit', + hit: 1, + location: { url: probeUrl, line: 5, column: 3 }, + result: { type: 'number', value: 1, description: '1' }, + }, + { + probe: 1, + event: 'hit', + hit: 1, + location: { url: probeUrl, line: 5, column: 3 }, + result: { type: 'number', value: 1, description: '1' }, + }, + { event: 'completed' }, + ], + }); + }, + trim: true, +}); diff --git a/test/parallel/test-debugger-probe-cond-throws.js b/test/parallel/test-debugger-probe-cond-throws.js new file mode 100644 index 00000000000000..a60eacfba87c2b --- /dev/null +++ b/test/parallel/test-debugger-probe-cond-throws.js @@ -0,0 +1,37 @@ +// This tests that a --cond expression that throws is treated as false, so the +// probe never records a hit and is reported as missed. +'use strict'; + +const common = require('../common'); +common.skipIfInspectorDisabled(); + +const fixtures = require('../common/fixtures'); +const { spawnSyncAndAssert } = require('../common/child_process'); +const { assertProbeJson } = require('../common/debugger-probe'); + +const cwd = fixtures.path('debugger'); + +spawnSyncAndAssert(process.execPath, [ + 'inspect', + '--json', + '--probe', 'probe-max-hit.js:5', + '--expr', 'index', + '--cond', 'index.missing.member', + 'probe-max-hit.js', +], { cwd }, { + stdout(output) { + assertProbeJson(output, { + v: 2, + probes: [{ + expr: 'index', + condition: 'index.missing.member', + target: { suffix: 'probe-max-hit.js', line: 5 }, + }], + results: [{ + event: 'miss', + pending: [0], + }], + }); + }, + trim: true, +}); diff --git a/test/parallel/test-debugger-probe-cond.js b/test/parallel/test-debugger-probe-cond.js new file mode 100644 index 00000000000000..08d7f2c871534a --- /dev/null +++ b/test/parallel/test-debugger-probe-cond.js @@ -0,0 +1,44 @@ +// This tests that --cond only records a hit when the condition is truthy at +// the probe location. +'use strict'; + +const common = require('../common'); +common.skipIfInspectorDisabled(); + +const fixtures = require('../common/fixtures'); +const { spawnSyncAndAssert } = require('../common/child_process'); +const { assertProbeJson } = require('../common/debugger-probe'); + +const cwd = fixtures.path('debugger'); +const probeUrl = fixtures.fileURL('debugger', 'probe-max-hit.js').href; + +spawnSyncAndAssert(process.execPath, [ + 'inspect', + '--json', + '--probe', 'probe-max-hit.js:5', + '--expr', 'index', + '--cond', 'index === 1', + 'probe-max-hit.js', +], { cwd }, { + stdout(output) { + assertProbeJson(output, { + v: 2, + probes: [{ + expr: 'index', + condition: 'index === 1', + target: { suffix: 'probe-max-hit.js', line: 5 }, + }], + results: [ + { + probe: 0, + event: 'hit', + hit: 1, + location: { url: probeUrl, line: 5, column: 3 }, + result: { type: 'number', value: 1, description: '1' }, + }, + { event: 'completed' }, + ], + }); + }, + trim: true, +}); diff --git a/test/parallel/test-dgram-membership.js b/test/parallel/test-dgram-membership.js index ebfdaa9cb6325f..052deb92d61197 100644 --- a/test/parallel/test-dgram-membership.js +++ b/test/parallel/test-dgram-membership.js @@ -90,7 +90,7 @@ const setup = dgram.createSocket.bind(dgram, { type: 'udp4', reuseAddr: true }); socket.close(); } -// addSourceSpecificMembership with invalid sourceAddress should throw +// addSourceSpecificMembership with invalid groupAddress should throw { const socket = setup(); assert.throws(() => { diff --git a/test/parallel/test-domain-uncaught-exception.js b/test/parallel/test-domain-uncaught-exception.js index a9a28c35ec26a7..1e585dda2e8655 100644 --- a/test/parallel/test-domain-uncaught-exception.js +++ b/test/parallel/test-domain-uncaught-exception.js @@ -31,7 +31,7 @@ tests.push({ }); function test2() { - // Throwing from from within a domain that doesn't have an error handler must + // Throwing from within a domain that doesn't have an error handler must // result in emitting the process' uncaughtException event. const d2 = domain.create(); d2.run(function() { diff --git a/test/parallel/test-eslint-func-name-matching.js b/test/parallel/test-eslint-func-name-matching.js new file mode 100644 index 00000000000000..588ba9e234b430 --- /dev/null +++ b/test/parallel/test-eslint-func-name-matching.js @@ -0,0 +1,1108 @@ +// @fileoverview Tests for func-name-matching rule. +// @author Annie Zhang + +'use strict'; +const common = require('../common'); +if ((!common.hasCrypto) || (!common.hasIntl)) { + common.skip('ESLint tests require crypto and Intl'); +} +common.skipIfEslintMissing(); + +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +const rule = require('../../tools/eslint-rules/func-name-matching'); +const RuleTester = require('../../tools/eslint/node_modules/eslint').RuleTester; + +//------------------------------------------------------------------------------ +// Tests +//------------------------------------------------------------------------------ + +const ruleTester = new RuleTester(); + +ruleTester.run('func-name-matching', rule, { + valid: [ + 'var foo;', + 'var foo = function foo() {};', + { code: 'var foo = function foo() {};', options: ['always'] }, + { code: 'var foo = function bar() {};', options: ['never'] }, + 'var foo = function() {}', + { code: 'var foo = () => {}', languageOptions: { ecmaVersion: 6 } }, + 'foo = function foo() {};', + { code: 'foo = function foo() {};', options: ['always'] }, + { code: 'foo = function bar() {};', options: ['never'] }, + { + code: 'foo &&= function foo() {};', + languageOptions: { ecmaVersion: 2021 }, + }, + { + code: 'obj.foo ||= function foo() {};', + languageOptions: { ecmaVersion: 2021 }, + }, + { + code: 'obj[\'foo\'] ??= function foo() {};', + languageOptions: { ecmaVersion: 2021 }, + }, + 'obj.foo = function foo() {};', + { code: 'obj.foo = function foo() {};', options: ['always'] }, + { code: 'obj.foo = function bar() {};', options: ['never'] }, + 'obj.foo = function() {};', + { code: 'obj.foo = function() {};', options: ['always'] }, + { code: 'obj.foo = function() {};', options: ['never'] }, + 'obj.bar.foo = function foo() {};', + { code: 'obj.bar.foo = function foo() {};', options: ['always'] }, + { code: 'obj.bar.foo = function baz() {};', options: ['never'] }, + 'obj[\'foo\'] = function foo() {};', + { code: 'obj[\'foo\'] = function foo() {};', options: ['always'] }, + { code: 'obj[\'foo\'] = function bar() {};', options: ['never'] }, + 'obj[\'foo//bar\'] = function foo() {};', + { code: 'obj[\'foo//bar\'] = function foo() {};', options: ['always'] }, + { code: 'obj[\'foo//bar\'] = function foo() {};', options: ['never'] }, + 'obj[foo] = function bar() {};', + { code: 'obj[foo] = function bar() {};', options: ['always'] }, + { code: 'obj[foo] = function bar() {};', options: ['never'] }, + 'var obj = {foo: function foo() {}};', + { code: 'var obj = {foo: function foo() {}};', options: ['always'] }, + { code: 'var obj = {foo: function bar() {}};', options: ['never'] }, + 'var obj = {\'foo\': function foo() {}};', + { code: 'var obj = {\'foo\': function foo() {}};', options: ['always'] }, + { code: 'var obj = {\'foo\': function bar() {}};', options: ['never'] }, + 'var obj = {\'foo//bar\': function foo() {}};', + { + code: 'var obj = {\'foo//bar\': function foo() {}};', + options: ['always'], + }, + { + code: 'var obj = {\'foo//bar\': function foo() {}};', + options: ['never'], + }, + 'var obj = {foo: function() {}};', + { code: 'var obj = {foo: function() {}};', options: ['always'] }, + { code: 'var obj = {foo: function() {}};', options: ['never'] }, + { + code: 'var obj = {[foo]: function bar() {}} ', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'var obj = {[\'x\' + 2]: function bar(){}};', + languageOptions: { ecmaVersion: 6 }, + }, + 'obj[\'x\' + 2] = function bar(){};', + { + code: 'var [ bar ] = [ function bar(){} ];', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'function a(foo = function bar() {}) {}', + languageOptions: { ecmaVersion: 6 }, + }, + 'module.exports = function foo(name) {};', + 'module[\'exports\'] = function foo(name) {};', + { + code: 'module.exports = function foo(name) {};', + options: [{ includeCommonJSModuleExports: false }], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'module.exports = function foo(name) {};', + options: ['always', { includeCommonJSModuleExports: false }], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'module.exports = function foo(name) {};', + options: ['never', { includeCommonJSModuleExports: false }], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'module[\'exports\'] = function foo(name) {};', + options: [{ includeCommonJSModuleExports: false }], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'module[\'exports\'] = function foo(name) {};', + options: ['always', { includeCommonJSModuleExports: false }], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'module[\'exports\'] = function foo(name) {};', + options: ['never', { includeCommonJSModuleExports: false }], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({[\'foo\']: function foo() {}})', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({[\'foo\']: function foo() {}})', + options: ['always'], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({[\'foo\']: function bar() {}})', + options: ['never'], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({[\'❤\']: function foo() {}})', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({[foo]: function bar() {}})', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({[null]: function foo() {}})', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({[1]: function foo() {}})', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({[true]: function foo() {}})', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({[`x`]: function foo() {}})', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({[/abc/]: function foo() {}})', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({[[1, 2, 3]]: function foo() {}})', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({[{x: 1}]: function foo() {}})', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '[] = function foo() {}', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({} = function foo() {})', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '[a] = function foo() {}', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({a} = function foo() {})', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'var [] = function foo() {}', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'var {} = function foo() {}', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'var [a] = function foo() {}', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'var {a} = function foo() {}', + languageOptions: { ecmaVersion: 6 }, + }, + { + code: '({ value: function value() {} })', + options: [{ considerPropertyDescriptor: true }], + }, + { + code: 'obj.foo = function foo() {};', + options: ['always', { considerPropertyDescriptor: true }], + }, + { + code: 'obj.bar.foo = function foo() {};', + options: ['always', { considerPropertyDescriptor: true }], + }, + { + code: 'var obj = {foo: function foo() {}};', + options: ['always', { considerPropertyDescriptor: true }], + }, + { + code: 'var obj = {foo: function() {}};', + options: ['always', { considerPropertyDescriptor: true }], + }, + { + code: 'var obj = { value: function value() {} }', + options: ['always', { considerPropertyDescriptor: true }], + }, + { + code: 'Object.defineProperty(foo, \'bar\', { value: function bar() {} })', + options: ['always', { considerPropertyDescriptor: true }], + }, + { + code: 'Object.defineProperties(foo, { bar: { value: function bar() {} } })', + options: ['always', { considerPropertyDescriptor: true }], + }, + { + code: 'Object.create(proto, { bar: { value: function bar() {} } })', + options: ['always', { considerPropertyDescriptor: true }], + }, + { + code: 'Object.defineProperty(foo, \'b\' + \'ar\', { value: function bar() {} })', + options: ['always', { considerPropertyDescriptor: true }], + }, + { + code: 'Object.defineProperties(foo, { [\'bar\']: { value: function bar() {} } })', + options: ['always', { considerPropertyDescriptor: true }], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'Object.create(proto, { [\'bar\']: { value: function bar() {} } })', + options: ['always', { considerPropertyDescriptor: true }], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'Object.defineProperty(foo, \'bar\', { value() {} })', + options: ['never', { considerPropertyDescriptor: true }], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'Object.defineProperties(foo, { bar: { value() {} } })', + options: ['never', { considerPropertyDescriptor: true }], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'Object.create(proto, { bar: { value() {} } })', + options: ['never', { considerPropertyDescriptor: true }], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'Reflect.defineProperty(foo, \'bar\', { value: function bar() {} })', + options: ['always', { considerPropertyDescriptor: true }], + }, + { + code: 'Reflect.defineProperty(foo, \'b\' + \'ar\', { value: function baz() {} })', + options: ['always', { considerPropertyDescriptor: true }], + }, + { + code: 'Reflect.defineProperty(foo, \'bar\', { value() {} })', + options: ['never', { considerPropertyDescriptor: true }], + languageOptions: { ecmaVersion: 6 }, + }, + { + code: 'foo({ value: function value() {} })', + options: ['always', { considerPropertyDescriptor: true }], + }, + + // Class fields, private names are ignored + { + code: 'class C { x = function () {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { x = function () {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { \'x\' = function () {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { \'x\' = function () {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { #x = function () {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { #x = function () {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [x] = function () {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [x] = function () {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [\'x\'] = function () {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [\'x\'] = function () {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { x = function x() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { x = function y() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { \'x\' = function x() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { \'x\' = function y() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { #x = function x() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { #x = function x() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { #x = function y() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { #x = function y() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [x] = function x() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [x] = function x() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [x] = function y() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [x] = function y() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [\'x\'] = function x() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [\'x\'] = function y() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { \'xy \' = function foo() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { \'xy \' = function xy() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [\'xy \'] = function foo() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [\'xy \'] = function xy() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { 1 = function x0() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { 1 = function x1() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [1] = function x0() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [1] = function x1() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [f()] = function g() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { [f()] = function f() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { static x = function x() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { static x = function y() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { x = (function y() {})(); }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { x = (function x() {})(); }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: '(class { x = function x() {}; })', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: '(class { x = function y() {}; })', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { #x; foo() { this.#x = function x() {}; } }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { #x; foo() { this.#x = function x() {}; } }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { #x; foo() { this.#x = function y() {}; } }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { #x; foo() { this.#x = function y() {}; } }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { #x; foo() { a.b.#x = function x() {}; } }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { #x; foo() { a.b.#x = function x() {}; } }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { #x; foo() { a.b.#x = function y() {}; } }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'class C { #x; foo() { a.b.#x = function y() {}; } }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + }, + { + code: 'var obj = { \'\\u1885\': function foo() {} };', // Not a valid identifier in es5 + languageOptions: { + ecmaVersion: 5, + sourceType: 'script', + }, + }, + ], + invalid: [ + { + code: 'let foo = function bar() {};', + options: ['always'], + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'matchVariable', + data: { funcName: 'bar', name: 'foo' }, + }, + ], + }, + { + code: 'let foo = function bar() {};', + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'matchVariable', + data: { funcName: 'bar', name: 'foo' }, + }, + ], + }, + { + code: 'foo = function bar() {};', + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'matchVariable', + data: { funcName: 'bar', name: 'foo' }, + }, + ], + }, + { + code: 'foo &&= function bar() {};', + languageOptions: { ecmaVersion: 2021 }, + errors: [ + { + messageId: 'matchVariable', + data: { funcName: 'bar', name: 'foo' }, + }, + ], + }, + { + code: 'obj.foo ||= function bar() {};', + languageOptions: { ecmaVersion: 2021 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'bar', name: 'foo' }, + }, + ], + }, + { + code: 'obj[\'foo\'] ??= function bar() {};', + languageOptions: { ecmaVersion: 2021 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'bar', name: 'foo' }, + }, + ], + }, + { + code: 'obj.foo = function bar() {};', + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'bar', name: 'foo' }, + }, + ], + }, + { + code: 'obj.bar.foo = function bar() {};', + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'bar', name: 'foo' }, + }, + ], + }, + { + code: 'obj[\'foo\'] = function bar() {};', + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'bar', name: 'foo' }, + }, + ], + }, + { + code: 'let obj = {foo: function bar() {}};', + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'bar', name: 'foo' }, + }, + ], + }, + { + code: 'let obj = {\'foo\': function bar() {}};', + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'bar', name: 'foo' }, + }, + ], + }, + { + code: '({[\'foo\']: function bar() {}})', + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'bar', name: 'foo' }, + }, + ], + }, + { + code: 'module.exports = function foo(name) {};', + options: [{ includeCommonJSModuleExports: true }], + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'foo', name: 'exports' }, + }, + ], + }, + { + code: 'module.exports = function foo(name) {};', + options: ['always', { includeCommonJSModuleExports: true }], + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'foo', name: 'exports' }, + }, + ], + }, + { + code: 'module.exports = function exports(name) {};', + options: ['never', { includeCommonJSModuleExports: true }], + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'exports', name: 'exports' }, + }, + ], + }, + { + code: 'module[\'exports\'] = function foo(name) {};', + options: [{ includeCommonJSModuleExports: true }], + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'foo', name: 'exports' }, + }, + ], + }, + { + code: 'module[\'exports\'] = function foo(name) {};', + options: ['always', { includeCommonJSModuleExports: true }], + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'foo', name: 'exports' }, + }, + ], + }, + { + code: 'module[\'exports\'] = function exports(name) {};', + options: ['never', { includeCommonJSModuleExports: true }], + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'exports', name: 'exports' }, + }, + ], + }, + { + code: 'var foo = function foo(name) {};', + options: ['never'], + errors: [ + { + messageId: 'notMatchVariable', + data: { funcName: 'foo', name: 'foo' }, + }, + ], + }, + { + code: 'obj.foo = function foo(name) {};', + options: ['never'], + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'foo', name: 'foo' }, + }, + ], + }, + { + code: 'Object.defineProperty(foo, \'bar\', { value: function baz() {} })', + options: ['always', { considerPropertyDescriptor: true }], + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'baz', name: 'bar' }, + }, + ], + }, + { + code: 'Object.defineProperties(foo, { bar: { value: function baz() {} } })', + options: ['always', { considerPropertyDescriptor: true }], + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'baz', name: 'bar' }, + }, + ], + }, + { + code: 'Object.create(proto, { bar: { value: function baz() {} } })', + options: ['always', { considerPropertyDescriptor: true }], + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'baz', name: 'bar' }, + }, + ], + }, + { + code: 'var obj = { value: function foo(name) {} }', + options: ['always', { considerPropertyDescriptor: true }], + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'foo', name: 'value' }, + }, + ], + }, + { + code: 'Object.defineProperty(foo, \'bar\', { value: function bar() {} })', + options: ['never', { considerPropertyDescriptor: true }], + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'bar', name: 'bar' }, + }, + ], + }, + { + code: 'Object.defineProperties(foo, { bar: { value: function bar() {} } })', + options: ['never', { considerPropertyDescriptor: true }], + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'bar', name: 'bar' }, + }, + ], + }, + { + code: 'Object.create(proto, { bar: { value: function bar() {} } })', + options: ['never', { considerPropertyDescriptor: true }], + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'bar', name: 'bar' }, + }, + ], + }, + { + code: 'Reflect.defineProperty(foo, \'bar\', { value: function baz() {} })', + options: ['always', { considerPropertyDescriptor: true }], + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'baz', name: 'bar' }, + }, + ], + }, + { + code: 'Reflect.defineProperty(foo, \'bar\', { value: function bar() {} })', + options: ['never', { considerPropertyDescriptor: true }], + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'bar', name: 'bar' }, + }, + ], + }, + // Tests for Node's primordials (ObjectDefineProperty, ObjectDefineProperties, ReflectDefineProperty) + { + code: 'ObjectDefineProperty(foo, \'bar\', { value: function baz() {} })', + options: ['always', { considerPropertyDescriptor: true }], + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'baz', name: 'bar' }, + }, + ], + }, + { + code: 'ReflectDefineProperty(foo, \'bar\', { value: function baz() {} })', + options: ['always', { considerPropertyDescriptor: true }], + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'baz', name: 'bar' }, + }, + ], + }, + { + code: 'ObjectDefineProperties(foo, { bar: { value: function baz() {} } })', + options: ['always', { considerPropertyDescriptor: true }], + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'baz', name: 'bar' }, + }, + ], + }, + { + code: 'foo({ value: function bar() {} })', + options: ['always', { considerPropertyDescriptor: true }], + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'bar', name: 'value' }, + }, + ], + }, + + // Optional chaining + { + code: '(obj?.aaa).foo = function bar() {};', + languageOptions: { ecmaVersion: 2020 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'bar', name: 'foo' }, + }, + ], + }, + { + code: 'Object?.defineProperty(foo, \'bar\', { value: function baz() {} })', + options: ['always', { considerPropertyDescriptor: true }], + languageOptions: { ecmaVersion: 2020 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'baz', name: 'bar' }, + }, + ], + }, + { + code: '(Object?.defineProperty)(foo, \'bar\', { value: function baz() {} })', + options: ['always', { considerPropertyDescriptor: true }], + languageOptions: { ecmaVersion: 2020 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'baz', name: 'bar' }, + }, + ], + }, + { + code: 'Object?.defineProperty(foo, \'bar\', { value: function bar() {} })', + options: ['never', { considerPropertyDescriptor: true }], + languageOptions: { ecmaVersion: 2020 }, + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'bar', name: 'bar' }, + }, + ], + }, + { + code: '(Object?.defineProperty)(foo, \'bar\', { value: function bar() {} })', + options: ['never', { considerPropertyDescriptor: true }], + languageOptions: { ecmaVersion: 2020 }, + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'bar', name: 'bar' }, + }, + ], + }, + { + code: 'Object?.defineProperties(foo, { bar: { value: function baz() {} } })', + options: ['always', { considerPropertyDescriptor: true }], + languageOptions: { ecmaVersion: 2020 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'baz', name: 'bar' }, + }, + ], + }, + { + code: '(Object?.defineProperties)(foo, { bar: { value: function baz() {} } })', + options: ['always', { considerPropertyDescriptor: true }], + languageOptions: { ecmaVersion: 2020 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'baz', name: 'bar' }, + }, + ], + }, + { + code: 'Object?.defineProperties(foo, { bar: { value: function bar() {} } })', + options: ['never', { considerPropertyDescriptor: true }], + languageOptions: { ecmaVersion: 2020 }, + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'bar', name: 'bar' }, + }, + ], + }, + { + code: '(Object?.defineProperties)(foo, { bar: { value: function bar() {} } })', + options: ['never', { considerPropertyDescriptor: true }], + languageOptions: { ecmaVersion: 2020 }, + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'bar', name: 'bar' }, + }, + ], + }, + + // class fields + { + code: 'class C { x = function y() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'y', name: 'x' }, + }, + ], + }, + { + code: 'class C { x = function x() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'x', name: 'x' }, + }, + ], + }, + { + code: 'class C { \'x\' = function y() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'y', name: 'x' }, + }, + ], + }, + { + code: 'class C { \'x\' = function x() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'x', name: 'x' }, + }, + ], + }, + { + code: 'class C { [\'x\'] = function y() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'y', name: 'x' }, + }, + ], + }, + { + code: 'class C { [\'x\'] = function x() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'x', name: 'x' }, + }, + ], + }, + { + code: 'class C { static x = function y() {}; }', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'y', name: 'x' }, + }, + ], + }, + { + code: 'class C { static x = function x() {}; }', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'x', name: 'x' }, + }, + ], + }, + { + code: '(class { x = function y() {}; })', + options: ['always'], + languageOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'y', name: 'x' }, + }, + ], + }, + { + code: '(class { x = function x() {}; })', + options: ['never'], + languageOptions: { ecmaVersion: 2022 }, + errors: [ + { + messageId: 'notMatchProperty', + data: { funcName: 'x', name: 'x' }, + }, + ], + }, + { + code: 'var obj = { \'\\u1885\': function foo() {} };', // Valid identifier in es2015 + languageOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: 'matchProperty', + data: { funcName: 'foo', name: '\u1885' }, + }, + ], + }, + ], +}); diff --git a/test/parallel/test-event-emitter-remove-listeners.js b/test/parallel/test-event-emitter-remove-listeners.js index 7b94d31f45d221..e9e4a74a5b633e 100644 --- a/test/parallel/test-event-emitter-remove-listeners.js +++ b/test/parallel/test-event-emitter-remove-listeners.js @@ -144,6 +144,19 @@ function listener2() {} assert.deepStrictEqual(ee, ee.removeListener('foo', () => {})); } +{ + const ee = new EventEmitter(); + ee.on('persistent', listener1); + + for (let i = 0; i < 100; i++) { + const eventName = `event-${i}`; + ee.on(eventName, listener2); + ee.removeListener(eventName, listener2); + } + + assert.deepStrictEqual(Reflect.ownKeys(ee._events), ['persistent']); +} + { const ee = new EventEmitter(); const listener = () => {}; diff --git a/test/parallel/test-fs-cp-async-socket.mjs b/test/parallel/test-fs-cp-async-socket.mjs index 4ebc56cc3f664f..f2010e6b3fe33b 100644 --- a/test/parallel/test-fs-cp-async-socket.mjs +++ b/test/parallel/test-fs-cp-async-socket.mjs @@ -15,7 +15,7 @@ if (isWindows) { // See https://github.com/nodejs/node/pull/48409 if (common.isInsideDirWithUnusualChars) { - common.skip('Test is borken in directories with unusual characters'); + common.skip('Test is broken in directories with unusual characters'); } tmpdir.refresh(); diff --git a/test/parallel/test-fs-cp-sync-copy-directory-to-file-error.mjs b/test/parallel/test-fs-cp-sync-copy-directory-to-file-error.mjs index 04388f3166b87b..2b50a415d00b25 100644 --- a/test/parallel/test-fs-cp-sync-copy-directory-to-file-error.mjs +++ b/test/parallel/test-fs-cp-sync-copy-directory-to-file-error.mjs @@ -8,7 +8,7 @@ import fixtures from '../common/fixtures.js'; // See https://github.com/nodejs/node/pull/48409 if (isInsideDirWithUnusualChars) { - skip('Test is borken in directories with unusual characters'); + skip('Test is broken in directories with unusual characters'); } tmpdir.refresh(); diff --git a/test/parallel/test-fs-cp-sync-copy-file-to-directory-error.mjs b/test/parallel/test-fs-cp-sync-copy-file-to-directory-error.mjs index 96e1fa3b4e2ad1..883f16db2a324c 100644 --- a/test/parallel/test-fs-cp-sync-copy-file-to-directory-error.mjs +++ b/test/parallel/test-fs-cp-sync-copy-file-to-directory-error.mjs @@ -10,7 +10,7 @@ tmpdir.refresh(); // See https://github.com/nodejs/node/pull/48409 if (isInsideDirWithUnusualChars) { - skip('Test is borken in directories with unusual characters'); + skip('Test is broken in directories with unusual characters'); } const src = fixtures.path('copy/kitchen-sink/README.md'); diff --git a/test/parallel/test-fs-cp-sync-copy-socket-error.mjs b/test/parallel/test-fs-cp-sync-copy-socket-error.mjs index 81a06cc224aee1..dae8786a78df35 100644 --- a/test/parallel/test-fs-cp-sync-copy-socket-error.mjs +++ b/test/parallel/test-fs-cp-sync-copy-socket-error.mjs @@ -14,7 +14,7 @@ if (isWindows) { // See https://github.com/nodejs/node/pull/48409 if (common.isInsideDirWithUnusualChars) { - common.skip('Test is borken in directories with unusual characters'); + common.skip('Test is broken in directories with unusual characters'); } tmpdir.refresh(); diff --git a/test/parallel/test-fs-cp-sync-parent-symlink-dest-points-to-src-error.mjs b/test/parallel/test-fs-cp-sync-parent-symlink-dest-points-to-src-error.mjs index 52feaf8120165e..441de0e9d84891 100644 --- a/test/parallel/test-fs-cp-sync-parent-symlink-dest-points-to-src-error.mjs +++ b/test/parallel/test-fs-cp-sync-parent-symlink-dest-points-to-src-error.mjs @@ -10,7 +10,7 @@ tmpdir.refresh(); // See https://github.com/nodejs/node/pull/48409 if (isInsideDirWithUnusualChars) { - skip('Test is borken in directories with unusual characters'); + skip('Test is broken in directories with unusual characters'); } const src = nextdir(); diff --git a/test/parallel/test-fs-cp-sync-src-parent-of-dest-error.mjs b/test/parallel/test-fs-cp-sync-src-parent-of-dest-error.mjs index 55e4c7014b7497..12f00812a00b9a 100644 --- a/test/parallel/test-fs-cp-sync-src-parent-of-dest-error.mjs +++ b/test/parallel/test-fs-cp-sync-src-parent-of-dest-error.mjs @@ -10,7 +10,7 @@ tmpdir.refresh(); // See https://github.com/nodejs/node/pull/48409 if (isInsideDirWithUnusualChars) { - skip('Test is borken in directories with unusual characters'); + skip('Test is broken in directories with unusual characters'); } const src = nextdir('a', tmpdir); diff --git a/test/parallel/test-fs-glob.mjs b/test/parallel/test-fs-glob.mjs index 560b4e72e4adec..bd95bce7d0e38a 100644 --- a/test/parallel/test-fs-glob.mjs +++ b/test/parallel/test-fs-glob.mjs @@ -393,7 +393,7 @@ describe('fsPromises.glob - with file: URL as cwd', function() { const normalizeDirent = (dirent) => relative(fixtureDir, join(dirent.parentPath, dirent.name)); // The call to `join()` with only one argument is important, as -// it ensures that the proper path seperators are applied. +// it ensures that the proper path separators are applied. const normalizePath = (path) => (isAbsolute(path) ? relative(fixtureDir, path) : join(path)); describe('glob - withFileTypes', function() { diff --git a/test/parallel/test-fs-promises-appendfile.js b/test/parallel/test-fs-promises-appendfile.js new file mode 100644 index 00000000000000..04a3e4ac9072ec --- /dev/null +++ b/test/parallel/test-fs-promises-appendfile.js @@ -0,0 +1,191 @@ +'use strict'; + +const common = require('../common'); +const fs = require('fs'); +const fsPromises = fs.promises; +const path = require('path'); +const tmpdir = require('../common/tmpdir'); +const assert = require('assert'); +const tmpDir = tmpdir.path; +const { Readable } = require('stream'); + +tmpdir.refresh(); + +const buffer = Buffer.from('abc'.repeat(1000)); +const stream = Readable.from(['a', 'b', 'c']); +const stream2 = Readable.from(['ümlaut', ' ', 'sechzig']); +const iterable = { + expected: 'abc', + *[Symbol.iterator]() { + yield 'a'; + yield 'b'; + yield 'c'; + } +}; + +const veryLargeIterable = { + expected: 'dogs running'.repeat(512 * 1024), + *[Symbol.iterator]() { + yield Buffer.from('dogs running'.repeat(512 * 1024), 'utf8'); + } +}; + +function iterableWith(value) { + return { + *[Symbol.iterator]() { + yield value; + } + }; +} +const bufferIterable = { + expected: 'abc', + *[Symbol.iterator]() { + yield Buffer.from('a'); + yield Buffer.from('b'); + yield Buffer.from('c'); + } +}; +const asyncIterable = { + expected: 'abc', + async* [Symbol.asyncIterator]() { + yield 'a'; + yield 'b'; + yield 'c'; + } +}; + +let counter = 0; + +async function doAppendString() { + const string = 'x~yz'.repeat(100); + const dest = path.resolve(tmpDir, `tmp-${counter++}.txt`); + await fsPromises.appendFile(dest, string); + const data = fs.readFileSync(dest); + const stringAsBuffer = Buffer.from(string, 'utf8'); + assert.deepStrictEqual(stringAsBuffer, data); +} + +async function doAppendBuffer() { + const dest = path.resolve(tmpDir, `tmp-${counter++}.txt`); + await fsPromises.appendFile(dest, buffer); + const data = fs.readFileSync(dest); + assert.deepStrictEqual(data, buffer); +} + +async function doAppendStream() { + const dest = path.resolve(tmpDir, `tmp-${counter++}.txt`); + await fsPromises.appendFile(dest, stream); + const expected = 'abc'; + const data = fs.readFileSync(dest, 'utf-8'); + assert.deepStrictEqual(data, expected); +} + +async function doAppendStreamWithCancel() { + const dest = path.resolve(tmpDir, `tmp-${counter++}.txt`); + const controller = new AbortController(); + const { signal } = controller; + process.nextTick(() => controller.abort()); + await assert.rejects( + fsPromises.appendFile(dest, stream, { signal }), + { name: 'AbortError' } + ); +} + +async function doAppendIterable() { + const dest = path.resolve(tmpDir, `tmp-${counter++}.txt`); + await fsPromises.appendFile(dest, iterable); + const data = fs.readFileSync(dest, 'utf-8'); + assert.deepStrictEqual(data, iterable.expected); +} + +async function doAppendInvalidIterable() { + const dest = path.resolve(tmpDir, `tmp-${counter++}.txt`); + await Promise.all( + [42, 42n, {}, Symbol('42'), true, undefined, null, NaN].map((value) => + assert.rejects(fsPromises.appendFile(dest, iterableWith(value)), { + code: 'ERR_INVALID_ARG_TYPE', + }) + ) + ); +} + +async function doAppendIterableWithEncoding() { + const dest = path.resolve(tmpDir, `tmp-${counter++}.txt`); + await fsPromises.appendFile(dest, stream2, 'latin1'); + const expected = 'ümlaut sechzig'; + const data = fs.readFileSync(dest, 'latin1'); + assert.deepStrictEqual(data, expected); +} + +async function doAppendBufferIterable() { + const dest = path.resolve(tmpDir, `tmp-${counter++}.txt`); + await fsPromises.appendFile(dest, bufferIterable); + const data = fs.readFileSync(dest, 'utf-8'); + assert.deepStrictEqual(data, bufferIterable.expected); +} + +async function doAppendAsyncIterable() { + const dest = path.resolve(tmpDir, `tmp-${counter++}.txt`); + await fsPromises.appendFile(dest, asyncIterable); + const data = fs.readFileSync(dest, 'utf-8'); + assert.deepStrictEqual(data, asyncIterable.expected); +} + +async function doAppendLargeIterable() { + const dest = path.resolve(tmpDir, `tmp-${counter++}.txt`); + await fsPromises.appendFile(dest, veryLargeIterable); + const data = fs.readFileSync(dest, 'utf-8'); + assert.deepStrictEqual(data, veryLargeIterable.expected); +} + +async function doAppendInvalidValues() { + const dest = path.resolve(tmpDir, `tmp-${counter++}.txt`); + await Promise.all( + [42, 42n, {}, Symbol('42'), true, undefined, null, NaN].map((value) => + assert.rejects(fsPromises.appendFile(dest, value), { + code: 'ERR_INVALID_ARG_TYPE', + }) + ) + ); +} + +async function doAppendBufferAndCancel() { + const dest = path.resolve(tmpDir, `tmp-${counter++}.txt`); + const controller = new AbortController(); + const { signal } = controller; + process.nextTick(() => controller.abort()); + await assert.rejects( + fsPromises.appendFile(dest, buffer, { signal }), + { name: 'AbortError' } + ); +} + +async function doAppendTypedArrays() { + for (const Constructor of [Uint8Array, Uint16Array, Uint32Array]) { + const dest = path.resolve(tmpDir, `tmp-${counter++}.txt`); + + // Use a file size larger than `kReadFileMaxChunkSize`. + const buffer = Buffer.from('012'.repeat(2 ** 14)); + + const array = new Constructor(buffer.buffer); + await fsPromises.appendFile(dest, array); + const data = await fsPromises.readFile(dest); + assert.deepStrictEqual(data, buffer); + } +} + +(async () => { + await doAppendBuffer(); + await doAppendBufferAndCancel(); + await doAppendString(); + await doAppendStream(); + await doAppendStreamWithCancel(); + await doAppendIterable(); + await doAppendInvalidIterable(); + await doAppendIterableWithEncoding(); + await doAppendBufferIterable(); + await doAppendAsyncIterable(); + await doAppendLargeIterable(); + await doAppendInvalidValues(); + await doAppendTypedArrays(); +})().then(common.mustCall()); diff --git a/test/parallel/test-fs-promises-file-handle-append-file.js b/test/parallel/test-fs-promises-file-handle-append-file.js index 42b6dbee309cec..4c476a6c36ca29 100644 --- a/test/parallel/test-fs-promises-file-handle-append-file.js +++ b/test/parallel/test-fs-promises-file-handle-append-file.js @@ -8,52 +8,256 @@ const common = require('../common'); const fs = require('fs'); const { open } = fs.promises; const path = require('path'); +const { Readable } = require('stream'); const tmpdir = require('../common/tmpdir'); const assert = require('assert'); const tmpDir = tmpdir.path; tmpdir.refresh(); -async function validateAppendBuffer() { - const filePath = path.resolve(tmpDir, 'tmp-append-file-buffer.txt'); +const stream = Readable.from(['a', 'b', 'c']); +const stream2 = Readable.from(['ümlaut', ' ', 'sechzig']); +const iterable = { + expected: 'abc', + *[Symbol.iterator]() { + yield 'a'; + yield 'b'; + yield 'c'; + } +}; +function iterableWith(value) { + return { + *[Symbol.iterator]() { + yield value; + } + }; +} +const bufferIterable = { + expected: 'abc', + *[Symbol.iterator]() { + yield Buffer.from('a'); + yield Buffer.from('b'); + yield Buffer.from('c'); + } +}; +const asyncIterable = { + expected: 'abc', + async* [Symbol.asyncIterator]() { + yield 'a'; + yield 'b'; + yield 'c'; + } +}; +const veryLargeIterable = { + expected: 'dogs running'.repeat(512 * 1024), + *[Symbol.iterator]() { + yield Buffer.from('dogs running'.repeat(512 * 1024), 'utf8'); + } +}; + +let counter = 0; + +async function doAppendBuffer() { + const filePath = path.resolve(tmpDir, `tmp-${counter++}.txt`); const fileHandle = await open(filePath, 'a'); - const buffer = Buffer.from('a&Dp'.repeat(100), 'utf8'); + try { + const buffer = Buffer.from('a&Dp'.repeat(100), 'utf8'); - await fileHandle.appendFile(buffer); - const appendedFileData = fs.readFileSync(filePath); - assert.deepStrictEqual(appendedFileData, buffer); + await fileHandle.appendFile(buffer); + const appendedFileData = fs.readFileSync(filePath); + assert.deepStrictEqual(appendedFileData, buffer); - await fileHandle.close(); + } finally { + await fileHandle.close(); + } } -async function validateAppendString() { - const filePath = path.resolve(tmpDir, 'tmp-append-file-string.txt'); +async function doAppendString() { + const filePath = path.resolve(tmpDir, `tmp-${counter++}.txt`); const fileHandle = await open(filePath, 'a'); - const string = 'x~yz'.repeat(100); + try { + const string = 'x~yz'.repeat(100); - await fileHandle.appendFile(string); - const stringAsBuffer = Buffer.from(string, 'utf8'); - const appendedFileData = fs.readFileSync(filePath); - assert.deepStrictEqual(appendedFileData, stringAsBuffer); + await fileHandle.appendFile(string); + const stringAsBuffer = Buffer.from(string, 'utf8'); + const appendedFileData = fs.readFileSync(filePath); + assert.deepStrictEqual(appendedFileData, stringAsBuffer); + + } finally { + await fileHandle.close(); + } +} - await fileHandle.close(); +async function doAppendBufferAndCancel() { + const filePath = path.resolve(tmpDir, `tmp-${counter++}.txt`); + const fileHandle = await open(filePath, 'a'); + try { + const buffer = Buffer.from('dogs running'.repeat(512 * 1024), 'utf8'); + const controller = new AbortController(); + const { signal } = controller; + process.nextTick(() => controller.abort()); + await assert.rejects(fileHandle.appendFile(buffer, { signal }), { + name: 'AbortError' + }); + } finally { + await fileHandle.close(); + } +} + +async function doAppendStream() { + const filePath = path.resolve(tmpDir, `tmp-${counter++}.txt`); + const fileHandle = await open(filePath, 'a'); + try { + await fileHandle.appendFile(stream); + const expected = 'abc'; + const data = fs.readFileSync(filePath, 'utf-8'); + assert.deepStrictEqual(data, expected); + } finally { + await fileHandle.close(); + } } -async function doAppendAndCancel() { - const filePathForHandle = path.resolve(tmpDir, 'dogs-running.txt'); - const fileHandle = await open(filePathForHandle, 'w+'); - const buffer = Buffer.from('dogs running'.repeat(512 * 1024), 'utf8'); +async function doAppendStreamWithCancel() { const controller = new AbortController(); const { signal } = controller; process.nextTick(() => controller.abort()); - await assert.rejects(fileHandle.appendFile(buffer, { signal }), { - name: 'AbortError' - }); - await fileHandle.close(); + const filePath = path.resolve(tmpDir, `tmp-${counter++}.txt`); + const fileHandle = await open(filePath, 'a'); + try { + await assert.rejects( + fileHandle.appendFile(stream, { signal }), + { name: 'AbortError' } + ); + } finally { + await fileHandle.close(); + } +} + +async function doAppendIterable() { + const filePath = path.resolve(tmpDir, `tmp-${counter++}.txt`); + const fileHandle = await open(filePath, 'a'); + try { + await fileHandle.appendFile(iterable); + const data = fs.readFileSync(filePath, 'utf-8'); + assert.deepStrictEqual(data, iterable.expected); + } finally { + await fileHandle.close(); + } +} + +async function doAppendInvalidIterable() { + const filePath = path.resolve(tmpDir, `tmp-${counter++}.txt`); + const fileHandle = await open(filePath, 'a'); + try { + await Promise.all( + [42, 42n, {}, Symbol('42'), true, undefined, null, NaN].map((value) => + assert.rejects( + fileHandle.appendFile(iterableWith(value)), + { code: 'ERR_INVALID_ARG_TYPE' } + ) + ) + ); + } finally { + await fileHandle.close(); + } +} + +async function doAppendIterableWithEncoding() { + const filePath = path.resolve(tmpDir, `tmp-${counter++}.txt`); + const fileHandle = await open(filePath, 'a'); + try { + await fileHandle.appendFile(stream2, 'latin1'); + const expected = 'ümlaut sechzig'; + const data = fs.readFileSync(filePath, 'latin1'); + assert.deepStrictEqual(data, expected); + } finally { + await fileHandle.close(); + } +} + +async function doAppendBufferIterable() { + const filePath = path.resolve(tmpDir, `tmp-${counter++}.txt`); + const fileHandle = await open(filePath, 'a'); + try { + await fileHandle.appendFile(bufferIterable); + const data = fs.readFileSync(filePath, 'utf-8'); + assert.deepStrictEqual(data, bufferIterable.expected); + } finally { + await fileHandle.close(); + } +} + +async function doAppendAsyncIterable() { + const filePath = path.resolve(tmpDir, `tmp-${counter++}.txt`); + const fileHandle = await open(filePath, 'a'); + try { + await fileHandle.appendFile(asyncIterable); + const data = fs.readFileSync(filePath, 'utf-8'); + assert.deepStrictEqual(data, asyncIterable.expected); + } finally { + await fileHandle.close(); + } +} + +async function doAppendLargeIterable() { + const filePath = path.resolve(tmpDir, `tmp-${counter++}.txt`); + const fileHandle = await open(filePath, 'a'); + try { + await fileHandle.appendFile(veryLargeIterable); + const data = fs.readFileSync(filePath, 'utf-8'); + assert.deepStrictEqual(data, veryLargeIterable.expected); + } finally { + await fileHandle.close(); + } +} + +async function doAppendInvalidValues() { + const filePath = path.resolve(tmpDir, `tmp-${counter++}.txt`); + const fileHandle = await open(filePath, 'a'); + try { + await Promise.all( + [42, 42n, {}, Symbol('42'), true, undefined, null, NaN].map((value) => + assert.rejects( + fileHandle.appendFile(value), + { code: 'ERR_INVALID_ARG_TYPE' } + ) + ) + ); + } finally { + await fileHandle.close(); + } +} + +async function doAppendTypedArrays() { + for (const Constructor of [Uint8Array, Uint16Array, Uint32Array]) { + // Use a file size larger than `kReadFileMaxChunkSize`. + const buffer = Buffer.from('012'.repeat(2 ** 14)); + const array = new Constructor(buffer.buffer); + const filePath = path.resolve(tmpDir, `tmp-${counter++}.txt`); + const fileHandle = await open(filePath, 'a'); + + try { + await fileHandle.writeFile(array); + const data = fs.readFileSync(filePath); + assert.deepStrictEqual(data, buffer); + } finally { + await fileHandle.close(); + } + } } -Promise.all([ - validateAppendBuffer(), - validateAppendString(), - doAppendAndCancel(), -]).then(common.mustCall()); +(async () => { + await doAppendBuffer(); + await doAppendBufferAndCancel(); + await doAppendString(); + await doAppendStream(); + await doAppendStreamWithCancel(); + await doAppendIterable(); + await doAppendInvalidIterable(); + await doAppendIterableWithEncoding(); + await doAppendBufferIterable(); + await doAppendAsyncIterable(); + await doAppendLargeIterable(); + await doAppendInvalidValues(); + await doAppendTypedArrays(); +})().then(common.mustCall()); diff --git a/test/parallel/test-fs-promises-file-handle-writeFile.js b/test/parallel/test-fs-promises-file-handle-writeFile.js index 2c1a80e4f52d49..b08200d4f78c94 100644 --- a/test/parallel/test-fs-promises-file-handle-writeFile.js +++ b/test/parallel/test-fs-promises-file-handle-writeFile.js @@ -1,12 +1,8 @@ 'use strict'; const common = require('../common'); - -// The following tests validate base functionality for the fs.promises -// FileHandle.writeFile method. - const fs = require('fs'); -const { open, writeFile } = fs.promises; +const { open } = fs.promises; const path = require('path'); const { Readable } = require('stream'); const tmpdir = require('../common/tmpdir'); @@ -15,7 +11,7 @@ const tmpDir = tmpdir.path; tmpdir.refresh(); -async function validateWriteFile() { +async function doWriteBuffer() { const filePathForHandle = path.resolve(tmpDir, 'tmp-write-file2.txt'); const fileHandle = await open(filePathForHandle, 'w+'); try { @@ -29,8 +25,22 @@ async function validateWriteFile() { } } -// Signal aborted while writing file -async function doWriteAndCancel() { +async function doWriteString() { + const filePathForHandle = path.resolve(tmpDir, 'tmp-write-string.txt'); + const fileHandle = await open(filePathForHandle, 'w+'); + try { + const string = 'x~yz'.repeat(100); + + await fileHandle.writeFile(string); + const readFileData = fs.readFileSync(filePathForHandle); + const stringAsBuffer = Buffer.from(string, 'utf8'); + assert.deepStrictEqual(stringAsBuffer, readFileData); + } finally { + await fileHandle.close(); + } +} + +async function doWriteBufferAndCancel() { const filePathForHandle = path.resolve(tmpDir, 'dogs-running.txt'); const fileHandle = await open(filePathForHandle, 'w+'); try { @@ -38,7 +48,7 @@ async function doWriteAndCancel() { const controller = new AbortController(); const { signal } = controller; process.nextTick(() => controller.abort()); - await assert.rejects(writeFile(fileHandle, buffer, { signal }), { + await assert.rejects(fileHandle.writeFile(buffer, { signal }), { name: 'AbortError' }); } finally { @@ -58,6 +68,13 @@ const iterable = { yield 'c'; } }; +const veryLargeIterable = { + expected: 'dogs running'.repeat(512 * 1024), + *[Symbol.iterator]() { + yield Buffer.from('dogs running'.repeat(512 * 1024), 'utf8'); + } +}; + function iterableWith(value) { return { *[Symbol.iterator]() { @@ -75,7 +92,7 @@ const bufferIterable = { }; const asyncIterable = { expected: 'abc', - async* [Symbol.asyncIterator]() { + async*[Symbol.asyncIterator]() { yield 'a'; yield 'b'; yield 'c'; @@ -170,6 +187,17 @@ async function doWriteAsyncIterable() { } } +async function doWriteLargeIterable() { + const fileHandle = await open(dest, 'w+'); + try { + await fileHandle.writeFile(veryLargeIterable); + const data = fs.readFileSync(dest, 'utf-8'); + assert.deepStrictEqual(data, veryLargeIterable.expected); + } finally { + await fileHandle.close(); + } +} + async function doWriteInvalidValues() { const fileHandle = await open(dest, 'w+'); try { @@ -186,9 +214,47 @@ async function doWriteInvalidValues() { } } +async function doWriteTypedArrays() { + for (const Constructor of [Uint8Array, Uint16Array, Uint32Array]) { + // Use a file size larger than `kReadFileMaxChunkSize`. + const buffer = Buffer.from('012'.repeat(2 ** 14)); + const array = new Constructor(buffer.buffer); + const fileHandle = await open(dest, 'w+'); + + try { + await fileHandle.writeFile(array); + const data = fs.readFileSync(dest); + assert.deepStrictEqual(data, buffer); + } finally { + await fileHandle.close(); + } + } +} + +async function doWriteFromCurrentPosition() { + const fileHandle = await open(dest, 'w+'); + try { + /* Write only five bytes, so that the position moves to five. */ + const buf = Buffer.from('Hello'); + const { bytesWritten } = await fileHandle.write(buf, 0, 5, null); + assert.strictEqual(bytesWritten, 5); + + /* Write some more with writeFile(). */ + await fileHandle.writeFile('World'); + + const data = fs.readFileSync(dest, 'utf-8'); + + /* New content should be written at position five, instead of zero. */ + assert.strictEqual(data, 'HelloWorld'); + } finally { + await fileHandle.close(); + } +} + (async () => { - await validateWriteFile(); - await doWriteAndCancel(); + await doWriteBuffer(); + await doWriteBufferAndCancel(); + await doWriteString(); await doWriteStream(); await doWriteStreamWithCancel(); await doWriteIterable(); @@ -196,5 +262,8 @@ async function doWriteInvalidValues() { await doWriteIterableWithEncoding(); await doWriteBufferIterable(); await doWriteAsyncIterable(); + await doWriteLargeIterable(); await doWriteInvalidValues(); + await doWriteTypedArrays(); + await doWriteFromCurrentPosition(); })().then(common.mustCall()); diff --git a/test/parallel/test-fs-promises-writefile-typedarray.js b/test/parallel/test-fs-promises-writefile-typedarray.js deleted file mode 100644 index 32d9cffa236e57..00000000000000 --- a/test/parallel/test-fs-promises-writefile-typedarray.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -const common = require('../common'); -const fs = require('fs'); -const fsPromises = fs.promises; -const path = require('path'); -const tmpdir = require('../common/tmpdir'); -const assert = require('assert'); -const tmpDir = tmpdir.path; - -tmpdir.refresh(); - -const dest = path.resolve(tmpDir, 'tmp.txt'); -// Use a file size larger than `kReadFileMaxChunkSize`. -const buffer = Buffer.from('012'.repeat(2 ** 14)); - -(async () => { - for (const Constructor of [Uint8Array, Uint16Array, Uint32Array]) { - const array = new Constructor(buffer.buffer); - await fsPromises.writeFile(dest, array); - const data = await fsPromises.readFile(dest); - assert.deepStrictEqual(data, buffer); - } -})().then(common.mustCall()); diff --git a/test/parallel/test-fs-promises-writefile-with-fd.js b/test/parallel/test-fs-promises-writefile-with-fd.js deleted file mode 100644 index 7cb9eeeca9a9f2..00000000000000 --- a/test/parallel/test-fs-promises-writefile-with-fd.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -// This test makes sure that `writeFile()` always writes from the current -// position of the file, instead of truncating the file. - -const common = require('../common'); -const assert = require('assert'); -const { readFileSync } = require('fs'); -const { open } = require('fs').promises; - -const tmpdir = require('../common/tmpdir'); -tmpdir.refresh(); - -const fn = tmpdir.resolve('test.txt'); - -async function writeFileTest() { - const handle = await open(fn, 'w'); - - /* Write only five bytes, so that the position moves to five. */ - const buf = Buffer.from('Hello'); - const { bytesWritten } = await handle.write(buf, 0, 5, null); - assert.strictEqual(bytesWritten, 5); - - /* Write some more with writeFile(). */ - await handle.writeFile('World'); - - /* New content should be written at position five, instead of zero. */ - assert.strictEqual(readFileSync(fn).toString(), 'HelloWorld'); - - await handle.close(); -} - - -writeFileTest() - .then(common.mustCall()); diff --git a/test/parallel/test-fs-promises-writefile.js b/test/parallel/test-fs-promises-writefile.js index 25df61b2b48414..da7e345a70791e 100644 --- a/test/parallel/test-fs-promises-writefile.js +++ b/test/parallel/test-fs-promises-writefile.js @@ -14,7 +14,6 @@ tmpdir.refresh(); const dest = path.resolve(tmpDir, 'tmp.txt'); const otherDest = path.resolve(tmpDir, 'tmp-2.txt'); const buffer = Buffer.from('abc'.repeat(1000)); -const buffer2 = Buffer.from('xyz'.repeat(1000)); const stream = Readable.from(['a', 'b', 'c']); const stream2 = Readable.from(['ümlaut', ' ', 'sechzig']); const iterable = { @@ -26,7 +25,7 @@ const iterable = { } }; -const veryLargeBuffer = { +const veryLargeIterable = { expected: 'dogs running'.repeat(512 * 1024), *[Symbol.iterator]() { yield Buffer.from('dogs running'.repeat(512 * 1024), 'utf8'); @@ -57,7 +56,15 @@ const asyncIterable = { } }; -async function doWrite() { +async function doWriteString() { + const string = 'x~yz'.repeat(100); + await fsPromises.writeFile(dest, string); + const data = fs.readFileSync(dest); + const stringAsBuffer = Buffer.from(string, 'utf8'); + assert.deepStrictEqual(stringAsBuffer, data); +} + +async function doWriteBuffer() { await fsPromises.writeFile(dest, buffer); const data = fs.readFileSync(dest); assert.deepStrictEqual(data, buffer); @@ -115,10 +122,10 @@ async function doWriteAsyncIterable() { assert.deepStrictEqual(data, asyncIterable.expected); } -async function doWriteAsyncLargeIterable() { - await fsPromises.writeFile(dest, veryLargeBuffer); +async function doWriteLargeIterable() { + await fsPromises.writeFile(dest, veryLargeIterable); const data = fs.readFileSync(dest, 'utf-8'); - assert.deepStrictEqual(data, veryLargeBuffer.expected); + assert.deepStrictEqual(data, veryLargeIterable.expected); } async function doWriteInvalidValues() { @@ -131,7 +138,7 @@ async function doWriteInvalidValues() { ); } -async function doWriteWithCancel() { +async function doWriteBufferAndCancel() { const controller = new AbortController(); const { signal } = controller; process.nextTick(() => controller.abort()); @@ -141,32 +148,22 @@ async function doWriteWithCancel() { ); } -async function doAppend() { - await fsPromises.appendFile(dest, buffer2, { flag: null }); - const data = fs.readFileSync(dest); - const buf = Buffer.concat([buffer, buffer2]); - assert.deepStrictEqual(buf, data); -} - -async function doRead() { - const data = await fsPromises.readFile(dest); - const buf = fs.readFileSync(dest); - assert.deepStrictEqual(buf, data); -} +async function doWriteTypedArrays() { + for (const Constructor of [Uint8Array, Uint16Array, Uint32Array]) { + // Use a file size larger than `kReadFileMaxChunkSize`. + const buffer = Buffer.from('012'.repeat(2 ** 14)); -async function doReadWithEncoding() { - const data = await fsPromises.readFile(dest, 'utf-8'); - const syncData = fs.readFileSync(dest, 'utf-8'); - assert.strictEqual(typeof data, 'string'); - assert.deepStrictEqual(data, syncData); + const array = new Constructor(buffer.buffer); + await fsPromises.writeFile(dest, array); + const data = await fsPromises.readFile(dest); + assert.deepStrictEqual(data, buffer); + } } (async () => { - await doWrite(); - await doWriteWithCancel(); - await doAppend(); - await doRead(); - await doReadWithEncoding(); + await doWriteBuffer(); + await doWriteBufferAndCancel(); + await doWriteString(); await doWriteStream(); await doWriteStreamWithCancel(); await doWriteIterable(); @@ -174,6 +171,7 @@ async function doReadWithEncoding() { await doWriteIterableWithEncoding(); await doWriteBufferIterable(); await doWriteAsyncIterable(); - await doWriteAsyncLargeIterable(); + await doWriteLargeIterable(); await doWriteInvalidValues(); + await doWriteTypedArrays(); })().then(common.mustCall()); diff --git a/test/parallel/test-http-agent-false.js b/test/parallel/test-http-agent-false.js index 2f4505ef66ef3e..64f021a9e7bdd3 100644 --- a/test/parallel/test-http-agent-false.js +++ b/test/parallel/test-http-agent-false.js @@ -35,7 +35,7 @@ const opts = { }; // We just want an "error" (no local HTTP server on port 80) or "response" -// to happen (user happens ot have HTTP server running on port 80). +// to happen (user happens to have HTTP server running on port 80). // As long as the process doesn't crash from a C++ assertion then we're good. const req = http.request(opts); diff --git a/test/parallel/test-http-keep-alive-empty-line.mjs b/test/parallel/test-http-keep-alive-empty-line.mjs index c7096096440d02..e212c5d704c1ec 100644 --- a/test/parallel/test-http-keep-alive-empty-line.mjs +++ b/test/parallel/test-http-keep-alive-empty-line.mjs @@ -3,7 +3,7 @@ import assert from 'node:assert'; import { createServer } from 'node:http'; import { connect } from 'node:net'; -// This test ensures that data like an empty line (`\r\n`) recevied by the +// This test ensures that data like an empty line (`\r\n`) received by the // server after a request, does not reset the keep-alive timeout. See // https://github.com/nodejs/node/issues/58140. diff --git a/test/parallel/test-http-perf_hooks.js b/test/parallel/test-http-perf_hooks.js index 9acf54c5617bd8..674bb591f0cbf2 100644 --- a/test/parallel/test-http-perf_hooks.js +++ b/test/parallel/test-http-perf_hooks.js @@ -36,16 +36,18 @@ const server = http.Server(common.mustCall((req, res) => { })); }, 2)); +let port; server.listen(0, common.mustCall(async () => { + port = server.address().port; await Promise.all([ makeRequest({ - port: server.address().port, + port, path: '/', method: 'POST', data: expected }), makeRequest({ - port: server.address().port, + port, path: '/', method: 'POST', data: expected @@ -63,14 +65,17 @@ process.on('exit', () => { assert.strictEqual(typeof entry.duration, 'number'); if (entry.name === 'HttpClient') { numberOfHttpClients++; + // The reported URL must include the port when it is non-default. + // Refs: https://github.com/nodejs/node/issues/59625 + assert.strictEqual(entry.detail.req.url, `http://localhost:${port}/`); } else if (entry.name === 'HttpRequest') { numberOfHttpRequests++; + assert.strictEqual(entry.detail.req.url, '/'); } - assert.strictEqual(typeof entry.detail.req.method, 'string'); - assert.strictEqual(typeof entry.detail.req.url, 'string'); + assert.strictEqual(entry.detail.req.method, 'POST'); assert.strictEqual(typeof entry.detail.req.headers, 'object'); - assert.strictEqual(typeof entry.detail.res.statusCode, 'number'); - assert.strictEqual(typeof entry.detail.res.statusMessage, 'string'); + assert.strictEqual(entry.detail.res.statusCode, 200); + assert.strictEqual(entry.detail.res.statusMessage, 'OK'); assert.strictEqual(typeof entry.detail.res.headers, 'object'); } assert.strictEqual(numberOfHttpClients, 2); diff --git a/test/parallel/test-http-server-consumed-timeout.js b/test/parallel/test-http-server-consumed-timeout.js index b1781913b56866..683421394a0fad 100644 --- a/test/parallel/test-http-server-consumed-timeout.js +++ b/test/parallel/test-http-server-consumed-timeout.js @@ -7,7 +7,7 @@ const http = require('http'); const durationBetweenIntervals = []; let timeoutTooShort = false; -const TIMEOUT = common.platformTimeout(200); +const TIMEOUT = common.platformTimeout(1000); const INTERVAL = Math.floor(TIMEOUT / 8); runTest(TIMEOUT); diff --git a/test/parallel/test-http2-origin-set-max-size.mjs b/test/parallel/test-http2-origin-set-max-size.mjs index 08bdf1ed7f9753..53cadb797a1885 100644 --- a/test/parallel/test-http2-origin-set-max-size.mjs +++ b/test/parallel/test-http2-origin-set-max-size.mjs @@ -22,10 +22,6 @@ const cert = fixtures.readKey('agent8-cert.pem', 'binary'); const ca = fixtures.readKey('fake-startcom-root-cert.pem', 'binary'); const server = createSecureServer({ key, cert }); -server.on('stream', (stream) => { - stream.respond(); - stream.end('ok'); -}); server.on('session', (session) => { let i = 0; const timer = setInterval(() => { @@ -72,8 +68,6 @@ await new Promise((resolve) => { })); client.on('goaway', mustNotCall()); client.on('close', resolve); - - client.request().resume(); }); // Test non-default values @@ -86,8 +80,6 @@ await Promise.all([-0, 9, 1.5].map((maxOriginSetSize) => new Promise((resolve) = })); client.on('goaway', mustNotCall()); client.on('close', resolve); - - client.request().resume(); }))); @@ -103,8 +95,6 @@ await Promise.all([512, Infinity].map((maxOriginSetSize) => new Promise((resolve client.on('error', mustNotCall()); client.on('goaway', mustNotCall()); client.on('close', resolve); - - client.request().resume(); }))); server.close(); diff --git a/test/parallel/test-http2-socket-proxy-destroy.js b/test/parallel/test-http2-socket-proxy-destroy.js new file mode 100644 index 00000000000000..c98b2e80ee0b9c --- /dev/null +++ b/test/parallel/test-http2-socket-proxy-destroy.js @@ -0,0 +1,57 @@ +'use strict'; + +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); +const assert = require('assert'); +const h2 = require('http2'); + +// Calling .destroy() on the socket proxy must not throw +// (previously threw ERR_HTTP2_NO_SOCKET_MANIPULATION) and must +// destroy the Http2Session and the underlying socket. + +const server = h2.createServer(); + +server.on('stream', common.mustCall(function(stream) { + stream.respond(); + stream.end('ok'); +}, 2)); + +server.listen(0, common.mustCall(() => { + const port = server.address().port; + + // Test destroy() without an error. + { + const client = h2.connect(`http://localhost:${port}`); + const request = client.request(); + request.resume(); + request.on('close', common.mustCall(() => { + const socket = client.socket; + socket.destroy(); + assert.strictEqual(client.destroyed, true); + client.on('close', common.mustCall(() => { + assert.strictEqual(client.socket, undefined); + // Destroying again through a stale proxy reference must not throw. + socket.destroy(); + })); + })); + client.on('error', common.mustNotCall()); + } + + // Test destroy() with an error. + { + const client = h2.connect(`http://localhost:${port}`); + const request = client.request(); + request.resume(); + request.on('close', common.mustCall(() => { + client.socket.destroy(new Error('boom')); + assert.strictEqual(client.destroyed, true); + })); + client.on('error', common.mustCall((err) => { + assert.strictEqual(err.message, 'boom'); + })); + client.on('close', common.mustCall(() => { + server.close(); + })); + } +})); diff --git a/test/parallel/test-http2-socket-proxy.js b/test/parallel/test-http2-socket-proxy.js index 3294cf7ccb9011..37f294742a28b0 100644 --- a/test/parallel/test-http2-socket-proxy.js +++ b/test/parallel/test-http2-socket-proxy.js @@ -52,7 +52,8 @@ server.on('stream', common.mustCall(function(stream, headers) { assert(inspectedTimersList.includes(' _idleNext: [Timeout]')); assert(!inspectedTimersList.includes(' _idleNext: [Timeout]')); - assert.throws(() => socket.destroy, errMsg); + assert.strictEqual(typeof socket.destroy, 'function'); + assert.throws(() => socket.emit, errMsg); assert.throws(() => socket.end, errMsg); assert.throws(() => socket.pause, errMsg); @@ -63,7 +64,6 @@ server.on('stream', common.mustCall(function(stream, headers) { assert.throws(() => socket.setKeepAlive, errMsg); assert.throws(() => socket.setNoDelay, errMsg); - assert.throws(() => (socket.destroy = undefined), errMsg); assert.throws(() => (socket.emit = undefined), errMsg); assert.throws(() => (socket.end = undefined), errMsg); assert.throws(() => (socket.pause = undefined), errMsg); diff --git a/test/parallel/test-inspector-emit-protocol-event.js b/test/parallel/test-inspector-emit-protocol-event.js index 567c92e3eeba6a..7cb2135435f93b 100644 --- a/test/parallel/test-inspector-emit-protocol-event.js +++ b/test/parallel/test-inspector-emit-protocol-event.js @@ -194,7 +194,7 @@ for (const [domain, events] of Object.entries(EXPECTED_EVENTS)) { } } - // Check tht no events are emitted after disabling the domain. + // Check that no events are emitted after disabling the domain. await session.post('Network.disable'); session.on('Network.requestWillBeSent', common.mustNotCall()); inspector.Network.requestWillBeSent({}); diff --git a/test/parallel/test-mime-api.js b/test/parallel/test-mime-api.js index 30272e5aa64df5..dffead31850b47 100644 --- a/test/parallel/test-mime-api.js +++ b/test/parallel/test-mime-api.js @@ -158,3 +158,30 @@ assert.throws(() => params.set(`x${NOT_HTTP_TOKEN_CODE_POINT}`, 'x'), /parameter assert.throws(() => params.set('x', `${NOT_HTTP_QUOTED_STRING_CODE_POINT};`), /parameter value/i); assert.throws(() => params.set('x', `${NOT_HTTP_QUOTED_STRING_CODE_POINT}x`), /parameter value/i); assert.throws(() => params.set('x', `x${NOT_HTTP_QUOTED_STRING_CODE_POINT}`), /parameter value/i); + +// MIME parameter names are case-insensitive. The parser lower-cases them, so +// the MIMEParams accessors must lower-case their argument too; otherwise a +// parsed parameter is unreachable by the casing the caller actually used and +// `set()` can create case-colliding duplicate parameters. +// Refs: https://mimesniff.spec.whatwg.org/ (parameter names are ASCII-lowercased) +{ + const mime = new MIMEType('text/plain;Charset=value'); + assert.strictEqual(mime.params.get('Charset'), 'value'); + assert.strictEqual(mime.params.get('charset'), 'value'); + assert.strictEqual(mime.params.get('CHARSET'), 'value'); + assert.strictEqual(mime.params.has('Charset'), true); + assert.strictEqual(`${mime.params}`, 'charset=value'); + + // `set()` with a mixed-case name overwrites the same parameter rather than + // adding a second, case-colliding one. + const params = new MIMEType('text/plain').params; + params.set('Foo', 'a'); + params.set('foo', 'b'); + assert.deepStrictEqual([...params], [['foo', 'b']]); + assert.strictEqual(`${params}`, 'foo=b'); + + // `delete()` is case-insensitive as well. + params.delete('FOO'); + assert.strictEqual(params.has('foo'), false); + assert.deepStrictEqual([...params], []); +} diff --git a/test/parallel/test-net-boundsocket.js b/test/parallel/test-net-boundsocket.js index c987faca0e9ecc..3a424e5e3f4a30 100644 --- a/test/parallel/test-net-boundsocket.js +++ b/test/parallel/test-net-boundsocket.js @@ -178,6 +178,42 @@ if (!common.isWindows && process.getuid() !== 0) { client.destroy(); } +// Adopted BoundSocket: connect(2) is synchronous, so localAddress/localPort +// resolve to the concrete source in-tick, before the 'connect' event. +{ + const server = net.createServer(); + server.listen(0, '127.0.0.1', common.mustCall(() => { + const serverPort = server.address().port; + const bound = new net.BoundSocket({ host: '127.0.0.1', port: 0 }); + const localPort = bound.address().port; + const client = new net.Socket({ handle: bound }); + + client.connect({ host: '127.0.0.1', port: serverPort }); + + assert.strictEqual(client.localAddress, '127.0.0.1'); + assert.strictEqual(client.localPort, localPort); + + client.on('connect', common.mustCall(() => { + assert.strictEqual(client.localAddress, '127.0.0.1'); + assert.strictEqual(client.localPort, localPort); + client.destroy(); + server.close(); + })); + })); +} + +// A connect failure is reported via a deferred 'error' event, never thrown +// synchronously. An IPv4-bound handle connecting to an IPv6 literal fails on +// address family mismatch. +{ + const bound = new net.BoundSocket({ host: '127.0.0.1', port: 0 }); + const client = new net.Socket({ handle: bound }); + client.connect({ host: '::1', port: 1 }); + client.on('error', common.mustCall((err) => { + assert.strictEqual(err.syscall, 'connect'); + })); +} + // reusePort: SO_REUSEPORT permits multiple listeners on the same port. Support // is platform-dependent, so probe first. { diff --git a/test/parallel/test-net-server-blocklist.js b/test/parallel/test-net-server-blocklist.js index 8f310bd6253039..7a17bf3b5c6890 100644 --- a/test/parallel/test-net-server-blocklist.js +++ b/test/parallel/test-net-server-blocklist.js @@ -7,11 +7,11 @@ blockList.addAddress(common.localhostIPv4); const server = net.createServer({ blockList }, common.mustNotCall()); server.listen(0, common.localhostIPv4, common.mustCall(() => { - const adddress = server.address(); + const address = server.address(); const socket = net.connect({ localAddress: common.localhostIPv4, - host: adddress.address, - port: adddress.port + host: address.address, + port: address.port }); socket.on('close', common.mustCall(() => { server.close(); diff --git a/test/parallel/test-net-server-transfer-worker.js b/test/parallel/test-net-server-transfer-worker.js new file mode 100644 index 00000000000000..6a8fc6a770b5c6 --- /dev/null +++ b/test/parallel/test-net-server-transfer-worker.js @@ -0,0 +1,60 @@ +'use strict'; + +// This test verifies that a listening net.Server can be transferred to a worker +// thread via worker_threads postMessage()'s transferList. The parent thread +// binds and listens, then hands the server off; the worker accepts connections and +// responds, proving the listening socket (and its accept queue) moved loops. + +const common = require('../common'); + +if (common.isWindows) { + common.skip('transferring TCP handles between threads is not supported on ' + + 'Windows yet'); +} + +const assert = require('assert'); +const net = require('net'); +const { + Worker, + parentPort, + threadId, + workerData, +} = require('worker_threads'); + +if (workerData?.role === 'server') { + parentPort.on('message', common.mustCall(({ server }) => { + assert.ok(server instanceof net.Server); + server.on('connection', (socket) => { + socket.end(`served-by:${threadId}`); + }); + })); + return; +} + +const worker = new Worker(__filename, { workerData: { role: 'server' } }); + +const server = net.createServer(); + +server.listen(0, common.mustCall(() => { + const { port } = server.address(); + + // Move the listening server to the worker thread. + worker.postMessage({ server }, [server]); + assert.strictEqual(server._handle, null); + + const N = 3; + let done = 0; + for (let i = 0; i < N; i++) { + const client = net.connect(port); + client.setEncoding('utf8'); + let response = ''; + client.on('data', (chunk) => { response += chunk; }); + client.on('end', common.mustCall(() => { + assert.match(response, /^served-by:\d+$/); + assert.notStrictEqual(response, `served-by:${threadId}`); + if (++done === N) { + worker.terminate(); + } + })); + } +})); diff --git a/test/parallel/test-net-socket-transfer-worker-http.js b/test/parallel/test-net-socket-transfer-worker-http.js new file mode 100644 index 00000000000000..23a3ec1790c808 --- /dev/null +++ b/test/parallel/test-net-socket-transfer-worker-http.js @@ -0,0 +1,80 @@ +'use strict'; + +// This test verifies HTTP load balancing on top of transferred TCP sockets: +// the parent thread accepts connections and distributes each one round-robin to +// a pool of worker threads, where an http.Server handles the request. It exercises +// the intended use case for transferring net.Socket handles across threads. + +const common = require('../common'); + +if (common.isWindows) { + common.skip('transferring TCP handles between threads is not supported on ' + + 'Windows yet'); +} + +const assert = require('assert'); +const net = require('net'); +const http = require('http'); +const { + Worker, + parentPort, + threadId, + workerData, +} = require('worker_threads'); + +const POOL = 4; +const REQ_PER_WORKER = 5; +const TOTAL = POOL * REQ_PER_WORKER; + +if (workerData?.role === 'http-server') { + // Each worker serves HTTP over connections transferred from the parent thread. + const server = http.createServer((req, res) => { + res.end(`thread:${threadId}`); + }); + parentPort.on('message', common.mustCall(({ socket }) => { + assert.ok(socket instanceof net.Socket); + server.emit('connection', socket); + }, REQ_PER_WORKER)); + return; +} + +const workers = []; +for (let i = 0; i < POOL; i++) + workers.push(new Worker(__filename, { workerData: { role: 'http-server' } })); + +let next = 0; +const front = net.createServer((socket) => { + // Distribute each freshly accepted connection round-robin to a worker. + workers[next++ % POOL].postMessage({ socket }, [socket]); +}); + +front.listen(0, common.mustCall(() => { + const { port } = front.address(); + const counts = { __proto__: null }; + let done = 0; + + for (let i = 0; i < TOTAL; i++) { + // agent: false forces a fresh connection per request, so each request maps + // to exactly one round-robin hand-off. + http.get({ port, agent: false }, common.mustCall((res) => { + let body = ''; + res.setEncoding('utf8'); + res.on('data', (chunk) => { body += chunk; }); + res.on('end', common.mustCall(() => { + assert.match(body, /^thread:\d+$/); + counts[body] = (counts[body] || 0) + 1; + + if (++done === TOTAL) { + // Every worker handled the same number of requests. + assert.strictEqual(Object.keys(counts).length, POOL); + for (const key of Object.keys(counts)) + assert.strictEqual(counts[key], REQ_PER_WORKER); + + front.close(); + for (const worker of workers) + worker.terminate(); + } + })); + })); + } +})); diff --git a/test/parallel/test-net-socket-transfer-worker.js b/test/parallel/test-net-socket-transfer-worker.js new file mode 100644 index 00000000000000..fe512ee3723453 --- /dev/null +++ b/test/parallel/test-net-socket-transfer-worker.js @@ -0,0 +1,65 @@ +'use strict'; + +// This test verifies that an accepted net.Socket connection can be transferred +// to a worker thread via worker_threads postMessage()'s transferList, and that +// the worker can read from and write to it. The parent thread accepts the +// connection and hands it off; the worker echoes data back. + +const common = require('../common'); + +if (common.isWindows) { + common.skip('transferring TCP handles between threads is not supported on ' + + 'Windows yet'); +} + +const assert = require('assert'); +const net = require('net'); +const { + Worker, + parentPort, + workerData, +} = require('worker_threads'); + +if (workerData?.role === 'socket') { + // Worker side: receive the transferred connection and echo everything back. + parentPort.on('message', common.mustCall(({ socket }) => { + assert.ok(socket instanceof net.Socket); + socket.setEncoding('utf8'); + socket.on('data', common.mustCall((chunk) => { + socket.end(`echo:${chunk}`); + })); + })); + return; +} + +const worker = new Worker(__filename, { workerData: { role: 'socket' } }); + +const server = net.createServer(common.mustCall((socket) => { + // Hand the freshly accepted connection off to the worker. It must not be + // read from in this thread before transferring. + worker.postMessage({ socket }, [socket]); + + // The source socket is now owned by the worker: it is detached and destroyed + // on this side, so further use fails cleanly instead of dropping data. + assert.strictEqual(socket._handle, null); + assert.strictEqual(socket.destroyed, true); + assert.strictEqual(socket.writable, false); + socket.write('lost', common.mustCall((err) => { + assert.strictEqual(err.code, 'ERR_STREAM_DESTROYED'); + })); + + server.close(); +})); + +server.listen(0, common.mustCall(() => { + const client = net.connect(server.address().port, common.mustCall(() => { + client.write('hello'); + })); + client.setEncoding('utf8'); + let response = ''; + client.on('data', (chunk) => { response += chunk; }); + client.on('end', common.mustCall(() => { + assert.strictEqual(response, 'echo:hello'); + worker.terminate(); + })); +})); diff --git a/test/parallel/test-net-transfer-guards.js b/test/parallel/test-net-transfer-guards.js new file mode 100644 index 00000000000000..4724913b9f3352 --- /dev/null +++ b/test/parallel/test-net-transfer-guards.js @@ -0,0 +1,52 @@ +'use strict'; + +// This test verifies the guards that reject transferring a net.Socket or +// net.Server that is not in a clean, movable state. Serialization is triggered +// with a MessageChannel, so no worker thread is required. + +const common = require('../common'); + +if (common.isWindows) { + common.skip('transferring TCP handles between threads is not supported on ' + + 'Windows yet'); +} + +const assert = require('assert'); +const net = require('net'); +const { MessageChannel } = require('worker_threads'); + +const { port1 } = new MessageChannel(); + +// A Server that is not listening (no handle) cannot be transferred. +{ + const server = net.createServer(); + assert.throws(() => port1.postMessage({ server }, [server]), { + code: 'ERR_WORKER_HANDLE_NOT_TRANSFERABLE', + }); +} + +// A Socket that has already consumed data cannot be transferred, because that +// buffered data would be lost on the sending side. +{ + const server = net.createServer(common.mustCall((socket) => { + socket.on('data', common.mustCall(() => { + assert.throws(() => port1.postMessage({ socket }, [socket]), { + code: 'ERR_WORKER_HANDLE_NOT_TRANSFERABLE', + }); + // The socket is still usable after a rejected transfer. + assert.ok(socket._handle != null); + socket.destroy(); + server.close(); + port1.close(); + })); + })); + + server.listen(0, common.mustCall(() => { + const client = net.connect(server.address().port, common.mustCall(() => { + client.end('data'); + })); + // The server destroys the socket after the rejected transfer, which may + // surface as a reset on the client; swallow it either way. + client.on('error', () => {}); + })); +} diff --git a/test/parallel/test-permission-audit-fs-does-not-deny.js b/test/parallel/test-permission-audit-fs-does-not-deny.js new file mode 100644 index 00000000000000..13284802839d57 --- /dev/null +++ b/test/parallel/test-permission-audit-fs-does-not-deny.js @@ -0,0 +1,59 @@ +'use strict'; + +const common = require('../common'); +const { isMainThread } = require('worker_threads'); + +if (!isMainThread) { + common.skip('This test only works on a main thread'); +} + +const assert = require('assert'); +const { spawnSync } = require('child_process'); +const { test } = require('node:test'); +const fixtures = require('../common/fixtures'); + +const blockedFile = fixtures.path('permission', 'deny', 'protected-file.md'); + +function runAudit(mode) { + const childScript = ` + const dc = require('node:diagnostics_channel'); + const msgs = []; + dc.subscribe('node:permission-model:fs', (m) => msgs.push({ + permission: m.permission, + resource: m.resource, + })); + try { + ${mode === 'eval' ? + `eval('require("node:fs").readFileSync(process.env.BLOCKED_FILE)');` : + `require('node:fs').readFileSync(process.env.BLOCKED_FILE);`} + console.log('RESULT NO_THROW'); + } catch (e) { + console.log('RESULT THREW ' + e.code); + } + console.log('AUDIT ' + JSON.stringify(msgs)); + `; + + const env = { ...process.env, BLOCKED_FILE: blockedFile }; + const { status, stdout, stderr } = spawnSync( + process.execPath, + ['--permission-audit', '-e', childScript], + { encoding: 'utf8', env }, + ); + assert.strictEqual(status, 0, stderr); + const lines = stdout.split('\n'); + assert.ok(lines.includes('RESULT NO_THROW'), stdout); + const auditLine = lines.find((l) => l.startsWith('AUDIT ')); + assert.ok(auditLine, stdout); + const msgs = JSON.parse(auditLine.replace('AUDIT ', '')); + assert.strictEqual(msgs.length, 1); + assert.strictEqual(msgs[0].permission, 'FileSystemRead'); + assert.ok(msgs[0].resource.endsWith('protected-file.md')); +} + +test('permission-audit logs fs denial without throwing', () => { + runAudit('direct'); +}); + +test('permission-audit logs fs denial without throwing (eval)', () => { + runAudit('eval'); +}); diff --git a/test/parallel/test-permission-audit-net-does-not-deny.js b/test/parallel/test-permission-audit-net-does-not-deny.js new file mode 100644 index 00000000000000..4fdaaf3494c95e --- /dev/null +++ b/test/parallel/test-permission-audit-net-does-not-deny.js @@ -0,0 +1,69 @@ +'use strict'; + +const common = require('../common'); +const { isMainThread } = require('worker_threads'); + +if (!isMainThread) { + common.skip('This test only works on a main thread'); +} + +const assert = require('assert'); +const { spawnSync } = require('child_process'); +const { test } = require('node:test'); +const net = require('net'); + +async function runAudit(mode) { + const server = net.createServer(); + + await new Promise((resolve, reject) => { + server.on('error', reject); + server.listen(0, '127.0.0.1', resolve); + }); + const { port } = server.address(); + const env = { ...process.env, PORT: String(port), HOST: '127.0.0.1' }; + + const childScript = ` + const dc = require('node:diagnostics_channel'); + const net = require('node:net'); + const msgs = []; + dc.subscribe('node:permission-model:net', (m) => msgs.push({ + permission: m.permission, + resource: m.resource, + })); + const s = ${mode === 'eval' ? + `eval('net.connect(Number(process.env.PORT), process.env.HOST)')` : + `net.connect(Number(process.env.PORT), process.env.HOST)`}; + s.on('connect', () => { s.destroy(); console.log('RESULT CONNECTED'); }); + s.on('error', (e) => { console.log('RESULT ERROR ' + e.code); }); + s.on('close', () => { + console.log('AUDIT ' + JSON.stringify(msgs)); + }); + `; + + try { + const { status, stdout, stderr } = spawnSync( + process.execPath, + ['--permission-audit', '-e', childScript], + { encoding: 'utf8', env }, + ); + assert.strictEqual(status, 0, stderr); + const lines = stdout.split('\n'); + assert.strictEqual(lines[0], 'RESULT CONNECTED', stdout); + const auditLine = lines.find((l) => l.startsWith('AUDIT ')); + assert.ok(auditLine, stdout); + const msgs = JSON.parse(auditLine.replace('AUDIT ', '')); + assert.strictEqual(msgs.length, 1); + assert.strictEqual(msgs[0].permission, 'Net'); + assert.ok(msgs[0].resource.includes('127.0.0.1')); + } finally { + server.close(); + } +} + +test('permission-audit logs net denial without blocking connect', async () => { + await runAudit('direct'); +}); + +test('permission-audit logs net denial without blocking connect (eval)', async () => { + await runAudit('eval'); +}); diff --git a/test/parallel/test-process-env-allowed-flags-are-documented.js b/test/parallel/test-process-env-allowed-flags-are-documented.js index b592decedd4ccd..6028bbab787e29 100644 --- a/test/parallel/test-process-env-allowed-flags-are-documented.js +++ b/test/parallel/test-process-env-allowed-flags-are-documented.js @@ -133,6 +133,7 @@ assert(undocumented.delete('--experimental-global-customevent')); assert(undocumented.delete('--experimental-global-webcrypto')); assert(undocumented.delete('--experimental-report')); assert(undocumented.delete('--experimental-worker')); +assert(undocumented.delete('--napi-modules')); assert(undocumented.delete('--node-snapshot')); assert(undocumented.delete('--no-node-snapshot')); assert(undocumented.delete('--loader')); diff --git a/test/parallel/test-process-exit-code-validation.js b/test/parallel/test-process-exit-code-validation.js index 6051f9b6dbc8ee..6b55c68f848c6c 100644 --- a/test/parallel/test-process-exit-code-validation.js +++ b/test/parallel/test-process-exit-code-validation.js @@ -110,11 +110,11 @@ if (process.argv[2] === undefined) { // Check process.exitCode for (const arg of invalids) { - debug(`invaild code: ${inspect(arg.code)}`); + debug(`invalid code: ${inspect(arg.code)}`); assert.throws(() => (process.exitCode = arg.code), new RegExp(arg.pattern)); } for (const arg of valids) { - debug(`vaild code: ${inspect(arg.code)}`); + debug(`valid code: ${inspect(arg.code)}`); process.exitCode = arg.code; } diff --git a/test/parallel/test-process-threadCpuUsage-main-thread.js b/test/parallel/test-process-threadCpuUsage-main-thread.js index f304ca9402f320..88020bef9dbda0 100644 --- a/test/parallel/test-process-threadCpuUsage-main-thread.js +++ b/test/parallel/test-process-threadCpuUsage-main-thread.js @@ -47,7 +47,7 @@ if (!isSunOS) { ); } -// Test argument validaton +// Test argument validation { assert.throws( () => process.threadCpuUsage(123), diff --git a/test/parallel/test-quic-certificate-compression.mjs b/test/parallel/test-quic-certificate-compression.mjs new file mode 100644 index 00000000000000..455029bfb648ed --- /dev/null +++ b/test/parallel/test-quic-certificate-compression.mjs @@ -0,0 +1,112 @@ +// Flags: --experimental-quic --no-warnings + +import { hasQuic, skip, mustCall } from '../common/index.mjs'; +import assert from 'node:assert'; +import * as fixtures from '../common/fixtures.mjs'; + +if (!hasQuic) { + skip('QUIC is not enabled'); +} + +const { listen, connect } = await import('node:quic'); +const { createPrivateKey } = await import('node:crypto'); +const tls = await import('node:tls'); + +const key = createPrivateKey(fixtures.readKey('agent1-key.pem')); +const cert = fixtures.readKey('agent1-cert.pem'); + +// Certificate compression (RFC 8879) depends on the OpenSSL build linking in +// the compression libraries. Reuse the node:tls detection helper to decide +// whether the feature is available. +const supported = tls.getCertificateCompressionAlgorithms(); +if (supported.length === 0) { + skip('certificate compression not supported by this OpenSSL build'); +} + +// --------------------------------------------------------------------------- +// Option validation. The certificateCompression option is parsed by +// processTlsOptions during connect()/listen(), so invalid values reject the +// returned promise before any network activity happens. +// --------------------------------------------------------------------------- +{ + // Non-array values are rejected. + await assert.rejects( + connect('127.0.0.1:4433', { certificateCompression: true }), + { code: 'ERR_INVALID_ARG_TYPE' }); + + await assert.rejects( + connect('127.0.0.1:4433', { certificateCompression: 'zlib' }), + { code: 'ERR_INVALID_ARG_TYPE' }); + + // Unknown algorithm names are rejected. + await assert.rejects( + connect('127.0.0.1:4433', { certificateCompression: ['invalid'] }), + { code: 'ERR_INVALID_ARG_VALUE', + message: /must be 'zlib', 'brotli', or 'zstd'/ }); + + // Non-string entries are rejected. + await assert.rejects( + connect('127.0.0.1:4433', { certificateCompression: [1] }), + { code: 'ERR_INVALID_ARG_VALUE', + message: /must be 'zlib', 'brotli', or 'zstd'/ }); + + // At most three algorithms may be specified. + await assert.rejects( + connect('127.0.0.1:4433', { + certificateCompression: ['zlib', 'brotli', 'zstd', 'zlib'], + }), + { code: 'ERR_INVALID_ARG_VALUE', message: /at most 3 algorithms/ }); +} + +// --------------------------------------------------------------------------- +// Functional handshakes. Enabling certificate compression must not break the +// TLS 1.3 handshake. The on-the-wire size reduction is exercised by the +// node:tls certificate compression test; over QUIC the payload is encrypted +// and carried in UDP datagrams, so here we assert the handshake completes +// successfully with the option enabled on the server, the client, or both. +// --------------------------------------------------------------------------- +async function handshake({ serverAlgs, clientAlgs }) { + const serverOpened = Promise.withResolvers(); + + const endpoint = await listen(mustCall(async (serverSession) => { + const info = await serverSession.opened; + assert.strictEqual(info.protocol, 'h3'); + serverOpened.resolve(); + serverSession.close(); + }), { + sni: { '*': { keys: [key], certs: [cert] } }, + ...(serverAlgs !== undefined ? + { certificateCompression: serverAlgs } : {}), + }); + + const clientSession = await connect(endpoint.address, { + servername: 'localhost', + verifyPeer: 'manual', + ...(clientAlgs !== undefined ? + { certificateCompression: clientAlgs } : {}), + }); + + const info = await clientSession.opened; + assert.strictEqual(info.protocol, 'h3'); + + await serverOpened.promise; + await clientSession.close(); + await endpoint.close(); +} + +// Each supported algorithm negotiates a successful handshake when enabled on +// both peers. +for (const algo of supported) { + await handshake({ serverAlgs: [algo], clientAlgs: [algo] }); +} + +// All supported algorithms advertised together. +await handshake({ serverAlgs: supported, clientAlgs: supported }); + +// Asymmetric configurations must also complete: a peer that does not advertise +// compression simply receives an uncompressed certificate. +await handshake({ serverAlgs: [supported[0]], clientAlgs: undefined }); +await handshake({ serverAlgs: undefined, clientAlgs: [supported[0]] }); + +// An empty array is equivalent to disabling compression. +await handshake({ serverAlgs: [], clientAlgs: [] }); diff --git a/test/parallel/test-quic-datagram-drop-newest.mjs b/test/parallel/test-quic-datagram-drop-newest.mjs index 7225ea9cd08e0a..ccaa8fee9ca0e3 100644 --- a/test/parallel/test-quic-datagram-drop-newest.mjs +++ b/test/parallel/test-quic-datagram-drop-newest.mjs @@ -38,7 +38,7 @@ const serverEndpoint = await listen(mustCall(async (serverSession) => { alpn: ['quic-test'], transportParams: { maxDatagramFrameSize: 1200 }, ondatagram: mustCall(function(data, early) { - // We whould only receive datagrams 1 and 2 + // We should only receive datagrams 1 and 2 strictEqual(data.length, 1); ok(data[0] === 0 || data[0] === 1); ok(!early); diff --git a/test/parallel/test-quic-session-preferred-address-ipv6.mjs b/test/parallel/test-quic-session-preferred-address-ipv6.mjs index e9f23c3bf554d5..35e539848b4aba 100644 --- a/test/parallel/test-quic-session-preferred-address-ipv6.mjs +++ b/test/parallel/test-quic-session-preferred-address-ipv6.mjs @@ -100,6 +100,9 @@ const clientSession = await connect(serverEndpoint.address, { family: 'ipv6', }, }, + maxDatagramSendAttempts: 100, // While the connection is restablished, + // all the acknowledgement packets of ngtcp2 are counted as send attempts + // so either this or a delay, or a change in ngtcp2 interfaces }); await clientSession.opened; diff --git a/test/parallel/test-quic-session-preferred-address.mjs b/test/parallel/test-quic-session-preferred-address.mjs index c4a55ee4d42b74..6a526a8c9ca63f 100644 --- a/test/parallel/test-quic-session-preferred-address.mjs +++ b/test/parallel/test-quic-session-preferred-address.mjs @@ -78,6 +78,9 @@ const clientSession = await connect(serverEndpoint.address, { strictEqual(oldRemote, null); strictEqual(preferred, true); }), + maxDatagramSendAttempts: 100, // While the connection is restablished, + // all the acknowledgement packets of ngtcp2 are counted as send attempts + // so either this or a delay, or a change in ngtcp2 interfaces }); await clientSession.opened; diff --git a/test/parallel/test-quic-session-stream-lifecycle.mjs b/test/parallel/test-quic-session-stream-lifecycle.mjs index a4bd287cdc6dcd..f88351597ee845 100644 --- a/test/parallel/test-quic-session-stream-lifecycle.mjs +++ b/test/parallel/test-quic-session-stream-lifecycle.mjs @@ -90,6 +90,8 @@ clientSession.destroy(); strictEqual(clientSession.destroyed, true); strictEqual(clientSession.endpoint, null); strictEqual(clientSession.stats.isConnected, false); +strictEqual(typeof clientSession.stats.cwnd, 'bigint'); +strictEqual(typeof clientSession.stats.streamsIdleTimedOut, 'bigint'); strictEqual(stream.destroyed, true); diff --git a/test/parallel/test-quic-session-unobserved-error-close.mjs b/test/parallel/test-quic-session-unobserved-error-close.mjs new file mode 100644 index 00000000000000..c0440766aaaac1 --- /dev/null +++ b/test/parallel/test-quic-session-unobserved-error-close.mjs @@ -0,0 +1,47 @@ +// Flags: --experimental-quic --no-warnings + +// Regression test: destroying a session with an error while its `closed` +// promise is not being observed must NOT surface as an unhandled rejection. + +import { hasQuic, skip, mustCall, mustNotCall } from '../common/index.mjs'; +import { subscribe, unsubscribe } from 'node:diagnostics_channel'; +import { setImmediate as tick } from 'node:timers/promises'; + +if (!hasQuic) { + skip('QUIC is not enabled'); +} + +const { listen, connect } = await import('../common/quic.mjs'); + +// Any unhandled rejection - e.g. an unobserved `closed` rejecting - fails. +process.on('unhandledRejection', mustNotCall('unexpected unhandled rejection')); + +// We use the diagnostics channel to observe the error close without actually +// observing session.closed (not listening is the whole point of the test): +const serverErrored = Promise.withResolvers(); +function onSessionError() { + unsubscribe('quic.session.error', onSessionError); + serverErrored.resolve(); +} +subscribe('quic.session.error', onSessionError); + +// The server session callback is left deliberately empty, so no response +// is sent and closed remains unobserved: +const serverEndpoint = await listen(mustCall()); + +const clientSession = await connect(serverEndpoint.address); +await clientSession.opened; + +// Finish handshake before close: +await tick(); + +// Cleanly close from the client with an error code, so the server +// receives a peer error close: +await clientSession.close({ code: 1 }); + +// Wait until the server has processed the error close, plus another tick +// to ensure unobserved promise rejection doesn't fire anywhere: +await serverErrored.promise; +await tick(); + +await serverEndpoint.close(); diff --git a/test/parallel/test-quic-stream-uni-no-onstream.mjs b/test/parallel/test-quic-stream-uni-no-onstream.mjs new file mode 100644 index 00000000000000..feaa657fb07b53 --- /dev/null +++ b/test/parallel/test-quic-stream-uni-no-onstream.mjs @@ -0,0 +1,47 @@ +// Flags: --experimental-quic --no-warnings +// Test: client-initiated unidirectional stream with no onstream +// The client creates a uni stream with no onstream. +// Verify that this causes no crash. + +import { hasQuic, skip, mustCall } from '../common/index.mjs'; +import * as fixtures from '../common/fixtures.mjs'; + +const { readKey } = fixtures; + +if (!hasQuic) { + skip('QUIC is not enabled'); +} + +const { createPrivateKey } = await import('node:crypto'); +const { listen, connect } = await import('../common/quic.mjs'); + +const serverKey = createPrivateKey(readKey('agent1-key.pem')); +const serverCert = readKey('agent1-cert.pem'); + +const done = Promise.withResolvers(); + +const serverEndpoint = await listen(mustCall(async (session) => { + await session.opened; + done.resolve(); +}), { + sni: { '*': { keys: [serverKey], certs: [serverCert] } }, + alpn: ['repro'], +}); + +const clientSession = await connect(serverEndpoint.address, { + servername: 'localhost', + alpn: 'repro', + ca: serverCert, +}); + +await clientSession.opened; + +await clientSession.createUnidirectionalStream({ + body: 'something something darkside', +}); + +await done.promise; + +await clientSession.close(); + +await serverEndpoint.close(); diff --git a/test/parallel/test-repl-custom-eval.js b/test/parallel/test-repl-custom-eval.js index 190e1c573aa18f..88419ec6a6c6e1 100644 --- a/test/parallel/test-repl-custom-eval.js +++ b/test/parallel/test-repl-custom-eval.js @@ -75,7 +75,7 @@ describe('repl with custom eval', { concurrency: true }, () => { delete global.foo; }); - it('inherits variables from the global context but does not use it afterwords if `useGlobal` is false', async () => { + it('inherits variables from the global context but does not use it afterwards if `useGlobal` is false', async () => { global.bar = 'global_bar'; const context = await new Promise((resolve) => { const { replServer } = startNewREPLServer({ diff --git a/test/parallel/test-runner-entry-file.mjs b/test/parallel/test-runner-entry-file.mjs new file mode 100644 index 00000000000000..94750e6a745e50 --- /dev/null +++ b/test/parallel/test-runner-entry-file.mjs @@ -0,0 +1,59 @@ +import '../common/index.mjs'; +import * as fixtures from '../common/fixtures.mjs'; +import { describe, it, run } from 'node:test'; +import assert from 'node:assert'; + +const aPath = fixtures.path('test-runner', 'entry-file', 'a.test.mjs'); +const bPath = fixtures.path('test-runner', 'entry-file', 'b.test.mjs'); +const helperPath = fixtures.path('test-runner', 'entry-file', 'helper.mjs'); + +async function collectEvents(options) { + const events = []; + const stream = run({ files: [aPath, bPath], ...options }); + stream.on('test:fail', () => {}); + for await (const event of stream) { + events.push(event); + } + return events; +} + +describe('entryFile attribution in reporter events', { concurrency: false }, () => { + it('stamps entryFile on events forwarded from child processes', async () => { + const events = await collectEvents({ isolation: 'process' }); + const checked = { __proto__: null, A: 0, B: 0 }; + + for (const { type, data } of events) { + if (data?.name === 'restore A' || data?.name === 'restore B') { + const target = data.name === 'restore A' ? 'A' : 'B'; + const expectedEntry = target === 'A' ? aPath : bPath; + assert.strictEqual(data.file, helperPath, + `${type} file should be the definition site`); + assert.strictEqual(data.entryFile, expectedEntry, + `${type} entryFile should be the entry file`); + checked[target]++; + } + } + + // Each subtest emits at least enqueue/dequeue/start/pass/complete. + assert.ok(checked.A >= 4, `expected events for restore A, got ${checked.A}`); + assert.ok(checked.B >= 4, `expected events for restore B, got ${checked.B}`); + }); + + it('stamps entryFile on top-level tests forwarded from child processes', async () => { + const events = await collectEvents({ isolation: 'process' }); + const pass = events.filter(({ type }) => type === 'test:pass'); + const backupA = pass.find(({ data }) => data.name === 'backup A'); + const backupB = pass.find(({ data }) => data.name === 'backup B'); + assert.strictEqual(backupA.data.entryFile, aPath); + assert.strictEqual(backupB.data.entryFile, bPath); + }); + + it('does not stamp entryFile with isolation none', async () => { + const events = await collectEvents({ isolation: 'none' }); + for (const { data } of events) { + if (data?.name === 'restore A' || data?.name === 'restore B') { + assert.strictEqual(data.entryFile, undefined); + } + } + }); +}); diff --git a/test/parallel/test-runner-execution-ordered-bypass.mjs b/test/parallel/test-runner-execution-ordered-bypass.mjs index 85b468cae2a7e1..ac1c97ee007d68 100644 --- a/test/parallel/test-runner-execution-ordered-bypass.mjs +++ b/test/parallel/test-runner-execution-ordered-bypass.mjs @@ -35,6 +35,10 @@ test('execution-ordered events bypass FileTest declaration-order buffer', async } }); + stream.on('test:log', (data) => { + events.push(`log:${data.message}`); + }); + // eslint-disable-next-line no-unused-vars for await (const _ of stream); @@ -56,4 +60,12 @@ test('execution-ordered events bypass FileTest declaration-order buffer', async failFast > completeSlow, `test:fail for fast-fail should arrive after test:complete for slow; events=${events.join(', ')}`, ); + + // test:log is execution-ordered, so it must bypass the buffer too. + const logFast = events.indexOf('log:live'); + assert.notStrictEqual(logFast, -1); + assert.ok( + logFast < completeSlow, + `test:log for fast-fail should arrive before slow's test:complete; events=${events.join(', ')}`, + ); }); diff --git a/test/parallel/test-runner-log.mjs b/test/parallel/test-runner-log.mjs new file mode 100644 index 00000000000000..8e767e0f903c8e --- /dev/null +++ b/test/parallel/test-runner-log.mjs @@ -0,0 +1,80 @@ +// Flags: --no-warnings +import '../common/index.mjs'; +import * as fixtures from '../common/fixtures.mjs'; +import assert from 'node:assert'; +import { spawnSync } from 'node:child_process'; +import { test, run } from 'node:test'; + +const fixture = fixtures.path('test-runner', 'log-events', 'basic.mjs'); + +test('t.log() validates its arguments', (t) => { + assert.throws(() => t.log(123), { code: 'ERR_INVALID_ARG_TYPE' }); +}); + +test('built-in reporters render test:log like diagnostics', () => { + const tap = spawnSync(process.execPath, ['--test', '--test-reporter=tap', fixture]); + assert.match(tap.stdout.toString(), /# hello/); + assert.match(tap.stdout.toString(), /# suite message/); + + const spec = spawnSync(process.execPath, ['--test', '--test-reporter=spec', fixture]); + assert.match(spec.stdout.toString(), /ℹ hello/); + assert.match(spec.stdout.toString(), /ℹ warned/); + + const junit = spawnSync(process.execPath, ['--test', '--test-reporter=junit', fixture]); + assert.match(junit.stdout.toString(), //); +}); + +test('test:log is emitted immediately with the expected payload', async () => { + const stream = run({ + files: [fixture], + isolation: 'none', + }); + + const logs = []; + const events = []; + + stream.on('test:log', (data) => { + logs.push(data); + events.push(`log:${data.message}`); + }); + + stream.on('test:pass', (data) => { + events.push(`pass:${data.name}`); + }); + + // eslint-disable-next-line no-unused-vars + for await (const _ of stream); + + assert.strictEqual(logs.length, 3); + + const suiteLog = logs.find((log) => log.message === 'suite message'); + assert.strictEqual(suiteLog.name, 'my suite'); + assert.strictEqual(suiteLog.data, undefined); + + const hello = logs.find((log) => log.message === 'hello'); + assert.strictEqual(hello.name, 'logger'); + assert.ok(!('level' in hello)); + assert.deepStrictEqual(hello.data, { foo: 1 }); + assert.strictEqual(typeof hello.nesting, 'number'); + assert.strictEqual(typeof hello.testId, 'number'); + assert.strictEqual(typeof hello.parentId, 'number'); + assert.strictEqual(typeof hello.file, 'string'); + assert.strictEqual(typeof hello.line, 'number'); + assert.strictEqual(typeof hello.column, 'number'); + + // The runner does not interpret data; conventions like a level live there. + const warned = logs.find((log) => log.message === 'warned'); + assert.ok(!('level' in warned)); + assert.deepStrictEqual(warned.data, { level: 'warn', attempt: 2 }); + + // 'logger' logs immediately while its earlier-declared sibling 'slow' is + // still running, so the log must arrive before slow's buffered test:pass. + const logIndex = events.indexOf('log:hello'); + const slowPassIndex = events.indexOf('pass:slow'); + assert.notStrictEqual(logIndex, -1); + assert.notStrictEqual(slowPassIndex, -1); + assert.ok( + logIndex < slowPassIndex, + `test:log should arrive before slow's buffered test:pass; events=${events.join(', ')}`, + ); +}); diff --git a/test/parallel/test-runner-v8-deserializer.mjs b/test/parallel/test-runner-v8-deserializer.mjs index 5e50df441da59e..6959b93fb5918c 100644 --- a/test/parallel/test-runner-v8-deserializer.mjs +++ b/test/parallel/test-runner-v8-deserializer.mjs @@ -5,6 +5,7 @@ import { describe, it, beforeEach } from 'node:test'; import assert from 'node:assert'; import { finished } from 'node:stream/promises'; import { DefaultSerializer } from 'node:v8'; +import { resolve } from 'node:path'; import serializer from 'internal/test_runner/reporter/v8-serializer'; import runner from 'internal/test_runner/runner'; @@ -14,10 +15,15 @@ async function toArray(chunks) { return arr; } +const entryFile = resolve('filetest'); const diagnosticEvent = { type: 'test:diagnostic', data: { nesting: 0, details: {}, message: 'diagnostic' }, }; +const reportedDiagnosticEvent = { + type: 'test:diagnostic', + data: { ...diagnosticEvent.data, entryFile }, +}; const chunks = await toArray(serializer([diagnosticEvent])); const defaultSerializer = new DefaultSerializer(); defaultSerializer.writeHeader(); @@ -67,28 +73,28 @@ describe('v8 deserializer', common.mustCall(() => { it('should deserialize a chunk with no serialization', async () => { const reported = await collectReported([Buffer.from('unknown')]); assert.deepStrictEqual(reported, [ - { data: { __proto__: null, file: 'filetest', message: 'unknown' }, type: 'test:stdout' }, + { data: { __proto__: null, entryFile, file: 'filetest', message: 'unknown' }, type: 'test:stdout' }, ]); }); it('should deserialize a serialized chunk', async () => { const reported = await collectReported(chunks); - assert.deepStrictEqual(reported, [diagnosticEvent]); + assert.deepStrictEqual(reported, [reportedDiagnosticEvent]); }); it('should deserialize a serialized chunk after non-serialized chunk', async () => { const reported = await collectReported([Buffer.concat([Buffer.from('unknown'), ...chunks])]); assert.deepStrictEqual(reported, [ - { data: { __proto__: null, file: 'filetest', message: 'unknown' }, type: 'test:stdout' }, - diagnosticEvent, + { data: { __proto__: null, entryFile, file: 'filetest', message: 'unknown' }, type: 'test:stdout' }, + reportedDiagnosticEvent, ]); }); it('should deserialize a serialized chunk before non-serialized output', async () => { const reported = await collectReported([Buffer.concat([ ...chunks, Buffer.from('unknown')])]); assert.deepStrictEqual(reported, [ - diagnosticEvent, - { data: { __proto__: null, file: 'filetest', message: 'unknown' }, type: 'test:stdout' }, + reportedDiagnosticEvent, + { data: { __proto__: null, entryFile, file: 'filetest', message: 'unknown' }, type: 'test:stdout' }, ]); }); @@ -131,7 +137,7 @@ describe('v8 deserializer', common.mustCall(() => { oversizedLengthHeader, ...chunks, ]); - assert.deepStrictEqual(reported.at(-1), diagnosticEvent); + assert.deepStrictEqual(reported.at(-1), reportedDiagnosticEvent); assert.strictEqual(reported.filter((event) => event.type === 'test:diagnostic').length, 1); assert.strictEqual(collectStdout(reported), oversizedLengthStdout); }); @@ -152,7 +158,7 @@ describe('v8 deserializer', common.mustCall(() => { const data = chunks[0]; const reported = await collectReported([data.subarray(0, i), data.subarray(i)]); assert.deepStrictEqual(reported, [ - diagnosticEvent, + reportedDiagnosticEvent, ]); }); @@ -163,9 +169,9 @@ describe('v8 deserializer', common.mustCall(() => { Buffer.concat([data.subarray(i), Buffer.from('unknown')]), ]); assert.deepStrictEqual(reported, [ - { data: { __proto__: null, file: 'filetest', message: 'unknown' }, type: 'test:stdout' }, - diagnosticEvent, - { data: { __proto__: null, file: 'filetest', message: 'unknown' }, type: 'test:stdout' }, + { data: { __proto__: null, entryFile, file: 'filetest', message: 'unknown' }, type: 'test:stdout' }, + reportedDiagnosticEvent, + { data: { __proto__: null, entryFile, file: 'filetest', message: 'unknown' }, type: 'test:stdout' }, ]); } ); diff --git a/test/parallel/test-sqlite-session.js b/test/parallel/test-sqlite-session.js index 189835ce4c3003..e0d0fc4e086a23 100644 --- a/test/parallel/test-sqlite-session.js +++ b/test/parallel/test-sqlite-session.js @@ -232,7 +232,7 @@ suite('conflict resolution', () => { const insertSql = 'INSERT INTO data (key, value) VALUES (?, ?)'; const session = database1.createSession(); database1.prepare(insertSql).run(1, 'hello'); - database2.prepare(insertSql).run(2, 'hello'); // database2 already constains hello + database2.prepare(insertSql).run(2, 'hello'); // database2 already contains hello return { database2, diff --git a/test/parallel/test-sqlite-statement-sync.js b/test/parallel/test-sqlite-statement-sync.js index aa7a3a73ae6649..b3a1dc434537c3 100644 --- a/test/parallel/test-sqlite-statement-sync.js +++ b/test/parallel/test-sqlite-statement-sync.js @@ -53,6 +53,29 @@ suite('StatementSync.prototype.get()', () => { const stmt = db.prepare('SELECT 1 as __proto__, 2 as constructor, 3 as toString'); t.assert.deepStrictEqual(stmt.get(), { __proto__: null, ['__proto__']: 1, constructor: 2, toString: 3 }); }); + + test('reflects an added column after the schema changes', (t) => { + using db = new DatabaseSync(':memory:'); + db.exec('CREATE TABLE storage(key TEXT, val TEXT)'); + db.prepare('INSERT INTO storage (key, val) VALUES (?, ?)').run('key1', 'val1'); + const stmt = db.prepare('SELECT * FROM storage ORDER BY key'); + db.exec("ALTER TABLE storage ADD COLUMN extra TEXT DEFAULT 'def'"); + t.assert.deepStrictEqual(stmt.get(), { + __proto__: null, key: 'key1', val: 'val1', extra: 'def', + }); + }); + + test('reflects a dropped column after the schema changes', (t) => { + using db = new DatabaseSync(':memory:'); + db.exec('CREATE TABLE storage(key TEXT, val TEXT, extra TEXT)'); + db.prepare('INSERT INTO storage (key, val, extra) VALUES (?, ?, ?)') + .run('key1', 'val1', 'x'); + const stmt = db.prepare('SELECT * FROM storage ORDER BY key'); + db.exec('ALTER TABLE storage DROP COLUMN extra'); + t.assert.deepStrictEqual(stmt.get(), { + __proto__: null, key: 'key1', val: 'val1', + }); + }); }); suite('StatementSync.prototype.all()', () => { @@ -83,6 +106,29 @@ suite('StatementSync.prototype.all()', () => { { __proto__: null, key: 'key2', val: 'val2' }, ]); }); + + test('reflects an added column after the schema changes', (t) => { + using db = new DatabaseSync(':memory:'); + db.exec('CREATE TABLE storage(key TEXT, val TEXT)'); + db.prepare('INSERT INTO storage (key, val) VALUES (?, ?)').run('key1', 'val1'); + const stmt = db.prepare('SELECT * FROM storage ORDER BY key'); + db.exec("ALTER TABLE storage ADD COLUMN extra TEXT DEFAULT 'def'"); + t.assert.deepStrictEqual(stmt.all(), [ + { __proto__: null, key: 'key1', val: 'val1', extra: 'def' }, + ]); + }); + + test('reflects a dropped column after the schema changes', (t) => { + using db = new DatabaseSync(':memory:'); + db.exec('CREATE TABLE storage(key TEXT, val TEXT, extra TEXT)'); + db.prepare('INSERT INTO storage (key, val, extra) VALUES (?, ?, ?)') + .run('key1', 'val1', 'x'); + const stmt = db.prepare('SELECT * FROM storage ORDER BY key'); + db.exec('ALTER TABLE storage DROP COLUMN extra'); + t.assert.deepStrictEqual(stmt.all(), [ + { __proto__: null, key: 'key1', val: 'val1' }, + ]); + }); }); suite('StatementSync.prototype.iterate()', () => { @@ -125,6 +171,29 @@ suite('StatementSync.prototype.iterate()', () => { } }); + test('reflects an added column after the schema changes', (t) => { + using db = new DatabaseSync(':memory:'); + db.exec('CREATE TABLE storage(key TEXT, val TEXT)'); + db.prepare('INSERT INTO storage (key, val) VALUES (?, ?)').run('key1', 'val1'); + const stmt = db.prepare('SELECT * FROM storage ORDER BY key'); + db.exec("ALTER TABLE storage ADD COLUMN extra TEXT DEFAULT 'def'"); + t.assert.deepStrictEqual(stmt.iterate().toArray(), [ + { __proto__: null, key: 'key1', val: 'val1', extra: 'def' }, + ]); + }); + + test('reflects a dropped column after the schema changes', (t) => { + using db = new DatabaseSync(':memory:'); + db.exec('CREATE TABLE storage(key TEXT, val TEXT, extra TEXT)'); + db.prepare('INSERT INTO storage (key, val, extra) VALUES (?, ?, ?)') + .run('key1', 'val1', 'x'); + const stmt = db.prepare('SELECT * FROM storage ORDER BY key'); + db.exec('ALTER TABLE storage DROP COLUMN extra'); + t.assert.deepStrictEqual(stmt.iterate().toArray(), [ + { __proto__: null, key: 'key1', val: 'val1' }, + ]); + }); + test('iterator keeps the prepared statement from being collected', (t) => { const db = new DatabaseSync(':memory:'); db.exec(` diff --git a/test/parallel/test-stream-duplexpair.js b/test/parallel/test-stream-duplexpair.js index 3e1b3044ddb73c..600f4cb0208fc8 100644 --- a/test/parallel/test-stream-duplexpair.js +++ b/test/parallel/test-stream-duplexpair.js @@ -54,7 +54,7 @@ const { Duplex, duplexPair } = require('stream'); })); } -// Test the case where the the _write never calls [kCallback] +// Test the case where the _write never calls [kCallback] // because a zero-size push doesn't trigger a _read { const [ serverSide, clientSide ] = duplexPair(); diff --git a/test/parallel/test-stream-iter-consumers-merge.js b/test/parallel/test-stream-iter-consumers-merge.js index b551599f731462..859fcf8c1580fa 100644 --- a/test/parallel/test-stream-iter-consumers-merge.js +++ b/test/parallel/test-stream-iter-consumers-merge.js @@ -170,6 +170,32 @@ async function testMergeSignalDuringPendingMultiSourceRead() { await assert.rejects(next, { name: 'AbortError' }); } +async function testMergeDoesNotDrainSourcesWhileIdle() { + function source(n) { + return { + __proto__: null, + pulls: 0, + async *[Symbol.asyncIterator]() { + while (this.pulls < n) { + yield [Buffer.from(`${++this.pulls}`)]; + } + }, + }; + } + + const a = source(5); + const b = source(5); + const iterator = merge(a, b)[Symbol.asyncIterator](); + + await iterator.next(); + await new Promise(setImmediate); + + assert.strictEqual(a.pulls, 1); + assert.strictEqual(b.pulls, 1); + + await iterator.return?.(); +} + // merge() accepts string sources (normalized via from()) async function testMergeStringSources() { const batches = []; @@ -306,6 +332,7 @@ Promise.all([ testMergeConsumerBreak(), testMergeSignalMidIteration(), testMergeSignalDuringPendingMultiSourceRead(), + testMergeDoesNotDrainSourcesWhileIdle(), testMergeStringSources(), testMergeObjectLikeSources(), testMergeCleanupErrorOnly(), diff --git a/test/parallel/test-stream-iter-from-async.js b/test/parallel/test-stream-iter-from-async.js index 8080b7a5cd86ca..5ef78088bfbd4c 100644 --- a/test/parallel/test-stream-iter-from-async.js +++ b/test/parallel/test-stream-iter-from-async.js @@ -49,6 +49,35 @@ async function testFromSyncIterableAsAsync() { assert.deepStrictEqual(batches[0][1], new Uint8Array([2])); } +async function testFromSyncIterableAwaitsPromiseValues() { + const result = await text(from([Promise.resolve('promise-value')])); + assert.strictEqual(result, 'promise-value'); +} + +async function testFromSyncIterableRejectsNestedAsyncIterable() { + async function* asyncGenerator() { + yield 'data'; + } + + await assert.rejects( + () => text(from([asyncGenerator()])), + { code: 'ERR_INVALID_ARG_TYPE' }, + ); +} + +async function testFromSyncIterableRejectsNestedToAsyncStreamable() { + const obj = { + [Symbol.for('Stream.toAsyncStreamable')]() { + return 'data'; + }, + }; + + await assert.rejects( + () => text(from([obj])), + { code: 'ERR_INVALID_ARG_TYPE' }, + ); +} + async function testFromToAsyncStreamableProtocol() { const sym = Symbol.for('Stream.toAsyncStreamable'); const obj = { @@ -232,6 +261,9 @@ Promise.all([ testFromString(), testFromAsyncGenerator(), testFromSyncIterableAsAsync(), + testFromSyncIterableAwaitsPromiseValues(), + testFromSyncIterableRejectsNestedAsyncIterable(), + testFromSyncIterableRejectsNestedToAsyncStreamable(), testFromToAsyncStreamableProtocol(), testFromRejectsNonStreamable(), testFromEmptyArray(), diff --git a/test/parallel/test-stream-iter-from-sync.js b/test/parallel/test-stream-iter-from-sync.js index d3a5cf671e10d8..50d85dc94a98b7 100644 --- a/test/parallel/test-stream-iter-from-sync.js +++ b/test/parallel/test-stream-iter-from-sync.js @@ -3,7 +3,7 @@ const common = require('../common'); const assert = require('assert'); -const { fromSync } = require('stream/iter'); +const { fromSync, textSync } = require('stream/iter'); function testFromSyncString() { // String input should be UTF-8 encoded @@ -186,6 +186,30 @@ function testFromSyncRejectsAsyncIterable() { assert.throws(() => fromSync(gen()), { code: 'ERR_INVALID_ARG_TYPE' }); } +function testFromSyncPrefersIteratorForDualIterable() { + const input = { + *[Symbol.iterator]() { + yield new TextEncoder().encode('sync'); + }, + async *[Symbol.asyncIterator]() { + yield new TextEncoder().encode('async'); + }, + }; + + assert.strictEqual(textSync(fromSync(input)), 'sync'); +} + +function testFromSyncPrefersIteratorForThenableIterable() { + const input = { + then() {}, + *[Symbol.iterator]() { + yield new TextEncoder().encode('sync'); + }, + }; + + assert.strictEqual(textSync(fromSync(input)), 'sync'); +} + // Promise rejected function testFromSyncRejectsPromise() { assert.throws(() => fromSync(Promise.resolve('hello')), @@ -232,6 +256,8 @@ Promise.all([ testFromSyncTopLevelProtocolOverIterator(), testFromSyncIgnoresAsyncStreamable(), testFromSyncRejectsAsyncIterable(), + testFromSyncPrefersIteratorForDualIterable(), + testFromSyncPrefersIteratorForThenableIterable(), testFromSyncRejectsPromise(), testFromSyncDataView(), ]).then(common.mustCall()); diff --git a/test/parallel/test-stream-iter-push-writer.js b/test/parallel/test-stream-iter-push-writer.js index e617a8a5309dae..32961612804211 100644 --- a/test/parallel/test-stream-iter-push-writer.js +++ b/test/parallel/test-stream-iter-push-writer.js @@ -147,10 +147,16 @@ async function testOndrainRejectsOnConsumerThrow() { // Consumer throws via iterator.throw() before draining enough // to clear backpressure. The drain should reject. const iter = readable[Symbol.asyncIterator](); - await iter.throw(new Error('consumer error')); + const err = new Error('consumer error'); + const drainRejects = assert.rejects(drainPromise, (e) => e === err); + const pendingWriteRejects = pendingWrite.catch(() => {}); + await assert.rejects( + () => iter.throw(err), + (e) => e === err, + ); - await assert.rejects(drainPromise, /consumer error/); - await pendingWrite.catch(() => {}); // Ignore write rejection + await drainRejects; + await pendingWriteRejects; // Ignore write rejection } async function testWritev() { @@ -171,6 +177,28 @@ async function testWritevSync() { assert.strictEqual(result, 'hello'); } +async function testWritevSyncInvalidChunkDoesNotQueue() { + const { writer, readable } = push({ highWaterMark: 10 }); + + assert.throws( + () => writer.writevSync([1]), + { code: 'ERR_INVALID_ARG_TYPE' }, + ); + + const iter = readable[Symbol.asyncIterator](); + const next = iter.next(); + const result = await Promise.race([ + next.then(() => 'resolved'), + new Promise((resolve) => setImmediate(resolve, 'pending')), + ]); + assert.strictEqual(result, 'pending'); + + writer.endSync(); + const end = await next; + assert.strictEqual(end.value, undefined); + assert.strictEqual(end.done, true); +} + async function testWritevMixedTypes() { const { writer, readable } = push({ highWaterMark: 10 }); // Mix strings and Uint8Arrays @@ -281,7 +309,11 @@ async function testConsumerThrowRejectsWrites() { writer.writeSync('a'); const iter = readable[Symbol.asyncIterator](); - await iter.throw(new Error('consumer boom')); + const err = new Error('consumer boom'); + await assert.rejects( + () => iter.throw(err), + (e) => e === err, + ); // Subsequent async writes should reject with the consumer's error await assert.rejects( @@ -290,6 +322,18 @@ async function testConsumerThrowRejectsWrites() { ); } +async function testConsumerThrowRejectsWithThrownError() { + const { readable } = push(); + + const iter = readable[Symbol.asyncIterator](); + const err = new Error('boom'); + + await assert.rejects( + () => iter.throw(err), + (e) => e === err, + ); +} + // end() resolves a pending read as done:true async function testEndResolvesPendingRead() { const { writer, readable } = push(); @@ -351,14 +395,16 @@ async function testConsumerThrowRejectsPendingRead() { await new Promise(setImmediate); const err = new Error('consumer read boom'); - const throwResult = await iter.throw(err); - assert.strictEqual(throwResult.value, undefined); - assert.strictEqual(throwResult.done, true); - - await assert.rejects( + const readRejects = assert.rejects( () => readPromise, (e) => e === err, ); + await assert.rejects( + () => iter.throw(err), + (e) => e === err, + ); + + await readRejects; } // end() while writes are pending rejects those writes @@ -494,6 +540,7 @@ Promise.all([ testOndrainRejectsOnConsumerThrow(), testWritev(), testWritevSync(), + testWritevSyncInvalidChunkDoesNotQueue(), testWritevMixedTypes(), testWriteAfterEnd(), testWriteAfterFail(), @@ -504,6 +551,7 @@ Promise.all([ testWriteUint8Array(), testOndrainWaitsForDrain(), testConsumerThrowRejectsWrites(), + testConsumerThrowRejectsWithThrownError(), testEndResolvesPendingRead(), testFailRejectsPendingRead(), testFailRejectsFutureReadWithFalsyReason(), diff --git a/test/parallel/test-stream-iter-share-from.js b/test/parallel/test-stream-iter-share-from.js index 362bfef78f1a2e..f7a9336bbc2691 100644 --- a/test/parallel/test-stream-iter-share-from.js +++ b/test/parallel/test-stream-iter-share-from.js @@ -168,10 +168,8 @@ async function testShareDropOldest() { } async function testShareDropNewest() { - // With drop-newest and a stalled consumer, the async path allows the - // buffer to grow beyond highWaterMark (the "drop" applies to the - // backpressure signal, not the buffer contents). Both consumers - // ultimately see all items. + // With drop-newest and a stalled consumer, upstream results are discarded + // once the buffer reaches highWaterMark. async function* source() { for (let i = 0; i < 4; i++) { yield [new TextEncoder().encode(`${i}`)]; @@ -181,25 +179,24 @@ async function testShareDropNewest() { const fast = shared.pull(); const slow = shared.pull(); - // Fast consumer reads all items + // The fast consumer fills the buffer, then drives the source to completion. const fastItems = []; for await (const batch of fast) { for (const chunk of batch) { fastItems.push(new TextDecoder().decode(chunk)); } } - assert.strictEqual(fastItems.length, 4); + assert.deepStrictEqual(fastItems, ['0', '1']); + assert.strictEqual(shared.bufferSize, 2); - // Slow consumer also sees all items (buffer grew past hwm) + // The stalled consumer sees the buffered items, but not the dropped results. const slowItems = []; for await (const batch of slow) { for (const chunk of batch) { slowItems.push(new TextDecoder().decode(chunk)); } } - assert.strictEqual(slowItems.length, 4); - assert.strictEqual(slowItems[0], '0'); - assert.strictEqual(slowItems[3], '3'); + assert.deepStrictEqual(slowItems, ['0', '1']); } // ============================================================================= diff --git a/test/parallel/test-stream-iter-sharedarraybuffer.js b/test/parallel/test-stream-iter-sharedarraybuffer.js index 7aff205bf7664a..de0f8d6f3fc636 100644 --- a/test/parallel/test-stream-iter-sharedarraybuffer.js +++ b/test/parallel/test-stream-iter-sharedarraybuffer.js @@ -52,6 +52,7 @@ function testBytesSyncSAB() { const sab = new SharedArrayBuffer(5); new Uint8Array(sab).set([104, 101, 108, 108, 111]); // 'hello' const data = bytesSync(fromSync(sab)); + assert.ok(data.buffer instanceof ArrayBuffer); assert.deepStrictEqual(data, new Uint8Array([104, 101, 108, 108, 111])); } @@ -59,6 +60,7 @@ async function testBytesAsyncSAB() { const sab = new SharedArrayBuffer(5); new Uint8Array(sab).set([104, 101, 108, 108, 111]); // 'hello' const data = await bytes(from(sab)); + assert.ok(data.buffer instanceof ArrayBuffer); assert.deepStrictEqual(data, new Uint8Array([104, 101, 108, 108, 111])); } @@ -80,7 +82,7 @@ function testArrayBufferSyncSAB() { const sab = new SharedArrayBuffer(4); new Uint8Array(sab).set([1, 2, 3, 4]); const result = arrayBufferSync(fromSync(sab)); - assert.ok(result instanceof SharedArrayBuffer || result instanceof ArrayBuffer); + assert.ok(result instanceof ArrayBuffer); assert.deepStrictEqual(new Uint8Array(result), new Uint8Array([1, 2, 3, 4])); } @@ -88,7 +90,7 @@ async function testArrayBufferAsyncSAB() { const sab = new SharedArrayBuffer(4); new Uint8Array(sab).set([1, 2, 3, 4]); const result = await arrayBuffer(from(sab)); - assert.ok(result instanceof SharedArrayBuffer || result instanceof ArrayBuffer); + assert.ok(result instanceof ArrayBuffer); assert.deepStrictEqual(new Uint8Array(result), new Uint8Array([1, 2, 3, 4])); } diff --git a/test/parallel/test-stream-iter-validation.js b/test/parallel/test-stream-iter-validation.js index ecefaeb171ec41..08eeaeee685656 100644 --- a/test/parallel/test-stream-iter-validation.js +++ b/test/parallel/test-stream-iter-validation.js @@ -3,8 +3,9 @@ const common = require('../common'); const assert = require('assert'); +const { Writable } = require('stream'); const { - from, fromSync, pull, pullSync, pipeTo, + from, fromSync, pull, pullSync, pipeTo, fromWritable, push, duplex, broadcast, Broadcast, share, shareSync, Share, SyncShare, bytes, bytesSync, text, textSync, @@ -42,6 +43,19 @@ assert.throws(() => push({ signal: {} }), { code: 'ERR_INVALID_ARG_TYPE' }); assert.throws(() => push(42, {}), { code: 'ERR_INVALID_ARG_TYPE' }); assert.throws(() => push('bad', {}), { code: 'ERR_INVALID_ARG_TYPE' }); +// Writer options.signal must be AbortSignal +{ + const { writer } = push(); + const badOptions = { signal: 'bad' }; + assert.throws(() => writer.write('a', badOptions), + { code: 'ERR_INVALID_ARG_TYPE' }); + assert.throws(() => writer.writev(['b'], badOptions), + { code: 'ERR_INVALID_ARG_TYPE' }); + assert.throws(() => writer.end(badOptions), + { code: 'ERR_INVALID_ARG_TYPE' }); + writer.endSync(); +} + // Writer.writev requires array { const { writer } = push(); @@ -147,6 +161,19 @@ assert.throws(() => broadcast({ highWaterMark: Number.MAX_SAFE_INTEGER + 1 }), assert.throws(() => broadcast({ signal: {} }), { code: 'ERR_INVALID_ARG_TYPE' }); assert.throws(() => broadcast({ backpressure: 'bad' }), { code: 'ERR_INVALID_ARG_VALUE' }); +// BroadcastWriter options.signal must be AbortSignal +{ + const { writer } = broadcast(); + const badOptions = { signal: 'bad' }; + assert.throws(() => writer.write('a', badOptions), + { code: 'ERR_INVALID_ARG_TYPE' }); + assert.throws(() => writer.writev(['b'], badOptions), + { code: 'ERR_INVALID_ARG_TYPE' }); + assert.throws(() => writer.end(badOptions), + { code: 'ERR_INVALID_ARG_TYPE' }); + writer.endSync(); +} + // BroadcastWriter.writev requires array { const { writer } = broadcast(); @@ -160,6 +187,24 @@ assert.throws(() => broadcast({ backpressure: 'bad' }), { code: 'ERR_INVALID_ARG // Broadcast.from rejects non-streamable input assert.throws(() => Broadcast.from(42), { code: 'ERR_INVALID_ARG_TYPE' }); +// fromWritable Writer options.signal must be AbortSignal +{ + const writable = new Writable({ + write(chunk, encoding, callback) { + callback(); + }, + }); + const writer = fromWritable(writable); + const badOptions = { signal: 'bad' }; + assert.throws(() => writer.write('a', badOptions), + { code: 'ERR_INVALID_ARG_TYPE' }); + assert.throws(() => writer.writev(['b'], badOptions), + { code: 'ERR_INVALID_ARG_TYPE' }); + assert.throws(() => writer.end(badOptions), + { code: 'ERR_INVALID_ARG_TYPE' }); + writable.destroy(); +} + // ============================================================================= // share() / shareSync() validation // ============================================================================= diff --git a/test/parallel/test-stream-pipe-multiple-destinations-error.js b/test/parallel/test-stream-pipe-multiple-destinations-error.js new file mode 100644 index 00000000000000..eec7da6e971768 --- /dev/null +++ b/test/parallel/test-stream-pipe-multiple-destinations-error.js @@ -0,0 +1,48 @@ +'use strict'; +const common = require('../common'); + +// Regression test for https://github.com/nodejs/node/issues/53185 +// When a source is piped to multiple destinations and one destination errors +// synchronously in `_write`, the source must keep flowing to the remaining +// healthy destination(s) instead of stalling forever. + +const assert = require('assert'); +const { PassThrough, Writable, finished } = require('stream'); + +const source = new PassThrough({ highWaterMark: 16 * 1024 }); + +// A destination that errors synchronously on its first write. +const failing = new Writable({ + highWaterMark: 16 * 1024, + write(chunk, encoding, callback) { + callback(new Error('boom')); + }, +}); +failing.on('error', common.mustCall()); + +// A healthy destination that counts everything it receives. +let received = 0; +const healthy = new Writable({ + highWaterMark: 16 * 1024, + write(chunk, encoding, callback) { + received += chunk.length; + callback(); + }, +}); + +source.pipe(failing); +source.pipe(healthy); + +// Two chunks each larger than the highWaterMark so that `write()` returns +// false and the source is paused awaiting a drain. +const chunk = Buffer.alloc(20000, 'a'); +source.write(chunk); +source.write(chunk); +source.end(); + +finished(healthy, common.mustSucceed(() => { + // Without the fix, the errored destination stays in the source's + // awaitDrainWriters set, the source never resumes, and `healthy` only + // receives the first chunk. + assert.strictEqual(received, chunk.length * 2); +})); diff --git a/test/parallel/test-timers-async-store-leak.js b/test/parallel/test-timers-async-store-leak.js new file mode 100644 index 00000000000000..1f95b2ea55f1b1 --- /dev/null +++ b/test/parallel/test-timers-async-store-leak.js @@ -0,0 +1,167 @@ +// Flags: --expose-internals --expose-gc +'use strict'; + +const common = require('../common'); +const { spawnSyncAndAssert } = require('../common/child_process'); +const { AsyncLocalStorage } = require('async_hooks'); +const assert = require('assert'); + +if (process.argv[2] !== 'child') { + // Test with async-context-frame disabled (legacy ALS mode) + spawnSyncAndAssert(process.execPath, [ + '--expose-internals', + '--expose-gc', + '--no-async-context-frame', + __filename, + 'child', + ], {}); + + // Test with async-context-frame enabled (default) + spawnSyncAndAssert(process.execPath, [ + '--expose-internals', + '--expose-gc', + __filename, + 'child', + ], {}); +} + +const AsyncContextFrame = require('internal/async_context_frame'); +const { + async_context_frame, +} = require('internal/timers'); +const { + symbols: { + async_local_storage_context_symbol, + }, +} = require('internal/async_hooks'); + +// When async-context-frame is enabled, stores are stored in the async context +// frame, not directly on the resource. The resource holds a reference to the +// frame via async_context_frame. +const isACFEnabled = AsyncContextFrame.enabled; + +function getStore(resource, als) { + if (isACFEnabled) { + return resource[async_context_frame]?.get(als); + } + return resource[async_local_storage_context_symbol]?.[als.kResourceStore]; +} + +function assertStore(resource, als, store) { + assert.strictEqual(getStore(resource, als), store); +} + +function assertNoStore(resource) { + if (isACFEnabled) { + assert.strictEqual(resource[async_context_frame], undefined); + } else { + assert.strictEqual(resource[async_local_storage_context_symbol], undefined); + } +} + +// Test that setTimeout does not retain a reference to the async store after +// firing. The callback and arguments must stay on the Timeout object so that +// refresh() can reactivate the timer. +{ + const asyncLocalStorage = new AsyncLocalStorage(); + const store = {}; + const arg = {}; + asyncLocalStorage.run(store, common.mustCall(() => { + const timeout = setTimeout(common.mustCall((received) => { + assert.strictEqual(received, arg); + setImmediate(common.mustCall(() => { + assertNoStore(timeout); + })); + }), 1, arg); + assertStore(timeout, asyncLocalStorage, store); + })); +} + +// Test that clearTimeout cleans up the store, callback, and arguments before +// firing. +{ + const asyncLocalStorage = new AsyncLocalStorage(); + const store = {}; + const arg = {}; + asyncLocalStorage.run(store, common.mustCall(() => { + const timeout = setTimeout(common.mustNotCall(), common.platformTimeout(1000), arg); + assertStore(timeout, asyncLocalStorage, store); + clearTimeout(timeout); + assertNoStore(timeout); + assert.strictEqual(timeout._onTimeout, undefined); + assert.strictEqual(timeout._timerArgs, undefined); + })); +} + +// Test that setInterval does not retain a reference to the async store, +// callback, or arguments after it is cleared. +{ + const asyncLocalStorage = new AsyncLocalStorage(); + const store = {}; + const arg = {}; + asyncLocalStorage.run(store, common.mustCall(() => { + const interval = setInterval(common.mustCall((received) => { + assert.strictEqual(received, arg); + assert.strictEqual(asyncLocalStorage.getStore(), store); + clearInterval(interval); + assert.strictEqual(asyncLocalStorage.getStore(), store); + setImmediate(common.mustCall(() => { + assertNoStore(interval); + assert.strictEqual(interval._onTimeout, undefined); + assert.strictEqual(interval._timerArgs, undefined); + })); + }), 1, arg); + assertStore(interval, asyncLocalStorage, store); + })); +} + +// Test that setImmediate does not retain a reference to the async store, +// callback, or arguments after firing. +{ + const asyncLocalStorage = new AsyncLocalStorage(); + const store = {}; + const arg = {}; + asyncLocalStorage.run(store, common.mustCall(() => { + const immediate = setImmediate(common.mustCall((received) => { + assert.strictEqual(received, arg); + setImmediate(common.mustCall(() => { + assertNoStore(immediate); + assert.strictEqual(immediate._onImmediate, undefined); + assert.strictEqual(immediate._argv, undefined); + })); + }), arg); + assertStore(immediate, asyncLocalStorage, store); + })); +} + +// Test that clearImmediate cleans up the store, callback, and arguments before +// firing. +{ + const asyncLocalStorage = new AsyncLocalStorage(); + const store = {}; + const arg = {}; + asyncLocalStorage.run(store, common.mustCall(() => { + const immediate = setImmediate(common.mustNotCall(), arg); + assertStore(immediate, asyncLocalStorage, store); + clearImmediate(immediate); + assertNoStore(immediate); + assert.strictEqual(immediate._onImmediate, undefined); + assert.strictEqual(immediate._argv, undefined); + })); +} + +// Test that the async store reference is cleaned up and can be GC'd. +{ + const asyncLocalStorage = new AsyncLocalStorage(); + let timeout; + const weakStore = new WeakRef({}); + asyncLocalStorage.run(weakStore.deref(), common.mustCall(() => { + timeout = setTimeout(common.mustNotCall(), common.platformTimeout(1000)); + assert.strictEqual(weakStore.deref() !== undefined, true); + clearTimeout(timeout); + })); + setImmediate(common.mustCall(() => { + global.gc(); + assert.strictEqual(weakStore.deref(), undefined); + })); +} diff --git a/test/parallel/test-timers-interval-promisified.js b/test/parallel/test-timers-interval-promisified.js index 754531516c31f2..e22b94ae3f7035 100644 --- a/test/parallel/test-timers-interval-promisified.js +++ b/test/parallel/test-timers-interval-promisified.js @@ -30,7 +30,7 @@ const { setInterval } = timerPromises; const iterator = iterable[Symbol.asyncIterator](); const promise = iterator.next(); promise.then((result) => { - assert.ok(!result.done, 'iterator was wronly marked as done'); + assert.ok(!result.done, 'iterator was wrongly marked as done'); assert.strictEqual(result.value, 'foobar'); return iterator.return(); }).then(common.mustCall()); @@ -42,7 +42,7 @@ const { setInterval } = timerPromises; const promise = iterator.next(); promise .then((result) => { - assert.ok(!result.done, 'iterator was wronly marked as done'); + assert.ok(!result.done, 'iterator was wrongly marked as done'); assert.strictEqual(result.value, 'foobar'); return iterator.next(); }) diff --git a/test/parallel/test-tls-check-server-identity.js b/test/parallel/test-tls-check-server-identity.js index 4863fca55165ee..e21f39ccc76341 100644 --- a/test/parallel/test-tls-check-server-identity.js +++ b/test/parallel/test-tls-check-server-identity.js @@ -100,6 +100,27 @@ const tests = [ cert: { subject: { CN: '8.8.8.8' }, subjectaltname: 'IP Address:8.8.8.8' } }, + // An "IP Address:" SAN also matches an IPv6 host. Regression test for the + // IDNA-normalization change: domainToASCII('::1') === '' (an IPv6 literal is + // not a domain), which made the normalized host skip IPv6 IP-SAN matching. + { + host: '::1', + cert: { subject: {}, subjectaltname: 'IP Address:::1' } + }, + + // IPv6 hosts and SANs are matched canonically. + { + host: '2001:db8::1', + cert: { subject: {}, subjectaltname: 'IP Address:2001:DB8:0:0:0:0:0:1' } + }, + + // A non-matching IPv6 "IP Address:" SAN is rejected. + { + host: '::1', + cert: { subject: {}, subjectaltname: 'IP Address:::2' }, + error: 'IP: ::1 is not in the cert\'s list: ::2' + }, + // But not when it's a CIDR. { host: '8.8.8.8', diff --git a/test/parallel/test-tls-client-mindhsize.js b/test/parallel/test-tls-client-mindhsize.js index fa494c583a2f3b..d777a9bfa97f3f 100644 --- a/test/parallel/test-tls-client-mindhsize.js +++ b/test/parallel/test-tls-client-mindhsize.js @@ -5,7 +5,7 @@ if (!common.hasCrypto) common.skip('missing crypto'); // OpenSSL has a set of security levels which affect what algorithms -// are available by default. Different OpenSSL veresions have different +// are available by default. Different OpenSSL versions have different // default security levels and we use this value to adjust what a test // expects based on the security level. You can read more in // https://docs.openssl.org/1.1.1/man3/SSL_CTX_set_security_level/#default-callback-behaviour diff --git a/test/parallel/test-tls-dhe.js b/test/parallel/test-tls-dhe.js index b788d153293899..83af6daccbd0c9 100644 --- a/test/parallel/test-tls-dhe.js +++ b/test/parallel/test-tls-dhe.js @@ -37,7 +37,7 @@ const { } = require('../common/crypto'); // OpenSSL has a set of security levels which affect what algorithms -// are available by default. Different OpenSSL veresions have different +// are available by default. Different OpenSSL versions have different // default security levels and we use this value to adjust what a test // expects based on the security level. You can read more in // https://docs.openssl.org/1.1.1/man3/SSL_CTX_set_security_level/#default-callback-behaviour diff --git a/test/parallel/test-tls-ip-servername-forbidden.js b/test/parallel/test-tls-ip-servername-forbidden.js index 6460295014115d..4a07c1cf751460 100644 --- a/test/parallel/test-tls-ip-servername-forbidden.js +++ b/test/parallel/test-tls-ip-servername-forbidden.js @@ -8,7 +8,7 @@ if (!common.hasCrypto) const tls = require('tls'); -// Verify that passing an IP address the the servername option +// Verify that passing an IP address to the servername option // throws an error. assert.throws(() => tls.connect({ port: 1234, diff --git a/test/parallel/test-tls-min-max-version.js b/test/parallel/test-tls-min-max-version.js index abddbbeb0eba1b..88dce9f4b8e681 100644 --- a/test/parallel/test-tls-min-max-version.js +++ b/test/parallel/test-tls-min-max-version.js @@ -200,7 +200,7 @@ test(U, U, 'TLSv1_2_method', U, U, 'TLSv1_2_method', 'TLSv1.2'); test(U, U, 'TLSv1_1_method', U, U, 'TLSv1_1_method', 'TLSv1.1'); test(U, U, 'TLSv1_method', U, U, 'TLSv1_method', 'TLSv1'); -// The default default. +// The default configuration. if (DEFAULT_MIN_VERSION === 'TLSv1.2') { test(U, U, 'TLSv1_1_method', U, U, U, U, 'ERR_SSL_TLSV1_ALERT_PROTOCOL_VERSION', @@ -215,7 +215,7 @@ if (DEFAULT_MIN_VERSION === 'TLSv1.2') { test(U, U, U, U, U, 'TLSv1_method', U, 'ERR_SSL_UNSUPPORTED_PROTOCOL', 'ERR_SSL_WRONG_VERSION_NUMBER'); } else { - // TLS1.3 client hellos are are not understood by TLS1.1 or below. + // TLS1.3 client hellos are not understood by TLS1.1 or below. test(U, U, U, U, U, 'TLSv1_1_method', U, 'ERR_SSL_TLSV1_ALERT_PROTOCOL_VERSION', 'ERR_SSL_UNSUPPORTED_PROTOCOL'); @@ -237,7 +237,7 @@ if (DEFAULT_MIN_VERSION === 'TLSv1.1') { test(U, U, U, U, U, 'TLSv1_method', U, 'ERR_SSL_UNSUPPORTED_PROTOCOL', 'ERR_SSL_WRONG_VERSION_NUMBER'); } else { - // TLS1.3 client hellos are are not understood by TLS1.1 or below. + // TLS1.3 client hellos are not understood by TLS1.1 or below. test(U, U, U, U, U, 'TLSv1_method', U, 'ERR_SSL_TLSV1_ALERT_PROTOCOL_VERSION', 'ERR_SSL_UNSUPPORTED_PROTOCOL'); diff --git a/test/parallel/test-tls-psk-alpn-callback-exception-handling.js b/test/parallel/test-tls-psk-alpn-callback-exception-handling.js index 31d7802931fb36..0ba55f9153b947 100644 --- a/test/parallel/test-tls-psk-alpn-callback-exception-handling.js +++ b/test/parallel/test-tls-psk-alpn-callback-exception-handling.js @@ -95,10 +95,7 @@ describe('TLS callback exception handling', () => { reject(e); } })); - - server.on('secureConnection', () => { - reject(new Error('secureConnection should not fire')); - }); + server.on('secureConnection', common.mustNotCall('secureConnection listener')); await new Promise((res) => server.listen(0, res)); @@ -113,7 +110,7 @@ describe('TLS callback exception handling', () => { }), }); - client.on('error', () => {}); + client.on('error', common.mustCall()); await promise; }); @@ -307,9 +304,6 @@ describe('TLS callback exception handling', () => { } })); - server.on('secureConnection', () => { - reject(new Error('secureConnection should not fire')); - }); await new Promise((res) => server.listen(0, res)); @@ -324,7 +318,7 @@ describe('TLS callback exception handling', () => { }), }); - client.on('error', () => {}); + client.on('error', common.mustCall()); await promise; }); @@ -354,10 +348,7 @@ describe('TLS callback exception handling', () => { reject(e); } })); - - server.on('secureConnection', () => { - reject(new Error('secureConnection should not fire')); - }); + server.on('secureConnection', common.mustNotCall('secureConnection listener')); await new Promise((res) => server.listen(0, res)); @@ -368,7 +359,7 @@ describe('TLS callback exception handling', () => { ALPNProtocols: ['http/1.1', 'h2'], }); - client.on('error', () => {}); + client.on('error', common.mustCall()); await promise; }); @@ -397,10 +388,7 @@ describe('TLS callback exception handling', () => { reject(e); } })); - - server.on('secureConnection', () => { - reject(new Error('secureConnection should not fire')); - }); + server.on('secureConnection', common.mustNotCall('secureConnection listener')); await new Promise((res) => server.listen(0, res)); @@ -411,7 +399,7 @@ describe('TLS callback exception handling', () => { ALPNProtocols: ['http/1.1'], }); - client.on('error', () => {}); + client.on('error', common.mustCall()); await promise; }); @@ -430,9 +418,7 @@ describe('TLS callback exception handling', () => { const { promise, resolve, reject } = createTestPromise(); - server.on('secureConnection', () => { - reject(new Error('secureConnection should not fire')); - }); + server.on('secureConnection', common.mustNotCall('secureConnection listener')); await new Promise((res) => server.listen(0, res)); @@ -474,9 +460,7 @@ describe('TLS callback exception handling', () => { const { promise, resolve, reject } = createTestPromise(); - server.on('secureConnection', () => { - reject(new Error('secureConnection should not fire')); - }); + server.on('secureConnection', common.mustNotCall('secureConnection listener')); await new Promise((res) => server.listen(0, res)); @@ -527,10 +511,7 @@ describe('TLS callback exception handling', () => { reject(e); } })); - - server.on('secureConnection', () => { - reject(new Error('secureConnection should not fire')); - }); + server.on('secureConnection', common.mustNotCall('secureConnection listener')); await new Promise((res) => server.listen(0, res)); @@ -541,7 +522,7 @@ describe('TLS callback exception handling', () => { rejectUnauthorized: false, }); - client.on('error', () => {}); + client.on('error', common.mustCall()); await promise; }); @@ -574,10 +555,7 @@ describe('TLS callback exception handling', () => { reject(e); } })); - - server.on('secureConnection', () => { - reject(new Error('secureConnection should not fire')); - }); + server.on('secureConnection', common.mustNotCall('secureConnection listener')); await new Promise((res) => server.listen(0, res)); @@ -588,7 +566,7 @@ describe('TLS callback exception handling', () => { rejectUnauthorized: false, }); - client.on('error', () => {}); + client.on('error', common.mustCall()); await promise; }); diff --git a/test/parallel/test-util-inspect.js b/test/parallel/test-util-inspect.js index 6a1da6d4129fbd..1e305f0a45fb7c 100644 --- a/test/parallel/test-util-inspect.js +++ b/test/parallel/test-util-inspect.js @@ -107,7 +107,7 @@ assert.strictEqual(util.inspect({}), '{}'); assert.strictEqual(util.inspect({ a: 1 }), '{ a: 1 }'); assert.strictEqual(util.inspect({ a: function() {} }), '{ a: [Function: a] }'); assert.strictEqual(util.inspect({ a: () => {} }), '{ a: [Function: a] }'); -// eslint-disable-next-line func-name-matching +// eslint-disable-next-line node-core/func-name-matching assert.strictEqual(util.inspect({ a: async function abc() {} }), '{ a: [AsyncFunction: abc] }'); assert.strictEqual(util.inspect({ a: async () => {} }), diff --git a/test/parallel/test-vfs-fs-promises.js b/test/parallel/test-vfs-fs-promises.js index d4b151162f2802..0f09c96f83aec5 100644 --- a/test/parallel/test-vfs-fs-promises.js +++ b/test/parallel/test-vfs-fs-promises.js @@ -75,6 +75,16 @@ const vfs = require('node:vfs'); await fsp.utimes(p('src/hello.txt'), now, now); await fsp.lutimes(p('src/hello.txt'), now, now); + await fsp.lchmod(p('src/plnk.txt'), 0o700); + assert.strictEqual( + (await fsp.lstat(p('src/hello.txt'))).mode & 0o777, + 0o644, + ); + assert.strictEqual( + (await fsp.lstat(p('src/plnk.txt'))).mode & 0o777, + 0o700, + ); + // FileHandle via fsp.open const handle = await fsp.open(p('src/hello.txt'), 'r'); assert.strictEqual(await handle.readFile('utf8'), 'hello'); diff --git a/test/parallel/test-vfs-mkdir.js b/test/parallel/test-vfs-mkdir.js index 87a823b77d87ca..22487324d242c4 100644 --- a/test/parallel/test-vfs-mkdir.js +++ b/test/parallel/test-vfs-mkdir.js @@ -4,7 +4,7 @@ // mkdirSync / rmdirSync behaviour: return value, recursive option, mode // option, error cases. -require('../common'); +const common = require('../common'); const assert = require('assert'); const vfs = require('node:vfs'); @@ -17,6 +17,51 @@ const vfs = require('node:vfs'); assert.strictEqual(result, '/a/b'); } +// Recursive mkdir follows symlinked intermediate directories, but returns the +// path of the first created directory as requested by the caller. +{ + const myVfs = vfs.create(); + myVfs.mkdirSync('/target'); + myVfs.symlinkSync('/target', '/link'); + + const result = myVfs.mkdirSync('/link/subdir/deep', { recursive: true }); + + assert.strictEqual(result, '/link/subdir'); + assert.strictEqual(myVfs.existsSync('/target/subdir/deep'), true); + assert.strictEqual(myVfs.existsSync('/link/subdir/deep'), true); +} + +// Recursive mkdir also resolves relative symlink targets from the symlink's +// resolved parent directory. +{ + const myVfs = vfs.create(); + myVfs.mkdirSync('/parent/target', { recursive: true }); + myVfs.symlinkSync('target', '/parent/link'); + + myVfs.mkdirSync('/parent/link/subdir', { recursive: true }); + + assert.strictEqual(myVfs.existsSync('/parent/target/subdir'), true); +} + +// Recursive mkdir through symlinks keeps native error behavior for bad +// intermediate targets. +{ + const myVfs = vfs.create(); + myVfs.symlinkSync('/missing', '/dangling'); + assert.throws( + () => myVfs.mkdirSync('/dangling/subdir', { recursive: true }), + { code: 'ENOENT' }); +} + +{ + const myVfs = vfs.create(); + myVfs.writeFileSync('/file', 'x'); + myVfs.symlinkSync('/file', '/link'); + assert.throws( + () => myVfs.mkdirSync('/link/subdir', { recursive: true }), + { code: 'ENOTDIR' }); +} + // mkdirSync with explicit mode (non-recursive) { const myVfs = vfs.create(); @@ -47,3 +92,16 @@ const vfs = require('node:vfs'); myVfs.writeFileSync('/d/x', ''); assert.throws(() => myVfs.rmdirSync('/d'), { code: 'ENOTEMPTY' }); } + +// promises.mkdir uses the same recursive symlink handling. +(async () => { + const myVfs = vfs.create(); + myVfs.mkdirSync('/target'); + myVfs.symlinkSync('/target', '/link'); + + const result = await myVfs.promises.mkdir('/link/subdir/deep', + { recursive: true }); + + assert.strictEqual(result, '/link/subdir'); + assert.strictEqual(myVfs.existsSync('/target/subdir/deep'), true); +})().then(common.mustCall()); diff --git a/test/parallel/test-vfs-readdir-symlink-recursive.js b/test/parallel/test-vfs-readdir-symlink-recursive.js index 33b52bb5d4a416..f46a12da7b9aa3 100644 --- a/test/parallel/test-vfs-readdir-symlink-recursive.js +++ b/test/parallel/test-vfs-readdir-symlink-recursive.js @@ -105,3 +105,32 @@ assert.ok( assert.ok(dirents.some((d) => d.name === 'sub' && d.isDirectory())); assert.ok(dirents.some((d) => d.name === 'lnk' && d.isSymbolicLink())); } + +// Recursive readdir on a deeply nested tree must not exhaust the call stack. +// The iterative traversal introduced in this fix handles arbitrarily deep trees +// without recursion, so this should complete without a RangeError. +{ + const DEPTH = 1000; + const v = vfs.create(); + + // Build /deep/0/1/2/.../999/leaf.txt + let path = '/deep'; + v.mkdirSync(path); + for (let i = 0; i < DEPTH; i++) { + path += `/${i}`; + v.mkdirSync(path); + } + v.writeFileSync(`${path}/leaf.txt`, 'deep'); + + const entries = v.readdirSync('/deep', { recursive: true }); + + // Every intermediate directory and the leaf file must appear. + assert.strictEqual(entries.length, DEPTH + 1); + + // Build the expected relative path to the leaf file. + const expectedLeaf = Array.from({ length: DEPTH }, (_, i) => i).join('/') + '/leaf.txt'; + assert.ok( + entries.includes(expectedLeaf), + `Expected '${expectedLeaf}' in deep-tree entries`, + ); +} diff --git a/test/parallel/test-vfs-stream-explicit-fd.js b/test/parallel/test-vfs-stream-explicit-fd.js index d439e441a8699d..bac86b561493cc 100644 --- a/test/parallel/test-vfs-stream-explicit-fd.js +++ b/test/parallel/test-vfs-stream-explicit-fd.js @@ -32,6 +32,18 @@ function readStream(stream) { })); } +// ReadStream with explicit fd via for-await; autoClose:false leaves fd open +(async () => { + const fd = myVfs.openSync('/file.txt', 'r'); + const stream = myVfs.createReadStream('/file.txt', { fd, autoClose: false }); + const chunks = []; + for await (const chunk of stream) { + chunks.push(chunk); + } + assert.strictEqual(Buffer.concat(chunks).toString(), 'hello world'); + myVfs.closeSync(fd); +})().then(common.mustCall()); + // WriteStream with explicit fd; autoClose:false leaves the fd open (async () => { const fd = myVfs.openSync('/fd-write.txt', 'w'); diff --git a/test/parallel/test-vfs-streams.js b/test/parallel/test-vfs-streams.js index 83625d0072daaa..977834d719bdeb 100644 --- a/test/parallel/test-vfs-streams.js +++ b/test/parallel/test-vfs-streams.js @@ -229,6 +229,18 @@ const { pipeline } = require('stream/promises'); })); } +// createReadStream via for-await iteration +(async () => { + const myVfs = vfs.create(); + myVfs.writeFileSync('/iter.txt', 'abc'); + const rs = myVfs.createReadStream('/iter.txt', { encoding: 'utf8' }); + const chunks = []; + for await (const chunk of rs) { + chunks.push(chunk); + } + assert.strictEqual(chunks.join(''), 'abc'); +})().then(common.mustCall()); + // start: beyond file size → empty stream { const myVfs = vfs.create(); @@ -257,6 +269,17 @@ const { pipeline } = require('stream/promises'); assert.strictEqual(myVfs.readFileSync('/out.txt', 'utf8'), 'hello world'); })().then(common.mustCall()); +// Pipeline read +(async () => { + const myVfs = vfs.create(); + myVfs.writeFileSync('/in.txt', 'hello world'); + await pipeline( + myVfs.createReadStream('/in.txt'), + myVfs.createWriteStream('/copied.txt'), + ); + assert.strictEqual(myVfs.readFileSync('/copied.txt', 'utf8'), 'hello world'); +})().then(common.mustCall()); + // Pipeline write with start position (async () => { const myVfs = vfs.create(); diff --git a/test/parallel/test-vm-global-restricted-property.js b/test/parallel/test-vm-global-restricted-property.js new file mode 100644 index 00000000000000..e57cc8dc854613 --- /dev/null +++ b/test/parallel/test-vm-global-restricted-property.js @@ -0,0 +1,20 @@ +'use strict'; +require('../common'); +const assert = require('assert'); + +const vm = require('vm'); + +const ctx = vm.createContext({}); + +// Define a non-configurable ("restricted") property on the context global. +vm.runInContext( + "Object.defineProperty(this, 'foo', { value: 1, configurable: false });", + ctx +); + +// https://tc39.es/ecma262/#sec-globaldeclarationinstantiation 3.d: +// If hasRestrictedGlobal is true, throw a SyntaxError exception. +assert.throws( + () => vm.runInContext('let foo = 2;', ctx), + vm.runInContext('SyntaxError', ctx), +); diff --git a/test/parallel/test-webstreams-queue-wraparound.js b/test/parallel/test-webstreams-queue-wraparound.js new file mode 100644 index 00000000000000..15ffc59689b981 --- /dev/null +++ b/test/parallel/test-webstreams-queue-wraparound.js @@ -0,0 +1,178 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); + +// Regression test for the ring-buffer [[queue]] backing store used by the +// WHATWG stream controllers: exercises growth, wrap-around, drain-rewind +// and shrink behavior through the public API only. + +async function testDeepDefaultQueue() { + // Queue 3000 chunks before reading anything: the backing ring must grow + // (and re-linearize) repeatedly, then fully drain (shrink on rewind). + const rs = new ReadableStream({ + start(controller) { + for (let i = 0; i < 3000; i++) + controller.enqueue(i); + controller.close(); + }, + }, { highWaterMark: Infinity }); + + const reader = rs.getReader(); + for (let i = 0; i < 3000; i++) { + const { value, done } = await reader.read(); + assert.strictEqual(done, false); + assert.strictEqual(value, i); + } + const { done } = await reader.read(); + assert.strictEqual(done, true); +} + +async function testInterleavedWraparound() { + // Interleave enqueues and reads so head/tail wrap around the ring many + // times without ever growing it, including repeated empty transitions. + let enqueued = 0; + let controller; + const rs = new ReadableStream({ + start(c) { + controller = c; + }, + }); + + const reader = rs.getReader(); + let expected = 0; + for (let round = 0; round < 500; round++) { + const burst = (round % 3) + 1; + for (let i = 0; i < burst; i++) + controller.enqueue(enqueued++); + for (let i = 0; i < burst; i++) { + const { value, done } = await reader.read(); + assert.strictEqual(done, false); + assert.strictEqual(value, expected++); + } + } + assert.strictEqual(expected, enqueued); +} + +async function testCustomSizesSurviveQueueing() { + // Fractional and zero sizes must round-trip through the queue exactly + // (desiredSize accounting depends on the stored per-chunk size). + const sizes = [0.25, 0, 1.75, 3, 0.5]; + const chunks = ['a', 'b', 'c', 'd', 'e']; + let controller; + const rs = new ReadableStream({ + start(c) { + controller = c; + }, + }, { + highWaterMark: 10, + size(chunk) { + return sizes[chunks.indexOf(chunk)]; + }, + }); + + let expectedDesired = 10; + for (let i = 0; i < chunks.length; i++) { + controller.enqueue(chunks[i]); + expectedDesired -= sizes[i]; + assert.strictEqual(controller.desiredSize, expectedDesired); + } + const reader = rs.getReader(); + for (let i = 0; i < chunks.length; i++) { + const { value } = await reader.read(); + assert.strictEqual(value, chunks[i]); + expectedDesired += sizes[i]; + assert.strictEqual(controller.desiredSize, expectedDesired); + } +} + +async function testByteQueueUnevenReads() { + // Enqueue 7-byte chunks but read through 4-byte BYOB views: the byte + // queue's head record is partially consumed in place across reads. + const total = 7 * 300; + let written = 0; + const rs = new ReadableStream({ + type: 'bytes', + pull(controller) { + if (written >= total) { + controller.close(); + return; + } + const chunk = new Uint8Array(7); + for (let i = 0; i < 7; i++) + chunk[i] = (written + i) % 251; + written += 7; + controller.enqueue(chunk); + }, + }); + + const reader = rs.getReader({ mode: 'byob' }); + let read = 0; + while (read < total) { + const { value, done } = await reader.read(new Uint8Array(4)); + if (done) break; + for (let i = 0; i < value.length; i++) { + assert.strictEqual(value[i], (read + i) % 251, + `byte ${read + i} mismatch`); + } + read += value.length; + } + assert.strictEqual(read, total); +} + +async function testDeepByteQueueBurst() { + // Fill the byte queue with 2500 records before the default reader + // drains it, forcing ring growth and the drain-to-empty rewind. + const rs = new ReadableStream({ + type: 'bytes', + start(controller) { + for (let i = 0; i < 2500; i++) + controller.enqueue(new Uint8Array([i & 0xff])); + controller.close(); + }, + }); + + const reader = rs.getReader(); + for (let i = 0; i < 2500; i++) { + const { value, done } = await reader.read(); + assert.strictEqual(done, false); + assert.strictEqual(value[0], i & 0xff); + } + const { done } = await reader.read(); + assert.strictEqual(done, true); +} + +async function testWritableQueueBackpressureDrain() { + // Buffer thousands of writes behind a slow sink, then let it drain: + // the writable controller queue grows, wraps, and empties while every + // chunk is delivered in order. + const received = []; + let release; + const gate = new Promise((resolve) => { release = resolve; }); + const ws = new WritableStream({ + async write(chunk) { + if (received.length === 0) await gate; + received.push(chunk); + }, + }, { highWaterMark: 1 }); + + const writer = ws.getWriter(); + const writes = []; + for (let i = 0; i < 2000; i++) + writes.push(writer.write(i)); + release(); + await writer.close(); + await Promise.all(writes); + assert.strictEqual(received.length, 2000); + for (let i = 0; i < 2000; i++) + assert.strictEqual(received[i], i); +} + +(async () => { + await testDeepDefaultQueue(); + await testInterleavedWraparound(); + await testCustomSizesSurviveQueueing(); + await testByteQueueUnevenReads(); + await testDeepByteQueueBurst(); + await testWritableQueueBackpressureDrain(); +})().then(common.mustCall()); diff --git a/test/parallel/test-worker-message-port-transfer-fake-js-transferable-internal.js b/test/parallel/test-worker-message-port-transfer-fake-js-transferable-internal.js index 46895871e0a179..3d33fff65d9d52 100644 --- a/test/parallel/test-worker-message-port-transfer-fake-js-transferable-internal.js +++ b/test/parallel/test-worker-message-port-transfer-fake-js-transferable-internal.js @@ -15,10 +15,14 @@ const { once } = require('events'); const kTransfer = Object.getOwnPropertySymbols(Object.getPrototypeOf(fh)) .find((symbol) => symbol.description === 'messaging_transfer_symbol'); assert.strictEqual(typeof kTransfer, 'symbol'); + // Use a module:export pair that is not a registered transferable. net.Socket + // and net.Server are real transferables now, so they would be constructed (and + // then safely reject the bogus data); a nonexistent export keeps exercising + // the "Unknown deserialize spec" allowlist rejection. fh[kTransfer] = () => { return { data: '✨', - deserializeInfo: 'net:Socket' + deserializeInfo: 'net:NotARealTransferable' }; }; @@ -28,6 +32,7 @@ const { once } = require('events'); const [ exception ] = await once(port2, 'messageerror'); - assert.strictEqual(exception.message, 'Unknown deserialize spec net:Socket'); + assert.strictEqual(exception.message, + 'Unknown deserialize spec net:NotARealTransferable'); port2.close(); })().then(common.mustCall()); diff --git a/test/parallel/test-worker-stack-overflow-stack-size.js b/test/parallel/test-worker-stack-overflow-stack-size.js index 481ff55100ac76..8aef401ab68ca5 100644 --- a/test/parallel/test-worker-stack-overflow-stack-size.js +++ b/test/parallel/test-worker-stack-overflow-stack-size.js @@ -8,6 +8,14 @@ const { Worker } = require('worker_threads'); // Verify that Workers don't care about --stack-size, as they have their own // fixed and known stack sizes. +// The depth of the stack depends not only on the stack size, but also on the size of each +// stack frame, which in turn depends on which tier the recursive function happens to be +// running at when the overflow occurs. Under load the background tier-up can land at a +// non-deterministic point in the recursion and flake the test. Keep the recursive +// function in the interpreter with %NeverOptimizeFunction() so the frame size - +// and thus the depth - is deterministic. +v8.setFlagsFromString('--allow-natives-syntax'); + async function runWorker(options = {}) { const empiricalStackDepth = new Uint32Array(new SharedArrayBuffer(4)); const worker = new Worker(` @@ -16,6 +24,7 @@ async function runWorker(options = {}) { empiricalStackDepth[0]++; f(); } + %NeverOptimizeFunction(f); f();`, { eval: true, workerData: { empiricalStackDepth }, diff --git a/test/parallel/test-zlib-truncated.js b/test/parallel/test-zlib-truncated.js index c489388a674e52..0f9ce776b1db16 100644 --- a/test/parallel/test-zlib-truncated.js +++ b/test/parallel/test-zlib-truncated.js @@ -22,6 +22,12 @@ const errMessage = /unexpected end of file/; { comp: 'gzip', decomp: 'unzip', decompSync: 'unzipSync' }, { comp: 'deflate', decomp: 'inflate', decompSync: 'inflateSync' }, { comp: 'deflateRaw', decomp: 'inflateRaw', decompSync: 'inflateRawSync' }, + { + comp: 'zstdCompress', + decomp: 'zstdDecompress', + decompSync: 'zstdDecompressSync', + partialFlush: zlib.constants.ZSTD_e_flush, + }, ].forEach(function(methods) { zlib[methods.comp](inputString, common.mustSucceed((compressed) => { const truncated = compressed.slice(0, compressed.length / 2); @@ -46,16 +52,59 @@ const errMessage = /unexpected end of file/; assert.match(err.message, errMessage); })); - const syncFlushOpt = { finishFlush: zlib.constants.Z_SYNC_FLUSH }; + const partialFlushOpt = { + finishFlush: methods.partialFlush ?? zlib.constants.Z_SYNC_FLUSH, + }; - // Sync truncated input test, finishFlush = Z_SYNC_FLUSH - const result = toUTF8(zlib[methods.decompSync](truncated, syncFlushOpt)); + // Sync truncated input test with a non-finalizing finish flush. + const result = toUTF8(zlib[methods.decompSync](truncated, partialFlushOpt)); assert.strictEqual(result, inputString.slice(0, result.length)); - // Async truncated input test, finishFlush = Z_SYNC_FLUSH - zlib[methods.decomp](truncated, syncFlushOpt, common.mustSucceed((decompressed) => { + // Async truncated input test with a non-finalizing finish flush. + zlib[methods.decomp](truncated, partialFlushOpt, common.mustSucceed((decompressed) => { const result = toUTF8(decompressed); assert.strictEqual(result, inputString.slice(0, result.length)); })); })); }); + +// A non-zero return from ZSTD_decompressStream() can also mean that the +// output buffer is full. Make sure that is drained before treating the return +// value as truncated input. +{ + const input = Buffer.alloc(zlib.constants.Z_DEFAULT_CHUNK * 2, 0x61); + const compressed = zlib.zstdCompressSync(input); + const decompressed = zlib.zstdDecompressSync(compressed, { + chunkSize: zlib.constants.Z_MIN_CHUNK, + }); + assert.deepStrictEqual(decompressed, input); +} + +// Ending a stream after a previous write completed a frame must not be +// mistaken for an empty, truncated frame. +{ + const input = Buffer.from(inputString); + const compressed = zlib.zstdCompressSync(input); + const decompressor = zlib.createZstdDecompress(); + const output = []; + + decompressor.on('data', (chunk) => output.push(chunk)); + decompressor.on('end', common.mustCall(() => { + assert.deepStrictEqual(Buffer.concat(output), input); + })); + decompressor.write(compressed, common.mustCall(() => decompressor.end())); +} + +// Conversely, ending after a previous write supplied only part of a frame +// must report that the frame is incomplete. +{ + const compressed = zlib.zstdCompressSync(inputString); + const truncated = compressed.subarray(0, compressed.length / 2); + const decompressor = zlib.createZstdDecompress(); + + decompressor.on('error', common.mustCall((error) => { + assert.match(error.message, errMessage); + })); + decompressor.write(truncated, common.mustCall(() => decompressor.end())); + decompressor.resume(); +} diff --git a/test/sea/sea.status b/test/sea/sea.status index 3e521658c46dff..9dc3a376bbc8be 100644 --- a/test/sea/sea.status +++ b/test/sea/sea.status @@ -26,11 +26,6 @@ test-build-sea*: SKIP test-single-executable-application*: PASS, FLAKY test-build-sea*: PASS, FLAKY -[$system==win32] -# https://github.com/nodejs/node/issues/49630 -test-single-executable-application-snapshot: PASS, FLAKY -test-single-executable-application-snapshot-and-code-cache: PASS, FLAKY - [$system==solaris || $system==aix] # Cannot compile LIEF on these platforms test-build-sea*: SKIP diff --git a/test/sequential/sequential.status b/test/sequential/sequential.status index 627e61911d15ca..01a021130c15ca 100644 --- a/test/sequential/sequential.status +++ b/test/sequential/sequential.status @@ -13,10 +13,6 @@ test-watch-mode-inspect: PASS, FLAKY # https://github.com/nodejs/node/issues/47409 test-http2-large-file: PASS, FLAKY -[$system==win32] -# https://github.com/nodejs/node/issues/47409 -test-http2-large-file: PASS, FLAKY - [$system==linux] # https://github.com/nodejs/node/issues/54817 test-http-server-request-timeouts-mixed: PASS, FLAKY diff --git a/test/test-runner/test-run-watch-cwd-isolation-none-argv.mjs b/test/test-runner/test-run-watch-cwd-isolation-none-argv.mjs index d3faf9e89ef4a7..1066f8fc5d6c0f 100644 --- a/test/test-runner/test-run-watch-cwd-isolation-none-argv.mjs +++ b/test/test-runner/test-run-watch-cwd-isolation-none-argv.mjs @@ -2,7 +2,7 @@ // parent process argv when spawning the watch child. import * as common from '../common/index.mjs'; import assert from 'node:assert'; -import { readFileSync, writeFileSync } from 'node:fs'; +import { writeFileSync } from 'node:fs'; import { join } from 'node:path'; import { run } from 'node:test'; import tmpdir from '../common/tmpdir.js'; @@ -11,16 +11,13 @@ import { skipIfNoWatch } from '../common/watch.js'; skipIfNoWatch(); tmpdir.refresh(); -const marker = join(tmpdir.path, 'marker'); writeFileSync(join(tmpdir.path, 'test.js'), ` const test = require('node:test'); -const { writeFileSync } = require('node:fs'); -test('test ran from cwd', () => { - writeFileSync(${JSON.stringify(marker)}, 'ran'); -}); +test('test ran from cwd', () => {}); `); +const passed = []; const controller = new AbortController(); const stream = run({ cwd: tmpdir.path, @@ -36,8 +33,9 @@ const stream = run({ }); stream.on('test:fail', common.mustNotCall()); -stream.on('test:pass', common.mustCall(1)); +stream.on('test:pass', common.mustCall((data) => passed.push(data.name), 1)); // eslint-disable-next-line no-unused-vars for await (const _ of stream); -assert.strictEqual(readFileSync(marker, 'utf8'), 'ran'); +// Validate the expected test ran by name: +assert.deepStrictEqual(passed, ['test ran from cwd']); diff --git a/test/test-runner/test-run-watch-run-duration.mjs b/test/test-runner/test-run-watch-run-duration.mjs index df4b2c73384f81..cee8c5aefc176f 100644 --- a/test/test-runner/test-run-watch-run-duration.mjs +++ b/test/test-runner/test-run-watch-run-duration.mjs @@ -3,7 +3,7 @@ // considering the number of digits in the duration_ms is 9 // the chances of having the same duration_ms are very low // but not impossible -// In case of costant failures, consider increasing the number of tests +// In case of constant failures, consider increasing the number of tests import '../common/index.mjs'; import assert from 'node:assert'; import { skipIfNoWatch, refreshForTestRunnerWatch, testRunnerWatch } from '../common/watch.js'; diff --git a/test/wpt/status/WebCryptoAPI.cjs b/test/wpt/status/WebCryptoAPI.cjs index 60111e61edf95d..4572f7e1dbcb94 100644 --- a/test/wpt/status/WebCryptoAPI.cjs +++ b/test/wpt/status/WebCryptoAPI.cjs @@ -85,7 +85,7 @@ if (process.features.openssl_is_boringssl) { ['encap_decap/encap_decap_keys.tentative.https.any.js', /ml-kem-512/i], ['generateKey/failures_ML-KEM.tentative.https.any.js', /ml-kem-512/i], ['generateKey/successes_ML-KEM.tentative.https.any.js', /ml-kem-512/i], - ['getPublicKey.tentative.https.any.js', /ml-kem-512/i], + ['getPublicKey.tentative.https.any.js', /(?:ed448|x448|ml-kem-512)/i], ['import_export/ML-KEM_importKey.tentative.https.any.js', /ml-kem-512/i], ['serialization/mlkem.tentative.https.any.js', /ml-kem-512/i], ['supports-modern.tentative.https.any.js', /ml-kem-512/i]); diff --git a/tools/actions/merge.sh b/tools/actions/merge.sh index 45947f64c2a4db..b811c18eb2c5e6 100755 --- a/tools/actions/merge.sh +++ b/tools/actions/merge.sh @@ -48,7 +48,7 @@ fi git log -1 HEAD --pretty='format:%B' | git interpret-trailers --parse --no-divider | \ grep -q -x "^PR-URL: https://github.com/$OWNER/$REPOSITORY/pull/$pr$" || { - echo "Invalid PR-URL trailer" + echo "Invalid PR-URL trailer - have you run 'git node land' to add it?" exit 1 } git log -1 HEAD^ --pretty='format:%B' | git interpret-trailers --parse --no-divider | \ diff --git a/tools/eslint-rules/func-name-matching.js b/tools/eslint-rules/func-name-matching.js new file mode 100644 index 00000000000000..a2ff661f2cc7d7 --- /dev/null +++ b/tools/eslint-rules/func-name-matching.js @@ -0,0 +1,329 @@ +// @fileoverview Rule to require function names to match the name of the variable or property to which they +// are assigned. +// @author Annie Zhang +// @author Pavel Strashkin + +'use strict'; + +//-------------------------------------------------------------------------- +// Requirements +//-------------------------------------------------------------------------- + +const astUtils = require('../eslint/node_modules/eslint/lib/rules/utils/ast-utils'); +const esutils = require('../eslint/node_modules/esutils'); + +//-------------------------------------------------------------------------- +// Helpers +//-------------------------------------------------------------------------- + +/** + * Determines if a pattern is `module.exports` or `module['exports']` + * @param {ASTNode} pattern The left side of the AssignmentExpression + * @returns {boolean} True if the pattern is `module.exports` or `module['exports']` + */ +function isModuleExports(pattern) { + if ( + pattern.type === 'MemberExpression' && + pattern.object.type === 'Identifier' && + pattern.object.name === 'module' + ) { + // module.exports + if ( + pattern.property.type === 'Identifier' && + pattern.property.name === 'exports' + ) { + return true; + } + + // module['exports'] + if ( + pattern.property.type === 'Literal' && + pattern.property.value === 'exports' + ) { + return true; + } + } + return false; +} + +/** + * Determines if a string name is a valid identifier + * @param {string} name The string to be checked + * @param {number} ecmaVersion The ECMAScript version if specified in the parserOptions config + * @returns {boolean} True if the string is a valid identifier + */ +function isIdentifier(name, ecmaVersion) { + if (ecmaVersion >= 2015) { + return esutils.keyword.isIdentifierES6(name); + } + return esutils.keyword.isIdentifierES5(name); +} + +//------------------------------------------------------------------------------ +// Rule Definition +//------------------------------------------------------------------------------ + +const alwaysOrNever = { enum: ['always', 'never'] }; +const optionsObject = { + type: 'object', + properties: { + considerPropertyDescriptor: { + type: 'boolean', + }, + includeCommonJSModuleExports: { + type: 'boolean', + }, + }, + additionalProperties: false, +}; + +/** @type {import('../types').Rule.RuleModule} */ +module.exports = { + meta: { + type: 'suggestion', + + docs: { + description: + 'Require function names to match the name of the variable or property to which they are assigned', + recommended: false, + frozen: true, + url: 'https://eslint.org/docs/latest/rules/func-name-matching', + }, + + schema: { + anyOf: [ + { + type: 'array', + additionalItems: false, + items: [alwaysOrNever, optionsObject], + }, + { + type: 'array', + additionalItems: false, + items: [optionsObject], + }, + ], + }, + + messages: { + matchProperty: + 'Function name `{{funcName}}` should match property name `{{name}}`.', + matchVariable: + 'Function name `{{funcName}}` should match variable name `{{name}}`.', + notMatchProperty: + 'Function name `{{funcName}}` should not match property name `{{name}}`.', + notMatchVariable: + 'Function name `{{funcName}}` should not match variable name `{{name}}`.', + }, + }, + + create(context) { + const options = + (typeof context.options[0] === 'object' ? + context.options[0] : context.options[1]) || {}; + const nameMatches = + typeof context.options[0] === 'string' ? + context.options[0] : 'always'; + const considerPropertyDescriptor = options.considerPropertyDescriptor; + const includeModuleExports = options.includeCommonJSModuleExports; + const ecmaVersion = context.languageOptions.ecmaVersion; + + /** + * Check whether node is a certain CallExpression. + * @param {string} objName object name + * @param {string} funcName function name + * @param {ASTNode} node The node to check + * @returns {boolean} `true` if node matches CallExpression + */ + function isPropertyCall(objName, funcName, node) { + if (!node) { + return false; + } + return ( + node.type === 'CallExpression' && + astUtils.isSpecificMemberAccess(node.callee, objName, funcName) + ); + } + + function isIdentifierCall(expectedIdentifierName, node) { + if (!node) { + return false; + } + return node.type === 'CallExpression' && + astUtils.isSpecificId(node.callee, expectedIdentifierName); + } + + /** + * Compares identifiers based on the nameMatches option + * @param {string} x the first identifier + * @param {string} y the second identifier + * @returns {boolean} whether the two identifiers should warn. + */ + function shouldWarn(x, y) { + return ( + (nameMatches === 'always' && x !== y) || + (nameMatches === 'never' && x === y) + ); + } + + /** + * Reports + * @param {ASTNode} node The node to report + * @param {string} name The variable or property name + * @param {string} funcName The function name + * @param {boolean} isProp True if the reported node is a property assignment + * @returns {void} + */ + function report(node, name, funcName, isProp) { + let messageId; + + if (nameMatches === 'always' && isProp) { + messageId = 'matchProperty'; + } else if (nameMatches === 'always') { + messageId = 'matchVariable'; + } else if (isProp) { + messageId = 'notMatchProperty'; + } else { + messageId = 'notMatchVariable'; + } + context.report({ + node, + messageId, + data: { + name, + funcName, + }, + }); + } + + /** + * Determines whether a given node is a string literal + * @param {ASTNode} node The node to check + * @returns {boolean} `true` if the node is a string literal + */ + function isStringLiteral(node) { + return node.type === 'Literal' && typeof node.value === 'string'; + } + + //-------------------------------------------------------------------------- + // Public + //-------------------------------------------------------------------------- + + return { + 'VariableDeclarator[init.type="FunctionExpression"][id.type="Identifier"]'(node) { + if ( + node.init.id && + shouldWarn(node.id.name, node.init.id.name) + ) { + report(node, node.id.name, node.init.id.name, false); + } + }, + + 'AssignmentExpression[right.type="FunctionExpression"][left.type=/^(Identifier|MemberExpression)$/]'(node) { + if ( + (node.left.computed && node.left.property.type !== 'Literal') || + (!includeModuleExports && isModuleExports(node.left)) + ) { + return; + } + + const isProp = node.left.type === 'MemberExpression'; + const name = isProp ? astUtils.getStaticPropertyName(node.left) : node.left.name; + + if ( + node.right.id && + name && + isIdentifier(name) && + shouldWarn(name, node.right.id.name) + ) { + report(node, name, node.right.id.name, isProp); + } + }, + + ':matches(Property,PropertyDefinition)[value.type="FunctionExpression"][value.id]'(node) { + + if (node.key.type === 'Identifier' && !node.computed) { + const functionName = node.value.id.name; + let propertyName = node.key.name; + + if ( + considerPropertyDescriptor && + propertyName === 'value' && + node.parent.type === 'ObjectExpression' + ) { + if ( + isPropertyCall( + 'Object', + 'defineProperty', + node.parent.parent, + ) || + isPropertyCall( + 'Reflect', + 'defineProperty', + node.parent.parent, + ) || + isIdentifierCall('ObjectDefineProperty', node.parent.parent) || + isIdentifierCall('ReflectDefineProperty', node.parent.parent) + ) { + const property = node.parent.parent.arguments[1]; + + if ( + isStringLiteral(property) && + shouldWarn(property.value, functionName) + ) { + report( + node, + property.value, + functionName, + true, + ); + } + } else if ( + isPropertyCall( + 'Object', + 'defineProperties', + node.parent.parent.parent.parent, + ) || + isIdentifierCall('ObjectDefineProperties', node.parent.parent.parent.parent) + ) { + propertyName = node.parent.parent.key.name; + if ( + !node.parent.parent.computed && + shouldWarn(propertyName, functionName) + ) { + report(node, propertyName, functionName, true); + } + } else if ( + isPropertyCall( + 'Object', + 'create', + node.parent.parent.parent.parent, + ) + ) { + propertyName = node.parent.parent.key.name; + if ( + !node.parent.parent.computed && + shouldWarn(propertyName, functionName) + ) { + report(node, propertyName, functionName, true); + } + } else if (shouldWarn(propertyName, functionName)) { + report(node, propertyName, functionName, true); + } + } else if (shouldWarn(propertyName, functionName)) { + report(node, propertyName, functionName, true); + } + return; + } + + if ( + isStringLiteral(node.key) && + isIdentifier(node.key.value, ecmaVersion) && + shouldWarn(node.key.value, node.value.id.name) + ) { + report(node, node.key.value, node.value.id.name, true); + } + }, + }; + }, +}; diff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp index 193b8aebdd28f1..7953fa44b432d9 100644 --- a/tools/v8_gypfiles/v8.gyp +++ b/tools/v8_gypfiles/v8.gyp @@ -342,12 +342,12 @@ '<(V8_ROOT)/src/builtins/arm64/builtins-arm64.cc', ], }], - ['v8_target_arch=="riscv64" or v8_target_arch=="riscv64"', { + ['v8_target_arch=="riscv64"', { 'sources': [ '<(V8_ROOT)/src/builtins/riscv/builtins-riscv.cc', ], }], - ['v8_target_arch=="loong64" or v8_target_arch=="loong64"', { + ['v8_target_arch=="loong64"', { 'sources': [ '<(V8_ROOT)/src/builtins/loong64/builtins-loong64.cc', ],