Skip to content

X509: honour explicit reject-all in COMPAT trust - #33224

Draft
okk385 wants to merge 1 commit into
openssl:masterfrom
okk385:compat-honour-explicit-reject
Draft

okk385 wants to merge 1 commit into
openssl:masterfrom
okk385:compat-honour-explicit-reject

Conversation

@okk385

@okk385 okk385 commented Oct 15, 2026

Copy link
Copy Markdown

Honour auxiliary anyExtendedKeyUsage rejection in direct X509_TRUST_COMPAT checks before the existing self-signed fallback. This fixes crlsign and ocsphelper accepting explicitly rejected anchors, including partial-chain anchors. Fixes #32365.

The production change adds 15 lines. The non-NULL trust guard preserves obj_trust() fallback flag semantics. Purpose-specific rejections, positive auxiliary trust and purpose-to-trust initialization remain unchanged. This does not make every trust mode universally honour reject-all. The shared callback also affects CRMF cmKGA; no dedicated cmKGA fixture was added.

Regression coverage includes 23 new CLI assertions, 16 direct COMPAT combinations with additional NO_SS_COMPAT checks, raw-OID fallback controls, and 48 verification combinations across auxiliary states, both purposes and three initialization paths.

Validation on Linux x86_64 with the default shared configuration and --strict-warnings: final regressions fail as expected without the fix; the strict build and full configured suite pass (407 recipes, 3,729 recipe tests, 29 normal skip lines). clang-format 21.1.6, git diff --check, clean-base patch application and source equality checks pass. Documentation checks pass; the out-of-tree environment scan uses its filesystem fallback.

These are harness/recipe counts, not every nested assertion. Sanitizers, FIPS-enabled builds, other platforms, cross-version builds and upstream CI remain untested.

Prepared with OpenAI Codex assistance; the exact model identifier is unavailable and disclosed as unknown. I have completed human review of the patch and signed the ICLA. I take responsibility for this contribution.

Reject auxiliary anyExtendedKeyUsage rejection in direct COMPAT trust
before applying the existing self-signed fallback. Preserve obj_trust()
fallback flag semantics and purpose-specific auxiliary behavior.

Add CLI and API regression coverage for crlsign and ocsphelper,
partial-chain anchors, auxiliary states and initialization paths.

The exact model identifier used by the AI assistant is unavailable.

Fixes: openssl#32365
Assisted-by: OpenAI Codex:unknown
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[robustness] -purpose crlsign|ocsphelper infers aux-blind X509_TRUST_COMPAT (x509_vfy.c:2621) → anchor REJECT blacklist ignored

1 participant