diff --git a/Makefile b/Makefile
index d0ec900d427..94a397db34d 100644
--- a/Makefile
+++ b/Makefile
@@ -5913,6 +5913,7 @@ LIBBORINGSSL_SRC = \
third_party/boringssl-with-bazel/src/crypto/cpu-intel.c \
third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c \
third_party/boringssl-with-bazel/src/crypto/crypto.c \
+ third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c \
third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c \
third_party/boringssl-with-bazel/src/crypto/dh/check.c \
third_party/boringssl-with-bazel/src/crypto/dh/dh.c \
@@ -5923,6 +5924,7 @@ LIBBORINGSSL_SRC = \
third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c \
third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c \
third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c \
+ third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c \
third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c \
third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c \
third_party/boringssl-with-bazel/src/crypto/engine/engine.c \
@@ -5987,6 +5989,8 @@ LIBBORINGSSL_SRC = \
third_party/boringssl-with-bazel/src/crypto/thread_none.c \
third_party/boringssl-with-bazel/src/crypto/thread_pthread.c \
third_party/boringssl-with-bazel/src/crypto/thread_win.c \
+ third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c \
+ third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c \
third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c \
third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c \
third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c \
@@ -6105,7 +6109,6 @@ LIBBORINGSSL_SRC = \
third_party/boringssl-with-bazel/src/ssl/tls13_server.cc \
third_party/boringssl-with-bazel/src/ssl/tls_method.cc \
third_party/boringssl-with-bazel/src/ssl/tls_record.cc \
- third_party/boringssl-with-bazel/src/third_party/fiat/curve25519.c \
PUBLIC_HEADERS_C += \
@@ -19162,6 +19165,7 @@ BORINGSSL_CRYPTO_TEST_SRC = \
third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5_test.cc \
third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_test.cc \
third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg_test.cc \
+ third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect_test.cc \
third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha_test.cc \
third_party/boringssl-with-bazel/src/crypto/hkdf/hkdf_test.cc \
third_party/boringssl-with-bazel/src/crypto/hmac_extra/hmac_test.cc \
@@ -19185,6 +19189,7 @@ BORINGSSL_CRYPTO_TEST_SRC = \
third_party/boringssl-with-bazel/src/crypto/test/file_test_gtest.cc \
third_party/boringssl-with-bazel/src/crypto/test/gtest_main.cc \
third_party/boringssl-with-bazel/src/crypto/thread_test.cc \
+ third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token_test.cc \
third_party/boringssl-with-bazel/src/crypto/x509/x509_test.cc \
third_party/boringssl-with-bazel/src/crypto/x509/x509_time_test.cc \
third_party/boringssl-with-bazel/src/crypto/x509v3/tab_test.cc \
@@ -19286,6 +19291,8 @@ $(OBJDIR)/$(CONFIG)/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes
$(OBJDIR)/$(CONFIG)/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg_test.o: $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
+$(OBJDIR)/$(CONFIG)/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect_test.o: $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
+
$(OBJDIR)/$(CONFIG)/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha_test.o: $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
$(OBJDIR)/$(CONFIG)/third_party/boringssl-with-bazel/src/crypto/hkdf/hkdf_test.o: $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
@@ -19332,6 +19339,8 @@ $(OBJDIR)/$(CONFIG)/third_party/boringssl-with-bazel/src/crypto/test/gtest_main.
$(OBJDIR)/$(CONFIG)/third_party/boringssl-with-bazel/src/crypto/thread_test.o: $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
+$(OBJDIR)/$(CONFIG)/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token_test.o: $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
+
$(OBJDIR)/$(CONFIG)/third_party/boringssl-with-bazel/src/crypto/x509/x509_test.o: $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
$(OBJDIR)/$(CONFIG)/third_party/boringssl-with-bazel/src/crypto/x509/x509_time_test.o: $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
diff --git a/bazel/grpc_deps.bzl b/bazel/grpc_deps.bzl
index 96b8347a109..4d2b3244de9 100644
--- a/bazel/grpc_deps.bzl
+++ b/bazel/grpc_deps.bzl
@@ -131,11 +131,11 @@ def grpc_deps():
name = "boringssl",
# Use github mirror instead of https://boringssl.googlesource.com/boringssl
# to obtain a boringssl archive with consistent sha256
- sha256 = "a3d4de4f03cb321ef943678d72a045c9a19d26b23d6f4e313f97600c65201a27",
- strip_prefix = "boringssl-1c2769383f027befac5b75b6cedd25daf3bf4dcf",
+ sha256 = "3909329105e28cfeedcd8028865c92f1081ae2524a0ad6c09eba5d91d9ae3869",
+ strip_prefix = "boringssl-3ab047a8e377083a9b38dc908fe1612d5743a021",
urls = [
- "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/1c2769383f027befac5b75b6cedd25daf3bf4dcf.tar.gz",
- "https://github.com/google/boringssl/archive/1c2769383f027befac5b75b6cedd25daf3bf4dcf.tar.gz",
+ "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/3ab047a8e377083a9b38dc908fe1612d5743a021.tar.gz",
+ "https://github.com/google/boringssl/archive/3ab047a8e377083a9b38dc908fe1612d5743a021.tar.gz",
],
)
diff --git a/config.m4 b/config.m4
index 77652ca42df..3a9358bf5c2 100644
--- a/config.m4
+++ b/config.m4
@@ -626,6 +626,7 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl-with-bazel/src/crypto/cpu-intel.c \
third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c \
third_party/boringssl-with-bazel/src/crypto/crypto.c \
+ third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c \
third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c \
third_party/boringssl-with-bazel/src/crypto/dh/check.c \
third_party/boringssl-with-bazel/src/crypto/dh/dh.c \
@@ -636,6 +637,7 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c \
third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c \
third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c \
+ third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c \
third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c \
third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c \
third_party/boringssl-with-bazel/src/crypto/engine/engine.c \
@@ -700,6 +702,8 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl-with-bazel/src/crypto/thread_none.c \
third_party/boringssl-with-bazel/src/crypto/thread_pthread.c \
third_party/boringssl-with-bazel/src/crypto/thread_win.c \
+ third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c \
+ third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c \
third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c \
third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c \
third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c \
@@ -818,7 +822,6 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl-with-bazel/src/ssl/tls13_server.cc \
third_party/boringssl-with-bazel/src/ssl/tls_method.cc \
third_party/boringssl-with-bazel/src/ssl/tls_record.cc \
- third_party/boringssl-with-bazel/src/third_party/fiat/curve25519.c \
third_party/upb/upb/decode.c \
third_party/upb/upb/encode.c \
third_party/upb/upb/msg.c \
@@ -986,9 +989,9 @@ if test "$PHP_GRPC" != "no"; then
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/rsa_extra)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/siphash)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/stack)
+ PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/trust_token)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/x509)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/x509v3)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/ssl)
- PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/third_party/fiat)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/upb/upb)
fi
diff --git a/config.w32 b/config.w32
index a090827e55c..41705ca7fff 100644
--- a/config.w32
+++ b/config.w32
@@ -595,6 +595,7 @@ if (PHP_GRPC != "no") {
"third_party\\boringssl-with-bazel\\src\\crypto\\cpu-intel.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\cpu-ppc64le.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\crypto.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\curve25519\\curve25519.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\curve25519\\spake25519.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\dh\\check.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\dh\\dh.c " +
@@ -605,6 +606,7 @@ if (PHP_GRPC != "no") {
"third_party\\boringssl-with-bazel\\src\\crypto\\dsa\\dsa_asn1.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\ec_extra\\ec_asn1.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\ec_extra\\ec_derive.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\ec_extra\\hash_to_curve.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\ecdh_extra\\ecdh_extra.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\ecdsa_extra\\ecdsa_asn1.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\engine\\engine.c " +
@@ -669,6 +671,8 @@ if (PHP_GRPC != "no") {
"third_party\\boringssl-with-bazel\\src\\crypto\\thread_none.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\thread_pthread.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\thread_win.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\trust_token\\pmbtoken.c " +
+ "third_party\\boringssl-with-bazel\\src\\crypto\\trust_token\\trust_token.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\a_digest.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\a_sign.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\a_strex.c " +
@@ -787,7 +791,6 @@ if (PHP_GRPC != "no") {
"third_party\\boringssl-with-bazel\\src\\ssl\\tls13_server.cc " +
"third_party\\boringssl-with-bazel\\src\\ssl\\tls_method.cc " +
"third_party\\boringssl-with-bazel\\src\\ssl\\tls_record.cc " +
- "third_party\\boringssl-with-bazel\\src\\third_party\\fiat\\curve25519.c " +
"third_party\\upb\\upb\\decode.c " +
"third_party\\upb\\upb\\encode.c " +
"third_party\\upb\\upb\\msg.c " +
@@ -1025,11 +1028,10 @@ if (PHP_GRPC != "no") {
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\rsa_extra");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\siphash");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\stack");
+ FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\trust_token");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\x509");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\x509v3");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\ssl");
- FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\third_party");
- FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\third_party\\fiat");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\upb");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\upb\\upb");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\zlib");
diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec
index fcc3dfb3f42..25573e36be4 100644
--- a/gRPC-Core.podspec
+++ b/gRPC-Core.podspec
@@ -172,7 +172,7 @@ Pod::Spec.new do |s|
ss.header_mappings_dir = '.'
ss.libraries = 'z'
ss.dependency "#{s.name}/Interface", version
- ss.dependency 'BoringSSL-GRPC', '0.0.8'
+ ss.dependency 'BoringSSL-GRPC', '0.0.9'
abseil_version = '1.20200225.0'
ss.dependency 'abseil/container/inlined_vector', abseil_version
ss.dependency 'abseil/memory/memory', abseil_version
diff --git a/grpc.gemspec b/grpc.gemspec
index eea8997a365..46afce253e0 100644
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -1185,6 +1185,9 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/crypto/cpu-intel.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/crypto.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/dh/check.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/dh/dh.c )
@@ -1195,6 +1198,8 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/engine/engine.c )
@@ -1270,6 +1275,8 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c )
@@ -1292,6 +1299,9 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c )
@@ -1354,6 +1364,9 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/crypto/thread_none.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/thread_pthread.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/thread_win.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c )
+ s.files += %w( third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c )
@@ -1513,6 +1526,7 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/stack.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/thread.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/tls1.h )
+ s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/trust_token.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/type_check.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/x509.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h )
@@ -1554,12 +1568,8 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/ssl/tls13_server.cc )
s.files += %w( third_party/boringssl-with-bazel/src/ssl/tls_method.cc )
s.files += %w( third_party/boringssl-with-bazel/src/ssl/tls_record.cc )
- s.files += %w( third_party/boringssl-with-bazel/src/third_party/fiat/curve25519.c )
s.files += %w( third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h )
s.files += %w( third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h )
- s.files += %w( third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_tables.h )
- s.files += %w( third_party/boringssl-with-bazel/src/third_party/fiat/internal.h )
- s.files += %w( third_party/boringssl-with-bazel/src/third_party/fiat/p256.c )
s.files += %w( third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h )
s.files += %w( third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h )
s.files += %w( third_party/cares/ares_build.h )
diff --git a/grpc.gyp b/grpc.gyp
index 71c8fcf0a21..b0618d14784 100644
--- a/grpc.gyp
+++ b/grpc.gyp
@@ -1610,6 +1610,7 @@
'third_party/boringssl-with-bazel/src/crypto/cpu-intel.c',
'third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c',
'third_party/boringssl-with-bazel/src/crypto/crypto.c',
+ 'third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c',
'third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c',
'third_party/boringssl-with-bazel/src/crypto/dh/check.c',
'third_party/boringssl-with-bazel/src/crypto/dh/dh.c',
@@ -1620,6 +1621,7 @@
'third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c',
'third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c',
'third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c',
+ 'third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c',
'third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c',
'third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c',
'third_party/boringssl-with-bazel/src/crypto/engine/engine.c',
@@ -1684,6 +1686,8 @@
'third_party/boringssl-with-bazel/src/crypto/thread_none.c',
'third_party/boringssl-with-bazel/src/crypto/thread_pthread.c',
'third_party/boringssl-with-bazel/src/crypto/thread_win.c',
+ 'third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c',
+ 'third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c',
'third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c',
'third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c',
'third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c',
@@ -1802,7 +1806,6 @@
'third_party/boringssl-with-bazel/src/ssl/tls13_server.cc',
'third_party/boringssl-with-bazel/src/ssl/tls_method.cc',
'third_party/boringssl-with-bazel/src/ssl/tls_record.cc',
- 'third_party/boringssl-with-bazel/src/third_party/fiat/curve25519.c',
],
},
{
diff --git a/package.xml b/package.xml
index 92e56bd43e6..3ef9b91219f 100644
--- a/package.xml
+++ b/package.xml
@@ -1187,6 +1187,9 @@
+
+
+
@@ -1197,6 +1200,8 @@
+
+
@@ -1272,6 +1277,8 @@
+
+
@@ -1294,6 +1301,9 @@
+
+
+
@@ -1356,6 +1366,9 @@
+
+
+
@@ -1515,6 +1528,7 @@
+
@@ -1556,12 +1570,8 @@
-
-
-
-
diff --git a/src/boringssl/boringssl_prefix_symbols.h b/src/boringssl/boringssl_prefix_symbols.h
index 46578af028b..62120400a75 100644
--- a/src/boringssl/boringssl_prefix_symbols.h
+++ b/src/boringssl/boringssl_prefix_symbols.h
@@ -1,4 +1,4 @@
-// generated by generate_boringssl_prefix_header.sh on BoringSSL commit: 1c2769383f027befac5b75b6cedd25daf3bf4dcf
+// generated by generate_boringssl_prefix_header.sh on BoringSSL commit: 3ab047a8e377083a9b38dc908fe1612d5743a021
// Copyright (c) 2018, Google Inc.
//
@@ -82,6 +82,7 @@
#define SSL_CTX_flush_sessions BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_flush_sessions)
#define SSL_CTX_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_free)
#define SSL_CTX_get0_certificate BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_get0_certificate)
+#define SSL_CTX_get0_chain BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_get0_chain)
#define SSL_CTX_get0_chain_certs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_get0_chain_certs)
#define SSL_CTX_get0_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_get0_param)
#define SSL_CTX_get0_privatekey BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_get0_privatekey)
@@ -163,7 +164,6 @@
#define SSL_CTX_set_default_verify_paths BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_set_default_verify_paths)
#define SSL_CTX_set_dos_protection_cb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_set_dos_protection_cb)
#define SSL_CTX_set_early_data_enabled BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_set_early_data_enabled)
-#define SSL_CTX_set_ed25519_enabled BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_set_ed25519_enabled)
#define SSL_CTX_set_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_set_ex_data)
#define SSL_CTX_set_false_start_allowed_without_alpn BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_set_false_start_allowed_without_alpn)
#define SSL_CTX_set_grease_enabled BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_set_grease_enabled)
@@ -229,6 +229,7 @@
#define SSL_CTX_use_certificate_chain_file BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_use_certificate_chain_file)
#define SSL_CTX_use_certificate_file BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_use_certificate_file)
#define SSL_CTX_use_psk_identity_hint BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_use_psk_identity_hint)
+#define SSL_SESSION_copy_without_early_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_SESSION_copy_without_early_data)
#define SSL_SESSION_early_data_capable BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_SESSION_early_data_capable)
#define SSL_SESSION_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_SESSION_free)
#define SSL_SESSION_from_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_SESSION_from_bytes)
@@ -456,6 +457,7 @@
#define SSL_set_psk_client_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_psk_client_callback)
#define SSL_set_psk_server_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_psk_server_callback)
#define SSL_set_purpose BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_purpose)
+#define SSL_set_quic_early_data_context BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_quic_early_data_context)
#define SSL_set_quic_method BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_quic_method)
#define SSL_set_quic_transport_params BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_quic_transport_params)
#define SSL_set_quiet_shutdown BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_quiet_shutdown)
@@ -485,6 +487,7 @@
#define SSL_set_token_binding_params BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_token_binding_params)
#define SSL_set_trust BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_trust)
#define SSL_set_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_verify)
+#define SSL_set_verify_algorithm_prefs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_verify_algorithm_prefs)
#define SSL_set_verify_depth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_verify_depth)
#define SSL_set_verify_result BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_verify_result)
#define SSL_set_wfd BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_wfd)
@@ -853,6 +856,7 @@
#define BIO_write_filename BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_write_filename)
#define BN_BLINDING_convert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_BLINDING_convert)
#define BN_BLINDING_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_BLINDING_free)
+#define BN_BLINDING_invalidate BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_BLINDING_invalidate)
#define BN_BLINDING_invert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_BLINDING_invert)
#define BN_BLINDING_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_BLINDING_new)
#define BN_CTX_end BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_CTX_end)
@@ -1117,6 +1121,7 @@
#define CRYPTO_cleanup_all_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_cleanup_all_ex_data)
#define CRYPTO_ctr128_encrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_ctr128_encrypt)
#define CRYPTO_ctr128_encrypt_ctr32 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_ctr128_encrypt_ctr32)
+#define CRYPTO_fork_detect_ignore_madv_wipeonfork_for_testing BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_fork_detect_ignore_madv_wipeonfork_for_testing)
#define CRYPTO_free_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_free_ex_data)
#define CRYPTO_gcm128_aad BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_gcm128_aad)
#define CRYPTO_gcm128_decrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_gcm128_decrypt)
@@ -1132,12 +1137,14 @@
#define CRYPTO_get_dynlock_lock_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_dynlock_lock_callback)
#define CRYPTO_get_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_ex_data)
#define CRYPTO_get_ex_new_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_ex_new_index)
+#define CRYPTO_get_fork_generation BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_fork_generation)
#define CRYPTO_get_lock_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_lock_name)
#define CRYPTO_get_locking_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_locking_callback)
#define CRYPTO_get_thread_local BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_thread_local)
#define CRYPTO_ghash_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_ghash_init)
#define CRYPTO_has_asm BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_has_asm)
#define CRYPTO_hchacha20 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_hchacha20)
+#define CRYPTO_init_sysrand BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_init_sysrand)
#define CRYPTO_is_confidential_build BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_is_confidential_build)
#define CRYPTO_library_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_library_init)
#define CRYPTO_malloc_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_malloc_init)
@@ -1149,6 +1156,7 @@
#define CRYPTO_poly1305_finish BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_poly1305_finish)
#define CRYPTO_poly1305_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_poly1305_init)
#define CRYPTO_poly1305_update BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_poly1305_update)
+#define CRYPTO_pre_sandbox_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_pre_sandbox_init)
#define CRYPTO_rdrand BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_rdrand)
#define CRYPTO_rdrand_multiple8_buf BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_rdrand_multiple8_buf)
#define CRYPTO_refcount_dec_and_test_zero BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_refcount_dec_and_test_zero)
@@ -1162,6 +1170,7 @@
#define CRYPTO_set_locking_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_set_locking_callback)
#define CRYPTO_set_thread_local BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_set_thread_local)
#define CRYPTO_sysrand BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_sysrand)
+#define CRYPTO_sysrand_if_available BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_sysrand_if_available)
#define CRYPTO_tls1_prf BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_tls1_prf)
#define CTR_DRBG_clear BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CTR_DRBG_clear)
#define CTR_DRBG_generate BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CTR_DRBG_generate)
@@ -1184,8 +1193,13 @@
#define DH_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_free)
#define DH_generate_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_generate_key)
#define DH_generate_parameters_ex BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_generate_parameters_ex)
+#define DH_get0_g BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_get0_g)
#define DH_get0_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_get0_key)
+#define DH_get0_p BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_get0_p)
#define DH_get0_pqg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_get0_pqg)
+#define DH_get0_priv_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_get0_priv_key)
+#define DH_get0_pub_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_get0_pub_key)
+#define DH_get0_q BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_get0_q)
#define DH_get_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_get_ex_data)
#define DH_get_ex_new_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_get_ex_new_index)
#define DH_marshal_parameters BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_marshal_parameters)
@@ -1195,6 +1209,7 @@
#define DH_set0_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_set0_key)
#define DH_set0_pqg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_set0_pqg)
#define DH_set_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_set_ex_data)
+#define DH_set_length BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_set_length)
#define DH_size BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_size)
#define DH_up_ref BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DH_up_ref)
#define DHparams_dup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DHparams_dup)
@@ -1223,8 +1238,13 @@
#define DSA_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DSA_free)
#define DSA_generate_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DSA_generate_key)
#define DSA_generate_parameters_ex BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DSA_generate_parameters_ex)
+#define DSA_get0_g BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DSA_get0_g)
#define DSA_get0_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DSA_get0_key)
+#define DSA_get0_p BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DSA_get0_p)
#define DSA_get0_pqg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DSA_get0_pqg)
+#define DSA_get0_priv_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DSA_get0_priv_key)
+#define DSA_get0_pub_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DSA_get0_pub_key)
+#define DSA_get0_q BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DSA_get0_q)
#define DSA_get_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DSA_get_ex_data)
#define DSA_get_ex_new_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DSA_get_ex_new_index)
#define DSA_marshal_parameters BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DSA_marshal_parameters)
@@ -1247,6 +1267,8 @@
#define ECDSA_SIG_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ECDSA_SIG_free)
#define ECDSA_SIG_from_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ECDSA_SIG_from_bytes)
#define ECDSA_SIG_get0 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ECDSA_SIG_get0)
+#define ECDSA_SIG_get0_r BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ECDSA_SIG_get0_r)
+#define ECDSA_SIG_get0_s BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ECDSA_SIG_get0_s)
#define ECDSA_SIG_marshal BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ECDSA_SIG_marshal)
#define ECDSA_SIG_max_len BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ECDSA_SIG_max_len)
#define ECDSA_SIG_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ECDSA_SIG_new)
@@ -1651,6 +1673,7 @@
#define EVP_sha256 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_sha256)
#define EVP_sha384 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_sha384)
#define EVP_sha512 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_sha512)
+#define EVP_sha512_256 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_sha512_256)
#define EVP_tls_cbc_copy_mac BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_tls_cbc_copy_mac)
#define EVP_tls_cbc_digest_record BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_tls_cbc_digest_record)
#define EVP_tls_cbc_record_digest_supported BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_tls_cbc_record_digest_supported)
@@ -1927,6 +1950,7 @@
#define PKEY_USAGE_PERIOD_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, PKEY_USAGE_PERIOD_free)
#define PKEY_USAGE_PERIOD_it BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, PKEY_USAGE_PERIOD_it)
#define PKEY_USAGE_PERIOD_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, PKEY_USAGE_PERIOD_new)
+#define PMBTOKEN_PRETOKEN_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, PMBTOKEN_PRETOKEN_free)
#define POLICYINFO_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, POLICYINFO_free)
#define POLICYINFO_it BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, POLICYINFO_it)
#define POLICYINFO_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, POLICYINFO_new)
@@ -1960,7 +1984,6 @@
#define RAND_pseudo_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_pseudo_bytes)
#define RAND_seed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_seed)
#define RAND_set_rand_method BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_set_rand_method)
-#define RAND_set_urandom_fd BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_set_urandom_fd)
#define RAND_status BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_status)
#define RC4 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RC4)
#define RC4_set_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RC4_set_key)
@@ -1983,8 +2006,16 @@
#define RSA_generate_key_ex BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_generate_key_ex)
#define RSA_generate_key_fips BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_generate_key_fips)
#define RSA_get0_crt_params BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_crt_params)
+#define RSA_get0_d BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_d)
+#define RSA_get0_dmp1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_dmp1)
+#define RSA_get0_dmq1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_dmq1)
+#define RSA_get0_e BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_e)
#define RSA_get0_factors BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_factors)
+#define RSA_get0_iqmp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_iqmp)
#define RSA_get0_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_key)
+#define RSA_get0_n BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_n)
+#define RSA_get0_p BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_p)
+#define RSA_get0_q BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_q)
#define RSA_get_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get_ex_data)
#define RSA_get_ex_new_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get_ex_new_index)
#define RSA_is_opaque BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_is_opaque)
@@ -2045,6 +2076,10 @@
#define SHA384_Init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SHA384_Init)
#define SHA384_Update BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SHA384_Update)
#define SHA512 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SHA512)
+#define SHA512_256 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SHA512_256)
+#define SHA512_256_Final BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SHA512_256_Final)
+#define SHA512_256_Init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SHA512_256_Init)
+#define SHA512_256_Update BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SHA512_256_Update)
#define SHA512_Final BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SHA512_Final)
#define SHA512_Init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SHA512_Init)
#define SHA512_Transform BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SHA512_Transform)
@@ -2068,6 +2103,27 @@
#define SXNET_get_id_ulong BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SXNET_get_id_ulong)
#define SXNET_it BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SXNET_it)
#define SXNET_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SXNET_new)
+#define TRUST_TOKEN_CLIENT_add_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_CLIENT_add_key)
+#define TRUST_TOKEN_CLIENT_begin_issuance BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_CLIENT_begin_issuance)
+#define TRUST_TOKEN_CLIENT_begin_redemption BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_CLIENT_begin_redemption)
+#define TRUST_TOKEN_CLIENT_finish_issuance BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_CLIENT_finish_issuance)
+#define TRUST_TOKEN_CLIENT_finish_redemption BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_CLIENT_finish_redemption)
+#define TRUST_TOKEN_CLIENT_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_CLIENT_free)
+#define TRUST_TOKEN_CLIENT_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_CLIENT_new)
+#define TRUST_TOKEN_CLIENT_set_srr_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_CLIENT_set_srr_key)
+#define TRUST_TOKEN_ISSUER_add_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_ISSUER_add_key)
+#define TRUST_TOKEN_ISSUER_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_ISSUER_free)
+#define TRUST_TOKEN_ISSUER_issue BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_ISSUER_issue)
+#define TRUST_TOKEN_ISSUER_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_ISSUER_new)
+#define TRUST_TOKEN_ISSUER_redeem BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_ISSUER_redeem)
+#define TRUST_TOKEN_ISSUER_set_metadata_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_ISSUER_set_metadata_key)
+#define TRUST_TOKEN_ISSUER_set_srr_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_ISSUER_set_srr_key)
+#define TRUST_TOKEN_decode_private_metadata BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_decode_private_metadata)
+#define TRUST_TOKEN_experiment_v0 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_experiment_v0)
+#define TRUST_TOKEN_experiment_v1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_experiment_v1)
+#define TRUST_TOKEN_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_free)
+#define TRUST_TOKEN_generate_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_generate_key)
+#define TRUST_TOKEN_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_new)
#define USERNOTICE_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, USERNOTICE_free)
#define USERNOTICE_it BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, USERNOTICE_it)
#define USERNOTICE_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, USERNOTICE_new)
@@ -2343,6 +2399,7 @@
#define X509_STORE_CTX_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_cleanup)
#define X509_STORE_CTX_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_free)
#define X509_STORE_CTX_get0_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_cert)
+#define X509_STORE_CTX_get0_chain BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_chain)
#define X509_STORE_CTX_get0_current_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_current_crl)
#define X509_STORE_CTX_get0_current_issuer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_current_issuer)
#define X509_STORE_CTX_get0_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_param)
@@ -2517,6 +2574,8 @@
#define X509_get_serialNumber BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get_serialNumber)
#define X509_get_signature_nid BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get_signature_nid)
#define X509_get_subject_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get_subject_name)
+#define X509_getm_notAfter BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_getm_notAfter)
+#define X509_getm_notBefore BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_getm_notBefore)
#define X509_gmtime_adj BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_gmtime_adj)
#define X509_issuer_and_serial_cmp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_issuer_and_serial_cmp)
#define X509_issuer_and_serial_hash BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_issuer_and_serial_hash)
@@ -2711,9 +2770,9 @@
#define bn_mod_add_words BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mod_add_words)
#define bn_mod_exp_base_2_consttime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mod_exp_base_2_consttime)
#define bn_mod_exp_mont_small BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mod_exp_mont_small)
+#define bn_mod_inverse0_prime_mont_small BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mod_inverse0_prime_mont_small)
#define bn_mod_inverse_consttime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mod_inverse_consttime)
#define bn_mod_inverse_prime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mod_inverse_prime)
-#define bn_mod_inverse_prime_mont_small BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mod_inverse_prime_mont_small)
#define bn_mod_inverse_secret_prime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mod_inverse_secret_prime)
#define bn_mod_lshift1_consttime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mod_lshift1_consttime)
#define bn_mod_lshift_consttime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mod_lshift_consttime)
@@ -2898,20 +2957,24 @@
#define d2i_X509_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_fp)
#define dsa_asn1_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, dsa_asn1_meth)
#define ec_GFp_mont_add BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_add)
-#define ec_GFp_mont_bignum_to_felem BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_bignum_to_felem)
#define ec_GFp_mont_dbl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_dbl)
+#define ec_GFp_mont_felem_from_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_felem_from_bytes)
#define ec_GFp_mont_felem_mul BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_felem_mul)
#define ec_GFp_mont_felem_sqr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_felem_sqr)
-#define ec_GFp_mont_felem_to_bignum BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_felem_to_bignum)
+#define ec_GFp_mont_felem_to_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_felem_to_bytes)
#define ec_GFp_mont_group_finish BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_group_finish)
#define ec_GFp_mont_group_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_group_init)
#define ec_GFp_mont_group_set_curve BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_group_set_curve)
+#define ec_GFp_mont_init_precomp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_init_precomp)
#define ec_GFp_mont_mul BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_mul)
#define ec_GFp_mont_mul_base BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_mul_base)
-#define ec_GFp_mont_mul_public BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_mul_public)
+#define ec_GFp_mont_mul_batch BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_mul_batch)
+#define ec_GFp_mont_mul_precomp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_mul_precomp)
+#define ec_GFp_mont_mul_public_batch BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_mul_public_batch)
#define ec_GFp_nistp_recode_scalar_bits BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_nistp_recode_scalar_bits)
-#define ec_GFp_simple_cmp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_cmp)
#define ec_GFp_simple_cmp_x_coordinate BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_cmp_x_coordinate)
+#define ec_GFp_simple_felem_from_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_felem_from_bytes)
+#define ec_GFp_simple_felem_to_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_felem_to_bytes)
#define ec_GFp_simple_group_finish BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_group_finish)
#define ec_GFp_simple_group_get_curve BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_group_get_curve)
#define ec_GFp_simple_group_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_group_init)
@@ -2919,11 +2982,13 @@
#define ec_GFp_simple_invert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_invert)
#define ec_GFp_simple_is_at_infinity BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_is_at_infinity)
#define ec_GFp_simple_is_on_curve BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_is_on_curve)
-#define ec_GFp_simple_mont_inv_mod_ord_vartime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_mont_inv_mod_ord_vartime)
#define ec_GFp_simple_point_copy BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_point_copy)
#define ec_GFp_simple_point_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_point_init)
-#define ec_GFp_simple_point_set_affine_coordinates BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_point_set_affine_coordinates)
#define ec_GFp_simple_point_set_to_infinity BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_point_set_to_infinity)
+#define ec_GFp_simple_points_equal BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_points_equal)
+#define ec_affine_jacobian_equal BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_affine_jacobian_equal)
+#define ec_affine_select BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_affine_select)
+#define ec_affine_to_jacobian BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_affine_to_jacobian)
#define ec_asn1_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_asn1_meth)
#define ec_bignum_to_felem BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_bignum_to_felem)
#define ec_bignum_to_scalar BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_bignum_to_scalar)
@@ -2931,28 +2996,53 @@
#define ec_compute_wNAF BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_compute_wNAF)
#define ec_felem_add BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_felem_add)
#define ec_felem_equal BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_felem_equal)
+#define ec_felem_from_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_felem_from_bytes)
#define ec_felem_neg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_felem_neg)
#define ec_felem_non_zero_mask BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_felem_non_zero_mask)
#define ec_felem_select BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_felem_select)
#define ec_felem_sub BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_felem_sub)
#define ec_felem_to_bignum BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_felem_to_bignum)
+#define ec_felem_to_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_felem_to_bytes)
+#define ec_get_x_coordinate_as_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_get_x_coordinate_as_bytes)
#define ec_get_x_coordinate_as_scalar BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_get_x_coordinate_as_scalar)
#define ec_group_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_group_new)
+#define ec_hash_to_curve_p384_xmd_sha512_sswu_draft07 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_hash_to_curve_p384_xmd_sha512_sswu_draft07)
+#define ec_hash_to_curve_p521_xmd_sha512_sswu_draft06 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_hash_to_curve_p521_xmd_sha512_sswu_draft06)
+#define ec_hash_to_scalar_p384_xmd_sha512_draft07 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_hash_to_scalar_p384_xmd_sha512_draft07)
+#define ec_hash_to_scalar_p521_xmd_sha512_draft06 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_hash_to_scalar_p521_xmd_sha512_draft06)
+#define ec_init_precomp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_init_precomp)
+#define ec_jacobian_to_affine BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_jacobian_to_affine)
+#define ec_jacobian_to_affine_batch BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_jacobian_to_affine_batch)
#define ec_pkey_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_pkey_meth)
-#define ec_point_get_affine_coordinate_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_point_get_affine_coordinate_bytes)
+#define ec_point_from_uncompressed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_point_from_uncompressed)
#define ec_point_mul_scalar BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_point_mul_scalar)
#define ec_point_mul_scalar_base BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_point_mul_scalar_base)
+#define ec_point_mul_scalar_batch BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_point_mul_scalar_batch)
+#define ec_point_mul_scalar_precomp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_point_mul_scalar_precomp)
#define ec_point_mul_scalar_public BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_point_mul_scalar_public)
+#define ec_point_mul_scalar_public_batch BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_point_mul_scalar_public_batch)
+#define ec_point_select BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_point_select)
+#define ec_point_set_affine_coordinates BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_point_set_affine_coordinates)
+#define ec_point_to_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_point_to_bytes)
+#define ec_precomp_select BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_precomp_select)
#define ec_random_nonzero_scalar BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_random_nonzero_scalar)
#define ec_scalar_add BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_add)
#define ec_scalar_equal_vartime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_equal_vartime)
+#define ec_scalar_from_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_from_bytes)
#define ec_scalar_from_montgomery BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_from_montgomery)
-#define ec_scalar_inv_montgomery BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_inv_montgomery)
-#define ec_scalar_inv_montgomery_vartime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_inv_montgomery_vartime)
+#define ec_scalar_inv0_montgomery BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_inv0_montgomery)
#define ec_scalar_is_zero BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_is_zero)
#define ec_scalar_mul_montgomery BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_mul_montgomery)
+#define ec_scalar_neg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_neg)
+#define ec_scalar_reduce BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_reduce)
+#define ec_scalar_select BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_select)
+#define ec_scalar_sub BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_sub)
+#define ec_scalar_to_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_to_bytes)
#define ec_scalar_to_montgomery BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_to_montgomery)
-#define ec_simple_scalar_inv_montgomery BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_simple_scalar_inv_montgomery)
+#define ec_scalar_to_montgomery_inv_vartime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_scalar_to_montgomery_inv_vartime)
+#define ec_set_to_safe_point BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_set_to_safe_point)
+#define ec_simple_scalar_inv0_montgomery BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_simple_scalar_inv0_montgomery)
+#define ec_simple_scalar_to_montgomery_inv_vartime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_simple_scalar_to_montgomery_inv_vartime)
#define ecp_nistz256_avx2_select_w7 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ecp_nistz256_avx2_select_w7)
#define ecp_nistz256_mul_mont BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ecp_nistz256_mul_mont)
#define ecp_nistz256_neg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ecp_nistz256_neg)
@@ -3148,6 +3238,21 @@
#define pkcs7_bundle BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pkcs7_bundle)
#define pkcs7_parse_header BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pkcs7_parse_header)
#define pkcs8_pbe_decrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pkcs8_pbe_decrypt)
+#define pmbtoken_exp0_blind BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp0_blind)
+#define pmbtoken_exp0_client_key_from_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp0_client_key_from_bytes)
+#define pmbtoken_exp0_generate_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp0_generate_key)
+#define pmbtoken_exp0_issuer_key_from_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp0_issuer_key_from_bytes)
+#define pmbtoken_exp0_read BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp0_read)
+#define pmbtoken_exp0_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp0_sign)
+#define pmbtoken_exp0_unblind BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp0_unblind)
+#define pmbtoken_exp1_blind BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp1_blind)
+#define pmbtoken_exp1_client_key_from_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp1_client_key_from_bytes)
+#define pmbtoken_exp1_generate_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp1_generate_key)
+#define pmbtoken_exp1_get_h_for_testing BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp1_get_h_for_testing)
+#define pmbtoken_exp1_issuer_key_from_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp1_issuer_key_from_bytes)
+#define pmbtoken_exp1_read BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp1_read)
+#define pmbtoken_exp1_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp1_sign)
+#define pmbtoken_exp1_unblind BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp1_unblind)
#define policy_cache_find_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, policy_cache_find_data)
#define policy_cache_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, policy_cache_free)
#define policy_cache_set BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, policy_cache_set)
diff --git a/src/objective-c/BoringSSL-GRPC.podspec b/src/objective-c/BoringSSL-GRPC.podspec
index a6fd9bf42e0..e0eaf376625 100644
--- a/src/objective-c/BoringSSL-GRPC.podspec
+++ b/src/objective-c/BoringSSL-GRPC.podspec
@@ -39,7 +39,7 @@
Pod::Spec.new do |s|
s.name = 'BoringSSL-GRPC'
- version = '0.0.8'
+ version = '0.0.9'
s.version = version
s.summary = 'BoringSSL is a fork of OpenSSL that is designed to meet Google\'s needs.'
# Adapted from the homepage:
@@ -76,7 +76,7 @@ Pod::Spec.new do |s|
s.source = {
:git => 'https://github.com/google/boringssl.git',
- :commit => "1c2769383f027befac5b75b6cedd25daf3bf4dcf",
+ :commit => "3ab047a8e377083a9b38dc908fe1612d5743a021",
}
s.ios.deployment_target = '7.0'
@@ -213,470 +213,486 @@ Pod::Spec.new do |s|
# /src/boringssl/boringssl_prefix_symbols.h. Here we decode the content and inject the header to
# the correct location in BoringSSL.
base64 -D < src/include/openssl/boringssl_prefix_symbols.h
- H4sICAAAAAAC/2JvcmluZ3NzbF9wcmVmaXhfc3ltYm9scy5oAKy9XXOjyJaofT+/wnHm5pyIHTNlV7vb
- +71T2aoqTbtsjyT3dM0NgQSy2YVATSK73L/+zQQE+bFWwlrpiB0zXUbPsyBJ8osk8z//8+wpLdIqrtPk
- bPPW/yPalFVWPAmRR4cq3WU/o+c0TtLqP8TzWVmcfWqOrla3Z9tyv8/q/+/sfHvx26///Hj1cffh4rdN
- uou3l5vfLje/btMkubhM4t3Hze6XZLv7t3/7z/88uy4Pb1X29Fyf/d/t/zu7+HB+9Y+zL2X5lKdni2L7
- H/In6lcPabXPhMhkvLo8O4r0HzLa4e0fZ/syyXby/8dF8p9ldZZkoq6yzbFOz+rnTJyJcle/xlV6tpMH
- 4+JNuQ7H6lCK9Ow1q+UFVM3/L4/12S5NzyTynFapuvoqLmRC/OPsUJUvWSKTpH6Oa/l/0rN4U76kyrTt
- z70o62ybqrNo4x6G8z0dOhzSuDrLirM4zxWZpeJ0deuv87PV/ef1/8yW87PF6uxhef/H4mZ+c/Z/Ziv5
- 7/9zNru7aX40e1x/vV+e3SxW17ezxbfV2ez29kxSy9ndejFfKdf/LNZfz5bzL7OlRO4lJX2D++769vFm
- cfelARffHm4XMsogOLv/rBzf5svrr/Ivs0+L28X6exP+82J9N1+t/kM6zu7uz+Z/zO/WZ6uvyqOd2af5
- 2e1i9ul2fvZZ/mt2913pVg/z68Xs9h/yvJfz6/U/pOL0X/JH1/d3q/l/P0qd/M3Zzezb7Is6kYY+/bO5
- sK+z9epexl3Ky1s93q7VZXxe3n87u71fqTM/e1zNZYzZeqZomYbylFf/kNxcnuBSnfdM/u96vbi/Uz4J
- yNDr5Uydx938y+3iy/zueq7Y+wZY3y/lbx9XHfOPs9lysVJB7x/Xir5XziYL39/dzZvftKmv0kOeS3MW
- 86VMiG+zRvzZvBv/0eT/T/dL6ZSPTzS7uYkelvPPiz/PDrGoU3FWv5ZnMusVdbbL0krIzCMzf1mk8ibU
- KovJTL0X6g9KlNXqaVU5rtyd7eNtVZ6lPw9x0WRC+b+sFmdx9XTcS584k49lKR8LFUg+vf/xb/+eyCe7
- SMHT+b/xP842/w88FC3kpS/bH3gd+g/P4rN///ezSP2fzb8N1OI+2kWylIHPYfhj+4d/DMD/MxwiramW
- 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
+ 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
+ fVNsJdG0Y/tIck9nXliUSNk8oUiFoOy4f/0FSIrEx94g94arTs10TK21SRDEF0Hgv/7r7DEt0iqu0+Rs
+ 89r/I9qUVVY8CpFHhyrdZT+jpzRO0uo/xdNZWZx9bI6uVjdn23K/z+r/d/Y+3rz75bf4Mn3/22/vLt/H
+ v2/eXybb399d7tLzX88vkg+//fI+fndx/m//9l//dXZVHl6r7PGpPvu/2/84u3h3fvmPs89l+ZinZ4ti
+ +5/yJ+pX92m1z4TIZLy6PDuK9B8y2uH1H2f7Msl28v/HRfJfZXWWZKKuss2xTs/qp0yciXJXv8RVeraT
+ B+PiVbkOx+pQivTsJavlBVTN/y+P9dkuTc8k8pRWqbr6Ki5kQvzj7FCVz1kik6R+imv5f9KzeFM+p8q0
+ 7c+9KOtsm6qzaOMehvM9HToc0rg6y4qzOM8VmaXidHXrL/Oz1d2n9f/MlvOzxersfnn35+J6fn32f2Yr
+ +e//cza7vW5+NHtYf7lbnl0vVlc3s8XX1dns5uZMUsvZ7XoxXynX/yzWX86W88+zpUTuJCV9g/v26ubh
+ enH7uQEXX+9vFjLKIDi7+6QcX+fLqy/yL7OPi5vF+lsT/tNifTtfrf5TOs5u787mf85v12erL8qjndnH
+ +dnNYvbxZn72Sf5rdvtN6Vb386vF7OYf8ryX86v1P6Ti9F/yR1d3t6v5Px+kTv7m7Hr2dfZZnUhDn/7Z
+ XNiX2Xp1J+Mu5eWtHm7W6jI+Le++nt3crdSZnz2s5jLGbD1TtExDecqrf0huLk9wqc57Jv93tV7c3Sqf
+ BGTo9XKmzuN2/vlm8Xl+ezVX7F0DrO+W8rcPq475x9lsuVipoHcPa0XfKWeThe9ub+fNb9rUV+khz6U5
+ i/lSJsTXWSP+ZN6N/2zy/8e7pXTKxyeaXV9H98v5p8VfZ4dY1Kk4q1/KM5n1ijrbZWklZOaRmb8sUnkT
+ apXFZKbeC/UHJcpq9bSqHFfuzvbxtirP0p+HuGgyofxfVouzuHo87qVPnG1SCadNIPn0/ue//Xsin+wi
+ BU/n/8b/ONv8B3goWshLX7Y/8Dr0H57FZ//+72eR+j+bfxuoxV20i2QpA5/D8Mf2D/8YgP8wHCKtqZYO
+ GTzX65tVtM0zmVTRPpXFQzJV55KWlaEDPSKtntOKozNIy6rKwmhz3O1kduO4Ad6M8HweXfBT1qUBO1OL
+ +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
EOF
# We are renaming openssl to openssl_grpc so that there is no conflict with openssl if it exists
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index d70bd30f925..0551956667b 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -594,6 +594,7 @@ CORE_SOURCE_FILES = [
'third_party/boringssl-with-bazel/src/crypto/cpu-intel.c',
'third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c',
'third_party/boringssl-with-bazel/src/crypto/crypto.c',
+ 'third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c',
'third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c',
'third_party/boringssl-with-bazel/src/crypto/dh/check.c',
'third_party/boringssl-with-bazel/src/crypto/dh/dh.c',
@@ -604,6 +605,7 @@ CORE_SOURCE_FILES = [
'third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c',
'third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c',
'third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c',
+ 'third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c',
'third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c',
'third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c',
'third_party/boringssl-with-bazel/src/crypto/engine/engine.c',
@@ -668,6 +670,8 @@ CORE_SOURCE_FILES = [
'third_party/boringssl-with-bazel/src/crypto/thread_none.c',
'third_party/boringssl-with-bazel/src/crypto/thread_pthread.c',
'third_party/boringssl-with-bazel/src/crypto/thread_win.c',
+ 'third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c',
+ 'third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c',
'third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c',
'third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c',
'third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c',
@@ -786,7 +790,6 @@ CORE_SOURCE_FILES = [
'third_party/boringssl-with-bazel/src/ssl/tls13_server.cc',
'third_party/boringssl-with-bazel/src/ssl/tls_method.cc',
'third_party/boringssl-with-bazel/src/ssl/tls_record.cc',
- 'third_party/boringssl-with-bazel/src/third_party/fiat/curve25519.c',
'third_party/cares/cares/ares__close_sockets.c',
'third_party/cares/cares/ares__get_hostent.c',
'third_party/cares/cares/ares__read_line.c',
diff --git a/templates/gRPC-Core.podspec.template b/templates/gRPC-Core.podspec.template
index e8bccfdb26e..46ef974c9a2 100644
--- a/templates/gRPC-Core.podspec.template
+++ b/templates/gRPC-Core.podspec.template
@@ -192,7 +192,7 @@
ss.header_mappings_dir = '.'
ss.libraries = 'z'
ss.dependency "#{s.name}/Interface", version
- ss.dependency 'BoringSSL-GRPC', '0.0.8'
+ ss.dependency 'BoringSSL-GRPC', '0.0.9'
abseil_version = '1.20200225.0'
% for abseil_spec in grpc_abseil_specs:
ss.dependency '${abseil_spec}', abseil_version
diff --git a/templates/src/objective-c/BoringSSL-GRPC.podspec.template b/templates/src/objective-c/BoringSSL-GRPC.podspec.template
index 75036581ee7..d1cf8518fc6 100644
--- a/templates/src/objective-c/BoringSSL-GRPC.podspec.template
+++ b/templates/src/objective-c/BoringSSL-GRPC.podspec.template
@@ -69,7 +69,7 @@
Pod::Spec.new do |s|
s.name = 'BoringSSL-GRPC'
- version = '0.0.8'
+ version = '0.0.9'
s.version = version
s.summary = 'BoringSSL is a fork of OpenSSL that is designed to meet Google\'s needs.'
# Adapted from the homepage:
diff --git a/tools/run_tests/sanity/check_submodules.sh b/tools/run_tests/sanity/check_submodules.sh
index 22ceb109054..6b64842aa49 100755
--- a/tools/run_tests/sanity/check_submodules.sh
+++ b/tools/run_tests/sanity/check_submodules.sh
@@ -29,7 +29,7 @@ cat << EOF | awk '{ print $1 }' | sort > "$want_submodules"
df3ea785d8c30a9503321a3d35ee7d35808f190d third_party/abseil-cpp (heads/master)
090faecb454fbd6e6e17a75ef8146acb037118d4 third_party/benchmark (v1.5.0)
73594cde8c9a52a102c4341c244c833aa61b9c06 third_party/bloaty (remotes/origin/wide-14-g73594cd)
- 1c2769383f027befac5b75b6cedd25daf3bf4dcf third_party/boringssl-with-bazel (remotes/origin/master-with-bazel)
+ 3ab047a8e377083a9b38dc908fe1612d5743a021 third_party/boringssl-with-bazel (remotes/origin/master-with-bazel)
e982924acee7f7313b4baa4ee5ec000c5e373c30 third_party/cares/cares (cares-1_15_0)
8dcc476be69437b505af181a6e8b167fdb101d7e third_party/envoy-api (heads/master)
28f50e0fed19872e0fd50dd23ce2ee8cd759338e third_party/gflags (v2.2.0-5-g30dbc81)