OpenSSL 1.1.1 changed the semantics of the password callback return value
In c82c3462267afdbbaa5, openssl changed its interpretation of getting a "0" result from a PEM password callback. Previously, this indicated an error, and the documentation said:
The callback must return the number of characters in the passphrase or 0 if an error occurred.
But now, 0 means an empty passphrase, and -1 means that an error occurred.
To avoid strange bugs and compatibility issues, we should have our pem_no_password_cb function return -1 instead. (-1 was always a supported return value, even if it isn't documented.)