Commit 7c0119c3 authored by Zhang Jingqiang's avatar Zhang Jingqiang
Browse files

add more boringssl methods

parent 93d172b1
Loading
Loading
Loading
Loading
+20 −23
Original line number Diff line number Diff line
@@ -654,8 +654,8 @@ impl SslVersion {

    /// TLSv1.3
    ///
    /// Requires OpenSSL 1.1.1 or LibreSSL 3.4.0 or newer.
    #[cfg(any(ossl111, libressl340))]
    /// Requires BoringSSL or OpenSSL 1.1.1 or LibreSSL 3.4.0 or newer.
    #[cfg(any(ossl111, libressl340, boringssl))]
    pub const TLS1_3: SslVersion = SslVersion(ffi::TLS1_3_VERSION);

    /// DTLSv1.0
@@ -666,7 +666,7 @@ impl SslVersion {
    /// DTLSv1.2
    ///
    /// DTLS 1.2 corresponds to TLS 1.2 to harmonize versions. There was never a DTLS 1.1.
    #[cfg(any(ossl102, libressl332))]
    #[cfg(any(ossl102, libressl332, boringssl))]
    pub const DTLS1_2: SslVersion = SslVersion(ffi::DTLS1_2_VERSION);
}

@@ -1147,9 +1147,9 @@ impl SslContextBuilder {
    /// A value of `None` will enable protocol versions down to the lowest version supported by
    /// OpenSSL.
    ///
    /// Requires OpenSSL 1.1.0 or LibreSSL 2.6.1 or newer.
    /// Requires BoringSSL or OpenSSL 1.1.0 or LibreSSL 2.6.1 or newer.
    #[corresponds(SSL_CTX_set_min_proto_version)]
    #[cfg(any(ossl110, libressl261))]
    #[cfg(any(ossl110, libressl261, boringssl))]
    pub fn set_min_proto_version(&mut self, version: Option<SslVersion>) -> Result<(), ErrorStack> {
        unsafe {
            cvt(ffi::SSL_CTX_set_min_proto_version(
@@ -1165,9 +1165,9 @@ impl SslContextBuilder {
    /// A value of `None` will enable protocol versions up to the highest version supported by
    /// OpenSSL.
    ///
    /// Requires OpenSSL 1.1.0 or or LibreSSL 2.6.1 or newer.
    /// Requires BoringSSL or OpenSSL 1.1.0 or or LibreSSL 2.6.1 or newer.
    #[corresponds(SSL_CTX_set_max_proto_version)]
    #[cfg(any(ossl110, libressl261))]
    #[cfg(any(ossl110, libressl261, boringssl))]
    pub fn set_max_proto_version(&mut self, version: Option<SslVersion>) -> Result<(), ErrorStack> {
        unsafe {
            cvt(ffi::SSL_CTX_set_max_proto_version(
@@ -1223,16 +1223,16 @@ impl SslContextBuilder {
    /// and `http/1.1` is encoded as `b"\x06spdy/1\x08http/1.1"`. The protocols are ordered by
    /// preference.
    ///
    /// Requires OpenSSL 1.0.2 or LibreSSL 2.6.1 or newer.
    /// Requires BoringSSL or OpenSSL 1.0.2 or LibreSSL 2.6.1 or newer.
    #[corresponds(SSL_CTX_set_alpn_protos)]
    #[cfg(any(ossl102, libressl261))]
    #[cfg(any(ossl102, libressl261, boringssl))]
    pub fn set_alpn_protos(&mut self, protocols: &[u8]) -> Result<(), ErrorStack> {
        unsafe {
            assert!(protocols.len() <= c_uint::max_value() as usize);
            let r = ffi::SSL_CTX_set_alpn_protos(
                self.as_ptr(),
                protocols.as_ptr(),
                protocols.len() as c_uint,
                protocols.len() as _,
            );
            // fun fact, SSL_CTX_set_alpn_protos has a reversed return code D:
            if r == 0 {
@@ -2480,19 +2480,16 @@ impl SslRef {

    /// Like [`SslContextBuilder::set_alpn_protos`].
    ///
    /// Requires OpenSSL 1.0.2 or LibreSSL 2.6.1 or newer.
    /// Requires BoringSSL or OpenSSL 1.0.2 or LibreSSL 2.6.1 or newer.
    ///
    /// [`SslContextBuilder::set_alpn_protos`]: struct.SslContextBuilder.html#method.set_alpn_protos
    #[corresponds(SSL_set_alpn_protos)]
    #[cfg(any(ossl102, libressl261))]
    #[cfg(any(ossl102, libressl261, boringssl))]
    pub fn set_alpn_protos(&mut self, protocols: &[u8]) -> Result<(), ErrorStack> {
        unsafe {
            assert!(protocols.len() <= c_uint::max_value() as usize);
            let r = ffi::SSL_set_alpn_protos(
                self.as_ptr(),
                protocols.as_ptr(),
                protocols.len() as c_uint,
            );
            let r =
                ffi::SSL_set_alpn_protos(self.as_ptr(), protocols.as_ptr(), protocols.len() as _);
            // fun fact, SSL_set_alpn_protos has a reversed return code D:
            if r == 0 {
                Ok(())
@@ -2639,9 +2636,9 @@ impl SslRef {
    /// The protocol's name is returned is an opaque sequence of bytes. It is up to the client
    /// to interpret it.
    ///
    /// Requires OpenSSL 1.0.2 or LibreSSL 2.6.1 or newer.
    /// Requires BoringSSL or OpenSSL 1.0.2 or LibreSSL 2.6.1 or newer.
    #[corresponds(SSL_get0_alpn_selected)]
    #[cfg(any(ossl102, libressl261))]
    #[cfg(any(ossl102, libressl261, boringssl))]
    pub fn selected_alpn_protocol(&self) -> Option<&[u8]> {
        unsafe {
            let mut data: *const c_uchar = ptr::null();
@@ -3334,9 +3331,9 @@ impl SslRef {
    /// A value of `None` will enable protocol versions down to the lowest version supported by
    /// OpenSSL.
    ///
    /// Requires OpenSSL 1.1.0 or LibreSSL 2.6.1 or newer.
    /// Requires BoringSSL or OpenSSL 1.1.0 or LibreSSL 2.6.1 or newer.
    #[corresponds(SSL_set_min_proto_version)]
    #[cfg(any(ossl110, libressl261))]
    #[cfg(any(ossl110, libressl261, boringssl))]
    pub fn set_min_proto_version(&mut self, version: Option<SslVersion>) -> Result<(), ErrorStack> {
        unsafe {
            cvt(ffi::SSL_set_min_proto_version(
@@ -3352,9 +3349,9 @@ impl SslRef {
    /// A value of `None` will enable protocol versions up to the highest version supported by
    /// OpenSSL.
    ///
    /// Requires OpenSSL 1.1.0 or or LibreSSL 2.6.1 or newer.
    /// Requires BoringSSL or OpenSSL 1.1.0 or or LibreSSL 2.6.1 or newer.
    #[corresponds(SSL_set_max_proto_version)]
    #[cfg(any(ossl110, libressl261))]
    #[cfg(any(ossl110, libressl261, boringssl))]
    pub fn set_max_proto_version(&mut self, version: Option<SslVersion>) -> Result<(), ErrorStack> {
        unsafe {
            cvt(ffi::SSL_set_max_proto_version(