[openssl/openssl] 5af9db: Implement partial verification for CMS with multip...
'Jan Lübbe' via openssl-commits <[email protected]>
| Newsgroups | gmane.comp.encryption.openssl.cvs |
|---|---|
| Message-ID | <openssl/openssl/push/refs/heads/master/[email protected]> |
Branch: refs/heads/master
Home: https://github.com/openssl/openssl
Commit: 5af9dbf12832f49800054c071a7052be20b36582
https://github.com/openssl/openssl/commit/5af9dbf12832f49800054c071a7052be20b36582
Author: Jan Luebbe <[email protected]>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M apps/cms.c
M crypto/cms/cms_local.h
M crypto/cms/cms_smime.c
M doc/man1/openssl-cms.pod.in
M doc/man3/CMS_verify.pod
M include/openssl/cms.h.in
M test/recipes/80-test_cms.t
Log Message:
-----------
Implement partial verification for CMS with multiple signatures
Currently, OpenSSL supports creating CMS SignedData structures with
multiple signers using CMS_sign() with the CMS_PARTIAL flag combined
with CMS_add1_signer(). This can be done for a new SignedData or by
adding signers to an existing structure. In addition to the C API, this
is supported via openssl cms -sign (using multiple -signer options) and
openssl cms -resign.
The corresponding CMS_verify() function and openssl cms -verify command
check the signatures sequentially and abort with an error on the first
problem. They support some flags (CMS_NO_SIGNER_CERT_VERIFY,
CMS_NO_ATTR_VERIFY, CMS_NO_CONTENT_VERIFY), which disable some aspects
of the verification, but do not allow continuing after a failed
signature verification.
The main use cases for multiple signatures on one message are:
* Simplify CA certificate roll-over by signing messages with keys in
both the old and new hierarchies during a transition period.
Recipients would have either the old or new CA installed (or
temporarily even both). In all cases, we'd like to accept any message
which as at least one signature that can be verified.
* Support user-implemented verification policies which require
signatures from multiple specific signers.
* Support user-implemented verification policies which require a minimum
number of signatures from different signers under under a trusted CA.
This is made possible by adding a CMS_VERIFY_PARTIAL flag to CMS_verify()
and exposing it through a new -verify_partial option to 'openssl cms
-verify'.
If this flag is set, the call is successful even if some of the
individual signatures cannot be verified (perhaps due to CAs missing
from the local store or expired certificates). The application would
then call CMS_get0_signers() and check if the set of valid signatures
satisfies its policy.
Fixes #3028
Fixes #26382
Reviewed-by: Dmitry Belyavskiy <[email protected]>
Reviewed-by: David von Oheimb <[email protected]>
Merge-date: Thu Aug 27 13:14:13 2026
Merged-from: https://github.com/openssl/openssl/pull/27604
Commit: b8631f9bbcdf39641ff2443e26c2fcbe54958950
https://github.com/openssl/openssl/commit/b8631f9bbcdf39641ff2443e26c2fcbe54958950
Author: Jan Luebbe <[email protected]>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M apps/cms.c
M crypto/cms/cms_sd.c
M doc/man3/CMS_get0_SignerInfos.pod
M include/openssl/cms.h.in
M util/libcrypto.num
Log Message:
-----------
Implement access to CMS verification results per signer
When verifying CMS messages with multiple signatures using
CMS_VERIFY_PARTIAL to implement additional custom requirements
regarding signatures from which certificates are required and/or
acceptable, information on which signature was considered invalid and
why by CMS_verify is useful for reporting or debugging.
Implement this by adding CMS_SignerInfo-based access to certificates
(CMS_SignerInfo_get0_signer_cert) and verification results
(CMS_SignerInfo_get_verification_result). Also use these new functions
to show more details when using 'openssl cms -verify' with
'-verify_partial'.
Reviewed-by: Dmitry Belyavskiy <[email protected]>
Reviewed-by: David von Oheimb <[email protected]>
Merge-date: Thu Aug 27 13:14:14 2026
Merged-from: https://github.com/openssl/openssl/pull/27604
Commit: c50451e4b09e4226ab5804503dcac4679fa8b077
https://github.com/openssl/openssl/commit/c50451e4b09e4226ab5804503dcac4679fa8b077
Author: Jan Luebbe <[email protected]>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M CHANGES.md
Log Message:
-----------
Update CHANGES.md for CMS_VERIFY_PARTIAL
Reviewed-by: Dmitry Belyavskiy <[email protected]>
Reviewed-by: David von Oheimb <[email protected]>
Merge-date: Thu Aug 27 13:14:15 2026
Merged-from: https://github.com/openssl/openssl/pull/27604
Compare: https://github.com/openssl/openssl/compare/1b543af5e4fb...c50451e4b09e
To unsubscribe from these emails, change your notification settings at https://github.com/openssl/openssl/settings/notifications
--
You received this message because you are subscribed to the Google Groups "openssl-commits" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion visit https://groups.google.com/a/openssl.org/d/msgid/openssl-commits/openssl/openssl/push/refs/heads/master/1b543a-c50451%40github.com.