grpc 1.80.0 → 1.81.0

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 (889) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +301 -292
  3. data/include/grpc/context_types.h +28 -0
  4. data/include/grpc/credentials.h +11 -0
  5. data/include/grpc/grpc_security_constants.h +12 -0
  6. data/include/grpc/module.modulemap +1 -0
  7. data/src/core/call/call_spine.h +29 -6
  8. data/src/core/call/client_call.cc +2 -2
  9. data/src/core/call/client_call.h +6 -0
  10. data/src/core/call/interception_chain.h +12 -1
  11. data/src/core/call/metadata_batch.h +37 -2
  12. data/src/core/call/server_call.h +4 -0
  13. data/src/core/client_channel/client_channel.cc +2 -1
  14. data/src/core/client_channel/client_channel_filter.cc +2 -2
  15. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +8 -0
  16. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.h +9 -2
  17. data/src/core/credentials/transport/tls/ssl_utils.cc +4 -0
  18. data/src/core/credentials/transport/tls/ssl_utils.h +3 -0
  19. data/src/core/credentials/transport/tls/tls_security_connector.cc +3 -2
  20. data/src/core/ext/filters/http/client_authority_filter.cc +4 -0
  21. data/src/core/ext/filters/http/http_filters_plugin.cc +6 -0
  22. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1 -1
  23. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +7 -0
  24. data/src/core/ext/transport/chttp2/transport/frame.cc +1 -1
  25. data/src/core/ext/transport/chttp2/transport/frame.h +1 -1
  26. data/src/core/ext/transport/chttp2/transport/frame_security.cc +3 -1
  27. data/src/core/ext/transport/chttp2/transport/header_assembler.h +8 -8
  28. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +112 -155
  29. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +38 -37
  30. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +11 -1
  31. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +0 -38
  32. data/src/core/ext/transport/chttp2/transport/http2_transport.h +30 -37
  33. data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +74 -5
  34. data/src/core/ext/transport/chttp2/transport/internal.h +1 -0
  35. data/src/core/ext/transport/chttp2/transport/parsing.cc +4 -1
  36. data/src/core/ext/transport/chttp2/transport/security_frame.h +1 -1
  37. data/src/core/ext/transport/chttp2/transport/stream.h +29 -11
  38. data/src/core/ext/transport/chttp2/transport/transport_common.cc +3 -0
  39. data/src/core/ext/transport/chttp2/transport/writable_streams.h +2 -77
  40. data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c +11 -93
  41. data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c +15 -129
  42. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +4 -30
  43. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +4 -54
  44. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +4 -28
  45. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +15 -133
  46. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +2 -12
  47. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +2 -12
  48. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +1 -11
  49. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +1 -7
  50. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +1 -7
  51. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +2 -46
  52. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +1 -5
  53. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +1 -5
  54. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +10 -80
  55. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +18 -162
  56. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +2 -18
  57. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +16 -148
  58. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +1 -5
  59. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +1 -35
  60. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +13 -101
  61. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c +1 -7
  62. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +6 -48
  63. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +29 -207
  64. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c +1 -7
  65. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +5 -59
  66. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +1 -5
  67. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +1 -5
  68. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +2 -12
  69. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +11 -111
  70. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +9 -97
  71. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +1 -7
  72. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +1 -7
  73. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +10 -130
  74. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +4 -26
  75. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +2 -12
  76. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +1 -7
  77. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +2 -16
  78. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +2 -16
  79. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +4 -28
  80. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +6 -64
  81. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +9 -53
  82. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +4 -52
  83. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +6 -68
  84. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +1 -19
  85. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +1 -11
  86. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +8 -52
  87. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +11 -59
  88. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +11 -93
  89. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +2 -40
  90. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +48 -550
  91. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +3 -21
  92. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +10 -80
  93. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +1 -7
  94. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +1 -5
  95. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +1 -7
  96. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +1 -7
  97. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +1 -11
  98. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +1 -7
  99. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +2 -12
  100. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +1 -19
  101. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +16 -182
  102. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +2 -12
  103. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb.h +240 -0
  104. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb_minitable.c +78 -0
  105. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb_minitable.h +34 -0
  106. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +3 -23
  107. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb.h +73 -0
  108. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb_minitable.c +42 -0
  109. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb_minitable.h +32 -0
  110. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb.h +431 -0
  111. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb_minitable.c +111 -0
  112. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb_minitable.h +38 -0
  113. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +2 -30
  114. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +3 -23
  115. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +1 -11
  116. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +2 -24
  117. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +2 -14
  118. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +19 -187
  119. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c +1 -5
  120. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +1 -11
  121. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +3 -25
  122. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +1 -5
  123. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +1 -11
  124. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +7 -71
  125. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +3 -21
  126. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +6 -70
  127. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +2 -10
  128. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +2 -26
  129. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +13 -123
  130. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +2 -18
  131. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +5 -53
  132. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +2 -18
  133. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +2 -12
  134. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.c +1 -5
  135. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +1 -7
  136. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +5 -25
  137. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +2 -16
  138. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +1 -7
  139. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +2 -2
  140. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +1 -5
  141. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +2 -14
  142. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +2 -24
  143. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +2 -12
  144. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +3 -21
  145. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +3 -23
  146. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +5 -37
  147. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +2 -12
  148. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +1 -5
  149. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +2 -8
  150. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +4 -16
  151. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +2 -14
  152. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +1 -7
  153. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +1 -5
  154. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +11 -91
  155. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +16 -140
  156. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +3 -33
  157. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +1 -7
  158. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +1 -7
  159. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +1 -0
  160. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +27 -410
  161. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +1 -7
  162. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +5 -17
  163. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +1 -7
  164. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +9 -37
  165. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +1 -7
  166. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +34 -310
  167. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +3 -23
  168. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +11 -83
  169. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +8 -46
  170. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +7 -45
  171. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +2 -18
  172. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +12 -108
  173. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +3 -17
  174. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +2 -10
  175. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +7 -61
  176. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +3 -25
  177. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +8 -72
  178. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +3 -19
  179. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +1 -7
  180. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +1 -7
  181. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +1 -5
  182. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +54 -234
  183. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +3 -19
  184. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +1 -7
  185. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +4 -22
  186. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +1 -5
  187. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +1 -5
  188. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +1 -5
  189. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +2 -14
  190. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +1 -7
  191. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +1 -5
  192. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +1 -7
  193. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +2 -18
  194. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +1 -7
  195. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +12 -12
  196. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +1 -7
  197. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +1 -7
  198. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +2 -10
  199. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +2 -12
  200. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +8 -58
  201. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +6 -30
  202. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +1 -7
  203. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +2 -24
  204. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +1 -11
  205. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +4 -16
  206. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +1 -5
  207. data/src/core/ext/upbdefs-gen/envoy/extensions/common/matching/v3/extension_matcher.upbdefs.c +110 -0
  208. data/src/core/ext/upbdefs-gen/envoy/extensions/common/matching/v3/extension_matcher.upbdefs.h +42 -0
  209. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upbdefs.c +60 -0
  210. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upbdefs.h +37 -0
  211. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/composite/v3/composite.upbdefs.c +138 -0
  212. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/composite/v3/composite.upbdefs.h +52 -0
  213. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +734 -731
  214. data/src/core/filter/composite/composite_filter.cc +227 -0
  215. data/src/core/filter/composite/composite_filter.h +154 -0
  216. data/src/core/filter/filter_args.h +4 -0
  217. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +163 -41
  218. data/src/core/handshaker/security/pipelining_heuristic_selector.h +151 -0
  219. data/src/core/handshaker/security/secure_endpoint.cc +24 -8
  220. data/src/core/lib/channel/connected_channel.cc +13 -0
  221. data/src/core/lib/channel/promise_based_filter.h +267 -0
  222. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +3 -2
  223. data/src/core/lib/event_engine/extensions/blocking_dns.h +1 -1
  224. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +4 -0
  225. data/src/core/lib/event_engine/windows/windows_engine.cc +11 -3
  226. data/src/core/lib/experiments/experiments.cc +120 -117
  227. data/src/core/lib/experiments/experiments.h +71 -58
  228. data/src/core/lib/promise/detail/promise_factory.h +16 -5
  229. data/src/core/lib/promise/detail/promise_like.h +19 -1
  230. data/src/core/lib/promise/inter_activity_latch.h +5 -8
  231. data/src/core/lib/promise/inter_activity_pipe.h +193 -0
  232. data/src/core/lib/promise/sleep.cc +5 -9
  233. data/src/core/lib/resource_quota/arena.h +1 -1
  234. data/src/core/lib/surface/call.cc +43 -6
  235. data/src/core/lib/surface/call.h +6 -0
  236. data/src/core/lib/surface/call_utils.cc +42 -3
  237. data/src/core/lib/surface/call_utils.h +30 -11
  238. data/src/core/lib/surface/channel_stack_type.cc +8 -0
  239. data/src/core/lib/surface/channel_stack_type.h +4 -0
  240. data/src/core/lib/surface/completion_queue.cc +15 -12
  241. data/src/core/lib/surface/filter_stack_call.h +5 -0
  242. data/src/core/lib/surface/legacy_channel.cc +1 -22
  243. data/src/core/lib/surface/legacy_channel.h +1 -3
  244. data/src/core/lib/surface/version.cc +2 -2
  245. data/src/core/lib/transport/bdp_estimator.cc +6 -3
  246. data/src/core/lib/transport/promise_endpoint.h +13 -17
  247. data/src/core/load_balancing/endpoint_list.cc +0 -8
  248. data/src/core/load_balancing/pick_first/pick_first.cc +5 -14
  249. data/src/core/load_balancing/xds/cds.cc +100 -122
  250. data/src/core/load_balancing/xds/cds.h +58 -0
  251. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
  252. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +1 -1
  253. data/src/core/server/server.cc +19 -35
  254. data/src/core/server/server.h +9 -17
  255. data/src/core/server/xds_server_config_fetcher.cc +0 -24
  256. data/src/core/telemetry/metrics.cc +26 -0
  257. data/src/core/transport/session_endpoint.cc +314 -0
  258. data/src/core/transport/session_endpoint.h +85 -0
  259. data/src/core/tsi/ssl_transport_security.cc +137 -100
  260. data/src/core/tsi/ssl_transport_security.h +8 -0
  261. data/src/core/tsi/ssl_transport_security_utils.cc +25 -1
  262. data/src/core/tsi/ssl_transport_security_utils.h +4 -0
  263. data/src/core/util/sorted_pack.h +69 -44
  264. data/src/core/util/string.cc +8 -0
  265. data/src/core/util/string.h +11 -0
  266. data/src/core/util/table.h +38 -102
  267. data/src/core/util/time_precise.cc +42 -1
  268. data/src/core/util/useful.h +0 -91
  269. data/src/core/util/windows/string_util.cc +4 -2
  270. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +27 -15
  271. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +148 -69
  272. data/src/core/xds/grpc/xds_bootstrap_grpc.h +12 -0
  273. data/src/core/xds/grpc/xds_client_grpc.cc +1 -1
  274. data/src/core/xds/grpc/xds_cluster.cc +54 -37
  275. data/src/core/xds/grpc/xds_cluster.h +0 -1
  276. data/src/core/xds/grpc/xds_common_types.cc +59 -34
  277. data/src/core/xds/grpc/xds_common_types_parser.cc +33 -3
  278. data/src/core/xds/grpc/xds_common_types_parser.h +5 -1
  279. data/src/core/xds/grpc/xds_endpoint.cc +44 -24
  280. data/src/core/xds/grpc/xds_health_status.cc +10 -6
  281. data/src/core/xds/grpc/xds_http_composite_filter.cc +302 -0
  282. data/src/core/xds/grpc/xds_http_composite_filter.h +84 -0
  283. data/src/core/xds/grpc/xds_http_filter_registry.cc +34 -2
  284. data/src/core/xds/grpc/xds_http_filter_registry.h +4 -0
  285. data/src/core/xds/grpc/xds_http_rbac_filter.cc +21 -10
  286. data/src/core/xds/grpc/xds_listener.cc +98 -59
  287. data/src/core/xds/grpc/xds_listener_parser.cc +64 -26
  288. data/src/core/xds/grpc/xds_matcher.cc +92 -49
  289. data/src/core/xds/grpc/xds_metadata.cc +40 -7
  290. data/src/core/xds/grpc/xds_metadata.h +3 -10
  291. data/src/core/xds/grpc/xds_route_config.cc +171 -100
  292. data/src/core/xds/grpc/xds_server_grpc.cc +27 -18
  293. data/src/ruby/bin/math_pb.rb +1 -1
  294. data/src/ruby/ext/grpc/extconf.rb +1 -15
  295. data/src/ruby/ext/grpc/rb_call_credentials.c +1 -0
  296. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  297. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  298. data/src/ruby/lib/grpc/version.rb +1 -1
  299. data/src/ruby/pb/generate_proto_ruby.sh +1 -1
  300. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -1
  301. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -1
  302. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -1
  303. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -1
  304. data/src/ruby/spec/client_server_spec.rb +40 -0
  305. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bn/convert.cc +47 -31
  306. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bn/exponentiation.cc +35 -17
  307. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bytestring/cbb.cc +8 -14
  308. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/derive_key.cc +15 -13
  309. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_arm_linux.cc +5 -28
  310. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_arm_linux.h +9 -11
  311. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/dh/dh_asn1.cc +14 -13
  312. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/dsa/dsa.cc +34 -30
  313. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/dsa/dsa_asn1.cc +35 -23
  314. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/ec/ec_asn1.cc +63 -47
  315. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/ec/hash_to_curve.cc +68 -60
  316. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/ecdsa/ecdsa_asn1.cc +17 -11
  317. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/evp_asn1.cc +11 -10
  318. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/evp_ctx.cc +11 -10
  319. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_dsa_asn1.cc +6 -6
  320. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_ec_asn1.cc +6 -6
  321. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_ed25519_asn1.cc +6 -6
  322. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_rsa_asn1.cc +6 -6
  323. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_x25519_asn1.cc +6 -6
  324. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/sign.cc +42 -23
  325. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/div.cc.inc +79 -0
  326. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/exponentiation.cc.inc +6 -5
  327. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/gcd.cc.inc +80 -58
  328. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/gcd_extra.cc.inc +45 -29
  329. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/jacobi.cc.inc +16 -7
  330. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/montgomery.cc.inc +24 -10
  331. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/mul.cc.inc +34 -24
  332. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/prime.cc.inc +154 -102
  333. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/shift.cc.inc +8 -3
  334. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/sqrt.cc.inc +78 -1
  335. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/dh/check.cc.inc +53 -35
  336. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/dh/dh.cc.inc +76 -57
  337. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/digest/digest.cc.inc +10 -4
  338. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/ec.cc.inc +5 -3
  339. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rsa/padding.cc.inc +26 -19
  340. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rsa/rsa.cc.inc +7 -7
  341. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rsa/rsa_impl.cc.inc +138 -117
  342. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/self_check/self_check.cc.inc +30 -22
  343. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/obj/obj.cc +8 -2
  344. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_lib.cc +13 -8
  345. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pkcs7/pkcs7.cc +6 -5
  346. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pkcs7/pkcs7_x509.cc +3 -6
  347. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pkcs8/p5_pbev2.cc +14 -9
  348. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pkcs8/pkcs8.cc +29 -19
  349. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pkcs8/pkcs8_x509.cc +39 -34
  350. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rsa/rsa_crypt.cc +22 -14
  351. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/a_sign.cc +5 -3
  352. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/asn1_gen.cc +12 -8
  353. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_conf.cc +24 -16
  354. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_info.cc +21 -18
  355. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_x509.cc +57 -52
  356. data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_x509a.cc +32 -16
  357. data/third_party/boringssl-with-bazel/{src/include → include}/openssl/bytestring.h +0 -6
  358. data/third_party/boringssl-with-bazel/{src/ssl → ssl}/handoff.cc +12 -12
  359. data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_asn1.cc +3 -2
  360. data/third_party/upb/upb/base/string_view.h +7 -3
  361. data/third_party/upb/upb/generated_code_support.h +17 -1
  362. data/third_party/upb/upb/hash/common.c +2 -1
  363. data/third_party/upb/upb/mem/alloc.c +2 -1
  364. data/third_party/upb/upb/mem/alloc.h +25 -6
  365. data/third_party/upb/upb/mem/arena.c +225 -73
  366. data/third_party/upb/upb/mem/arena.h +56 -0
  367. data/third_party/upb/upb/mem/arena.hpp +6 -0
  368. data/third_party/upb/upb/mem/internal/arena.h +69 -56
  369. data/third_party/upb/upb/message/accessors.h +4 -0
  370. data/third_party/upb/upb/message/array.h +3 -0
  371. data/third_party/upb/upb/message/copy.c +1 -1
  372. data/third_party/upb/upb/message/internal/accessors.h +10 -0
  373. data/third_party/upb/upb/message/internal/array.h +34 -3
  374. data/third_party/upb/upb/message/internal/message.h +23 -9
  375. data/third_party/upb/upb/mini_descriptor/decode.c +127 -66
  376. data/third_party/upb/upb/mini_descriptor/decode.h +6 -2
  377. data/third_party/upb/upb/mini_descriptor/internal/encode.hpp +2 -0
  378. data/third_party/upb/upb/mini_descriptor/link.c +11 -0
  379. data/third_party/upb/upb/mini_table/extension.h +7 -0
  380. data/third_party/upb/upb/mini_table/extension_registry.c +10 -1
  381. data/third_party/upb/upb/mini_table/extension_registry.h +1 -0
  382. data/third_party/upb/upb/mini_table/internal/extension.h +10 -0
  383. data/third_party/upb/upb/mini_table/internal/field.h +1 -1
  384. data/third_party/upb/upb/mini_table/internal/message.h +69 -9
  385. data/third_party/upb/upb/mini_table/message.c +0 -38
  386. data/third_party/upb/upb/mini_table/message.h +5 -1
  387. data/third_party/upb/upb/port/def.inc +140 -111
  388. data/third_party/upb/upb/port/sanitizers.h +179 -0
  389. data/third_party/upb/upb/port/undef.inc +19 -9
  390. data/third_party/upb/upb/reflection/enum_def.c +7 -3
  391. data/third_party/upb/upb/reflection/enum_def.h +1 -0
  392. data/third_party/upb/upb/reflection/field_def.h +1 -0
  393. data/third_party/upb/upb/reflection/file_def.c +1 -1
  394. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  395. data/third_party/upb/upb/reflection/message_def.c +29 -2
  396. data/third_party/upb/upb/reflection/message_def.h +2 -0
  397. data/third_party/upb/upb/text/internal/encode.c +5 -5
  398. data/third_party/upb/upb/wire/decode.c +190 -239
  399. data/third_party/upb/upb/wire/decode.h +14 -5
  400. data/third_party/upb/upb/wire/decode_fast/combinations.h +217 -0
  401. data/third_party/upb/upb/wire/decode_fast/data.h +74 -0
  402. data/third_party/upb/upb/wire/decode_fast/select.c +235 -0
  403. data/third_party/upb/upb/wire/decode_fast/select.h +66 -0
  404. data/third_party/upb/upb/wire/encode.c +332 -203
  405. data/third_party/upb/upb/wire/encode.h +3 -6
  406. data/third_party/upb/upb/wire/eps_copy_input_stream.h +64 -6
  407. data/third_party/upb/upb/wire/internal/decoder.c +43 -0
  408. data/third_party/upb/upb/wire/internal/decoder.h +73 -35
  409. data/third_party/upb/upb/wire/internal/reader.h +28 -9
  410. data/third_party/upb/upb/wire/reader.c +20 -2
  411. data/third_party/upb/upb/wire/reader.h +29 -19
  412. data/third_party/upb/upb/wire/writer.h +20 -0
  413. data/third_party/utf8_range/utf8_range.c +6 -6
  414. data/third_party/utf8_range/utf8_range_neon.inc +1 -1
  415. data/third_party/utf8_range/utf8_range_sse.inc +1 -1
  416. metadata +559 -531
  417. data/third_party/boringssl-with-bazel/src/crypto/bn/div.cc +0 -100
  418. data/third_party/boringssl-with-bazel/src/crypto/bn/sqrt.cc +0 -93
  419. data/third_party/upb/upb/wire/internal/decode_fast.c +0 -1000
  420. data/third_party/upb/upb/wire/internal/decode_fast.h +0 -152
  421. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/aes/aes.cc +0 -0
  422. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_bitstr.cc +0 -0
  423. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_bool.cc +0 -0
  424. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_d2i_fp.cc +0 -0
  425. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_dup.cc +0 -0
  426. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_gentm.cc +0 -0
  427. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_i2d_fp.cc +0 -0
  428. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_int.cc +0 -0
  429. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_mbstr.cc +0 -0
  430. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_object.cc +0 -0
  431. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_octet.cc +0 -0
  432. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_strex.cc +0 -0
  433. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_strnid.cc +0 -0
  434. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_time.cc +0 -0
  435. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_type.cc +0 -0
  436. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/a_utctm.cc +0 -0
  437. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/asn1_lib.cc +0 -0
  438. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/asn1_par.cc +0 -0
  439. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/asn_pack.cc +0 -0
  440. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/f_int.cc +0 -0
  441. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/f_string.cc +0 -0
  442. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/internal.h +0 -0
  443. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/posix_time.cc +0 -0
  444. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/tasn_dec.cc +0 -0
  445. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/tasn_enc.cc +0 -0
  446. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/tasn_fre.cc +0 -0
  447. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/tasn_new.cc +0 -0
  448. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/tasn_typ.cc +0 -0
  449. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/asn1/tasn_utl.cc +0 -0
  450. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/base64/base64.cc +0 -0
  451. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bcm_support.h +0 -0
  452. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/bio.cc +0 -0
  453. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/bio_mem.cc +0 -0
  454. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/connect.cc +0 -0
  455. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/errno.cc +0 -0
  456. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/fd.cc +0 -0
  457. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/file.cc +0 -0
  458. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/hexdump.cc +0 -0
  459. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/internal.h +0 -0
  460. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/pair.cc +0 -0
  461. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/printf.cc +0 -0
  462. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/socket.cc +0 -0
  463. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bio/socket_helper.cc +0 -0
  464. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/blake2/blake2.cc +0 -0
  465. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bn/bn_asn1.cc +0 -0
  466. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/buf/buf.cc +0 -0
  467. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bytestring/asn1_compat.cc +0 -0
  468. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bytestring/ber.cc +0 -0
  469. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bytestring/cbs.cc +0 -0
  470. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bytestring/internal.h +0 -0
  471. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/bytestring/unicode.cc +0 -0
  472. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/chacha/chacha.cc +0 -0
  473. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/chacha/internal.h +0 -0
  474. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_aesctrhmac.cc +0 -0
  475. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_aeseax.cc +0 -0
  476. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_aesgcmsiv.cc +0 -0
  477. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_chacha20poly1305.cc +0 -0
  478. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_des.cc +0 -0
  479. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_null.cc +0 -0
  480. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_rc2.cc +0 -0
  481. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_rc4.cc +0 -0
  482. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/e_tls.cc +0 -0
  483. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/get_cipher.cc +0 -0
  484. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/internal.h +0 -0
  485. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cipher/tls_cbc.cc +0 -0
  486. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cms/cms.cc +0 -0
  487. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/conf/conf.cc +0 -0
  488. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/conf/internal.h +0 -0
  489. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_aarch64_apple.cc +0 -0
  490. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_aarch64_fuchsia.cc +0 -0
  491. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_aarch64_linux.cc +0 -0
  492. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_aarch64_openbsd.cc +0 -0
  493. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_aarch64_sysreg.cc +0 -0
  494. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_aarch64_win.cc +0 -0
  495. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_arm_freebsd.cc +0 -0
  496. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/cpu_intel.cc +0 -0
  497. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/crypto.cc +0 -0
  498. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/curve25519/curve25519.cc +0 -0
  499. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/curve25519/curve25519_64_adx.cc +0 -0
  500. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/curve25519/curve25519_tables.h +0 -0
  501. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/curve25519/internal.h +0 -0
  502. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/curve25519/spake25519.cc +0 -0
  503. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/des/des.cc +0 -0
  504. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/des/internal.h +0 -0
  505. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/dh/params.cc +0 -0
  506. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/digest/digest_extra.cc +0 -0
  507. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/dsa/internal.h +0 -0
  508. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/ec/ec_derive.cc +0 -0
  509. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/ec/internal.h +0 -0
  510. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/ecdh/ecdh.cc +0 -0
  511. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/engine/engine.cc +0 -0
  512. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/err/err.cc +0 -0
  513. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/err/internal.h +0 -0
  514. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/evp.cc +0 -0
  515. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/internal.h +0 -0
  516. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_dh.cc +0 -0
  517. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_dh_asn1.cc +0 -0
  518. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_ec.cc +0 -0
  519. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_ed25519.cc +0 -0
  520. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_hkdf.cc +0 -0
  521. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_rsa.cc +0 -0
  522. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/p_x25519.cc +0 -0
  523. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/pbkdf.cc +0 -0
  524. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/print.cc +0 -0
  525. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/evp/scrypt.cc +0 -0
  526. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/ex_data.cc +0 -0
  527. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/aes.cc.inc +0 -0
  528. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/aes_nohw.cc.inc +0 -0
  529. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/cbc.cc.inc +0 -0
  530. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/cfb.cc.inc +0 -0
  531. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/ctr.cc.inc +0 -0
  532. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/gcm.cc.inc +0 -0
  533. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/gcm_nohw.cc.inc +0 -0
  534. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/internal.h +0 -0
  535. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/key_wrap.cc.inc +0 -0
  536. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/mode_wrappers.cc.inc +0 -0
  537. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/aes/ofb.cc.inc +0 -0
  538. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bcm.cc +0 -0
  539. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bcm_interface.h +0 -0
  540. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/add.cc.inc +0 -0
  541. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/asm/x86_64-gcc.cc.inc +0 -0
  542. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/bn.cc.inc +0 -0
  543. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/bytes.cc.inc +0 -0
  544. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/cmp.cc.inc +0 -0
  545. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/ctx.cc.inc +0 -0
  546. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/div_extra.cc.inc +0 -0
  547. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/generic.cc.inc +0 -0
  548. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/internal.h +0 -0
  549. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/montgomery_inv.cc.inc +0 -0
  550. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/random.cc.inc +0 -0
  551. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/rsaz_exp.cc.inc +0 -0
  552. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/bn/rsaz_exp.h +0 -0
  553. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/cipher/aead.cc.inc +0 -0
  554. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/cipher/cipher.cc.inc +0 -0
  555. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/cipher/e_aes.cc.inc +0 -0
  556. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/cipher/e_aesccm.cc.inc +0 -0
  557. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/cipher/internal.h +0 -0
  558. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/cmac/cmac.cc.inc +0 -0
  559. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/delocate.h +0 -0
  560. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/dh/internal.h +0 -0
  561. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/digest/digests.cc.inc +0 -0
  562. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/digest/internal.h +0 -0
  563. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/digest/md32_common.h +0 -0
  564. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/digestsign/digestsign.cc.inc +0 -0
  565. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/builtin_curves.h +0 -0
  566. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/ec_key.cc.inc +0 -0
  567. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/ec_montgomery.cc.inc +0 -0
  568. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/felem.cc.inc +0 -0
  569. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/internal.h +0 -0
  570. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/oct.cc.inc +0 -0
  571. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/p224-64.cc.inc +0 -0
  572. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/p256-nistz-table.h +0 -0
  573. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/p256-nistz.cc.inc +0 -0
  574. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/p256-nistz.h +0 -0
  575. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/p256.cc.inc +0 -0
  576. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/p256_table.h +0 -0
  577. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/scalar.cc.inc +0 -0
  578. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/simple.cc.inc +0 -0
  579. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/simple_mul.cc.inc +0 -0
  580. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/util.cc.inc +0 -0
  581. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ec/wnaf.cc.inc +0 -0
  582. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ecdh/ecdh.cc.inc +0 -0
  583. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ecdsa/ecdsa.cc.inc +0 -0
  584. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/ecdsa/internal.h +0 -0
  585. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/fips_shared_support.cc +0 -0
  586. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/hkdf/hkdf.cc.inc +0 -0
  587. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/hmac/hmac.cc.inc +0 -0
  588. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/keccak/internal.h +0 -0
  589. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/keccak/keccak.cc.inc +0 -0
  590. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/mldsa/fips_known_values.inc +0 -0
  591. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/mldsa/mldsa.cc.inc +0 -0
  592. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/mlkem/fips_known_values.inc +0 -0
  593. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/mlkem/mlkem.cc.inc +0 -0
  594. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rand/ctrdrbg.cc.inc +0 -0
  595. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rand/internal.h +0 -0
  596. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rand/rand.cc.inc +0 -0
  597. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rsa/blinding.cc.inc +0 -0
  598. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/rsa/internal.h +0 -0
  599. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/self_check/fips.cc.inc +0 -0
  600. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/service_indicator/internal.h +0 -0
  601. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/service_indicator/service_indicator.cc.inc +0 -0
  602. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/sha/internal.h +0 -0
  603. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/sha/sha1.cc.inc +0 -0
  604. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/sha/sha256.cc.inc +0 -0
  605. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/sha/sha512.cc.inc +0 -0
  606. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/address.h +0 -0
  607. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/fips_known_values.inc +0 -0
  608. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/fors.cc.inc +0 -0
  609. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/fors.h +0 -0
  610. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/merkle.cc.inc +0 -0
  611. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/merkle.h +0 -0
  612. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/params.h +0 -0
  613. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/slhdsa.cc.inc +0 -0
  614. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/thash.cc.inc +0 -0
  615. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/thash.h +0 -0
  616. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/wots.cc.inc +0 -0
  617. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/slhdsa/wots.h +0 -0
  618. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/tls/internal.h +0 -0
  619. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fipsmodule/tls/kdf.cc.inc +0 -0
  620. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/fuzzer_mode.cc +0 -0
  621. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/hpke/hpke.cc +0 -0
  622. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/hrss/hrss.cc +0 -0
  623. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/hrss/internal.h +0 -0
  624. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/internal.h +0 -0
  625. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/kyber/internal.h +0 -0
  626. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/kyber/kyber.cc +0 -0
  627. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/lhash/internal.h +0 -0
  628. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/lhash/lhash.cc +0 -0
  629. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/md4/md4.cc +0 -0
  630. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/md5/internal.h +0 -0
  631. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/md5/md5.cc +0 -0
  632. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/mem.cc +0 -0
  633. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/mldsa/mldsa.cc +0 -0
  634. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/mlkem/mlkem.cc +0 -0
  635. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/obj/obj_dat.h +0 -0
  636. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/obj/obj_xref.cc +0 -0
  637. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/internal.h +0 -0
  638. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_all.cc +0 -0
  639. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_info.cc +0 -0
  640. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_oth.cc +0 -0
  641. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_pk8.cc +0 -0
  642. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_pkey.cc +0 -0
  643. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_x509.cc +0 -0
  644. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pem/pem_xaux.cc +0 -0
  645. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pkcs7/internal.h +0 -0
  646. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pkcs8/internal.h +0 -0
  647. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/poly1305/internal.h +0 -0
  648. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/poly1305/poly1305.cc +0 -0
  649. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/poly1305/poly1305_arm.cc +0 -0
  650. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/poly1305/poly1305_vec.cc +0 -0
  651. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pool/internal.h +0 -0
  652. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/pool/pool.cc +0 -0
  653. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/deterministic.cc +0 -0
  654. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/fork_detect.cc +0 -0
  655. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/forkunsafe.cc +0 -0
  656. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/getentropy.cc +0 -0
  657. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/getrandom_fillin.h +0 -0
  658. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/internal.h +0 -0
  659. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/ios.cc +0 -0
  660. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/passive.cc +0 -0
  661. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/rand.cc +0 -0
  662. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/trusty.cc +0 -0
  663. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/urandom.cc +0 -0
  664. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rand/windows.cc +0 -0
  665. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rc4/rc4.cc +0 -0
  666. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/refcount.cc +0 -0
  667. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rsa/internal.h +0 -0
  668. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rsa/rsa_asn1.cc +0 -0
  669. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rsa/rsa_extra.cc +0 -0
  670. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/rsa/rsa_print.cc +0 -0
  671. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/sha/sha1.cc +0 -0
  672. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/sha/sha256.cc +0 -0
  673. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/sha/sha512.cc +0 -0
  674. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/siphash/siphash.cc +0 -0
  675. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/slhdsa/slhdsa.cc +0 -0
  676. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/spake2plus/internal.h +0 -0
  677. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/spake2plus/spake2plus.cc +0 -0
  678. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/stack/stack.cc +0 -0
  679. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/thread.cc +0 -0
  680. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/thread_none.cc +0 -0
  681. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/thread_pthread.cc +0 -0
  682. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/thread_win.cc +0 -0
  683. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/trust_token/internal.h +0 -0
  684. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/trust_token/pmbtoken.cc +0 -0
  685. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/trust_token/trust_token.cc +0 -0
  686. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/trust_token/voprf.cc +0 -0
  687. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/a_digest.cc +0 -0
  688. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/a_verify.cc +0 -0
  689. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/algorithm.cc +0 -0
  690. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/by_dir.cc +0 -0
  691. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/by_file.cc +0 -0
  692. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/ext_dat.h +0 -0
  693. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/i2d_pr.cc +0 -0
  694. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/internal.h +0 -0
  695. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/name_print.cc +0 -0
  696. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/policy.cc +0 -0
  697. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/rsa_pss.cc +0 -0
  698. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/t_crl.cc +0 -0
  699. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/t_req.cc +0 -0
  700. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/t_x509.cc +0 -0
  701. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/t_x509a.cc +0 -0
  702. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_akey.cc +0 -0
  703. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_akeya.cc +0 -0
  704. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_alt.cc +0 -0
  705. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_bcons.cc +0 -0
  706. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_bitst.cc +0 -0
  707. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_cpols.cc +0 -0
  708. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_crld.cc +0 -0
  709. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_enum.cc +0 -0
  710. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_extku.cc +0 -0
  711. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_genn.cc +0 -0
  712. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_ia5.cc +0 -0
  713. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_int.cc +0 -0
  714. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_lib.cc +0 -0
  715. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_ncons.cc +0 -0
  716. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_ocsp.cc +0 -0
  717. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_pcons.cc +0 -0
  718. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_pmaps.cc +0 -0
  719. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_prn.cc +0 -0
  720. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_purp.cc +0 -0
  721. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_skey.cc +0 -0
  722. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/v3_utl.cc +0 -0
  723. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509.cc +0 -0
  724. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_att.cc +0 -0
  725. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_cmp.cc +0 -0
  726. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_d2.cc +0 -0
  727. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_def.cc +0 -0
  728. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_ext.cc +0 -0
  729. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_lu.cc +0 -0
  730. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_obj.cc +0 -0
  731. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_req.cc +0 -0
  732. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_set.cc +0 -0
  733. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_trs.cc +0 -0
  734. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_txt.cc +0 -0
  735. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_v3.cc +0 -0
  736. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_vfy.cc +0 -0
  737. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509_vpm.cc +0 -0
  738. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509cset.cc +0 -0
  739. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509name.cc +0 -0
  740. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509rset.cc +0 -0
  741. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x509spki.cc +0 -0
  742. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_algor.cc +0 -0
  743. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_all.cc +0 -0
  744. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_attrib.cc +0 -0
  745. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_crl.cc +0 -0
  746. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_exten.cc +0 -0
  747. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_name.cc +0 -0
  748. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_pubkey.cc +0 -0
  749. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_req.cc +0 -0
  750. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_sig.cc +0 -0
  751. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_spki.cc +0 -0
  752. /data/third_party/boringssl-with-bazel/{src/crypto → crypto}/x509/x_val.cc +0 -0
  753. /data/third_party/boringssl-with-bazel/{src/gen → gen}/crypto/err_data.cc +0 -0
  754. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/aead.h +0 -0
  755. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/aes.h +0 -0
  756. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/arm_arch.h +0 -0
  757. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/asm_base.h +0 -0
  758. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/asn1.h +0 -0
  759. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/asn1_mac.h +0 -0
  760. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/asn1t.h +0 -0
  761. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/base.h +0 -0
  762. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/base64.h +0 -0
  763. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/bcm_public.h +0 -0
  764. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/bio.h +0 -0
  765. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/blake2.h +0 -0
  766. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/blowfish.h +0 -0
  767. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/bn.h +0 -0
  768. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/buf.h +0 -0
  769. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/buffer.h +0 -0
  770. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/cast.h +0 -0
  771. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/chacha.h +0 -0
  772. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/cipher.h +0 -0
  773. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/cmac.h +0 -0
  774. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/cms.h +0 -0
  775. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/conf.h +0 -0
  776. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/cpu.h +0 -0
  777. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/crypto.h +0 -0
  778. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ctrdrbg.h +0 -0
  779. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/curve25519.h +0 -0
  780. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/des.h +0 -0
  781. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/dh.h +0 -0
  782. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/digest.h +0 -0
  783. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/dsa.h +0 -0
  784. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/dtls1.h +0 -0
  785. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/e_os2.h +0 -0
  786. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ec.h +0 -0
  787. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ec_key.h +0 -0
  788. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ecdh.h +0 -0
  789. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ecdsa.h +0 -0
  790. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/engine.h +0 -0
  791. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/err.h +0 -0
  792. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/evp.h +0 -0
  793. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/evp_errors.h +0 -0
  794. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ex_data.h +0 -0
  795. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/experimental/kyber.h +0 -0
  796. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/hkdf.h +0 -0
  797. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/hmac.h +0 -0
  798. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/hpke.h +0 -0
  799. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/hrss.h +0 -0
  800. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/is_boringssl.h +0 -0
  801. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/kdf.h +0 -0
  802. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/lhash.h +0 -0
  803. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/md4.h +0 -0
  804. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/md5.h +0 -0
  805. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/mem.h +0 -0
  806. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/mldsa.h +0 -0
  807. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/mlkem.h +0 -0
  808. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/nid.h +0 -0
  809. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/obj.h +0 -0
  810. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/obj_mac.h +0 -0
  811. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/objects.h +0 -0
  812. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/opensslconf.h +0 -0
  813. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/opensslv.h +0 -0
  814. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ossl_typ.h +0 -0
  815. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/pem.h +0 -0
  816. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/pkcs12.h +0 -0
  817. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/pkcs7.h +0 -0
  818. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/pkcs8.h +0 -0
  819. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/poly1305.h +0 -0
  820. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/pool.h +0 -0
  821. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/posix_time.h +0 -0
  822. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/rand.h +0 -0
  823. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/rc4.h +0 -0
  824. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ripemd.h +0 -0
  825. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/rsa.h +0 -0
  826. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/safestack.h +0 -0
  827. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/service_indicator.h +0 -0
  828. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/sha.h +0 -0
  829. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/siphash.h +0 -0
  830. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/slhdsa.h +0 -0
  831. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/span.h +0 -0
  832. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/srtp.h +0 -0
  833. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ssl.h +0 -0
  834. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/ssl3.h +0 -0
  835. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/stack.h +0 -0
  836. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/target.h +0 -0
  837. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/thread.h +0 -0
  838. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/time.h +0 -0
  839. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/tls1.h +0 -0
  840. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/trust_token.h +0 -0
  841. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/type_check.h +0 -0
  842. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/x509.h +0 -0
  843. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/x509_vfy.h +0 -0
  844. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/x509v3.h +0 -0
  845. /data/third_party/boringssl-with-bazel/{src/include → include}/openssl/x509v3_errors.h +0 -0
  846. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/bio_ssl.cc +0 -0
  847. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/d1_both.cc +0 -0
  848. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/d1_lib.cc +0 -0
  849. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/d1_pkt.cc +0 -0
  850. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/d1_srtp.cc +0 -0
  851. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/dtls_method.cc +0 -0
  852. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/dtls_record.cc +0 -0
  853. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/encrypted_client_hello.cc +0 -0
  854. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/extensions.cc +0 -0
  855. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/handshake.cc +0 -0
  856. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/handshake_client.cc +0 -0
  857. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/handshake_server.cc +0 -0
  858. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/internal.h +0 -0
  859. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/s3_both.cc +0 -0
  860. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/s3_lib.cc +0 -0
  861. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/s3_pkt.cc +0 -0
  862. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_aead_ctx.cc +0 -0
  863. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_buffer.cc +0 -0
  864. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_cert.cc +0 -0
  865. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_cipher.cc +0 -0
  866. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_credential.cc +0 -0
  867. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_file.cc +0 -0
  868. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_key_share.cc +0 -0
  869. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_lib.cc +0 -0
  870. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_privkey.cc +0 -0
  871. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_session.cc +0 -0
  872. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_stat.cc +0 -0
  873. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_transcript.cc +0 -0
  874. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_versions.cc +0 -0
  875. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/ssl_x509.cc +0 -0
  876. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/t1_enc.cc +0 -0
  877. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/tls13_both.cc +0 -0
  878. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/tls13_client.cc +0 -0
  879. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/tls13_enc.cc +0 -0
  880. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/tls13_server.cc +0 -0
  881. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/tls_method.cc +0 -0
  882. /data/third_party/boringssl-with-bazel/{src/ssl → ssl}/tls_record.cc +0 -0
  883. /data/third_party/boringssl-with-bazel/{src/third_party → third_party}/fiat/curve25519_32.h +0 -0
  884. /data/third_party/boringssl-with-bazel/{src/third_party → third_party}/fiat/curve25519_64.h +0 -0
  885. /data/third_party/boringssl-with-bazel/{src/third_party → third_party}/fiat/curve25519_64_adx.h +0 -0
  886. /data/third_party/boringssl-with-bazel/{src/third_party → third_party}/fiat/curve25519_64_msvc.h +0 -0
  887. /data/third_party/boringssl-with-bazel/{src/third_party → third_party}/fiat/p256_32.h +0 -0
  888. /data/third_party/boringssl-with-bazel/{src/third_party → third_party}/fiat/p256_64.h +0 -0
  889. /data/third_party/boringssl-with-bazel/{src/third_party → third_party}/fiat/p256_64_msvc.h +0 -0
@@ -11,6 +11,7 @@
11
11
  #include <stddef.h>
12
12
  #include <stdint.h>
13
13
  #include <stdlib.h>
14
+ #include <string.h>
14
15
 
15
16
  #include "upb/base/descriptor_constants.h"
16
17
  #include "upb/base/status.h"
@@ -18,6 +19,7 @@
18
19
  #include "upb/mem/alloc.h"
19
20
  #include "upb/mem/arena.h"
20
21
  #include "upb/message/internal/map_entry.h"
22
+ #include "upb/message/internal/types.h"
21
23
  #include "upb/mini_descriptor/internal/base92.h"
22
24
  #include "upb/mini_descriptor/internal/decoder.h"
23
25
  #include "upb/mini_descriptor/internal/modifiers.h"
@@ -30,6 +32,20 @@
30
32
  #include "upb/mini_table/message.h"
31
33
  #include "upb/mini_table/sub.h"
32
34
 
35
+ // Our awkward dance for including fasttable only when it is enabled.
36
+ #include "upb/port/def.inc"
37
+ #if UPB_FASTTABLE
38
+ #define UPB_INCLUDE_FAST_DECODE
39
+ #endif
40
+ #include "upb/port/undef.inc"
41
+
42
+ #ifdef UPB_INCLUDE_FAST_DECODE
43
+ #include "upb/wire/decode_fast/function_array.h"
44
+ #include "upb/wire/decode_fast/select.h"
45
+ #endif
46
+
47
+ #undef UPB_INCLUDE_FAST_DECODE
48
+
33
49
  // Must be last.
34
50
  #include "upb/port/def.inc"
35
51
 
@@ -44,6 +60,11 @@
44
60
  // Stores the field number of the present value of the oneof
45
61
  #define kUpb_OneOf_CaseFieldRep (kUpb_FieldRep_4Byte)
46
62
 
63
+ // The maximum field number that can be encoded on the wire.
64
+ // Note that this limit does not apply to MessageSet, which can have field
65
+ // numbers up to INT32_MAX.
66
+ #define kUpb_MaxFieldNumber ((1 << 29) - 1)
67
+
47
68
  typedef struct {
48
69
  // Index of the corresponding field. The field's offset will be the index of
49
70
  // the next field in a linked list.
@@ -61,7 +82,6 @@ typedef struct {
61
82
 
62
83
  typedef struct {
63
84
  upb_MdDecoder base;
64
- upb_MiniTable* table;
65
85
  upb_MiniTableField* fields;
66
86
  upb_MiniTablePlatform platform;
67
87
  upb_OneOfLayoutItemVector oneofs;
@@ -69,6 +89,12 @@ typedef struct {
69
89
  // Initially tracks the count of each field rep type; then, during assignment,
70
90
  // tracks the base offset for the next processed field of the given rep.
71
91
  uint16_t rep_counts_offsets[kUpb_FieldRep_Max + 1];
92
+ bool is_extension;
93
+
94
+ // When building fasttables, we don't know the total size of the table until
95
+ // we're done decoding, so we allocate a temporary table on the stack and
96
+ // allocate the real thing from the arena later.
97
+ upb_MiniTable table;
72
98
  } upb_MtDecoder;
73
99
 
74
100
  // In each field's offset, we temporarily store a presence classifier:
@@ -276,40 +302,45 @@ static void upb_MtDecoder_PushOneof(upb_MtDecoder* d,
276
302
 
277
303
  static size_t upb_MtDecoder_SizeOfRep(upb_FieldRep rep,
278
304
  upb_MiniTablePlatform platform) {
305
+ enum { string_view_size_32 = 8, string_view_size_64 = 16 };
306
+ UPB_STATIC_ASSERT(sizeof(upb_StringView) ==
307
+ UPB_SIZE(string_view_size_32, string_view_size_64),
308
+ "StringView size mismatch");
279
309
  static const uint8_t kRepToSize32[] = {
280
310
  [kUpb_FieldRep_1Byte] = 1,
281
311
  [kUpb_FieldRep_4Byte] = 4,
282
- [kUpb_FieldRep_StringView] = 8,
312
+ [kUpb_FieldRep_StringView] = string_view_size_32,
283
313
  [kUpb_FieldRep_8Byte] = 8,
284
314
  };
285
315
  static const uint8_t kRepToSize64[] = {
286
316
  [kUpb_FieldRep_1Byte] = 1,
287
317
  [kUpb_FieldRep_4Byte] = 4,
288
- [kUpb_FieldRep_StringView] = 16,
318
+ [kUpb_FieldRep_StringView] = string_view_size_64,
289
319
  [kUpb_FieldRep_8Byte] = 8,
290
320
  };
291
- UPB_ASSERT(sizeof(upb_StringView) ==
292
- UPB_SIZE(kRepToSize32, kRepToSize64)[kUpb_FieldRep_StringView]);
293
321
  return platform == kUpb_MiniTablePlatform_32Bit ? kRepToSize32[rep]
294
322
  : kRepToSize64[rep];
295
323
  }
296
324
 
297
325
  static size_t upb_MtDecoder_AlignOfRep(upb_FieldRep rep,
298
326
  upb_MiniTablePlatform platform) {
327
+ enum { string_view_align_32 = 4, string_view_align_64 = 8 };
328
+ UPB_STATIC_ASSERT(UPB_ALIGN_OF(upb_StringView) ==
329
+ UPB_SIZE(string_view_align_32, string_view_align_64),
330
+ "StringView size mismatch");
331
+
299
332
  static const uint8_t kRepToAlign32[] = {
300
333
  [kUpb_FieldRep_1Byte] = 1,
301
334
  [kUpb_FieldRep_4Byte] = 4,
302
- [kUpb_FieldRep_StringView] = 4,
335
+ [kUpb_FieldRep_StringView] = string_view_align_32,
303
336
  [kUpb_FieldRep_8Byte] = 8,
304
337
  };
305
338
  static const uint8_t kRepToAlign64[] = {
306
339
  [kUpb_FieldRep_1Byte] = 1,
307
340
  [kUpb_FieldRep_4Byte] = 4,
308
- [kUpb_FieldRep_StringView] = 8,
341
+ [kUpb_FieldRep_StringView] = string_view_align_64,
309
342
  [kUpb_FieldRep_8Byte] = 8,
310
343
  };
311
- UPB_ASSERT(UPB_ALIGN_OF(upb_StringView) ==
312
- UPB_SIZE(kRepToAlign32, kRepToAlign64)[kUpb_FieldRep_StringView]);
313
344
  return platform == kUpb_MiniTablePlatform_32Bit ? kRepToAlign32[rep]
314
345
  : kRepToAlign64[rep];
315
346
  }
@@ -323,7 +354,7 @@ static const char* upb_MtDecoder_DecodeOneofField(upb_MtDecoder* d,
323
354
  &d->base, ptr, first_ch, kUpb_EncodedValue_MinOneofField,
324
355
  kUpb_EncodedValue_MaxOneofField, &field_num);
325
356
  upb_MiniTableField* f =
326
- (void*)upb_MiniTable_FindFieldByNumber(d->table, field_num);
357
+ (void*)upb_MiniTable_FindFieldByNumber(&d->table, field_num);
327
358
 
328
359
  if (!f) {
329
360
  upb_MdDecoder_ErrorJmp(&d->base,
@@ -393,7 +424,7 @@ static const char* upb_MtDecoder_ParseModifier(upb_MtDecoder* d,
393
424
  if (last_field) {
394
425
  upb_MtDecoder_ModifyField(d, *msg_modifiers, mod, last_field);
395
426
  } else {
396
- if (!d->table) {
427
+ if (d->is_extension) {
397
428
  upb_MdDecoder_ErrorJmp(&d->base,
398
429
  "Extensions cannot have message modifiers");
399
430
  }
@@ -403,15 +434,21 @@ static const char* upb_MtDecoder_ParseModifier(upb_MtDecoder* d,
403
434
  return ptr;
404
435
  }
405
436
 
437
+ static void* upb_MtDecoder_CheckedMalloc(upb_MtDecoder* d, size_t size) {
438
+ void* ptr = upb_Arena_Malloc(d->arena, size);
439
+ upb_MdDecoder_CheckOutOfMemory(&d->base, ptr);
440
+ return ptr;
441
+ }
442
+
406
443
  static void upb_MtDecoder_AllocateSubs(upb_MtDecoder* d,
407
444
  upb_SubCounts sub_counts) {
408
445
  uint32_t total_count = sub_counts.submsg_count + sub_counts.subenum_count;
409
- size_t subs_bytes = sizeof(*d->table->UPB_PRIVATE(subs)) * total_count;
446
+ size_t subs_bytes = sizeof(*d->table.UPB_PRIVATE(subs)) * total_count;
410
447
  size_t ptrs_bytes = sizeof(upb_MiniTable*) * sub_counts.submsg_count;
411
- upb_MiniTableSubInternal* subs = upb_Arena_Malloc(d->arena, subs_bytes);
412
- const upb_MiniTable** subs_ptrs = upb_Arena_Malloc(d->arena, ptrs_bytes);
413
- upb_MdDecoder_CheckOutOfMemory(&d->base, subs);
414
- upb_MdDecoder_CheckOutOfMemory(&d->base, subs_ptrs);
448
+ upb_MiniTableSubInternal* subs =
449
+ subs_bytes ? upb_MtDecoder_CheckedMalloc(d, subs_bytes) : NULL;
450
+ const upb_MiniTable** subs_ptrs =
451
+ ptrs_bytes ? upb_MtDecoder_CheckedMalloc(d, ptrs_bytes) : NULL;
415
452
  uint32_t i = 0;
416
453
  for (; i < sub_counts.submsg_count; i++) {
417
454
  subs_ptrs[i] = UPB_PRIVATE(_upb_MiniTable_Empty)();
@@ -419,7 +456,7 @@ static void upb_MtDecoder_AllocateSubs(upb_MtDecoder* d,
419
456
  }
420
457
  if (sub_counts.subenum_count) {
421
458
  upb_MiniTableField* f = d->fields;
422
- upb_MiniTableField* end_f = f + d->table->UPB_PRIVATE(field_count);
459
+ upb_MiniTableField* end_f = f + d->table.UPB_PRIVATE(field_count);
423
460
  for (; f < end_f; f++) {
424
461
  if (f->UPB_PRIVATE(descriptortype) == kUpb_FieldType_Enum) {
425
462
  f->UPB_PRIVATE(submsg_index) += sub_counts.submsg_count;
@@ -429,7 +466,7 @@ static void upb_MtDecoder_AllocateSubs(upb_MtDecoder* d,
429
466
  subs[i].UPB_PRIVATE(subenum) = NULL;
430
467
  }
431
468
  }
432
- d->table->UPB_PRIVATE(subs) = subs;
469
+ d->table.UPB_PRIVATE(subs) = subs;
433
470
  }
434
471
 
435
472
  static const char* upb_MtDecoder_Parse(upb_MtDecoder* d, const char* ptr,
@@ -439,38 +476,43 @@ static const char* upb_MtDecoder_Parse(upb_MtDecoder* d, const char* ptr,
439
476
  uint64_t msg_modifiers = 0;
440
477
  uint32_t last_field_number = 0;
441
478
  upb_MiniTableField* last_field = NULL;
442
- bool need_dense_below = d->table != NULL;
479
+ bool need_dense_below = !d->is_extension;
443
480
 
444
481
  d->base.end = UPB_PTRADD(ptr, len);
445
482
 
446
483
  while (ptr < d->base.end) {
447
484
  char ch = *ptr++;
448
485
  if (ch <= kUpb_EncodedValue_MaxField) {
449
- if (!d->table && last_field) {
486
+ if (d->is_extension && last_field) {
450
487
  // For extensions, consume only a single field and then return.
451
488
  return --ptr;
452
489
  }
453
490
  upb_MiniTableField* field = fields;
454
491
  *field_count += 1;
455
492
  fields = (char*)fields + field_size;
456
- field->UPB_PRIVATE(number) = ++last_field_number;
493
+ uint32_t number = ++last_field_number;
494
+ if (number == 0 || (number > kUpb_MaxFieldNumber && !d->is_extension)) {
495
+ upb_MdDecoder_ErrorJmp(&d->base, "Invalid field number: %" PRIu32,
496
+ number);
497
+ }
498
+ field->UPB_PRIVATE(number) = number;
457
499
  last_field = field;
458
500
  upb_MiniTable_SetField(d, ch, field, msg_modifiers, sub_counts);
459
501
  } else if (kUpb_EncodedValue_MinModifier <= ch &&
460
502
  ch <= kUpb_EncodedValue_MaxModifier) {
461
503
  ptr = upb_MtDecoder_ParseModifier(d, ptr, ch, last_field, &msg_modifiers);
462
504
  if (msg_modifiers & kUpb_MessageModifier_IsExtendable) {
463
- d->table->UPB_PRIVATE(ext) |= kUpb_ExtMode_Extendable;
505
+ d->table.UPB_PRIVATE(ext) |= kUpb_ExtMode_Extendable;
464
506
  }
465
507
  } else if (ch == kUpb_EncodedValue_End) {
466
- if (!d->table) {
508
+ if (d->is_extension) {
467
509
  upb_MdDecoder_ErrorJmp(&d->base, "Extensions cannot have oneofs.");
468
510
  }
469
511
  ptr = upb_MtDecoder_DecodeOneofs(d, ptr);
470
512
  } else if (kUpb_EncodedValue_MinSkip <= ch &&
471
513
  ch <= kUpb_EncodedValue_MaxSkip) {
472
514
  if (need_dense_below) {
473
- d->table->UPB_PRIVATE(dense_below) = d->table->UPB_PRIVATE(field_count);
515
+ d->table.UPB_PRIVATE(dense_below) = d->table.UPB_PRIVATE(field_count);
474
516
  need_dense_below = false;
475
517
  }
476
518
  uint32_t skip;
@@ -485,7 +527,7 @@ static const char* upb_MtDecoder_Parse(upb_MtDecoder* d, const char* ptr,
485
527
  }
486
528
 
487
529
  if (need_dense_below) {
488
- d->table->UPB_PRIVATE(dense_below) = d->table->UPB_PRIVATE(field_count);
530
+ d->table.UPB_PRIVATE(dense_below) = d->table.UPB_PRIVATE(field_count);
489
531
  }
490
532
 
491
533
  return ptr;
@@ -502,20 +544,20 @@ static void upb_MtDecoder_ParseMessage(upb_MtDecoder* d, const char* data,
502
544
  upb_MdDecoder_CheckOutOfMemory(&d->base, d->fields);
503
545
 
504
546
  upb_SubCounts sub_counts = {0, 0};
505
- d->table->UPB_PRIVATE(field_count) = 0;
506
- d->table->UPB_PRIVATE(fields) = d->fields;
547
+ d->table.UPB_PRIVATE(field_count) = 0;
548
+ d->table.UPB_PRIVATE(fields) = d->fields;
507
549
  upb_MtDecoder_Parse(d, data, len, d->fields, sizeof(*d->fields),
508
- &d->table->UPB_PRIVATE(field_count), &sub_counts);
550
+ &d->table.UPB_PRIVATE(field_count), &sub_counts);
509
551
 
510
552
  upb_Arena_ShrinkLast(d->arena, d->fields, sizeof(*d->fields) * len,
511
- sizeof(*d->fields) * d->table->UPB_PRIVATE(field_count));
512
- d->table->UPB_PRIVATE(fields) = d->fields;
553
+ sizeof(*d->fields) * d->table.UPB_PRIVATE(field_count));
554
+ d->table.UPB_PRIVATE(fields) = d->fields;
513
555
  upb_MtDecoder_AllocateSubs(d, sub_counts);
514
556
  }
515
557
 
516
558
  static void upb_MtDecoder_CalculateAlignments(upb_MtDecoder* d) {
517
559
  // Add alignment counts for non-oneof fields (oneofs were added already)
518
- int n = d->table->UPB_PRIVATE(field_count);
560
+ int n = d->table.UPB_PRIVATE(field_count);
519
561
  for (int i = 0; i < n; i++) {
520
562
  upb_MiniTableField* f = &d->fields[i];
521
563
  if (f->UPB_PRIVATE(offset) >= kOneofBase) continue;
@@ -525,7 +567,7 @@ static void upb_MtDecoder_CalculateAlignments(upb_MtDecoder* d) {
525
567
  // Reserve properly aligned space for each type of field representation
526
568
  // present in this message. When we iterate over the fields, they will obtain
527
569
  // their offset from within the region matching their alignment requirements.
528
- size_t base = d->table->UPB_PRIVATE(size);
570
+ size_t base = d->table.UPB_PRIVATE(size);
529
571
  // Start with the lowest alignment requirement, going up, because:
530
572
  // 1. If there are presence bits, we won't be aligned to start, but adding
531
573
  // some lower-alignment fields may get us closer without wasting space to
@@ -548,7 +590,7 @@ static void upb_MtDecoder_CalculateAlignments(upb_MtDecoder* d) {
548
590
  upb_MdDecoder_ErrorJmp(
549
591
  &d->base, "Message size exceeded maximum size of %zu bytes", max);
550
592
  }
551
- d->table->UPB_PRIVATE(size) = (uint16_t)base;
593
+ d->table.UPB_PRIVATE(size) = (uint16_t)base;
552
594
  }
553
595
 
554
596
  static size_t upb_MiniTable_DivideRoundUp(size_t n, size_t d) {
@@ -556,14 +598,13 @@ static size_t upb_MiniTable_DivideRoundUp(size_t n, size_t d) {
556
598
  }
557
599
 
558
600
  static void upb_MtDecoder_AssignHasbits(upb_MtDecoder* d) {
559
- upb_MiniTable* ret = d->table;
560
- int n = ret->UPB_PRIVATE(field_count);
601
+ int n = d->table.UPB_PRIVATE(field_count);
561
602
  size_t last_hasbit = kUpb_Reserved_Hasbits - 1;
562
603
 
563
604
  // First assign required fields, which must have the lowest hasbits.
564
605
  for (int i = 0; i < n; i++) {
565
606
  upb_MiniTableField* field =
566
- (upb_MiniTableField*)&ret->UPB_PRIVATE(fields)[i];
607
+ (upb_MiniTableField*)&d->table.UPB_PRIVATE(fields)[i];
567
608
  if (field->UPB_PRIVATE(offset) == kRequiredPresence) {
568
609
  field->presence = ++last_hasbit;
569
610
  } else if (field->UPB_PRIVATE(offset) == kNoPresence) {
@@ -574,18 +615,19 @@ static void upb_MtDecoder_AssignHasbits(upb_MtDecoder* d) {
574
615
  upb_MdDecoder_ErrorJmp(&d->base, "Too many required fields");
575
616
  }
576
617
 
577
- ret->UPB_PRIVATE(required_count) = last_hasbit - (kUpb_Reserved_Hasbits - 1);
618
+ d->table.UPB_PRIVATE(required_count) =
619
+ last_hasbit - (kUpb_Reserved_Hasbits - 1);
578
620
 
579
621
  // Next assign non-required hasbit fields.
580
622
  for (int i = 0; i < n; i++) {
581
623
  upb_MiniTableField* field =
582
- (upb_MiniTableField*)&ret->UPB_PRIVATE(fields)[i];
624
+ (upb_MiniTableField*)&d->table.UPB_PRIVATE(fields)[i];
583
625
  if (field->UPB_PRIVATE(offset) == kHasbitPresence) {
584
626
  field->presence = ++last_hasbit;
585
627
  }
586
628
  }
587
629
 
588
- ret->UPB_PRIVATE(size) =
630
+ d->table.UPB_PRIVATE(size) =
589
631
  last_hasbit ? upb_MiniTable_DivideRoundUp(last_hasbit + 1, 8) : 0;
590
632
  }
591
633
 
@@ -598,7 +640,7 @@ static size_t upb_MtDecoder_Place(upb_MtDecoder* d, upb_FieldRep rep) {
598
640
 
599
641
  static void upb_MtDecoder_AssignOffsets(upb_MtDecoder* d) {
600
642
  upb_MiniTableField* field_end =
601
- UPB_PTRADD(d->fields, d->table->UPB_PRIVATE(field_count));
643
+ UPB_PTRADD(d->fields, d->table.UPB_PRIVATE(field_count));
602
644
  for (upb_MiniTableField* field = d->fields; field < field_end; field++) {
603
645
  if (field->UPB_PRIVATE(offset) >= kOneofBase) continue;
604
646
  field->UPB_PRIVATE(offset) =
@@ -616,17 +658,18 @@ static void upb_MtDecoder_AssignOffsets(upb_MtDecoder* d) {
616
658
  uint16_t next_offset = f->UPB_PRIVATE(offset);
617
659
  f->UPB_PRIVATE(offset) = data_offset;
618
660
  if (next_offset == kUpb_OneOfLayoutItem_IndexSentinel) break;
619
- UPB_ASSERT(next_offset - kOneofBase < d->table->UPB_PRIVATE(field_count));
661
+ UPB_ASSERT(next_offset - kOneofBase < d->table.UPB_PRIVATE(field_count));
620
662
  f = &d->fields[next_offset - kOneofBase];
621
663
  }
622
664
  }
623
665
 
624
- // The fasttable parser (supported on 64-bit only) depends on this being a
625
- // multiple of 8 in order to satisfy UPB_MALLOC_ALIGN, which is also 8.
626
- //
627
- // On 32-bit we could potentially make this smaller, but there is no
628
- // compelling reason to optimize this right now.
629
- d->table->UPB_PRIVATE(size) = UPB_ALIGN_UP(d->table->UPB_PRIVATE(size), 8);
666
+ // Since messages are always allocated on arenas, we can save repeatedly
667
+ // realigning by doing alignment at minitable construction time. We don't want
668
+ // to align to UPB_MALLOC_ALIGN because it can change with sanitizers, and if
669
+ // we're generating code we don't want to calculate size differently depending
670
+ // on the proto compiler's host or build configuration.
671
+ d->table.UPB_PRIVATE(size) =
672
+ UPB_ALIGN_UP(d->table.UPB_PRIVATE(size), kUpb_Message_Align);
630
673
  }
631
674
 
632
675
  static void upb_MtDecoder_ValidateEntryField(upb_MtDecoder* d,
@@ -665,9 +708,9 @@ static void upb_MtDecoder_ParseMap(upb_MtDecoder* d, const char* data,
665
708
  upb_MtDecoder_ParseMessage(d, data, len);
666
709
  upb_MtDecoder_AssignHasbits(d);
667
710
 
668
- if (UPB_UNLIKELY(d->table->UPB_PRIVATE(field_count) != 2)) {
711
+ if (UPB_UNLIKELY(d->table.UPB_PRIVATE(field_count) != 2)) {
669
712
  upb_MdDecoder_ErrorJmp(&d->base, "%hu fields in map",
670
- d->table->UPB_PRIVATE(field_count));
713
+ d->table.UPB_PRIVATE(field_count));
671
714
  UPB_UNREACHABLE();
672
715
  }
673
716
 
@@ -675,16 +718,16 @@ static void upb_MtDecoder_ParseMap(upb_MtDecoder* d, const char* data,
675
718
  upb_MdDecoder_ErrorJmp(&d->base, "Map entry cannot have oneof");
676
719
  }
677
720
 
678
- upb_MtDecoder_ValidateEntryField(d, &d->table->UPB_PRIVATE(fields)[0], 1);
679
- upb_MtDecoder_ValidateEntryField(d, &d->table->UPB_PRIVATE(fields)[1], 2);
721
+ upb_MtDecoder_ValidateEntryField(d, &d->table.UPB_PRIVATE(fields)[0], 1);
722
+ upb_MtDecoder_ValidateEntryField(d, &d->table.UPB_PRIVATE(fields)[1], 2);
680
723
 
681
724
  d->fields[0].UPB_PRIVATE(offset) = offsetof(upb_MapEntry, k);
682
725
  d->fields[1].UPB_PRIVATE(offset) = offsetof(upb_MapEntry, v);
683
- d->table->UPB_PRIVATE(size) = sizeof(upb_MapEntry);
726
+ d->table.UPB_PRIVATE(size) = sizeof(upb_MapEntry);
684
727
 
685
728
  // Map entries have a special bit set to signal it's a map entry, used in
686
729
  // upb_MiniTable_SetSubMessage() below.
687
- d->table->UPB_PRIVATE(ext) |= kUpb_ExtMode_IsMapEntry;
730
+ d->table.UPB_PRIVATE(ext) |= kUpb_ExtMode_IsMapEntry;
688
731
  }
689
732
 
690
733
  static void upb_MtDecoder_ParseMessageSet(upb_MtDecoder* d, const char* data,
@@ -694,7 +737,7 @@ static void upb_MtDecoder_ParseMessageSet(upb_MtDecoder* d, const char* data,
694
737
  len);
695
738
  }
696
739
 
697
- upb_MiniTable* ret = d->table;
740
+ upb_MiniTable* ret = &d->table;
698
741
  ret->UPB_PRIVATE(size) = kUpb_Reserved_Hasbytes;
699
742
  ret->UPB_PRIVATE(field_count) = 0;
700
743
  ret->UPB_PRIVATE(ext) = kUpb_ExtMode_IsMessageSet;
@@ -706,18 +749,16 @@ static void upb_MtDecoder_ParseMessageSet(upb_MtDecoder* d, const char* data,
706
749
  static upb_MiniTable* upb_MtDecoder_DoBuildMiniTableWithBuf(
707
750
  upb_MtDecoder* decoder, const char* data, size_t len, void** buf,
708
751
  size_t* buf_size) {
709
- upb_MdDecoder_CheckOutOfMemory(&decoder->base, decoder->table);
710
-
711
- decoder->table->UPB_PRIVATE(size) = kUpb_Reserved_Hasbytes;
712
- decoder->table->UPB_PRIVATE(field_count) = 0;
713
- decoder->table->UPB_PRIVATE(ext) = kUpb_ExtMode_NonExtendable;
714
- decoder->table->UPB_PRIVATE(dense_below) = 0;
715
- decoder->table->UPB_PRIVATE(table_mask) = -1;
716
- decoder->table->UPB_PRIVATE(required_count) = 0;
752
+ decoder->table.UPB_PRIVATE(size) = kUpb_Reserved_Hasbytes;
753
+ decoder->table.UPB_PRIVATE(field_count) = 0;
754
+ decoder->table.UPB_PRIVATE(ext) = kUpb_ExtMode_NonExtendable;
755
+ decoder->table.UPB_PRIVATE(dense_below) = 0;
756
+ decoder->table.UPB_PRIVATE(table_mask) = -1;
757
+ decoder->table.UPB_PRIVATE(required_count) = 0;
717
758
  #ifdef UPB_TRACING_ENABLED
718
759
  // MiniTables built from MiniDescriptors will not be able to vend the message
719
760
  // name unless it is explicitly set with upb_MiniTable_SetFullName().
720
- decoder->table->UPB_PRIVATE(full_name) = 0;
761
+ decoder->table.UPB_PRIVATE(full_name) = 0;
721
762
  #endif
722
763
 
723
764
  // Strip off and verify the version tag.
@@ -748,7 +789,27 @@ static upb_MiniTable* upb_MtDecoder_DoBuildMiniTableWithBuf(
748
789
  done:
749
790
  *buf = decoder->oneofs.data;
750
791
  *buf_size = decoder->oneofs.buf_capacity_bytes;
751
- return decoder->table;
792
+ size_t mt_size = sizeof(upb_MiniTable);
793
+
794
+ #if UPB_FASTTABLE
795
+ upb_DecodeFast_TableEntry fasttable[32];
796
+ int fasttable_size = upb_DecodeFast_BuildTable(&decoder->table, fasttable);
797
+ mt_size += fasttable_size * sizeof(fasttable[0]);
798
+ #endif
799
+
800
+ upb_MiniTable* ret = upb_Arena_Malloc(decoder->arena, mt_size);
801
+ memcpy(ret, &decoder->table, sizeof(*ret));
802
+
803
+ #if UPB_FASTTABLE
804
+ ret->UPB_PRIVATE(table_mask) = upb_DecodeFast_GetTableMask(fasttable_size);
805
+ for (int i = 0; i < fasttable_size; i++) {
806
+ ret->UPB_PRIVATE(fasttable)[i].field_data = fasttable[i].function_data;
807
+ ret->UPB_PRIVATE(fasttable)[i].field_parser =
808
+ upb_DecodeFast_GetFunctionPointer(fasttable[i].function_idx);
809
+ }
810
+ #endif
811
+ UPB_PRIVATE(upb_MiniTable_CheckInvariants)(ret);
812
+ return ret;
752
813
  }
753
814
 
754
815
  static upb_MiniTable* upb_MtDecoder_BuildMiniTableWithBuf(
@@ -772,6 +833,7 @@ upb_MiniTable* upb_MiniTable_BuildWithBuf(const char* data, size_t len,
772
833
  upb_MtDecoder decoder = {
773
834
  .base = {.status = status},
774
835
  .platform = platform,
836
+ .is_extension = false,
775
837
  .oneofs =
776
838
  {
777
839
  .data = *buf,
@@ -779,7 +841,6 @@ upb_MiniTable* upb_MiniTable_BuildWithBuf(const char* data, size_t len,
779
841
  .size = 0,
780
842
  },
781
843
  .arena = arena,
782
- .table = upb_Arena_Malloc(arena, sizeof(*decoder.table)),
783
844
  };
784
845
 
785
846
  return upb_MtDecoder_BuildMiniTableWithBuf(&decoder, data, len, buf,
@@ -848,8 +909,8 @@ const char* _upb_MiniTableExtension_Init(const char* data, size_t len,
848
909
  upb_MtDecoder decoder = {
849
910
  .base = {.status = status},
850
911
  .arena = NULL,
851
- .table = NULL,
852
912
  .platform = platform,
913
+ .is_extension = true,
853
914
  };
854
915
 
855
916
  return upb_MtDecoder_BuildMiniTableExtension(&decoder, data, len, ext,
@@ -8,9 +8,13 @@
8
8
  #ifndef UPB_MINI_TABLE_DECODE_H_
9
9
  #define UPB_MINI_TABLE_DECODE_H_
10
10
 
11
+ #include <stddef.h>
12
+
11
13
  #include "upb/base/status.h"
12
14
  #include "upb/mem/arena.h"
15
+ #include "upb/mini_table/enum.h"
13
16
  #include "upb/mini_table/extension.h"
17
+ #include "upb/mini_table/message.h"
14
18
  #include "upb/mini_table/sub.h"
15
19
 
16
20
  // Export the newer headers, for legacy users. New users should include the
@@ -81,7 +85,7 @@ UPB_API_INLINE upb_MiniTableExtension* upb_MiniTableExtension_Build(
81
85
 
82
86
  UPB_API_INLINE upb_MiniTableExtension* upb_MiniTableExtension_BuildMessage(
83
87
  const char* data, size_t len, const upb_MiniTable* extendee,
84
- upb_MiniTable* submsg, upb_Arena* arena, upb_Status* status) {
88
+ const upb_MiniTable* submsg, upb_Arena* arena, upb_Status* status) {
85
89
  upb_MiniTableSub sub = upb_MiniTableSub_FromMessage(submsg);
86
90
  return _upb_MiniTableExtension_Build(
87
91
  data, len, extendee, sub, kUpb_MiniTablePlatform_Native, arena, status);
@@ -89,7 +93,7 @@ UPB_API_INLINE upb_MiniTableExtension* upb_MiniTableExtension_BuildMessage(
89
93
 
90
94
  UPB_API_INLINE upb_MiniTableExtension* upb_MiniTableExtension_BuildEnum(
91
95
  const char* data, size_t len, const upb_MiniTable* extendee,
92
- upb_MiniTableEnum* subenum, upb_Arena* arena, upb_Status* status) {
96
+ const upb_MiniTableEnum* subenum, upb_Arena* arena, upb_Status* status) {
93
97
  upb_MiniTableSub sub = upb_MiniTableSub_FromEnum(subenum);
94
98
  return _upb_MiniTableExtension_Build(
95
99
  data, len, extendee, sub, kUpb_MiniTablePlatform_Native, arena, status);
@@ -8,8 +8,10 @@
8
8
  #ifndef UPB_MINI_TABLE_ENCODE_INTERNAL_HPP_
9
9
  #define UPB_MINI_TABLE_ENCODE_INTERNAL_HPP_
10
10
 
11
+ #include <cstdint>
11
12
  #include <string>
12
13
 
14
+ #include "upb/base/descriptor_constants.h"
13
15
  #include "upb/base/internal/log2.h"
14
16
  #include "upb/mini_descriptor/internal/encode.h"
15
17
 
@@ -74,6 +74,17 @@ bool upb_MiniTable_SetSubEnum(upb_MiniTable* table, upb_MiniTableField* field,
74
74
  return false;
75
75
  }
76
76
 
77
+ if ((table->UPB_PRIVATE(ext) & kUpb_ExtMode_IsMapEntry) &&
78
+ !upb_MiniTableEnum_CheckValue(sub, 0)) {
79
+ // An enum used in a map must include 0 as a value. This matches a check
80
+ // performed in protoc ("Enum value in map must define 0 as the first
81
+ // value"). Protoc should ensure that we never get here.
82
+ //
83
+ // This ends up being important if we receive wire messages where a map
84
+ // entry omits the value (and thus defaults to 0).
85
+ return false;
86
+ }
87
+
77
88
  upb_MiniTableSub* table_sub =
78
89
  (void*)&table->UPB_PRIVATE(subs)[field->UPB_PRIVATE(submsg_index)];
79
90
  *table_sub = upb_MiniTableSub_FromEnum(sub);
@@ -12,6 +12,7 @@
12
12
 
13
13
  #include "upb/base/descriptor_constants.h"
14
14
  #include "upb/mini_table/enum.h"
15
+ #include "upb/mini_table/field.h"
15
16
  #include "upb/mini_table/internal/extension.h"
16
17
  #include "upb/mini_table/message.h"
17
18
 
@@ -30,6 +31,9 @@ upb_MiniTableExtension_CType(const upb_MiniTableExtension* e);
30
31
  UPB_API_INLINE uint32_t
31
32
  upb_MiniTableExtension_Number(const upb_MiniTableExtension* e);
32
33
 
34
+ UPB_API_INLINE const upb_MiniTable* upb_MiniTableExtension_Extendee(
35
+ const upb_MiniTableExtension* e);
36
+
33
37
  UPB_API_INLINE const upb_MiniTable* upb_MiniTableExtension_GetSubMessage(
34
38
  const upb_MiniTableExtension* e);
35
39
 
@@ -42,6 +46,9 @@ UPB_API_INLINE bool upb_MiniTableExtension_SetSubMessage(
42
46
  UPB_API_INLINE bool upb_MiniTableExtension_SetSubEnum(
43
47
  upb_MiniTableExtension* e, const upb_MiniTableEnum* m);
44
48
 
49
+ UPB_API_INLINE const upb_MiniTableField* upb_MiniTableExtension_ToField(
50
+ const upb_MiniTableExtension* e);
51
+
45
52
  #ifdef __cplusplus
46
53
  } /* extern "C" */
47
54
  #endif
@@ -42,8 +42,17 @@ upb_ExtensionRegistry* upb_ExtensionRegistry_New(upb_Arena* arena) {
42
42
 
43
43
  UPB_API upb_ExtensionRegistryStatus upb_ExtensionRegistry_Add(
44
44
  upb_ExtensionRegistry* r, const upb_MiniTableExtension* e) {
45
+ uint32_t fieldnum = upb_MiniTableExtension_Number(e);
46
+ const upb_MiniTable* extendee = upb_MiniTableExtension_Extendee(e);
47
+
48
+ const uint32_t kMaxFieldNumber = (1 << 29) - 1;
49
+ if (fieldnum == 0 ||
50
+ (fieldnum > kMaxFieldNumber && !upb_MiniTable_IsMessageSet(extendee))) {
51
+ return kUpb_ExtensionRegistryStatus_InvalidExtension;
52
+ }
53
+
45
54
  char buf[EXTREG_KEY_SIZE];
46
- extreg_key(buf, e->UPB_PRIVATE(extendee), upb_MiniTableExtension_Number(e));
55
+ extreg_key(buf, extendee, fieldnum);
47
56
 
48
57
  if (upb_strtable_lookup2(&r->exts, buf, EXTREG_KEY_SIZE, NULL)) {
49
58
  return kUpb_ExtensionRegistryStatus_DuplicateEntry;
@@ -62,6 +62,7 @@ typedef enum {
62
62
  kUpb_ExtensionRegistryStatus_Ok = 0,
63
63
  kUpb_ExtensionRegistryStatus_DuplicateEntry = 1,
64
64
  kUpb_ExtensionRegistryStatus_OutOfMemory = 2,
65
+ kUpb_ExtensionRegistryStatus_InvalidExtension = 3,
65
66
  } upb_ExtensionRegistryStatus;
66
67
 
67
68
  // Creates a upb_ExtensionRegistry in the given arena.
@@ -40,6 +40,11 @@ upb_MiniTableExtension_Number(const struct upb_MiniTableExtension* e) {
40
40
  return e->UPB_PRIVATE(field).UPB_ONLYBITS(number);
41
41
  }
42
42
 
43
+ UPB_API_INLINE const struct upb_MiniTable* upb_MiniTableExtension_Extendee(
44
+ const struct upb_MiniTableExtension* e) {
45
+ return e->UPB_PRIVATE(extendee);
46
+ }
47
+
43
48
  UPB_API_INLINE const struct upb_MiniTable* upb_MiniTableExtension_GetSubMessage(
44
49
  const struct upb_MiniTableExtension* e) {
45
50
  if (upb_MiniTableExtension_CType(e) != kUpb_CType_Message) {
@@ -76,6 +81,11 @@ UPB_API_INLINE bool upb_MiniTableExtension_SetSubEnum(
76
81
  return true;
77
82
  }
78
83
 
84
+ UPB_API_INLINE const upb_MiniTableField* upb_MiniTableExtension_ToField(
85
+ const struct upb_MiniTableExtension* e) {
86
+ return &e->UPB_PRIVATE(field);
87
+ }
88
+
79
89
  UPB_INLINE upb_FieldRep UPB_PRIVATE(_upb_MiniTableExtension_GetRep)(
80
90
  const struct upb_MiniTableExtension* e) {
81
91
  return UPB_PRIVATE(_upb_MiniTableField_GetRep)(&e->UPB_PRIVATE(field));
@@ -139,7 +139,7 @@ UPB_INLINE char UPB_PRIVATE(_upb_MiniTableField_HasbitMask)(
139
139
  const struct upb_MiniTableField* f) {
140
140
  UPB_ASSERT(UPB_PRIVATE(_upb_MiniTableField_HasHasbit)(f));
141
141
  const uint16_t index = f->presence;
142
- return 1 << (index % 8);
142
+ return (char)(1 << (index % 8));
143
143
  }
144
144
 
145
145
  UPB_INLINE uint16_t UPB_PRIVATE(_upb_MiniTableField_HasbitOffset)(