The OpenSSL new release / HEAD updates removed the following comment-out 
statement
in PKCS7_verify() routine, which will return error for one call if both 
embedded-content and
detached data were provided.

#if 0       --> Removed
    /*
     * NB: this test commented out because some versions of Netscape
     * illegally include zero length content when signing data.
     */

    /* Check for data and content: two sets of data */
    if (!PKCS7_get_detached(p7) && indata) {
        PKCS7err(PKCS7_F_PKCS7_VERIFY, PKCS7_R_CONTENT_AND_DATA_PRESENT);
        return 0;
    }
#endif

This update will break some existing Authenticode verification solutions which 
leveraged the
Pkcs7_verify() interface, such as UEFI secure boot, and other open-source 
utilities (e.g. osslsigncode).
The root cause is the Authenticode is one extended PKCS7 format, and its 
verification process
is different (the embedded data is one extended structure 
(SpcIndirectDataContent), and will
not be used directly for signature verification) . The old comment-out in 
PKCS7_verify just helped
to support the Authenticode verification with embedded p7data and user-supplied 
inData
(some extra checking will be handled outside).

It's better to introduce one new macro or new PKCS7 flag to re-enable this 
capability. E.g.

#if !defined(OPENSSL_ALLOW_PKCS7_CONTENT_AND_DATA_PRESENT)
....
Or
If (!(flags & PKCS7_NO_CHECK_BOTH_DATASET))
...

If two data sets (embedded and detached data) were present, the input data will 
be the default
Input for validation (just as the current logic.), so there should be no risk.


Best Regards & Thanks,
LONG, Qin

_______________________________________________
openssl-bugs-mod mailing list
[email protected]
https://mta.openssl.org/mailman/listinfo/openssl-bugs-mod
_______________________________________________
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev

Reply via email to