Re: Fetch digests explicitly for cryptohash with OpenSSL 3.0 and later

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: Mark Atwood <mark(at)reviewcommit(dot)com>
Cc: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Fetch digests explicitly for cryptohash with OpenSSL 3.0 and later
Date: 2026-08-07 07:50:59
Message-ID: anWOYx_4BFPqu3gE@paquier.xyz
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, Aug 05, 2026 at 01:09:13PM -0700, Mark Atwood wrote:
> cryptohash_openssl.c initializes the EVP_MD_CTX with the implicit static digest
> objects (EVP_sha256() and friends), which do not deterministically dispatch
> through a loaded provider. The patch fetches the digest by name, caches it in
> the context, and frees it on teardown, so hashing is served by the active
> provider. The digest type is fixed for the lifetime of the context, so the
> fetch is done once. The implicit path is kept for older OpenSSL and for
> LibreSSL, guarded by OPENSSL_VERSION_NUMBER >= 0x30000000L.
>
> The fetch uses the default library context and a NULL property query, so no
> dependency is added and no particular provider is required.

I was looking at this patch, and the switch to EVP_MD_fetch() makes
sense, based on this:
https://docs.openssl.org/3.0/man7/migration_guide/#programming

With this quote:
"If a library context is needed then all EVP_* digest functions that
return a const EVP_MD * such as EVP_sha256() should be replaced with a
call to EVP_MD_fetch(3). See "ALGORITHM FETCHING" in crypto(7)."

The code your agent has generated (because it's AI-generated) is not
really in line with the usual PostgreSQL format. The doc addition
does not bring much: the stance about MD5 and FIPS was already true:
we blocked MD5 computations in cryptohash_openssl.c before this
change, it's still the case after this change.

I have tested the attached with 3.5 (version installed on my system),
and some custom 3.0 and 1.1.1 (not interesting, legacy API) builds,
and that seems to work fine.
--
Michael

Attachment Content-Type Size
v2-0001-Fetch-digests-explicitly-for-cryptohash-with-Open.patch text/plain 2.7 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Previous Message Nazir Bilal Yavuz 2026-08-07 07:45:54 Re: Credits For v19