krb5 commit: Update error checking for OpenSSL CMS_verify

[email protected]
Newsgroups gmane.comp.encryption.kerberos.cvs
Message-ID <[email protected]>
https://github.com/krb5/krb5/commit/70f61d417261ca17efe3d60d180033bea2da60b0
commit 70f61d417261ca17efe3d60d180033bea2da60b0
Author: Julien Rische <[email protected]>
Date:   Thu Jul 28 15:20:12 2022 +0200

    Update error checking for OpenSSL CMS_verify
    
    The code for CMS data verification was initially written for OpenSSL's
    PKCS7_verify() function.  It now uses CMS_verify(), but error handling
    is still done using PKCS7_verify() error identifiers.  Update the
    recognized error codes so that the KDC generates
    KDC_ERR_DIGEST_IN_SIGNED_DATA_NOT_ACCEPTED errors when appropriate.
    Use ERR_peek_last_error() to observe the error generated closest to
    the API surface.
    
    [[email protected]: edited commit message]
    
    ticket: 9069 (new)
    tags: pullup
    target_version: 1.20-next

 src/plugins/preauth/pkinit/pkinit_crypto_openssl.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c b/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c
index 5c7461170..461135940 100644
--- a/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c
+++ b/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c
@@ -2061,12 +2061,15 @@ cms_signeddata_verify(krb5_context context,
             goto cleanup;
         out = BIO_new(BIO_s_mem());
         if (CMS_verify(cms, NULL, store, NULL, out, flags) == 0) {
-            unsigned long err = ERR_peek_error();
+            unsigned long err = ERR_peek_last_error();
             switch(ERR_GET_REASON(err)) {
-            case PKCS7_R_DIGEST_FAILURE:
+            case RSA_R_DIGEST_NOT_ALLOWED:
+            case CMS_R_UNKNOWN_DIGEST_ALGORITHM:
+            case CMS_R_NO_MATCHING_DIGEST:
+            case CMS_R_NO_MATCHING_SIGNATURE:
                 retval = KRB5KDC_ERR_DIGEST_IN_SIGNED_DATA_NOT_ACCEPTED;
                 break;
-            case PKCS7_R_SIGNATURE_FAILURE:
+            case CMS_R_VERIFICATION_FAILURE:
             default:
                 retval = KRB5KDC_ERR_INVALID_SIG;
             }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.