Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vxNDi-00Aqi0-2g for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Mar 2026 10:43:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vxNDg-006T4s-0z for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Mar 2026 10:43:16 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <9erthalion6@gmail.com>) id 1vxNDg-006T4M-05 for pgsql-hackers@lists.postgresql.org; Tue, 03 Mar 2026 10:43:16 +0000 Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from <9erthalion6@gmail.com>) id 1vxNDe-00000000AMn-0HCY for pgsql-hackers@postgresql.org; Tue, 03 Mar 2026 10:43:16 +0000 Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-b9359c0ec47so583998966b.0 for ; Tue, 03 Mar 2026 02:43:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772534593; x=1773139393; darn=postgresql.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=KMXgdQ22jykinmlEosKZIxkoDatRu8Ao/X+ZUuHnjm4=; b=D65zfr9RtXZIp8XLMTrFGNSZg545jQSu+m+YMeLTfI4FLzArJj75D7tAs7pw/SjL4k 6X60zXQbeZLdiqC8Xl0G1B5TUnJwZGd5wFCrcFnBDQm7RPDywLJ6MB+0rwXeihVIKQvD IHAQ2filTVa2FZYpnTS1V4M9Qvd0rKOpKSzZ8lNTZiuZ0OaZ7KpWa9o9JTGoRMNV58u2 0dAzlIy4FDTvIjfIC6WZ8IKetigeYf32JBEYUwhxGu0YMNRX75sJvHWXTmkCFjMZKI16 lCAgoEnyMEnAk3hZ0c5M1m4cn61j815vE7XRO45MnZPIeT03GpKsPvMLzhkSdFY1cM2B 9WEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772534593; x=1773139393; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KMXgdQ22jykinmlEosKZIxkoDatRu8Ao/X+ZUuHnjm4=; b=sluwJmliYAf9Zafk3W95HkmFmRBKIXvnKB4LJxmubxP7v68LlI0n5XvQ1bqfqhmUQ+ tC0Vlg+X5lH7zE6cz7M0VblUBDPqXAxcW6tqJpOEJdOq/F4vE50iXEMG4AdN57XUAw51 Z76zO6YM/QKa8UpFOzyUblpuQrQ+E32olEA3fUQ7x6mtDDxwAmuUGejR1a1jzLvZGWG1 gRb17lpN6vLjx/I3eaRmphy5K2oLQrNU2WVbl+8FE81p8v/t3XfyJbohn7n6zMJrom+M aPdiVz6r54S4yVWJE5aMN8ps5hkmIQ1XtrQJf00IAWrWXCW8PLsGzKgNoYAaeQZRjU2I d+Fw== X-Forwarded-Encrypted: i=1; AJvYcCVm1b4oNyJz1jR0Sew1BgA2+JN625PuPC4ospg3gCy4ATOKlVOGVaO7H5IL8Elv7CrIsyxXeFh9ffl0wv77@postgresql.org X-Gm-Message-State: AOJu0Yy2BhZ8s5Nd91CwnfAktClWNgBIEnDf1uP/gtWopa31GlGNSmSg DG1wBuiomLP1DM5MLkILMnjXd90xZrWoL+ZAdFY1ya7m2iAMYr1j4m17 X-Gm-Gg: ATEYQzzuKcYGMoREn2KrRmNu9mfgUwy9sYHbdB2vC6f0eVonG+BjXy9c8SwPuJANhMe GpYuaCsSM92gqJtCB0nEqieX04U1Z9No14B+v8Bb77GjzkOh3XZONB11nTx7MKPNBB9QPxaUOZu b++7EBbT3COlNW8DSNo/rbDvyTEiHgzmU7iIKsI8m08Ypogxd3CSxsjTp1Y+8afVDLaaSjDn7pk 4ynU7W23fqR3ELLdRJqIW9ye+id0BhhMZu/1CHxTbZHVlwZr5i250dzQ8Xj8MuI006BcCTQiOKh bfJkYQu5uupACa2hlR6weiTm9yFO/7dxKv/WqY+F09wzsvjdpIPtgYOHlMfYkeHoyb8au2irOf7 74ZccI2iZ2S9pnjgMsOskObayzxq251vgUwqWswKnN+LeL1Ct3bffjcxCRnydWMGxMBaMS+9Y/R cKmNEisojADVlzcla+hZdxbMQrJqeT0ET5234kd4jZe9xM5ke8sFX0qUPblSudkpXAjq+JjrdR4 r9QhVka5dM6Ol72BatxHWQJ6VGhxWNYy/idxjDxlxYLAMU= X-Received: by 2002:a17:906:f593:b0:b8a:f29e:307a with SMTP id a640c23a62f3a-b937657dbe4mr928162166b.57.1772534592478; Tue, 03 Mar 2026 02:43:12 -0800 (PST) Received: from ddolgov-thinkpadt14sgen1.rmtde.csb (dslb-002-207-075-089.002.207.pools.vodafone-ip.de. [2.207.75.89]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b935ab13558sm587644166b.5.2026.03.03.02.43.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2026 02:43:11 -0800 (PST) Date: Tue, 3 Mar 2026 11:43:10 +0100 From: Dmitry Dolgov <9erthalion6@gmail.com> To: Jacob Champion Cc: Daniel Gustafsson , PostgreSQL Hackers Subject: Re: Add ssl_(supported|shared)_groups to sslinfo Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk > On Fri, Feb 27, 2026 at 04:51:40PM -0800, Jacob Champion wrote: > > select * from ssl_group_info(); > > type | name > > ------------+-------------------- > > negotiated | X25519MLKEM768 > > shared | X25519MLKEM768 > > shared | x25519 > > supported | X25519MLKEM768 > > supported | x25519 > > Hmm, I'm developing strong opinions over something I said I didn't > feel strongly about. Sorry... No worries, it's a valuable discussion so far :) > The type names "negotiated", "shared" and "supported" don't really > tell me much as an end user. I know, as a dev, that "negotiated" is > the one that was chosen, "supported" is what the client provided, and > "shared" is the intersection of the client and server sets. But I > think it'd be good to choose names that are either based on the > official TLS specification, or immediately clear to someone who is not > well-versed in TLS to begin with, as opposed to using OpenSSL's > internal API names. Naming is hard of course, but my plan was to stick to short names like those above, and unwrap them in the documentation: * Supported: list of named groups supported by the client for key exchange in the form of "supported_groups" extension. Supported group is the exact terminology used in the TLS spec. * Shared: lisf of named groups shared with the server side. This one actually doesn't appear in the spec. The closest name featured is "selected_groups", but only in the context of the retry requests. Thus I took this form the OpenSSL docs. * Negotiated: the group used for the handshake key exchange process. Surprsingly, I don't see any exact terminology for this in the TLS spec, it just says "the named group for the key being exchanged". The name is taken from the OpenSSL documentation. How does it sound? > Also, I feel like this is still missing the server side of the Venn diagram. Indeed, the TLS spec says that the server is permitted to send the "supported_groups" extension to the client, so this might be interesting. But it doesn't look like there is any OpenSSL API to get those, beyond SSL_ctrl, which is not supposed to be called directly. > Also also: if we later expose a version of this table for the > ciphersuites or other negotiated parameters, is this how we'd want the > table to look? What did you care most about when you were debugging? I don't see why not. The reason why I've started tinkering on that was only to get the negotiated group. But I'm convinced that, since PostgreSQL sets the groups extension, it totally makes sense to provide some API for diagnostig reasons to check what's in there beyond only one single group.