[PATCH] cipher: fix dhgex for non-GCM ciphers for OpenSSL 3.0

Darren Tucker dtucker at dtucker.net
Fri Dec 4 13:36:48 AEDT 2020

On Fri, 4 Dec 2020 at 01:59, Marc Kleine-Budde <mkl at pengutronix.de> wrote:

Thanks for the investigation.

> The issue is that openssh needs the "current" IV state (which the
> now-deprecated EVP_CIPHER_CTX_iv() used to return), but it's calling the
> openssl function to obtain it.

It's not that simple.

In 2018, LibreSSL added EVP_CIPHER_CTX_get_iv (
https://github.com/libressl-portable/openbsd/commit/db321d7792) which
returns the current IV, and OpenSSH has been using it ever since.

In 2020, OpenSSL added a function of the same name (
https://github.com/openssl/openssl/commit/79f4417ed94) which behaves
differently.  Maybe OpenSSL could change it before 3.0 instead of shipping
an incompatible API?  EVP_CIPHER_CTX_get_original_iv would be consistent
with the function they deprecated. ie

EVP_CIPHER_CTX_get_iv -> EVP_CIPHER_CTX_get_original_iv
EVP_CIPHER_CTX_get_iv_state -> EVP_CIPHER_CTX_get_iv

Darren Tucker (dtucker at dtucker.net)
GPG key 11EAA6FA / A86E 3E07 5B19 5880 E860  37F4 9357 ECEF 11EA A6FA (new)
    Good judgement comes with experience. Unfortunately, the experience
usually comes from bad judgement.

More information about the openssh-unix-dev mailing list