diff --git a/Makefile b/Makefile index fdcac068db8..2ae705ccef8 100644 --- a/Makefile +++ b/Makefile @@ -2987,7 +2987,7 @@ LIBBORINGSSL_SRC = \ third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c \ third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c \ third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c \ - third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c \ + third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c \ third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c \ third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c \ third_party/boringssl-with-bazel/src/crypto/mem.c \ @@ -3024,6 +3024,13 @@ LIBBORINGSSL_SRC = \ third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c \ third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c \ third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c \ + third_party/boringssl-with-bazel/src/crypto/spx/address.c \ + third_party/boringssl-with-bazel/src/crypto/spx/fors.c \ + third_party/boringssl-with-bazel/src/crypto/spx/merkle.c \ + third_party/boringssl-with-bazel/src/crypto/spx/spx.c \ + third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c \ + third_party/boringssl-with-bazel/src/crypto/spx/thash.c \ + third_party/boringssl-with-bazel/src/crypto/spx/wots.c \ third_party/boringssl-with-bazel/src/crypto/stack/stack.c \ third_party/boringssl-with-bazel/src/crypto/thread.c \ third_party/boringssl-with-bazel/src/crypto/thread_none.c \ @@ -3047,6 +3054,29 @@ LIBBORINGSSL_SRC = \ third_party/boringssl-with-bazel/src/crypto/x509/t_req.c \ third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c \ third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c \ third_party/boringssl-with-bazel/src/crypto/x509/x509.c \ third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c \ third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c \ @@ -3071,9 +3101,7 @@ LIBBORINGSSL_SRC = \ third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c \ - third_party/boringssl-with-bazel/src/crypto/x509/x_info.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_name.c \ - third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_req.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c \ @@ -3081,29 +3109,6 @@ LIBBORINGSSL_SRC = \ third_party/boringssl-with-bazel/src/crypto/x509/x_val.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c \ third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc \ third_party/boringssl-with-bazel/src/ssl/d1_both.cc \ third_party/boringssl-with-bazel/src/ssl/d1_lib.cc \ diff --git a/bazel/grpc_deps.bzl b/bazel/grpc_deps.bzl index 6fda89920bc..bd3763579e1 100644 --- a/bazel/grpc_deps.bzl +++ b/bazel/grpc_deps.bzl @@ -240,11 +240,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 = "b21994a857a7aa6d5256ffe355c735ad4c286de44c6c81dfc04edc41a8feaeef", - strip_prefix = "boringssl-2ff4b968a7e0cfee66d9f151cb95635b43dc1d5b", + sha256 = "057f662b0e85931a84945b2e89ba201fd44b0583da827c948fe443593690fb83", + strip_prefix = "boringssl-ae72a4514c7afd150596b0a80947f3ca9b8363b5", urls = [ - "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/2ff4b968a7e0cfee66d9f151cb95635b43dc1d5b.tar.gz", - "https://github.com/google/boringssl/archive/2ff4b968a7e0cfee66d9f151cb95635b43dc1d5b.tar.gz", + "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/ae72a4514c7afd150596b0a80947f3ca9b8363b5.tar.gz", + "https://github.com/google/boringssl/archive/ae72a4514c7afd150596b0a80947f3ca9b8363b5.tar.gz", ], ) diff --git a/config.m4 b/config.m4 index 47b5aab9107..35683cf5ede 100644 --- a/config.m4 +++ b/config.m4 @@ -1133,7 +1133,7 @@ if test "$PHP_GRPC" != "no"; then third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c \ third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c \ third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c \ - third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c \ + third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c \ third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c \ third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c \ third_party/boringssl-with-bazel/src/crypto/mem.c \ @@ -1170,6 +1170,13 @@ if test "$PHP_GRPC" != "no"; then third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c \ third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c \ third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c \ + third_party/boringssl-with-bazel/src/crypto/spx/address.c \ + third_party/boringssl-with-bazel/src/crypto/spx/fors.c \ + third_party/boringssl-with-bazel/src/crypto/spx/merkle.c \ + third_party/boringssl-with-bazel/src/crypto/spx/spx.c \ + third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c \ + third_party/boringssl-with-bazel/src/crypto/spx/thash.c \ + third_party/boringssl-with-bazel/src/crypto/spx/wots.c \ third_party/boringssl-with-bazel/src/crypto/stack/stack.c \ third_party/boringssl-with-bazel/src/crypto/thread.c \ third_party/boringssl-with-bazel/src/crypto/thread_none.c \ @@ -1193,6 +1200,29 @@ if test "$PHP_GRPC" != "no"; then third_party/boringssl-with-bazel/src/crypto/x509/t_req.c \ third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c \ third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c \ + third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c \ third_party/boringssl-with-bazel/src/crypto/x509/x509.c \ third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c \ third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c \ @@ -1217,9 +1247,7 @@ if test "$PHP_GRPC" != "no"; then third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c \ - third_party/boringssl-with-bazel/src/crypto/x509/x_info.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_name.c \ - third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_req.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c \ @@ -1227,29 +1255,6 @@ if test "$PHP_GRPC" != "no"; then third_party/boringssl-with-bazel/src/crypto/x509/x_val.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c \ third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c \ - third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c \ third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc \ third_party/boringssl-with-bazel/src/ssl/d1_both.cc \ third_party/boringssl-with-bazel/src/ssl/d1_lib.cc \ @@ -1636,6 +1641,7 @@ if test "$PHP_GRPC" != "no"; then PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/fipsmodule) PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/hpke) PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/hrss) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/keccak) PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/kyber) PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/lhash) PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/obj) @@ -1648,10 +1654,10 @@ if test "$PHP_GRPC" != "no"; then PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/rc4) 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/spx) 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/re2/re2) PHP_ADD_BUILD_DIR($ext_builddir/third_party/re2/util) diff --git a/config.w32 b/config.w32 index b970fde6d45..b34f443eeea 100644 --- a/config.w32 +++ b/config.w32 @@ -1098,7 +1098,7 @@ if (PHP_GRPC != "no") { "third_party\\boringssl-with-bazel\\src\\crypto\\fipsmodule\\fips_shared_support.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\hpke\\hpke.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\hrss\\hrss.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\kyber\\keccak.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\keccak\\keccak.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\kyber\\kyber.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\lhash\\lhash.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\mem.c " + @@ -1135,6 +1135,13 @@ if (PHP_GRPC != "no") { "third_party\\boringssl-with-bazel\\src\\crypto\\rsa_extra\\rsa_crypt.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\rsa_extra\\rsa_print.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\siphash\\siphash.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\spx\\address.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\spx\\fors.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\spx\\merkle.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\spx\\spx.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\spx\\spx_util.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\spx\\thash.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\spx\\wots.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\stack\\stack.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\thread.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\thread_none.c " + @@ -1158,6 +1165,29 @@ if (PHP_GRPC != "no") { "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\t_req.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\t_x509.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\t_x509a.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_akey.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_akeya.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_alt.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_bcons.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_bitst.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_conf.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_cpols.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_crld.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_enum.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_extku.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_genn.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_ia5.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_info.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_int.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_lib.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_ncons.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_ocsp.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_pcons.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_pmaps.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_prn.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_purp.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_skey.c " + + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\v3_utl.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x509.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x509_att.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x509_cmp.c " + @@ -1182,9 +1212,7 @@ if (PHP_GRPC != "no") { "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_attrib.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_crl.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_exten.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_info.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_name.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_pkey.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_pubkey.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_req.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_sig.c " + @@ -1192,29 +1220,6 @@ if (PHP_GRPC != "no") { "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_val.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_x509.c " + "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_x509a.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_akey.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_akeya.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_alt.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_bcons.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_bitst.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_conf.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_cpols.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_crld.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_enum.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_extku.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_genn.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_ia5.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_info.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_int.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_lib.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_ncons.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_ocsp.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_pcons.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_pmaps.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_prn.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_purp.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_skey.c " + - "third_party\\boringssl-with-bazel\\src\\crypto\\x509v3\\v3_utl.c " + "third_party\\boringssl-with-bazel\\src\\ssl\\bio_ssl.cc " + "third_party\\boringssl-with-bazel\\src\\ssl\\d1_both.cc " + "third_party\\boringssl-with-bazel\\src\\ssl\\d1_lib.cc " + @@ -1787,6 +1792,7 @@ if (PHP_GRPC != "no") { FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\fipsmodule"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\hpke"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\hrss"); + FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\keccak"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\kyber"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\lhash"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\obj"); @@ -1799,10 +1805,10 @@ if (PHP_GRPC != "no") { FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\rc4"); 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\\spx"); 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\\re2"); FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\re2\\re2"); diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec index ab527d199d6..63bb150a140 100644 --- a/gRPC-Core.podspec +++ b/gRPC-Core.podspec @@ -195,7 +195,7 @@ Pod::Spec.new do |s| ss.libraries = 'z' ss.dependency "#{s.name}/Interface", version ss.dependency "#{s.name}/Privacy", version - ss.dependency 'BoringSSL-GRPC', '0.0.31' + ss.dependency 'BoringSSL-GRPC', '0.0.32' ss.dependency 'abseil/algorithm/container', abseil_version ss.dependency 'abseil/base/base', abseil_version ss.dependency 'abseil/base/config', abseil_version diff --git a/grpc.gemspec b/grpc.gemspec index dd7f5f982fa..392ba76a0a1 100644 --- a/grpc.gemspec +++ b/grpc.gemspec @@ -2631,8 +2631,9 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/hrss/internal.h ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/internal.h ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/keccak/internal.h ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/kyber/internal.h ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/lhash/internal.h ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c ) @@ -2676,6 +2677,21 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/address.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/address.h ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/fors.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/fors.h ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/internal.h ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/merkle.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/merkle.h ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/params.h ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/spx.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/spx_util.h ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/thash.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/thash.h ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/wots.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/wots.h ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/stack/stack.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/thread.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/thread_none.c ) @@ -2692,6 +2708,7 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/by_file.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/ext_dat.h ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/internal.h ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/name_print.c ) @@ -2701,6 +2718,29 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/t_req.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c ) + s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x509.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c ) @@ -2725,9 +2765,7 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_info.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_name.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_req.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c ) @@ -2735,31 +2773,6 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_val.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c ) s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c ) - s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c ) 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 ) @@ -2824,6 +2837,7 @@ Gem::Specification.new do |s| s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/poly1305.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pool.h ) + s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/posix_time.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/rand.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/rc4.h ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/ripemd.h ) @@ -2846,6 +2860,7 @@ Gem::Specification.new do |s| 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 ) s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/x509v3.h ) + s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/x509v3_errors.h ) s.files += %w( third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc ) s.files += %w( third_party/boringssl-with-bazel/src/ssl/d1_both.cc ) s.files += %w( third_party/boringssl-with-bazel/src/ssl/d1_lib.cc ) diff --git a/grpc.gyp b/grpc.gyp index bd9d178e257..4e36b01858c 100644 --- a/grpc.gyp +++ b/grpc.gyp @@ -2466,7 +2466,7 @@ 'third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c', 'third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c', 'third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c', - 'third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c', + 'third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c', 'third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c', 'third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c', 'third_party/boringssl-with-bazel/src/crypto/mem.c', @@ -2503,6 +2503,13 @@ 'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c', 'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c', 'third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c', + 'third_party/boringssl-with-bazel/src/crypto/spx/address.c', + 'third_party/boringssl-with-bazel/src/crypto/spx/fors.c', + 'third_party/boringssl-with-bazel/src/crypto/spx/merkle.c', + 'third_party/boringssl-with-bazel/src/crypto/spx/spx.c', + 'third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c', + 'third_party/boringssl-with-bazel/src/crypto/spx/thash.c', + 'third_party/boringssl-with-bazel/src/crypto/spx/wots.c', 'third_party/boringssl-with-bazel/src/crypto/stack/stack.c', 'third_party/boringssl-with-bazel/src/crypto/thread.c', 'third_party/boringssl-with-bazel/src/crypto/thread_none.c', @@ -2526,6 +2533,29 @@ 'third_party/boringssl-with-bazel/src/crypto/x509/t_req.c', 'third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c', 'third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x509.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c', @@ -2550,9 +2580,7 @@ 'third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c', - 'third_party/boringssl-with-bazel/src/crypto/x509/x_info.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_name.c', - 'third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_req.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c', @@ -2560,29 +2588,6 @@ 'third_party/boringssl-with-bazel/src/crypto/x509/x_val.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c', 'third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc', 'third_party/boringssl-with-bazel/src/ssl/d1_both.cc', 'third_party/boringssl-with-bazel/src/ssl/d1_lib.cc', diff --git a/package.xml b/package.xml index 0881f0fd959..1e28a2a052f 100644 --- a/package.xml +++ b/package.xml @@ -2635,8 +2635,9 @@ + + - @@ -2680,6 +2681,21 @@ + + + + + + + + + + + + + + + @@ -2696,6 +2712,7 @@ + @@ -2705,6 +2722,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -2729,9 +2769,7 @@ - - @@ -2739,31 +2777,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2828,6 +2841,7 @@ + @@ -2850,6 +2864,7 @@ + diff --git a/setup.py b/setup.py index 3854d6942e2..6ebfae1811e 100644 --- a/setup.py +++ b/setup.py @@ -245,32 +245,22 @@ def check_linker_need_libatomic(): EXTRA_ENV_COMPILE_ARGS = os.environ.get("GRPC_PYTHON_CFLAGS", None) EXTRA_ENV_LINK_ARGS = os.environ.get("GRPC_PYTHON_LDFLAGS", None) if EXTRA_ENV_COMPILE_ARGS is None: - EXTRA_ENV_COMPILE_ARGS = " -std=c++14" + EXTRA_ENV_COMPILE_ARGS = "" if "win32" in sys.platform: - if sys.version_info < (3, 5): - EXTRA_ENV_COMPILE_ARGS += " -D_hypot=hypot" - # We use define flags here and don't directly add to DEFINE_MACROS below to - # ensure that the expert user/builder has a way of turning it off (via the - # envvars) without adding yet more GRPC-specific envvars. - # See https://sourceforge.net/p/mingw-w64/bugs/363/ - if "32" in platform.architecture()[0]: - EXTRA_ENV_COMPILE_ARGS += ( - " -D_ftime=_ftime32 -D_timeb=__timeb32" - " -D_ftime_s=_ftime32_s" - ) - else: - EXTRA_ENV_COMPILE_ARGS += ( - " -D_ftime=_ftime64 -D_timeb=__timeb64" - ) - else: - # We need to statically link the C++ Runtime, only the C runtime is - # available dynamically - EXTRA_ENV_COMPILE_ARGS += " /MT" + # MSVC by defaults uses C++14 so C11 needs to be specified. + EXTRA_ENV_COMPILE_ARGS += " /std:c11" + # We need to statically link the C++ Runtime, only the C runtime is + # available dynamically + EXTRA_ENV_COMPILE_ARGS += " /MT" elif "linux" in sys.platform: + # GCC by defaults uses C17 so only C++14 needs to be specified. + EXTRA_ENV_COMPILE_ARGS += " -std=c++14" EXTRA_ENV_COMPILE_ARGS += ( " -fvisibility=hidden -fno-wrapv -fno-exceptions" ) elif "darwin" in sys.platform: + # AppleClang by defaults uses C17 so only C++14 needs to be specified. + EXTRA_ENV_COMPILE_ARGS += " -std=c++14" EXTRA_ENV_COMPILE_ARGS += ( " -stdlib=libc++ -fvisibility=hidden -fno-wrapv -fno-exceptions" " -DHAVE_UNISTD_H" diff --git a/src/boringssl/boringssl_prefix_symbols.h b/src/boringssl/boringssl_prefix_symbols.h index 1fe2a4c0e8f..368614cbed7 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: 2ff4b968a7e0cfee66d9f151cb95635b43dc1d5b +// generated by generate_boringssl_prefix_header.sh on BoringSSL commit: ae72a4514c7afd150596b0a80947f3ca9b8363b5 // Copyright (c) 2018, Google Inc. // @@ -470,6 +470,7 @@ #define SSL_set_SSL_CTX BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_SSL_CTX) #define SSL_set_accept_state BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_accept_state) #define SSL_set_alpn_protos BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_alpn_protos) +#define SSL_set_alps_use_new_codepoint BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_alps_use_new_codepoint) #define SSL_set_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_bio) #define SSL_set_cert_cb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_cert_cb) #define SSL_set_chain_and_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_chain_and_key) @@ -822,6 +823,8 @@ #define BIO_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_free) #define BIO_free_all BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_free_all) #define BIO_get_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_get_data) +#define BIO_get_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_get_ex_data) +#define BIO_get_ex_new_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_get_ex_new_index) #define BIO_get_fd BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_get_fd) #define BIO_get_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_get_fp) #define BIO_get_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_get_init) @@ -879,6 +882,7 @@ #define BIO_set_conn_int_port BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_conn_int_port) #define BIO_set_conn_port BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_conn_port) #define BIO_set_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_data) +#define BIO_set_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_ex_data) #define BIO_set_fd BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_fd) #define BIO_set_flags BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_flags) #define BIO_set_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_fp) @@ -945,6 +949,7 @@ #define BN_bn2dec BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_bn2dec) #define BN_bn2hex BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_bn2hex) #define BN_bn2le_padded BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_bn2le_padded) +#define BN_bn2lebinpad BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_bn2lebinpad) #define BN_bn2mpi BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_bn2mpi) #define BN_clear BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_clear) #define BN_clear_bit BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_clear_bit) @@ -984,6 +989,7 @@ #define BN_is_word BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_is_word) #define BN_is_zero BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_is_zero) #define BN_le2bn BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_le2bn) +#define BN_lebin2bn BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_lebin2bn) #define BN_lshift BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_lshift) #define BN_lshift1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_lshift1) #define BN_marshal_asn1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_marshal_asn1) @@ -1050,6 +1056,7 @@ #define BN_zero BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BN_zero) #define BORINGSSL_function_hit BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BORINGSSL_function_hit) #define BORINGSSL_keccak BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BORINGSSL_keccak) +#define BORINGSSL_keccak_absorb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BORINGSSL_keccak_absorb) #define BORINGSSL_keccak_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BORINGSSL_keccak_init) #define BORINGSSL_keccak_squeeze BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BORINGSSL_keccak_squeeze) #define BORINGSSL_self_test BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BORINGSSL_self_test) @@ -1074,6 +1081,7 @@ #define CBB_add_asn1_uint64 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_asn1_uint64) #define CBB_add_asn1_uint64_with_tag BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_asn1_uint64_with_tag) #define CBB_add_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_bytes) +#define CBB_add_latin1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_latin1) #define CBB_add_space BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_space) #define CBB_add_u16 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_u16) #define CBB_add_u16_length_prefixed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_u16_length_prefixed) @@ -1086,6 +1094,9 @@ #define CBB_add_u64le BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_u64le) #define CBB_add_u8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_u8) #define CBB_add_u8_length_prefixed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_u8_length_prefixed) +#define CBB_add_ucs2_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_ucs2_be) +#define CBB_add_utf32_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_utf32_be) +#define CBB_add_utf8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_utf8) #define CBB_add_zeros BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_add_zeros) #define CBB_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_cleanup) #define CBB_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_data) @@ -1095,6 +1106,7 @@ #define CBB_finish_i2d BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_finish_i2d) #define CBB_flush BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_flush) #define CBB_flush_asn1_set_of BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_flush_asn1_set_of) +#define CBB_get_utf8_len BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_get_utf8_len) #define CBB_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_init) #define CBB_init_fixed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_init_fixed) #define CBB_len BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_len) @@ -1117,6 +1129,7 @@ #define CBS_get_asn1_uint64 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_asn1_uint64) #define CBS_get_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_bytes) #define CBS_get_last_u8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_last_u8) +#define CBS_get_latin1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_latin1) #define CBS_get_optional_asn1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_optional_asn1) #define CBS_get_optional_asn1_bool BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_optional_asn1_bool) #define CBS_get_optional_asn1_octet_string BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_optional_asn1_octet_string) @@ -1133,7 +1146,10 @@ #define CBS_get_u64le BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_u64le) #define CBS_get_u8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_u8) #define CBS_get_u8_length_prefixed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_u8_length_prefixed) +#define CBS_get_ucs2_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_ucs2_be) #define CBS_get_until_first BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_until_first) +#define CBS_get_utf32_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_utf32_be) +#define CBS_get_utf8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_utf8) #define CBS_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_init) #define CBS_is_unsigned_asn1_integer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_is_unsigned_asn1_integer) #define CBS_is_valid_asn1_bitstring BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_is_valid_asn1_bitstring) @@ -1197,6 +1213,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_fips_186_2_prf BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_fips_186_2_prf) #define CRYPTO_fork_detect_force_madv_wipeonfork_for_testing BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_fork_detect_force_madv_wipeonfork_for_testing) #define CRYPTO_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_free) #define CRYPTO_free_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_free_ex_data) @@ -1262,7 +1279,10 @@ #define CTR_DRBG_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CTR_DRBG_init) #define CTR_DRBG_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CTR_DRBG_new) #define CTR_DRBG_reseed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CTR_DRBG_reseed) -#define ChaCha20_ctr32 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ChaCha20_ctr32) +#define ChaCha20_ctr32_avx2 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ChaCha20_ctr32_avx2) +#define ChaCha20_ctr32_nohw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ChaCha20_ctr32_nohw) +#define ChaCha20_ctr32_ssse3 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ChaCha20_ctr32_ssse3) +#define ChaCha20_ctr32_ssse3_4x BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ChaCha20_ctr32_ssse3_4x) #define DES_decrypt3 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DES_decrypt3) #define DES_ecb3_encrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DES_ecb3_encrypt) #define DES_ecb_encrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DES_ecb_encrypt) @@ -1955,6 +1975,7 @@ #define OBJ_find_sigid_algs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_find_sigid_algs) #define OBJ_find_sigid_by_algs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_find_sigid_by_algs) #define OBJ_get0_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_get0_data) +#define OBJ_get_undef BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_get_undef) #define OBJ_length BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_length) #define OBJ_ln2nid BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_ln2nid) #define OBJ_nid2cbb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OBJ_nid2cbb) @@ -1968,6 +1989,7 @@ #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_calloc BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_calloc) #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) @@ -1975,6 +1997,7 @@ #define OPENSSL_cpuid_setup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_cpuid_setup) #define OPENSSL_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_free) #define OPENSSL_fromxdigit BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_fromxdigit) +#define OPENSSL_get_ia32cap BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_get_ia32cap) #define OPENSSL_gmtime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_gmtime) #define OPENSSL_gmtime_adj BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_gmtime_adj) #define OPENSSL_gmtime_diff BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_gmtime_diff) @@ -2037,6 +2060,7 @@ #define OPENSSL_tolower BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_tolower) #define OPENSSL_vasprintf BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_vasprintf) #define OPENSSL_vasprintf_internal BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_vasprintf_internal) +#define OPENSSL_zalloc BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OPENSSL_zalloc) #define OTHERNAME_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OTHERNAME_free) #define OTHERNAME_it BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OTHERNAME_it) #define OTHERNAME_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, OTHERNAME_new) @@ -2190,6 +2214,7 @@ #define RAND_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_bytes) #define RAND_bytes_with_additional_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_bytes_with_additional_data) #define RAND_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_cleanup) +#define RAND_disable_fork_unsafe_buffering BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_disable_fork_unsafe_buffering) #define RAND_egd BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_egd) #define RAND_enable_fork_unsafe_buffering BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_enable_fork_unsafe_buffering) #define RAND_file_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RAND_file_name) @@ -2362,7 +2387,6 @@ #define X509V3_EXT_nconf_nid BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509V3_EXT_nconf_nid) #define X509V3_EXT_print BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509V3_EXT_print) #define X509V3_EXT_print_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509V3_EXT_print_fp) -#define X509V3_EXT_val_prn BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509V3_EXT_val_prn) #define X509V3_NAME_from_section BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509V3_NAME_from_section) #define X509V3_add1_i2d BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509V3_add1_i2d) #define X509V3_add_standard_extensions BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509V3_add_standard_extensions) @@ -2416,7 +2440,6 @@ #define X509_CRL_add_ext BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_CRL_add_ext) #define X509_CRL_cmp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_CRL_cmp) #define X509_CRL_delete_ext BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_CRL_delete_ext) -#define X509_CRL_diff BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_CRL_diff) #define X509_CRL_digest BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_CRL_digest) #define X509_CRL_dup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_CRL_dup) #define X509_CRL_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_CRL_free) @@ -2468,15 +2491,12 @@ #define X509_EXTENSION_set_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_EXTENSION_set_data) #define X509_EXTENSION_set_object BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_EXTENSION_set_object) #define X509_INFO_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_INFO_free) -#define X509_INFO_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_INFO_new) -#define X509_LOOKUP_by_subject BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_by_subject) +#define X509_LOOKUP_add_dir BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_add_dir) #define X509_LOOKUP_ctrl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_ctrl) #define X509_LOOKUP_file BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_file) #define X509_LOOKUP_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_free) #define X509_LOOKUP_hash_dir BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_hash_dir) -#define X509_LOOKUP_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_init) -#define X509_LOOKUP_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_new) -#define X509_LOOKUP_shutdown BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_shutdown) +#define X509_LOOKUP_load_file BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_LOOKUP_load_file) #define X509_NAME_ENTRIES_it BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_NAME_ENTRIES_it) #define X509_NAME_ENTRY_create_by_NID BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_NAME_ENTRY_create_by_NID) #define X509_NAME_ENTRY_create_by_OBJ BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_NAME_ENTRY_create_by_OBJ) @@ -2516,25 +2536,20 @@ #define X509_NAME_print_ex BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_NAME_print_ex) #define X509_NAME_print_ex_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_NAME_print_ex_fp) #define X509_NAME_set BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_NAME_set) +#define X509_OBJECT_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_free) #define X509_OBJECT_free_contents BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_free_contents) #define X509_OBJECT_get0_X509 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_get0_X509) #define X509_OBJECT_get_type BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_get_type) -#define X509_OBJECT_idx_by_subject BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_idx_by_subject) -#define X509_OBJECT_retrieve_by_subject BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_retrieve_by_subject) -#define X509_OBJECT_retrieve_match BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_retrieve_match) -#define X509_OBJECT_up_ref_count BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_up_ref_count) -#define X509_PKEY_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PKEY_free) -#define X509_PKEY_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PKEY_new) +#define X509_OBJECT_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_OBJECT_new) #define X509_PUBKEY_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_free) #define X509_PUBKEY_get BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_get) +#define X509_PUBKEY_get0 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_get0) #define X509_PUBKEY_get0_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_get0_param) #define X509_PUBKEY_get0_public_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_get0_public_key) #define X509_PUBKEY_it BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_it) #define X509_PUBKEY_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_new) #define X509_PUBKEY_set BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_set) #define X509_PUBKEY_set0_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PUBKEY_set0_param) -#define X509_PURPOSE_add BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PURPOSE_add) -#define X509_PURPOSE_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PURPOSE_cleanup) #define X509_PURPOSE_get0 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PURPOSE_get0) #define X509_PURPOSE_get0_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PURPOSE_get0_name) #define X509_PURPOSE_get0_sname BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_PURPOSE_get0_sname) @@ -2559,6 +2574,7 @@ #define X509_REQ_dup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_REQ_dup) #define X509_REQ_extension_nid BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_REQ_extension_nid) #define X509_REQ_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_REQ_free) +#define X509_REQ_get0_pubkey BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_REQ_get0_pubkey) #define X509_REQ_get0_signature BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_REQ_get0_signature) #define X509_REQ_get1_email BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_REQ_get1_email) #define X509_REQ_get_attr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_REQ_get_attr) @@ -2611,13 +2627,15 @@ #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) #define X509_STORE_CTX_get0_parent_ctx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_parent_ctx) #define X509_STORE_CTX_get0_store BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_store) #define X509_STORE_CTX_get0_untrusted BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get0_untrusted) +#define X509_STORE_CTX_get1_certs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get1_certs) #define X509_STORE_CTX_get1_chain BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get1_chain) +#define X509_STORE_CTX_get1_crls BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get1_crls) #define X509_STORE_CTX_get1_issuer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get1_issuer) +#define X509_STORE_CTX_get_by_subject BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get_by_subject) #define X509_STORE_CTX_get_chain BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get_chain) #define X509_STORE_CTX_get_current_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get_current_cert) #define X509_STORE_CTX_get_error BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get_error) @@ -2626,11 +2644,9 @@ #define X509_STORE_CTX_get_ex_new_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_get_ex_new_index) #define X509_STORE_CTX_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_init) #define X509_STORE_CTX_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_new) -#define X509_STORE_CTX_purpose_inherit BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_purpose_inherit) #define X509_STORE_CTX_set0_crls BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set0_crls) #define X509_STORE_CTX_set0_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set0_param) #define X509_STORE_CTX_set0_trusted_stack BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set0_trusted_stack) -#define X509_STORE_CTX_set_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set_cert) #define X509_STORE_CTX_set_chain BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set_chain) #define X509_STORE_CTX_set_default BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set_default) #define X509_STORE_CTX_set_depth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set_depth) @@ -2643,49 +2659,24 @@ #define X509_STORE_CTX_set_trust BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set_trust) #define X509_STORE_CTX_set_verify_cb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_set_verify_cb) #define X509_STORE_CTX_trusted_stack BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_trusted_stack) -#define X509_STORE_CTX_zero BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_CTX_zero) #define X509_STORE_add_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_add_cert) #define X509_STORE_add_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_add_crl) #define X509_STORE_add_lookup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_add_lookup) #define X509_STORE_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_free) #define X509_STORE_get0_objects BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get0_objects) #define X509_STORE_get0_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get0_param) -#define X509_STORE_get1_certs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get1_certs) -#define X509_STORE_get1_crls BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get1_crls) -#define X509_STORE_get_by_subject BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_by_subject) -#define X509_STORE_get_cert_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_cert_crl) -#define X509_STORE_get_check_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_check_crl) -#define X509_STORE_get_check_issued BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_check_issued) -#define X509_STORE_get_check_revocation BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_check_revocation) -#define X509_STORE_get_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_cleanup) -#define X509_STORE_get_get_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_get_crl) -#define X509_STORE_get_get_issuer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_get_issuer) -#define X509_STORE_get_lookup_certs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_lookup_certs) -#define X509_STORE_get_lookup_crls BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_lookup_crls) -#define X509_STORE_get_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_verify) -#define X509_STORE_get_verify_cb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_get_verify_cb) #define X509_STORE_load_locations BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_load_locations) #define X509_STORE_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_new) #define X509_STORE_set1_param BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set1_param) -#define X509_STORE_set_cert_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_cert_crl) #define X509_STORE_set_check_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_check_crl) -#define X509_STORE_set_check_issued BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_check_issued) -#define X509_STORE_set_check_revocation BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_check_revocation) -#define X509_STORE_set_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_cleanup) #define X509_STORE_set_default_paths BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_default_paths) #define X509_STORE_set_depth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_depth) #define X509_STORE_set_flags BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_flags) #define X509_STORE_set_get_crl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_get_crl) -#define X509_STORE_set_get_issuer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_get_issuer) -#define X509_STORE_set_lookup_certs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_lookup_certs) -#define X509_STORE_set_lookup_crls BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_lookup_crls) #define X509_STORE_set_purpose BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_purpose) #define X509_STORE_set_trust BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_trust) -#define X509_STORE_set_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_verify) #define X509_STORE_set_verify_cb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set_verify_cb) #define X509_STORE_up_ref BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_up_ref) -#define X509_TRUST_add BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_TRUST_add) -#define X509_TRUST_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_TRUST_cleanup) #define X509_TRUST_get0 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_TRUST_get0) #define X509_TRUST_get0_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_TRUST_get0_name) #define X509_TRUST_get_by_id BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_TRUST_get_by_id) @@ -2700,8 +2691,6 @@ #define X509_VERIFY_PARAM_add1_host BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_add1_host) #define X509_VERIFY_PARAM_clear_flags BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_clear_flags) #define X509_VERIFY_PARAM_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_free) -#define X509_VERIFY_PARAM_get0_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_get0_name) -#define X509_VERIFY_PARAM_get0_peername BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_get0_peername) #define X509_VERIFY_PARAM_get_depth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_get_depth) #define X509_VERIFY_PARAM_get_flags BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_get_flags) #define X509_VERIFY_PARAM_inherit BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_inherit) @@ -2712,7 +2701,6 @@ #define X509_VERIFY_PARAM_set1_host BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_set1_host) #define X509_VERIFY_PARAM_set1_ip BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_set1_ip) #define X509_VERIFY_PARAM_set1_ip_asc BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_set1_ip_asc) -#define X509_VERIFY_PARAM_set1_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_set1_name) #define X509_VERIFY_PARAM_set1_policies BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_set1_policies) #define X509_VERIFY_PARAM_set_depth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_set_depth) #define X509_VERIFY_PARAM_set_flags BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_VERIFY_PARAM_set_flags) @@ -2755,6 +2743,7 @@ #define X509_get0_extensions BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get0_extensions) #define X509_get0_notAfter BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get0_notAfter) #define X509_get0_notBefore BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get0_notBefore) +#define X509_get0_pubkey BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get0_pubkey) #define X509_get0_pubkey_bitstr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get0_pubkey_bitstr) #define X509_get0_serialNumber BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get0_serialNumber) #define X509_get0_signature BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_get0_signature) @@ -2845,7 +2834,6 @@ #define X509v3_get_ext_by_OBJ BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509v3_get_ext_by_OBJ) #define X509v3_get_ext_by_critical BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509v3_get_ext_by_critical) #define X509v3_get_ext_count BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509v3_get_ext_count) -#define a2i_GENERAL_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, a2i_GENERAL_NAME) #define a2i_IPADDRESS BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, a2i_IPADDRESS) #define a2i_IPADDRESS_NC BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, a2i_IPADDRESS_NC) #define abi_test_bad_unwind_temporary BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_bad_unwind_temporary) @@ -2937,6 +2925,7 @@ #define asn1_refcount_set_one BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_refcount_set_one) #define asn1_set_choice_selector BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_set_choice_selector) #define asn1_type_cleanup BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_type_cleanup) +#define asn1_type_set0_string BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_type_set0_string) #define asn1_type_value_as_pointer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_type_value_as_pointer) #define asn1_utctime_to_tm BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_utctime_to_tm) #define beeu_mod_inverse_vartime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, beeu_mod_inverse_vartime) @@ -2983,14 +2972,17 @@ #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_mul4x_mont BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul4x_mont) #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) #define bn_mul_comba8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_comba8) #define bn_mul_consttime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_consttime) #define bn_mul_mont BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_mont) #define bn_mul_mont_gather5 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_mont_gather5) +#define bn_mul_mont_nohw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_mont_nohw) #define bn_mul_small BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_small) #define bn_mul_words BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mul_words) +#define bn_mulx4x_mont BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_mulx4x_mont) #define bn_odd_number_is_obviously_composite BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_odd_number_is_obviously_composite) #define bn_one_to_montgomery BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_one_to_montgomery) #define bn_power5 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_power5) @@ -3008,6 +3000,7 @@ #define bn_set_static_words BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_set_static_words) #define bn_set_words BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_set_words) #define bn_sqr8x_internal BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_sqr8x_internal) +#define bn_sqr8x_mont BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_sqr8x_mont) #define bn_sqr_comba4 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_sqr_comba4) #define bn_sqr_comba8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_sqr_comba8) #define bn_sqr_consttime BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, bn_sqr_consttime) @@ -3026,15 +3019,6 @@ #define c2i_ASN1_BIT_STRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, c2i_ASN1_BIT_STRING) #define c2i_ASN1_INTEGER BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, c2i_ASN1_INTEGER) #define c2i_ASN1_OBJECT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, c2i_ASN1_OBJECT) -#define cbb_add_latin1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbb_add_latin1) -#define cbb_add_ucs2_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbb_add_ucs2_be) -#define cbb_add_utf32_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbb_add_utf32_be) -#define cbb_add_utf8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbb_add_utf8) -#define cbb_get_utf8_len BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbb_get_utf8_len) -#define cbs_get_latin1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbs_get_latin1) -#define cbs_get_ucs2_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbs_get_ucs2_be) -#define cbs_get_utf32_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbs_get_utf32_be) -#define cbs_get_utf8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, cbs_get_utf8) #define chacha20_poly1305_open BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, chacha20_poly1305_open) #define chacha20_poly1305_seal BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, chacha20_poly1305_seal) #define crypto_gcm_clmul_enabled BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, crypto_gcm_clmul_enabled) @@ -3090,7 +3074,6 @@ #define d2i_EC_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_EC_PUBKEY) #define d2i_EC_PUBKEY_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_EC_PUBKEY_bio) #define d2i_EC_PUBKEY_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_EC_PUBKEY_fp) -#define d2i_EDIPARTYNAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_EDIPARTYNAME) #define d2i_EXTENDED_KEY_USAGE BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_EXTENDED_KEY_USAGE) #define d2i_GENERAL_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_GENERAL_NAME) #define d2i_GENERAL_NAMES BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_GENERAL_NAMES) @@ -3098,7 +3081,6 @@ #define d2i_NETSCAPE_SPKAC BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_NETSCAPE_SPKAC) #define d2i_NETSCAPE_SPKI BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_NETSCAPE_SPKI) #define d2i_NOTICEREF BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_NOTICEREF) -#define d2i_OTHERNAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_OTHERNAME) #define d2i_PKCS12 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS12) #define d2i_PKCS12_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS12_bio) #define d2i_PKCS12_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS12_fp) @@ -3144,7 +3126,6 @@ #define d2i_X509_EXTENSION BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_EXTENSION) #define d2i_X509_EXTENSIONS BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_EXTENSIONS) #define d2i_X509_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_NAME) -#define d2i_X509_NAME_ENTRY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_NAME_ENTRY) #define d2i_X509_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_PUBKEY) #define d2i_X509_REQ BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_REQ) #define d2i_X509_REQ_INFO BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_REQ_INFO) @@ -3263,6 +3244,8 @@ #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 fiat_p256_adx_mul BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, fiat_p256_adx_mul) +#define fiat_p256_adx_sqr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, fiat_p256_adx_sqr) #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) @@ -3276,7 +3259,6 @@ #define gcm_init_nohw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, gcm_init_nohw) #define gcm_init_ssse3 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, gcm_init_ssse3) #define hkdf_pkey_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, hkdf_pkey_meth) -#define i2a_ACCESS_DESCRIPTION BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2a_ACCESS_DESCRIPTION) #define i2a_ASN1_ENUMERATED BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2a_ASN1_ENUMERATED) #define i2a_ASN1_INTEGER BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2a_ASN1_INTEGER) #define i2a_ASN1_OBJECT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2a_ASN1_OBJECT) @@ -3334,7 +3316,6 @@ #define i2d_EC_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_EC_PUBKEY) #define i2d_EC_PUBKEY_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_EC_PUBKEY_bio) #define i2d_EC_PUBKEY_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_EC_PUBKEY_fp) -#define i2d_EDIPARTYNAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_EDIPARTYNAME) #define i2d_EXTENDED_KEY_USAGE BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_EXTENDED_KEY_USAGE) #define i2d_GENERAL_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_GENERAL_NAME) #define i2d_GENERAL_NAMES BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_GENERAL_NAMES) @@ -3342,7 +3323,6 @@ #define i2d_NETSCAPE_SPKAC BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_NETSCAPE_SPKAC) #define i2d_NETSCAPE_SPKI BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_NETSCAPE_SPKI) #define i2d_NOTICEREF BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_NOTICEREF) -#define i2d_OTHERNAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_OTHERNAME) #define i2d_PKCS12 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS12) #define i2d_PKCS12_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS12_bio) #define i2d_PKCS12_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS12_fp) @@ -3393,7 +3373,6 @@ #define i2d_X509_EXTENSION BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_EXTENSION) #define i2d_X509_EXTENSIONS BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_EXTENSIONS) #define i2d_X509_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_NAME) -#define i2d_X509_NAME_ENTRY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_NAME_ENTRY) #define i2d_X509_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_PUBKEY) #define i2d_X509_REQ BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_REQ) #define i2d_X509_REQ_INFO BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_REQ_INFO) @@ -3479,9 +3458,17 @@ #define rsaz_1024_sqr_avx2 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, rsaz_1024_sqr_avx2) #define s2i_ASN1_INTEGER BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, s2i_ASN1_INTEGER) #define s2i_ASN1_OCTET_STRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, s2i_ASN1_OCTET_STRING) -#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 sha1_block_data_order_avx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha1_block_data_order_avx) +#define sha1_block_data_order_avx2 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha1_block_data_order_avx2) +#define sha1_block_data_order_hw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha1_block_data_order_hw) +#define sha1_block_data_order_nohw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha1_block_data_order_nohw) +#define sha1_block_data_order_ssse3 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha1_block_data_order_ssse3) +#define sha256_block_data_order_avx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha256_block_data_order_avx) +#define sha256_block_data_order_hw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha256_block_data_order_hw) +#define sha256_block_data_order_nohw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha256_block_data_order_nohw) +#define sha256_block_data_order_ssse3 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha256_block_data_order_ssse3) +#define sha512_block_data_order_avx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha512_block_data_order_avx) +#define sha512_block_data_order_nohw BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sha512_block_data_order_nohw) #define sk_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_free) #define sk_new_null BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_new_null) #define sk_num BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_num) @@ -3490,6 +3477,42 @@ #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_value BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_value) +#define spx_base_b BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_base_b) +#define spx_copy_keypair_addr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_copy_keypair_addr) +#define spx_fors_pk_from_sig BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_fors_pk_from_sig) +#define spx_fors_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_fors_sign) +#define spx_fors_sk_gen BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_fors_sk_gen) +#define spx_fors_treehash BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_fors_treehash) +#define spx_generate_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_generate_key) +#define spx_generate_key_from_seed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_generate_key_from_seed) +#define spx_get_tree_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_get_tree_index) +#define spx_ht_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_ht_sign) +#define spx_ht_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_ht_verify) +#define spx_set_chain_addr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_chain_addr) +#define spx_set_hash_addr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_hash_addr) +#define spx_set_keypair_addr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_keypair_addr) +#define spx_set_layer_addr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_layer_addr) +#define spx_set_tree_addr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_tree_addr) +#define spx_set_tree_height BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_tree_height) +#define spx_set_tree_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_tree_index) +#define spx_set_type BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_type) +#define spx_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_sign) +#define spx_thash_f BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_f) +#define spx_thash_h BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_h) +#define spx_thash_hmsg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_hmsg) +#define spx_thash_prf BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_prf) +#define spx_thash_prfmsg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_prfmsg) +#define spx_thash_tk BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_tk) +#define spx_thash_tl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_tl) +#define spx_to_uint64 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_to_uint64) +#define spx_treehash BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_treehash) +#define spx_uint64_to_len_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_uint64_to_len_bytes) +#define spx_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_verify) +#define spx_wots_pk_from_sig BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_wots_pk_from_sig) +#define spx_wots_pk_gen BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_wots_pk_gen) +#define spx_wots_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_wots_sign) +#define spx_xmss_pk_from_sig BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_xmss_pk_from_sig) +#define spx_xmss_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_xmss_sign) #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) @@ -3556,6 +3579,7 @@ #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_check_issued_with_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x509_check_issued_with_callback) #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) #define x509_print_rsa_pss_params BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x509_print_rsa_pss_params) diff --git a/src/objective-c/BoringSSL-GRPC.podspec b/src/objective-c/BoringSSL-GRPC.podspec index 610c3367a59..a1f9c545f8d 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.31' + version = '0.0.32' 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 => "2ff4b968a7e0cfee66d9f151cb95635b43dc1d5b", + :commit => "ae72a4514c7afd150596b0a80947f3ca9b8363b5", } s.ios.deployment_target = '10.0' @@ -175,520 +175,523 @@ Pod::Spec.new do |s| *) opts="--ignore-garbage" ;; esac base64 --decode $opts < src/include/openssl/boringssl_prefix_symbols.h - H4sICAAAAAAC/2JvcmluZ3NzbF9wcmVmaXhfc3ltYm9scy5oALS9XXPbuJaofT+/wnXm5kzVrpnYaafd - 751iKx1NO7a3pPR05oZFSZDNHYpUCMqx+9cfgKREfKwFci34rdo107H0PIsCQHwRBP7rv84eRSGqtBab - s9Xr6R/Jqqyy4lHKPNlXYpu9JE8i3YjqP+XTWVmcfWw+XSxuz9blbpfV/9/ZxXb7y+q3D1fpr+LdeivE - hw+b37bnl+fr1W+XH95frn55v1mfby5X//Zv//VfZ9fl/rXKHp/qs/+7/o+zi3fnV/84+70sH3NxNivW - /6m+or/1IKpdJmWm4tXl2UGKf6ho+9d/nO3KTbZV/z8tNv9VVmebTNZVtjrU4qx+yuSZLLf1z7QSZ1v1 - YVq8atf+UO1LKc5+ZrX6AVXz/8tDfaau9EwhT6IS+tdXaaES4h9n+6p8zjYqSeqntFb/R5ylq/JZaNP6 - dO1FWWdroa+ijbvvr/f40X4v0uosK87SPNdkJuTx1y0/T88W95+W/zOZT89mi7OH+f2fs5vpzdn/mSzU - v//P2eTupvnS5Ovy8/387Ga2uL6dzL4szia3t2eKmk/ulrPpQrv+Z7b8fDaf/j6ZK+ReUcrXu++ub7/e - zO5+b8DZl4fbmYrSC87uP2nHl+n8+rP6y+Tj7Ha2/NaE/zRb3k0Xi/9UjrO7+7Ppn9O75dnis/YYV/Zx - enY7m3y8nZ59Uv+a3H3TusXD9Ho2uf2Huu759Hr5D6U4/pf60vX93WL6z69Kp75zdjP5MvldX0hDH//Z - /LDPk+XiXsWdq5+3+Hq71D/j0/z+y9nt/UJf+dnXxVTFmCwnmlZpqC558Q/FTdUFzvV1T9T/rpez+zvt - U4AKvZxP9HXcTX+/nf0+vbueava+AZb3c/Xdr4uO+cfZZD5b6KD3X5eavtfOpgjf391Nm++0qa/TQ11L - cxXTuUqIL5NG/MnOjf9syv/H+7lyqtsnmdzcJA/z6afZX2f7VNZCntU/yzNV9Io622aikqrwqMJfFkJl - Qq2LmCrUO6n/oEVZre9WXeLK7dkuXVflmXjZp0VTCNX/slqepdXjYad88mwlFCyaQOru/c9/+/eNurML - AV7O/03/cbb6D/CjZKZ++rz9QtBhfvEsPfv3fz9L9P9RdcCJmt0n20TVMvA19H9s//CPHvgPyyFFTbV0 - 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 - zwQA + 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 EOF # PrivacyInfo.xcprivacy is not part of BoringSSL repo, inject it during pod installation diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py index d0112f06277..1b68ac8336b 100644 --- a/src/python/grpcio/grpc_core_dependencies.py +++ b/src/python/grpcio/grpc_core_dependencies.py @@ -1097,7 +1097,7 @@ CORE_SOURCE_FILES = [ 'third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c', 'third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c', 'third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c', - 'third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c', + 'third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c', 'third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c', 'third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c', 'third_party/boringssl-with-bazel/src/crypto/mem.c', @@ -1134,6 +1134,13 @@ CORE_SOURCE_FILES = [ 'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c', 'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c', 'third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c', + 'third_party/boringssl-with-bazel/src/crypto/spx/address.c', + 'third_party/boringssl-with-bazel/src/crypto/spx/fors.c', + 'third_party/boringssl-with-bazel/src/crypto/spx/merkle.c', + 'third_party/boringssl-with-bazel/src/crypto/spx/spx.c', + 'third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c', + 'third_party/boringssl-with-bazel/src/crypto/spx/thash.c', + 'third_party/boringssl-with-bazel/src/crypto/spx/wots.c', 'third_party/boringssl-with-bazel/src/crypto/stack/stack.c', 'third_party/boringssl-with-bazel/src/crypto/thread.c', 'third_party/boringssl-with-bazel/src/crypto/thread_none.c', @@ -1157,6 +1164,29 @@ CORE_SOURCE_FILES = [ 'third_party/boringssl-with-bazel/src/crypto/x509/t_req.c', 'third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c', 'third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c', + 'third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x509.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c', @@ -1181,9 +1211,7 @@ CORE_SOURCE_FILES = [ 'third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c', - 'third_party/boringssl-with-bazel/src/crypto/x509/x_info.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_name.c', - 'third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_req.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c', @@ -1191,29 +1219,6 @@ CORE_SOURCE_FILES = [ 'third_party/boringssl-with-bazel/src/crypto/x509/x_val.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c', 'third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c', - 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c', 'third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc', 'third_party/boringssl-with-bazel/src/ssl/d1_both.cc', 'third_party/boringssl-with-bazel/src/ssl/d1_lib.cc', @@ -1412,17 +1417,6 @@ ASM_SOURCE_FILES = { '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', @@ -1518,6 +1512,8 @@ ASM_SOURCE_FILES = { '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/src/third_party/fiat/asm/fiat_p256_adx_mul.S', + 'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_p256_adx_sqr.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', diff --git a/templates/gRPC-Core.podspec.template b/templates/gRPC-Core.podspec.template index f32b3cd382b..2a20a9c5a94 100644 --- a/templates/gRPC-Core.podspec.template +++ b/templates/gRPC-Core.podspec.template @@ -198,7 +198,7 @@ ss.libraries = 'z' ss.dependency "#{s.name}/Interface", version ss.dependency "#{s.name}/Privacy", version - ss.dependency 'BoringSSL-GRPC', '0.0.31' + ss.dependency 'BoringSSL-GRPC', '0.0.32' % 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 8c5913e9a8d..b770f9f6cc1 100644 --- a/templates/src/objective-c/BoringSSL-GRPC.podspec.template +++ b/templates/src/objective-c/BoringSSL-GRPC.podspec.template @@ -70,7 +70,7 @@ Pod::Spec.new do |s| s.name = 'BoringSSL-GRPC' - version = '0.0.31' + version = '0.0.32' 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 2ff4b968a7e..ae72a4514c7 160000 --- a/third_party/boringssl-with-bazel +++ b/third_party/boringssl-with-bazel @@ -1 +1 @@ -Subproject commit 2ff4b968a7e0cfee66d9f151cb95635b43dc1d5b +Subproject commit ae72a4514c7afd150596b0a80947f3ca9b8363b5 diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py index c5c7243d233..b479143387d 100644 --- a/tools/distrib/python/grpcio_tools/setup.py +++ b/tools/distrib/python/grpcio_tools/setup.py @@ -138,27 +138,16 @@ class BuildExt(build_ext.build_ext): EXTRA_ENV_COMPILE_ARGS = os.environ.get("GRPC_PYTHON_CFLAGS", None) EXTRA_ENV_LINK_ARGS = os.environ.get("GRPC_PYTHON_LDFLAGS", None) if EXTRA_ENV_COMPILE_ARGS is None: - EXTRA_ENV_COMPILE_ARGS = "-std=c++14" + EXTRA_ENV_COMPILE_ARGS = "" if "win32" in sys.platform: - if sys.version_info < (3, 5): - # We use define flags here and don't directly add to DEFINE_MACROS below to - # ensure that the expert user/builder has a way of turning it off (via the - # envvars) without adding yet more GRPC-specific envvars. - # See https://sourceforge.net/p/mingw-w64/bugs/363/ - if "32" in platform.architecture()[0]: - EXTRA_ENV_COMPILE_ARGS += ( - " -D_ftime=_ftime32 -D_timeb=__timeb32" - " -D_ftime_s=_ftime32_s -D_hypot=hypot" - ) - else: - EXTRA_ENV_COMPILE_ARGS += ( - " -D_ftime=_ftime64 -D_timeb=__timeb64 -D_hypot=hypot" - ) - else: - # We need to statically link the C++ Runtime, only the C runtime is - # available dynamically - EXTRA_ENV_COMPILE_ARGS += " /MT" + # MSVC by defaults uses C++14 so C11 needs to be specified. + EXTRA_ENV_COMPILE_ARGS += " /std:c11" + # We need to statically link the C++ Runtime, only the C runtime is + # available dynamically + EXTRA_ENV_COMPILE_ARGS += " /MT" elif "linux" in sys.platform or "darwin" in sys.platform: + # GCC & Clang by defaults uses C17 so only C++14 needs to be specified. + EXTRA_ENV_COMPILE_ARGS += " -std=c++14" EXTRA_ENV_COMPILE_ARGS += " -fno-wrapv -frtti" if EXTRA_ENV_LINK_ARGS is None: EXTRA_ENV_LINK_ARGS = "" diff --git a/tools/internal_ci/macos/grpc_distribtests_python.sh b/tools/internal_ci/macos/grpc_distribtests_python.sh index ded41b34591..f1a238e4442 100644 --- a/tools/internal_ci/macos/grpc_distribtests_python.sh +++ b/tools/internal_ci/macos/grpc_distribtests_python.sh @@ -34,7 +34,7 @@ python3.11 -m pip install -U 'cython<3.0.0rc1' setuptools==65.4.1 wheel --user python3.12 -m pip install -U 'cython<3.0.0rc1' setuptools==65.4.1 wheel --user # Build all python macos artifacts (this step actually builds all the binary wheels and source archives) -tools/run_tests/task_runner.py -f artifact macos python ${TASK_RUNNER_EXTRA_FILTERS} -j 4 -x build_artifacts/sponge_log.xml || FAILED="true" +tools/run_tests/task_runner.py -f artifact macos python ${TASK_RUNNER_EXTRA_FILTERS} -j 2 -x build_artifacts/sponge_log.xml || FAILED="true" # the next step expects to find the artifacts from the previous step in the "input_artifacts" folder. rm -rf input_artifacts diff --git a/tools/run_tests/artifacts/artifact_targets.py b/tools/run_tests/artifacts/artifact_targets.py index 5368a6e3ca0..0c95f5bfb08 100644 --- a/tools/run_tests/artifacts/artifact_targets.py +++ b/tools/run_tests/artifacts/artifact_targets.py @@ -462,16 +462,16 @@ def targets(): PythonArtifact("macos", "x64", "python3.8"), PythonArtifact("macos", "x64", "python3.9"), PythonArtifact("macos", "x64", "python3.10"), - PythonArtifact("macos", "x64", "python3.11", presubmit=True), + PythonArtifact("macos", "x64", "python3.11"), PythonArtifact("macos", "x64", "python3.12", presubmit=True), PythonArtifact("windows", "x86", "Python37_32bit", presubmit=True), - PythonArtifact("windows", "x86", "Python38_32bit", presubmit=True), + PythonArtifact("windows", "x86", "Python38_32bit"), PythonArtifact("windows", "x86", "Python39_32bit"), PythonArtifact("windows", "x86", "Python310_32bit"), PythonArtifact("windows", "x86", "Python311_32bit"), PythonArtifact("windows", "x86", "Python312_32bit", presubmit=True), PythonArtifact("windows", "x64", "Python37", presubmit=True), - PythonArtifact("windows", "x64", "Python38", presubmit=True), + PythonArtifact("windows", "x64", "Python38"), PythonArtifact("windows", "x64", "Python39"), PythonArtifact("windows", "x64", "Python310"), PythonArtifact("windows", "x64", "Python311"), diff --git a/tools/run_tests/sanity/check_submodules.sh b/tools/run_tests/sanity/check_submodules.sh index f9a313b8c70..35a19807ae9 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 4a2c63365eff8823a5221db86ef490e828306f9d third_party/benchmark 344117638c8ff7e239044fd0fa7085839fc03021 third_party/bloaty 60209eb1ccc34d5deefb002d1b7f37545204f7f2 -third_party/boringssl-with-bazel 2ff4b968a7e0cfee66d9f151cb95635b43dc1d5b +third_party/boringssl-with-bazel ae72a4514c7afd150596b0a80947f3ca9b8363b5 third_party/cares/cares 6360e96b5cf8e5980c887ce58ef727e53d77243a third_party/envoy-api 78f198cf96ecdc7120ef640406770aa01af775c4 third_party/googleapis 2f9af297c84c55c8b871ba4495e01ade42476c92