Skip to content

Commit feb2374

Browse files
feat: add use-rustls-ring feature
1 parent 64c77ee commit feb2374

File tree

4 files changed

+26
-14
lines changed

4 files changed

+26
-14
lines changed

Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ serde_json = { version = "^1.0" }
2525

2626
# Optional dependencies
2727
openssl = { version = "0.10", optional = true }
28-
rustls = { version = "0.23", optional = true }
28+
rustls = { version = "0.23", optional = true, default-features = false }
2929
webpki-roots = { version = "0.25", optional = true }
3030

3131
byteorder = { version = "1.0", optional = true }
@@ -41,5 +41,6 @@ default = ["proxy", "use-rustls"]
4141
minimal = []
4242
debug-calls = []
4343
proxy = ["byteorder", "winapi", "libc"]
44-
use-rustls = ["webpki-roots", "rustls"]
44+
use-rustls = ["webpki-roots", "rustls/default"]
45+
use-rustls-ring = ["proxy", "webpki-roots", "rustls/ring", "rustls/logging", "rustls/std", "rustls/tls12"]
4546
use-openssl = ["openssl"]

src/lib.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,18 @@ extern crate log;
2525
#[cfg(feature = "use-openssl")]
2626
extern crate openssl;
2727
#[cfg(all(
28-
any(feature = "default", feature = "use-rustls"),
28+
any(feature = "default", feature = "use-rustls", feature = "use-rustls-ring"),
2929
not(feature = "use-openssl")
3030
))]
3131
extern crate rustls;
3232
extern crate serde;
3333
extern crate serde_json;
3434

35-
#[cfg(any(feature = "use-rustls", feature = "default"))]
35+
#[cfg(any(
36+
feature = "default",
37+
feature = "use-rustls",
38+
feature = "use-rustls-ring"
39+
))]
3640
extern crate webpki_roots;
3741

3842
#[cfg(any(feature = "default", feature = "proxy"))]
@@ -51,7 +55,8 @@ mod batch;
5155

5256
#[cfg(any(
5357
all(feature = "proxy", feature = "use-openssl"),
54-
all(feature = "proxy", feature = "use-rustls")
58+
all(feature = "proxy", feature = "use-rustls"),
59+
all(feature = "proxy", feature = "use-rustls-ring")
5560
))]
5661
pub mod client;
5762

@@ -66,7 +71,8 @@ pub use api::ElectrumApi;
6671
pub use batch::Batch;
6772
#[cfg(any(
6873
all(feature = "proxy", feature = "use-openssl"),
69-
all(feature = "proxy", feature = "use-rustls")
74+
all(feature = "proxy", feature = "use-rustls"),
75+
all(feature = "proxy", feature = "use-rustls-ring")
7076
))]
7177
pub use client::*;
7278
pub use config::{Config, ConfigBuilder, Socks5Config};

src/raw_client.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use bitcoin::{Script, Txid};
2323
use openssl::ssl::{SslConnector, SslMethod, SslStream, SslVerifyMode};
2424

2525
#[cfg(all(
26-
any(feature = "default", feature = "use-rustls"),
26+
any(feature = "default", feature = "use-rustls", feature = "use-rustls-ring"),
2727
not(feature = "use-openssl")
2828
))]
2929
use rustls::{
@@ -286,7 +286,7 @@ impl RawClient<ElectrumSslStream> {
286286
}
287287

288288
#[cfg(all(
289-
any(feature = "default", feature = "use-rustls"),
289+
any(feature = "default", feature = "use-rustls", feature = "use-rustls-ring"),
290290
not(feature = "use-openssl")
291291
))]
292292
mod danger {
@@ -336,13 +336,13 @@ mod danger {
336336
}
337337

338338
#[cfg(all(
339-
any(feature = "default", feature = "use-rustls"),
339+
any(feature = "default", feature = "use-rustls", feature = "use-rustls-ring"),
340340
not(feature = "use-openssl")
341341
))]
342342
/// Transport type used to establish a Rustls TLS encrypted/authenticated connection with the server
343343
pub type ElectrumSslStream = StreamOwned<ClientConnection, TcpStream>;
344344
#[cfg(all(
345-
any(feature = "default", feature = "use-rustls"),
345+
any(feature = "default", feature = "use-rustls", feature = "use-rustls-ring"),
346346
not(feature = "use-openssl")
347347
))]
348348
impl RawClient<ElectrumSslStream> {
@@ -451,7 +451,7 @@ impl RawClient<ElectrumProxyStream> {
451451
Ok(stream.into())
452452
}
453453

454-
#[cfg(any(feature = "use-openssl", feature = "use-rustls"))]
454+
#[cfg(any(feature = "use-openssl", feature = "use-rustls", feature = "use-rustls-ring"))]
455455
/// Creates a new TLS client that connects to `target_addr` using `proxy_addr` as a socks proxy
456456
/// server. The DNS resolution of `target_addr`, if required, is done through the proxy. This
457457
/// allows to specify, for instance, `.onion` addresses.

src/types.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -315,8 +315,10 @@ pub enum Error {
315315
CouldntLockReader,
316316
/// Broken IPC communication channel: the other thread probably has exited
317317
Mpsc,
318-
319-
#[cfg(feature = "use-rustls")]
318+
#[cfg(any(
319+
feature = "use-rustls",
320+
feature = "use-rustls-ring"
321+
))]
320322
/// Could not create a rustls client connection
321323
CouldNotCreateConnection(rustls::Error),
322324

@@ -340,7 +342,10 @@ impl Display for Error {
340342
Error::SslHandshakeError(e) => Display::fmt(e, f),
341343
#[cfg(feature = "use-openssl")]
342344
Error::InvalidSslMethod(e) => Display::fmt(e, f),
343-
#[cfg(feature = "use-rustls")]
345+
#[cfg(any(
346+
feature = "use-rustls",
347+
feature = "use-rustls-ring",
348+
))]
344349
Error::CouldNotCreateConnection(e) => Display::fmt(e, f),
345350

346351
Error::Message(e) => f.write_str(e),

0 commit comments

Comments
 (0)