From 5e3fe08f37a40de4b1e05438a4b8eed54ce90f72 Mon Sep 17 00:00:00 2001 From: AJ Heller Date: Thu, 13 Jul 2023 15:38:12 -0700 Subject: [PATCH] [BoringSSL] Update third_party/boringssl-with-bazel (#33690) Change was created by the release automation script. See go/grpc-release --- Makefile | 9 +- bazel/grpc_deps.bzl | 8 +- config.m4 | 9 +- config.w32 | 9 +- gRPC-Core.podspec | 2 +- grpc.gemspec | 13 +- grpc.gyp | 10 +- package.xml | 13 +- src/boringssl/boringssl_prefix_symbols.h | 72 +- src/objective-c/BoringSSL-GRPC.podspec | 1028 +++++++++-------- src/python/grpcio/grpc_core_dependencies.py | 185 ++- templates/gRPC-Core.podspec.template | 2 +- .../BoringSSL-GRPC.podspec.template | 2 +- third_party/boringssl-with-bazel | 2 +- tools/run_tests/sanity/check_submodules.sh | 2 +- 15 files changed, 787 insertions(+), 579 deletions(-) diff --git a/Makefile b/Makefile index 7aba4d7ccd7..e536932400b 100644 --- a/Makefile +++ b/Makefile @@ -2417,6 +2417,7 @@ LIBBORINGSSL_SRC = \ third_party/boringssl-with-bazel/src/crypto/cpu_intel.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/curve25519_64_adx.c \ third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c \ third_party/boringssl-with-bazel/src/crypto/des/des.c \ third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c \ @@ -2478,14 +2479,14 @@ LIBBORINGSSL_SRC = \ third_party/boringssl-with-bazel/src/crypto/pool/pool.c \ third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c \ third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c \ - third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c \ + third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c \ + third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c \ third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c \ third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c \ + third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c \ third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c \ third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c \ - third_party/boringssl-with-bazel/src/crypto/refcount_c11.c \ - third_party/boringssl-with-bazel/src/crypto/refcount_no_threads.c \ - third_party/boringssl-with-bazel/src/crypto/refcount_win.c \ + third_party/boringssl-with-bazel/src/crypto/refcount.c \ third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c \ third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c \ third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c \ diff --git a/bazel/grpc_deps.bzl b/bazel/grpc_deps.bzl index d6a94a4fbf7..9b6a7326890 100644 --- a/bazel/grpc_deps.bzl +++ b/bazel/grpc_deps.bzl @@ -230,11 +230,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 = "f150aa2d73017fe8576a8a335f29030488d851c94368a79ac56142d107bf9e9a", - strip_prefix = "boringssl-e46383fc18d08def901b2ed5a194295693e905c7", + sha256 = "0675a4f86ce5e959703425d6f9063eaadf6b61b7f3399e77a154c0e85bad46b1", + strip_prefix = "boringssl-342e805bc1f5dfdd650e3f031686d6c939b095d9", urls = [ - "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/e46383fc18d08def901b2ed5a194295693e905c7.tar.gz", - "https://github.com/google/boringssl/archive/e46383fc18d08def901b2ed5a194295693e905c7.tar.gz", + "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/342e805bc1f5dfdd650e3f031686d6c939b095d9.tar.gz", + "https://github.com/google/boringssl/archive/342e805bc1f5dfdd650e3f031686d6c939b095d9.tar.gz", ], ) diff --git a/config.m4 b/config.m4 index 05a40d5c052..f1113780744 100644 --- a/config.m4 +++ b/config.m4 @@ -1061,6 +1061,7 @@ if test "$PHP_GRPC" != "no"; then third_party/boringssl-with-bazel/src/crypto/cpu_intel.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/curve25519_64_adx.c \ third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c \ third_party/boringssl-with-bazel/src/crypto/des/des.c \ third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c \ @@ -1122,14 +1123,14 @@ if test "$PHP_GRPC" != "no"; then third_party/boringssl-with-bazel/src/crypto/pool/pool.c \ third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c \ third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c \ - third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c \ + third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c \ + third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c \ third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c \ third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c \ + third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c \ third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c \ third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c \ - third_party/boringssl-with-bazel/src/crypto/refcount_c11.c \ - third_party/boringssl-with-bazel/src/crypto/refcount_no_threads.c \ - third_party/boringssl-with-bazel/src/crypto/refcount_win.c \ + third_party/boringssl-with-bazel/src/crypto/refcount.c \ third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c \ third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c \ third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c \ diff --git a/config.w32 b/config.w32 index f30ce12b202..2019cef3b90 100644 --- a/config.w32 +++ b/config.w32 @@ -1026,6 +1026,7 @@ if (PHP_GRPC != "no") { "third_party\\boringssl-with-bazel\\src\\crypto\\cpu_intel.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\\curve25519_64_adx.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\curve25519\\spake25519.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\des\\des.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\dh_extra\\dh_asn1.c " + @@ -1087,14 +1088,14 @@ if (PHP_GRPC != "no") { "third_party\\boringssl-with-bazel\\src\\crypto\\pool\\pool.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\rand_extra\\deterministic.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\rand_extra\\forkunsafe.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\rand_extra\\fuchsia.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\rand_extra\\getentropy.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\rand_extra\\ios.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\rand_extra\\passive.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\rand_extra\\rand_extra.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\rand_extra\\trusty.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\rand_extra\\windows.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\rc4\\rc4.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\refcount_c11.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\refcount_no_threads.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\refcount_win.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\refcount.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\rsa_extra\\rsa_asn1.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\rsa_extra\\rsa_crypt.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\rsa_extra\\rsa_print.c " + diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec index f5748c6547e..90676648594 100644 --- a/gRPC-Core.podspec +++ b/gRPC-Core.podspec @@ -182,7 +182,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.29' + ss.dependency 'BoringSSL-GRPC', '0.0.30' ss.dependency 'abseil/algorithm/container', abseil_version ss.dependency 'abseil/base/base', abseil_version ss.dependency 'abseil/base/core_headers', abseil_version diff --git a/grpc.gemspec b/grpc.gemspec index e97244d3d86..edccfbfed4c 100644 --- a/grpc.gemspec +++ b/grpc.gemspec @@ -2230,6 +2230,7 @@ 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/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_64_adx.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 ) @@ -2313,6 +2314,7 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/digestsign.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c ) @@ -2405,14 +2407,14 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/crypto/pool/pool.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/refcount_c11.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/refcount_no_threads.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/refcount_win.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/refcount.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c ) @@ -2505,6 +2507,7 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/aead.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/aes.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h ) + s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/asm_base.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/asn1.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/asn1t.h ) @@ -2578,6 +2581,7 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/ssl.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/ssl3.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/stack.h ) + s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/target.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/time.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/tls1.h ) @@ -2626,6 +2630,7 @@ Gem::Specification.new do |s| 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_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_64_adx.h ) s.files += %w( third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h ) 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 ) diff --git a/grpc.gyp b/grpc.gyp index 9a632290381..ca498cf2516 100644 --- a/grpc.gyp +++ b/grpc.gyp @@ -2094,6 +2094,7 @@ 'third_party/boringssl-with-bazel/src/crypto/cpu_intel.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/curve25519_64_adx.c', 'third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c', 'third_party/boringssl-with-bazel/src/crypto/des/des.c', 'third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c', @@ -2155,14 +2156,14 @@ 'third_party/boringssl-with-bazel/src/crypto/pool/pool.c', 'third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c', 'third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c', - 'third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c', + 'third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c', + 'third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c', 'third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c', 'third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c', + 'third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c', 'third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c', 'third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c', - 'third_party/boringssl-with-bazel/src/crypto/refcount_c11.c', - 'third_party/boringssl-with-bazel/src/crypto/refcount_no_threads.c', - 'third_party/boringssl-with-bazel/src/crypto/refcount_win.c', + 'third_party/boringssl-with-bazel/src/crypto/refcount.c', 'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c', 'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c', 'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c', @@ -2292,6 +2293,7 @@ 'dependencies': [ ], 'sources': [ + 'third_party/boringssl-with-bazel/src/crypto/test/abi_test.cc', 'third_party/boringssl-with-bazel/src/crypto/test/file_test.cc', 'third_party/boringssl-with-bazel/src/crypto/test/test_util.cc', 'third_party/boringssl-with-bazel/src/crypto/test/wycheproof_util.cc', diff --git a/package.xml b/package.xml index e2abc46662a..f4ef5d88d8e 100644 --- a/package.xml +++ b/package.xml @@ -2234,6 +2234,7 @@ + @@ -2317,6 +2318,7 @@ + @@ -2409,14 +2411,14 @@ - + + + - - - + @@ -2509,6 +2511,7 @@ + @@ -2582,6 +2585,7 @@ + @@ -2630,6 +2634,7 @@ + diff --git a/src/boringssl/boringssl_prefix_symbols.h b/src/boringssl/boringssl_prefix_symbols.h index ab97679d8c8..b2509275f06 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: e46383fc18d08def901b2ed5a194295693e905c7 +// generated by generate_boringssl_prefix_header.sh on BoringSSL commit: 342e805bc1f5dfdd650e3f031686d6c939b095d9 // Copyright (c) 2018, Google Inc. // @@ -47,6 +47,7 @@ #define SSL_CIPHER_get_bits BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CIPHER_get_bits) #define SSL_CIPHER_get_cipher_nid BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CIPHER_get_cipher_nid) #define SSL_CIPHER_get_digest_nid BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CIPHER_get_digest_nid) +#define SSL_CIPHER_get_handshake_digest BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CIPHER_get_handshake_digest) #define SSL_CIPHER_get_id BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CIPHER_get_id) #define SSL_CIPHER_get_kx_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CIPHER_get_kx_name) #define SSL_CIPHER_get_kx_nid BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CIPHER_get_kx_nid) @@ -55,7 +56,6 @@ #define SSL_CIPHER_get_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CIPHER_get_name) #define SSL_CIPHER_get_prf_nid BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CIPHER_get_prf_nid) #define SSL_CIPHER_get_protocol_id BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CIPHER_get_protocol_id) -#define SSL_CIPHER_get_value BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CIPHER_get_value) #define SSL_CIPHER_get_version BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CIPHER_get_version) #define SSL_CIPHER_is_aead BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CIPHER_is_aead) #define SSL_CIPHER_is_block_cipher BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CIPHER_is_block_cipher) @@ -144,6 +144,7 @@ #define SSL_CTX_set1_curves BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_set1_curves) #define SSL_CTX_set1_curves_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_set1_curves_list) #define SSL_CTX_set1_ech_keys BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_set1_ech_keys) +#define SSL_CTX_set1_group_ids BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_set1_group_ids) #define SSL_CTX_set1_groups BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_set1_groups) #define SSL_CTX_set1_groups_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_set1_groups_list) #define SSL_CTX_set1_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_set1_param) @@ -333,6 +334,7 @@ #define SSL_get_SSL_CTX BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_SSL_CTX) #define SSL_get_all_cipher_names BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_all_cipher_names) #define SSL_get_all_curve_names BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_all_curve_names) +#define SSL_get_all_group_names BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_all_group_names) #define SSL_get_all_signature_algorithm_names BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_all_signature_algorithm_names) #define SSL_get_all_standard_cipher_names BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_all_standard_cipher_names) #define SSL_get_all_version_names BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_all_version_names) @@ -356,6 +358,8 @@ #define SSL_get_extms_support BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_extms_support) #define SSL_get_fd BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_fd) #define SSL_get_finished BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_finished) +#define SSL_get_group_id BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_group_id) +#define SSL_get_group_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_group_name) #define SSL_get_info_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_info_callback) #define SSL_get_ivs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_ivs) #define SSL_get_key_block_len BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_key_block_len) @@ -363,6 +367,7 @@ #define SSL_get_max_proto_version BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_max_proto_version) #define SSL_get_min_proto_version BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_min_proto_version) #define SSL_get_mode BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_mode) +#define SSL_get_negotiated_group BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_negotiated_group) #define SSL_get_options BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_options) #define SSL_get_peer_cert_chain BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_peer_cert_chain) #define SSL_get_peer_certificate BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get_peer_certificate) @@ -453,6 +458,7 @@ #define SSL_set1_curves_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_curves_list) #define SSL_set1_delegated_credential BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_delegated_credential) #define SSL_set1_ech_config_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_ech_config_list) +#define SSL_set1_group_ids BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_group_ids) #define SSL_set1_groups BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_groups) #define SSL_set1_groups_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_groups_list) #define SSL_set1_host BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_host) @@ -732,6 +738,7 @@ #define ASN1_TIME_set BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ASN1_TIME_set) #define ASN1_TIME_set_posix BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ASN1_TIME_set_posix) #define ASN1_TIME_set_string BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ASN1_TIME_set_string) +#define ASN1_TIME_set_string_X509 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ASN1_TIME_set_string_X509) #define ASN1_TIME_to_generalizedtime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ASN1_TIME_to_generalizedtime) #define ASN1_TIME_to_posix BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ASN1_TIME_to_posix) #define ASN1_TIME_to_time_t BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ASN1_TIME_to_time_t) @@ -1177,10 +1184,6 @@ #define CRYPTO_POLYVAL_finish BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_POLYVAL_finish) #define CRYPTO_POLYVAL_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_POLYVAL_init) #define CRYPTO_POLYVAL_update_blocks BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_POLYVAL_update_blocks) -#define CRYPTO_STATIC_MUTEX_lock_read BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_STATIC_MUTEX_lock_read) -#define CRYPTO_STATIC_MUTEX_lock_write BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_STATIC_MUTEX_lock_write) -#define CRYPTO_STATIC_MUTEX_unlock_read BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_STATIC_MUTEX_unlock_read) -#define CRYPTO_STATIC_MUTEX_unlock_write BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_STATIC_MUTEX_unlock_write) #define CRYPTO_THREADID_current BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_THREADID_current) #define CRYPTO_THREADID_set_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_THREADID_set_callback) #define CRYPTO_THREADID_set_numeric BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_THREADID_set_numeric) @@ -1453,6 +1456,10 @@ #define EC_curve_nid2nist BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EC_curve_nid2nist) #define EC_curve_nist2nid BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EC_curve_nist2nid) #define EC_get_builtin_curves BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EC_get_builtin_curves) +#define EC_group_p224 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EC_group_p224) +#define EC_group_p256 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EC_group_p256) +#define EC_group_p384 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EC_group_p384) +#define EC_group_p521 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EC_group_p521) #define EC_hash_to_curve_p256_xmd_sha256_sswu BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EC_hash_to_curve_p256_xmd_sha256_sswu) #define EC_hash_to_curve_p384_xmd_sha384_sswu BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EC_hash_to_curve_p384_xmd_sha384_sswu) #define ED25519_keypair BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ED25519_keypair) @@ -1960,7 +1967,6 @@ #define OBJ_txt2obj BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_txt2obj) #define OPENSSL_add_all_algorithms_conf BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_add_all_algorithms_conf) #define OPENSSL_asprintf BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_asprintf) -#define OPENSSL_built_in_curves BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_built_in_curves) #define OPENSSL_cleanse BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_cleanse) #define OPENSSL_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_cleanup) #define OPENSSL_clear_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_clear_free) @@ -1996,6 +2002,27 @@ #define OPENSSL_realloc BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_realloc) #define OPENSSL_secure_clear_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_secure_clear_free) #define OPENSSL_secure_malloc BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_secure_malloc) +#define OPENSSL_sk_deep_copy BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_deep_copy) +#define OPENSSL_sk_delete BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_delete) +#define OPENSSL_sk_delete_if BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_delete_if) +#define OPENSSL_sk_delete_ptr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_delete_ptr) +#define OPENSSL_sk_dup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_dup) +#define OPENSSL_sk_find BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_find) +#define OPENSSL_sk_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_free) +#define OPENSSL_sk_insert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_insert) +#define OPENSSL_sk_is_sorted BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_is_sorted) +#define OPENSSL_sk_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_new) +#define OPENSSL_sk_new_null BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_new_null) +#define OPENSSL_sk_num BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_num) +#define OPENSSL_sk_pop BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_pop) +#define OPENSSL_sk_pop_free_ex BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_pop_free_ex) +#define OPENSSL_sk_push BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_push) +#define OPENSSL_sk_set BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_set) +#define OPENSSL_sk_set_cmp_func BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_set_cmp_func) +#define OPENSSL_sk_shift BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_shift) +#define OPENSSL_sk_sort BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_sort) +#define OPENSSL_sk_value BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_value) +#define OPENSSL_sk_zero BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_sk_zero) #define OPENSSL_strcasecmp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_strcasecmp) #define OPENSSL_strdup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_strdup) #define OPENSSL_strhash BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_strhash) @@ -2939,7 +2966,6 @@ #define bn_minimal_width BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_minimal_width) #define bn_mod_add_consttime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mod_add_consttime) #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) @@ -2951,6 +2977,9 @@ #define bn_mod_sub_consttime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mod_sub_consttime) #define bn_mod_sub_words BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mod_sub_words) #define bn_mod_u16_consttime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mod_u16_consttime) +#define bn_mont_ctx_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mont_ctx_cleanup) +#define bn_mont_ctx_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mont_ctx_init) +#define bn_mont_ctx_set_RR_consttime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mont_ctx_set_RR_consttime) #define bn_mont_n0 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mont_n0) #define bn_mul_add_words BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_add_words) #define bn_mul_comba4 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_comba4) @@ -3135,9 +3164,6 @@ #define ec_GFp_mont_felem_reduce BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_felem_reduce) #define ec_GFp_mont_felem_sqr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_felem_sqr) #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) @@ -3148,9 +3174,7 @@ #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) #define ec_GFp_simple_group_set_curve BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_simple_group_set_curve) #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) @@ -3172,13 +3196,13 @@ #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_one BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_felem_one) #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_p256_xmd_sha256_sswu BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_hash_to_curve_p256_xmd_sha256_sswu) #define ec_hash_to_curve_p384_xmd_sha384_sswu BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_hash_to_curve_p384_xmd_sha384_sswu) #define ec_hash_to_curve_p384_xmd_sha512_sswu_draft07 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_hash_to_curve_p384_xmd_sha512_sswu_draft07) @@ -3234,6 +3258,8 @@ #define ecp_nistz256_sqr_mont BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ecp_nistz256_sqr_mont) #define ed25519_asn1_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ed25519_asn1_meth) #define ed25519_pkey_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ed25519_pkey_meth) +#define fiat_curve25519_adx_mul BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, fiat_curve25519_adx_mul) +#define fiat_curve25519_adx_square BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, fiat_curve25519_adx_square) #define gcm_ghash_avx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, gcm_ghash_avx) #define gcm_ghash_clmul BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, gcm_ghash_clmul) #define gcm_ghash_nohw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, gcm_ghash_nohw) @@ -3386,6 +3412,7 @@ #define i2t_ASN1_OBJECT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2t_ASN1_OBJECT) #define i2v_GENERAL_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2v_GENERAL_NAME) #define i2v_GENERAL_NAMES BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2v_GENERAL_NAMES) +#define k25519Precomp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, k25519Precomp) #define kBoringSSLRSASqrtTwo BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, kBoringSSLRSASqrtTwo) #define kBoringSSLRSASqrtTwoLen BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, kBoringSSLRSASqrtTwoLen) #define kOpenSSLReasonStringData BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, kOpenSSLReasonStringData) @@ -3452,28 +3479,13 @@ #define sha1_block_data_order BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha1_block_data_order) #define sha256_block_data_order BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha256_block_data_order) #define sha512_block_data_order BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha512_block_data_order) -#define sk_deep_copy BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_deep_copy) -#define sk_delete BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_delete) -#define sk_delete_if BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_delete_if) -#define sk_delete_ptr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_delete_ptr) -#define sk_dup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_dup) -#define sk_find BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_find) #define sk_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_free) -#define sk_insert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_insert) -#define sk_is_sorted BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_is_sorted) -#define sk_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_new) #define sk_new_null BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_new_null) #define sk_num BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_num) #define sk_pop BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_pop) #define sk_pop_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_pop_free) -#define sk_pop_free_ex BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_pop_free_ex) #define sk_push BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_push) -#define sk_set BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_set) -#define sk_set_cmp_func BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_set_cmp_func) -#define sk_shift BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_shift) -#define sk_sort BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_sort) #define sk_value BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_value) -#define sk_zero BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_zero) #define v2i_GENERAL_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, v2i_GENERAL_NAME) #define v2i_GENERAL_NAMES BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, v2i_GENERAL_NAMES) #define v2i_GENERAL_NAME_ex BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, v2i_GENERAL_NAME_ex) @@ -3532,11 +3544,13 @@ #define x25519_ge_p3_to_cached BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_ge_p3_to_cached) #define x25519_ge_scalarmult BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_ge_scalarmult) #define x25519_ge_scalarmult_base BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_ge_scalarmult_base) +#define x25519_ge_scalarmult_base_adx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_ge_scalarmult_base_adx) #define x25519_ge_scalarmult_small_precomp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_ge_scalarmult_small_precomp) #define x25519_ge_sub BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_ge_sub) #define x25519_ge_tobytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_ge_tobytes) #define x25519_pkey_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_pkey_meth) #define x25519_sc_reduce BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_sc_reduce) +#define x25519_scalar_mult_adx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_scalar_mult_adx) #define x509V3_add_value_asn1_string BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x509V3_add_value_asn1_string) #define x509_digest_sign_algorithm BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x509_digest_sign_algorithm) #define x509_digest_verify_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x509_digest_verify_init) diff --git a/src/objective-c/BoringSSL-GRPC.podspec b/src/objective-c/BoringSSL-GRPC.podspec index c8b247fa736..b2c348ddecd 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.29' + version = '0.0.30' 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 => "e46383fc18d08def901b2ed5a194295693e905c7", + :commit => "342e805bc1f5dfdd650e3f031686d6c939b095d9", } s.ios.deployment_target = '10.0' @@ -169,517 +169,519 @@ Pod::Spec.new do |s| *) opts="--ignore-garbage" ;; esac base64 --decode $opts < src/include/openssl/boringssl_prefix_symbols.h - H4sICAAAAAAC/2JvcmluZ3NzbF9wcmVmaXhfc3ltYm9scy5oALS9XXPbuJaofT+/wnXm5kzVrpnY6aTd - 751iK4kmju0tKT2duWFREmRzhyIVgnLs/vUHICkRH2uBXAt+q3bNdCw9z6IAEF8Egf/6r7MHUYgqrcXm - bPVy+keyKquseJAyT/aV2GbPyaNIN6L6T/l4VhZnH5pPF4ubs3W522X1/3cmfnv/9vLtdn1+uXlzuRHb - P96cry7E5l16/sdvF3+8e//HW/HHm3fr3//t3/7rv86uyv1LlT081mf/d/0fZxdvzi//cfapLB9ycTYr - 1v+pvqK/dS+qXSZlpuLV5dlBin+oaPuXf5ztyk22Vf8/LTb/VVZnm0zWVbY61OKsfszkmSy39a+0Emdb - 9WFavGjX/lDtSynOfmW1+gFV8//LQ322FeJMIY+iEvrXV2mhEuIfZ/uqfMo2Kknqx7RW/0ecpavySWjT - +nTtRVlna6Gvoo2776/3+NF+L9LqLCvO0jzXZCbk8dctP0/PFncfl/8zmU/PZouz+/ndn7Pr6fXZ/5ks - 1L//z9nk9rr50uTb8vPd/Ox6tri6mcy+Ls4mNzdnippPbpez6UK7/me2/Hw2n36azBVypyjl6923Vzff - rme3nxpw9vX+Zqai9IKzu4/a8XU6v/qs/jL5MLuZLb834T/OlrfTxeI/lePs9u5s+uf0dnm2+Kw9xpV9 - mJ7dzCYfbqZnH9W/JrfftW5xP72aTW7+oa57Pr1a/kMpjv+lvnR1d7uY/vOb0qnvnF1Pvk4+6Qtp6OM/ - mx/2ebJc3Km4c/XzFt9ulvpnfJzffT27uVvoKz/7tpiqGJPlRNMqDdUlL/6huKm6wLm+7on639Vydner - fQpQoZfzib6O2+mnm9mn6e3VVLN3DbC8m6vvflt0zD/OJvPZQge9+7bU9J12NkX47vZ22nynTX2dHupa - mquYzlVCfJ004o92bvxnU/4/3M2VU90+yeT6OrmfTz/O/jrbp7IW8qz+VZ6polfU2TYTlVSFRxX+shAq - E2pdxFSh3kn9By3Kan236hJXbs926boqz8TzPi2aQqj+l9XyLK0eDjvlk2croWDRBFJ373/+27+r+zQr - BHg5/zf9x9nqP8CPkpn66fP2C0GH+cWz9Ozf//0s0f9n9W89NbtLtomqZeBr6P/Y/uEfPfAflkOKmmrp - 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 - P63L1Bd9yQQA + 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 + fdu+qHxfv1R52Sh7DCCeIPz9b/8HQzlluJfOBAA= 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 25ff31be643..ad948cd7fcf 100644 --- a/src/python/grpcio/grpc_core_dependencies.py +++ b/src/python/grpcio/grpc_core_dependencies.py @@ -1025,6 +1025,7 @@ CORE_SOURCE_FILES = [ 'third_party/boringssl-with-bazel/src/crypto/cpu_intel.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/curve25519_64_adx.c', 'third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c', 'third_party/boringssl-with-bazel/src/crypto/des/des.c', 'third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c', @@ -1086,14 +1087,14 @@ CORE_SOURCE_FILES = [ 'third_party/boringssl-with-bazel/src/crypto/pool/pool.c', 'third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c', 'third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c', - 'third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c', + 'third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c', + 'third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c', 'third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c', 'third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c', + 'third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c', 'third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c', 'third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c', - 'third_party/boringssl-with-bazel/src/crypto/refcount_c11.c', - 'third_party/boringssl-with-bazel/src/crypto/refcount_no_threads.c', - 'third_party/boringssl-with-bazel/src/crypto/refcount_win.c', + 'third_party/boringssl-with-bazel/src/crypto/refcount.c', 'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c', 'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c', 'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c', @@ -1425,6 +1426,146 @@ ASM_SOURCE_FILES = { 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/x86_64-mont-apple.S', 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/x86_64-mont5-apple.S', 'third_party/boringssl-with-bazel/apple-x86_64/crypto/test/trampoline-x86_64-apple.S', + 'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_curve25519_adx_mul.S', + 'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_curve25519_adx_square.S', + ], + 'crypto_asm': [ + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/chacha/chacha-armv8-apple.S', + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8-apple.S', + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/aesv8-armv8-apple.S', + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-apple.S', + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/armv8-mont-apple.S', + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/bn-armv8-apple.S', + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/ghash-neon-armv8-apple.S', + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/ghashv8-armv8-apple.S', + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/p256-armv8-asm-apple.S', + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm-apple.S', + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/sha1-armv8-apple.S', + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/sha256-armv8-apple.S', + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/sha512-armv8-apple.S', + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/vpaes-armv8-apple.S', + 'third_party/boringssl-with-bazel/apple-aarch64/crypto/test/trampoline-armv8-apple.S', + 'third_party/boringssl-with-bazel/apple-arm/crypto/chacha/chacha-armv4-apple.S', + 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/aesv8-armv7-apple.S', + 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/armv4-mont-apple.S', + 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/bsaes-armv7-apple.S', + 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/ghash-armv4-apple.S', + 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/ghashv8-armv7-apple.S', + 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/sha1-armv4-large-apple.S', + 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/sha256-armv4-apple.S', + 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/sha512-armv4-apple.S', + 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/vpaes-armv7-apple.S', + 'third_party/boringssl-with-bazel/apple-arm/crypto/test/trampoline-armv4-apple.S', + 'third_party/boringssl-with-bazel/apple-x86/crypto/chacha/chacha-x86-apple.S', + 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/aesni-x86-apple.S', + 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/bn-586-apple.S', + 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/co-586-apple.S', + 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/ghash-ssse3-x86-apple.S', + 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/ghash-x86-apple.S', + 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/md5-586-apple.S', + 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/sha1-586-apple.S', + 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/sha256-586-apple.S', + 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/sha512-586-apple.S', + 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/vpaes-x86-apple.S', + 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/x86-mont-apple.S', + 'third_party/boringssl-with-bazel/apple-x86/crypto/test/trampoline-x86-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/chacha/chacha-x86_64-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/aesni-gcm-x86_64-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/aesni-x86_64-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/ghash-x86_64-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/md5-x86_64-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/p256-x86_64-asm-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/rdrand-x86_64-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/rsaz-avx2-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/sha1-x86_64-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/sha256-x86_64-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/sha512-x86_64-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/vpaes-x86_64-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/x86_64-mont-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/x86_64-mont5-apple.S', + 'third_party/boringssl-with-bazel/apple-x86_64/crypto/test/trampoline-x86_64-apple.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/chacha/chacha-armv8-linux.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8-linux.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/aesv8-armv8-linux.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-linux.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/armv8-mont-linux.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/bn-armv8-linux.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/ghash-neon-armv8-linux.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/ghashv8-armv8-linux.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/p256-armv8-asm-linux.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm-linux.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha1-armv8-linux.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha256-armv8-linux.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha512-armv8-linux.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/vpaes-armv8-linux.S', + 'third_party/boringssl-with-bazel/linux-aarch64/crypto/test/trampoline-armv8-linux.S', + 'third_party/boringssl-with-bazel/linux-arm/crypto/chacha/chacha-armv4-linux.S', + 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/aesv8-armv7-linux.S', + 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/armv4-mont-linux.S', + 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/bsaes-armv7-linux.S', + 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/ghash-armv4-linux.S', + 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/ghashv8-armv7-linux.S', + 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha1-armv4-large-linux.S', + 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha256-armv4-linux.S', + 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha512-armv4-linux.S', + 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/vpaes-armv7-linux.S', + 'third_party/boringssl-with-bazel/linux-arm/crypto/test/trampoline-armv4-linux.S', + 'third_party/boringssl-with-bazel/linux-x86/crypto/chacha/chacha-x86-linux.S', + 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/aesni-x86-linux.S', + 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/bn-586-linux.S', + 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/co-586-linux.S', + 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/ghash-ssse3-x86-linux.S', + 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/ghash-x86-linux.S', + 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/md5-586-linux.S', + 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/sha1-586-linux.S', + 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/sha256-586-linux.S', + 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/sha512-586-linux.S', + 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/vpaes-x86-linux.S', + 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/x86-mont-linux.S', + 'third_party/boringssl-with-bazel/linux-x86/crypto/test/trampoline-x86-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/chacha/chacha-x86_64-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/aesni-gcm-x86_64-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/aesni-x86_64-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/ghash-x86_64-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/md5-x86_64-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/p256-x86_64-asm-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/rdrand-x86_64-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/rsaz-avx2-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/sha1-x86_64-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/sha256-x86_64-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/sha512-x86_64-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/vpaes-x86_64-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/x86_64-mont-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/x86_64-mont5-linux.S', + 'third_party/boringssl-with-bazel/linux-x86_64/crypto/test/trampoline-x86_64-linux.S', + 'third_party/boringssl-with-bazel/src/crypto/curve25519/asm/x25519-asm-arm.S', + 'third_party/boringssl-with-bazel/src/crypto/hrss/asm/poly_rq_mul.S', + 'third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm_asm.S', + 'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_curve25519_adx_mul.S', + 'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_curve25519_adx_square.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/chacha/chacha-armv8-win.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8-win.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/aesv8-armv8-win.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-win.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/armv8-mont-win.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/bn-armv8-win.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/ghash-neon-armv8-win.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/ghashv8-armv8-win.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/p256-armv8-asm-win.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm-win.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/sha1-armv8-win.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/sha256-armv8-win.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/sha512-armv8-win.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/vpaes-armv8-win.S', + 'third_party/boringssl-with-bazel/win-aarch64/crypto/test/trampoline-armv8-win.S', ], 'crypto_linux_aarch64': [ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/chacha/chacha-armv8-linux.S', @@ -1494,6 +1635,42 @@ ASM_SOURCE_FILES = { 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/x86_64-mont5-linux.S', 'third_party/boringssl-with-bazel/linux-x86_64/crypto/test/trampoline-x86_64-linux.S', 'third_party/boringssl-with-bazel/src/crypto/hrss/asm/poly_rq_mul.S', + 'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_curve25519_adx_mul.S', + 'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_curve25519_adx_square.S', + ], + 'crypto_nasm': [ + 'third_party/boringssl-with-bazel/win-x86/crypto/chacha/chacha-x86-win.asm', + 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/aesni-x86-win.asm', + 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/bn-586-win.asm', + 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/co-586-win.asm', + 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/ghash-ssse3-x86-win.asm', + 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/ghash-x86-win.asm', + 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/md5-586-win.asm', + 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha1-586-win.asm', + 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha256-586-win.asm', + 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha512-586-win.asm', + 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/vpaes-x86-win.asm', + 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/x86-mont-win.asm', + 'third_party/boringssl-with-bazel/win-x86/crypto/test/trampoline-x86-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/chacha/chacha-x86_64-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/aesni-gcm-x86_64-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/aesni-x86_64-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/ghash-x86_64-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/md5-x86_64-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/p256-x86_64-asm-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/rdrand-x86_64-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/rsaz-avx2-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/sha1-x86_64-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/sha256-x86_64-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/sha512-x86_64-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/vpaes-x86_64-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/x86_64-mont-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/x86_64-mont5-win.asm', + 'third_party/boringssl-with-bazel/win-x86_64/crypto/test/trampoline-x86_64-win.asm', ], 'crypto_win_aarch64': [ 'third_party/boringssl-with-bazel/win-aarch64/crypto/chacha/chacha-armv8-win.S', diff --git a/templates/gRPC-Core.podspec.template b/templates/gRPC-Core.podspec.template index 905325213d0..9da64132d9e 100644 --- a/templates/gRPC-Core.podspec.template +++ b/templates/gRPC-Core.podspec.template @@ -189,7 +189,7 @@ ss.header_mappings_dir = '.' ss.libraries = 'z' ss.dependency "#{s.name}/Interface", version - ss.dependency 'BoringSSL-GRPC', '0.0.29' + ss.dependency 'BoringSSL-GRPC', '0.0.30' % for abseil_spec in grpc_abseil_specs: ss.dependency '${abseil_spec}', abseil_version % endfor diff --git a/templates/src/objective-c/BoringSSL-GRPC.podspec.template b/templates/src/objective-c/BoringSSL-GRPC.podspec.template index 14f05af5393..9e51d095fba 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.29' + version = '0.0.30' 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/third_party/boringssl-with-bazel b/third_party/boringssl-with-bazel index e46383fc18d..342e805bc1f 160000 --- a/third_party/boringssl-with-bazel +++ b/third_party/boringssl-with-bazel @@ -1 +1 @@ -Subproject commit e46383fc18d08def901b2ed5a194295693e905c7 +Subproject commit 342e805bc1f5dfdd650e3f031686d6c939b095d9 diff --git a/tools/run_tests/sanity/check_submodules.sh b/tools/run_tests/sanity/check_submodules.sh index a7adc1967f8..95a0490ef48 100755 --- a/tools/run_tests/sanity/check_submodules.sh +++ b/tools/run_tests/sanity/check_submodules.sh @@ -28,7 +28,7 @@ cat <"$want_submodules" third_party/abseil-cpp c2435f8342c2d0ed8101cb43adfd605fdc52dca2 third_party/benchmark 361e8d1cfe0c6c36d30b39f1b61302ece5507320 third_party/bloaty 60209eb1ccc34d5deefb002d1b7f37545204f7f2 -third_party/boringssl-with-bazel e46383fc18d08def901b2ed5a194295693e905c7 +third_party/boringssl-with-bazel 342e805bc1f5dfdd650e3f031686d6c939b095d9 third_party/cares/cares 6360e96b5cf8e5980c887ce58ef727e53d77243a third_party/envoy-api e53e7bbd012f81965f2e79848ad9a58ceb67201f third_party/googleapis 2f9af297c84c55c8b871ba4495e01ade42476c92