grpc 1.40.0.pre1 → 1.42.0.pre1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (1093) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +68 -64
  3. data/etc/roots.pem +335 -326
  4. data/include/grpc/byte_buffer.h +1 -1
  5. data/include/grpc/byte_buffer_reader.h +1 -1
  6. data/include/grpc/event_engine/endpoint_config.h +6 -11
  7. data/include/grpc/event_engine/event_engine.h +131 -86
  8. data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
  9. data/include/grpc/event_engine/memory_allocator.h +210 -0
  10. data/include/grpc/event_engine/port.h +1 -3
  11. data/include/grpc/fork.h +1 -1
  12. data/include/grpc/grpc.h +14 -4
  13. data/include/grpc/grpc_posix.h +5 -2
  14. data/include/grpc/grpc_security.h +18 -0
  15. data/include/grpc/grpc_security_constants.h +1 -0
  16. data/include/grpc/impl/codegen/atm.h +5 -3
  17. data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
  18. data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
  19. data/include/grpc/impl/codegen/atm_windows.h +2 -0
  20. data/include/grpc/impl/codegen/byte_buffer.h +2 -0
  21. data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
  22. data/include/grpc/impl/codegen/compression_types.h +2 -0
  23. data/include/grpc/impl/codegen/connectivity_state.h +2 -0
  24. data/include/grpc/impl/codegen/fork.h +2 -0
  25. data/include/grpc/impl/codegen/gpr_slice.h +2 -0
  26. data/include/grpc/impl/codegen/gpr_types.h +2 -0
  27. data/include/grpc/impl/codegen/grpc_types.h +4 -5
  28. data/include/grpc/impl/codegen/log.h +2 -0
  29. data/include/grpc/impl/codegen/port_platform.h +33 -22
  30. data/include/grpc/impl/codegen/propagation_bits.h +2 -0
  31. data/include/grpc/impl/codegen/slice.h +2 -0
  32. data/include/grpc/impl/codegen/status.h +2 -0
  33. data/include/grpc/impl/codegen/sync.h +8 -5
  34. data/include/grpc/impl/codegen/sync_abseil.h +2 -0
  35. data/include/grpc/impl/codegen/sync_custom.h +2 -0
  36. data/include/grpc/impl/codegen/sync_generic.h +3 -0
  37. data/include/grpc/impl/codegen/sync_posix.h +4 -2
  38. data/include/grpc/impl/codegen/sync_windows.h +2 -0
  39. data/include/grpc/slice.h +1 -1
  40. data/include/grpc/status.h +1 -1
  41. data/include/grpc/support/atm.h +1 -1
  42. data/include/grpc/support/atm_gcc_atomic.h +1 -1
  43. data/include/grpc/support/atm_gcc_sync.h +1 -1
  44. data/include/grpc/support/atm_windows.h +1 -1
  45. data/include/grpc/support/log.h +1 -1
  46. data/include/grpc/support/port_platform.h +1 -1
  47. data/include/grpc/support/sync.h +1 -1
  48. data/include/grpc/support/sync_abseil.h +1 -1
  49. data/include/grpc/support/sync_custom.h +1 -1
  50. data/include/grpc/support/sync_generic.h +1 -1
  51. data/include/grpc/support/sync_posix.h +1 -1
  52. data/include/grpc/support/sync_windows.h +1 -1
  53. data/include/grpc/support/time.h +2 -2
  54. data/src/core/ext/filters/census/grpc_context.cc +1 -0
  55. data/src/core/ext/filters/client_channel/backend_metric.cc +18 -20
  56. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
  57. data/src/core/ext/filters/client_channel/backup_poller.h +1 -0
  58. data/src/core/ext/filters/client_channel/channel_connectivity.cc +72 -91
  59. data/src/core/ext/filters/client_channel/client_channel.cc +196 -289
  60. data/src/core/ext/filters/client_channel/client_channel.h +75 -28
  61. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -5
  62. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
  63. data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -1
  64. data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
  65. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +16 -15
  66. data/src/core/ext/filters/client_channel/config_selector.cc +2 -1
  67. data/src/core/ext/filters/client_channel/config_selector.h +4 -5
  68. data/src/core/ext/filters/client_channel/connector.h +18 -18
  69. data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
  70. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
  71. data/src/core/ext/filters/client_channel/health/health_check_client.cc +19 -17
  72. data/src/core/ext/filters/client_channel/health/health_check_client.h +4 -3
  73. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +8 -7
  74. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
  75. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -2
  76. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
  77. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +168 -90
  78. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
  79. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
  80. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -2
  81. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +2 -2
  82. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -2
  83. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -3
  84. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
  85. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +29 -33
  86. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +3 -3
  87. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
  88. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
  89. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +2 -2
  90. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +9 -9
  91. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +21 -20
  92. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
  93. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +15 -7
  94. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +10 -9
  95. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +9 -19
  96. data/src/core/ext/filters/client_channel/lb_policy.h +21 -44
  97. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
  98. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -7
  99. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
  100. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +13 -15
  101. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -0
  102. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -3
  103. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +9 -8
  104. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +26 -58
  105. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
  106. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +7 -2
  107. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +5 -3
  108. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +5 -5
  109. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +82 -76
  110. data/src/core/ext/filters/client_channel/resolver.h +1 -1
  111. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
  112. data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
  113. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +3 -4
  114. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
  115. data/src/core/ext/filters/client_channel/retry_filter.cc +64 -89
  116. data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
  117. data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
  118. data/src/core/ext/filters/client_channel/server_address.h +1 -1
  119. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
  120. data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
  121. data/src/core/ext/filters/client_channel/subchannel.h +29 -49
  122. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
  123. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
  124. data/src/core/ext/filters/client_idle/client_idle_filter.cc +29 -206
  125. data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
  126. data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
  127. data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
  128. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +27 -25
  129. data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -14
  130. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  131. data/src/core/ext/filters/http/client/http_client_filter.cc +44 -46
  132. data/src/core/ext/filters/http/client_authority_filter.cc +16 -16
  133. data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
  134. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +19 -13
  135. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +8 -9
  136. data/src/core/ext/filters/http/server/http_server_filter.cc +77 -72
  137. data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
  138. data/src/core/ext/filters/message_size/message_size_filter.cc +28 -29
  139. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  140. data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
  141. data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
  142. data/src/core/ext/service_config/service_config_call_data.h +72 -0
  143. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
  144. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
  145. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  146. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +29 -15
  147. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -0
  148. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +21 -27
  149. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +10 -6
  150. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +29 -53
  151. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +74 -53
  152. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -1
  153. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +12 -6
  154. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +5 -9
  155. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -1
  156. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  157. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  158. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +83 -88
  159. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -1
  160. data/src/core/ext/transport/chttp2/transport/context_list.h +1 -2
  161. data/src/core/ext/transport/chttp2/transport/flow_control.cc +56 -37
  162. data/src/core/ext/transport/chttp2/transport/flow_control.h +13 -7
  163. data/src/core/ext/transport/chttp2/transport/frame_data.cc +11 -11
  164. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -0
  165. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -4
  166. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -0
  167. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +6 -5
  168. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -0
  169. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +5 -8
  170. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -0
  171. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +38 -7
  172. data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -0
  173. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +12 -7
  174. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -0
  175. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
  176. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +311 -665
  177. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +240 -70
  178. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +107 -0
  179. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
  180. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +69 -0
  181. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +816 -1039
  182. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +75 -177
  183. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +146 -0
  184. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +137 -0
  185. data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +46 -0
  186. data/src/core/{lib/transport/authority_override.h → ext/transport/chttp2/transport/hpack_utils.h} +8 -15
  187. data/src/core/ext/transport/chttp2/transport/internal.h +6 -5
  188. data/src/core/ext/transport/chttp2/transport/parsing.cc +50 -203
  189. data/src/core/ext/transport/chttp2/transport/popularity_count.h +60 -0
  190. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
  191. data/src/core/ext/transport/chttp2/transport/varint.cc +7 -3
  192. data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
  193. data/src/core/ext/transport/chttp2/transport/writing.cc +61 -50
  194. data/src/core/ext/transport/inproc/inproc_transport.cc +111 -113
  195. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +96 -96
  196. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +221 -89
  197. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +1 -1
  198. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -1
  199. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +3 -3
  200. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +11 -5
  201. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +48 -48
  202. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +151 -61
  203. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +99 -99
  204. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +171 -69
  205. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +15 -15
  206. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +31 -13
  207. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +164 -131
  208. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +368 -102
  209. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +4 -4
  210. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +11 -5
  211. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +23 -23
  212. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +11 -5
  213. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +28 -28
  214. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +71 -29
  215. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +4 -4
  216. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +11 -5
  217. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +95 -83
  218. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +254 -85
  219. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +24 -24
  220. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +51 -21
  221. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +3 -3
  222. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +11 -5
  223. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +9 -9
  224. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +21 -9
  225. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +62 -62
  226. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +131 -53
  227. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +53 -52
  228. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +96 -33
  229. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +5 -5
  230. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +11 -5
  231. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +71 -66
  232. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +164 -57
  233. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +3 -3
  234. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +11 -5
  235. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +7 -7
  236. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +21 -9
  237. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +8 -8
  238. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +11 -5
  239. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +8 -8
  240. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +11 -5
  241. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +4 -4
  242. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +11 -5
  243. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +16 -16
  244. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +31 -13
  245. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +56 -22
  246. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +174 -17
  247. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
  248. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +51 -21
  249. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +3 -3
  250. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +11 -5
  251. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -37
  252. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +61 -25
  253. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +40 -40
  254. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +71 -29
  255. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +9 -9
  256. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +11 -5
  257. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +5 -5
  258. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +21 -9
  259. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +30 -30
  260. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +81 -33
  261. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +41 -29
  262. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +141 -43
  263. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +49 -43
  264. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +105 -29
  265. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +18 -18
  266. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +31 -13
  267. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +286 -279
  268. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +618 -267
  269. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +10 -10
  270. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +31 -13
  271. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +6 -6
  272. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +21 -9
  273. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +3 -3
  274. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +11 -5
  275. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +13 -13
  276. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +51 -21
  277. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +23 -23
  278. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +31 -13
  279. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +9 -9
  280. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +11 -5
  281. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +115 -116
  282. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +191 -77
  283. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +1 -1
  284. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +1 -1
  285. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +46 -32
  286. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +118 -34
  287. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +12 -12
  288. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +31 -13
  289. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +44 -42
  290. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +108 -55
  291. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +2 -2
  292. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +11 -5
  293. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +2 -2
  294. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +11 -5
  295. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +42 -42
  296. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +61 -25
  297. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +2 -2
  298. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +11 -5
  299. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +2 -2
  300. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +11 -5
  301. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +9 -9
  302. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +21 -9
  303. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +2 -2
  304. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +11 -5
  305. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +2 -2
  306. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +11 -5
  307. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +28 -28
  308. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +51 -21
  309. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +8 -8
  310. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +41 -17
  311. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +9 -8
  312. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +25 -9
  313. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +4 -4
  314. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +11 -5
  315. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +4 -4
  316. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +11 -5
  317. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +3 -3
  318. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +11 -5
  319. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +9 -9
  320. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +31 -13
  321. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +10 -10
  322. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +21 -9
  323. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +6 -6
  324. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +21 -9
  325. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +11 -11
  326. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +31 -13
  327. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +15 -15
  328. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +71 -29
  329. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +19 -19
  330. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +51 -21
  331. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +1 -1
  332. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +1 -1
  333. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +6 -6
  334. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +21 -9
  335. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +10 -10
  336. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +31 -13
  337. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +5 -5
  338. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +11 -5
  339. data/src/core/ext/upb-generated/google/api/annotations.upb.c +1 -1
  340. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  341. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +58 -58
  342. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +111 -45
  343. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +68 -68
  344. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +121 -49
  345. data/src/core/ext/upb-generated/google/api/http.upb.c +18 -18
  346. data/src/core/ext/upb-generated/google/api/http.upb.h +31 -13
  347. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +4 -4
  348. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +11 -5
  349. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +153 -153
  350. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +271 -109
  351. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +4 -4
  352. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +11 -5
  353. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +2 -2
  354. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +11 -5
  355. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
  356. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +31 -13
  357. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +4 -4
  358. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +11 -5
  359. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +19 -19
  360. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +91 -37
  361. data/src/core/ext/upb-generated/google/rpc/status.upb.c +5 -5
  362. data/src/core/ext/upb-generated/google/rpc/status.upb.h +11 -5
  363. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
  364. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +11 -5
  365. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +60 -60
  366. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +101 -41
  367. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +7 -7
  368. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +21 -9
  369. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +5 -5
  370. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +21 -9
  371. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
  372. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +91 -37
  373. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
  374. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
  375. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +8 -8
  376. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +31 -13
  377. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +4 -6
  378. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +11 -5
  379. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +1 -1
  380. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -1
  381. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +4 -4
  382. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +11 -5
  383. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +3 -3
  384. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +11 -5
  385. data/src/core/ext/upb-generated/validate/validate.upb.c +220 -220
  386. data/src/core/ext/upb-generated/validate/validate.upb.h +231 -93
  387. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
  388. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
  389. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +4 -4
  390. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +11 -5
  391. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +9 -9
  392. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +21 -9
  393. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +7 -7
  394. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +11 -5
  395. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +6 -6
  396. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +11 -5
  397. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +12 -12
  398. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +21 -9
  399. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +7 -7
  400. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +11 -5
  401. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
  402. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
  403. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +33 -0
  404. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
  405. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +410 -384
  406. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
  407. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
  408. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
  409. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
  410. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
  411. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +90 -63
  412. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +10 -0
  413. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +30 -19
  414. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +5 -0
  415. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +801 -783
  416. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +96 -100
  417. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +133 -115
  418. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +5 -0
  419. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +178 -173
  420. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +14 -13
  421. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +103 -103
  422. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
  423. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
  424. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
  425. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
  426. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
  427. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
  428. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  429. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
  430. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
  431. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
  432. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
  433. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
  434. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
  435. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
  436. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  437. data/src/core/ext/xds/certificate_provider_registry.cc +2 -2
  438. data/src/core/ext/xds/xds_api.cc +1140 -1314
  439. data/src/core/ext/xds/xds_api.h +150 -115
  440. data/src/core/ext/xds/xds_bootstrap.cc +27 -52
  441. data/src/core/ext/xds/xds_bootstrap.h +10 -0
  442. data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
  443. data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
  444. data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
  445. data/src/core/ext/xds/xds_client.cc +572 -320
  446. data/src/core/ext/xds/xds_client.h +42 -37
  447. data/src/core/ext/xds/xds_client_stats.cc +16 -15
  448. data/src/core/ext/xds/xds_client_stats.h +7 -7
  449. data/src/core/ext/xds/xds_http_fault_filter.cc +4 -3
  450. data/src/core/ext/xds/xds_http_fault_filter.h +3 -2
  451. data/src/core/ext/xds/xds_http_filters.cc +1 -0
  452. data/src/core/ext/xds/xds_server_config_fetcher.cc +15 -17
  453. data/src/core/lib/address_utils/parse_address.cc +6 -8
  454. data/src/core/lib/address_utils/sockaddr_utils.cc +2 -2
  455. data/src/core/lib/avl/avl.cc +5 -5
  456. data/src/core/lib/backoff/backoff.cc +1 -1
  457. data/src/core/lib/channel/channel_args.cc +26 -7
  458. data/src/core/lib/channel/channel_args.h +9 -0
  459. data/src/core/lib/channel/channel_stack.cc +5 -3
  460. data/src/core/lib/channel/channel_stack_builder.cc +4 -14
  461. data/src/core/lib/channel/channel_stack_builder.h +0 -8
  462. data/src/core/lib/channel/channel_trace.cc +5 -4
  463. data/src/core/lib/channel/channel_trace.h +2 -1
  464. data/src/core/lib/channel/channelz.cc +43 -39
  465. data/src/core/lib/channel/channelz.h +29 -29
  466. data/src/core/lib/channel/channelz_registry.cc +8 -7
  467. data/src/core/lib/channel/channelz_registry.h +1 -1
  468. data/src/core/lib/channel/connected_channel.cc +2 -3
  469. data/src/core/lib/channel/connected_channel.h +1 -2
  470. data/src/core/lib/channel/handshaker.cc +2 -1
  471. data/src/core/lib/channel/handshaker.h +1 -2
  472. data/src/core/lib/channel/handshaker_factory.h +10 -2
  473. data/src/core/lib/channel/handshaker_registry.cc +15 -70
  474. data/src/core/lib/channel/handshaker_registry.h +29 -12
  475. data/src/core/lib/channel/status_util.h +2 -2
  476. data/src/core/lib/compression/algorithm_metadata.h +1 -0
  477. data/src/core/lib/compression/compression.cc +2 -2
  478. data/src/core/lib/compression/compression_args.cc +8 -5
  479. data/src/core/lib/compression/compression_internal.cc +4 -6
  480. data/src/core/lib/compression/compression_internal.h +1 -1
  481. data/src/core/lib/compression/message_compress.cc +2 -2
  482. data/src/core/lib/compression/stream_compression.cc +2 -1
  483. data/src/core/lib/compression/stream_compression.h +2 -1
  484. data/src/core/lib/compression/stream_compression_gzip.cc +2 -1
  485. data/src/core/lib/compression/stream_compression_identity.cc +2 -1
  486. data/src/core/lib/config/core_configuration.cc +96 -0
  487. data/src/core/lib/config/core_configuration.h +146 -0
  488. data/src/core/lib/debug/stats.cc +1 -1
  489. data/src/core/lib/debug/stats.h +1 -0
  490. data/src/core/lib/debug/stats_data.cc +15 -14
  491. data/src/core/lib/debug/stats_data.h +1 -0
  492. data/src/core/lib/debug/trace.cc +1 -0
  493. data/src/core/lib/debug/trace.h +2 -1
  494. data/src/core/lib/event_engine/endpoint_config.cc +0 -1
  495. data/src/core/lib/event_engine/event_engine.cc +3 -3
  496. data/src/core/lib/event_engine/sockaddr.cc +3 -3
  497. data/src/core/lib/gpr/alloc.cc +4 -3
  498. data/src/core/lib/gpr/atm.cc +1 -1
  499. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  500. data/src/core/lib/gpr/env_linux.cc +1 -2
  501. data/src/core/lib/gpr/env_posix.cc +2 -3
  502. data/src/core/lib/gpr/log.cc +3 -3
  503. data/src/core/lib/gpr/log_android.cc +3 -2
  504. data/src/core/lib/gpr/log_linux.cc +7 -4
  505. data/src/core/lib/gpr/log_posix.cc +6 -3
  506. data/src/core/lib/gpr/string.cc +2 -2
  507. data/src/core/lib/gpr/string.h +2 -2
  508. data/src/core/lib/gpr/sync.cc +2 -2
  509. data/src/core/lib/gpr/sync_abseil.cc +7 -6
  510. data/src/core/lib/gpr/sync_posix.cc +3 -3
  511. data/src/core/lib/gpr/time.cc +3 -2
  512. data/src/core/lib/gpr/time_windows.cc +3 -2
  513. data/src/core/lib/gpr/tls.h +119 -40
  514. data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
  515. data/src/core/lib/gpr/useful.h +79 -32
  516. data/src/core/lib/gprpp/arena.cc +2 -1
  517. data/src/core/lib/gprpp/arena.h +15 -5
  518. data/src/core/lib/gprpp/atomic_utils.h +47 -0
  519. data/src/core/lib/gprpp/bitset.h +188 -0
  520. data/src/core/lib/gprpp/chunked_vector.h +211 -0
  521. data/src/core/lib/{transport/authority_override.cc → gprpp/construct_destruct.h} +16 -17
  522. data/src/core/lib/gprpp/dual_ref_counted.h +25 -26
  523. data/src/core/lib/gprpp/fork.cc +14 -12
  524. data/src/core/lib/gprpp/fork.h +4 -4
  525. data/src/core/lib/gprpp/global_config.h +1 -2
  526. data/src/core/lib/gprpp/global_config_env.cc +7 -7
  527. data/src/core/lib/gprpp/global_config_generic.h +2 -2
  528. data/src/core/lib/gprpp/manual_constructor.h +8 -5
  529. data/src/core/lib/gprpp/match.h +73 -0
  530. data/src/core/lib/gprpp/memory.h +9 -3
  531. data/src/core/lib/gprpp/mpscq.cc +7 -7
  532. data/src/core/lib/gprpp/mpscq.h +6 -5
  533. data/src/core/lib/gprpp/orphanable.h +3 -3
  534. data/src/core/lib/gprpp/overload.h +59 -0
  535. data/src/core/lib/gprpp/ref_counted.h +18 -18
  536. data/src/core/lib/gprpp/status_helper.cc +27 -7
  537. data/src/core/lib/gprpp/status_helper.h +12 -1
  538. data/src/core/lib/gprpp/sync.h +3 -1
  539. data/src/core/lib/gprpp/table.h +411 -0
  540. data/src/core/lib/gprpp/thd_posix.cc +5 -5
  541. data/src/core/lib/gprpp/thd_windows.cc +4 -11
  542. data/src/core/lib/gprpp/time_util.cc +2 -2
  543. data/src/core/lib/gprpp/time_util.h +2 -2
  544. data/src/core/lib/http/format_request.cc +1 -0
  545. data/src/core/lib/http/format_request.h +1 -0
  546. data/src/core/lib/http/httpcli.cc +202 -184
  547. data/src/core/lib/http/httpcli.h +3 -0
  548. data/src/core/lib/http/httpcli_security_connector.cc +5 -8
  549. data/src/core/lib/http/parser.cc +2 -2
  550. data/src/core/lib/http/parser.h +1 -0
  551. data/src/core/lib/iomgr/buffer_list.cc +2 -1
  552. data/src/core/lib/iomgr/buffer_list.h +1 -2
  553. data/src/core/lib/iomgr/call_combiner.cc +29 -10
  554. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  555. data/src/core/lib/iomgr/combiner.cc +9 -23
  556. data/src/core/lib/iomgr/combiner.h +1 -0
  557. data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
  558. data/src/core/lib/iomgr/endpoint.cc +0 -4
  559. data/src/core/lib/iomgr/endpoint.h +1 -3
  560. data/src/core/lib/iomgr/endpoint_cfstream.cc +16 -26
  561. data/src/core/lib/iomgr/endpoint_cfstream.h +1 -1
  562. data/src/core/lib/iomgr/endpoint_pair.h +1 -0
  563. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +1 -2
  564. data/src/core/lib/iomgr/endpoint_pair_posix.cc +15 -11
  565. data/src/core/lib/iomgr/endpoint_pair_windows.cc +17 -9
  566. data/src/core/lib/iomgr/error.cc +113 -52
  567. data/src/core/lib/iomgr/error.h +73 -18
  568. data/src/core/lib/iomgr/error_cfstream.cc +7 -2
  569. data/src/core/lib/iomgr/error_internal.h +1 -0
  570. data/src/core/lib/iomgr/ev_epoll1_linux.cc +17 -24
  571. data/src/core/lib/iomgr/ev_epollex_linux.cc +22 -29
  572. data/src/core/lib/iomgr/ev_poll_posix.cc +42 -45
  573. data/src/core/lib/iomgr/ev_posix.cc +1 -2
  574. data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
  575. data/src/core/lib/iomgr/event_engine/closure.h +10 -1
  576. data/src/core/lib/iomgr/event_engine/endpoint.cc +6 -25
  577. data/src/core/lib/iomgr/event_engine/endpoint.h +1 -2
  578. data/src/core/lib/iomgr/event_engine/iomgr.cc +18 -19
  579. data/src/core/lib/iomgr/event_engine/iomgr.h +20 -2
  580. data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
  581. data/src/core/lib/iomgr/event_engine/resolver.cc +12 -8
  582. data/src/core/lib/iomgr/event_engine/tcp.cc +60 -30
  583. data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
  584. data/src/core/lib/iomgr/exec_ctx.cc +4 -13
  585. data/src/core/lib/iomgr/exec_ctx.h +11 -19
  586. data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
  587. data/src/core/lib/iomgr/executor/mpmcqueue.h +7 -11
  588. data/src/core/lib/iomgr/executor/threadpool.cc +2 -2
  589. data/src/core/lib/iomgr/executor/threadpool.h +2 -1
  590. data/src/core/lib/iomgr/executor.cc +11 -26
  591. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
  592. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
  593. data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
  594. data/src/core/lib/iomgr/iocp_windows.cc +1 -0
  595. data/src/core/lib/iomgr/iomgr.cc +3 -1
  596. data/src/core/lib/iomgr/iomgr.h +2 -2
  597. data/src/core/lib/iomgr/iomgr_custom.cc +2 -2
  598. data/src/core/lib/iomgr/iomgr_custom.h +2 -2
  599. data/src/core/lib/iomgr/iomgr_internal.cc +6 -10
  600. data/src/core/lib/iomgr/iomgr_internal.h +3 -2
  601. data/src/core/lib/iomgr/iomgr_windows.cc +1 -2
  602. data/src/core/lib/iomgr/is_epollexclusive_available.cc +4 -4
  603. data/src/core/lib/iomgr/load_file.cc +2 -2
  604. data/src/core/lib/iomgr/lockfree_event.cc +18 -0
  605. data/src/core/lib/iomgr/polling_entity.cc +2 -2
  606. data/src/core/lib/iomgr/pollset_custom.cc +4 -5
  607. data/src/core/lib/iomgr/pollset_custom.h +3 -3
  608. data/src/core/lib/iomgr/pollset_set_custom.cc +1 -2
  609. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
  610. data/src/core/lib/iomgr/port.h +0 -5
  611. data/src/core/lib/iomgr/python_util.h +1 -0
  612. data/src/core/lib/iomgr/resolve_address.cc +2 -1
  613. data/src/core/lib/iomgr/resolve_address.h +0 -4
  614. data/src/core/lib/iomgr/resolve_address_custom.cc +4 -4
  615. data/src/core/lib/iomgr/resolve_address_custom.h +0 -1
  616. data/src/core/lib/iomgr/resolve_address_posix.cc +7 -11
  617. data/src/core/lib/iomgr/resolve_address_windows.cc +6 -8
  618. data/src/core/lib/iomgr/resource_quota.cc +136 -49
  619. data/src/core/lib/iomgr/resource_quota.h +66 -17
  620. data/src/core/lib/iomgr/sockaddr.h +1 -1
  621. data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
  622. data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
  623. data/src/core/lib/iomgr/socket_mutator.cc +2 -2
  624. data/src/core/lib/iomgr/socket_mutator.h +2 -2
  625. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -5
  626. data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
  627. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  628. data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
  629. data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
  630. data/src/core/lib/iomgr/tcp_client.cc +4 -2
  631. data/src/core/lib/iomgr/tcp_client.h +4 -0
  632. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -22
  633. data/src/core/lib/iomgr/tcp_client_custom.cc +10 -18
  634. data/src/core/lib/iomgr/tcp_client_posix.cc +33 -27
  635. data/src/core/lib/iomgr/tcp_client_posix.h +5 -2
  636. data/src/core/lib/iomgr/tcp_client_windows.cc +16 -9
  637. data/src/core/lib/iomgr/tcp_custom.cc +11 -23
  638. data/src/core/lib/iomgr/tcp_custom.h +2 -1
  639. data/src/core/lib/iomgr/tcp_posix.cc +33 -64
  640. data/src/core/lib/iomgr/tcp_posix.h +11 -12
  641. data/src/core/lib/iomgr/tcp_server.cc +6 -4
  642. data/src/core/lib/iomgr/tcp_server.h +12 -9
  643. data/src/core/lib/iomgr/tcp_server_custom.cc +17 -34
  644. data/src/core/lib/iomgr/tcp_server_posix.cc +23 -17
  645. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -0
  646. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -2
  647. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +3 -4
  648. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  649. data/src/core/lib/iomgr/tcp_server_windows.cc +17 -14
  650. data/src/core/lib/iomgr/tcp_windows.cc +8 -27
  651. data/src/core/lib/iomgr/tcp_windows.h +2 -1
  652. data/src/core/lib/iomgr/timer.cc +1 -0
  653. data/src/core/lib/iomgr/timer.h +1 -2
  654. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  655. data/src/core/lib/iomgr/timer_generic.cc +21 -51
  656. data/src/core/lib/iomgr/timer_generic.h +1 -0
  657. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  658. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -5
  659. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -3
  660. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -0
  661. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -3
  662. data/src/core/lib/iomgr/wakeup_fd_posix.cc +1 -0
  663. data/src/core/lib/iomgr/work_serializer.cc +4 -4
  664. data/src/core/lib/iomgr/work_serializer.h +1 -1
  665. data/src/core/lib/json/json_reader.cc +9 -17
  666. data/src/core/lib/json/json_util.cc +68 -0
  667. data/src/core/lib/json/json_util.h +65 -115
  668. data/src/core/lib/json/json_writer.cc +0 -3
  669. data/src/core/lib/matchers/matchers.h +0 -1
  670. data/src/core/lib/profiling/basic_timers.cc +8 -6
  671. data/src/core/lib/profiling/stap_timers.cc +2 -2
  672. data/src/core/lib/security/authorization/authorization_policy_provider.h +5 -4
  673. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  674. data/src/core/lib/security/authorization/evaluate_args.cc +16 -12
  675. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +171 -0
  676. data/src/core/lib/security/authorization/sdk_server_authz_filter.h +67 -0
  677. data/src/core/lib/security/context/security_context.cc +11 -8
  678. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
  679. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
  680. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
  681. data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -4
  682. data/src/core/lib/security/credentials/credentials.cc +10 -8
  683. data/src/core/lib/security/credentials/credentials.h +7 -2
  684. data/src/core/lib/security/credentials/credentials_metadata.cc +2 -3
  685. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +13 -26
  686. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -2
  687. data/src/core/lib/security/credentials/external/aws_request_signer.cc +3 -3
  688. data/src/core/lib/security/credentials/external/external_account_credentials.cc +60 -33
  689. data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
  690. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -4
  691. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -2
  692. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +56 -4
  693. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -1
  694. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
  695. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  696. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +31 -14
  697. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -3
  698. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -11
  699. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +3 -3
  700. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +3 -7
  701. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -0
  702. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +4 -6
  703. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +4 -4
  704. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -1
  705. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +3 -2
  706. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +10 -6
  707. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +2 -1
  708. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -5
  709. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +2 -2
  710. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +6 -8
  711. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
  712. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -3
  713. data/src/core/lib/security/security_connector/security_connector.cc +9 -4
  714. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  715. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -7
  716. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -2
  717. data/src/core/lib/security/security_connector/ssl_utils.cc +3 -4
  718. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +10 -14
  719. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
  720. data/src/core/lib/security/transport/auth_filters.h +1 -0
  721. data/src/core/lib/security/transport/client_auth_filter.cc +9 -11
  722. data/src/core/lib/security/transport/secure_endpoint.cc +4 -14
  723. data/src/core/lib/security/transport/secure_endpoint.h +1 -0
  724. data/src/core/lib/security/transport/security_handshaker.cc +78 -47
  725. data/src/core/lib/security/transport/security_handshaker.h +2 -1
  726. data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
  727. data/src/core/lib/security/transport/tsi_error.cc +3 -5
  728. data/src/core/lib/security/util/json_util.cc +6 -8
  729. data/src/core/lib/slice/percent_encoding.cc +73 -30
  730. data/src/core/lib/slice/percent_encoding.h +29 -28
  731. data/src/core/lib/slice/slice.cc +14 -21
  732. data/src/core/lib/{gpr/tls_pthread.cc → slice/slice_api.cc} +15 -6
  733. data/src/core/lib/slice/slice_buffer.cc +6 -7
  734. data/src/core/lib/slice/slice_intern.cc +10 -16
  735. data/src/core/lib/slice/slice_internal.h +3 -246
  736. data/src/core/lib/slice/slice_refcount.cc +17 -0
  737. data/src/core/lib/slice/slice_refcount.h +121 -0
  738. data/src/core/lib/slice/slice_refcount_base.h +173 -0
  739. data/src/core/lib/slice/slice_split.cc +100 -0
  740. data/src/core/lib/slice/slice_split.h +40 -0
  741. data/src/core/lib/slice/slice_string_helpers.cc +0 -83
  742. data/src/core/lib/slice/slice_string_helpers.h +0 -11
  743. data/src/core/lib/slice/static_slice.cc +529 -0
  744. data/src/core/lib/slice/static_slice.h +331 -0
  745. data/src/core/lib/surface/api_trace.cc +2 -1
  746. data/src/core/lib/surface/api_trace.h +1 -0
  747. data/src/core/lib/surface/builtins.cc +49 -0
  748. data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
  749. data/src/core/lib/surface/byte_buffer_reader.cc +1 -1
  750. data/src/core/lib/surface/call.cc +112 -128
  751. data/src/core/lib/surface/call.h +3 -9
  752. data/src/core/lib/surface/call_details.cc +2 -2
  753. data/src/core/lib/surface/call_log_batch.cc +2 -2
  754. data/src/core/lib/surface/channel.cc +41 -41
  755. data/src/core/lib/surface/channel.h +14 -11
  756. data/src/core/lib/surface/channel_init.cc +23 -76
  757. data/src/core/lib/surface/channel_init.h +52 -44
  758. data/src/core/lib/surface/channel_ping.cc +1 -2
  759. data/src/core/lib/surface/channel_stack_type.cc +2 -1
  760. data/src/core/lib/surface/completion_queue.cc +60 -69
  761. data/src/core/lib/surface/completion_queue_factory.cc +2 -1
  762. data/src/core/lib/surface/completion_queue_factory.h +1 -0
  763. data/src/core/lib/surface/event_string.cc +1 -0
  764. data/src/core/lib/surface/init.cc +4 -48
  765. data/src/core/lib/surface/init.h +0 -1
  766. data/src/core/lib/surface/init_secure.cc +36 -14
  767. data/src/core/lib/surface/lame_client.cc +24 -16
  768. data/src/core/lib/surface/lame_client.h +1 -1
  769. data/src/core/lib/surface/metadata_array.cc +2 -2
  770. data/src/core/lib/surface/server.cc +42 -50
  771. data/src/core/lib/surface/server.h +28 -23
  772. data/src/core/lib/surface/validate_metadata.cc +49 -18
  773. data/src/core/lib/surface/version.cc +2 -2
  774. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  775. data/src/core/lib/transport/byte_stream.h +1 -0
  776. data/src/core/lib/transport/connectivity_state.cc +8 -5
  777. data/src/core/lib/transport/connectivity_state.h +2 -2
  778. data/src/core/lib/transport/error_utils.cc +43 -17
  779. data/src/core/lib/transport/error_utils.h +1 -1
  780. data/src/core/lib/transport/metadata.cc +41 -20
  781. data/src/core/lib/transport/metadata.h +15 -12
  782. data/src/core/lib/transport/metadata_batch.cc +39 -364
  783. data/src/core/lib/transport/metadata_batch.h +916 -67
  784. data/src/core/lib/transport/parsed_metadata.h +263 -0
  785. data/src/core/lib/transport/pid_controller.cc +4 -4
  786. data/src/core/lib/transport/static_metadata.cc +714 -846
  787. data/src/core/lib/transport/static_metadata.h +115 -379
  788. data/src/core/lib/transport/status_metadata.cc +1 -0
  789. data/src/core/lib/transport/transport.cc +4 -5
  790. data/src/core/lib/transport/transport_op_string.cc +40 -20
  791. data/src/core/plugin_registry/grpc_plugin_registry.cc +76 -41
  792. data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
  793. data/src/core/tsi/alts/crypt/gsec.h +2 -3
  794. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  795. data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
  796. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -4
  797. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
  798. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
  799. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
  800. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  801. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
  802. data/src/core/tsi/fake_transport_security.cc +15 -7
  803. data/src/core/tsi/local_transport_security.cc +36 -73
  804. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -53
  805. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
  806. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
  807. data/src/core/tsi/ssl_transport_security.cc +21 -11
  808. data/src/core/tsi/ssl_transport_security.h +3 -1
  809. data/src/core/tsi/transport_security.cc +15 -3
  810. data/src/core/tsi/transport_security.h +16 -1
  811. data/src/core/tsi/transport_security_grpc.h +1 -0
  812. data/src/core/tsi/transport_security_interface.h +26 -0
  813. data/src/ruby/ext/grpc/extconf.rb +12 -9
  814. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
  815. data/src/ruby/ext/grpc/rb_call.c +5 -5
  816. data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
  817. data/src/ruby/ext/grpc/rb_channel.c +10 -8
  818. data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
  819. data/src/ruby/ext/grpc/rb_channel_credentials.c +4 -4
  820. data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -0
  821. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
  822. data/src/ruby/ext/grpc/rb_compression_options.c +5 -4
  823. data/src/ruby/ext/grpc/rb_event_thread.c +4 -4
  824. data/src/ruby/ext/grpc/rb_grpc.c +5 -4
  825. data/src/ruby/ext/grpc/rb_grpc.h +1 -0
  826. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  827. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  828. data/src/ruby/ext/grpc/rb_server.c +6 -5
  829. data/src/ruby/ext/grpc/rb_server_credentials.c +3 -3
  830. data/src/ruby/ext/grpc/rb_server_credentials.h +1 -0
  831. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +8 -5
  832. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +3 -1
  833. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +6 -5
  834. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +3 -1
  835. data/src/ruby/lib/grpc/version.rb +1 -1
  836. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
  837. data/src/ruby/spec/client_server_spec.rb +1 -1
  838. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
  839. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
  840. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  841. data/third_party/boringssl-with-bazel/err_data.c +300 -292
  842. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +52 -47
  843. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
  844. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  845. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
  846. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
  847. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +14 -7
  848. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  849. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +269 -272
  850. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
  851. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +3 -3
  852. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
  853. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +1 -40
  854. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
  855. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  856. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  857. data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_locl.h → internal.h} +58 -1
  858. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +9 -9
  859. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +290 -199
  860. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +9 -9
  861. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -14
  862. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -1
  863. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
  864. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
  865. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  866. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  867. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  868. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  869. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  870. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  871. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
  872. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  873. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
  874. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  875. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
  876. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
  877. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +6 -3
  878. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  879. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +26 -9
  880. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  881. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
  882. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  883. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
  884. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  885. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  886. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
  887. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
  888. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
  889. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  890. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +5 -9
  891. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +2 -2
  892. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +4 -6
  893. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
  894. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
  895. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
  896. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
  897. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
  898. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +34 -0
  899. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
  900. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
  901. data/third_party/boringssl-with-bazel/src/crypto/internal.h +62 -2
  902. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
  903. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
  904. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -9
  905. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +7 -3
  906. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  907. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  908. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  909. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  910. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  911. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  912. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
  913. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
  914. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  915. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +1 -1
  916. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +1 -0
  917. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
  918. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
  919. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
  920. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  921. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
  922. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +1 -1
  923. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
  924. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  925. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +225 -2
  926. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  927. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +15 -4
  928. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +10 -5
  929. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
  930. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
  931. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +6 -23
  932. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +2 -2
  933. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
  934. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
  935. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +25 -22
  936. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -54
  937. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
  938. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +1 -0
  939. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
  940. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +1 -3
  941. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
  942. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +9 -11
  943. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
  944. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +23 -21
  945. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +12 -11
  946. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +16 -0
  947. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
  948. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
  949. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
  950. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
  951. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
  952. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
  953. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +17 -8
  954. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
  955. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +1 -0
  956. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -6
  957. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
  958. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
  959. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +2 -0
  960. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  961. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  962. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -13
  963. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  964. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +76 -31
  965. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +521 -296
  966. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -9
  967. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -5
  968. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
  969. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  970. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
  971. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
  972. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
  973. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +3 -0
  974. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +6 -0
  975. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  976. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +25 -0
  977. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
  978. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
  979. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
  980. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +5 -4
  981. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
  982. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -5
  983. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +5 -0
  984. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
  985. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +81 -15
  986. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
  987. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +713 -146
  988. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
  989. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +48 -13
  990. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +9 -16
  991. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +310 -359
  992. data/third_party/boringssl-with-bazel/src/ssl/{t1_lib.cc → extensions.cc} +110 -159
  993. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +24 -13
  994. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +145 -142
  995. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +106 -99
  996. data/third_party/boringssl-with-bazel/src/ssl/internal.h +87 -48
  997. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +1 -2
  998. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
  999. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +11 -5
  1000. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -51
  1001. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +121 -65
  1002. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
  1003. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
  1004. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
  1005. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +210 -212
  1006. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
  1007. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +48 -34
  1008. data/third_party/re2/re2/compile.cc +91 -109
  1009. data/third_party/re2/re2/dfa.cc +27 -39
  1010. data/third_party/re2/re2/filtered_re2.cc +18 -2
  1011. data/third_party/re2/re2/filtered_re2.h +10 -5
  1012. data/third_party/re2/re2/nfa.cc +1 -1
  1013. data/third_party/re2/re2/parse.cc +42 -23
  1014. data/third_party/re2/re2/perl_groups.cc +34 -34
  1015. data/third_party/re2/re2/prefilter.cc +3 -2
  1016. data/third_party/re2/re2/prog.cc +182 -4
  1017. data/third_party/re2/re2/prog.h +28 -9
  1018. data/third_party/re2/re2/re2.cc +87 -118
  1019. data/third_party/re2/re2/re2.h +156 -141
  1020. data/third_party/re2/re2/regexp.cc +12 -5
  1021. data/third_party/re2/re2/regexp.h +8 -2
  1022. data/third_party/re2/re2/set.cc +31 -9
  1023. data/third_party/re2/re2/set.h +9 -4
  1024. data/third_party/re2/re2/simplify.cc +11 -3
  1025. data/third_party/re2/re2/tostring.cc +1 -1
  1026. data/third_party/re2/re2/walker-inl.h +1 -1
  1027. data/third_party/re2/util/mutex.h +2 -2
  1028. data/third_party/re2/util/pcre.h +3 -3
  1029. data/third_party/upb/upb/decode.c +129 -60
  1030. data/third_party/upb/upb/decode.h +32 -4
  1031. data/third_party/upb/upb/decode_fast.c +513 -500
  1032. data/third_party/upb/upb/decode_fast.h +27 -0
  1033. data/third_party/upb/upb/{decode.int.h → decode_internal.h} +38 -8
  1034. data/third_party/upb/upb/def.c +171 -181
  1035. data/third_party/upb/upb/def.h +41 -19
  1036. data/third_party/upb/upb/def.hpp +29 -0
  1037. data/third_party/upb/upb/encode.c +49 -16
  1038. data/third_party/upb/upb/encode.h +29 -2
  1039. data/third_party/upb/upb/msg.c +169 -28
  1040. data/third_party/upb/upb/msg.h +75 -580
  1041. data/third_party/upb/upb/msg_internal.h +687 -0
  1042. data/third_party/upb/upb/port_def.inc +85 -24
  1043. data/third_party/upb/upb/port_undef.inc +38 -1
  1044. data/third_party/upb/upb/reflection.c +29 -37
  1045. data/third_party/upb/upb/reflection.h +36 -8
  1046. data/third_party/upb/upb/reflection.hpp +37 -0
  1047. data/third_party/upb/upb/table.c +211 -86
  1048. data/third_party/upb/upb/{table.int.h → table_internal.h} +56 -180
  1049. data/third_party/upb/upb/text_encode.c +32 -4
  1050. data/third_party/upb/upb/text_encode.h +26 -0
  1051. data/third_party/upb/upb/upb.c +59 -8
  1052. data/third_party/upb/upb/upb.h +36 -6
  1053. data/third_party/upb/upb/upb.hpp +24 -0
  1054. data/third_party/upb/upb/upb_internal.h +58 -0
  1055. metadata +102 -87
  1056. data/include/grpc/event_engine/slice_allocator.h +0 -66
  1057. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
  1058. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
  1059. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
  1060. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
  1061. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  1062. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  1063. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  1064. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  1065. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -66
  1066. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
  1067. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -243
  1068. data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
  1069. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  1070. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  1071. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  1072. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -124
  1073. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +0 -33
  1074. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -77
  1075. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
  1076. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
  1077. data/src/core/lib/gpr/tls_gcc.h +0 -52
  1078. data/src/core/lib/gpr/tls_msvc.h +0 -54
  1079. data/src/core/lib/gpr/tls_pthread.h +0 -56
  1080. data/src/core/lib/gpr/tls_stdcpp.h +0 -48
  1081. data/src/core/lib/gprpp/atomic.h +0 -104
  1082. data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
  1083. data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
  1084. data/src/core/lib/iomgr/pollset_uv.cc +0 -95
  1085. data/src/core/lib/iomgr/pollset_uv.h +0 -36
  1086. data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
  1087. data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
  1088. data/src/core/lib/iomgr/tcp_uv.cc +0 -421
  1089. data/src/core/lib/iomgr/timer_uv.cc +0 -66
  1090. data/src/core/lib/iomgr/udp_server.cc +0 -748
  1091. data/src/core/lib/iomgr/udp_server.h +0 -103
  1092. data/third_party/upb/third_party/wyhash/wyhash.h +0 -145
  1093. data/third_party/upb/upb/upb.int.h +0 -29
@@ -110,60 +110,26 @@ extern "C" {
110
110
  #define X509v3_KU_DECIPHER_ONLY 0x8000
111
111
  #define X509v3_KU_UNDEF 0xffff
112
112
 
113
+ struct X509_algor_st {
114
+ ASN1_OBJECT *algorithm;
115
+ ASN1_TYPE *parameter;
116
+ } /* X509_ALGOR */;
117
+
118
+ DECLARE_ASN1_FUNCTIONS(X509_ALGOR)
119
+
113
120
  DEFINE_STACK_OF(X509_ALGOR)
114
- DECLARE_ASN1_SET_OF(X509_ALGOR)
115
121
 
116
122
  typedef STACK_OF(X509_ALGOR) X509_ALGORS;
117
123
 
118
- struct X509_name_entry_st {
119
- ASN1_OBJECT *object;
120
- ASN1_STRING *value;
121
- int set;
122
- int size; // temp variable
123
- } /* X509_NAME_ENTRY */;
124
-
125
124
  DEFINE_STACK_OF(X509_NAME_ENTRY)
126
- DECLARE_ASN1_SET_OF(X509_NAME_ENTRY)
127
-
128
- // we always keep X509_NAMEs in 2 forms.
129
- struct X509_name_st {
130
- STACK_OF(X509_NAME_ENTRY) *entries;
131
- int modified; // true if 'bytes' needs to be built
132
- BUF_MEM *bytes;
133
- // unsigned long hash; Keep the hash around for lookups
134
- unsigned char *canon_enc;
135
- int canon_enclen;
136
- } /* X509_NAME */;
137
125
 
138
126
  DEFINE_STACK_OF(X509_NAME)
139
127
 
140
- struct X509_extension_st {
141
- ASN1_OBJECT *object;
142
- ASN1_BOOLEAN critical;
143
- ASN1_OCTET_STRING *value;
144
- } /* X509_EXTENSION */;
145
-
146
128
  typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS;
147
129
 
148
130
  DEFINE_STACK_OF(X509_EXTENSION)
149
- DECLARE_ASN1_SET_OF(X509_EXTENSION)
150
131
 
151
132
  DEFINE_STACK_OF(X509_ATTRIBUTE)
152
- DECLARE_ASN1_SET_OF(X509_ATTRIBUTE)
153
-
154
- struct x509_cinf_st {
155
- ASN1_INTEGER *version; // [ 0 ] default of v1
156
- ASN1_INTEGER *serialNumber;
157
- X509_ALGOR *signature;
158
- X509_NAME *issuer;
159
- X509_VAL *validity;
160
- X509_NAME *subject;
161
- X509_PUBKEY *key;
162
- ASN1_BIT_STRING *issuerUID; // [ 1 ] optional in v2
163
- ASN1_BIT_STRING *subjectUID; // [ 2 ] optional in v2
164
- STACK_OF(X509_EXTENSION) *extensions; // [ 3 ] optional in v3
165
- ASN1_ENCODING enc;
166
- } /* X509_CINF */;
167
133
 
168
134
  // This stuff is certificate "auxiliary info"
169
135
  // it contains details which are useful in certificate
@@ -173,33 +139,7 @@ struct x509_cinf_st {
173
139
  DECLARE_STACK_OF(DIST_POINT)
174
140
  DECLARE_STACK_OF(GENERAL_NAME)
175
141
 
176
- struct x509_st {
177
- X509_CINF *cert_info;
178
- X509_ALGOR *sig_alg;
179
- ASN1_BIT_STRING *signature;
180
- CRYPTO_refcount_t references;
181
- CRYPTO_EX_DATA ex_data;
182
- // These contain copies of various extension values
183
- long ex_pathlen;
184
- long ex_pcpathlen;
185
- unsigned long ex_flags;
186
- unsigned long ex_kusage;
187
- unsigned long ex_xkusage;
188
- unsigned long ex_nscert;
189
- ASN1_OCTET_STRING *skid;
190
- AUTHORITY_KEYID *akid;
191
- X509_POLICY_CACHE *policy_cache;
192
- STACK_OF(DIST_POINT) *crldp;
193
- STACK_OF(GENERAL_NAME) *altname;
194
- NAME_CONSTRAINTS *nc;
195
- unsigned char sha1_hash[SHA_DIGEST_LENGTH];
196
- X509_CERT_AUX *aux;
197
- CRYPTO_BUFFER *buf;
198
- CRYPTO_MUTEX lock;
199
- } /* X509 */;
200
-
201
142
  DEFINE_STACK_OF(X509)
202
- DECLARE_ASN1_SET_OF(X509)
203
143
 
204
144
  // This is used for a table of trust checking functions
205
145
 
@@ -266,7 +206,7 @@ DEFINE_STACK_OF(X509_TRUST)
266
206
  #define XN_FLAG_SEP_MASK (0xf << 16)
267
207
 
268
208
  #define XN_FLAG_COMPAT 0 // Traditional SSLeay: use old X509_NAME_print
269
- #define XN_FLAG_SEP_COMMA_PLUS (1 << 16) // RFC2253 ,+
209
+ #define XN_FLAG_SEP_COMMA_PLUS (1 << 16) // RFC 2253 ,+
270
210
  #define XN_FLAG_SEP_CPLUS_SPC (2 << 16) // ,+ spaced: more readable
271
211
  #define XN_FLAG_SEP_SPLUS_SPC (3 << 16) // ;+ spaced
272
212
  #define XN_FLAG_SEP_MULTILINE (4 << 16) // One line per field
@@ -285,13 +225,13 @@ DEFINE_STACK_OF(X509_TRUST)
285
225
  #define XN_FLAG_SPC_EQ (1 << 23) // Put spaces round '='
286
226
 
287
227
  // This determines if we dump fields we don't recognise:
288
- // RFC2253 requires this.
228
+ // RFC 2253 requires this.
289
229
 
290
230
  #define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24)
291
231
 
292
232
  #define XN_FLAG_FN_ALIGN (1 << 25) // Align field names to 20 characters
293
233
 
294
- // Complete set of RFC2253 flags
234
+ // Complete set of RFC 2253 flags
295
235
 
296
236
  #define XN_FLAG_RFC2253 \
297
237
  (ASN1_STRFLGS_RFC2253 | XN_FLAG_SEP_COMMA_PLUS | XN_FLAG_DN_REV | \
@@ -321,45 +261,10 @@ struct x509_revoked_st {
321
261
  };
322
262
 
323
263
  DEFINE_STACK_OF(X509_REVOKED)
324
- DECLARE_ASN1_SET_OF(X509_REVOKED)
325
-
326
- struct X509_crl_info_st {
327
- ASN1_INTEGER *version;
328
- X509_ALGOR *sig_alg;
329
- X509_NAME *issuer;
330
- ASN1_TIME *lastUpdate;
331
- ASN1_TIME *nextUpdate;
332
- STACK_OF(X509_REVOKED) *revoked;
333
- STACK_OF(X509_EXTENSION) /* [0] */ *extensions;
334
- ASN1_ENCODING enc;
335
- } /* X509_CRL_INFO */;
336
264
 
337
265
  DECLARE_STACK_OF(GENERAL_NAMES)
338
266
 
339
- struct X509_crl_st {
340
- // actual signature
341
- X509_CRL_INFO *crl;
342
- X509_ALGOR *sig_alg;
343
- ASN1_BIT_STRING *signature;
344
- CRYPTO_refcount_t references;
345
- int flags;
346
- // Copies of various extensions
347
- AUTHORITY_KEYID *akid;
348
- ISSUING_DIST_POINT *idp;
349
- // Convenient breakdown of IDP
350
- int idp_flags;
351
- int idp_reasons;
352
- // CRL and base CRL numbers for delta processing
353
- ASN1_INTEGER *crl_number;
354
- ASN1_INTEGER *base_crl_number;
355
- unsigned char sha1_hash[SHA_DIGEST_LENGTH];
356
- STACK_OF(GENERAL_NAMES) *issuers;
357
- const X509_CRL_METHOD *meth;
358
- void *meth_data;
359
- } /* X509_CRL */;
360
-
361
267
  DEFINE_STACK_OF(X509_CRL)
362
- DECLARE_ASN1_SET_OF(X509_CRL)
363
268
 
364
269
  struct private_key_st {
365
270
  int version;
@@ -379,7 +284,6 @@ struct private_key_st {
379
284
  EVP_CIPHER_INFO cipher;
380
285
  } /* X509_PKEY */;
381
286
 
382
- #ifndef OPENSSL_NO_EVP
383
287
  struct X509_info_st {
384
288
  X509 *x509;
385
289
  X509_CRL *crl;
@@ -392,7 +296,6 @@ struct X509_info_st {
392
296
  } /* X509_INFO */;
393
297
 
394
298
  DEFINE_STACK_OF(X509_INFO)
395
- #endif
396
299
 
397
300
  // The next 2 structures and their 8 routines were sent to me by
398
301
  // Pat Richard <patr@x509.com> and are used to manipulate
@@ -408,16 +311,6 @@ struct Netscape_spki_st {
408
311
  ASN1_BIT_STRING *signature;
409
312
  } /* NETSCAPE_SPKI */;
410
313
 
411
- #ifdef __cplusplus
412
- }
413
- #endif
414
-
415
- #include <openssl/x509_vfy.h>
416
-
417
- #ifdef __cplusplus
418
- extern "C" {
419
- #endif
420
-
421
314
  // TODO(davidben): Document remaining functions, reorganize them, and define
422
315
  // supported patterns for using |X509| objects in general. In particular, when
423
316
  // it is safe to call mutating functions is a little tricky due to various
@@ -503,7 +396,7 @@ OPENSSL_EXPORT void X509_get0_uids(const X509 *x509,
503
396
  #define X509_extract_key(x) X509_get_pubkey(x)
504
397
 
505
398
  // X509_get_pathlen returns path length constraint from the basic constraints
506
- // extension in |x509|. (See RFC5280, section 4.2.1.9.) It returns -1 if the
399
+ // extension in |x509|. (See RFC 5280, section 4.2.1.9.) It returns -1 if the
507
400
  // constraint is not present, or if some extension in |x509| was invalid.
508
401
  //
509
402
  // Note that decoding an |X509| object will not check for invalid extensions. To
@@ -617,9 +510,6 @@ OPENSSL_EXPORT X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x509);
617
510
  // X509_verify_cert_error_string returns |err| as a human-readable string, where
618
511
  // |err| should be one of the |X509_V_*| values. If |err| is unknown, it returns
619
512
  // a default description.
620
- //
621
- // TODO(davidben): Move this function to x509_vfy.h, with the |X509_V_*|
622
- // definitions, or fold x509_vfy.h into this function.
623
513
  OPENSSL_EXPORT const char *X509_verify_cert_error_string(long err);
624
514
 
625
515
  // X509_verify checks that |x509| has a valid signature by |pkey|. It returns
@@ -771,7 +661,6 @@ OPENSSL_EXPORT int X509_NAME_digest(const X509_NAME *name, const EVP_MD *md,
771
661
  // copying parts of it as a normal |d2i_X509| call would do.
772
662
  OPENSSL_EXPORT X509 *X509_parse_from_buffer(CRYPTO_BUFFER *buf);
773
663
 
774
- #ifndef OPENSSL_NO_FP_API
775
664
  OPENSSL_EXPORT X509 *d2i_X509_fp(FILE *fp, X509 **x509);
776
665
  OPENSSL_EXPORT int i2d_X509_fp(FILE *fp, X509 *x509);
777
666
  OPENSSL_EXPORT X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl);
@@ -805,7 +694,6 @@ OPENSSL_EXPORT int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey);
805
694
  OPENSSL_EXPORT EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a);
806
695
  OPENSSL_EXPORT int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey);
807
696
  OPENSSL_EXPORT EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a);
808
- #endif
809
697
 
810
698
  OPENSSL_EXPORT X509 *d2i_X509_bio(BIO *bp, X509 **x509);
811
699
  OPENSSL_EXPORT int i2d_X509_bio(BIO *bp, X509 *x509);
@@ -907,12 +795,30 @@ OPENSSL_EXPORT int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne);
907
795
  OPENSSL_EXPORT int X509_NAME_get0_der(X509_NAME *nm, const unsigned char **pder,
908
796
  size_t *pderlen);
909
797
 
798
+ // X509_cmp_time compares |s| against |*t|. On success, it returns a negative
799
+ // number if |s| <= |*t| and a positive number if |s| > |*t|. On error, it
800
+ // returns zero. If |t| is NULL, it uses the current time instead of |*t|.
801
+ //
802
+ // WARNING: Unlike most comparison functions, this function returns zero on
803
+ // error, not equality.
910
804
  OPENSSL_EXPORT int X509_cmp_time(const ASN1_TIME *s, time_t *t);
805
+
806
+ // X509_cmp_current_time behaves like |X509_cmp_time| but compares |s| against
807
+ // the current time.
911
808
  OPENSSL_EXPORT int X509_cmp_current_time(const ASN1_TIME *s);
912
- OPENSSL_EXPORT ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t);
809
+
810
+ // X509_time_adj calls |X509_time_adj_ex| with |offset_day| equal to zero.
811
+ OPENSSL_EXPORT ASN1_TIME *X509_time_adj(ASN1_TIME *s, long offset_sec,
812
+ time_t *t);
813
+
814
+ // X509_time_adj_ex behaves like |ASN1_TIME_adj|, but adds an offset to |*t|. If
815
+ // |t| is NULL, it uses the current time instead of |*t|.
913
816
  OPENSSL_EXPORT ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, int offset_day,
914
817
  long offset_sec, time_t *t);
915
- OPENSSL_EXPORT ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj);
818
+
819
+ // X509_gmtime_adj behaves like |X509_time_adj_ex| but adds |offset_sec| to the
820
+ // current time.
821
+ OPENSSL_EXPORT ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long offset_sec);
916
822
 
917
823
  OPENSSL_EXPORT const char *X509_get_default_cert_area(void);
918
824
  OPENSSL_EXPORT const char *X509_get_default_cert_dir(void);
@@ -929,7 +835,15 @@ DECLARE_ASN1_FUNCTIONS(X509_VAL)
929
835
 
930
836
  DECLARE_ASN1_FUNCTIONS(X509_PUBKEY)
931
837
 
838
+ // X509_PUBKEY_set serializes |pkey| into a newly-allocated |X509_PUBKEY|
839
+ // structure. On success, it frees |*x|, sets |*x| to the new object, and
840
+ // returns one. Otherwise, it returns zero.
932
841
  OPENSSL_EXPORT int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey);
842
+
843
+ // X509_PUBKEY_get decodes the public key in |key| and returns an |EVP_PKEY| on
844
+ // success, or NULL on error. The caller must release the result with
845
+ // |EVP_PKEY_free| when done. The |EVP_PKEY| is cached in |key|, so callers must
846
+ // not mutate the result.
933
847
  OPENSSL_EXPORT EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key);
934
848
 
935
849
  DECLARE_ASN1_FUNCTIONS(X509_SIG)
@@ -951,10 +865,10 @@ DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY)
951
865
 
952
866
  DECLARE_ASN1_FUNCTIONS(X509_NAME)
953
867
 
868
+ // X509_NAME_set makes a copy of |name|. On success, it frees |*xn|, sets |*xn|
869
+ // to the copy, and returns one. Otherwise, it returns zero.
954
870
  OPENSSL_EXPORT int X509_NAME_set(X509_NAME **xn, X509_NAME *name);
955
871
 
956
- DECLARE_ASN1_FUNCTIONS(X509_CINF)
957
-
958
872
  DECLARE_ASN1_FUNCTIONS(X509)
959
873
  DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX)
960
874
 
@@ -1048,7 +962,6 @@ OPENSSL_EXPORT void X509_trust_clear(X509 *x);
1048
962
  OPENSSL_EXPORT void X509_reject_clear(X509 *x);
1049
963
 
1050
964
  DECLARE_ASN1_FUNCTIONS(X509_REVOKED)
1051
- DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO)
1052
965
  DECLARE_ASN1_FUNCTIONS(X509_CRL)
1053
966
 
1054
967
  OPENSSL_EXPORT int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev);
@@ -1074,9 +987,10 @@ OPENSSL_EXPORT int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type,
1074
987
  void *data, unsigned char *md,
1075
988
  unsigned int *len);
1076
989
 
1077
- OPENSSL_EXPORT int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1,
1078
- ASN1_BIT_STRING *signature, void *data,
1079
- EVP_PKEY *pkey);
990
+ OPENSSL_EXPORT int ASN1_item_verify(const ASN1_ITEM *it,
991
+ const X509_ALGOR *algor1,
992
+ const ASN1_BIT_STRING *signature,
993
+ void *data, EVP_PKEY *pkey);
1080
994
 
1081
995
  OPENSSL_EXPORT int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1,
1082
996
  X509_ALGOR *algor2,
@@ -1158,7 +1072,7 @@ OPENSSL_EXPORT void X509_REQ_get0_signature(const X509_REQ *req,
1158
1072
  // a known NID.
1159
1073
  OPENSSL_EXPORT int X509_REQ_get_signature_nid(const X509_REQ *req);
1160
1074
 
1161
- // i2d_re_X509_REQ_tbs serializes the CertificationRequestInfo (see RFC2986)
1075
+ // i2d_re_X509_REQ_tbs serializes the CertificationRequestInfo (see RFC 2986)
1162
1076
  // portion of |req|. If |outp| is NULL, nothing is written. Otherwise, if
1163
1077
  // |*outp| is not NULL, the result is written to |*outp|, which must have enough
1164
1078
  // space available, and |*outp| is advanced just past the output. If |outp| is
@@ -1185,7 +1099,7 @@ OPENSSL_EXPORT EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req);
1185
1099
 
1186
1100
  // X509_REQ_extension_nid returns one if |nid| is a supported CSR attribute type
1187
1101
  // for carrying extensions and zero otherwise. The supported types are
1188
- // |NID_ext_req| (pkcs-9-at-extensionRequest from RFC2985) and |NID_ms_ext_req|
1102
+ // |NID_ext_req| (pkcs-9-at-extensionRequest from RFC 2985) and |NID_ms_ext_req|
1189
1103
  // (a Microsoft szOID_CERT_EXTENSIONS variant).
1190
1104
  OPENSSL_EXPORT int X509_REQ_extension_nid(int nid);
1191
1105
 
@@ -1193,7 +1107,7 @@ OPENSSL_EXPORT int X509_REQ_extension_nid(int nid);
1193
1107
  // returns a newly-allocated |STACK_OF(X509_EXTENSION)| containing the result.
1194
1108
  // It returns NULL on error, or if |req| did not request extensions.
1195
1109
  //
1196
- // This function supports both pkcs-9-at-extensionRequest from RFC2985 and the
1110
+ // This function supports both pkcs-9-at-extensionRequest from RFC 2985 and the
1197
1111
  // Microsoft szOID_CERT_EXTENSIONS variant.
1198
1112
  OPENSSL_EXPORT STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req);
1199
1113
 
@@ -1413,7 +1327,6 @@ OPENSSL_EXPORT unsigned long X509_NAME_hash_old(X509_NAME *x);
1413
1327
 
1414
1328
  OPENSSL_EXPORT int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b);
1415
1329
  OPENSSL_EXPORT int X509_CRL_match(const X509_CRL *a, const X509_CRL *b);
1416
- #ifndef OPENSSL_NO_FP_API
1417
1330
  OPENSSL_EXPORT int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag,
1418
1331
  unsigned long cflag);
1419
1332
  OPENSSL_EXPORT int X509_print_fp(FILE *bp, X509 *x);
@@ -1421,7 +1334,6 @@ OPENSSL_EXPORT int X509_CRL_print_fp(FILE *bp, X509_CRL *x);
1421
1334
  OPENSSL_EXPORT int X509_REQ_print_fp(FILE *bp, X509_REQ *req);
1422
1335
  OPENSSL_EXPORT int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm,
1423
1336
  int indent, unsigned long flags);
1424
- #endif
1425
1337
 
1426
1338
  OPENSSL_EXPORT int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase);
1427
1339
  OPENSSL_EXPORT int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent,
@@ -1486,28 +1398,90 @@ OPENSSL_EXPORT ASN1_OBJECT *X509_NAME_ENTRY_get_object(
1486
1398
  const X509_NAME_ENTRY *ne);
1487
1399
  OPENSSL_EXPORT ASN1_STRING *X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne);
1488
1400
 
1401
+ // X509v3_get_ext_count returns the number of extensions in |x|.
1489
1402
  OPENSSL_EXPORT int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x);
1403
+
1404
+ // X509v3_get_ext_by_NID returns the index of the first extension in |x| with
1405
+ // type |nid|, or a negative number if not found. If found, callers can use
1406
+ // |X509v3_get_ext| to look up the extension by index.
1407
+ //
1408
+ // If |lastpos| is non-negative, it begins searching at |lastpos| + 1. Callers
1409
+ // can thus loop over all matching extensions by first passing -1 and then
1410
+ // passing the previously-returned value until no match is returned.
1490
1411
  OPENSSL_EXPORT int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x,
1491
1412
  int nid, int lastpos);
1413
+
1414
+ // X509v3_get_ext_by_OBJ behaves like |X509v3_get_ext_by_NID| but looks for
1415
+ // extensions matching |obj|.
1492
1416
  OPENSSL_EXPORT int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x,
1493
1417
  const ASN1_OBJECT *obj, int lastpos);
1418
+
1419
+ // X509v3_get_ext_by_critical returns the index of the first extension in |x|
1420
+ // whose critical bit matches |crit|, or a negative number if no such extension
1421
+ // was found.
1422
+ //
1423
+ // If |lastpos| is non-negative, it begins searching at |lastpos| + 1. Callers
1424
+ // can thus loop over all matching extensions by first passing -1 and then
1425
+ // passing the previously-returned value until no match is returned.
1494
1426
  OPENSSL_EXPORT int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x,
1495
1427
  int crit, int lastpos);
1428
+
1429
+ // X509v3_get_ext returns the extension in |x| at index |loc|, or NULL if |loc|
1430
+ // is out of bounds.
1496
1431
  OPENSSL_EXPORT X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x,
1497
1432
  int loc);
1433
+
1434
+ // X509v3_delete_ext removes the extension in |x| at index |loc| and returns the
1435
+ // removed extension, or NULL if |loc| was out of bounds. If an extension was
1436
+ // returned, the caller must release it with |X509_EXTENSION_free|.
1498
1437
  OPENSSL_EXPORT X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x,
1499
1438
  int loc);
1439
+
1440
+ // X509v3_add_ext adds a copy of |ex| to the extension list in |*x|. If |*x| is
1441
+ // NULL, it allocates a new |STACK_OF(X509_EXTENSION)| to hold the copy and sets
1442
+ // |*x| to the new list. It returns |*x| on success and NULL on error. The
1443
+ // caller retains ownership of |ex| and can release it independently of |*x|.
1444
+ //
1445
+ // The new extension is inserted at index |loc|, shifting extensions to the
1446
+ // right. If |loc| is -1 or out of bounds, the new extension is appended to the
1447
+ // list.
1500
1448
  OPENSSL_EXPORT STACK_OF(X509_EXTENSION) *X509v3_add_ext(
1501
1449
  STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc);
1502
1450
 
1451
+ // X509_get_ext_count returns the number of extensions in |x|.
1503
1452
  OPENSSL_EXPORT int X509_get_ext_count(const X509 *x);
1453
+
1454
+ // X509_get_ext_by_NID behaves like |X509v3_get_ext_by_NID| but searches for
1455
+ // extensions in |x|.
1504
1456
  OPENSSL_EXPORT int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos);
1457
+
1458
+ // X509_get_ext_by_OBJ behaves like |X509v3_get_ext_by_OBJ| but searches for
1459
+ // extensions in |x|.
1505
1460
  OPENSSL_EXPORT int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj,
1506
1461
  int lastpos);
1462
+
1463
+ // X509_get_ext_by_critical behaves like |X509v3_get_ext_by_critical| but
1464
+ // searches for extensions in |x|.
1507
1465
  OPENSSL_EXPORT int X509_get_ext_by_critical(const X509 *x, int crit,
1508
1466
  int lastpos);
1467
+
1468
+ // X509_get_ext returns the extension in |x| at index |loc|, or NULL if |loc| is
1469
+ // out of bounds.
1509
1470
  OPENSSL_EXPORT X509_EXTENSION *X509_get_ext(const X509 *x, int loc);
1471
+
1472
+ // X509_delete_ext removes the extension in |x| at index |loc| and returns the
1473
+ // removed extension, or NULL if |loc| was out of bounds. If non-NULL, the
1474
+ // caller must release the result with |X509_EXTENSION_free|. It is also safe,
1475
+ // but not necessary, to call |X509_EXTENSION_free| if the result is NULL.
1510
1476
  OPENSSL_EXPORT X509_EXTENSION *X509_delete_ext(X509 *x, int loc);
1477
+
1478
+ // X509_add_ext adds a copy of |ex| to |x|. It returns one on success and zero
1479
+ // on failure. The caller retains ownership of |ex| and can release it
1480
+ // independently of |x|.
1481
+ //
1482
+ // The new extension is inserted at index |loc|, shifting extensions to the
1483
+ // right. If |loc| is -1 or out of bounds, the new extension is appended to the
1484
+ // list.
1511
1485
  OPENSSL_EXPORT int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc);
1512
1486
 
1513
1487
  // X509_get_ext_d2i behaves like |X509V3_get_d2i| but looks for the extension in
@@ -1527,15 +1501,41 @@ OPENSSL_EXPORT void *X509_get_ext_d2i(const X509 *x509, int nid,
1527
1501
  OPENSSL_EXPORT int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit,
1528
1502
  unsigned long flags);
1529
1503
 
1504
+ // X509_CRL_get_ext_count returns the number of extensions in |x|.
1530
1505
  OPENSSL_EXPORT int X509_CRL_get_ext_count(const X509_CRL *x);
1506
+
1507
+ // X509_CRL_get_ext_by_NID behaves like |X509v3_get_ext_by_NID| but searches for
1508
+ // extensions in |x|.
1531
1509
  OPENSSL_EXPORT int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid,
1532
1510
  int lastpos);
1511
+
1512
+ // X509_CRL_get_ext_by_OBJ behaves like |X509v3_get_ext_by_OBJ| but searches for
1513
+ // extensions in |x|.
1533
1514
  OPENSSL_EXPORT int X509_CRL_get_ext_by_OBJ(const X509_CRL *x,
1534
1515
  const ASN1_OBJECT *obj, int lastpos);
1516
+
1517
+ // X509_CRL_get_ext_by_critical behaves like |X509v3_get_ext_by_critical| but
1518
+ // searches for extensions in |x|.
1535
1519
  OPENSSL_EXPORT int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit,
1536
1520
  int lastpos);
1521
+
1522
+ // X509_CRL_get_ext returns the extension in |x| at index |loc|, or NULL if
1523
+ // |loc| is out of bounds.
1537
1524
  OPENSSL_EXPORT X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc);
1525
+
1526
+ // X509_CRL_delete_ext removes the extension in |x| at index |loc| and returns
1527
+ // the removed extension, or NULL if |loc| was out of bounds. If non-NULL, the
1528
+ // caller must release the result with |X509_EXTENSION_free|. It is also safe,
1529
+ // but not necessary, to call |X509_EXTENSION_free| if the result is NULL.
1538
1530
  OPENSSL_EXPORT X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc);
1531
+
1532
+ // X509_CRL_add_ext adds a copy of |ex| to |x|. It returns one on success and
1533
+ // zero on failure. The caller retains ownership of |ex| and can release it
1534
+ // independently of |x|.
1535
+ //
1536
+ // The new extension is inserted at index |loc|, shifting extensions to the
1537
+ // right. If |loc| is -1 or out of bounds, the new extension is appended to the
1538
+ // list.
1539
1539
  OPENSSL_EXPORT int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc);
1540
1540
 
1541
1541
  // X509_CRL_get_ext_d2i behaves like |X509V3_get_d2i| but looks for the
@@ -1555,18 +1555,45 @@ OPENSSL_EXPORT void *X509_CRL_get_ext_d2i(const X509_CRL *crl, int nid,
1555
1555
  OPENSSL_EXPORT int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value,
1556
1556
  int crit, unsigned long flags);
1557
1557
 
1558
+ // X509_REVOKED_get_ext_count returns the number of extensions in |x|.
1558
1559
  OPENSSL_EXPORT int X509_REVOKED_get_ext_count(const X509_REVOKED *x);
1560
+
1561
+ // X509_REVOKED_get_ext_by_NID behaves like |X509v3_get_ext_by_NID| but searches
1562
+ // for extensions in |x|.
1559
1563
  OPENSSL_EXPORT int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid,
1560
1564
  int lastpos);
1565
+
1566
+ // X509_REVOKED_get_ext_by_OBJ behaves like |X509v3_get_ext_by_OBJ| but searches
1567
+ // for extensions in |x|.
1561
1568
  OPENSSL_EXPORT int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x,
1562
1569
  const ASN1_OBJECT *obj,
1563
1570
  int lastpos);
1571
+
1572
+ // X509_REVOKED_get_ext_by_critical behaves like |X509v3_get_ext_by_critical|
1573
+ // but searches for extensions in |x|.
1564
1574
  OPENSSL_EXPORT int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x,
1565
1575
  int crit, int lastpos);
1576
+
1577
+ // X509_REVOKED_get_ext returns the extension in |x| at index |loc|, or NULL if
1578
+ // |loc| is out of bounds.
1566
1579
  OPENSSL_EXPORT X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x,
1567
1580
  int loc);
1581
+
1582
+ // X509_REVOKED_delete_ext removes the extension in |x| at index |loc| and
1583
+ // returns the removed extension, or NULL if |loc| was out of bounds. If
1584
+ // non-NULL, the caller must release the result with |X509_EXTENSION_free|. It
1585
+ // is also safe, but not necessary, to call |X509_EXTENSION_free| if the result
1586
+ // is NULL.
1568
1587
  OPENSSL_EXPORT X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x,
1569
1588
  int loc);
1589
+
1590
+ // X509_REVOKED_add_ext adds a copy of |ex| to |x|. It returns one on success
1591
+ // and zero on failure. The caller retains ownership of |ex| and can release it
1592
+ // independently of |x|.
1593
+ //
1594
+ // The new extension is inserted at index |loc|, shifting extensions to the
1595
+ // right. If |loc| is -1 or out of bounds, the new extension is appended to the
1596
+ // list.
1570
1597
  OPENSSL_EXPORT int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex,
1571
1598
  int loc);
1572
1599
 
@@ -1589,43 +1616,103 @@ OPENSSL_EXPORT int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid,
1589
1616
  void *value, int crit,
1590
1617
  unsigned long flags);
1591
1618
 
1619
+ // X509_EXTENSION_create_by_NID creates a new |X509_EXTENSION| with type |nid|,
1620
+ // value |data|, and critical bit |crit|. It returns the newly-allocated
1621
+ // |X509_EXTENSION| on success, and false on error. |nid| should be a |NID_*|
1622
+ // constant.
1623
+ //
1624
+ // If |ex| and |*ex| are both non-NULL, it modifies and returns |*ex| instead of
1625
+ // creating a new object. If |ex| is non-NULL, but |*ex| is NULL, it sets |*ex|
1626
+ // to the new |X509_EXTENSION|, in addition to returning the result.
1592
1627
  OPENSSL_EXPORT X509_EXTENSION *X509_EXTENSION_create_by_NID(
1593
1628
  X509_EXTENSION **ex, int nid, int crit, const ASN1_OCTET_STRING *data);
1629
+
1630
+ // X509_EXTENSION_create_by_OBJ behaves like |X509_EXTENSION_create_by_NID|, but
1631
+ // the extension type is determined by an |ASN1_OBJECT|.
1594
1632
  OPENSSL_EXPORT X509_EXTENSION *X509_EXTENSION_create_by_OBJ(
1595
1633
  X509_EXTENSION **ex, const ASN1_OBJECT *obj, int crit,
1596
1634
  const ASN1_OCTET_STRING *data);
1635
+
1636
+ // X509_EXTENSION_set_object sets |ex|'s extension type to |obj|. It returns one
1637
+ // on success and zero on error.
1597
1638
  OPENSSL_EXPORT int X509_EXTENSION_set_object(X509_EXTENSION *ex,
1598
1639
  const ASN1_OBJECT *obj);
1640
+
1641
+ // X509_EXTENSION_set_critical sets |ex| to critical if |crit| is non-zero and
1642
+ // to non-critical if |crit| is zero.
1599
1643
  OPENSSL_EXPORT int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit);
1644
+
1645
+ // X509_EXTENSION_set_data set's |ex|'s extension value to a copy of |data|. It
1646
+ // returns one on success and zero on error.
1600
1647
  OPENSSL_EXPORT int X509_EXTENSION_set_data(X509_EXTENSION *ex,
1601
1648
  const ASN1_OCTET_STRING *data);
1649
+
1650
+ // X509_EXTENSION_get_object returns |ex|'s extension type.
1602
1651
  OPENSSL_EXPORT ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex);
1652
+
1653
+ // X509_EXTENSION_get_data returns |ne|'s extension value.
1603
1654
  OPENSSL_EXPORT ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne);
1604
- OPENSSL_EXPORT int X509_EXTENSION_get_critical(X509_EXTENSION *ex);
1605
1655
 
1656
+ // X509_EXTENSION_get_critical returns one if |ex| is critical and zero
1657
+ // otherwise.
1658
+ OPENSSL_EXPORT int X509_EXTENSION_get_critical(const X509_EXTENSION *ex);
1659
+
1660
+ // X509at_get_attr_count returns the number of attributes in |x|.
1606
1661
  OPENSSL_EXPORT int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x);
1662
+
1663
+ // X509at_get_attr_by_NID returns the index of the attribute in |x| of type
1664
+ // |nid|, or a negative number if not found. If found, callers can use
1665
+ // |X509at_get_attr| to look up the attribute by index.
1666
+ //
1667
+ // If |lastpos| is non-negative, it begins searching at |lastpos| + 1. Callers
1668
+ // can thus loop over all matching attributes by first passing -1 and then
1669
+ // passing the previously-returned value until no match is returned.
1607
1670
  OPENSSL_EXPORT int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x,
1608
1671
  int nid, int lastpos);
1672
+
1673
+ // X509at_get_attr_by_OBJ behaves like |X509at_get_attr_by_NID| but looks for
1674
+ // attributes of type |obj|.
1609
1675
  OPENSSL_EXPORT int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk,
1610
1676
  const ASN1_OBJECT *obj, int lastpos);
1677
+
1678
+ // X509at_get_attr returns the attribute at index |loc| in |x|, or NULL if
1679
+ // out of bounds.
1611
1680
  OPENSSL_EXPORT X509_ATTRIBUTE *X509at_get_attr(
1612
1681
  const STACK_OF(X509_ATTRIBUTE) *x, int loc);
1682
+
1683
+ // X509at_delete_attr removes the attribute at index |loc| in |x|. It returns
1684
+ // the removed attribute to the caller, or NULL if |loc| was out of bounds. If
1685
+ // non-NULL, the caller must release the result with |X509_ATTRIBUTE_free| when
1686
+ // done. It is also safe, but not necessary, to call |X509_ATTRIBUTE_free| if
1687
+ // the result is NULL.
1613
1688
  OPENSSL_EXPORT X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x,
1614
1689
  int loc);
1690
+
1691
+ // X509at_add1_attr appends a copy of |attr| to the attribute list in |*x|. If
1692
+ // |*x| is NULL, it allocates a new |STACK_OF(X509_ATTRIBUTE)| to hold the copy
1693
+ // and sets |*x| to the new list. It returns |*x| on success and NULL on error.
1694
+ // The caller retains ownership of |attr| and can release it independently of
1695
+ // |*x|.
1615
1696
  OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(
1616
1697
  STACK_OF(X509_ATTRIBUTE) **x, X509_ATTRIBUTE *attr);
1698
+
1699
+ // X509at_add1_attr_by_OBJ behaves like |X509at_add1_attr|, but adds an
1700
+ // attribute created by |X509_ATTRIBUTE_create_by_OBJ|.
1617
1701
  OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(
1618
1702
  STACK_OF(X509_ATTRIBUTE) **x, const ASN1_OBJECT *obj, int type,
1619
1703
  const unsigned char *bytes, int len);
1704
+
1705
+ // X509at_add1_attr_by_NID behaves like |X509at_add1_attr|, but adds an
1706
+ // attribute created by |X509_ATTRIBUTE_create_by_NID|.
1620
1707
  OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(
1621
1708
  STACK_OF(X509_ATTRIBUTE) **x, int nid, int type, const unsigned char *bytes,
1622
1709
  int len);
1710
+
1711
+ // X509at_add1_attr_by_txt behaves like |X509at_add1_attr|, but adds an
1712
+ // attribute created by |X509_ATTRIBUTE_create_by_txt|.
1623
1713
  OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(
1624
1714
  STACK_OF(X509_ATTRIBUTE) **x, const char *attrname, int type,
1625
1715
  const unsigned char *bytes, int len);
1626
- OPENSSL_EXPORT void *X509at_get0_data_by_OBJ(STACK_OF(X509_ATTRIBUTE) *x,
1627
- ASN1_OBJECT *obj, int lastpos,
1628
- int type);
1629
1716
 
1630
1717
  // X509_ATTRIBUTE_create_by_NID returns a newly-allocated |X509_ATTRIBUTE| of
1631
1718
  // type |nid|, or NULL on error. The value is determined as in
@@ -1785,15 +1872,498 @@ OPENSSL_EXPORT char *X509_TRUST_get0_name(const X509_TRUST *xp);
1785
1872
  OPENSSL_EXPORT int X509_TRUST_get_trust(const X509_TRUST *xp);
1786
1873
 
1787
1874
 
1788
- typedef struct rsa_pss_params_st {
1875
+ struct rsa_pss_params_st {
1789
1876
  X509_ALGOR *hashAlgorithm;
1790
1877
  X509_ALGOR *maskGenAlgorithm;
1791
1878
  ASN1_INTEGER *saltLength;
1792
1879
  ASN1_INTEGER *trailerField;
1793
- } RSA_PSS_PARAMS;
1880
+ // OpenSSL caches the MGF hash on |RSA_PSS_PARAMS| in some cases. None of the
1881
+ // cases apply to BoringSSL, so this is always NULL, but Node expects the
1882
+ // field to be present.
1883
+ X509_ALGOR *maskHash;
1884
+ } /* RSA_PSS_PARAMS */;
1794
1885
 
1795
1886
  DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS)
1796
1887
 
1888
+ /*
1889
+ SSL_CTX -> X509_STORE
1890
+ -> X509_LOOKUP
1891
+ ->X509_LOOKUP_METHOD
1892
+ -> X509_LOOKUP
1893
+ ->X509_LOOKUP_METHOD
1894
+
1895
+ SSL -> X509_STORE_CTX
1896
+ ->X509_STORE
1897
+
1898
+ The X509_STORE holds the tables etc for verification stuff.
1899
+ A X509_STORE_CTX is used while validating a single certificate.
1900
+ The X509_STORE has X509_LOOKUPs for looking up certs.
1901
+ The X509_STORE then calls a function to actually verify the
1902
+ certificate chain.
1903
+ */
1904
+
1905
+ #define X509_LU_X509 1
1906
+ #define X509_LU_CRL 2
1907
+ #define X509_LU_PKEY 3
1908
+
1909
+ DEFINE_STACK_OF(X509_LOOKUP)
1910
+ DEFINE_STACK_OF(X509_OBJECT)
1911
+ DEFINE_STACK_OF(X509_VERIFY_PARAM)
1912
+
1913
+ typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *);
1914
+ typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *);
1915
+ typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer, X509_STORE_CTX *ctx,
1916
+ X509 *x);
1917
+ typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx, X509 *x,
1918
+ X509 *issuer);
1919
+ typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx);
1920
+ typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx, X509_CRL **crl,
1921
+ X509 *x);
1922
+ typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl);
1923
+ typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl,
1924
+ X509 *x);
1925
+ typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx);
1926
+ typedef STACK_OF(X509) *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx,
1927
+ X509_NAME *nm);
1928
+ typedef STACK_OF(X509_CRL) *(*X509_STORE_CTX_lookup_crls_fn)(
1929
+ X509_STORE_CTX *ctx, X509_NAME *nm);
1930
+ typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx);
1931
+
1932
+ OPENSSL_EXPORT int X509_STORE_set_depth(X509_STORE *store, int depth);
1933
+
1934
+ OPENSSL_EXPORT void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
1935
+
1936
+ #define X509_STORE_CTX_set_app_data(ctx, data) \
1937
+ X509_STORE_CTX_set_ex_data(ctx, 0, data)
1938
+ #define X509_STORE_CTX_get_app_data(ctx) X509_STORE_CTX_get_ex_data(ctx, 0)
1939
+
1940
+ #define X509_L_FILE_LOAD 1
1941
+ #define X509_L_ADD_DIR 2
1942
+
1943
+ #define X509_LOOKUP_load_file(x, name, type) \
1944
+ X509_LOOKUP_ctrl((x), X509_L_FILE_LOAD, (name), (long)(type), NULL)
1945
+
1946
+ #define X509_LOOKUP_add_dir(x, name, type) \
1947
+ X509_LOOKUP_ctrl((x), X509_L_ADD_DIR, (name), (long)(type), NULL)
1948
+
1949
+ #define X509_V_OK 0
1950
+ #define X509_V_ERR_UNSPECIFIED 1
1951
+
1952
+ #define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2
1953
+ #define X509_V_ERR_UNABLE_TO_GET_CRL 3
1954
+ #define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4
1955
+ #define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5
1956
+ #define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6
1957
+ #define X509_V_ERR_CERT_SIGNATURE_FAILURE 7
1958
+ #define X509_V_ERR_CRL_SIGNATURE_FAILURE 8
1959
+ #define X509_V_ERR_CERT_NOT_YET_VALID 9
1960
+ #define X509_V_ERR_CERT_HAS_EXPIRED 10
1961
+ #define X509_V_ERR_CRL_NOT_YET_VALID 11
1962
+ #define X509_V_ERR_CRL_HAS_EXPIRED 12
1963
+ #define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13
1964
+ #define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14
1965
+ #define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15
1966
+ #define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16
1967
+ #define X509_V_ERR_OUT_OF_MEM 17
1968
+ #define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18
1969
+ #define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19
1970
+ #define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20
1971
+ #define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21
1972
+ #define X509_V_ERR_CERT_CHAIN_TOO_LONG 22
1973
+ #define X509_V_ERR_CERT_REVOKED 23
1974
+ #define X509_V_ERR_INVALID_CA 24
1975
+ #define X509_V_ERR_PATH_LENGTH_EXCEEDED 25
1976
+ #define X509_V_ERR_INVALID_PURPOSE 26
1977
+ #define X509_V_ERR_CERT_UNTRUSTED 27
1978
+ #define X509_V_ERR_CERT_REJECTED 28
1979
+ // These are 'informational' when looking for issuer cert
1980
+ #define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29
1981
+ #define X509_V_ERR_AKID_SKID_MISMATCH 30
1982
+ #define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31
1983
+ #define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32
1984
+
1985
+ #define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33
1986
+ #define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34
1987
+ #define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35
1988
+ #define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36
1989
+ #define X509_V_ERR_INVALID_NON_CA 37
1990
+ #define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38
1991
+ #define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39
1992
+ #define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40
1993
+
1994
+ #define X509_V_ERR_INVALID_EXTENSION 41
1995
+ #define X509_V_ERR_INVALID_POLICY_EXTENSION 42
1996
+ #define X509_V_ERR_NO_EXPLICIT_POLICY 43
1997
+ #define X509_V_ERR_DIFFERENT_CRL_SCOPE 44
1998
+ #define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45
1999
+
2000
+ #define X509_V_ERR_UNNESTED_RESOURCE 46
2001
+
2002
+ #define X509_V_ERR_PERMITTED_VIOLATION 47
2003
+ #define X509_V_ERR_EXCLUDED_VIOLATION 48
2004
+ #define X509_V_ERR_SUBTREE_MINMAX 49
2005
+ #define X509_V_ERR_APPLICATION_VERIFICATION 50
2006
+ #define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51
2007
+ #define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52
2008
+ #define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53
2009
+ #define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54
2010
+
2011
+ // Suite B mode algorithm violation
2012
+ #define X509_V_ERR_SUITE_B_INVALID_VERSION 56
2013
+ #define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57
2014
+ #define X509_V_ERR_SUITE_B_INVALID_CURVE 58
2015
+ #define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59
2016
+ #define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60
2017
+ #define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61
2018
+
2019
+ // Host, email and IP check errors
2020
+ #define X509_V_ERR_HOSTNAME_MISMATCH 62
2021
+ #define X509_V_ERR_EMAIL_MISMATCH 63
2022
+ #define X509_V_ERR_IP_ADDRESS_MISMATCH 64
2023
+
2024
+ // Caller error
2025
+ #define X509_V_ERR_INVALID_CALL 65
2026
+ // Issuer lookup error
2027
+ #define X509_V_ERR_STORE_LOOKUP 66
2028
+
2029
+ #define X509_V_ERR_NAME_CONSTRAINTS_WITHOUT_SANS 67
2030
+
2031
+ // Certificate verify flags
2032
+
2033
+ // Send issuer+subject checks to verify_cb
2034
+ #define X509_V_FLAG_CB_ISSUER_CHECK 0x1
2035
+ // Use check time instead of current time
2036
+ #define X509_V_FLAG_USE_CHECK_TIME 0x2
2037
+ // Lookup CRLs
2038
+ #define X509_V_FLAG_CRL_CHECK 0x4
2039
+ // Lookup CRLs for whole chain
2040
+ #define X509_V_FLAG_CRL_CHECK_ALL 0x8
2041
+ // Ignore unhandled critical extensions
2042
+ #define X509_V_FLAG_IGNORE_CRITICAL 0x10
2043
+ // Does nothing as its functionality has been enabled by default.
2044
+ #define X509_V_FLAG_X509_STRICT 0x00
2045
+ // Enable proxy certificate validation
2046
+ #define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40
2047
+ // Enable policy checking
2048
+ #define X509_V_FLAG_POLICY_CHECK 0x80
2049
+ // Policy variable require-explicit-policy
2050
+ #define X509_V_FLAG_EXPLICIT_POLICY 0x100
2051
+ // Policy variable inhibit-any-policy
2052
+ #define X509_V_FLAG_INHIBIT_ANY 0x200
2053
+ // Policy variable inhibit-policy-mapping
2054
+ #define X509_V_FLAG_INHIBIT_MAP 0x400
2055
+ // Notify callback that policy is OK
2056
+ #define X509_V_FLAG_NOTIFY_POLICY 0x800
2057
+ // Extended CRL features such as indirect CRLs, alternate CRL signing keys
2058
+ #define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000
2059
+ // Delta CRL support
2060
+ #define X509_V_FLAG_USE_DELTAS 0x2000
2061
+ // Check selfsigned CA signature
2062
+ #define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000
2063
+ // Use trusted store first
2064
+ #define X509_V_FLAG_TRUSTED_FIRST 0x8000
2065
+ // Suite B 128 bit only mode: not normally used
2066
+ #define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000
2067
+ // Suite B 192 bit only mode
2068
+ #define X509_V_FLAG_SUITEB_192_LOS 0x20000
2069
+ // Suite B 128 bit mode allowing 192 bit algorithms
2070
+ #define X509_V_FLAG_SUITEB_128_LOS 0x30000
2071
+
2072
+ // Allow partial chains if at least one certificate is in trusted store
2073
+ #define X509_V_FLAG_PARTIAL_CHAIN 0x80000
2074
+
2075
+ // If the initial chain is not trusted, do not attempt to build an alternative
2076
+ // chain. Alternate chain checking was introduced in 1.0.2b. Setting this flag
2077
+ // will force the behaviour to match that of previous versions.
2078
+ #define X509_V_FLAG_NO_ALT_CHAINS 0x100000
2079
+
2080
+ #define X509_VP_FLAG_DEFAULT 0x1
2081
+ #define X509_VP_FLAG_OVERWRITE 0x2
2082
+ #define X509_VP_FLAG_RESET_FLAGS 0x4
2083
+ #define X509_VP_FLAG_LOCKED 0x8
2084
+ #define X509_VP_FLAG_ONCE 0x10
2085
+
2086
+ // Internal use: mask of policy related options
2087
+ #define X509_V_FLAG_POLICY_MASK \
2088
+ (X509_V_FLAG_POLICY_CHECK | X509_V_FLAG_EXPLICIT_POLICY | \
2089
+ X509_V_FLAG_INHIBIT_ANY | X509_V_FLAG_INHIBIT_MAP)
2090
+
2091
+ OPENSSL_EXPORT int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h,
2092
+ int type, X509_NAME *name);
2093
+ OPENSSL_EXPORT X509_OBJECT *X509_OBJECT_retrieve_by_subject(
2094
+ STACK_OF(X509_OBJECT) *h, int type, X509_NAME *name);
2095
+ OPENSSL_EXPORT X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h,
2096
+ X509_OBJECT *x);
2097
+ OPENSSL_EXPORT int X509_OBJECT_up_ref_count(X509_OBJECT *a);
2098
+ OPENSSL_EXPORT void X509_OBJECT_free_contents(X509_OBJECT *a);
2099
+ OPENSSL_EXPORT int X509_OBJECT_get_type(const X509_OBJECT *a);
2100
+ OPENSSL_EXPORT X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a);
2101
+ OPENSSL_EXPORT X509_STORE *X509_STORE_new(void);
2102
+ OPENSSL_EXPORT int X509_STORE_up_ref(X509_STORE *store);
2103
+ OPENSSL_EXPORT void X509_STORE_free(X509_STORE *v);
2104
+
2105
+ OPENSSL_EXPORT STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(X509_STORE *st);
2106
+ OPENSSL_EXPORT STACK_OF(X509) *X509_STORE_get1_certs(X509_STORE_CTX *st,
2107
+ X509_NAME *nm);
2108
+ OPENSSL_EXPORT STACK_OF(X509_CRL) *X509_STORE_get1_crls(X509_STORE_CTX *st,
2109
+ X509_NAME *nm);
2110
+ OPENSSL_EXPORT int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags);
2111
+ OPENSSL_EXPORT int X509_STORE_set_purpose(X509_STORE *ctx, int purpose);
2112
+ OPENSSL_EXPORT int X509_STORE_set_trust(X509_STORE *ctx, int trust);
2113
+ OPENSSL_EXPORT int X509_STORE_set1_param(X509_STORE *ctx,
2114
+ X509_VERIFY_PARAM *pm);
2115
+ OPENSSL_EXPORT X509_VERIFY_PARAM *X509_STORE_get0_param(X509_STORE *ctx);
2116
+
2117
+ OPENSSL_EXPORT void X509_STORE_set_verify(X509_STORE *ctx,
2118
+ X509_STORE_CTX_verify_fn verify);
2119
+ #define X509_STORE_set_verify_func(ctx, func) \
2120
+ X509_STORE_set_verify((ctx), (func))
2121
+ OPENSSL_EXPORT void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx,
2122
+ X509_STORE_CTX_verify_fn verify);
2123
+ OPENSSL_EXPORT X509_STORE_CTX_verify_fn X509_STORE_get_verify(X509_STORE *ctx);
2124
+ OPENSSL_EXPORT void X509_STORE_set_verify_cb(
2125
+ X509_STORE *ctx, X509_STORE_CTX_verify_cb verify_cb);
2126
+ #define X509_STORE_set_verify_cb_func(ctx, func) \
2127
+ X509_STORE_set_verify_cb((ctx), (func))
2128
+ OPENSSL_EXPORT X509_STORE_CTX_verify_cb
2129
+ X509_STORE_get_verify_cb(X509_STORE *ctx);
2130
+ OPENSSL_EXPORT void X509_STORE_set_get_issuer(
2131
+ X509_STORE *ctx, X509_STORE_CTX_get_issuer_fn get_issuer);
2132
+ OPENSSL_EXPORT X509_STORE_CTX_get_issuer_fn
2133
+ X509_STORE_get_get_issuer(X509_STORE *ctx);
2134
+ OPENSSL_EXPORT void X509_STORE_set_check_issued(
2135
+ X509_STORE *ctx, X509_STORE_CTX_check_issued_fn check_issued);
2136
+ OPENSSL_EXPORT X509_STORE_CTX_check_issued_fn
2137
+ X509_STORE_get_check_issued(X509_STORE *ctx);
2138
+ OPENSSL_EXPORT void X509_STORE_set_check_revocation(
2139
+ X509_STORE *ctx, X509_STORE_CTX_check_revocation_fn check_revocation);
2140
+ OPENSSL_EXPORT X509_STORE_CTX_check_revocation_fn
2141
+ X509_STORE_get_check_revocation(X509_STORE *ctx);
2142
+ OPENSSL_EXPORT void X509_STORE_set_get_crl(X509_STORE *ctx,
2143
+ X509_STORE_CTX_get_crl_fn get_crl);
2144
+ OPENSSL_EXPORT X509_STORE_CTX_get_crl_fn
2145
+ X509_STORE_get_get_crl(X509_STORE *ctx);
2146
+ OPENSSL_EXPORT void X509_STORE_set_check_crl(
2147
+ X509_STORE *ctx, X509_STORE_CTX_check_crl_fn check_crl);
2148
+ OPENSSL_EXPORT X509_STORE_CTX_check_crl_fn
2149
+ X509_STORE_get_check_crl(X509_STORE *ctx);
2150
+ OPENSSL_EXPORT void X509_STORE_set_cert_crl(
2151
+ X509_STORE *ctx, X509_STORE_CTX_cert_crl_fn cert_crl);
2152
+ OPENSSL_EXPORT X509_STORE_CTX_cert_crl_fn
2153
+ X509_STORE_get_cert_crl(X509_STORE *ctx);
2154
+ OPENSSL_EXPORT void X509_STORE_set_lookup_certs(
2155
+ X509_STORE *ctx, X509_STORE_CTX_lookup_certs_fn lookup_certs);
2156
+ OPENSSL_EXPORT X509_STORE_CTX_lookup_certs_fn
2157
+ X509_STORE_get_lookup_certs(X509_STORE *ctx);
2158
+ OPENSSL_EXPORT void X509_STORE_set_lookup_crls(
2159
+ X509_STORE *ctx, X509_STORE_CTX_lookup_crls_fn lookup_crls);
2160
+ #define X509_STORE_set_lookup_crls_cb(ctx, func) \
2161
+ X509_STORE_set_lookup_crls((ctx), (func))
2162
+ OPENSSL_EXPORT X509_STORE_CTX_lookup_crls_fn
2163
+ X509_STORE_get_lookup_crls(X509_STORE *ctx);
2164
+ OPENSSL_EXPORT void X509_STORE_set_cleanup(X509_STORE *ctx,
2165
+ X509_STORE_CTX_cleanup_fn cleanup);
2166
+ OPENSSL_EXPORT X509_STORE_CTX_cleanup_fn
2167
+ X509_STORE_get_cleanup(X509_STORE *ctx);
2168
+
2169
+ OPENSSL_EXPORT X509_STORE_CTX *X509_STORE_CTX_new(void);
2170
+
2171
+ OPENSSL_EXPORT int X509_STORE_CTX_get1_issuer(X509 **issuer,
2172
+ X509_STORE_CTX *ctx, X509 *x);
2173
+
2174
+ OPENSSL_EXPORT void X509_STORE_CTX_zero(X509_STORE_CTX *ctx);
2175
+ OPENSSL_EXPORT void X509_STORE_CTX_free(X509_STORE_CTX *ctx);
2176
+ OPENSSL_EXPORT int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store,
2177
+ X509 *x509, STACK_OF(X509) *chain);
2178
+ OPENSSL_EXPORT void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *ctx,
2179
+ STACK_OF(X509) *sk);
2180
+ OPENSSL_EXPORT void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx);
2181
+
2182
+ OPENSSL_EXPORT X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx);
2183
+ OPENSSL_EXPORT X509 *X509_STORE_CTX_get0_cert(X509_STORE_CTX *ctx);
2184
+
2185
+ OPENSSL_EXPORT X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v,
2186
+ X509_LOOKUP_METHOD *m);
2187
+
2188
+ OPENSSL_EXPORT X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void);
2189
+ OPENSSL_EXPORT X509_LOOKUP_METHOD *X509_LOOKUP_file(void);
2190
+
2191
+ OPENSSL_EXPORT int X509_STORE_add_cert(X509_STORE *ctx, X509 *x);
2192
+ OPENSSL_EXPORT int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x);
2193
+
2194
+ OPENSSL_EXPORT int X509_STORE_get_by_subject(X509_STORE_CTX *vs, int type,
2195
+ X509_NAME *name, X509_OBJECT *ret);
2196
+
2197
+ OPENSSL_EXPORT int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc,
2198
+ long argl, char **ret);
2199
+
2200
+ #ifndef OPENSSL_NO_STDIO
2201
+ OPENSSL_EXPORT int X509_load_cert_file(X509_LOOKUP *ctx, const char *file,
2202
+ int type);
2203
+ OPENSSL_EXPORT int X509_load_crl_file(X509_LOOKUP *ctx, const char *file,
2204
+ int type);
2205
+ OPENSSL_EXPORT int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file,
2206
+ int type);
2207
+ #endif
2208
+
2209
+ OPENSSL_EXPORT X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method);
2210
+ OPENSSL_EXPORT void X509_LOOKUP_free(X509_LOOKUP *ctx);
2211
+ OPENSSL_EXPORT int X509_LOOKUP_init(X509_LOOKUP *ctx);
2212
+ OPENSSL_EXPORT int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, int type,
2213
+ X509_NAME *name, X509_OBJECT *ret);
2214
+ OPENSSL_EXPORT int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, int type,
2215
+ X509_NAME *name,
2216
+ ASN1_INTEGER *serial,
2217
+ X509_OBJECT *ret);
2218
+ OPENSSL_EXPORT int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, int type,
2219
+ unsigned char *bytes, int len,
2220
+ X509_OBJECT *ret);
2221
+ OPENSSL_EXPORT int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, int type, char *str,
2222
+ int len, X509_OBJECT *ret);
2223
+ OPENSSL_EXPORT int X509_LOOKUP_shutdown(X509_LOOKUP *ctx);
2224
+
2225
+ #ifndef OPENSSL_NO_STDIO
2226
+ OPENSSL_EXPORT int X509_STORE_load_locations(X509_STORE *ctx, const char *file,
2227
+ const char *dir);
2228
+ OPENSSL_EXPORT int X509_STORE_set_default_paths(X509_STORE *ctx);
2229
+ #endif
2230
+
2231
+ OPENSSL_EXPORT int X509_STORE_CTX_get_ex_new_index(long argl, void *argp,
2232
+ CRYPTO_EX_unused *unused,
2233
+ CRYPTO_EX_dup *dup_unused,
2234
+ CRYPTO_EX_free *free_func);
2235
+ OPENSSL_EXPORT int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx,
2236
+ void *data);
2237
+ OPENSSL_EXPORT void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx);
2238
+ OPENSSL_EXPORT int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx);
2239
+ OPENSSL_EXPORT void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s);
2240
+ OPENSSL_EXPORT int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx);
2241
+ OPENSSL_EXPORT X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx);
2242
+ OPENSSL_EXPORT X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx);
2243
+ OPENSSL_EXPORT X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx);
2244
+ OPENSSL_EXPORT X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(
2245
+ X509_STORE_CTX *ctx);
2246
+ OPENSSL_EXPORT STACK_OF(X509) *X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx);
2247
+ OPENSSL_EXPORT STACK_OF(X509) *X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx);
2248
+ OPENSSL_EXPORT STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx);
2249
+ OPENSSL_EXPORT void X509_STORE_CTX_set_cert(X509_STORE_CTX *c, X509 *x);
2250
+ OPENSSL_EXPORT void X509_STORE_CTX_set_chain(X509_STORE_CTX *c,
2251
+ STACK_OF(X509) *sk);
2252
+ OPENSSL_EXPORT STACK_OF(X509) *X509_STORE_CTX_get0_untrusted(
2253
+ X509_STORE_CTX *ctx);
2254
+ OPENSSL_EXPORT void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c,
2255
+ STACK_OF(X509_CRL) *sk);
2256
+ OPENSSL_EXPORT int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose);
2257
+ OPENSSL_EXPORT int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust);
2258
+ OPENSSL_EXPORT int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx,
2259
+ int def_purpose, int purpose,
2260
+ int trust);
2261
+ OPENSSL_EXPORT void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx,
2262
+ unsigned long flags);
2263
+ OPENSSL_EXPORT void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx,
2264
+ unsigned long flags, time_t t);
2265
+ OPENSSL_EXPORT void X509_STORE_CTX_set_verify_cb(
2266
+ X509_STORE_CTX *ctx, int (*verify_cb)(int, X509_STORE_CTX *));
2267
+
2268
+ OPENSSL_EXPORT X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(
2269
+ X509_STORE_CTX *ctx);
2270
+ OPENSSL_EXPORT int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx);
2271
+
2272
+ OPENSSL_EXPORT X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(
2273
+ X509_STORE_CTX *ctx);
2274
+ OPENSSL_EXPORT void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx,
2275
+ X509_VERIFY_PARAM *param);
2276
+ OPENSSL_EXPORT int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx,
2277
+ const char *name);
2278
+
2279
+ // X509_VERIFY_PARAM functions
2280
+
2281
+ OPENSSL_EXPORT X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void);
2282
+ OPENSSL_EXPORT void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param);
2283
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to,
2284
+ const X509_VERIFY_PARAM *from);
2285
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to,
2286
+ const X509_VERIFY_PARAM *from);
2287
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param,
2288
+ const char *name);
2289
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param,
2290
+ unsigned long flags);
2291
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param,
2292
+ unsigned long flags);
2293
+ OPENSSL_EXPORT unsigned long X509_VERIFY_PARAM_get_flags(
2294
+ X509_VERIFY_PARAM *param);
2295
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param,
2296
+ int purpose);
2297
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param,
2298
+ int trust);
2299
+ OPENSSL_EXPORT void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param,
2300
+ int depth);
2301
+ OPENSSL_EXPORT void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param,
2302
+ time_t t);
2303
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param,
2304
+ ASN1_OBJECT *policy);
2305
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_set1_policies(
2306
+ X509_VERIFY_PARAM *param, STACK_OF(ASN1_OBJECT) *policies);
2307
+
2308
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param,
2309
+ const char *name,
2310
+ size_t namelen);
2311
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param,
2312
+ const char *name,
2313
+ size_t namelen);
2314
+ OPENSSL_EXPORT void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param,
2315
+ unsigned int flags);
2316
+ OPENSSL_EXPORT char *X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *);
2317
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param,
2318
+ const char *email,
2319
+ size_t emaillen);
2320
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param,
2321
+ const unsigned char *ip,
2322
+ size_t iplen);
2323
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param,
2324
+ const char *ipasc);
2325
+
2326
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param);
2327
+ OPENSSL_EXPORT const char *X509_VERIFY_PARAM_get0_name(
2328
+ const X509_VERIFY_PARAM *param);
2329
+
2330
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param);
2331
+ OPENSSL_EXPORT int X509_VERIFY_PARAM_get_count(void);
2332
+ OPENSSL_EXPORT const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id);
2333
+ OPENSSL_EXPORT const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(
2334
+ const char *name);
2335
+ OPENSSL_EXPORT void X509_VERIFY_PARAM_table_cleanup(void);
2336
+
2337
+ OPENSSL_EXPORT int X509_policy_check(X509_POLICY_TREE **ptree,
2338
+ int *pexplicit_policy,
2339
+ STACK_OF(X509) *certs,
2340
+ STACK_OF(ASN1_OBJECT) *policy_oids,
2341
+ unsigned int flags);
2342
+
2343
+ OPENSSL_EXPORT void X509_policy_tree_free(X509_POLICY_TREE *tree);
2344
+
2345
+ OPENSSL_EXPORT int X509_policy_tree_level_count(const X509_POLICY_TREE *tree);
2346
+ OPENSSL_EXPORT X509_POLICY_LEVEL *X509_policy_tree_get0_level(
2347
+ const X509_POLICY_TREE *tree, int i);
2348
+
2349
+ OPENSSL_EXPORT STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_policies(
2350
+ const X509_POLICY_TREE *tree);
2351
+
2352
+ OPENSSL_EXPORT STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_user_policies(
2353
+ const X509_POLICY_TREE *tree);
2354
+
2355
+ OPENSSL_EXPORT int X509_policy_level_node_count(X509_POLICY_LEVEL *level);
2356
+
2357
+ OPENSSL_EXPORT X509_POLICY_NODE *X509_policy_level_get0_node(
2358
+ X509_POLICY_LEVEL *level, int i);
2359
+
2360
+ OPENSSL_EXPORT const ASN1_OBJECT *X509_policy_node_get0_policy(
2361
+ const X509_POLICY_NODE *node);
2362
+
2363
+ OPENSSL_EXPORT STACK_OF(POLICYQUALINFO) *X509_policy_node_get0_qualifiers(
2364
+ const X509_POLICY_NODE *node);
2365
+ OPENSSL_EXPORT const X509_POLICY_NODE *X509_policy_node_get0_parent(
2366
+ const X509_POLICY_NODE *node);
1797
2367
 
1798
2368
 
1799
2369
  #ifdef __cplusplus
@@ -1826,13 +2396,10 @@ BORINGSSL_MAKE_DELETER(X509_REQ, X509_REQ_free)
1826
2396
  BORINGSSL_MAKE_DELETER(X509_REVOKED, X509_REVOKED_free)
1827
2397
  BORINGSSL_MAKE_DELETER(X509_SIG, X509_SIG_free)
1828
2398
  BORINGSSL_MAKE_DELETER(X509_STORE, X509_STORE_free)
2399
+ BORINGSSL_MAKE_UP_REF(X509_STORE, X509_STORE_up_ref)
1829
2400
  BORINGSSL_MAKE_DELETER(X509_STORE_CTX, X509_STORE_CTX_free)
1830
2401
  BORINGSSL_MAKE_DELETER(X509_VERIFY_PARAM, X509_VERIFY_PARAM_free)
1831
2402
 
1832
- using ScopedX509_STORE_CTX =
1833
- internal::StackAllocated<X509_STORE_CTX, void, X509_STORE_CTX_zero,
1834
- X509_STORE_CTX_cleanup>;
1835
-
1836
2403
  BSSL_NAMESPACE_END
1837
2404
 
1838
2405
  } // extern C++