Implement the SSL_CTRL_GET_SHARED_GROUP control
authortb <tb@openbsd.org>
Wed, 17 Aug 2022 18:51:47 +0000 (18:51 +0000)
committertb <tb@openbsd.org>
Wed, 17 Aug 2022 18:51:47 +0000 (18:51 +0000)
commite1a22fe807746821be4523e8c84fddfb79e8b1a0
treee320489fb65ba6567cac1772b1bb0c71f2105140
parent35c268f067f8e1fcd50c3bb52a947a8905ccbff2
Implement the SSL_CTRL_GET_SHARED_GROUP control

This implements SSL_get_shared_{curve,group}() in a bug-compatible
fashion with OpenSSL.

This is your average OpenSSL-style overloaded parameter API where n >= 0
means "return the n-th shared group's NID" (as if anyone possibly ever
cared about the case n > 0) and n == -1 means "return the number of
shared groups". There is also an undocumented case n == -2 for Suite B
profile support which falls back to n == 0 in case Suite B profile
support is disabled, so n == -2 is the same as n == 0 in LibreSSL.

The API also returns 0 for error, which is indistinguishable from a
count of 0 shared groups but coincides with NID_undef. Contrary to claims
in the documentation, the API doesn't actually return -1 for clients,
rather it returns 0.

Obviously this entire exercise is pretty useless, but since somebody
exposed it because they could and someone else used it because they could
we need to provide it.

ok jsing
lib/libssl/s3_lib.c