Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
None
-
None
Description
On a Python linked against a FIPS-enforcing OpenSSL, hashlib.sha1 raises. The client always names mysql_native_password in its handshake response, whatever plugin the account uses, so the first packet raises before the server can send the auth-switch request that selects the account's real plugin. No account can connect, not even one on the FIPS-compliant parsec plugin.
Fix:
Detect FIPS mode by probing SHA-1 availability.
Under FIPS, the native-password scramble becomes an all-zero placeholder instead of raising, so the handshake completes and the switch to parsec happens.
Refuse non-FIPS-compliant plugins up front via a new fips_compliant() on the plugin factory (parsec and caching_sha2_password compliant, mysql_native_password not), and annotate the server's "access denied" with the real cause.