Skip to content

Conversation

@Guiliano99
Copy link
Contributor

Add the latest version of OpenSSL to the Dockerfile to enable PQC certificate chain validation with OpenSSL.

Note

Description

  • Updated Dockerfile.base to include the required new dependencies.
  • Still relies on the OS-provided pre-compiled OpenSSL library and the same applies for the cryptography library.
  • Fixed Makefile examples to properly work with the Docker container and correct file references.

Motivation and Context

  • Improve algorithm validation capabilities.
  • Prepare the environment for adding Client tests in future PRs.

How Has This Been Tested?

  • Verified through the CI pipeline.

Guiliano99 and others added 25 commits June 13, 2025 08:28
- For users, which use a name which has uppercase name.
- To use the lower case name, for the docker container.
- Check an ML-KEM, ML-DSA and SLH-DSA certificate chain, if the OpenSSL version is >= 3.5
- To check whether the pipeline works or not.
- Updated unit tests.
- Added new check for alg is SLH-DSA or ML-DSA.
- Add debugging print_extensions.
- Move cannot_be_validated_with_openssl.
- Update check for ML-KEM.
- Add error message.
- Fix elif.
- Add unit tests.
- Add TODO for maybe use oqsprovider.
- Renamed.
@Guiliano99 Guiliano99 marked this pull request as ready for review August 22, 2025 08:37
@Guiliano99 Guiliano99 requested a review from ralienpp as a code owner August 22, 2025 08:37
# Conflicts:
#	.github/workflows/check_quality.yml
#	REUSE.toml
#	client_tests/README.md
#	client_tests/cmp_client.py
#	client_tests/cmp_tests_jinja.robot
#	requirements.txt
if s1 != s2:
print("✗ secret mismatch")
return False
if len(s1) not in (32,): # ML-KEM typically yields 32-byte secrets
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not not len(s1) == 32?

Copy link
Collaborator

@ralienpp ralienpp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR changes too many things, not just the logic related to what it takes to verify a chain with OpenSSL (e.g., RF runability check, changes in formatting here and there). It is difficult to review the delta, because it is cluttered by unnecessary changes.

  • Which version of OpenSSL is actually needed for the feature you need?
  • Debian's latest version has OpenSSL 3.5, would that work?
  • The PR must be broken down into smaller, independent chunks.

@Guiliano99
Copy link
Contributor Author

Guiliano99 commented Nov 11, 2025

Thanks for the feedback. You’re right about the PR does too much. I noticed the pipeline was failing because of leftover issues from earlier changes, and I thought it would be simpler to fix everything in one go. I didn’t consider how much harder that would make reviewing the actual logic changes. I’ll avoid that in the future and keep PRs strictly focused on a single feature or fix, with clear notes about anything that’s intentionally left out or deferred to a follow-up PR.

Regarding OpenSSL: my intention was to use a custom version so we could adopt newer features sooner. For example, OpenSSL 3.7 might eventually include support for verifying HSS signatures. That said, for this PR specifically, you’re correct that OpenSSL 3.5 should be sufficient. I’ll double-check what the GitHub pipeline is using and switch to the appropriate Debian version. So should I than add this custom build in a new PR or is this not relevant?

I’ll fix this PR into by cherry-pick only the relevant commits so the review is easier.

@Guiliano99 Guiliano99 marked this pull request as draft November 11, 2025 18:13
@ralienpp
Copy link
Collaborator

ralienpp commented Nov 11, 2025

and switch to the appropriate Debian version

At the moment the CI pipeline uses Ubuntu, maybe keeping it at that (instead of switching to Debian) would be easier; recent versions of Ubuntu come with OpenSSL 3.5

@Guiliano99
Copy link
Contributor Author

Guiliano99 commented Nov 12, 2025

Yes I did it at #31. But should I add the custom build in a new (or this) PR or drop 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.

2 participants