Repository navigation
TLS: use rsa_pss_pss_* with id-RSASSA-PSS keys - #12004
jackctj117 wants to merge 1 commit into
Conversation
|
There was a problem hiding this comment.
🟡 Changes recommended
RSA-PSS handling can bypass key restrictions and ignores MGF constraints, while new tests fail on supported OpenSSL versions and hash configurations.
7 open issues
Handle older OpenSSL RSA-PSS summary formats · New Keep checking RSA-PSS restrictions after selecting a candidate · New Preserve and enforce the key's MGF restriction · New Gate test cases and fixtures on enabled hash algorithms · New Treat PSS saltLength as a minimum, not an exact value · New Guard SHA-384 cases when WOLFSSL_SHA384 is disabled · New Use the matching 3072-bit root for client verification · New
What changed in this PR
This PR addresses #11988 by aligning wolfSSL’s RSA-PSS signature selection and validation with certificate key types across TLS 1.2 and 1.3, including shared DTLS paths.
Changes:
- Distinguishes
rsa_pss_rsae_*fromrsa_pss_pss_*during negotiation, encoding, and verification. - Carries certificate PSS hash and salt parameters into TLS state for compatibility checks.
- Adds API regression tests, expands OpenSSL interoperability cases, and registers
rsapss.testwithmake check.
| File | Description |
|---|---|
| wolfssl/wolfcrypt/asn.h | Adds decoded PSS key parameter fields. |
| wolfssl/internal.h | Adds TLS PSS state and a peer-validation declaration. |
| wolfcrypt/src/asn.c | Retains parsed PSS hash and salt parameters. |
| tests/api.c | Adds RSA-PSS negotiation and mutual-authentication tests. |
| src/tls13.c | Updates TLS 1.3 scheme encoding and peer validation. |
| src/ssl_load.c | Copies certificate PSS parameters into TLS state. |
| src/internal.c | Updates scheme selection, signing, and verification. |
| scripts/rsapss.test | Expands TLS/DTLS interoperability and rejection cases. |
| scripts/include.am | Registers RSA-PSS interoperability tests. |
Review effort: Balanced
|
@claude review |
wolfSSL-Fenrir-bot
left a comment
There was a problem hiding this comment.
Fenrir Automated Review — PR #12004
Scan targets checked: wolfcrypt-src, wolfcrypt-bugs, wolfssl-src, wolfssl-bugs
Not reviewed (no scan target covers them): scripts/include.am, scripts/rsapss.test
Coverage: 6 of 7 in-scope changed file(s) opened by the reviewer; not opened: wolfssl/wolfcrypt/asn.h
Findings: 3
3 finding(s) posted as inline comments (see file-level comments below)
This review was generated automatically by Fenrir. Reported findings require changes before merge.
Review tier: Max
8ccebf8 to
5286e64
Compare
|
Jenkins retest please. . |
e7f4710 to
2189026
Compare
|
Jenkins retest this please |
Pick, label and check RSA-PSS signature schemes by the key's OID in TLS 1.2 and 1.3, hold every candidate to the key's hash, MGF and salt length (RFC 4055 3.3), carry those parameters through every key install path, accept rsa_pss_pss_* in a TLS 1.2 CertificateVerify, and pass over RSA key transport suites and a ClientHello without signature_algorithms when the key only signs (RFC 4055 1.2). Wire rsapss.test into make check, reading the scheme off the wire from OpenSSL 1.1.1 and 3, and add a unit test. Fixes wolfSSL#11988
2189026 to
ea0b6bf
Compare
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved TLS 1.2 RSA-PSS client-authentication flaws can select unoffered or key-incompatible signature schemes, while missing SHA-256 guards cause new tests to fail in supported configurations.
1 open issue
7 resolved since last review
Preserve and enforce the key's MGF restriction Keep checking RSA-PSS restrictions after selecting a candidate Handle older OpenSSL RSA-PSS summary formats Use the matching 3072-bit root for client verification Guard SHA-384 cases when WOLFSSL_SHA384 is disabled Treat PSS saltLength as a minimum, not an exact value Gate test cases and fixtures on enabled hash algorithms
Review effort: Balanced
| SVR_TLS12=no | ||
| SVR_DTLS12=no | ||
| fi | ||
| HAVE_SHA384=no |
wolfSSL-Fenrir-bot
left a comment
There was a problem hiding this comment.
Fenrir Automated Review — PR #12004
Scan targets checked: wolfcrypt-src, wolfcrypt-bugs, wolfssl-src, wolfssl-bugs
Not reviewed (no scan target covers them): scripts/include.am, scripts/rsapss.test
Coverage: 5 of 8 in-scope changed file(s) opened by the reviewer; not opened: src/ssl.c, tests/api.c, wolfssl/wolfcrypt/asn.h
Fenrir result: Approved ✅
No new issues found in the changed files.
Advisory only — this automated result does not count as a GitHub approval.
Review tier: Lite
Fenrir's latest completed scan found no issues; clearing the prior automated change request.


Pick, label and check RSA-PSS signature schemes by the key's OID in TLS 1.2 and 1.3, honour the key's PSS parameters, and accept rsa_pss_pss_* in a TLS 1.2 CertificateVerify. Wire rsapss.test into make check and add a unit test.
Fixes #11988
Description
Please describe the scope of the fix or feature addition.
Fixes zd#
Testing
How did you test?
Checklist