Commit Graph

257 Commits

Author SHA1 Message Date
Joshua Nelson da2c13e761 Update changelogs and bump version numbers 2022-09-16 13:03:26 -05:00
Joshua Nelson bd4f8d58ef Fix clippy warnings 2022-09-16 12:13:55 -05:00
Joshua Nelson 774e721ad9 Remove uses of `mem::uninitialized`
According to [the docs](https://doc.rust-lang.org/stable/std/mem/fn.uninitialized.html),

> Calling this when the content is not yet fully initialized causes immediate undefined behavior.
> it [is] undefined behavior to have uninitialized data in a variable even if that variable has an integer type.

Using MaybeUninit instead, as recommended by the official documentation, avoids undefined behavior by not creating a `&mut` reference to uninitialized data.
2022-09-16 12:13:55 -05:00
Jordan Rose 172b623bcc boring: Expose PKey::private_key_to_der_pkcs8(_passphrase) 2022-07-28 16:30:41 -07:00
Ravi Khadiwala db03da82fd boring: Fix memory leak in `Deriver` 2022-07-01 12:44:04 -05:00
BiagioFesta 863b72b3a8 ssl/test: fix UT expectations accordingly with boringssl change
- boringssl fix:
https://boringssl.googlesource.com/boringssl/+/c02c19e0d842f54d903a9b62316476f4b9c4e3f0

- Now ALPN validation with SSL_TLSEXT_ERR_ALERT_FATAL makes the server
abort the handshake with an alarm. UT now correctly asserts
connection error on both client and server side.
2022-04-28 11:29:13 -05:00
BiagioFesta e141e834f1 Update boringssl deps for quiche 0.12.0 compatibility
- ExtensionType::TOKEN_BINDING removed from implementation
d89ec688f2

- ExtensionType::ECH_IS_INNER removed from implementation
18b6836b2f
2022-04-28 11:29:13 -05:00
ilammy e6ddc40333 boring: BigNumRef::to_vec_padded()
Wrap BN_bn2bin_padded() which comes useful for exporting fixed-length
BIGNUMs, more efficient than padding result of to_vec() afterwards.

Note that in OpenSSL the function is called BN_bn2binpad() and has
a different order of arguments. BoringSSL's BN_bn2bin_padded() also
takes the desired length as "size_t".
2022-02-12 12:20:36 -06:00
Braden Ehrat 1507689c5b
Add fips-3678 feature (#52)
* Add rerun-if-env-changed instructions for BORING_* variables

* Use X509_get0_notBefore() and X509_get0_notAfter() instead of X509_getm_notBefore() and X509_getm_notAfter().

According to
https://www.openssl.org/docs/man1.1.0/man3/X509_getm_notBefore.html,
"X509_getm_notBefore() and X509_getm_notAfter() are similar to
X509_get0_notBefore() and X509_get0_notAfter() except they return
non-constant mutable references to the associated date field of the
certificate".

* Only update boringssl submodule if BORING_BSSL_PATH not provided

* Allow BORING_BSSL_LIB_PATH to control link search

* Add fips feature

* Use X509_set_notAfter unconditionally for FIPS compatibility

This is equivalent according to
https://boringssl.googlesource.com/boringssl/+/c947efabcbc38dcf93e8ad0e6a76206cf0ec8072

The version of boringssl that's FIPS-certified doesn't have `X509_set1_notAfter`.
The only difference between that and `X509_set_notAfter` is whether they're const-correct,
which doesn't seem worth having two different code-paths.

* Check out fips commit automatically

* Verify the version of the compiler used for building boringssl

NIST specifies that it needs to be 7.0.1; I originally tried building with clang 10 and it failed.
Theoretically this should check the versions of Go and Ninja too, but they haven't given me trouble in practice.

Example error:
```
   Compiling boring-sys v1.1.1 (/home/jnelson/work/boring/boring-sys)
error: failed to run custom build command for `boring-sys v1.1.1 (/home/jnelson/work/boring/boring-sys)`

Caused by:
  process didn't exit successfully: `/home/jnelson/work/boring/target/debug/build/boring-sys-31b8ce53031cfd83/build-script-build` (exit status: 101)
  --- stdout
  cargo:rerun-if-env-changed=BORING_BSSL_PATH

  --- stderr
  warning: missing clang-7, trying other compilers: Permission denied (os error 13)
  warning: FIPS requires clang version 7.0.1, skipping incompatible version "clang version 10.0.0-4ubuntu1 "
  thread 'main' panicked at 'unsupported clang version "cc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0": FIPS requires clang 7.0.1', boring-sys/build.rs:216:13
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```

* Add Github actions workflow testing FIPS

Co-authored-by: Joshua Nelson <jnelson@cloudflare.com>
2022-01-31 16:11:33 -06:00
ilammy 5f327aba86 boring: Suppress Clippy warnings about missing safety docs
I'm not quite sure why these are unsafe traits, probably to prevent
implementing them for random types accidentally. However, Clippy
demands a "# Safety" section in their docs. Tell it to get lost.
2022-01-04 18:27:39 -05:00
Joshua Nelson 18650f625e Bump versions for release
- Major version for boring-sys: `PasswordCallback` was removed
- Major version for boring: the public `*Ref` types were removed and `foreign-types` appears in our public api and had a major version bump
- Patch version for tokio-boring: the only API change was removing the `S: Debug` bound
- Patch version for hyper-boring: no API changes, only removed dependencies
2021-12-16 13:52:38 -06:00
Joshua Nelson 75d6ced4c9 Remove unused and deprecated `tempdir` dependency 2021-08-17 10:44:50 -05:00
Joshua Nelson 057a81b9a4 Remove unused `*Ref` parameters to macro
This doesn't actually do anything, it just makes it more clear that those parameters are ignored.
2021-08-17 10:44:50 -05:00
Joshua Nelson e46378d4de Update dependencies
In particular, this updates `foreign-types`, which had a lot of breaking changes.

- `ForeignType` is now an unsafe trait
- `*Ref` types no longer need a separate macro call, they're generated automatically
- Generated types now store `NonNull<T>` instead of `*mut T`
2021-08-17 10:44:50 -05:00
Joshua Nelson c037a438f8 Switch to 2018 edition in boring 2021-08-13 15:22:56 -05:00
Joshua Nelson 46787b7b69 Run `cargo fix --edition 2021-08-13 15:22:56 -05:00
Joshua Nelson 03dda42d1a Remove unused attribute 2021-07-30 16:24:16 -04:00
Joshua Nelson 6ddfee29b7 Fix clippy warnings for 1.54 2021-07-29 12:16:55 -04:00
Anthony Ramine 77ef82c88d Bump boring to 1.1.6 2021-04-16 13:00:09 +02:00
Anthony Ramine fbdcfc3dbc Introduce ClientHello::client_version 2021-04-16 12:31:04 +02:00
Anthony Ramine c85bf0940e Bump boring to 1.1.5 2021-04-13 16:05:40 +02:00
Anthony Ramine d147f155a4 Allow retrieving the version string from early callback 2021-04-13 12:03:55 +02:00
Anthony Ramine 6baba64eec Allow returning the server name from the early callback 2021-04-13 11:59:27 +02:00
Anthony Ramine e13112e3ca Allow uppercase acronyms 2021-04-06 11:44:47 +02:00
Ivan Nikulin 00f54790fb Bump boring to 1.1.4 2021-03-15 14:19:02 +00:00
Anthony Ramine 4353e4f8f3 Use Display for ssl::Error in Display for ssl::HandshakeError 2021-03-15 13:32:23 +01:00
Anthony Ramine 56564c7cb6 Tweak yet again the boring error reporting
We also omit file and line in ErrorStack itself now too.

ErrorStack is the wrapped error type returned by
hyper_boring::HttpsConnector::call.
2021-03-15 11:26:09 +01:00
Ivan Nikulin 7f6bd732e4 Bump boring to 1.1.3 2021-03-11 21:28:57 +00:00
Anthony Ramine 6f4ecb3d90 Remove file/line from Display for HandshakeError 2021-03-11 14:42:00 +01:00
Ivan Nikulin ebab82eb5b Bump boring to 1.1.2, tokio-boring 2.1.1 2021-03-09 17:47:01 +00:00
Ivan Nikulin 2667b0fdee
Merge pull request #17 from nox/handshake-error
Improve error printing
2021-03-09 17:43:44 +00:00
Anthony Ramine 66cabd882c Introduce MidHandshakeSslStream::into_parts 2021-03-09 16:26:30 +01:00
Anthony Ramine 51734088ef Print handshake errors in a better way
We completely ignore the ErrorStack value if it is
an X509 verification failure.
2021-03-09 16:26:30 +01:00
Anthony Ramine 8274492b95 Separate errors in an error stack better 2021-03-05 16:24:11 +01:00
Ivan Nikulin adb00bde17 Bump boring to 1.1.1 2021-03-01 12:54:56 +00:00
Anthony Ramine be0b2605ff Make Display for Error more readable 2021-03-01 12:09:04 +01:00
Ivan Nikulin ed3279c4f1 Bump feature version on all packages instead. 2021-02-24 11:52:24 +00:00
Ivan Nikulin 3772a53bc0 Bump boring-sys to 1.0.5. Bump boring to 1.0.4 2021-02-24 11:06:01 +00:00
Ivan Nikulin af25e9c9a0
Merge pull request #14 from except/bssl-specific-options
Enable various client features of bssl
2021-02-24 02:51:33 +00:00
Anthony Ramine 86691d8d72 Introduce ExtensionType for the arg of get_extension 2021-02-22 14:23:26 +01:00
Anthony Ramine f831b25bf1 Introduce ClientHello::get_extension 2021-02-22 14:20:50 +01:00
Hasan Gondal ee94b2a01d Add support for SSL_CTX_set1_curves 2021-02-20 23:58:25 +00:00
Hasan Gondal 6cfc713483 Enable various client features of bssl 2021-02-19 22:52:38 +00:00
Anthony Ramine 9c5c7e3db5 Introduce set_select_certificate_callback 2021-02-19 16:11:14 +01:00
Frank Denis 05c6a41270 Use bindgen to automatically generate boring-sys
This ensures that all the Rust functions, types and constants
always match the actual BoringSSL definitions.

It also removes quite a lot of manually maintained code, as well
as the need for systest.

The value for `SslOptions::ALL`, for example, was wrong. On current
BoringSSL versions, this is a no-op, and is set to `0`.

Clearing it does nothing. So, the `clear_ctx_options` test, that
passed by accident, was adjusted to use a different option.

The `libc` crate is not required, as we only use it for types that
are already defined in the standard library. It was removed from
`boring-sys`. The same can be done to other crates later.
2021-02-12 15:03:45 +01:00
Ivan Nikulin 0c9166dd74 Make new clippy happy 2021-02-11 19:35:11 +00:00
Gabriela Alexandra Moldovan 12d6a27104 Fix clippy warning. 2021-01-08 16:53:20 +00:00
Ivan Nikulin a6fbc0fed2 Bump version 2020-12-23 14:15:50 +00:00
Ivan Nikulin f40ac2d1ed Implement conversion of HandshakeError to the source stream 2020-12-23 12:25:30 +00:00
Gabriela Alexandra Moldovan 31ed6443b1 Fix boring repository links. 2020-11-14 00:03:43 +00:00
Ivan Nikulin 5afd10b577 Fix boring-sys linking. Bump version. 2020-11-12 13:03:41 +00:00
Ivan Nikulin 2b61e14211 Fix doc comment 2020-11-11 20:40:58 +00:00
Ivan Nikulin fda73f4947 Fix docs 2020-11-11 20:32:53 +00:00
Ivan Nikulin 548771adb1 Add tokio-boring 2020-11-11 19:26:22 +00:00
Ivan Nikulin ec45baa6d8 Revive CI 2020-11-11 19:01:29 +00:00
Ivan Nikulin fc07d7dfbb Fix doc comments 2020-11-11 18:08:14 +00:00
Ivan Nikulin 5cb8947d7e Rename stuff 2020-11-11 17:47:30 +00:00