Re: [PATCH] Clarify that ssl_groups is for any key exchange groups

Started by Si, Evan5 months ago7 messageshackers
Beta feature

Hackorum builds and tests every patch posted to the lists, not only commitfest submissions. This is Hackorum's own CI rather than the PostgreSQL project's, and it is still under testing - please report anything that looks wrong.

appliessuccessCI history

You can run a PostgreSQL built from this patch straight from Docker, with no checkout and no build:

docker run --rm -p 5432:5432 ghcr.io/hackorum-dev/postgres-patch:t139835
psql -h localhost -U postgres

Built from patchset v6 (message #6), October 22, 2026 at 09:29 AM.

Every patchset is also pushed to a branch of our PostgreSQL fork, so you can check out the same tree CI built. Without a PostgreSQL checkout:

git clone --branch t139835_6 https://github.com/hackorum-dev/postgres.git

In a checkout you already have, add the fork once:

git remote add hackorum https://github.com/hackorum-dev/postgres.git

then, for this patchset and every later one:

git fetch hackorum t139835_6 && git checkout t139835_6

Patchset v6 (message #6) is on t139835_6

Jump to latest
#1Si, Evan
evsi@amazon.com

On 6/2/26, 11:32 PM, "Ewan Young" <kdbase.hack@gmail.com <mailto:kdbase.hack@gmail.com>> wrote:

+1 for the idea. (I'm fairly new here, so please take my comments with
a grain of salt.)

Thanks for the review!

1. The comment just above the renamed call in be_tls_init() still
says "set up ephemeral DH and ECDH keys". Maybe it should be
updated to match?

Right, that makes sense. I did a larger grep and updated comments where I found stale references to curves and (EC)DH.

2. The SSLECDHCurve variable (and its "GUC variable for default ECDH
curve" comment in be-secure.c) still uses the old naming. I wasn't
sure if that was left out intentionally to keep the patch small --
if not, would it make sense to rename it too, for consistency with
the initialize_groups() rename?

This also seems reasonable. I didn't find usage of this extern outside of Postgres itself in the wild from a brief search.

Attached a revision.

Evan

Attachments:

t139835_1
v2-0001-Clarify-that-ssl_groups-is-for-any-key-exchange-g.patchapplication/octet-stream; name=v2-0001-Clarify-that-ssl_groups-is-for-any-key-exchange-g.patchDownload+20-21
#2Ewan Young
kdbase.hack@gmail.com
In reply to: Si, Evan (#1)

On Thu, Jun 4, 2026 at 1:29 AM Si, Evan <evsi@amazon.com> wrote:

On 6/2/26, 11:32 PM, "Ewan Young" <kdbase.hack@gmail.com <mailto:kdbase.hack@gmail.com>> wrote:

+1 for the idea. (I'm fairly new here, so please take my comments with
a grain of salt.)

Thanks for the review!

1. The comment just above the renamed call in be_tls_init() still
says "set up ephemeral DH and ECDH keys". Maybe it should be
updated to match?

Right, that makes sense. I did a larger grep and updated comments where I found stale references to curves and (EC)DH.

Thanks! I re-did the grep on v2 and found no remaining stale references.

2. The SSLECDHCurve variable (and its "GUC variable for default ECDH
curve" comment in be-secure.c) still uses the old naming. I wasn't
sure if that was left out intentionally to keep the patch small --
if not, would it make sense to rename it too, for consistency with
the initialize_groups() rename?

This also seems reasonable. I didn't find usage of this extern outside of Postgres itself in the wild from a brief search.

Attached a revision.

Evan

I tested v2 on top of current master:
- applies cleanly, builds without warnings (--with-openssl)
- src/test/ssl TAP suite passes

v2 looks good to me, and I have nothing further.

Best regards,
Ewan Young

#3Daniel Gustafsson
daniel@yesql.se
In reply to: Ewan Young (#2)

On 4 Jun 2026, at 05:00, Ewan Young <kdbase.hack@gmail.com> wrote:

v2 looks good to me, and I have nothing further.

I have applied the docs portion of this patch to master and REL_18_STABLE, but
given where we are in the release cycle I don't think the renames qualify as
fixes during a freeze. Please feel free to register this patch in the upcoming
commitfest to get the remaining portion into v20. You can add me as a reviewer
on that entry to make sure it stays on my radar.

--
Daniel Gustafsson

#4Si, Evan
evansi.dev@gmail.com
In reply to: Daniel Gustafsson (#3)

On 6/5/2026 1:22 PM, Daniel Gustafsson wrote:

On 4 Jun 2026, at 05:00, Ewan Young <kdbase.hack@gmail.com> wrote:

v2 looks good to me, and I have nothing further.

I have applied the docs portion of this patch to master and REL_18_STABLE, but
given where we are in the release cycle I don't think the renames qualify as
fixes during a freeze. Please feel free to register this patch in the upcoming
commitfest to get the remaining portion into v20. You can add me as a reviewer
on that entry to make sure it stays on my radar.

Thanks! It looks like you found the commitfest entry for it right after
the email.

Otherwise for reference: https://commitfest.postgresql.org/patch/6843/

(Same person, different email.)

#5surya poondla
suryapoondla4@gmail.com
In reply to: Si, Evan (#1)

Hi Evan,

Thank you for the patch. I was reviewing this as part of the commitfest for
v20.

I agree with the premise, and it's easy to demonstrate. With OpenSSL 3.6.2,
"openssl list -tls-groups" reports MLKEM512, MLKEM768 and MLKEM1024, none
of which are Diffie-Hellman so the old short_desc is simply inaccurate for
a growing set of valid values.

v2 patch no longer applies to master. The config.sgml change is already
upstream (55136e378c6 on master, backpatched as a5112c9b62d on
REL_18_STABLE branch), and the be-secure-openssl.c prototype change has
drifted because init_host_context() gained a hasWarned argument in
9e526a14d7c. "git apply --3way" absorbs both and leaves exactly the
intended +14/-14 across five files, so a straight rebase with the docs
change dropped is all that's needed.

On the remaining rename:
- SSLNamedGroups is consistent with existing style; we already have
SSLCipherList for ssl_ciphers and SSLCipherSuites for ssl_tls13_ciphers, so
mirroring the GUC name exactly isn't the convention.
- Keeping "ssl_ecdh_curve" in map_old_guc_names() is correct. A grep of the
patched tree leaves only that entry and the "versions before 18.0" note in
config.sgml, which are both deliberate.

I built the rebased patch with --with-openssl (OpenSSL 3.6.2) with no
warnings, and "postgres --describe-config" shows the new description.

One minor point in the already-committed docs, "Specifies the named group
to use for TLS key exchange" is singular while a following sentence says
multiple groups can be specified.

Overall the patch looks in a good shape.

Regards,
Surya Poondla

#6Si, Evan
evansi.dev@gmail.com
In reply to: surya poondla (#5)

On 8/27/26 12:23 PM, surya poondla wrote:

Thank you for the patch. I was reviewing this as part of the commitfest for
v20.

Thanks for the review!> v2 patch no longer applies to master.
Apologies, forgot to rebase the patch after it was partially committed.
Nonetheless the cfbot seems to have capably rebased the patch already.

One minor point in the already-committed docs, "Specifies the named group
to use for TLS key exchange" is singular while a following sentence says
multiple groups can be specified.

Makes sense. Attached tweaks to "group(s)" across the board.

Evan

Attachments:

t139835_6
v3-0001-Clarify-that-ssl_groups-is-for-any-key-exchange-g.patchtext/plain; charset=UTF-8; name=v3-0001-Clarify-that-ssl_groups-is-for-any-key-exchange-g.patchDownload+15-16
#7surya poondla
suryapoondla4@gmail.com
In reply to: Si, Evan (#1)

Hi Evan,

Thank you for the v3 patch, it applies cleanly to the current master.

The generated GUC table picks up SSLNamedGroups, and no references to
SSLECDHCurve remain anywhere in src/ or doc/.

The patch looks good.

Regards,
Surya Poondla