Rustls + hyper: How to avoid OpenSSL dependency


#1

Hi there,

I am currently developing a program that uses the Google API’s. I am instantiating everything like that:

        let authenticator = Authenticator::new(
            &self.secret,
            DefaultAuthenticatorDelegate,
            hyper::Client::with_connector(hyper::net::HttpsConnector::new(
                hyper_rustls::TlsClient::new(),
            )),
            DiskTokenStorage::new(&self.token_file).unwrap(),
            Some(FlowType::InstalledInteractive),
        );

        drive3::Drive::new(
            hyper::Client::with_connector(hyper::net::HttpsConnector::new(
                hyper_rustls::TlsClient::new(),
            )),
            authenticator,
        )

and everything works fine.

But as I got the rustls library right it is a replacement for OpenSSL completely developed in rust, isn’t it?

So why do I need to bake OpenSSL in my binary? Now I have the conflict that some other guys cannot use my program, because I have OpenSSL 1.1 and they have 1.0 so there is a version incompatibility.

All dependencies that I use are:

clap = "2.26.0"
log = "0.3.8" 
env_logger = "0.4.3"
yup-oauth2 = "^ 1.0"
google-drive3 = "^ 1.0"
hyper = "^ 0.10"
hyper-rustls = "0.6.1"
serde = "1.0.11"
serde_json = "1.0.2"
serde_derive = "1.0.11"

Maybe someone could give me a hint how to avoid the OpenSSL dependency or how I can build the binary for OpenSSL 1.0 on my computer that has OpenSSL 1.1 installed?

Thanks :slight_smile:


#2

yup-oauth2 1.0.6 has a dependency on openssl. It is being removed in master.

An easier way to investigate this kind of dependency-tree questions is by manually inspecting your Cargo.lock or using something more human-friendly like the cargo-tree helper.