Skip to content

Comments

X509: Multiple OCSP Responders#5231

Open
atreiber94 wants to merge 4 commits intorandombit:masterfrom
Rohde-Schwarz:feature/multiple_ocsp_responders
Open

X509: Multiple OCSP Responders#5231
atreiber94 wants to merge 4 commits intorandombit:masterfrom
Rohde-Schwarz:feature/multiple_ocsp_responders

Conversation

@atreiber94
Copy link
Collaborator

This addresses one of the limitations hindering integration of Botan's X509 parsing to strongSwan (see #5219), namely multiple OCSP responder URIs.

Before, ocsp_responder() of the AuthorityInformationAccess extension or of X509_Certificate would return a single URI, even if the certificate parsed contains multiple URIs as OCSP responders.

The single responder interfaces have been deprecated (e.g. it is not clear what "a OCSP responder" means in the now-deprecated methods - in my tests, it would return the last URI). The legacy interface is kept by returning the first URI (or the empty string if there are no URIs).

PR Dependencies

This is based on #5188 so I could test the FFI integration (also directly against the strongSwan X509 test suite).

OCSP check_online

The changes here only expose multiple OCSP responder URIs to certificate parsing as well as the constructors/accessors of the AuthorityInformationAccess extension and X509_Certificate. I did not include this into the OCSP features like OCSP::check_online since this code does not appear to be well tested (we should rather discuss what to do with this code going forward).

@atreiber94 atreiber94 force-pushed the feature/multiple_ocsp_responders branch from ad78ab4 to 80da263 Compare January 12, 2026 15:05
@atreiber94 atreiber94 self-assigned this Jan 12, 2026
@atreiber94 atreiber94 force-pushed the feature/multiple_ocsp_responders branch from 80da263 to 1f55d01 Compare January 13, 2026 10:23
@atreiber94
Copy link
Collaborator Author

Re-based onto the latest changes of #5188 which should hopefully turn the CI green.

@atreiber94 atreiber94 force-pushed the feature/multiple_ocsp_responders branch from 1f55d01 to d4f21e0 Compare January 13, 2026 10:57
@coveralls
Copy link

coveralls commented Jan 13, 2026

Coverage Status

coverage: 90.472% (+0.02%) from 90.455%
when pulling 40273b6 on Rohde-Schwarz:feature/multiple_ocsp_responders
into 8c072d7 on randombit:master.

@atreiber94 atreiber94 force-pushed the feature/multiple_ocsp_responders branch from d4f21e0 to 40273b6 Compare January 13, 2026 12:58
Namely:
  * botan_x509_cert_view_binary_values
  * botan_x509_cert_view_string_values
  * botan_x509_crl_view_binary_values
  * botan_x509_crl_view_string_values

This allows fetching standard information from X.509 objects
such as the serial number of both a certificate and a CRL but
also more specific information like OCSP responder URLs.

Some getter types may have more than one value. For such cases,
the getters have an index parameter to enumerate all elements.
These functions are currently implemented by trivially counting the
number of elements their associated enumerator functions are actually
producing. Given that most values are anyway viewed straight from the
C++ objects' memory, the overhead should be negligible. The main
advantage of this approach is its minimal maintenance burden.
@randombit
Copy link
Owner

Needs another rebase

Before, only a single OCSP responder URI was
parsed and exposed via AIA extension and
Botan::X509_Certificate. These now handle multiple
OCSP responder URIs as per RFC 5280.

Add corresponding test cases.

Deprecate the single OCSP responder constructors
and accessors.

Note that the support for multiple OCSP responders
is not propagated to `Botan::OCSP` methods yet.
@reneme reneme force-pushed the feature/multiple_ocsp_responders branch from 40273b6 to 59780a1 Compare January 22, 2026 07:54
@reneme
Copy link
Collaborator

reneme commented Jan 22, 2026

Rebased again. We'll rebase once more once #5188 is in, because this still stacks onto it.

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.

4 participants