Imported Upstream version 1.41.1 upstream/1.41.1
authorJinWang An <jinwang.an@samsung.com>
Wed, 1 Dec 2021 08:53:26 +0000 (17:53 +0900)
committerJinWang An <jinwang.an@samsung.com>
Wed, 1 Dec 2021 08:53:26 +0000 (17:53 +0900)
75 files changed:
BUILD
CMakeLists.txt
Makefile
_metadata.py
bazel/grpc_deps.bzl
build_handwritten.yaml
config.m4
config.w32
etc/roots.pem
examples/python/xds/server.py
gRPC-C++.podspec
gRPC-Core.podspec
gRPC-ProtoRPC.podspec
gRPC-RxLibrary.podspec
gRPC.podspec
grpc.gemspec
grpc.gyp
package.xml
src/boringssl/boringssl_prefix_symbols.h
src/cpp/common/version_cc.cc
src/csharp/Grpc.Core.Api/VersionInfo.cs
src/csharp/build/dependencies.props
src/objective-c/!ProtoCompiler-gRPCCppPlugin.podspec
src/objective-c/!ProtoCompiler-gRPCPlugin.podspec
src/objective-c/BoringSSL-GRPC.podspec
src/objective-c/GRPCClient/version.h
src/objective-c/tests/version.h
src/php/composer.json
src/php/ext/grpc/version.h
src/python/grpcio/grpc/_grpcio_metadata.py
src/python/grpcio/grpc_core_dependencies.py
src/python/grpcio/grpc_version.py
src/python/grpcio_admin/grpc_version.py
src/python/grpcio_channelz/grpc_version.py
src/python/grpcio_csds/grpc_version.py
src/python/grpcio_health_checking/grpc_version.py
src/python/grpcio_reflection/grpc_version.py
src/python/grpcio_status/grpc_version.py
src/python/grpcio_testing/grpc_version.py
src/python/grpcio_tests/grpc_version.py
src/ruby/ext/grpc/extconf.rb
src/ruby/lib/grpc/version.rb
src/ruby/tools/version.rb
templates/gRPC-Core.podspec.template
templates/src/objective-c/BoringSSL-GRPC.podspec.template
templates/tools/dockerfile/apt_get_basic_bullseye.include [new file with mode: 0644]
templates/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile.template
templates/tools/dockerfile/interoptest/grpc_interop_pythonasyncio/Dockerfile.template
templates/tools/dockerfile/python_build_interop.sh.include
templates/tools/dockerfile/python_bullseye.include [new file with mode: 0644]
third_party/README.md
tools/distrib/python/grpc_version.py
tools/distrib/python/grpcio_tools/grpc_version.py
tools/dockerfile/interoptest/grpc_interop_python/Dockerfile
tools/dockerfile/interoptest/grpc_interop_python/build_interop.sh
tools/dockerfile/interoptest/grpc_interop_pythonasyncio/Dockerfile
tools/dockerfile/interoptest/grpc_interop_pythonasyncio/build_interop.sh
tools/doxygen/Doxyfile.c++
tools/doxygen/Doxyfile.c++.internal
tools/doxygen/Doxyfile.objc
tools/doxygen/Doxyfile.objc.internal
tools/doxygen/Doxyfile.php
tools/internal_ci/helper_scripts/prepare_build_macos_rc
tools/internal_ci/linux/grpc_xds_k8s.sh
tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh
tools/internal_ci/linux/grpc_xds_k8s_lb.sh
tools/internal_ci/linux/grpc_xds_k8s_lb_python.sh
tools/internal_ci/linux/grpc_xds_k8s_python.sh
tools/internal_ci/linux/grpc_xds_k8s_xlang.sh
tools/internal_ci/linux/grpc_xds_url_map.sh
tools/internal_ci/linux/grpc_xds_url_map_python.sh
tools/run_tests/python_utils/report_utils.py
tools/run_tests/run_interop_tests.py
tools/run_tests/run_tests.py
tools/run_tests/sanity/check_submodules.sh

diff --git a/BUILD b/BUILD
index 39ee9f9..7e56a55 100644 (file)
--- a/BUILD
+++ b/BUILD
@@ -113,7 +113,7 @@ g_stands_for = "goat"  # @unused
 
 core_version = "19.0.0"  # @unused
 
-version = "1.41.0"  # @unused
+version = "1.41.1"  # @unused
 
 GPR_PUBLIC_HDRS = [
     "include/grpc/support/alloc.h",
index 0e8fbde..2cad896 100644 (file)
 cmake_minimum_required(VERSION 3.5.1)
 
 set(PACKAGE_NAME          "grpc")
-set(PACKAGE_VERSION       "1.41.0")
+set(PACKAGE_VERSION       "1.41.1")
 set(gRPC_CORE_VERSION     "19.0.0")
 set(gRPC_CORE_SOVERSION   "19")
-set(gRPC_CPP_VERSION      "1.41.0")
+set(gRPC_CPP_VERSION      "1.41.1")
 set(gRPC_CPP_SOVERSION    "1.41")
-set(gRPC_CSHARP_VERSION   "2.41.0")
+set(gRPC_CSHARP_VERSION   "2.41.1")
 set(gRPC_CSHARP_SOVERSION "2.41")
 set(PACKAGE_STRING        "${PACKAGE_NAME} ${PACKAGE_VERSION}")
 set(PACKAGE_TARNAME       "${PACKAGE_NAME}-${PACKAGE_VERSION}")
@@ -251,7 +251,7 @@ endif()
 if (gRPC_XDS_USER_AGENT_IS_CSHARP)
   # The value of the defines needs to contain quotes.
   # See https://github.com/grpc/grpc/blob/fbf32836a418cc84f58786700273b65cb9174e1d/src/core/ext/xds/xds_api.cc#L854
-  add_definitions("-DGRPC_XDS_USER_AGENT_NAME_SUFFIX=\"csharp\"" "-DGRPC_XDS_USER_AGENT_VERSION_SUFFIX=\"2.41.0\"")
+  add_definitions("-DGRPC_XDS_USER_AGENT_NAME_SUFFIX=\"csharp\"" "-DGRPC_XDS_USER_AGENT_VERSION_SUFFIX=\"2.41.1\"")
 endif()
 
 include(cmake/abseil-cpp.cmake)
index c44a46f..e7715fe 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -455,8 +455,8 @@ Q = @
 endif
 
 CORE_VERSION = 19.0.0
-CPP_VERSION = 1.41.0
-CSHARP_VERSION = 2.41.0
+CPP_VERSION = 1.41.1
+CSHARP_VERSION = 2.41.1
 
 CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
 CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
@@ -2083,6 +2083,7 @@ LIBBORINGSSL_SRC = \
     third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c \
     third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c \
     third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c \
+    third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c \
     third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c \
     third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c \
     third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c \
@@ -2223,13 +2224,13 @@ LIBBORINGSSL_SRC = \
     third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c \
     third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c \
     third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c \
-    third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c \
     third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c \
     third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c \
     third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c \
     third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c \
     third_party/boringssl-with-bazel/src/crypto/x509/by_file.c \
     third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c \
+    third_party/boringssl-with-bazel/src/crypto/x509/name_print.c \
     third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c \
     third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c \
     third_party/boringssl-with-bazel/src/crypto/x509/t_req.c \
index 73f6b1e..7f4d749 100644 (file)
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/_metadata.py.template`!!!
 
-__version__ = """1.41.0"""
+__version__ = """1.41.1"""
index e2ef402..dc9dacb 100644 (file)
@@ -189,11 +189,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 = "6f640262999cd1fb33cf705922e453e835d2d20f3f06fe0d77f6426c19257308",
-            strip_prefix = "boringssl-fc44652a42b396e1645d5e72aba053349992136a",
+            sha256 = "87a2efd493bd84c0c26afc607ce6c99d2cb05046d0ebbbefe8ba5b71bdeeda1c",
+            strip_prefix = "boringssl-340faef0ad19283e985ce7fff0dec73ba4022c8d",
             urls = [
-                "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/fc44652a42b396e1645d5e72aba053349992136a.tar.gz",
-                "https://github.com/google/boringssl/archive/fc44652a42b396e1645d5e72aba053349992136a.tar.gz",
+                "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/340faef0ad19283e985ce7fff0dec73ba4022c8d.tar.gz",
+                "https://github.com/google/boringssl/archive/340faef0ad19283e985ce7fff0dec73ba4022c8d.tar.gz",
             ],
         )
 
index 1fe0577..d6f7c3e 100644 (file)
@@ -16,7 +16,7 @@ settings:
   csharp_major_version: 2
   g_stands_for: goat
   protobuf_version: 3.17.3
-  version: 1.41.0
+  version: 1.41.1
 targets:
 - name: check_epollexclusive
   build: tool
index 261cf3d..9467e7e 100644 (file)
--- a/config.m4
+++ b/config.m4
@@ -765,6 +765,7 @@ if test "$PHP_GRPC" != "no"; then
     third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c \
     third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c \
     third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c \
+    third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c \
     third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c \
     third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c \
     third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c \
@@ -905,13 +906,13 @@ if test "$PHP_GRPC" != "no"; then
     third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c \
     third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c \
     third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c \
-    third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c \
     third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c \
     third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c \
     third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c \
     third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c \
     third_party/boringssl-with-bazel/src/crypto/x509/by_file.c \
     third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c \
+    third_party/boringssl-with-bazel/src/crypto/x509/name_print.c \
     third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c \
     third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c \
     third_party/boringssl-with-bazel/src/crypto/x509/t_req.c \
@@ -1056,7 +1057,7 @@ if test "$PHP_GRPC" != "no"; then
     -D_HAS_EXCEPTIONS=0 -DNOMINMAX -DGRPC_ARES=0 \
     -DGRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK=1 \
     -DGRPC_XDS_USER_AGENT_NAME_SUFFIX='"\"PHP\""' \
-    -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX='"\"1.41.0\""')
+    -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX='"\"1.41.1\""')
 
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/census)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/client_channel)
index 66eb917..3e46c07 100644 (file)
@@ -731,6 +731,7 @@ if (PHP_GRPC != "no") {
     "third_party\\boringssl-with-bazel\\src\\crypto\\asn1\\a_object.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\asn1\\a_octet.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\asn1\\a_print.c " +
+    "third_party\\boringssl-with-bazel\\src\\crypto\\asn1\\a_strex.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\asn1\\a_strnid.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\asn1\\a_time.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\asn1\\a_type.c " +
@@ -871,13 +872,13 @@ if (PHP_GRPC != "no") {
     "third_party\\boringssl-with-bazel\\src\\crypto\\trust_token\\voprf.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\a_digest.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\a_sign.c " +
-    "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\a_strex.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\a_verify.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\algorithm.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\asn1_gen.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\by_dir.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\by_file.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\i2d_pr.c " +
+    "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\name_print.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\rsa_pss.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\t_crl.c " +
     "third_party\\boringssl-with-bazel\\src\\crypto\\x509\\t_req.c " +
index 1616abe..e5c84fa 100644 (file)
@@ -191,48 +191,6 @@ l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3
 smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
 -----END CERTIFICATE-----
 
-# Issuer: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority
-# Subject: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority
-# Label: "QuoVadis Root CA"
-# Serial: 985026699
-# MD5 Fingerprint: 27:de:36:fe:72:b7:00:03:00:9d:f4:f0:1e:6c:04:24
-# SHA1 Fingerprint: de:3f:40:bd:50:93:d3:9b:6c:60:f6:da:bc:07:62:01:00:89:76:c9
-# SHA256 Fingerprint: a4:5e:de:3b:bb:f0:9c:8a:e1:5c:72:ef:c0:72:68:d6:93:a2:1c:99:6f:d5:1e:67:ca:07:94:60:fd:6d:88:73
------BEGIN CERTIFICATE-----
-MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC
-TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0
-aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0
-aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz
-MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw
-IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR
-dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG
-9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp
-li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D
-rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ
-WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug
-F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU
-xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC
-Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv
-dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw
-ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl
-IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh
-c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy
-ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
-Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI
-KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T
-KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq
-y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p
-dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD
-VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL
-MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk
-fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8
-7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R
-cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y
-mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW
-xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK
-SnQ2+Q==
------END CERTIFICATE-----
-
 # Issuer: CN=QuoVadis Root CA 2 O=QuoVadis Limited
 # Subject: CN=QuoVadis Root CA 2 O=QuoVadis Limited
 # Label: "QuoVadis Root CA 2"
@@ -348,33 +306,6 @@ JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot
 RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw==
 -----END CERTIFICATE-----
 
-# Issuer: CN=Sonera Class2 CA O=Sonera
-# Subject: CN=Sonera Class2 CA O=Sonera
-# Label: "Sonera Class 2 Root CA"
-# Serial: 29
-# MD5 Fingerprint: a3:ec:75:0f:2e:88:df:fa:48:01:4e:0b:5c:48:6f:fb
-# SHA1 Fingerprint: 37:f7:6d:e6:07:7c:90:c5:b1:3e:93:1a:b7:41:10:b4:f2:e4:9a:27
-# SHA256 Fingerprint: 79:08:b4:03:14:c1:38:10:0b:51:8d:07:35:80:7f:fb:fc:f8:51:8a:00:95:33:71:05:ba:38:6b:15:3d:d9:27
------BEGIN CERTIFICATE-----
-MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP
-MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx
-MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV
-BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o
-Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt
-5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s
-3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej
-vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu
-8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw
-DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG
-MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil
-zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/
-3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD
-FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6
-Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2
-ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M
------END CERTIFICATE-----
-
 # Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com
 # Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com
 # Label: "XRamp Global CA Root"
@@ -563,34 +494,6 @@ vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
 +OkuE6N36B9K
 -----END CERTIFICATE-----
 
-# Issuer: CN=DST Root CA X3 O=Digital Signature Trust Co.
-# Subject: CN=DST Root CA X3 O=Digital Signature Trust Co.
-# Label: "DST Root CA X3"
-# Serial: 91299735575339953335919266965803778155
-# MD5 Fingerprint: 41:03:52:dc:0f:f7:50:1b:16:f0:02:8e:ba:6f:45:c5
-# SHA1 Fingerprint: da:c9:02:4f:54:d8:f6:df:94:93:5f:b1:73:26:38:ca:6a:d7:7c:13
-# SHA256 Fingerprint: 06:87:26:03:31:a7:24:03:d9:09:f1:05:e6:9b:cf:0d:32:e1:bd:24:93:ff:c6:d9:20:6d:11:bc:d6:77:07:39
------BEGIN CERTIFICATE-----
-MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
-MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
-DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
-PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
-Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
-rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
-OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
-xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
-7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
-aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
-HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
-SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
-ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
-AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
-R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
-JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
-Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
------END CERTIFICATE-----
-
 # Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG
 # Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG
 # Label: "SwissSign Gold CA - G2"
@@ -950,67 +853,6 @@ i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN
 9u6wWk5JRFRYX0KD
 -----END CERTIFICATE-----
 
-# Issuer: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only
-# Subject: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only
-# Label: "GeoTrust Primary Certification Authority - G2"
-# Serial: 80682863203381065782177908751794619243
-# MD5 Fingerprint: 01:5e:d8:6b:bd:6f:3d:8e:a1:31:f8:12:e0:98:73:6a
-# SHA1 Fingerprint: 8d:17:84:d5:37:f3:03:7d:ec:70:fe:57:8b:51:9a:99:e6:10:d7:b0
-# SHA256 Fingerprint: 5e:db:7a:c4:3b:82:a0:6a:87:61:e8:d7:be:49:79:eb:f2:61:1f:7d:d7:9b:f9:1c:1c:6b:56:6a:21:9e:d7:66
------BEGIN CERTIFICATE-----
-MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL
-MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj
-KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2
-MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
-eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV
-BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw
-NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV
-BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH
-MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL
-So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal
-tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO
-BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG
-CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT
-qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz
-rD6ogRLQy7rQkgu2npaqBA+K
------END CERTIFICATE-----
-
-# Issuer: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only
-# Subject: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only
-# Label: "VeriSign Universal Root Certification Authority"
-# Serial: 85209574734084581917763752644031726877
-# MD5 Fingerprint: 8e:ad:b5:01:aa:4d:81:e4:8c:1d:d1:e1:14:00:95:19
-# SHA1 Fingerprint: 36:79:ca:35:66:87:72:30:4d:30:a5:fb:87:3b:0f:a7:7b:b7:0d:54
-# SHA256 Fingerprint: 23:99:56:11:27:a5:71:25:de:8c:ef:ea:61:0d:df:2f:a0:78:b5:c8:06:7f:4e:82:82:90:bf:b8:60:e8:4b:3c
------BEGIN CERTIFICATE-----
-MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB
-vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
-ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp
-U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W
-ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe
-Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX
-MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0
-IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y
-IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh
-bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF
-9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH
-H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H
-LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN
-/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT
-rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud
-EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw
-WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs
-exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
-DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4
-sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+
-seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz
-4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+
-BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR
-lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3
-7M2CYfE45k+XmCpajQ==
------END CERTIFICATE-----
-
 # Issuer: CN=NetLock Arany (Class Gold) FÅ‘tanúsítvány O=NetLock Kft. OU=Tanúsítványkiadók (Certification Services)
 # Subject: CN=NetLock Arany (Class Gold) FÅ‘tanúsítvány O=NetLock Kft. OU=Tanúsítványkiadók (Certification Services)
 # Label: "NetLock Arany (Class Gold) FÅ‘tanúsítvány"
@@ -1246,105 +1088,6 @@ naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1ZWrOZyGls
 QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
 -----END CERTIFICATE-----
 
-# Issuer: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A.
-# Subject: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A.
-# Label: "Chambers of Commerce Root - 2008"
-# Serial: 11806822484801597146
-# MD5 Fingerprint: 5e:80:9e:84:5a:0e:65:0b:17:02:f3:55:18:2a:3e:d7
-# SHA1 Fingerprint: 78:6a:74:ac:76:ab:14:7f:9c:6a:30:50:ba:9e:a8:7e:fe:9a:ce:3c
-# SHA256 Fingerprint: 06:3e:4a:fa:c4:91:df:d3:32:f3:08:9b:85:42:e9:46:17:d8:93:d7:fe:94:4e:10:a7:93:7e:e2:9d:96:93:c0
------BEGIN CERTIFICATE-----
-MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD
-VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0
-IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3
-MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz
-IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz
-MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj
-dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw
-EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp
-MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G
-CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9
-28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq
-VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q
-DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR
-5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL
-ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a
-Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl
-UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s
-+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5
-Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
-ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx
-hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV
-HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1
-+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN
-YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t
-L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy
-ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt
-IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV
-HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w
-DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW
-PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF
-5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1
-glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH
-FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2
-pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD
-xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG
-tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq
-jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De
-fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
-OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ
-d0jQ
------END CERTIFICATE-----
-
-# Issuer: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A.
-# Subject: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A.
-# Label: "Global Chambersign Root - 2008"
-# Serial: 14541511773111788494
-# MD5 Fingerprint: 9e:80:ff:78:01:0c:2e:c1:36:bd:fe:96:90:6e:08:f3
-# SHA1 Fingerprint: 4a:bd:ee:ec:95:0d:35:9c:89:ae:c7:52:a1:2c:5b:29:f6:d6:aa:0c
-# SHA256 Fingerprint: 13:63:35:43:93:34:a7:69:80:16:a0:d3:24:de:72:28:4e:07:9d:7b:52:20:bb:8f:bd:74:78:16:ee:be:ba:ca
------BEGIN CERTIFICATE-----
-MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD
-VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0
-IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3
-MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
-aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx
-MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy
-cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG
-A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl
-BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI
-hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed
-KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7
-G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2
-zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4
-ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG
-HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2
-Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V
-yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e
-beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r
-6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
-wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog
-zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW
-BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr
-ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp
-ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk
-cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt
-YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC
-CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow
-KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI
-hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ
-UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz
-X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x
-fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz
-a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd
-Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd
-SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O
-AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso
-M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge
-v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
-09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
------END CERTIFICATE-----
-
 # Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc.
 # Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc.
 # Label: "Go Daddy Root Certificate Authority - G2"
@@ -1756,35 +1499,6 @@ LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT
 LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
 -----END CERTIFICATE-----
 
-# Issuer: O=Trustis Limited OU=Trustis FPS Root CA
-# Subject: O=Trustis Limited OU=Trustis FPS Root CA
-# Label: "Trustis FPS Root CA"
-# Serial: 36053640375399034304724988975563710553
-# MD5 Fingerprint: 30:c9:e7:1e:6b:e6:14:eb:65:b2:16:69:20:31:67:4d
-# SHA1 Fingerprint: 3b:c0:38:0b:33:c3:f6:a6:0c:86:15:22:93:d9:df:f5:4b:81:c0:04
-# SHA256 Fingerprint: c1:b4:82:99:ab:a5:20:8f:e9:63:0a:ce:55:ca:68:a0:3e:da:5a:51:9c:88:02:a0:d3:a6:73:be:8f:8e:55:7d
------BEGIN CERTIFICATE-----
-MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBF
-MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQL
-ExNUcnVzdGlzIEZQUyBSb290IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTEx
-MzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1RydXN0aXMgTGltaXRlZDEc
-MBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQRUN+
-AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihH
-iTHcDnlkH5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjj
-vSkCqPoc4Vu5g6hBSLwacY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA
-0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zto3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlB
-OrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEAAaNTMFEwDwYDVR0TAQH/
-BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAdBgNVHQ4E
-FgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01
-GX2cGE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmW
-zaD+vkAMXBJV+JOCyinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP4
-1BIy+Q7DsdwyhEQsb8tGD+pmQQ9P8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZE
-f1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHVl/9D7S3B2l0pKoU/rGXuhg8F
-jZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYliB6XzCGcKQEN
-ZetX2fNXlrtIzYE=
------END CERTIFICATE-----
-
 # Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327
 # Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327
 # Label: "Buypass Class 2 Root CA"
@@ -2646,46 +2360,6 @@ KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg
 xwy8p2Fp8fc74SrL+SvzZpA3
 -----END CERTIFICATE-----
 
-# Issuer: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden
-# Subject: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden
-# Label: "Staat der Nederlanden Root CA - G3"
-# Serial: 10003001
-# MD5 Fingerprint: 0b:46:67:07:db:10:2f:19:8c:35:50:60:d1:0b:f4:37
-# SHA1 Fingerprint: d8:eb:6b:41:51:92:59:e0:f3:e7:85:00:c0:3d:b6:88:97:c9:ee:fc
-# SHA256 Fingerprint: 3c:4f:b0:b9:5a:b8:b3:00:32:f4:32:b8:6f:53:5f:e1:72:c1:85:d0:fd:39:86:58:37:cf:36:18:7f:a6:f4:28
------BEGIN CERTIFICATE-----
-MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO
-TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh
-dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloX
-DTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl
-ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv
-b3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4yolQP
-cPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WW
-IkYFsO2tx1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqX
-xz8ecAgwoNzFs21v0IJyEavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFy
-KJLZWyNtZrVtB0LrpjPOktvA9mxjeM3KTj215VKb8b475lRgsGYeCasH/lSJEULR
-9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUurmkVLoR9BvUhTFXFkC4az
-5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU51nus6+N8
-6U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7
-Ngzp07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHP
-bMk7ccHViLVlvMDoFxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXt
-BznaqB16nzaeErAMZRKQFWDZJkBE41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTt
-XUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMBAAGjQjBAMA8GA1UdEwEB/wQF
-MAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleuyjWcLhL75Lpd
-INyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD
-U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwp
-LiniyMMB8jPqKqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8
-Ipf3YF3qKS9Ysr1YvY2WTxB1v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixp
-gZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA8KCWAg8zxXHzniN9lLf9OtMJgwYh
-/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b8KKaa8MFSu1BYBQw
-0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0rmj1A
-fsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq
-4BZ+Extq1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR
-1VmiiXTTn74eS9fGbbeIJG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/
-QFH1T/U67cjF68IeHRaVesd+QnGTbksVtzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM
-94B7IWcnMFk=
------END CERTIFICATE-----
-
 # Issuer: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden
 # Subject: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden
 # Label: "Staat der Nederlanden EV Root CA"
@@ -4326,3 +4000,338 @@ LBT/DShycpWbXgnbiUSYqqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX
 dh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmgkpzNNIaRkPpkUZ3+/uul
 9XXeifdy
 -----END CERTIFICATE-----
+
+# Issuer: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres
+# Subject: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres
+# Label: "AC RAIZ FNMT-RCM SERVIDORES SEGUROS"
+# Serial: 131542671362353147877283741781055151509
+# MD5 Fingerprint: 19:36:9c:52:03:2f:d2:d1:bb:23:cc:dd:1e:12:55:bb
+# SHA1 Fingerprint: 62:ff:d9:9e:c0:65:0d:03:ce:75:93:d2:ed:3f:2d:32:c9:e3:e5:4a
+# SHA256 Fingerprint: 55:41:53:b1:3d:2c:f9:dd:b7:53:bf:be:1a:4e:0a:e0:8d:0a:a4:18:70:58:fe:60:a2:b8:62:b2:e4:b8:7b:cb
+-----BEGIN CERTIFICATE-----
+MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQsw
+CQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgw
+FgYDVQRhDA9WQVRFUy1RMjgyNjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1S
+Q00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4MTIyMDA5MzczM1oXDTQzMTIyMDA5
+MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQL
+DAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNBQyBS
+QUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuB
+BAAiA2IABPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LH
+sbI6GA60XYyzZl2hNPk2LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oK
+Um8BA06Oi6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
+VR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqGSM49BAMDA2kAMGYCMQCu
+SuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoDzBOQn5IC
+MQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJy
+v+c=
+-----END CERTIFICATE-----
+
+# Issuer: CN=GlobalSign Root R46 O=GlobalSign nv-sa
+# Subject: CN=GlobalSign Root R46 O=GlobalSign nv-sa
+# Label: "GlobalSign Root R46"
+# Serial: 1552617688466950547958867513931858518042577
+# MD5 Fingerprint: c4:14:30:e4:fa:66:43:94:2a:6a:1b:24:5f:19:d0:ef
+# SHA1 Fingerprint: 53:a2:b0:4b:ca:6b:d6:45:e6:39:8a:8e:c4:0d:d2:bf:77:c3:a2:90
+# SHA256 Fingerprint: 4f:a3:12:6d:8d:3a:11:d1:c4:85:5a:4f:80:7c:ba:d6:cf:91:9d:3a:5a:88:b0:3b:ea:2c:63:72:d9:3c:40:c9
+-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUA
+MEYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYD
+VQQDExNHbG9iYWxTaWduIFJvb3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMy
+MDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt
+c2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB
+AQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08EsCVeJ
+OaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQG
+vGIFAha/r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud
+316HCkD7rRlr+/fKYIje2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo
+0q3v84RLHIf8E6M6cqJaESvWJ3En7YEtbWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSE
+y132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvjK8Cd+RTyG/FWaha/LIWF
+zXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD412lPFzYE
++cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCN
+I/onccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzs
+x2sZy/N78CsHpdlseVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqa
+ByFrgY/bxFn63iLABJzjqls2k+g9vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC
+4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
+HQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEMBQADggIBAHx4
+7PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg
+JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti
+2kM3S+LGteWygxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIk
+pnnpHs6i58FZFZ8d4kuaPp92CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRF
+FRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZmOUdkLG5NrmJ7v2B0GbhWrJKsFjLt
+rWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qqJZ4d16GLuc1CLgSk
+ZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwyeqiv5
+u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP
+4vkYxboznxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6
+N3ec592kD3ZDZopD8p/7DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3
+vouXsXgxT7PntgMTzlSdriVZzH81Xwj3QEUxeCp6
+-----END CERTIFICATE-----
+
+# Issuer: CN=GlobalSign Root E46 O=GlobalSign nv-sa
+# Subject: CN=GlobalSign Root E46 O=GlobalSign nv-sa
+# Label: "GlobalSign Root E46"
+# Serial: 1552617690338932563915843282459653771421763
+# MD5 Fingerprint: b5:b8:66:ed:de:08:83:e3:c9:e2:01:34:06:ac:51:6f
+# SHA1 Fingerprint: 39:b4:6c:d5:fe:80:06:eb:e2:2f:4a:bb:08:33:a0:af:db:b9:dd:84
+# SHA256 Fingerprint: cb:b9:c4:4d:84:b8:04:3e:10:50:ea:31:a6:9f:51:49:55:d7:bf:d2:e2:c6:b4:93:01:01:9a:d6:1d:9f:50:58
+-----BEGIN CERTIFICATE-----
+MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYx
+CzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQD
+ExNHbG9iYWxTaWduIFJvb3QgRTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAw
+MDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex
+HDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA
+IgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkBjtjq
+R+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGdd
+yXqBPCCjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
+DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ
+7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZkvLtoURMMA/cVi4RguYv/Uo7njLwcAjA8
++RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A=
+-----END CERTIFICATE-----
+
+# Issuer: CN=GLOBALTRUST 2020 O=e-commerce monitoring GmbH
+# Subject: CN=GLOBALTRUST 2020 O=e-commerce monitoring GmbH
+# Label: "GLOBALTRUST 2020"
+# Serial: 109160994242082918454945253
+# MD5 Fingerprint: 8a:c7:6f:cb:6d:e3:cc:a2:f1:7c:83:fa:0e:78:d7:e8
+# SHA1 Fingerprint: d0:67:c1:13:51:01:0c:aa:d0:c7:6a:65:37:31:16:26:4f:53:71:a2
+# SHA256 Fingerprint: 9a:29:6a:51:82:d1:d4:51:a2:e3:7f:43:9b:74:da:af:a2:67:52:33:29:f9:0f:9a:0d:20:07:c3:34:e2:3c:9a
+-----BEGIN CERTIFICATE-----
+MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkG
+A1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkw
+FwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYx
+MDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9u
+aXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMIICIjANBgkq
+hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWiD59b
+RatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9Z
+YybNpyrOVPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3
+QWPKzv9pj2gOlTblzLmMCcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPw
+yJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCmfecqQjuCgGOlYx8ZzHyyZqjC0203b+J+
+BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKAA1GqtH6qRNdDYfOiaxaJ
+SaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9ORJitHHmkH
+r96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj0
+4KlGDfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9Me
+dKZssCz3AwyIDMvUclOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIw
+q7ejMZdnrY8XD2zHc+0klGvIg5rQmjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2
+nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
+AQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1UdIwQYMBaAFNwu
+H9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA
+VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJC
+XtzoRlgHNQIw4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd
+6IwPS3BD0IL/qMy/pJTAvoe9iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf
++I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS8cE54+X1+NZK3TTN+2/BT+MAi1bi
+kvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2HcqtbepBEX4tdJP7
+wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxSvTOB
+TI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6C
+MUO+1918oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn
+4rnvyOL2NSl6dPrFf4IFYqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+I
+aFvowdlxfv1k7/9nR4hYJS8+hge9+6jlgqispdNpQ80xiEmEU5LAsTkbOYMBMMTy
+qfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg==
+-----END CERTIFICATE-----
+
+# Issuer: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz
+# Subject: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz
+# Label: "ANF Secure Server Root CA"
+# Serial: 996390341000653745
+# MD5 Fingerprint: 26:a6:44:5a:d9:af:4e:2f:b2:1d:b6:65:b0:4e:e8:96
+# SHA1 Fingerprint: 5b:6e:68:d0:cc:15:b6:a0:5f:1e:c1:5f:ae:02:fc:6b:2f:5d:6f:74
+# SHA256 Fingerprint: fb:8f:ec:75:91:69:b9:10:6b:1e:51:16:44:c6:18:c5:13:04:37:3f:6c:06:43:08:8d:8b:ef:fd:1b:99:75:99
+-----BEGIN CERTIFICATE-----
+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
+-----END CERTIFICATE-----
+
+# Issuer: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority
+# Subject: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority
+# Label: "Certum EC-384 CA"
+# Serial: 160250656287871593594747141429395092468
+# MD5 Fingerprint: b6:65:b3:96:60:97:12:a1:ec:4e:e1:3d:a3:c6:c9:f1
+# SHA1 Fingerprint: f3:3e:78:3c:ac:df:f4:a2:cc:ac:67:55:69:56:d7:e5:16:3c:e1:ed
+# SHA256 Fingerprint: 6b:32:80:85:62:53:18:aa:50:d1:73:c9:8d:8b:da:09:d5:7e:27:41:3d:11:4c:f7:87:a0:f5:d0:6c:03:0c:f6
+-----BEGIN CERTIFICATE-----
+MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQsw
+CQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScw
+JQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMT
+EENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2MDcyNDU0WhcNNDMwMzI2MDcyNDU0
+WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBT
+LkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAX
+BgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATE
+KI6rGFtqvm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7Tm
+Fy8as10CW4kjPMIRBSqniBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68Kj
+QjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI0GZnQkdjrzife81r1HfS+8
+EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjADVS2m5hjEfO/J
+UG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0QoSZ/6vn
+nvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority
+# Subject: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority
+# Label: "Certum Trusted Root CA"
+# Serial: 40870380103424195783807378461123655149
+# MD5 Fingerprint: 51:e1:c2:e7:fe:4c:84:af:59:0e:2f:f4:54:6f:ea:29
+# SHA1 Fingerprint: c8:83:44:c0:18:ae:9f:cc:f1:87:b7:8f:22:d1:c5:d7:45:84:ba:e5
+# SHA256 Fingerprint: fe:76:96:57:38:55:77:3e:37:a9:5e:7a:d4:d9:cc:96:c3:01:57:c1:5d:31:76:5b:a9:b1:57:04:e1:ae:78:fd
+-----BEGIN CERTIFICATE-----
+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
+-----END CERTIFICATE-----
+
+# Issuer: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique
+# Subject: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique
+# Label: "TunTrust Root CA"
+# Serial: 108534058042236574382096126452369648152337120275
+# MD5 Fingerprint: 85:13:b9:90:5b:36:5c:b6:5e:b8:5a:f8:e0:31:57:b4
+# SHA1 Fingerprint: cf:e9:70:84:0f:e0:73:0f:9d:f6:0c:7f:2c:4b:ee:20:46:34:9c:bb
+# SHA256 Fingerprint: 2e:44:10:2a:b5:8c:b8:54:19:45:1c:8e:19:d9:ac:f3:66:2c:af:bc:61:4b:6a:53:96:0a:30:f7:d0:e2:eb:41
+-----BEGIN CERTIFICATE-----
+MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQEL
+BQAwYTELMAkGA1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUg
+Q2VydGlmaWNhdGlvbiBFbGVjdHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJv
+b3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQwNDI2MDg1NzU2WjBhMQswCQYDVQQG
+EwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBDZXJ0aWZpY2F0aW9u
+IEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIwDQYJ
+KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZ
+n56eY+hz2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd
+2JQDoOw05TDENX37Jk0bbjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgF
+VwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZ
+GoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAdgjH8KcwAWJeRTIAAHDOF
+li/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViWVSHbhlnU
+r8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2
+eY8fTpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIb
+MlEsPvLfe/ZdeikZjuXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISg
+jwBUFfyRbVinljvrS5YnzWuioYasDXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB
+7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwSVXAkPcvCFDVDXSdOvsC9qnyW
+5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI04Y+oXNZtPdE
+ITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0
+90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+z
+xiD2BkewhpMl0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYu
+QEkHDVneixCwSQXi/5E/S7fdAo74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4
+FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRYYdZ2vyJ/0Adqp2RT8JeNnYA/u8EH
+22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJpadbGNjHh/PqAulxP
+xOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65xxBzn
+dFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5
+Xc0yGYuPjCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7b
+nV2UqL1g52KAdoGDDIzMMEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQ
+CvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9zZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZH
+u/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3rAZ3r2OvEhJn7wAzMMujj
+d9qDRIueVSjAi1jTkD5OGwDxFa2DK5o=
+-----END CERTIFICATE-----
+
+# Issuer: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA
+# Subject: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA
+# Label: "HARICA TLS RSA Root CA 2021"
+# Serial: 76817823531813593706434026085292783742
+# MD5 Fingerprint: 65:47:9b:58:86:dd:2c:f0:fc:a2:84:1f:1e:96:c4:91
+# SHA1 Fingerprint: 02:2d:05:82:fa:88:ce:14:0c:06:79:de:7f:14:10:e9:45:d7:a5:6d
+# SHA256 Fingerprint: d9:5d:0e:8e:da:79:52:5b:f9:be:b1:1b:14:d2:10:0d:32:94:98:5f:0c:62:d9:fa:bd:9c:d9:99:ec:cb:7b:1d
+-----BEGIN CERTIFICATE-----
+MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBs
+MQswCQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl
+c2VhcmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0Eg
+Um9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUzOFoXDTQ1MDIxMzEwNTUzN1owbDEL
+MAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl
+YXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNBIFJv
+b3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569l
+mwVnlskNJLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE
+4VGC/6zStGndLuwRo0Xua2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uv
+a9of08WRiFukiZLRgeaMOVig1mlDqa2YUlhu2wr7a89o+uOkXjpFc5gH6l8Cct4M
+pbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K5FrZx40d/JiZ+yykgmvw
+Kh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEvdmn8kN3b
+LW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcY
+AuUR0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqB
+AGMUuTNe3QvboEUHGjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYq
+E613TBoYm5EPWNgGVMWX+Ko/IIqmhaZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHr
+W2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQCPxrvrNQKlr9qEgYRtaQQJKQ
+CoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8GA1UdEwEB/wQF
+MAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE
+AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAU
+X15QvWiWkKQUEapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3
+f5Z2EMVGpdAgS1D0NTsY9FVqQRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxaja
+H6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxDQpSbIPDRzbLrLFPCU3hKTwSUQZqP
+JzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcRj88YxeMn/ibvBZ3P
+zzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5vZSt
+jBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0
+/L5H9MG0qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pT
+BGIBnfHAT+7hOtSLIBD6Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79
+aPib8qXPMThcFarmlwDB31qlpzmq6YR/PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YW
+xw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnnkf3/W9b3raYvAwtt41dU
+63ZTGI0RmLo=
+-----END CERTIFICATE-----
+
+# Issuer: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA
+# Subject: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA
+# Label: "HARICA TLS ECC Root CA 2021"
+# Serial: 137515985548005187474074462014555733966
+# MD5 Fingerprint: ae:f7:4c:e5:66:35:d1:b7:9b:8c:22:93:74:d3:4b:b0
+# SHA1 Fingerprint: bc:b0:c1:9d:e9:98:92:70:19:38:57:e9:8d:a7:b4:5d:6e:ee:01:48
+# SHA256 Fingerprint: 3f:99:cc:47:4a:cf:ce:4d:fe:d5:87:94:66:5e:47:8d:15:47:73:9f:2e:78:0f:1b:b4:ca:9b:13:30:97:d4:01
+-----BEGIN CERTIFICATE-----
+MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQsw
+CQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2Vh
+cmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9v
+dCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoXDTQ1MDIxMzExMDEwOVowbDELMAkG
+A1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj
+aCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJvb3Qg
+Q0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7
+KKrxcm1lAEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9Y
+STHMmE5gEYd103KUkE+bECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUw
+AwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQD
+AgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAircJRQO9gcS3ujwLEXQNw
+SaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/QwCZ61IygN
+nxS2PFOiTAZpffpskcYqSUXm7LcT4Tps
+-----END CERTIFICATE-----
index 5d26547..cedcffc 100644 (file)
@@ -28,7 +28,7 @@ import helloworld_pb2_grpc
 
 _DESCRIPTION = "A general purpose phony server."
 
-_LISTEN_HOST = "[::]"
+_LISTEN_HOST = "0.0.0.0"
 
 _THREAD_POOL_SIZE = 256
 
index a6fc52f..5869d24 100644 (file)
@@ -22,7 +22,7 @@
 Pod::Spec.new do |s|
   s.name     = 'gRPC-C++'
   # TODO (mxyan): use version that match gRPC version when pod is stabilized
-  version = '1.41.0'
+  version = '1.41.1'
   s.version  = version
   s.summary  = 'gRPC C++ library'
   s.homepage = 'https://grpc.io'
index 613bed8..efee0db 100644 (file)
@@ -21,7 +21,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'gRPC-Core'
-  version = '1.41.0'
+  version = '1.41.1'
   s.version  = version
   s.summary  = 'Core cross-platform gRPC library, written in C'
   s.homepage = 'https://grpc.io'
@@ -177,7 +177,7 @@ Pod::Spec.new do |s|
     ss.header_mappings_dir = '.'
     ss.libraries = 'z'
     ss.dependency "#{s.name}/Interface", version
-    ss.dependency 'BoringSSL-GRPC', '0.0.20'
+    ss.dependency 'BoringSSL-GRPC', '0.0.21'
     ss.dependency 'abseil/base/base', abseil_version
     ss.dependency 'abseil/base/core_headers', abseil_version
     ss.dependency 'abseil/container/flat_hash_map', abseil_version
index 4a17b7e..82511f5 100644 (file)
@@ -21,7 +21,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'gRPC-ProtoRPC'
-  version = '1.41.0'
+  version = '1.41.1'
   s.version  = version
   s.summary  = 'RPC library for Protocol Buffers, based on gRPC'
   s.homepage = 'https://grpc.io'
index 5e9115a..5f95124 100644 (file)
@@ -21,7 +21,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'gRPC-RxLibrary'
-  version = '1.41.0'
+  version = '1.41.1'
   s.version  = version
   s.summary  = 'Reactive Extensions library for iOS/OSX.'
   s.homepage = 'https://grpc.io'
index f262cce..9fd8f18 100644 (file)
@@ -20,7 +20,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'gRPC'
-  version = '1.41.0'
+  version = '1.41.1'
   s.version  = version
   s.summary  = 'gRPC client library for iOS/OSX'
   s.homepage = 'https://grpc.io'
index 87bce33..511fa50 100644 (file)
@@ -1557,6 +1557,7 @@ Gem::Specification.new do |s|
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c )
+  s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c )
@@ -1565,6 +1566,7 @@ Gem::Specification.new do |s|
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c )
+  s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c )
@@ -1815,15 +1817,14 @@ Gem::Specification.new do |s|
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c )
-  s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c )
   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/charmap.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 )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c )
   s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/t_req.c )
index d3272f8..ed67482 100644 (file)
--- a/grpc.gyp
+++ b/grpc.gyp
         'third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c',
         'third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c',
         'third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c',
+        'third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c',
         'third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c',
         'third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c',
         'third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c',
         'third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c',
         'third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c',
         'third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c',
-        'third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c',
         'third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c',
         'third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c',
         'third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c',
         'third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c',
         'third_party/boringssl-with-bazel/src/crypto/x509/by_file.c',
         'third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c',
+        'third_party/boringssl-with-bazel/src/crypto/x509/name_print.c',
         'third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c',
         'third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c',
         'third_party/boringssl-with-bazel/src/crypto/x509/t_req.c',
index 5938207..745c8d5 100644 (file)
@@ -13,8 +13,8 @@
  <date>2019-09-24</date>
  <time>16:06:07</time>
  <version>
-  <release>1.41.0</release>
-  <api>1.41.0</api>
+  <release>1.41.1</release>
+  <api>1.41.1</api>
  </version>
  <stability>
   <release>stable</release>
@@ -22,7 +22,7 @@
  </stability>
  <license>Apache 2.0</license>
  <notes>
-- gRPC Core 1.41.0 update
+- gRPC Core 1.41.1 update
  </notes>
  <contents>
   <dir baseinstalldir="/" name="/">
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c" role="src" />
+    <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c" role="src" />
+    <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c" role="src" />
-    <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/by_file.c" role="src" />
-    <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/charmap.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/internal.h" role="src" />
+    <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/name_print.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/t_req.c" role="src" />
index fb08550..296724a 100644 (file)
@@ -1,4 +1,4 @@
-// generated by generate_boringssl_prefix_header.sh on BoringSSL commit: fc44652a42b396e1645d5e72aba053349992136a
+// generated by generate_boringssl_prefix_header.sh on BoringSSL commit: 340faef0ad19283e985ce7fff0dec73ba4022c8d
 
 // Copyright (c) 2018, Google Inc.
 //
 #define SSL_set_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_verify)
 #define SSL_set_verify_algorithm_prefs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_verify_algorithm_prefs)
 #define SSL_set_verify_depth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_verify_depth)
-#define SSL_set_verify_result BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_verify_result)
 #define SSL_set_wfd BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_wfd)
 #define SSL_shutdown BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_shutdown)
 #define SSL_state BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_state)
 #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_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)
 #define CBB_did_write BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBB_did_write)
 #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_until_first BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_until_first)
 #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)
 #define CRYPTO_ctr128_encrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_ctr128_encrypt)
 #define CRYPTO_ctr128_encrypt_ctr32 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_ctr128_encrypt_ctr32)
 #define CRYPTO_fork_detect_ignore_madv_wipeonfork_for_testing BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_fork_detect_ignore_madv_wipeonfork_for_testing)
+#define CRYPTO_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_free)
 #define CRYPTO_free_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_free_ex_data)
 #define CRYPTO_gcm128_aad BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_gcm128_aad)
 #define CRYPTO_gcm128_decrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_gcm128_decrypt)
 #define CRYPTO_init_sysrand BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_init_sysrand)
 #define CRYPTO_is_confidential_build BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_is_confidential_build)
 #define CRYPTO_library_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_library_init)
+#define CRYPTO_malloc BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_malloc)
 #define CRYPTO_malloc_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_malloc_init)
 #define CRYPTO_memcmp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_memcmp)
 #define CRYPTO_new_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_new_ex_data)
 #define CRYPTO_pre_sandbox_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_pre_sandbox_init)
 #define CRYPTO_rdrand BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_rdrand)
 #define CRYPTO_rdrand_multiple8_buf BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_rdrand_multiple8_buf)
+#define CRYPTO_realloc BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_realloc)
 #define CRYPTO_refcount_dec_and_test_zero BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_refcount_dec_and_test_zero)
 #define CRYPTO_refcount_inc BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_refcount_inc)
 #define CRYPTO_set_add_lock_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_set_add_lock_callback)
 #define RSA_get0_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_key)
 #define RSA_get0_n BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_n)
 #define RSA_get0_p BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_p)
+#define RSA_get0_pss_params BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_pss_params)
 #define RSA_get0_q BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get0_q)
 #define RSA_get_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get_ex_data)
 #define RSA_get_ex_new_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, RSA_get_ex_new_index)
 #define 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_set0_additional_untrusted BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509_STORE_set0_additional_untrusted)
 #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 asn1_generalizedtime_to_tm BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_generalizedtime_to_tm)
 #define asn1_get_choice_selector BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_get_choice_selector)
 #define asn1_get_field_ptr BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_get_field_ptr)
+#define asn1_is_printable BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_is_printable)
 #define asn1_item_combine_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_item_combine_free)
 #define asn1_refcount_dec_and_test_zero BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_refcount_dec_and_test_zero)
 #define asn1_refcount_set_one BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, asn1_refcount_set_one)
 #define pkcs12_iterations_acceptable BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pkcs12_iterations_acceptable)
 #define pkcs12_key_gen BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pkcs12_key_gen)
 #define pkcs12_pbe_encrypt_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pkcs12_pbe_encrypt_init)
-#define pkcs7_bundle BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pkcs7_bundle)
+#define pkcs7_add_signed_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pkcs7_add_signed_data)
 #define pkcs7_parse_header BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pkcs7_parse_header)
 #define pkcs8_pbe_decrypt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pkcs8_pbe_decrypt)
 #define pmbtoken_exp1_blind BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, pmbtoken_exp1_blind)
 #define x25519_ge_tobytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_ge_tobytes)
 #define x25519_pkey_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_pkey_meth)
 #define x25519_sc_reduce BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x25519_sc_reduce)
+#define x509V3_add_value_asn1_string BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x509V3_add_value_asn1_string)
 #define x509_digest_sign_algorithm BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x509_digest_sign_algorithm)
 #define x509_digest_verify_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x509_digest_verify_init)
 #define x509_print_rsa_pss_params BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, x509_print_rsa_pss_params)
index 101d1c8..ea1ef0a 100644 (file)
@@ -22,5 +22,5 @@
 #include <grpcpp/grpcpp.h>
 
 namespace grpc {
-std::string Version() { return "1.41.0"; }
+std::string Version() { return "1.41.1"; }
 }  // namespace grpc
index 8997565..fc167ea 100644 (file)
@@ -33,11 +33,11 @@ namespace Grpc.Core
         /// <summary>
         /// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies
         /// </summary>
-        public const string CurrentAssemblyFileVersion = "2.41.0.0";
+        public const string CurrentAssemblyFileVersion = "2.41.1.0";
 
         /// <summary>
         /// Current version of gRPC C#
         /// </summary>
-        public const string CurrentVersion = "2.41.0";
+        public const string CurrentVersion = "2.41.1";
     }
 }
index 50c06d3..1fd51a5 100644 (file)
@@ -1,7 +1,7 @@
 <!-- This file is generated -->
 <Project>
   <PropertyGroup>
-    <GrpcCsharpVersion>2.41.0</GrpcCsharpVersion>
+    <GrpcCsharpVersion>2.41.1</GrpcCsharpVersion>
     <GoogleProtobufVersion>3.17.3</GoogleProtobufVersion>
   </PropertyGroup>
 </Project>
index 698a369..e2d0b86 100644 (file)
@@ -42,7 +42,7 @@ Pod::Spec.new do |s|
   # exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
   # before them.
   s.name     = '!ProtoCompiler-gRPCCppPlugin'
-  v = '1.41.0'
+  v = '1.41.1'
   s.version  = v
   s.summary  = 'The gRPC ProtoC plugin generates C++ files from .proto services.'
   s.description = <<-DESC
index 87ff17e..b64af71 100644 (file)
@@ -42,7 +42,7 @@ Pod::Spec.new do |s|
   # exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
   # before them.
   s.name     = '!ProtoCompiler-gRPCPlugin'
-  v = '1.41.0'
+  v = '1.41.1'
   s.version  = v
   s.summary  = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.'
   s.description = <<-DESC
index 3820725..6fb1a2e 100644 (file)
@@ -39,7 +39,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'BoringSSL-GRPC'
-  version = '0.0.20'
+  version = '0.0.21'
   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 => "fc44652a42b396e1645d5e72aba053349992136a",
+    :commit => "340faef0ad19283e985ce7fff0dec73ba4022c8d",
   }
 
   s.ios.deployment_target = '9.0'
@@ -218,499 +218,500 @@ Pod::Spec.new do |s|
            *) opts="--ignore-garbage" ;;
     esac
     base64 --decode $opts <<EOF | gunzip > src/include/openssl/boringssl_prefix_symbols.h
-      H4sICAAAAAAC/2JvcmluZ3NzbF9wcmVmaXhfc3ltYm9scy5oAKydXXPbuJZo3+dXuO683Kk6NRM77bT7
-      vim20tG0Y/tISk9nXliURNk8oUiFoOy4f/0FQErEx94g94arTs10LK21KQDEF0Hgv/7r7DErszptss3Z
-      6vX0j2RV1Xn5KESR7Otsm/9MnrJ0k9X/KZ7OqvLso/50sbg9W1e7Xd78v7Pt+pdfPlxepL9crN7/9iE7
-      //DL5eYy+/UiXaXvLt+//+W33367OH//If23f/uv/zq7rvavdf741Jz93/V/nF28O7/6x9nvVfVYZGez
-      cv2f8ivqWw9ZvcuFyGW8pjo7iOwfMtr+9R9nu2qTb+X/T8vNf1X12SYXTZ2vDk121jzl4kxU2+YlrbOz
-      rfwwLV+Va3+o95XIzl7yRv6AWv//6tCcbbPsTCJPWZ2pX1+npUyIf5zt6+o538gkaZ7SRv6f7CxdVc+Z
-      Mq1P115WTb7O1FW0cff99R4/2u+ztD7Ly7O0KBSZZ+L465afp2eL+0/L/5nMp2ezxdnD/P7P2c305uz/
-      TBby3//nbHJ3o780+br8fD8/u5ktrm8nsy+Ls8nt7Zmk5pO75Wy6UK7/mS0/n82nv0/mErmXlPT17rvr
-      2683s7vfNTj78nA7k1F6wdn9J+X4Mp1ff5Z/mXyc3c6W33T4T7Pl3XSx+E/pOLu7P5v+Ob1bni0+K49x
-      ZR+nZ7ezycfb6dkn+a/J3TelWzxMr2eT23/I655Pr5f/kIrjf8kvXd/fLab//Cp18jtnN5Mvk9/VhWj6
-      +E/9wz5Plot7GXcuf97i6+1S/YxP8/svZ7f3C3XlZ18XUxljspwoWqahvOTFPyQ3lRc4V9c9kf+7Xs7u
-      75RPAjL0cj5R13E3/f129vv07nqq2HsNLO/n8rtfFx3zj7PJfLZQQe+/LhV9r5y6CN/f3U31d9rUV+kh
-      r0VfxXQuE+LLRIs/2bnxn7r8f7yfS6e8fZLJzU3yMJ9+mv11tk9Fk4mz5qU6k0WvbPJtntVCFh5Z+Ksy
-      k5nQqCImC/VOqD8oUd6ou1WVuGp7tkvXdXWW/dynpS6E8n95I87S+vGwkz5xtsoknOlA8u79z3/79428
-      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
-      urNSX1bVkRV6sbo7F+m+ZcWlfe6qrr6gz1zLNYMFwkjBRjsKs5FHYTZrRmE286MwmxWjMJvZUZiNchRm
-      I47CaDM/OXbGjFcCm/l526jI/IxJxgpfizbCaNRGPRq1mRmN2mhHozbyaBSe+UkpakMyP+/7xwYs85NS
-      ku1Vp3vlfGjmZ0xy1uUhnVOGMaGZnxHIOYHMTwJxrs03XLX5xpvgfrWQ+Uk2gW2Wz/wkW7D2ymZ+kg3d
-      1qqEjmOMqi6jlCIab3vVa7n2h460MCmi5N9YiiiDMl78p4RNER02ACmiU4Y36dpMnCJKNmnaTJQiSrYo
-      2kyYIjrZAKWIhhxjBCdL4hTR4b9AiuiUYUya74Cvf0Xds/WuuU5F16jWqC98Acp7/Vmj9N5Q3qt0Br7a
-      TwzhnX6CTX1W/xSknXsKMtqYgg+rCQKmDPiZQis+U2jXPLdn55/b63TPGHbSM4Zn/fO757nnd8/Kuauz
-      OHd11s5dnaW5q/e/67as3tze7mbm9Ufbff+5+FrHsfPmb6ZaI3f4xP9vYyq/2WS2rl47v/c/WZctLkDg
-      pRL+yw6n5W8Bc+y8GakbHh/9B3M2h/49uaouFr8CR6nQ5v7U6AZs9B2LP9Ptoc7f08LVt3810SxOXuDY
-      qfnLbWtmjyo7z48l1NeFKtHfjQAbfc17bp+StOxMm3VlXdk0y3PTdBnw6uKcIyrJvxb3tvxUo1Rka7Ym
-      NVXefjRYjKOAU/9Luj1VBVYPdyY0NVlrTbo3GXA2xCS1/tUff2H640ekBJw4j9uufjdVai7NkzsPXctZ
-      bI1RyZsfSlN1/TeKx30sUEnlutPHn5/G764rbmqQS+nSff9Su3+P3V3StUUFGqm80tqTaT+lNlmVVG7r
-      zkddMZ6UrD4cQGf1pGQ9VSvO5RvMuxN9K0nSWe+ntZIEaSXJ6laSLGglyee0kmRpK0k+r5UkSCtJ1K0k
-      mWklibqVJDOtJFnTShKmldSup/GR5lm+N9c+WAH0jXlasrfG6MQOFJzWdCql42RjesyaBjnZBT4qoe8o
-      Kqph4HgjEMAZYJHPd8D71F/cOUV5r+KTDxxvPCLxehFInB/p5geyMsYEGT0+7M1f595dQ+tTiran3c74
-      O0bXffXd7MXN9rFpUqpmzaCWXzOoHdf9uSYPAr8vHEvN7s/Mhx+AfWEG5b3Ndeo+7Vz1WVd7R00JkYQv
-      qw9IarOfmiLurGT+ZXTWX4Ya4VQUAhHXr/Tpj+TP9C3r9qb90uczAVKG5uw+3UhnvpOctXLfYdKaQqkm
-      OOd32xK/k9JPcM5v86zr9JVOcNb/o9Wqb+RotUmpGiMOOcaoGSNm4Yl7nz2ph5hYmLh9DNIKO4cTv0+P
-      XuHn8Inf/duYBlrXY8oEpoNZvvLAADCOtOla2OMh6jo1iOTUEHoH9L9vu1Me6Ajddid8WVlgYZoBoA6b
-      2rrtDPJBBoaYgK7ide+QTqvT4YApeoR6luf/X/cmdFMj54PbO6TR7/SOsB53r6ZQOYraTsuXlbrtTnjg
-      3uq6d0j3dwO7U5VjmgGjvn25g47H708NNdRm/O6EP/v5E0DQ708MSCLwbfeR7/xX3N9jL1/dY8qMpvP9
-      RxGfyWRQ6tXMZIacbHzVKl9lJ9DYGHTifU4z33MuF19RR4JaDh1iOHSE3uZ1ZQG+358Ycndrixj6/amh
-      Pfi02gJYbIhSkQ24uo9EZGn7eVBQdIVCV4FZ6DfsOiWuv+X+DUgGhpjMpUvfT4DmChCH++2we2M78ICm
-      GPGVRQNo3N6UrnY1grvdA35fbn0mYvUBHcYEIz7fQE82e0PO5IEhpio7+uUQKtu1mV+yDRCGKPXatMy+
-      pIfSIteNCRXYcqBvOQDEUee28XPL7gxBvoMpFvuquh9bQn03jPiavAQ0bm9K34Z7Vd9kDHPu2wCyQnwn
-      idWCjcpGrcrCv2w2+mWrm3anmIwLOda4ahrukYctUTMBJ+Csf9VU2CMPWyIyCRZgrA+Z/gow1gdOfMXk
-      xNpkxqb5Nr8/VbJYGoKRs2ufk+FZlX50xYJyxhCWAo6fEyh0qWpA+PT+7u1WDNQuOJhz32tF5Z7Ao/ui
-      jCS/iInkty1vBonIJxDn8m23b7roohIzCq6c5ql58utONAlewMjOmp9XmJ9Z83O/yp+fflVU+JTm7Ne1
-      OHxmN+4e2XkztISbKHhQhj1mB3jJ+8cmttTl6+oQiHN1NfTTF4GRE54Uu4grBdy22Bxc7SjkJkb/BkJR
-      vvkbq36WMDu81W3Z7Rff/8oGvpSzacvdB/RUpoAH/qb1i2P0M4rWplhWmigIyuinnLtLf22wmJ2ijNcX
-      6q8M3QX2jij1+vGapEzLBvlpCLjIeL2mu+L25gJKp2jkvT7PYi6dqWwJDCoJeOR3ZcKLZjFo5D3U9bt1
-      N7bvJi3cXa6/dwb1jCEq5XpLDlxIKfb7b/8D3Dbq90mgBAA=
+      H4sICAAAAAAC/2JvcmluZ3NzbF9wcmVmaXhfc3ltYm9scy5oAKydXXPbuJZo3+dXuO683Kk6NRM7nW73
+      fVNsJdG0Y/tIck9nXliURNk8oUiFoOy4f/0FQErEx94g94arTs10LK21KQDEF0Hgv/7r7DErszptss3Z
+      6vX0j2RV1Xn5KESR7Otsm/9MnrJ0k9X/KZ7OqvLso/50sbg5W1e7Xd78v7P3v7zbptn2Xbo5//3i8n32
+      ++WHdfbbdrt9t8nWv71fpb+8u7hYX27+7d/+67/Orqr9a50/PjVn/3f9H2cX784v/3H2uaoei+xsVq7/
+      U35Ffes+q3e5ELmM11RnB5H9Q0bbv/7jbFdt8q38/2m5+a+qPtvkoqnz1aHJzpqnXJyJatu8pHV2tpUf
+      puWrcu0P9b4S2dlL3sgfUOv/Xx2as22WnUnkKasz9evrtJQJ8Y+zfV095xuZJM1T2sj/k52lq+o5U6b1
+      6drLqsnXmbqKNu6+v97jR/t9ltZneXmWFoUi80wcf93yy/Rscfdp+T+T+fRstji7n9/9ObueXp/9n8lC
+      /vv/nE1ur/WXJg/LL3fzs+vZ4upmMvu6OJvc3JxJaj65Xc6mC+X6n9nyy9l8+nkyl8idpKSvd99e3Txc
+      z24/a3D29f5mJqP0grO7T8rxdTq/+iL/Mvk4u5ktv+nwn2bL2+li8Z/ScXZ7dzb9c3q7PFt8UR7jyj5O
+      z25mk48307NP8l+T229Kt7ifXs0mN/+Q1z2fXi3/IRXH/5Jfurq7XUz/+SB18jtn15Ovk8/qQjR9/Kf+
+      YV8my8WdjDuXP2/xcLNUP+PT/O7r2c3dQl352cNiKmNMlhNFyzSUl7z4h+Sm8gLn6ron8n9Xy9ndrfJJ
+      QIZezifqOm6nn29mn6e3V1PF3mlgeTeX331YdMw/zibz2UIFvXtYKvpOOXURvru9nervtKmv0kNei76K
+      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
     EOF
 
     # We are renaming openssl to openssl_grpc so that there is no conflict with openssl if it exists
index 7ad58e1..adbfba8 100644 (file)
@@ -22,4 +22,4 @@
 // instead. This file can be regenerated from the template by running
 // `tools/buildgen/generate_projects.sh`.
 
-#define GRPC_OBJC_VERSION_STRING @"1.41.0"
+#define GRPC_OBJC_VERSION_STRING @"1.41.1"
index 33b7a4c..88be342 100644 (file)
@@ -22,5 +22,5 @@
 // instead. This file can be regenerated from the template by running
 // `tools/buildgen/generate_projects.sh`.
 
-#define GRPC_OBJC_VERSION_STRING @"1.41.0"
+#define GRPC_OBJC_VERSION_STRING @"1.41.1"
 #define GRPC_C_VERSION_STRING @"19.0.0"
index 07437e2..f5be96a 100644 (file)
@@ -2,7 +2,7 @@
   "name": "grpc/grpc-dev",
   "description": "gRPC library for PHP - for Development use only",
   "license": "Apache-2.0",
-  "version": "1.41.0",
+  "version": "1.41.1",
   "require": {
     "php": ">=7.0.0",
     "google/protobuf": "^v3.3.0"
index d8079ba..e29c921 100644 (file)
@@ -20,6 +20,6 @@
 #ifndef VERSION_H
 #define VERSION_H
 
-#define PHP_GRPC_VERSION "1.41.0"
+#define PHP_GRPC_VERSION "1.41.1"
 
 #endif /* VERSION_H */
index 3b14823..84c8ded 100644 (file)
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc/_grpcio_metadata.py.template`!!!
 
-__version__ = """1.41.0"""
+__version__ = """1.41.1"""
index 5c6dcc1..774175d 100644 (file)
@@ -730,6 +730,7 @@ CORE_SOURCE_FILES = [
     'third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c',
     'third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c',
     'third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c',
+    'third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c',
     'third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c',
     'third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c',
     'third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c',
@@ -870,13 +871,13 @@ CORE_SOURCE_FILES = [
     'third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c',
     'third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c',
     'third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c',
-    'third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c',
     'third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c',
     'third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c',
     'third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c',
     'third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c',
     'third_party/boringssl-with-bazel/src/crypto/x509/by_file.c',
     'third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c',
+    'third_party/boringssl-with-bazel/src/crypto/x509/name_print.c',
     'third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c',
     'third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c',
     'third_party/boringssl-with-bazel/src/crypto/x509/t_req.c',
index a92a024..f07a197 100644 (file)
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
 
-VERSION = '1.41.0'
+VERSION = '1.41.1'
index 6402297..5415450 100644 (file)
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_admin/grpc_version.py.template`!!!
 
-VERSION = '1.41.0'
+VERSION = '1.41.1'
index 58a79c6..d58bf33 100644 (file)
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_channelz/grpc_version.py.template`!!!
 
-VERSION = '1.41.0'
+VERSION = '1.41.1'
index 215ecd5..5f0b308 100644 (file)
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_csds/grpc_version.py.template`!!!
 
-VERSION = '1.41.0'
+VERSION = '1.41.1'
index 66e1c8b..1e0e66f 100644 (file)
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_health_checking/grpc_version.py.template`!!!
 
-VERSION = '1.41.0'
+VERSION = '1.41.1'
index 291091d..6446b06 100644 (file)
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_reflection/grpc_version.py.template`!!!
 
-VERSION = '1.41.0'
+VERSION = '1.41.1'
index cd0ed6c..4781e13 100644 (file)
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_status/grpc_version.py.template`!!!
 
-VERSION = '1.41.0'
+VERSION = '1.41.1'
index 8326065..a7884eb 100644 (file)
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_testing/grpc_version.py.template`!!!
 
-VERSION = '1.41.0'
+VERSION = '1.41.1'
index 368b084..1603c8b 100644 (file)
@@ -14,4 +14,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_tests/grpc_version.py.template`!!!
 
-VERSION = '1.41.0'
+VERSION = '1.41.1'
index db8dc45..68ff95d 100644 (file)
@@ -57,7 +57,7 @@ end
 
 ENV['CPPFLAGS'] = '-DGPR_BACKWARDS_COMPATIBILITY_MODE'
 ENV['CPPFLAGS'] += ' -DGRPC_XDS_USER_AGENT_NAME_SUFFIX="\"RUBY\"" '
-ENV['CPPFLAGS'] += ' -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX="\"1.41.0\"" '
+ENV['CPPFLAGS'] += ' -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX="\"1.41.1\"" '
 
 output_dir = File.expand_path(RbConfig::CONFIG['topdir'])
 grpc_lib_dir = File.join(output_dir, 'libs', grpc_config)
index b0b6299..6ec5d1b 100644 (file)
@@ -14,5 +14,5 @@
 
 # GRPC contains the General RPC module.
 module GRPC
-  VERSION = '1.41.0'
+  VERSION = '1.41.1'
 end
index 11dbe76..406b1fd 100644 (file)
@@ -14,6 +14,6 @@
 
 module GRPC
   module Tools
-    VERSION = '1.41.0'
+    VERSION = '1.41.1'
   end
 end
index b2b6279..4fc18b8 100644 (file)
       ss.header_mappings_dir = '.'
       ss.libraries = 'z'
       ss.dependency "#{s.name}/Interface", version
-      ss.dependency 'BoringSSL-GRPC', '0.0.20'
+      ss.dependency 'BoringSSL-GRPC', '0.0.21'
       % for abseil_spec in grpc_abseil_specs:
       ss.dependency '${abseil_spec}', abseil_version
       % endfor
index d5534ce..1bb4c5f 100644 (file)
@@ -69,7 +69,7 @@
 
   Pod::Spec.new do |s|
     s.name     = 'BoringSSL-GRPC'
-    version = '0.0.20'
+    version = '0.0.21'
     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/templates/tools/dockerfile/apt_get_basic_bullseye.include b/templates/tools/dockerfile/apt_get_basic_bullseye.include
new file mode 100644 (file)
index 0000000..8e2a550
--- /dev/null
@@ -0,0 +1,35 @@
+# Install Git and basic packages.
+RUN apt-get update && apt-get install -y ${'\\'}
+  autoconf ${'\\'}
+  autotools-dev ${'\\'}
+  build-essential ${'\\'}
+  bzip2 ${'\\'}
+  ccache ${'\\'}
+  curl ${'\\'}
+  dnsutils ${'\\'}
+  gcc ${'\\'}
+  gcc-multilib ${'\\'}
+  git ${'\\'}
+  golang ${'\\'}
+  gyp ${'\\'}
+  lcov ${'\\'}
+  libc6 ${'\\'}
+  libc6-dbg ${'\\'}
+  libc6-dev ${'\\'}
+  libgtest-dev ${'\\'}
+  libtool ${'\\'}
+  make ${'\\'}
+  perl ${'\\'}
+  strace ${'\\'}
+  python3-dev ${'\\'}
+  python3-setuptools ${'\\'}
+  python3-yaml ${'\\'}
+  telnet ${'\\'}
+  unzip ${'\\'}
+  wget ${'\\'}
+  zip && ${'\\'}
+  apt-get clean
+
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
index ac93962..25c5c52 100644 (file)
@@ -14,7 +14,7 @@
   # See the License for the specific language governing permissions and
   # limitations under the License.
   
-  <%include file="../../python_stretch.include"/>
+  <%include file="../../python_bullseye.include"/>
 
-  RUN apt-get update && apt-get -t stable install -y python3.7 python3-all-dev
-  RUN curl https://bootstrap.pypa.io/get-pip.py | python3.7
+  RUN apt-get update && apt-get install -y python3 python3-all-dev python3-pip
+  RUN ln -s $(which python2) /usr/bin/python
index ac93962..c7c2bcb 100644 (file)
@@ -14,7 +14,7 @@
   # See the License for the specific language governing permissions and
   # limitations under the License.
   
-  <%include file="../../python_stretch.include"/>
+  <%include file="../../python_bullseye.include"/>
 
-  RUN apt-get update && apt-get -t stable install -y python3.7 python3-all-dev
-  RUN curl https://bootstrap.pypa.io/get-pip.py | python3.7
+  RUN apt-get update && apt-get install -y python3 python3-pip python3-all-dev
+  RUN ln -s $(which python2) /usr/bin/python
index 85de104..4b3503a 100644 (file)
@@ -28,5 +28,5 @@ cp -r /var/local/jenkins/service_account $HOME || true
 
 cd /var/local/git/grpc
 
-# interop tests only run using python3.7 currently (and python build is slow)
-tools/run_tests/run_tests.py -l python --compiler python3.7 -c opt --build_only
+# interop tests only run using python3.9 currently (and python build is slow)
+tools/run_tests/run_tests.py -l python --compiler python3.9 -c opt --build_only
diff --git a/templates/tools/dockerfile/python_bullseye.include b/templates/tools/dockerfile/python_bullseye.include
new file mode 100644 (file)
index 0000000..88455a0
--- /dev/null
@@ -0,0 +1,6 @@
+FROM debian:bullseye
+  
+<%include file="./apt_get_basic_bullseye.include"/>
+<%include file="./apt_get_python_27.include"/>
+<%include file="./gcp_api_libraries.include"/>
+<%include file="./run_tests_addons.include"/>
index edd3dc1..19ab6d4 100644 (file)
@@ -58,26 +58,26 @@ Updating some dependencies requires extra care.
 
 ### Updating third_party/boringssl-with-bazel
 
-- Update the `third_party/boringssl-with-bazel` submodule to the latest [`master-with-bazel`](https://github.com/google/boringssl/tree/master-with-bazel) branch
+- Update the `third_party/boringssl-with-bazel` submodule to the latest [`main-with-bazel`](https://github.com/google/boringssl/tree/main-with-bazel) branch
 ```
 git submodule update --init      # just to start in a clean state
 cd third_party/boringssl-with-bazel
 git fetch origin   # fetch what's new in the boringssl repository
-git checkout origin/master-with-bazel  # checkout the current state of master-with-bazel branch in the boringssl repo
-# Note the latest commit SHA on master-with-bazel-branch 
+git checkout origin/main-with-bazel  # checkout the current state of main-with-bazel branch in the boringssl repo
+# Note the latest commit SHA on main-with-bazel branch
 cd ../..   # go back to grpc repo root
 git status   #  will show that there are new commits in third_party/boringssl-with-bazel
 git add  third_party/boringssl-with-bazel     # we actually want to update the changes to the submodule
-git commit -m "update submodule boringssl-with-bazel with origin/master-with-bazel"   # commit
+git commit -m "update submodule boringssl-with-bazel with origin/main-with-bazel"   # commit
 ```
 
-- Update boringssl dependency in `bazel/grpc_deps.bzl` to the same commit SHA as master-with-bazel branch
+- Update boringssl dependency in `bazel/grpc_deps.bzl` to the same commit SHA as main-with-bazel branch
     - Update `http_archive(name = "boringssl",` section by updating the sha in `strip_prefix` and `urls` fields.
     - Also, set `sha256` field to "" as the existing value is not valid. This will be added later once we know what that value is.
 
 - Update `tools/run_tests/sanity/check_submodules.sh` with the same commit
 
-- Commit these changes `git commit -m "update boringssl dependency to master-with-bazel commit SHA"`
+- Commit these changes `git commit -m "update boringssl dependency to main-with-bazel commit SHA"`
 
 - Run `tools/buildgen/generate_projects.sh` to regenerate the generated files
     - Because `sha256` in `bazel/grpc_deps.bzl` was left empty, you will get a DEBUG msg like this one:
index 16cfc70..3ed40d8 100644 (file)
@@ -14,5 +14,5 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
 
-VERSION = '1.41.0'
+VERSION = '1.41.1'
 PROTOBUF_VERSION = '3.17.3'
index b916007..275dc14 100644 (file)
@@ -14,5 +14,5 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
 
-VERSION = '1.41.0'
+VERSION = '1.41.1'
 PROTOBUF_VERSION = '3.17.3'
index 90ba56c..086e641 100644 (file)
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-FROM debian:stretch
+FROM debian:bullseye
   
 # Install Git and basic packages.
 RUN apt-get update && apt-get install -y \
@@ -37,13 +37,14 @@ RUN apt-get update && apt-get install -y \
   make \
   perl \
   strace \
-  python-dev \
-  python-setuptools \
-  python-yaml \
+  python3-dev \
+  python3-setuptools \
+  python3-yaml \
   telnet \
   unzip \
   wget \
-  zip && apt-get clean
+  zip && \
+  apt-get clean
 
 #================
 # Build profiling
@@ -56,13 +57,10 @@ RUN curl https://bootstrap.pypa.io/pip/2.7/get-pip.py | python2.7
 # Google Cloud platform API libraries
 RUN pip install --upgrade google-auth==1.24.0 google-api-python-client==1.12.8 oauth2client==4.1.0
 
-# Add Debian 'buster' repository, we will need it for installing newer versions of python
-RUN echo 'deb http://ftp.de.debian.org/debian buster main' >> /etc/apt/sources.list
-RUN echo 'APT::Default-Release "stretch";' | tee -a /etc/apt/apt.conf.d/00local
 
 RUN mkdir /var/local/jenkins
 
 
 
-RUN apt-get update && apt-get -t stable install -y python3.7 python3-all-dev
-RUN curl https://bootstrap.pypa.io/get-pip.py | python3.7
+RUN apt-get update && apt-get install -y python3 python3-all-dev python3-pip
+RUN ln -s $(which python2) /usr/bin/python
index 468aa20..c681828 100755 (executable)
@@ -28,5 +28,5 @@ cp -r /var/local/jenkins/service_account $HOME || true
 
 cd /var/local/git/grpc
 
-# interop tests only run using python3.7 currently (and python build is slow)
-tools/run_tests/run_tests.py -l python --compiler python3.7 -c opt --build_only
+# interop tests only run using python3.9 currently (and python build is slow)
+tools/run_tests/run_tests.py -l python --compiler python3.9 -c opt --build_only
index 90ba56c..40140ef 100644 (file)
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-FROM debian:stretch
+FROM debian:bullseye
   
 # Install Git and basic packages.
 RUN apt-get update && apt-get install -y \
@@ -37,13 +37,14 @@ RUN apt-get update && apt-get install -y \
   make \
   perl \
   strace \
-  python-dev \
-  python-setuptools \
-  python-yaml \
+  python3-dev \
+  python3-setuptools \
+  python3-yaml \
   telnet \
   unzip \
   wget \
-  zip && apt-get clean
+  zip && \
+  apt-get clean
 
 #================
 # Build profiling
@@ -56,13 +57,10 @@ RUN curl https://bootstrap.pypa.io/pip/2.7/get-pip.py | python2.7
 # Google Cloud platform API libraries
 RUN pip install --upgrade google-auth==1.24.0 google-api-python-client==1.12.8 oauth2client==4.1.0
 
-# Add Debian 'buster' repository, we will need it for installing newer versions of python
-RUN echo 'deb http://ftp.de.debian.org/debian buster main' >> /etc/apt/sources.list
-RUN echo 'APT::Default-Release "stretch";' | tee -a /etc/apt/apt.conf.d/00local
 
 RUN mkdir /var/local/jenkins
 
 
 
-RUN apt-get update && apt-get -t stable install -y python3.7 python3-all-dev
-RUN curl https://bootstrap.pypa.io/get-pip.py | python3.7
+RUN apt-get update && apt-get install -y python3 python3-pip python3-all-dev
+RUN ln -s $(which python2) /usr/bin/python
index 468aa20..c681828 100755 (executable)
@@ -28,5 +28,5 @@ cp -r /var/local/jenkins/service_account $HOME || true
 
 cd /var/local/git/grpc
 
-# interop tests only run using python3.7 currently (and python build is slow)
-tools/run_tests/run_tests.py -l python --compiler python3.7 -c opt --build_only
+# interop tests only run using python3.9 currently (and python build is slow)
+tools/run_tests/run_tests.py -l python --compiler python3.9 -c opt --build_only
index a731387..d33914f 100644 (file)
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC C++"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 1.41.0
+PROJECT_NUMBER         = 1.41.1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
index d02d4bf..90657ac 100644 (file)
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC C++"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 1.41.0
+PROJECT_NUMBER         = 1.41.1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
index c9242d5..dc7f267 100644 (file)
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC Objective-C"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 1.41.0
+PROJECT_NUMBER         = 1.41.1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
index 5901fa8..ca68d7c 100644 (file)
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC Objective-C"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 1.41.0
+PROJECT_NUMBER         = 1.41.1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
index a1ebe5c..4035c5e 100644 (file)
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC PHP"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 1.41.0
+PROJECT_NUMBER         = 1.41.1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
index 0f33fd5..cce6400 100644 (file)
@@ -46,6 +46,9 @@ fi
 
 if [ "${PREPARE_BUILD_INSTALL_DEPS_RUBY}" == "true" ]
 then
+  # Workaround for https://github.com/rvm/rvm/issues/5133
+  export CURL_CA_BUNDLE=$(pwd)/etc/roots.pem
+
   # Fetch keys per https://rvm.io/rvm/install
   gpg_recv_keys_success=0
   for ((i=0;i<5;i++)); do
index ba9e2cd..71bcdb7 100755 (executable)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-set -ex -o igncr || set -ex
+set -eo pipefail
 
 # Constants
 readonly GITHUB_REPOSITORY_NAME="grpc"
-# GKE Cluster
-readonly GKE_CLUSTER_NAME="interop-test-psm-sec-v2-us-central1-a"
-readonly GKE_CLUSTER_ZONE="us-central1-a"
+readonly TEST_DRIVER_INSTALL_SCRIPT_URL="https://raw.githubusercontent.com/${TEST_DRIVER_REPO_OWNER:-grpc}/grpc/${TEST_DRIVER_BRANCH:-master}/tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh"
 ## xDS test server/client Docker images
 readonly SERVER_IMAGE_NAME="gcr.io/grpc-testing/xds-interop/cpp-server"
 readonly CLIENT_IMAGE_NAME="gcr.io/grpc-testing/xds-interop/cpp-client"
@@ -136,8 +134,13 @@ run_test() {
 main() {
   local script_dir
   script_dir="$(dirname "$0")"
-  # shellcheck source=tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh
-  source "${script_dir}/grpc_xds_k8s_install_test_driver.sh"
+
+  # Source the test driver from the master branch.
+  echo "Sourcing test driver install script from: ${TEST_DRIVER_INSTALL_SCRIPT_URL}"
+  source /dev/stdin <<< "$(curl -s "${TEST_DRIVER_INSTALL_SCRIPT_URL}")"
+
+  activate_gke_cluster GKE_CLUSTER_PSM_SECURITY
+
   set -x
   if [[ -n "${KOKORO_ARTIFACTS_DIR}" ]]; then
     kokoro_setup_test_driver "${GITHUB_REPOSITORY_NAME}"
index eea2066..bb333c3 100644 (file)
@@ -24,6 +24,72 @@ readonly TEST_DRIVER_BRANCH="${TEST_DRIVER_BRANCH:-master}"
 readonly TEST_DRIVER_PATH="tools/run_tests/xds_k8s_test_driver"
 readonly TEST_DRIVER_PROTOS_PATH="src/proto/grpc/testing"
 
+# GKE cluster identifiers.
+readonly GKE_CLUSTER_PSM_LB="psm-lb"
+readonly GKE_CLUSTER_PSM_SECURITY="psm-security"
+readonly GKE_CLUSTER_PSM_BASIC="psm-basic"
+
+#######################################
+# Determines the cluster name and zone based on the given cluster identifier.
+# Globals:
+#   GKE_CLUSTER_NAME: Set to reflect the cluster name to use
+#   GKE_CLUSTER_ZONE: Set to reflect the cluster zone to use.
+# Arguments:
+#   The cluster identifier
+# Outputs:
+#   Writes the output to stdout, stderr
+#######################################
+activate_gke_cluster() {
+  case $1 in
+    GKE_CLUSTER_PSM_LB)
+      GKE_CLUSTER_NAME="interop-test-psm-lb-v1-us-central1-a"
+      GKE_CLUSTER_ZONE="us-central1-a"
+      ;;
+    GKE_CLUSTER_PSM_SECURITY)
+      GKE_CLUSTER_NAME="interop-test-psm-sec-v2-us-central1-a"
+      GKE_CLUSTER_ZONE="us-central1-a"
+      ;;
+    GKE_CLUSTER_PSM_BASIC)
+      GKE_CLUSTER_NAME="interop-test-psm-basic"
+      GKE_CLUSTER_ZONE="us-central1-c"
+      ;;      
+    *)
+      echo "Unknown GKE cluster: ${1}"
+      exit 1
+      ;;
+  esac
+  echo "Activated GKE cluster: GKE_CLUSTER_NAME=${GKE_CLUSTER_NAME} GKE_CLUSTER_ZONE=${GKE_CLUSTER_ZONE}"
+}
+
+#######################################
+# Determines the secondary cluster name and zone based on the given cluster
+# identifier.
+# Globals:
+#   GKE_CLUSTER_NAME: Set to reflect the cluster name to use
+#   GKE_CLUSTER_ZONE: Set to reflect the cluster zone to use.
+# Arguments:
+#   The cluster identifier
+# Outputs:
+#   Writes the output to stdout, stderr
+#######################################
+activate_secondary_gke_cluster() {
+  case $1 in
+    GKE_CLUSTER_PSM_LB)
+      SECONDARY_GKE_CLUSTER_NAME="interop-test-psm-lb-v1-us-west1-b"
+      SECONDARY_GKE_CLUSTER_ZONE="us-west1-b"
+      ;;
+    GKE_CLUSTER_PSM_SECURITY)
+      SECONDARY_GKE_CLUSTER_NAME="interop-test-psm-sec-v2-us-west1-b"
+      SECONDARY_GKE_CLUSTER_ZONE="us-west1-b"
+      ;;
+    *)
+      echo "Unknown secondary GKE cluster: ${1}"
+      exit 1
+      ;;
+  esac
+  echo "Activated secondary GKE cluster: GKE_CLUSTER_NAME=${GKE_CLUSTER_NAME} GKE_CLUSTER_ZONE=${GKE_CLUSTER_ZONE}"
+}
+
 #######################################
 # Run command end report its exit code. Doesn't exit on non-zero exit code.
 # Globals:
@@ -153,7 +219,7 @@ test_driver_pip_install() {
       echo "Found python virtual environment directory: ${venv_dir}"
     else
       echo "Creating python virtual environment: ${venv_dir}"
-      "python${PYTHON_VERSION} -m venv ${venv_dir}"
+      "python${PYTHON_VERSION}" -m venv "${venv_dir}"
     fi
     # Intentional: No need to check python venv activate script.
     # shellcheck source=/dev/null
@@ -342,13 +408,12 @@ kokoro_setup_test_driver() {
 #   TEST_DRIVER_REPO_DIR: Unless provided, populated with a temporary dir with
 #                         the path to the test driver repo
 #   SRC_DIR: Populated with absolute path to the source repo
-#   TEST_DRIVER_FULL_DIR: Populated with the path to the test driver source code
+#   KUBE_CONTEXT: Populated with name of kubectl context with GKE cluster access
 #   TEST_DRIVER_FLAGFILE: Populated with relative path to test driver flagfile
 #   TEST_XML_OUTPUT_DIR: Populated with the path to test xUnit XML report
 #   GIT_ORIGIN_URL: Populated with the origin URL of git repo used for the build
 #   GIT_COMMIT: Populated with the SHA-1 of git commit being built
-#   GIT_COMMIT_SHORT: Populated with the short SHA-1 of git commit being built
-#   KUBE_CONTEXT: Populated with name of kubectl context with GKE cluster access
+#   GIT_COMMIT_SHORT: Populated with the short SHA-1 of git commit being built  
 #   SECONDARY_KUBE_CONTEXT: Populated with name of kubectl context with secondary GKE cluster access, if any
 # Arguments:
 #   The path to the folder containing the build script
@@ -358,12 +423,14 @@ kokoro_setup_test_driver() {
 local_setup_test_driver() {
   local script_dir="${1:?Usage: local_setup_test_driver SCRIPT_DIR}"
   readonly SRC_DIR="$(git -C "${script_dir}" rev-parse --show-toplevel)"
-  parse_src_repo_git_info SRC_DIR
+  parse_src_repo_git_info "${SRC_DIR}"
   readonly KUBE_CONTEXT="${KUBE_CONTEXT:-$(kubectl config current-context)}"
   readonly SECONDARY_KUBE_CONTEXT="${SECONDARY_KUBE_CONTEXT}"
+
   local test_driver_repo_dir
   test_driver_repo_dir="${TEST_DRIVER_REPO_DIR:-$(mktemp -d)/${TEST_DRIVER_REPO_NAME}}"
   test_driver_install "${test_driver_repo_dir}"
+
   # shellcheck disable=SC2034  # Used in the main script
   readonly TEST_DRIVER_FLAGFILE="config/local-dev.cfg"
   # Test out
index 2fc89d4..fd8a984 100755 (executable)
@@ -17,11 +17,7 @@ set -eo pipefail
 
 # Constants
 readonly GITHUB_REPOSITORY_NAME="grpc"
-# GKE Cluster
-readonly GKE_CLUSTER_NAME="interop-test-psm-lb-v1-us-central1-a"
-readonly GKE_CLUSTER_ZONE="us-central1-a"
-readonly SECONDARY_GKE_CLUSTER_NAME="interop-test-psm-lb-v1-us-west1-b"
-readonly SECONDARY_GKE_CLUSTER_ZONE="us-west1-b"
+readonly TEST_DRIVER_INSTALL_SCRIPT_URL="https://raw.githubusercontent.com/${TEST_DRIVER_REPO_OWNER:-grpc}/grpc/${TEST_DRIVER_BRANCH:-master}/tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh"
 ## xDS test client Docker images
 readonly SERVER_IMAGE_NAME="gcr.io/grpc-testing/xds-interop/cpp-server"
 readonly CLIENT_IMAGE_NAME="gcr.io/grpc-testing/xds-interop/cpp-client"
@@ -132,8 +128,14 @@ run_test() {
 main() {
   local script_dir
   script_dir="$(dirname "$0")"
-  # shellcheck source=tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh
-  source "${script_dir}/grpc_xds_k8s_install_test_driver.sh"
+
+  # Source the test driver from the master branch.
+  echo "Sourcing test driver install script from: ${TEST_DRIVER_INSTALL_SCRIPT_URL}"
+  source /dev/stdin <<< "$(curl -s "${TEST_DRIVER_INSTALL_SCRIPT_URL}")"
+
+  activate_gke_cluster GKE_CLUSTER_PSM_LB
+  activate_secondary_gke_cluster GKE_CLUSTER_PSM_LB
+
   set -x
   if [[ -n "${KOKORO_ARTIFACTS_DIR}" ]]; then
     kokoro_setup_test_driver "${GITHUB_REPOSITORY_NAME}"
@@ -141,6 +143,7 @@ main() {
     local_setup_test_driver "${script_dir}"
   fi
   build_docker_images_if_needed
+
   # Run tests
   cd "${TEST_DRIVER_FULL_DIR}"
   local failed_tests=0
index 72766b1..7cf7318 100755 (executable)
@@ -17,11 +17,7 @@ set -eo pipefail
 
 # Constants
 readonly GITHUB_REPOSITORY_NAME="grpc"
-# GKE Cluster
-readonly GKE_CLUSTER_NAME="interop-test-psm-sec-v2-us-central1-a"
-readonly GKE_CLUSTER_ZONE="us-central1-a"
-readonly SECONDARY_GKE_CLUSTER_NAME="interop-test-psm-sec-v2-us-west1-b"
-readonly SECONDARY_GKE_CLUSTER_ZONE="us-west1-b"
+readonly TEST_DRIVER_INSTALL_SCRIPT_URL="https://raw.githubusercontent.com/${TEST_DRIVER_REPO_OWNER:-grpc}/grpc/${TEST_DRIVER_BRANCH:-master}/tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh"
 ## xDS test client Docker images
 readonly SERVER_IMAGE_NAME="gcr.io/grpc-testing/xds-interop/cpp-server:13171a8b293837517c0446ec0e149e9d10ea3d10"
 readonly CLIENT_IMAGE_NAME="gcr.io/grpc-testing/xds-interop/python-client"
@@ -133,8 +129,14 @@ run_test() {
 main() {
   local script_dir
   script_dir="$(dirname "$0")"
-  # shellcheck source=tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh
-  source "${script_dir}/grpc_xds_k8s_install_test_driver.sh"
+  
+  # Source the test driver from the master branch.
+  echo "Sourcing test driver install script from: ${TEST_DRIVER_INSTALL_SCRIPT_URL}"
+  source /dev/stdin <<< "$(curl -s "${TEST_DRIVER_INSTALL_SCRIPT_URL}")"
+
+  activate_gke_cluster GKE_CLUSTER_PSM_SECURITY
+  activate_secondary_gke_cluster GKE_CLUSTER_PSM_SECURITY
+
   set -x
   if [[ -n "${KOKORO_ARTIFACTS_DIR}" ]]; then
     kokoro_setup_test_driver "${GITHUB_REPOSITORY_NAME}"
@@ -142,6 +144,7 @@ main() {
     local_setup_test_driver "${script_dir}"
   fi
   build_docker_images_if_needed
+
   # Run tests
   cd "${TEST_DRIVER_FULL_DIR}"
   local failed_tests=0
index 6051027..7911596 100755 (executable)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-set -ex -o igncr || set -ex
+set -eo pipefail
 
 # Constants
 readonly GITHUB_REPOSITORY_NAME="grpc"
-# GKE Cluster
-readonly GKE_CLUSTER_NAME="interop-test-psm-sec-v2-us-central1-a"
-readonly GKE_CLUSTER_ZONE="us-central1-a"
+readonly TEST_DRIVER_INSTALL_SCRIPT_URL="https://raw.githubusercontent.com/${TEST_DRIVER_REPO_OWNER:-grpc}/grpc/${TEST_DRIVER_BRANCH:-master}/tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh"
 ## xDS test server/client Docker images
 readonly SERVER_IMAGE_NAME="gcr.io/grpc-testing/xds-interop/python-server"
 readonly CLIENT_IMAGE_NAME="gcr.io/grpc-testing/xds-interop/python-client"
@@ -151,8 +149,13 @@ run_test() {
 main() {
   local script_dir
   script_dir="$(dirname "$0")"
-  # shellcheck source=tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh
-  source "${script_dir}/grpc_xds_k8s_install_test_driver.sh"
+
+  # Source the test driver from the master branch.
+  echo "Sourcing test driver install script from: ${TEST_DRIVER_INSTALL_SCRIPT_URL}"
+  source /dev/stdin <<< "$(curl -s "${TEST_DRIVER_INSTALL_SCRIPT_URL}")"
+
+  activate_gke_cluster GKE_CLUSTER_PSM_SECURITY
+
   set -x
   if [[ -n "${KOKORO_ARTIFACTS_DIR}" ]]; then
     kokoro_setup_test_driver "${GITHUB_REPOSITORY_NAME}"
index b44bd79..faf4c9e 100755 (executable)
@@ -17,10 +17,7 @@ set -eo pipefail
 
 # Constants
 readonly GITHUB_REPOSITORY_NAME="grpc"
-# GKE Cluster
-readonly GKE_CLUSTER_NAME="interop-test-psm-sec-v2-us-central1-a"
-readonly GKE_CLUSTER_ZONE="us-central1-a"
-
+readonly TEST_DRIVER_INSTALL_SCRIPT_URL="https://raw.githubusercontent.com/${TEST_DRIVER_REPO_OWNER:-grpc}/grpc/${TEST_DRIVER_BRANCH:-master}/tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh"
 ## xDS test server/client Docker images
 readonly IMAGE_REPO="gcr.io/grpc-testing/xds-interop"
 readonly SERVER_LANG="cpp go java"
@@ -86,8 +83,13 @@ run_test() {
 main() {
   local script_dir
   script_dir="$(dirname "$0")"
-  # shellcheck source=tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh
-  source "${script_dir}/grpc_xds_k8s_install_test_driver.sh"
+
+  # Source the test driver from the master branch.
+  echo "Sourcing test driver install script from: ${TEST_DRIVER_INSTALL_SCRIPT_URL}"
+  source /dev/stdin <<< "$(curl -s "${TEST_DRIVER_INSTALL_SCRIPT_URL}")"
+
+  activate_gke_cluster GKE_CLUSTER_PSM_SECURITY
+
   set -x
   if [[ -n "${KOKORO_ARTIFACTS_DIR}" ]]; then
     kokoro_setup_test_driver "${GITHUB_REPOSITORY_NAME}"
index f823f6c..696ef97 100755 (executable)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-set -ex -o igncr || set -ex
+set -eo pipefail
 
 # Constants
 readonly GITHUB_REPOSITORY_NAME="grpc"
-# GKE Cluster
-readonly GKE_CLUSTER_NAME="interop-test-psm-basic"
-readonly GKE_CLUSTER_ZONE="us-central1-c"
+readonly TEST_DRIVER_INSTALL_SCRIPT_URL="https://raw.githubusercontent.com/${TEST_DRIVER_REPO_OWNER:-grpc}/grpc/${TEST_DRIVER_BRANCH:-master}/tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh"
 ## xDS test client Docker images
 readonly CLIENT_IMAGE_NAME="gcr.io/grpc-testing/xds-interop/cpp-client"
 readonly FORCE_IMAGE_BUILD="${FORCE_IMAGE_BUILD:-0}"
@@ -120,8 +118,13 @@ run_test() {
 main() {
   local script_dir
   script_dir="$(dirname "$0")"
-  # shellcheck source=tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh
-  source "${script_dir}/grpc_xds_k8s_install_test_driver.sh"
+
+  # Source the test driver from the master branch.
+  echo "Sourcing test driver install script from: ${TEST_DRIVER_INSTALL_SCRIPT_URL}"
+  source /dev/stdin <<< "$(curl -s "${TEST_DRIVER_INSTALL_SCRIPT_URL}")"
+
+  activate_gke_cluster GKE_CLUSTER_PSM_BASIC
+
   set -x
   if [[ -n "${KOKORO_ARTIFACTS_DIR}" ]]; then
     kokoro_setup_test_driver "${GITHUB_REPOSITORY_NAME}"
index bb302c8..7316df9 100755 (executable)
@@ -17,9 +17,7 @@ set -eo pipefail
 
 # Constants
 readonly GITHUB_REPOSITORY_NAME="grpc"
-# GKE Cluster
-readonly GKE_CLUSTER_NAME="interop-test-psm-basic"
-readonly GKE_CLUSTER_ZONE="us-central1-c"
+readonly TEST_DRIVER_INSTALL_SCRIPT_URL="https://raw.githubusercontent.com/${TEST_DRIVER_REPO_OWNER:-grpc}/grpc/${TEST_DRIVER_BRANCH:-master}/tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh"
 ## xDS test client Docker images
 readonly CLIENT_IMAGE_NAME="gcr.io/grpc-testing/xds-interop/python-client"
 readonly FORCE_IMAGE_BUILD="${FORCE_IMAGE_BUILD:-0}"
@@ -130,8 +128,13 @@ run_test() {
 main() {
   local script_dir
   script_dir="$(dirname "$0")"
-  # shellcheck source=tools/internal_ci/linux/grpc_xds_k8s_install_test_driver.sh
-  source "${script_dir}/grpc_xds_k8s_install_test_driver.sh"
+
+  # Source the test driver from the master branch.
+  echo "Sourcing test driver install script from: ${TEST_DRIVER_INSTALL_SCRIPT_URL}"
+  source /dev/stdin <<< "$(curl -s "${TEST_DRIVER_INSTALL_SCRIPT_URL}")"
+
+  activate_gke_cluster GKE_CLUSTER_PSM_BASIC
+  
   set -x
   if [[ -n "${KOKORO_ARTIFACTS_DIR}" ]]; then
     kokoro_setup_test_driver "${GITHUB_REPOSITORY_NAME}"
index 4b131d9..602114b 100644 (file)
@@ -32,9 +32,11 @@ def _filter_msg(msg, output_format):
     if output_format in ['XML', 'HTML']:
         # keep whitespaces but remove formfeed and vertical tab characters
         # that make XML report unparsable.
+        if isinstance(msg, bytes):
+            msg = msg.decode('UTF-8', 'ignore')
         filtered_msg = ''.join(
             filter(lambda x: x in string.printable and x != '\f' and x != '\v',
-                   msg.decode('UTF-8', 'ignore')))
+                   msg))
         if output_format == 'HTML':
             filtered_msg = filtered_msg.replace('"', '&quot;')
         return filtered_msg
index 1401229..76379d8 100755 (executable)
@@ -596,6 +596,9 @@ class RubyLanguage:
         return 'ruby'
 
 
+_PYTHON_BINARY = 'py39_native/bin/python'
+
+
 class PythonLanguage:
 
     def __init__(self):
@@ -606,13 +609,13 @@ class PythonLanguage:
 
     def client_cmd(self, args):
         return [
-            'py37_native/bin/python', 'src/python/grpcio_tests/setup.py',
-            'run_interop', '--client', '--args="{}"'.format(' '.join(args))
+            _PYTHON_BINARY, 'src/python/grpcio_tests/setup.py', 'run_interop',
+            '--client', '--args="{}"'.format(' '.join(args))
         ]
 
     def client_cmd_http2interop(self, args):
         return [
-            'py37_native/bin/python',
+            _PYTHON_BINARY,
             'src/python/grpcio_tests/tests/http2/negative_http2_client.py',
         ] + args
 
@@ -621,8 +624,8 @@ class PythonLanguage:
 
     def server_cmd(self, args):
         return [
-            'py37_native/bin/python', 'src/python/grpcio_tests/setup.py',
-            'run_interop', '--server', '--args="{}"'.format(' '.join(args))
+            _PYTHON_BINARY, 'src/python/grpcio_tests/setup.py', 'run_interop',
+            '--server', '--args="{}"'.format(' '.join(args))
         ]
 
     def global_env(self):
@@ -654,14 +657,13 @@ class PythonAsyncIOLanguage:
 
     def client_cmd(self, args):
         return [
-            'py37_native/bin/python', 'src/python/grpcio_tests/setup.py',
-            'run_interop', '--use-asyncio', '--client',
-            '--args="{}"'.format(' '.join(args))
+            _PYTHON_BINARY, 'src/python/grpcio_tests/setup.py', 'run_interop',
+            '--use-asyncio', '--client', '--args="{}"'.format(' '.join(args))
         ]
 
     def client_cmd_http2interop(self, args):
         return [
-            'py37_native/bin/python',
+            _PYTHON_BINARY,
             'src/python/grpcio_tests/tests/http2/negative_http2_client.py',
         ] + args
 
@@ -670,8 +672,8 @@ class PythonAsyncIOLanguage:
 
     def server_cmd(self, args):
         return [
+            _PYTHON_BINARY, 'src/python/grpcio_tests/setup.py',
             'py37_native/bin/python', 'src/python/grpcio_tests/setup.py',
-            'run_interop', '--use-asyncio', '--server',
             '--args="{}"'.format(' '.join(args))
         ]
 
index baee928..04473ab 100755 (executable)
@@ -1428,6 +1428,7 @@ argp.add_argument(
         'python3.6',
         'python3.7',
         'python3.8',
+        'python3.9',
         'pypy',
         'pypy3',
         'python_alpine',
index a01e309..d0a018f 100755 (executable)
@@ -29,7 +29,7 @@ cat << EOF | sort > "$want_submodules"
 third_party/abseil-cpp 997aaf3a28308eba1b9156aa35ab7bca9688e9f6
 third_party/benchmark 73d4d5e8d6d449fc8663765a42aa8aeeee844489
 third_party/bloaty 73594cde8c9a52a102c4341c244c833aa61b9c06
-third_party/boringssl-with-bazel fc44652a42b396e1645d5e72aba053349992136a
+third_party/boringssl-with-bazel 340faef0ad19283e985ce7fff0dec73ba4022c8d
 third_party/cares/cares e982924acee7f7313b4baa4ee5ec000c5e373c30
 third_party/envoy-api 2f0d081fab0b0823f088c6e368f40e1992f46fcd
 third_party/googleapis 2f9af297c84c55c8b871ba4495e01ade42476c92