bozaro / rust-openssl

OpenSSL bindings for Rust

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

rust-openssl

Build Status

See the rustdoc output.

Building

rust-openssl depends on both the OpenSSL runtime libraries and headers.

Linux

On Linux, you can install OpenSSL via your package manager. The headers are sometimes provided in a separate package than the runtime libraries - look for something like openssl-devel or libssl-dev.

# On Ubuntu
sudo apt-get install libssl-dev
# On Arch Linux
sudo pacman -S openssl

OSX

OpenSSL 0.9.8 is preinstalled on OSX. Some features are only available when linking against OpenSSL 1.0.0 or greater; see below on how to point rust-openssl to a separate installation.

Windows

Install OpenSSL from here. Cargo will not be able to find OpenSSL if it's installed to the default location. You can either copy the include/openssl directory, libssl32.dll, and libeay32.dll to locations that Cargo can find or pass the location to Cargo via environment variables:

env OPENSSL_LIB_DIR=/c/OpenSSL-Win64 OPENSSL_INCLUDE_DIR=/c/OpenSSL-Win64/include cargo build

Manual configuration

rust-openssl's build script will by default attempt to locate OpenSSL via pkg-config. This will not work in some situations, for example, on systems that don't have pkg-config, when cross compiling, or when using a copy of OpenSSL other than the normal system install.

The build script can be configured via environment variables:

  • OPENSSL_LIB_DIR - If specified, a directory that will be used to find OpenSSL runtime libraries.
  • OPENSSL_INCLUDE_DIR - If specified, a directory that will be used to find OpenSSL headers.
  • OPENSSL_STATIC - If specified, OpenSSL libraries will be statically rather than dynamically linked.

If either OPENSSL_LIB_DIR or OPENSSL_INCLUDE_DIR are specified, then the build script will skip the pkg-config step.

Testing

Several tests expect a local test server to be running to bounce requests off of. It's easy to do this. Open a separate terminal window and cd to the rust-openssl directory. Then run one of the following commands:

  • Windows: openssl s_server -accept 15418 -www -cert test/cert.pem -key test/key.pem > NUL
  • Linux: openssl s_server -accept 15418 -www -cert test/cert.pem -key test/key.pem >/dev/null

Then in the original terminal, run cargo test. If everything is set up correctly, all tests should pass. You might get some warnings in the openssl s_server window. Those aren't anything to worry about. You can stop the server using Control-C.

For DTLS testing each test requires its own instance of OpenSSL's s_server. On Linux you can run the bash script in openssl/tests/test.sh.

About

OpenSSL bindings for Rust


Languages

Language:Rust 98.5%Language:Shell 0.8%Language:C 0.7%