Repository navigation
Conversation
Update the rdoc document for the following generated HTML file. * html/OpenSSL/SSL/SSLContext.html Assisted-by: Claude:Opus 4.6
Add post-quantum cryptography documentation covering ML-KEM for key exchange and ML-DSA for signature. Update the rdoc document for the following generated HTML file. * html/OpenSSL.html Assisted-by: Claude:Opus 4.6
| * If the server certificate is invalid or <tt>context.ca_file</tt> is not set | ||
| * when verifying peers an OpenSSL::SSL::SSLError will be raised. | ||
| * | ||
| * == Post-Quantum Cryptography |
There was a problem hiding this comment.
Should this section be one level lower, since it would be part of == \SSL and TLS Connections?
| * context.groups = 'X25519MLKEM768' | ||
| * context.add_certificate(cert, key) | ||
| * # Set the allowed signature algorithms with ML-DSA-65 | ||
| * context.sigalgs = 'mldsa65' |
There was a problem hiding this comment.
I feel this SSLContext#sigalgs= on the server context is slightly confusing here, since this is practically no-op. This code is already choosing mldsa65 by setting add_certificate only with an ML-DSA-65 certificate.
| * ssl_connection = OpenSSL::SSL::SSLSocket.new(tcp_connection, context) | ||
| * ssl_connection.accept | ||
| * | ||
| * puts ssl_connection.group # => "X25519MLKEM768" |
There was a problem hiding this comment.
Nit: I think puts should be p, so that it matches the expected output in the comments.
| * certificates, with both ML-KEM (PQC) and X25519 (classical) key exchange | ||
| * groups, so that it can serve both PQC-capable and classical clients. | ||
| * \OpenSSL automatically selects the appropriate certificate based on the | ||
| * client's capabilities. |
There was a problem hiding this comment.
The section title says multiple certificates, but the examples below use multiple certificates and also multiple key exchange groups. I think this is slightly confusing because these are orthogonal settings.
I wonder if these examples could be reorganized to separate the two aspects of PQC in TLS as described on L1020: key exchange and authentication.
This PR fixes #1118.
The PR has 2 commits. The 1st commit enhances manual documents in html/OpenSSL/SSL/SSLContext.html, that are indirectly related to PQC, but not the PQC contents. The 2nd commit is the main commit adding the PQC documents in html/OpenSSL.html.
For the 2nd commit adds Post-Quantum Cryptography section with the 2 sub sections PQC Server and Client and Multiple Certificates (PQC and Classical) Server and Clients. I still believe the 2 cases are important. The case only allowing PQC-capable key exchange ML-KEM and signature ML-DSA, and the case allowing PQC-capable and classical key exchanges and signatures.
For the content, I referred to SSL and TLS Connections section and aligned with it in html/OpenSSL/SSL/SSLContext.html for the example codes such as the variable names and
loop do ... end. I tested all of added example codes by running Ruby scripts on my local. I also confirmed the generated rdoc documents.If you would prefer a simpler document, and we have to remove one of the 2 sections, I would like to remove PQC Server and Client section, keeping Multiple Certificates (PQC and Classical) Server and Clients section.
Commit messages
The 1st commit
The 2nd commit
What do you think?