async-grpc-xds 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data/fixtures/async/grpc/test_interface.rb +79 -0
  4. data/fixtures/async/grpc/test_message.rb +56 -0
  5. data/lib/async/grpc/xds/ads_stream.rb +70 -0
  6. data/lib/async/grpc/xds/client.rb +255 -0
  7. data/lib/async/grpc/xds/context.rb +201 -0
  8. data/lib/async/grpc/xds/control_plane.rb +143 -0
  9. data/lib/async/grpc/xds/discovery_client.rb +356 -0
  10. data/lib/async/grpc/xds/health_checker.rb +88 -0
  11. data/lib/async/grpc/xds/load_balancer.rb +196 -0
  12. data/lib/async/grpc/xds/resource_builder.rb +138 -0
  13. data/lib/async/grpc/xds/resource_cache.rb +55 -0
  14. data/lib/async/grpc/xds/resources.rb +270 -0
  15. data/lib/async/grpc/xds/server.rb +34 -0
  16. data/lib/async/grpc/xds/service.rb +117 -0
  17. data/lib/async/grpc/xds/version.rb +12 -0
  18. data/lib/async/grpc/xds.rb +42 -0
  19. data/lib/envoy/annotations/deprecation_pb.rb +19 -0
  20. data/lib/envoy/config/cluster/v3/circuit_breaker_pb.rb +31 -0
  21. data/lib/envoy/config/cluster/v3/cluster_pb.rb +80 -0
  22. data/lib/envoy/config/cluster/v3/filter_pb.rb +28 -0
  23. data/lib/envoy/config/cluster/v3/outlier_detection_pb.rb +29 -0
  24. data/lib/envoy/config/core/v3/address_pb.rb +38 -0
  25. data/lib/envoy/config/core/v3/backoff_pb.rb +27 -0
  26. data/lib/envoy/config/core/v3/base_pb.rb +68 -0
  27. data/lib/envoy/config/core/v3/cel_pb.rb +24 -0
  28. data/lib/envoy/config/core/v3/config_source_pb.rb +42 -0
  29. data/lib/envoy/config/core/v3/event_service_config_pb.rb +27 -0
  30. data/lib/envoy/config/core/v3/extension_pb.rb +26 -0
  31. data/lib/envoy/config/core/v3/grpc_method_list_pb.rb +27 -0
  32. data/lib/envoy/config/core/v3/grpc_service_pb.rb +45 -0
  33. data/lib/envoy/config/core/v3/health_check_pb.rb +47 -0
  34. data/lib/envoy/config/core/v3/http_service_pb.rb +27 -0
  35. data/lib/envoy/config/core/v3/http_uri_pb.rb +27 -0
  36. data/lib/envoy/config/core/v3/protocol_pb.rb +51 -0
  37. data/lib/envoy/config/core/v3/proxy_protocol_pb.rb +31 -0
  38. data/lib/envoy/config/core/v3/resolver_pb.rb +27 -0
  39. data/lib/envoy/config/core/v3/socket_cmsg_headers_pb.rb +25 -0
  40. data/lib/envoy/config/core/v3/socket_option_pb.rb +31 -0
  41. data/lib/envoy/config/core/v3/substitution_format_string_pb.rb +30 -0
  42. data/lib/envoy/config/core/v3/udp_socket_config_pb.rb +26 -0
  43. data/lib/envoy/config/endpoint/v3/endpoint_components_pb.rb +40 -0
  44. data/lib/envoy/config/endpoint/v3/endpoint_pb.rb +32 -0
  45. data/lib/envoy/config/endpoint/v3/load_report_pb.rb +36 -0
  46. data/lib/envoy/service/discovery/v3/ads_pb.rb +26 -0
  47. data/lib/envoy/service/discovery/v3/aggregated_discovery_service.rb +64 -0
  48. data/lib/envoy/service/discovery/v3/discovery_pb.rb +42 -0
  49. data/lib/envoy/type/matcher/v3/address_pb.rb +25 -0
  50. data/lib/envoy/type/matcher/v3/filter_state_pb.rb +27 -0
  51. data/lib/envoy/type/matcher/v3/http_inputs_pb.rb +29 -0
  52. data/lib/envoy/type/matcher/v3/metadata_pb.rb +28 -0
  53. data/lib/envoy/type/matcher/v3/node_pb.rb +27 -0
  54. data/lib/envoy/type/matcher/v3/number_pb.rb +27 -0
  55. data/lib/envoy/type/matcher/v3/path_pb.rb +27 -0
  56. data/lib/envoy/type/matcher/v3/regex_pb.rb +30 -0
  57. data/lib/envoy/type/matcher/v3/status_code_input_pb.rb +25 -0
  58. data/lib/envoy/type/matcher/v3/string_pb.rb +29 -0
  59. data/lib/envoy/type/matcher/v3/struct_pb.rb +28 -0
  60. data/lib/envoy/type/matcher/v3/value_pb.rb +31 -0
  61. data/lib/envoy/type/metadata/v3/metadata_pb.rb +32 -0
  62. data/lib/envoy/type/v3/hash_policy_pb.rb +26 -0
  63. data/lib/envoy/type/v3/http_pb.rb +22 -0
  64. data/lib/envoy/type/v3/http_status_pb.rb +25 -0
  65. data/lib/envoy/type/v3/percent_pb.rb +26 -0
  66. data/lib/envoy/type/v3/range_pb.rb +25 -0
  67. data/lib/envoy/type/v3/ratelimit_strategy_pb.rb +28 -0
  68. data/lib/envoy/type/v3/ratelimit_unit_pb.rb +22 -0
  69. data/lib/envoy/type/v3/semantic_version_pb.rb +23 -0
  70. data/lib/envoy/type/v3/token_bucket_pb.rb +26 -0
  71. data/lib/envoy.rb +83 -0
  72. data/lib/google/protobuf/any_pb.rb +18 -0
  73. data/lib/google/protobuf/duration_pb.rb +18 -0
  74. data/lib/google/protobuf/empty_pb.rb +18 -0
  75. data/lib/google/protobuf/struct_pb.rb +21 -0
  76. data/lib/google/protobuf/timestamp_pb.rb +18 -0
  77. data/lib/google/protobuf/wrappers_pb.rb +26 -0
  78. data/lib/google/rpc/status_pb.rb +20 -0
  79. data/lib/udpa/annotations/migrate_pb.rb +22 -0
  80. data/lib/udpa/annotations/security_pb.rb +23 -0
  81. data/lib/udpa/annotations/sensitive_pb.rb +19 -0
  82. data/lib/udpa/annotations/status_pb.rb +21 -0
  83. data/lib/udpa/annotations/versioning_pb.rb +20 -0
  84. data/lib/validate/validate_pb.rb +43 -0
  85. data/lib/xds/annotations/v3/status_pb.rb +26 -0
  86. data/lib/xds/core/v3/authority_pb.rb +23 -0
  87. data/lib/xds/core/v3/cidr_pb.rb +24 -0
  88. data/lib/xds/core/v3/collection_entry_pb.rb +26 -0
  89. data/lib/xds/core/v3/context_params_pb.rb +22 -0
  90. data/lib/xds/core/v3/extension_pb.rb +23 -0
  91. data/lib/xds/core/v3/resource_locator_pb.rb +26 -0
  92. data/lib/xds/core/v3/resource_name_pb.rb +24 -0
  93. data/lib/xds/core/v3/resource_pb.rb +24 -0
  94. data/lib/xds/type/matcher/v3/domain_pb.rb +27 -0
  95. data/lib/xds/type/matcher/v3/http_inputs_pb.rb +22 -0
  96. data/lib/xds/type/matcher/v3/ip_pb.rb +28 -0
  97. data/lib/xds/type/matcher/v3/matcher_pb.rb +34 -0
  98. data/lib/xds/type/matcher/v3/range_pb.rb +31 -0
  99. data/lib/xds/type/matcher/v3/regex_pb.rb +25 -0
  100. data/lib/xds/type/matcher/v3/string_pb.rb +27 -0
  101. data/license.md +21 -0
  102. data/plan.md +156 -0
  103. data/proto/envoy/annotations/deprecation.proto +34 -0
  104. data/proto/envoy/annotations/resource.proto +19 -0
  105. data/proto/envoy/config/README.md +3 -0
  106. data/proto/envoy/config/cluster/v3/BUILD +18 -0
  107. data/proto/envoy/config/cluster/v3/circuit_breaker.proto +121 -0
  108. data/proto/envoy/config/cluster/v3/cluster.proto +1407 -0
  109. data/proto/envoy/config/cluster/v3/filter.proto +40 -0
  110. data/proto/envoy/config/cluster/v3/outlier_detection.proto +180 -0
  111. data/proto/envoy/config/core/v3/BUILD +16 -0
  112. data/proto/envoy/config/core/v3/address.proto +214 -0
  113. data/proto/envoy/config/core/v3/backoff.proto +37 -0
  114. data/proto/envoy/config/core/v3/base.proto +662 -0
  115. data/proto/envoy/config/core/v3/cel.proto +63 -0
  116. data/proto/envoy/config/core/v3/config_source.proto +283 -0
  117. data/proto/envoy/config/core/v3/event_service_config.proto +29 -0
  118. data/proto/envoy/config/core/v3/extension.proto +32 -0
  119. data/proto/envoy/config/core/v3/grpc_method_list.proto +33 -0
  120. data/proto/envoy/config/core/v3/grpc_service.proto +355 -0
  121. data/proto/envoy/config/core/v3/health_check.proto +443 -0
  122. data/proto/envoy/config/core/v3/http_service.proto +35 -0
  123. data/proto/envoy/config/core/v3/http_uri.proto +58 -0
  124. data/proto/envoy/config/core/v3/protocol.proto +807 -0
  125. data/proto/envoy/config/core/v3/proxy_protocol.proto +114 -0
  126. data/proto/envoy/config/core/v3/resolver.proto +36 -0
  127. data/proto/envoy/config/core/v3/socket_cmsg_headers.proto +28 -0
  128. data/proto/envoy/config/core/v3/socket_option.proto +108 -0
  129. data/proto/envoy/config/core/v3/substitution_format_string.proto +136 -0
  130. data/proto/envoy/config/core/v3/udp_socket_config.proto +32 -0
  131. data/proto/envoy/config/endpoint/v3/BUILD +16 -0
  132. data/proto/envoy/config/endpoint/v3/endpoint.proto +137 -0
  133. data/proto/envoy/config/endpoint/v3/endpoint_components.proto +229 -0
  134. data/proto/envoy/config/endpoint/v3/load_report.proto +220 -0
  135. data/proto/envoy/config/listener/v3/BUILD +18 -0
  136. data/proto/envoy/config/listener/v3/api_listener.proto +34 -0
  137. data/proto/envoy/config/listener/v3/listener.proto +455 -0
  138. data/proto/envoy/config/listener/v3/listener_components.proto +353 -0
  139. data/proto/envoy/config/listener/v3/quic_config.proto +108 -0
  140. data/proto/envoy/config/listener/v3/udp_listener_config.proto +52 -0
  141. data/proto/envoy/config/route/v3/BUILD +19 -0
  142. data/proto/envoy/config/route/v3/route.proto +172 -0
  143. data/proto/envoy/config/route/v3/route_components.proto +2918 -0
  144. data/proto/envoy/config/route/v3/scoped_route.proto +133 -0
  145. data/proto/envoy/extensions/transport_sockets/tls/v3/BUILD +14 -0
  146. data/proto/envoy/extensions/transport_sockets/tls/v3/cert.proto +12 -0
  147. data/proto/envoy/extensions/transport_sockets/tls/v3/common.proto +597 -0
  148. data/proto/envoy/extensions/transport_sockets/tls/v3/secret.proto +61 -0
  149. data/proto/envoy/extensions/transport_sockets/tls/v3/tls.proto +366 -0
  150. data/proto/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.proto +67 -0
  151. data/proto/envoy/service/README.md +3 -0
  152. data/proto/envoy/service/discovery/v3/BUILD +13 -0
  153. data/proto/envoy/service/discovery/v3/ads.proto +44 -0
  154. data/proto/envoy/service/discovery/v3/discovery.proto +443 -0
  155. data/proto/envoy/type/BUILD +9 -0
  156. data/proto/envoy/type/hash_policy.proto +28 -0
  157. data/proto/envoy/type/http.proto +24 -0
  158. data/proto/envoy/type/http_status.proto +140 -0
  159. data/proto/envoy/type/matcher/v3/address.proto +22 -0
  160. data/proto/envoy/type/matcher/v3/filter_state.proto +33 -0
  161. data/proto/envoy/type/matcher/v3/http_inputs.proto +71 -0
  162. data/proto/envoy/type/matcher/v3/metadata.proto +110 -0
  163. data/proto/envoy/type/matcher/v3/node.proto +29 -0
  164. data/proto/envoy/type/matcher/v3/number.proto +33 -0
  165. data/proto/envoy/type/matcher/v3/path.proto +31 -0
  166. data/proto/envoy/type/matcher/v3/regex.proto +97 -0
  167. data/proto/envoy/type/matcher/v3/status_code_input.proto +23 -0
  168. data/proto/envoy/type/matcher/v3/string.proto +94 -0
  169. data/proto/envoy/type/matcher/v3/struct.proto +91 -0
  170. data/proto/envoy/type/matcher/v3/value.proto +80 -0
  171. data/proto/envoy/type/metadata/v3/metadata.proto +117 -0
  172. data/proto/envoy/type/percent.proto +52 -0
  173. data/proto/envoy/type/range.proto +43 -0
  174. data/proto/envoy/type/semantic_version.proto +24 -0
  175. data/proto/envoy/type/token_bucket.proto +36 -0
  176. data/proto/envoy/type/v3/BUILD +12 -0
  177. data/proto/envoy/type/v3/hash_policy.proto +43 -0
  178. data/proto/envoy/type/v3/http.proto +24 -0
  179. data/proto/envoy/type/v3/http_status.proto +199 -0
  180. data/proto/envoy/type/v3/percent.proto +57 -0
  181. data/proto/envoy/type/v3/range.proto +50 -0
  182. data/proto/envoy/type/v3/ratelimit_strategy.proto +79 -0
  183. data/proto/envoy/type/v3/ratelimit_unit.proto +37 -0
  184. data/proto/envoy/type/v3/semantic_version.proto +27 -0
  185. data/proto/envoy/type/v3/token_bucket.proto +39 -0
  186. data/proto/google/protobuf/any.proto +162 -0
  187. data/proto/google/protobuf/duration.proto +115 -0
  188. data/proto/google/protobuf/empty.proto +51 -0
  189. data/proto/google/protobuf/struct.proto +95 -0
  190. data/proto/google/protobuf/timestamp.proto +145 -0
  191. data/proto/google/protobuf/wrappers.proto +157 -0
  192. data/proto/google/rpc/status.proto +47 -0
  193. data/proto/readme.md +70 -0
  194. data/proto/udpa/annotations/migrate.proto +49 -0
  195. data/proto/udpa/annotations/security.proto +31 -0
  196. data/proto/udpa/annotations/sensitive.proto +14 -0
  197. data/proto/udpa/annotations/status.proto +34 -0
  198. data/proto/udpa/annotations/versioning.proto +17 -0
  199. data/proto/validate/validate.proto +862 -0
  200. data/proto/xds/annotations/v3/migrate.proto +46 -0
  201. data/proto/xds/annotations/v3/security.proto +30 -0
  202. data/proto/xds/annotations/v3/sensitive.proto +16 -0
  203. data/proto/xds/annotations/v3/status.proto +59 -0
  204. data/proto/xds/annotations/v3/versioning.proto +20 -0
  205. data/proto/xds/core/v3/authority.proto +22 -0
  206. data/proto/xds/core/v3/cidr.proto +25 -0
  207. data/proto/xds/core/v3/collection_entry.proto +55 -0
  208. data/proto/xds/core/v3/context_params.proto +23 -0
  209. data/proto/xds/core/v3/extension.proto +26 -0
  210. data/proto/xds/core/v3/resource.proto +29 -0
  211. data/proto/xds/core/v3/resource_locator.proto +118 -0
  212. data/proto/xds/core/v3/resource_name.proto +42 -0
  213. data/proto/xds/type/matcher/v3/cel.proto +37 -0
  214. data/proto/xds/type/matcher/v3/domain.proto +46 -0
  215. data/proto/xds/type/matcher/v3/http_inputs.proto +23 -0
  216. data/proto/xds/type/matcher/v3/ip.proto +53 -0
  217. data/proto/xds/type/matcher/v3/matcher.proto +144 -0
  218. data/proto/xds/type/matcher/v3/range.proto +69 -0
  219. data/proto/xds/type/matcher/v3/regex.proto +46 -0
  220. data/proto/xds/type/matcher/v3/string.proto +71 -0
  221. data/proto/xds/type/v3/cel.proto +77 -0
  222. data/proto/xds/type/v3/range.proto +40 -0
  223. data/proto/xds/type/v3/typed_struct.proto +44 -0
  224. data/readme.md +37 -0
  225. data/releases.md +5 -0
  226. data/xds/Dockerfile.backend +24 -0
  227. data/xds/Dockerfile.control-plane +22 -0
  228. data/xds/backend_server.rb +68 -0
  229. data/xds/docker-compose.yaml +89 -0
  230. data/xds/go.mod +22 -0
  231. data/xds/go.sum +82 -0
  232. data/xds/readme.md +122 -0
  233. data/xds/test/async/grpc/xds/client.rb +294 -0
  234. data/xds/test/async/grpc/xds/control_plane.rb +94 -0
  235. data/xds/test_server.go +355 -0
  236. data/xds/update_protos.sh +123 -0
  237. data.tar.gz.sig +0 -0
  238. metadata +386 -0
  239. metadata.gz.sig +2 -0
@@ -0,0 +1,597 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.extensions.transport_sockets.tls.v3;
4
+
5
+ import "envoy/config/core/v3/base.proto";
6
+ import "envoy/config/core/v3/extension.proto";
7
+ import "envoy/type/matcher/v3/string.proto";
8
+
9
+ import "google/protobuf/any.proto";
10
+ import "google/protobuf/wrappers.proto";
11
+
12
+ import "envoy/annotations/deprecation.proto";
13
+ import "udpa/annotations/migrate.proto";
14
+ import "udpa/annotations/sensitive.proto";
15
+ import "udpa/annotations/status.proto";
16
+ import "udpa/annotations/versioning.proto";
17
+ import "validate/validate.proto";
18
+
19
+ option java_package = "io.envoyproxy.envoy.extensions.transport_sockets.tls.v3";
20
+ option java_outer_classname = "CommonProto";
21
+ option java_multiple_files = true;
22
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/transport_sockets/tls/v3;tlsv3";
23
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
24
+
25
+ // [#protodoc-title: Common TLS configuration]
26
+
27
+ // [#next-free-field: 7]
28
+ message TlsParameters {
29
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.auth.TlsParameters";
30
+
31
+ enum TlsProtocol {
32
+ // Envoy will choose the optimal TLS version.
33
+ TLS_AUTO = 0;
34
+
35
+ // TLS 1.0
36
+ TLSv1_0 = 1;
37
+
38
+ // TLS 1.1
39
+ TLSv1_1 = 2;
40
+
41
+ // TLS 1.2
42
+ TLSv1_2 = 3;
43
+
44
+ // TLS 1.3
45
+ TLSv1_3 = 4;
46
+ }
47
+
48
+ enum CompliancePolicy {
49
+ // FIPS_202205 configures a TLS connection to use:
50
+ //
51
+ // * TLS 1.2 or 1.3
52
+ // * For TLS 1.2, only ECDHE_[RSA|ECDSA]_WITH_AES_*_GCM_SHA*.
53
+ // * For TLS 1.3, only AES-GCM
54
+ // * P-256 or P-384 for key agreement.
55
+ // * For server signatures, only ``PKCS#1/PSS`` with ``SHA256/384/512``, or ECDSA
56
+ // with P-256 or P-384.
57
+ //
58
+ // .. attention::
59
+ //
60
+ // Please refer to `BoringSSL policies <https://boringssl.googlesource.com/boringssl/+/refs/tags/0.20240913.0/include/openssl/ssl.h#5608>`_
61
+ // for details.
62
+ FIPS_202205 = 0;
63
+ }
64
+
65
+ // Minimum TLS protocol version. By default, it's ``TLSv1_2`` for both clients and servers.
66
+ //
67
+ // TLS protocol versions below TLSv1_2 require setting compatible ciphers with the
68
+ // ``cipher_suites`` setting as the default ciphers no longer include compatible ciphers.
69
+ //
70
+ // .. attention::
71
+ //
72
+ // Using TLS protocol versions below TLSv1_2 has serious security considerations and risks.
73
+ TlsProtocol tls_minimum_protocol_version = 1 [(validate.rules).enum = {defined_only: true}];
74
+
75
+ // Maximum TLS protocol version. By default, it's ``TLSv1_2`` for clients and ``TLSv1_3`` for
76
+ // servers.
77
+ TlsProtocol tls_maximum_protocol_version = 2 [(validate.rules).enum = {defined_only: true}];
78
+
79
+ // If specified, the TLS listener will only support the specified `cipher list
80
+ // <https://commondatastorage.googleapis.com/chromium-boringssl-docs/ssl.h.html#Cipher-suite-configuration>`_
81
+ // when negotiating TLS 1.0-1.2 (this setting has no effect when negotiating TLS 1.3).
82
+ //
83
+ // If not specified, a default list will be used. Defaults are different for server (downstream) and
84
+ // client (upstream) TLS configurations.
85
+ // Defaults will change over time in response to security considerations; If you care, configure
86
+ // it instead of using the default.
87
+ //
88
+ // In non-FIPS builds, the default server cipher list is:
89
+ //
90
+ // .. code-block:: none
91
+ //
92
+ // [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]
93
+ // [ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]
94
+ // ECDHE-ECDSA-AES256-GCM-SHA384
95
+ // ECDHE-RSA-AES256-GCM-SHA384
96
+ //
97
+ // In builds using :ref:`BoringSSL FIPS <arch_overview_ssl_fips>`, the default server cipher list is:
98
+ //
99
+ // .. code-block:: none
100
+ //
101
+ // ECDHE-ECDSA-AES128-GCM-SHA256
102
+ // ECDHE-RSA-AES128-GCM-SHA256
103
+ // ECDHE-ECDSA-AES256-GCM-SHA384
104
+ // ECDHE-RSA-AES256-GCM-SHA384
105
+ //
106
+ // In non-FIPS builds, the default client cipher list is:
107
+ //
108
+ // .. code-block:: none
109
+ //
110
+ // [ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]
111
+ // [ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]
112
+ // ECDHE-ECDSA-AES256-GCM-SHA384
113
+ // ECDHE-RSA-AES256-GCM-SHA384
114
+ //
115
+ // In builds using :ref:`BoringSSL FIPS <arch_overview_ssl_fips>`, the default client cipher list is:
116
+ //
117
+ // .. code-block:: none
118
+ //
119
+ // ECDHE-ECDSA-AES128-GCM-SHA256
120
+ // ECDHE-RSA-AES128-GCM-SHA256
121
+ // ECDHE-ECDSA-AES256-GCM-SHA384
122
+ // ECDHE-RSA-AES256-GCM-SHA384
123
+ repeated string cipher_suites = 3;
124
+
125
+ // If specified, the TLS connection will only support the specified ECDH
126
+ // curves. If not specified, the default curves will be used.
127
+ //
128
+ // In non-FIPS builds, the default curves are:
129
+ //
130
+ // .. code-block:: none
131
+ //
132
+ // X25519
133
+ // P-256
134
+ //
135
+ // In builds using :ref:`BoringSSL FIPS <arch_overview_ssl_fips>`, the default curve is:
136
+ //
137
+ // .. code-block:: none
138
+ //
139
+ // P-256
140
+ repeated string ecdh_curves = 4;
141
+
142
+ // If specified, the TLS connection will only support the specified signature algorithms.
143
+ // The list is ordered by preference.
144
+ // If not specified, the default signature algorithms defined by BoringSSL will be used.
145
+ //
146
+ // Default signature algorithms selected by BoringSSL (may be out of date):
147
+ //
148
+ // .. code-block:: none
149
+ //
150
+ // ecdsa_secp256r1_sha256
151
+ // rsa_pss_rsae_sha256
152
+ // rsa_pkcs1_sha256
153
+ // ecdsa_secp384r1_sha384
154
+ // rsa_pss_rsae_sha384
155
+ // rsa_pkcs1_sha384
156
+ // rsa_pss_rsae_sha512
157
+ // rsa_pkcs1_sha512
158
+ // rsa_pkcs1_sha1
159
+ //
160
+ // Signature algorithms supported by BoringSSL (may be out of date):
161
+ //
162
+ // .. code-block:: none
163
+ //
164
+ // rsa_pkcs1_sha256
165
+ // rsa_pkcs1_sha384
166
+ // rsa_pkcs1_sha512
167
+ // ecdsa_secp256r1_sha256
168
+ // ecdsa_secp384r1_sha384
169
+ // ecdsa_secp521r1_sha512
170
+ // rsa_pss_rsae_sha256
171
+ // rsa_pss_rsae_sha384
172
+ // rsa_pss_rsae_sha512
173
+ // ed25519
174
+ // rsa_pkcs1_sha1
175
+ // ecdsa_sha1
176
+ repeated string signature_algorithms = 5;
177
+
178
+ // Compliance policies configure various aspects of the TLS based on the given policy.
179
+ // The policies are applied last during configuration and may override the other TLS
180
+ // parameters, or any previous policy.
181
+ repeated CompliancePolicy compliance_policies = 6 [(validate.rules).repeated = {max_items: 1}];
182
+ }
183
+
184
+ // BoringSSL private key method configuration. The private key methods are used for external
185
+ // (potentially asynchronous) signing and decryption operations. Some use cases for private key
186
+ // methods would be TPM support and TLS acceleration.
187
+ message PrivateKeyProvider {
188
+ option (udpa.annotations.versioning).previous_message_type =
189
+ "envoy.api.v2.auth.PrivateKeyProvider";
190
+
191
+ reserved 2;
192
+
193
+ reserved "config";
194
+
195
+ // Private key method provider name. The name must match a
196
+ // supported private key method provider type.
197
+ string provider_name = 1 [(validate.rules).string = {min_len: 1}];
198
+
199
+ // Private key method provider specific configuration.
200
+ oneof config_type {
201
+ google.protobuf.Any typed_config = 3 [(udpa.annotations.sensitive) = true];
202
+ }
203
+
204
+ // If the private key provider isn't available (eg. the required hardware capability doesn't existed),
205
+ // Envoy will fallback to the BoringSSL default implementation when the ``fallback`` is true.
206
+ // The default value is ``false``.
207
+ bool fallback = 4;
208
+ }
209
+
210
+ // [#next-free-field: 9]
211
+ message TlsCertificate {
212
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.auth.TlsCertificate";
213
+
214
+ // The TLS certificate chain.
215
+ //
216
+ // If ``certificate_chain`` is a filesystem path, a watch will be added to the
217
+ // parent directory for any file moves to support rotation. This currently
218
+ // only applies to dynamic secrets, when the ``TlsCertificate`` is delivered via
219
+ // SDS.
220
+ config.core.v3.DataSource certificate_chain = 1;
221
+
222
+ // The TLS private key.
223
+ //
224
+ // If ``private_key`` is a filesystem path, a watch will be added to the parent
225
+ // directory for any file moves to support rotation. This currently only
226
+ // applies to dynamic secrets, when the ``TlsCertificate`` is delivered via SDS.
227
+ config.core.v3.DataSource private_key = 2 [(udpa.annotations.sensitive) = true];
228
+
229
+ // ``Pkcs12`` data containing TLS certificate, chain, and private key.
230
+ //
231
+ // If ``pkcs12`` is a filesystem path, the file will be read, but no watch will
232
+ // be added to the parent directory, since ``pkcs12`` isn't used by SDS.
233
+ // This field is mutually exclusive with ``certificate_chain``, ``private_key`` and ``private_key_provider``.
234
+ // This can't be marked as ``oneof`` due to API compatibility reasons. Setting
235
+ // both :ref:`private_key <envoy_v3_api_field_extensions.transport_sockets.tls.v3.TlsCertificate.private_key>`,
236
+ // :ref:`certificate_chain <envoy_v3_api_field_extensions.transport_sockets.tls.v3.TlsCertificate.certificate_chain>`,
237
+ // or :ref:`private_key_provider <envoy_v3_api_field_extensions.transport_sockets.tls.v3.TlsCertificate.private_key_provider>`
238
+ // and :ref:`pkcs12 <envoy_v3_api_field_extensions.transport_sockets.tls.v3.TlsCertificate.pkcs12>`
239
+ // fields will result in an error. Use :ref:`password
240
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.TlsCertificate.password>`
241
+ // to specify the password to unprotect the ``PKCS12`` data, if necessary.
242
+ config.core.v3.DataSource pkcs12 = 8 [(udpa.annotations.sensitive) = true];
243
+
244
+ // If specified, updates of file-based ``certificate_chain`` and ``private_key``
245
+ // sources will be triggered by this watch. The certificate/key pair will be
246
+ // read together and validated for atomic read consistency (i.e. no
247
+ // intervening modification occurred between cert/key read, verified by file
248
+ // hash comparisons). This allows explicit control over the path watched, by
249
+ // default the parent directories of the filesystem paths in
250
+ // ``certificate_chain`` and ``private_key`` are watched if this field is not
251
+ // specified. This only applies when a ``TlsCertificate`` is delivered by SDS
252
+ // with references to filesystem paths. See the :ref:`SDS key rotation
253
+ // <sds_key_rotation>` documentation for further details.
254
+ config.core.v3.WatchedDirectory watched_directory = 7;
255
+
256
+ // BoringSSL private key method provider. This is an alternative to :ref:`private_key
257
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.TlsCertificate.private_key>` field.
258
+ // When both :ref:`private_key <envoy_v3_api_field_extensions.transport_sockets.tls.v3.TlsCertificate.private_key>` and
259
+ // :ref:`private_key_provider <envoy_v3_api_field_extensions.transport_sockets.tls.v3.TlsCertificate.private_key_provider>` fields are set,
260
+ // ``private_key_provider`` takes precedence.
261
+ // If ``private_key_provider`` is unavailable and :ref:`fallback
262
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.PrivateKeyProvider.fallback>`
263
+ // is enabled, ``private_key`` will be used.
264
+ PrivateKeyProvider private_key_provider = 6;
265
+
266
+ // The password to decrypt the TLS private key. If this field is not set, it is assumed that the
267
+ // TLS private key is not password encrypted.
268
+ config.core.v3.DataSource password = 3 [(udpa.annotations.sensitive) = true];
269
+
270
+ // The OCSP response to be stapled with this certificate during the handshake.
271
+ // The response must be DER-encoded and may only be provided via ``filename`` or
272
+ // ``inline_bytes``. The response may pertain to only one certificate.
273
+ config.core.v3.DataSource ocsp_staple = 4;
274
+
275
+ // [#not-implemented-hide:]
276
+ repeated config.core.v3.DataSource signed_certificate_timestamp = 5;
277
+ }
278
+
279
+ message TlsSessionTicketKeys {
280
+ option (udpa.annotations.versioning).previous_message_type =
281
+ "envoy.api.v2.auth.TlsSessionTicketKeys";
282
+
283
+ // Keys for encrypting and decrypting TLS session tickets. The
284
+ // first key in the array contains the key to encrypt all new sessions created by this context.
285
+ // All keys are candidates for decrypting received tickets. This allows for easy rotation of keys
286
+ // by, for example, putting the new key first, and the previous key second.
287
+ //
288
+ // If :ref:`session_ticket_keys <envoy_v3_api_field_extensions.transport_sockets.tls.v3.DownstreamTlsContext.session_ticket_keys>`
289
+ // is not specified, the TLS library will still support resuming sessions via tickets, but it will
290
+ // use an internally-generated and managed key, so sessions cannot be resumed across hot restarts
291
+ // or on different hosts.
292
+ //
293
+ // Each key must contain exactly 80 bytes of cryptographically-secure random data. For
294
+ // example, the output of ``openssl rand 80``.
295
+ //
296
+ // .. attention::
297
+ //
298
+ // Using this feature has serious security considerations and risks. Improper handling of keys
299
+ // may result in loss of secrecy in connections, even if ciphers supporting perfect forward
300
+ // secrecy are used. See https://www.imperialviolet.org/2013/06/27/botchingpfs.html for some
301
+ // discussion. To minimize the risk, you must:
302
+ //
303
+ // * Keep the session ticket keys at least as secure as your TLS certificate private keys
304
+ // * Rotate session ticket keys at least daily, and preferably hourly
305
+ // * Always generate keys using a cryptographically-secure random data source
306
+ repeated config.core.v3.DataSource keys = 1
307
+ [(validate.rules).repeated = {min_items: 1}, (udpa.annotations.sensitive) = true];
308
+ }
309
+
310
+ // Indicates a certificate to be obtained from a named CertificateProvider plugin instance.
311
+ // The plugin instances are defined in the client's bootstrap file.
312
+ // The plugin allows certificates to be fetched/refreshed over the network asynchronously with
313
+ // respect to the TLS handshake.
314
+ // [#not-implemented-hide:]
315
+ message CertificateProviderPluginInstance {
316
+ // Provider instance name.
317
+ //
318
+ // Instance names should generally be defined not in terms of the underlying provider
319
+ // implementation (e.g., "file_watcher") but rather in terms of the function of the
320
+ // certificates (e.g., "foo_deployment_identity").
321
+ string instance_name = 1 [(validate.rules).string = {min_len: 1}];
322
+
323
+ // Opaque name used to specify certificate instances or types. For example, "ROOTCA" to specify
324
+ // a root-certificate (validation context) or "example.com" to specify a certificate for a
325
+ // particular domain. Not all provider instances will actually use this field, so the value
326
+ // defaults to the empty string.
327
+ string certificate_name = 2;
328
+ }
329
+
330
+ // Matcher for subject alternative names, to match both type and value of the SAN.
331
+ message SubjectAltNameMatcher {
332
+ // Indicates the choice of GeneralName as defined in section 4.2.1.5 of RFC 5280 to match
333
+ // against.
334
+ enum SanType {
335
+ SAN_TYPE_UNSPECIFIED = 0;
336
+ EMAIL = 1;
337
+ DNS = 2;
338
+ URI = 3;
339
+ IP_ADDRESS = 4;
340
+ OTHER_NAME = 5;
341
+ }
342
+
343
+ // Specification of type of SAN. Note that the default enum value is an invalid choice.
344
+ SanType san_type = 1 [(validate.rules).enum = {defined_only: true not_in: 0}];
345
+
346
+ // Matcher for SAN value.
347
+ //
348
+ // If the :ref:`san_type <envoy_v3_api_field_extensions.transport_sockets.tls.v3.SubjectAltNameMatcher.san_type>`
349
+ // is :ref:`DNS <envoy_v3_api_enum_value_extensions.transport_sockets.tls.v3.SubjectAltNameMatcher.SanType.DNS>`
350
+ // and the matcher type is :ref:`exact <envoy_v3_api_field_type.matcher.v3.StringMatcher.exact>`, DNS wildcards are evaluated
351
+ // according to the rules in https://www.rfc-editor.org/rfc/rfc6125#section-6.4.3.
352
+ // For example, ``*.example.com`` would match ``test.example.com`` but not ``example.com`` and not
353
+ // ``a.b.example.com``.
354
+ //
355
+ // The string matching for OTHER_NAME SAN values depends on their ASN.1 type:
356
+ //
357
+ // * OBJECT: Validated against its dotted numeric notation (e.g., "1.2.3.4")
358
+ // * BOOLEAN: Validated against strings "true" or "false"
359
+ // * INTEGER/ENUMERATED: Validated against a string containing the integer value
360
+ // * NULL: Validated against an empty string
361
+ // * Other types: Validated directly against the string value
362
+ type.matcher.v3.StringMatcher matcher = 2 [(validate.rules).message = {required: true}];
363
+
364
+ // OID Value which is required if OTHER_NAME SAN type is used.
365
+ // For example, UPN OID is 1.3.6.1.4.1.311.20.2.3
366
+ // (Reference: http://oid-info.com/get/1.3.6.1.4.1.311.20.2.3).
367
+ //
368
+ // If set for SAN types other than OTHER_NAME, it will be ignored.
369
+ string oid = 3;
370
+ }
371
+
372
+ // [#next-free-field: 18]
373
+ message CertificateValidationContext {
374
+ option (udpa.annotations.versioning).previous_message_type =
375
+ "envoy.api.v2.auth.CertificateValidationContext";
376
+
377
+ // Peer certificate verification mode.
378
+ enum TrustChainVerification {
379
+ // Perform default certificate verification (e.g., against CA / verification lists)
380
+ VERIFY_TRUST_CHAIN = 0;
381
+
382
+ // Connections where the certificate fails verification will be permitted.
383
+ // For HTTP connections, the result of certificate verification can be used in route matching. (
384
+ // see :ref:`validated <envoy_v3_api_field_config.route.v3.RouteMatch.TlsContextMatchOptions.validated>` ).
385
+ ACCEPT_UNTRUSTED = 1;
386
+ }
387
+
388
+ message SystemRootCerts {
389
+ }
390
+
391
+ reserved 4, 5;
392
+
393
+ reserved "verify_subject_alt_name";
394
+
395
+ // TLS certificate data containing certificate authority certificates to use in verifying
396
+ // a presented peer certificate (e.g. server certificate for clusters or client certificate
397
+ // for listeners). If not specified and a peer certificate is presented it will not be
398
+ // verified. By default, a client certificate is optional, unless one of the additional
399
+ // options (:ref:`require_client_certificate
400
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.DownstreamTlsContext.require_client_certificate>`,
401
+ // :ref:`verify_certificate_spki
402
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.verify_certificate_spki>`,
403
+ // :ref:`verify_certificate_hash
404
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.verify_certificate_hash>`, or
405
+ // :ref:`match_typed_subject_alt_names
406
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.match_typed_subject_alt_names>`) is also
407
+ // specified.
408
+ //
409
+ // It can optionally contain certificate revocation lists, in which case Envoy will verify
410
+ // that the presented peer certificate has not been revoked by one of the included CRLs. Note
411
+ // that if a CRL is provided for any certificate authority in a trust chain, a CRL must be
412
+ // provided for all certificate authorities in that chain. Failure to do so will result in
413
+ // verification failure for both revoked and unrevoked certificates from that chain.
414
+ // The behavior of requiring all certificates to contain CRLs can be altered by
415
+ // setting :ref:`only_verify_leaf_cert_crl <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.only_verify_leaf_cert_crl>`
416
+ // true. If set to true, only the final certificate in the chain undergoes CRL verification.
417
+ //
418
+ // See :ref:`the TLS overview <arch_overview_ssl_enabling_verification>` for a list of common
419
+ // system CA locations.
420
+ //
421
+ // If ``trusted_ca`` is a filesystem path, a watch will be added to the parent
422
+ // directory for any file moves to support rotation. This currently only
423
+ // applies to dynamic secrets, when the ``CertificateValidationContext`` is
424
+ // delivered via SDS.
425
+ //
426
+ // X509_V_FLAG_PARTIAL_CHAIN is set by default, so non-root/intermediate ca certificate in ``trusted_ca``
427
+ // can be treated as trust anchor as well. It allows verification with building valid partial chain instead
428
+ // of a full chain.
429
+ //
430
+ // If ``ca_certificate_provider_instance`` is set, it takes precedence over ``trusted_ca``.
431
+ config.core.v3.DataSource trusted_ca = 1
432
+ [(udpa.annotations.field_migrate).oneof_promotion = "ca_cert_source"];
433
+
434
+ // Certificate provider instance for fetching TLS certificates.
435
+ //
436
+ // If set, takes precedence over ``trusted_ca``.
437
+ // [#not-implemented-hide:]
438
+ CertificateProviderPluginInstance ca_certificate_provider_instance = 13
439
+ [(udpa.annotations.field_migrate).oneof_promotion = "ca_cert_source"];
440
+
441
+ // Use system root certs for validation.
442
+ // If present, system root certs are used only if neither of the ``trusted_ca``
443
+ // or ``ca_certificate_provider_instance`` fields are set.
444
+ // [#not-implemented-hide:]
445
+ SystemRootCerts system_root_certs = 17;
446
+
447
+ // If specified, updates of a file-based ``trusted_ca`` source will be triggered
448
+ // by this watch. This allows explicit control over the path watched, by
449
+ // default the parent directory of the filesystem path in ``trusted_ca`` is
450
+ // watched if this field is not specified. This only applies when a
451
+ // ``CertificateValidationContext`` is delivered by SDS with references to
452
+ // filesystem paths. See the :ref:`SDS key rotation <sds_key_rotation>`
453
+ // documentation for further details.
454
+ config.core.v3.WatchedDirectory watched_directory = 11;
455
+
456
+ // An optional list of base64-encoded SHA-256 hashes. If specified, Envoy will verify that the
457
+ // SHA-256 of the DER-encoded Subject Public Key Information (SPKI) of the presented certificate
458
+ // matches one of the specified values.
459
+ //
460
+ // A base64-encoded SHA-256 of the Subject Public Key Information (SPKI) of the certificate
461
+ // can be generated with the following command:
462
+ //
463
+ // .. code-block:: bash
464
+ //
465
+ // $ openssl x509 -in path/to/client.crt -noout -pubkey
466
+ // | openssl pkey -pubin -outform DER
467
+ // | openssl dgst -sha256 -binary
468
+ // | openssl enc -base64
469
+ // NvqYIYSbgK2vCJpQhObf77vv+bQWtc5ek5RIOwPiC9A=
470
+ //
471
+ // This is the format used in HTTP Public Key Pinning.
472
+ //
473
+ // When both:
474
+ // :ref:`verify_certificate_hash
475
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.verify_certificate_hash>` and
476
+ // :ref:`verify_certificate_spki
477
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.verify_certificate_spki>` are specified,
478
+ // a hash matching value from either of the lists will result in the certificate being accepted.
479
+ //
480
+ // .. attention::
481
+ //
482
+ // This option is preferred over :ref:`verify_certificate_hash
483
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.verify_certificate_hash>`,
484
+ // because SPKI is tied to a private key, so it doesn't change when the certificate
485
+ // is renewed using the same private key.
486
+ repeated string verify_certificate_spki = 3
487
+ [(validate.rules).repeated = {items {string {min_len: 44 max_bytes: 44}}}];
488
+
489
+ // An optional list of hex-encoded SHA-256 hashes. If specified, Envoy will verify that
490
+ // the SHA-256 of the DER-encoded presented certificate matches one of the specified values.
491
+ //
492
+ // A hex-encoded SHA-256 of the certificate can be generated with the following command:
493
+ //
494
+ // .. code-block:: bash
495
+ //
496
+ // $ openssl x509 -in path/to/client.crt -outform DER | openssl dgst -sha256 | cut -d" " -f2
497
+ // df6ff72fe9116521268f6f2dd4966f51df479883fe7037b39f75916ac3049d1a
498
+ //
499
+ // A long hex-encoded and colon-separated SHA-256 (a.k.a. "fingerprint") of the certificate
500
+ // can be generated with the following command:
501
+ //
502
+ // .. code-block:: bash
503
+ //
504
+ // $ openssl x509 -in path/to/client.crt -noout -fingerprint -sha256 | cut -d"=" -f2
505
+ // DF:6F:F7:2F:E9:11:65:21:26:8F:6F:2D:D4:96:6F:51:DF:47:98:83:FE:70:37:B3:9F:75:91:6A:C3:04:9D:1A
506
+ //
507
+ // Both of those formats are acceptable.
508
+ //
509
+ // When both:
510
+ // :ref:`verify_certificate_hash
511
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.verify_certificate_hash>` and
512
+ // :ref:`verify_certificate_spki
513
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.verify_certificate_spki>` are specified,
514
+ // a hash matching value from either of the lists will result in the certificate being accepted.
515
+ repeated string verify_certificate_hash = 2
516
+ [(validate.rules).repeated = {items {string {min_len: 64 max_bytes: 95}}}];
517
+
518
+ // An optional list of Subject Alternative name matchers. If specified, Envoy will verify that the
519
+ // Subject Alternative Name of the presented certificate matches one of the specified matchers.
520
+ // The matching uses "any" semantics, that is to say, the SAN is verified if at least one matcher is
521
+ // matched.
522
+ //
523
+ // When a certificate has wildcard DNS SAN entries, to match a specific client, it should be
524
+ // configured with exact match type in the :ref:`string matcher <envoy_v3_api_msg_type.matcher.v3.StringMatcher>`.
525
+ // For example if the certificate has "\*.example.com" as DNS SAN entry, to allow only "api.example.com",
526
+ // it should be configured as shown below.
527
+ //
528
+ // .. code-block:: yaml
529
+ //
530
+ // match_typed_subject_alt_names:
531
+ // - san_type: DNS
532
+ // matcher:
533
+ // exact: "api.example.com"
534
+ //
535
+ // .. attention::
536
+ //
537
+ // Subject Alternative Names are easily spoofable and verifying only them is insecure,
538
+ // therefore this option must be used together with :ref:`trusted_ca
539
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.trusted_ca>`.
540
+ repeated SubjectAltNameMatcher match_typed_subject_alt_names = 15;
541
+
542
+ // This field is deprecated in favor of
543
+ // :ref:`match_typed_subject_alt_names
544
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.match_typed_subject_alt_names>`.
545
+ // Note that if both this field and :ref:`match_typed_subject_alt_names
546
+ // <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.match_typed_subject_alt_names>`
547
+ // are specified, the former (deprecated field) is ignored.
548
+ repeated type.matcher.v3.StringMatcher match_subject_alt_names = 9
549
+ [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
550
+
551
+ // [#not-implemented-hide:] Must present signed certificate time-stamp.
552
+ google.protobuf.BoolValue require_signed_certificate_timestamp = 6;
553
+
554
+ // An optional `certificate revocation list
555
+ // <https://en.wikipedia.org/wiki/Certificate_revocation_list>`_
556
+ // (in PEM format). If specified, Envoy will verify that the presented peer
557
+ // certificate has not been revoked by this CRL. If this DataSource contains
558
+ // multiple CRLs, all of them will be used. Note that if a CRL is provided
559
+ // for any certificate authority in a trust chain, a CRL must be provided
560
+ // for all certificate authorities in that chain. Failure to do so will
561
+ // result in verification failure for both revoked and unrevoked certificates
562
+ // from that chain. This default behavior can be altered by setting
563
+ // :ref:`only_verify_leaf_cert_crl <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.only_verify_leaf_cert_crl>` to
564
+ // true.
565
+ //
566
+ // If ``crl`` is a filesystem path, a watch will be added to the parent
567
+ // directory for any file moves to support rotation. This currently only
568
+ // applies to dynamic secrets, when the ``CertificateValidationContext`` is
569
+ // delivered via SDS.
570
+ config.core.v3.DataSource crl = 7;
571
+
572
+ // If specified, Envoy will not reject expired certificates.
573
+ bool allow_expired_certificate = 8;
574
+
575
+ // Certificate trust chain verification mode.
576
+ TrustChainVerification trust_chain_verification = 10
577
+ [(validate.rules).enum = {defined_only: true}];
578
+
579
+ // The configuration of an extension specific certificate validator.
580
+ // If specified, all validation is done by the specified validator,
581
+ // and the behavior of all other validation settings is defined by the specified validator (and may be entirely ignored, unused, and unvalidated).
582
+ // Refer to the documentation for the specified validator. If you do not want a custom validation algorithm, do not set this field.
583
+ // [#extension-category: envoy.tls.cert_validator]
584
+ config.core.v3.TypedExtensionConfig custom_validator_config = 12;
585
+
586
+ // If this option is set to true, only the certificate at the end of the
587
+ // certificate chain will be subject to validation by :ref:`CRL <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.crl>`.
588
+ bool only_verify_leaf_cert_crl = 14;
589
+
590
+ // Defines maximum depth of a certificate chain accepted in verification, the default limit is 100, though this can be system-dependent.
591
+ // This number does not include the leaf but includes the trust anchor, so a depth of 1 allows the leaf and one CA certificate. If a trusted issuer
592
+ // appears in the chain, but in a depth larger than configured, the certificate validation will fail.
593
+ // This matches the semantics of ``SSL_CTX_set_verify_depth`` in OpenSSL 1.0.x and older versions of BoringSSL. It differs from ``SSL_CTX_set_verify_depth``
594
+ // in OpenSSL 1.1.x and newer versions of BoringSSL in that the trust anchor is included.
595
+ // Trusted issues are specified by setting :ref:`trusted_ca <envoy_v3_api_field_extensions.transport_sockets.tls.v3.CertificateValidationContext.trusted_ca>`
596
+ google.protobuf.UInt32Value max_verify_depth = 16 [(validate.rules).uint32 = {lte: 100}];
597
+ }
@@ -0,0 +1,61 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.extensions.transport_sockets.tls.v3;
4
+
5
+ import "envoy/config/core/v3/base.proto";
6
+ import "envoy/config/core/v3/config_source.proto";
7
+ import "envoy/extensions/transport_sockets/tls/v3/common.proto";
8
+
9
+ import "udpa/annotations/sensitive.proto";
10
+ import "udpa/annotations/status.proto";
11
+ import "udpa/annotations/versioning.proto";
12
+ import "validate/validate.proto";
13
+
14
+ option java_package = "io.envoyproxy.envoy.extensions.transport_sockets.tls.v3";
15
+ option java_outer_classname = "SecretProto";
16
+ option java_multiple_files = true;
17
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/transport_sockets/tls/v3;tlsv3";
18
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
19
+
20
+ // [#protodoc-title: Secrets configuration]
21
+
22
+ message GenericSecret {
23
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.auth.GenericSecret";
24
+
25
+ // Secret of generic type and is available to filters. It is expected
26
+ // that only only one of secret and secrets is set.
27
+ config.core.v3.DataSource secret = 1 [(udpa.annotations.sensitive) = true];
28
+
29
+ // For cases where multiple associated secrets need to be distributed together. It is expected
30
+ // that only only one of secret and secrets is set.
31
+ map<string, config.core.v3.DataSource> secrets = 2 [(udpa.annotations.sensitive) = true];
32
+ }
33
+
34
+ message SdsSecretConfig {
35
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.auth.SdsSecretConfig";
36
+
37
+ // Name by which the secret can be uniquely referred to. When both name and config are specified,
38
+ // then secret can be fetched and/or reloaded via SDS. When only name is specified, then secret
39
+ // will be loaded from static resources.
40
+ string name = 1 [(validate.rules).string = {min_len: 1}];
41
+
42
+ config.core.v3.ConfigSource sds_config = 2;
43
+ }
44
+
45
+ // [#next-free-field: 6]
46
+ message Secret {
47
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.auth.Secret";
48
+
49
+ // Name (FQDN, UUID, SPKI, SHA256, etc.) by which the secret can be uniquely referred to.
50
+ string name = 1;
51
+
52
+ oneof type {
53
+ TlsCertificate tls_certificate = 2;
54
+
55
+ TlsSessionTicketKeys session_ticket_keys = 3;
56
+
57
+ CertificateValidationContext validation_context = 4;
58
+
59
+ GenericSecret generic_secret = 5;
60
+ }
61
+ }