From b3521e55231928745d592aab34a6ca047d9c1032 Mon Sep 17 00:00:00 2001 From: Alessandro Ghedini Date: Tue, 30 Sep 2025 16:29:18 +0100 Subject: [PATCH] Add SslRef::curve_name() --- boring/src/ssl/mod.rs | 16 ++++++++++++++++ boring/src/ssl/test/mod.rs | 2 ++ 2 files changed, 18 insertions(+) diff --git a/boring/src/ssl/mod.rs b/boring/src/ssl/mod.rs index 5d12e686..c8e45bc7 100644 --- a/boring/src/ssl/mod.rs +++ b/boring/src/ssl/mod.rs @@ -2780,6 +2780,22 @@ impl SslRef { Some(curve_id) } + /// Returns the curve name used for this `SslRef`. + #[corresponds(SSL_get_curve_name)] + #[must_use] + pub fn curve_name(&self) -> Option<&'static str> { + let curve_id = self.curve()?; + + unsafe { + let ptr = ffi::SSL_get_curve_name(curve_id); + if ptr.is_null() { + return None; + } + + CStr::from_ptr(ptr).to_str().ok() + } + } + /// Returns an `ErrorCode` value for the most recent operation on this `SslRef`. #[corresponds(SSL_get_error)] #[must_use] diff --git a/boring/src/ssl/test/mod.rs b/boring/src/ssl/test/mod.rs index e779c040..f4ce2102 100644 --- a/boring/src/ssl/test/mod.rs +++ b/boring/src/ssl/test/mod.rs @@ -958,6 +958,8 @@ fn get_curve() { let client_stream = client.connect(); let curve = client_stream.ssl().curve(); assert!(curve.is_some()); + let curve_name = client_stream.ssl().curve_name(); + assert!(curve_name.is_some()); } #[test]