Commit Graph

3434 Commits

Author SHA1 Message Date
James Larisch eefc7b7265 Add `X509_STORE_CTX_get0_cert` interface
This method reliably retrieves the certificate the `X509_STORE_CTX` is
verifying, unlike `X509_STORE_CTX_get_current_cert`, which may return
the "problematic" cert when verification fails.
2025-05-27 14:41:16 +01:00
0x676e67 6e35abb2cd boring(ssl): use `corresponds` macro in `add_certificate_compression_algorithm` 2025-05-26 08:51:37 -07:00
0x676e67 15281c77e2 Update Cargo.toml 2025-05-26 08:51:37 -07:00
0x676e67 eb48ab9a26 build: Fix the build for 32-bit Linux platform 2025-05-26 08:51:37 -07:00
Kornel 3ab8b53532 rustfmt ;( 2025-05-26 16:30:09 +01:00
Kornel 0327dd03c6 Fix linking SystemFunction036 from advapi32 in Rust 1.87 2025-05-26 16:30:09 +01:00
Kornel 23863ffd1b Clippy 2025-05-26 16:30:09 +01:00
0x676e67 7205960bc1
boring(ssl): add ZSTD to `CertificateCompressionAlgorithm` (#71) 2025-05-19 16:46:31 +08:00
0x676e67 9da3b7b44c
boring(ssl): use `corresponds` macro in `add_certificate_compression_algorithm` (#70) 2025-05-18 19:21:38 +08:00
0x676e67 9fb6143b11
chore(boring): deprecate legacy `CertCompressionAlgorithm` API (#69)
* chore(boring): deprecate legacy `CertCompressionAlgorithm` API

* ci: fix windows build
2025-05-18 18:55:08 +08:00
0x676e67 2b497506ef
chore(boring): deprecate `set_verify_cert_store_ref` on `SslContextBuilder` (#68) 2025-05-13 18:23:22 +08:00
Eric Rosenberg 9b34d3524b add SslCurve::X25519_MLKEM768 constant 2025-05-03 01:25:12 +09:00
0x676e67 493c0cb51b v4.15.13 2025-04-27 17:14:16 +08:00
hev fbad63bb8c
feat: Add basic support for LoongArch (#67) 2025-04-27 17:11:58 +08:00
0x676e67 cb25aadd4e v4.15.12 2025-04-23 12:55:37 +08:00
0x676e67 ee6d225ea3
ci: use ubuntu-latest (#66) 2025-04-23 12:54:54 +08:00
0x676e67 6458b54e6a
docs(boring): fix doc warning (#65) 2025-04-23 12:50:43 +08:00
dependabot[bot] c72c81aedd
build(deps): update brotli requirement from 7 to 8 (#64)
---
updated-dependencies:
- dependency-name: brotli
  dependency-version: 7.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 12:07:36 +08:00
Rushil Mehra 9c4ea22f72 Use ubuntu-latest for all ci jobs
ubuntu 20.04 is now deprecated:
https://github.com/actions/runner-images/issues/11101
2025-04-17 01:18:30 -07:00
Shih-Chiang Chien b29537e08f fix clippy error 2025-04-17 01:18:30 -07:00
Shih-Chiang Chien 220bedf239 expose SSL_set_compliance_policy 2025-04-17 01:18:30 -07:00
0x676e67 49a8d0906a
feat(x509): Implement `Clone` for `X509Store` (#339)
* boring(x509): impl Clone of X509Store
2025-04-07 18:05:27 +01:00
0x676e67 42d2398fcd
Create dependabot.yml 2025-04-05 19:43:37 +08:00
Rushil Mehra 20ad2665b2
Release 4.16.0 (#341) 2025-04-02 18:26:29 -07:00
Rushil Mehra 721b6fca2e
Add fips-precompiled feature to support newer versions of FIPS (#338)
Newer versions of FIPS don't need any special casing in our bindings,
unlike the submoduled boringssl-fips. In addition, many users currently
use FIPS by precompiling BoringSSL with the proper build tools and
passing that in to the bindings.

Until we adopt the Update Stream pattern for FIPS, there are two main
use cases:

1. Passing an unmodified, precompiled FIPS validated version of
   boringssl (fips-precompiled)

2. Passing a custom source directory of boringssl meant to be linked
   with a FIPS validated bcm.o. This is mainly useful if you carry
   custom patches but still want to use a FIPS validated BoringCrypto.
   (fips-link-precompiled)

This commit introduces the `fips-precompiled` feature and removes the
`fips-no-compat` feature.
2025-03-31 12:34:29 -07:00
0x676e67 ba1ee0dd48 v4.15.11 2025-03-21 20:38:44 +08:00
0x676e67 f55f9e1dd2
build: update workflows action (#61) 2025-03-21 19:36:03 +08:00
0x676e67 2576807382 chore: clippy fix 2025-03-21 18:28:13 +08:00
0x676e67 9c6c805947
Update issue templates 2025-03-21 18:23:14 +08:00
0x676e67 20f203cb57
Update ci.yml 2025-03-21 18:19:39 +08:00
0x676e67 dc306ba199
Delete .github/workflows/semgrep.yml 2025-03-21 18:19:23 +08:00
0x676e67 5ddc6ddb71 Update README.md 2025-03-21 18:18:48 +08:00
0x676e67 360c3949c8 build: fix doc test 2025-03-21 17:56:57 +08:00
0x676e67 6c74708e27 build: Ignore tests that bundle with the upstream boringssl binary 2025-03-21 17:54:31 +08:00
0x676e67 d72c6a4211
boring(x509): impl `Clone` of `X509Store` (#59) 2025-03-21 17:18:21 +08:00
0x676e67 cfe524c10b build: fix `pq-experimental` feature build 2025-03-21 16:56:19 +08:00
0x676e67 80d7385f78 Merge remote-tracking branch 'upstream/master' 2025-03-20 23:25:49 +08:00
0x676e67 94cd4e1498
chore(boring): simplify extensions sort order calculation (#58) 2025-03-20 23:15:54 +08:00
Felix Hanau d5bd85b3e5
Document linking to C++ standard library (#335)
This was added in #264, but not documented so far.
2025-03-18 10:16:43 -05:00
Rushil Mehra 11630058f0
Revert "Remove "fips-no-compat", decouple "fips-compat" from "fips"" (#334) 2025-03-17 21:37:14 -05:00
Christopher Patton d8975dc413 boring: Disable `SslCurve` API with "fips" feature
The "fips" feature implies use of a prebuilt boringSSL. The boringSSL
API consumed by `SslCurve` in incompatible with older versions of
boringSSL.

In the `ffi` bindings, the following symbols don't exist in older
builds:

* NID_X25519MLKEM768
* SSL_CURVE_X25519_MLKEM768
* NID_X25519Kyber768Draft00Old

The following symbols have been renamed:
* SSL_CURVE_P256KYBER768DRAFT00 => SSL_CURVE_P256_KYBER768_DRAFT00
* SSL_CURVE_X25519KYBER512DRAFT00 => SSL_CURVE_X25519_KYBER512_DRAFT00
* SSL_CURVE_X25519KYBER768DRAFT00OLD => SSL_CURVE_X25519_KYBER768_DRAFT00_OLD
* SSL_CURVE_P256KYBER768DRAFT00 => SSL_CURVE_P256_KYBER768_DRAFT00

Meanwhile, the `ssl_set_curves_list()` API is stable across these
versions of boringSSL.

These codepoints are added to the `SslCurve` API whenever
"pq-experimental" is enabled. Since this feature is no longer mutually
exclusive with prebuilt boringSSL (`boring-sys` just ignores patches),
we also need to disable this API whenever "fips" is enabled.
2025-03-16 08:45:01 +00:00
Christopher Patton 867f2b3b99 boring-sys: Ignore patches when boringSSL is precompiled
Internal users often have two builds for `boring`, one using a
precompiled build of boringSSL and another built from source with
patches applied. However the features that enable these builds are
mutually exclusive. For example, the `"pq-experimental"` feature is
required to build the source with all of the necessary codepoints for PQ
key exchange, but if this feature is enabled and a precompiled boringSSL
is provided, then the build will fail. This means users will have to
also control their builds with mutually exclusive features.

An alternative is to *ignore* features that enable patches whenever a
precompiled boringSSL is provided. This is a little different from the
"assume patched" environment variable, which applies whenever we're
building from source.
2025-03-16 08:45:01 +00:00
Christopher Patton 57307d739e Remove "fips-no-compat", decouple "fips-compat" from "fips"
Modify the "fips" feature so that it no longer implies "fips-compat".
The latter is no longer needed for recent builds of boringSSL; users who
need older builds will need to enable "fips-compat" explicitly.

Also, remove the "fipps-no-compat" feature, as it's now equivalent to
"fips".
2025-03-16 08:43:52 +00:00
Christopher Patton c774afc859 Add feature "fips-no-compat"
As of boringSSL commit a430310d6563c0734ddafca7731570dfb683dc19, we no
longer need to make exceptions for the types of BufLen, ProtosLen, and
ValueLen, which means the "fips-compat" feature is no longer needed for
"fips" users.

Currently "fips" implies "fips-compat". To allow users to upgrade
without breaking API compatibility with boring version 4, add a new
feature, "fips-no-compat", that does not imply "fips-compat".

In boring 5, we should remove "fips-no-compat" and decouple
"fips-compat" from "fips".
2025-03-14 22:22:41 +00:00
Christopher Patton dde4b9ccde
Advertise X25519MLKEM768 with "kx-client-pq-preferred" (#329)
This algorithm is advertised with "kx-client-pq-supported" but not with
"preferred". However the algorithm is wide spread enough that preferring
it is not a significant risk.
2025-03-10 11:30:56 -07:00
andrew-signal 221efdfea9
Update to actions/cache@v4 (#328) 2025-03-10 10:03:32 -07:00
0x676e67 d3911bfc86 v4.15.9 2025-03-07 11:10:14 +08:00
0x676e67 d69d6b9cb3
feat: Allow overriding AES encryption for Encrypted Client Hello (#57) 2025-03-07 11:02:38 +08:00
Rushil Mehra ae1851ba03
Add missing release notes entry (#324)
v4.15.0 was tagged a few days ago but wasn't released until today, where
a new commit made it to master and snuck into the publish. I updated the
v4.15.0 tag to point to the right commit hash as well.
2025-02-28 10:54:55 -08:00
Yury Yarashevich 5268f63a77
Expose API to enable certificate compression. (#241) 2025-02-27 15:09:07 +00:00