grpc 1.28.0 → 1.37.0

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 (1541) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1734 -22357
  3. data/etc/roots.pem +257 -573
  4. data/include/grpc/compression.h +1 -1
  5. data/include/grpc/grpc.h +31 -9
  6. data/include/grpc/grpc_security.h +274 -180
  7. data/include/grpc/grpc_security_constants.h +4 -0
  8. data/include/grpc/impl/codegen/README.md +22 -0
  9. data/include/grpc/impl/codegen/atm_windows.h +4 -0
  10. data/include/grpc/impl/codegen/byte_buffer.h +1 -1
  11. data/include/grpc/impl/codegen/grpc_types.h +32 -30
  12. data/include/grpc/impl/codegen/log.h +0 -2
  13. data/include/grpc/impl/codegen/port_platform.h +36 -90
  14. data/include/grpc/impl/codegen/sync_windows.h +4 -0
  15. data/include/grpc/module.modulemap +24 -39
  16. data/include/grpc/slice_buffer.h +3 -3
  17. data/include/grpc/support/sync.h +3 -3
  18. data/include/grpc/support/time.h +7 -7
  19. data/src/core/ext/filters/client_channel/backend_metric.cc +16 -12
  20. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
  21. data/src/core/ext/filters/client_channel/client_channel.cc +3845 -2414
  22. data/src/core/ext/filters/client_channel/client_channel.h +1 -7
  23. data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
  24. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
  25. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -3
  26. data/src/core/ext/filters/client_channel/config_selector.cc +58 -0
  27. data/src/core/ext/filters/client_channel/config_selector.h +133 -0
  28. data/src/core/ext/filters/client_channel/dynamic_filters.cc +191 -0
  29. data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
  30. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +26 -122
  31. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
  32. data/src/core/ext/filters/client_channel/health/health_check_client.cc +25 -30
  33. data/src/core/ext/filters/client_channel/health/health_check_client.h +7 -7
  34. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +15 -16
  35. data/src/core/ext/filters/client_channel/http_proxy.cc +44 -34
  36. data/src/core/ext/filters/client_channel/lb_policy.cc +28 -20
  37. data/src/core/ext/filters/client_channel/lb_policy.h +50 -38
  38. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +96 -0
  39. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +101 -0
  40. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +20 -11
  41. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  42. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +481 -510
  43. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +76 -0
  44. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +37 -0
  45. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
  46. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +6 -41
  47. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
  48. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
  49. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
  50. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
  51. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +24 -18
  52. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +922 -0
  53. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
  54. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
  55. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +11 -10
  56. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +18 -46
  57. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +744 -0
  58. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +520 -134
  59. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -26
  60. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
  61. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +795 -0
  62. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +722 -0
  63. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1384 -0
  64. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +18 -8
  65. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
  66. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +12 -10
  67. data/src/core/ext/filters/client_channel/resolver.cc +9 -10
  68. data/src/core/ext/filters/client_channel/resolver.h +10 -20
  69. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +111 -110
  70. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +4 -34
  71. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +22 -24
  72. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +15 -13
  73. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +82 -123
  74. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +642 -184
  75. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +10 -3
  76. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  77. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  78. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +61 -61
  79. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +102 -108
  80. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -5
  81. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +377 -0
  82. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +38 -31
  83. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +829 -46
  84. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
  85. data/src/core/ext/filters/client_channel/resolver_factory.h +8 -8
  86. data/src/core/ext/filters/client_channel/resolver_registry.cc +55 -52
  87. data/src/core/ext/filters/client_channel/resolver_registry.h +10 -10
  88. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +47 -93
  89. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +30 -26
  90. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
  91. data/src/core/ext/filters/client_channel/retry_throttle.h +4 -2
  92. data/src/core/ext/filters/client_channel/server_address.cc +132 -13
  93. data/src/core/ext/filters/client_channel/server_address.h +80 -32
  94. data/src/core/ext/filters/client_channel/service_config.cc +114 -149
  95. data/src/core/ext/filters/client_channel/service_config.h +33 -100
  96. data/src/core/ext/filters/client_channel/service_config_call_data.h +86 -0
  97. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
  98. data/src/core/ext/filters/client_channel/service_config_parser.cc +89 -0
  99. data/src/core/ext/filters/client_channel/service_config_parser.h +92 -0
  100. data/src/core/ext/filters/client_channel/subchannel.cc +211 -230
  101. data/src/core/ext/filters/client_channel/subchannel.h +116 -118
  102. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
  103. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
  104. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -10
  105. data/src/core/ext/filters/client_idle/client_idle_filter.cc +1 -1
  106. data/src/core/ext/filters/deadline/deadline_filter.cc +87 -79
  107. data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
  108. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +495 -0
  109. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
  110. data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
  111. data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
  112. data/src/core/ext/filters/http/client/http_client_filter.cc +29 -34
  113. data/src/core/ext/filters/http/client_authority_filter.cc +10 -10
  114. data/src/core/ext/filters/http/http_filters_plugin.cc +34 -15
  115. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
  116. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +399 -0
  117. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +31 -0
  118. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  119. data/src/core/ext/filters/max_age/max_age_filter.cc +38 -34
  120. data/src/core/ext/filters/message_size/message_size_filter.cc +64 -90
  121. data/src/core/ext/filters/message_size/message_size_filter.h +12 -5
  122. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +1 -1
  123. data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
  124. data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
  125. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
  126. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +19 -2
  127. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +23 -10
  128. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
  129. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +37 -49
  130. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +803 -355
  131. data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
  132. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +13 -3
  133. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +19 -18
  134. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +65 -21
  135. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
  136. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
  137. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +343 -347
  138. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +13 -1
  139. data/src/core/ext/transport/chttp2/transport/flow_control.cc +36 -33
  140. data/src/core/ext/transport/chttp2/transport/flow_control.h +27 -19
  141. data/src/core/ext/transport/chttp2/transport/frame_data.cc +14 -13
  142. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -7
  143. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
  144. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
  145. data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
  146. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
  147. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
  148. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -9
  149. data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -4
  150. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +15 -18
  151. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
  152. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +30 -17
  153. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
  154. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +37 -37
  155. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  156. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
  157. data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
  158. data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
  159. data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
  160. data/src/core/ext/transport/chttp2/transport/internal.h +38 -23
  161. data/src/core/ext/transport/chttp2/transport/parsing.cc +52 -74
  162. data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
  163. data/src/core/ext/transport/chttp2/transport/writing.cc +30 -28
  164. data/src/core/ext/transport/inproc/inproc_transport.cc +106 -33
  165. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
  166. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
  167. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -1
  168. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  169. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +10 -4
  170. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +243 -0
  171. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +865 -0
  172. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
  173. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
  174. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
  175. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +253 -0
  176. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +453 -0
  177. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1801 -0
  178. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +35 -0
  179. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +77 -0
  180. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +56 -0
  181. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +364 -0
  182. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +124 -0
  183. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +428 -0
  184. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +35 -0
  185. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +88 -0
  186. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +334 -0
  187. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1066 -0
  188. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +103 -0
  189. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +388 -0
  190. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
  191. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +78 -0
  192. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
  193. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +149 -0
  194. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
  195. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +839 -0
  196. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
  197. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +767 -0
  198. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +36 -0
  199. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +88 -0
  200. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +182 -0
  201. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +755 -0
  202. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +27 -0
  203. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +65 -0
  204. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +34 -0
  205. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +95 -0
  206. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +42 -0
  207. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +126 -0
  208. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +90 -0
  209. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +243 -0
  210. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
  211. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +305 -0
  212. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
  213. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +367 -0
  214. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +33 -0
  215. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +73 -0
  216. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +130 -0
  217. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +557 -0
  218. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +159 -0
  219. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +623 -0
  220. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +40 -0
  221. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +107 -0
  222. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
  223. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
  224. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
  225. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
  226. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +178 -0
  227. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +662 -0
  228. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +65 -0
  229. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +237 -0
  230. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +941 -0
  231. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3790 -0
  232. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
  233. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +159 -0
  234. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +49 -0
  235. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +122 -0
  236. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
  237. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
  238. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
  239. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
  240. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
  241. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
  242. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
  243. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
  244. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +362 -0
  245. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1488 -0
  246. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +19 -0
  247. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +35 -0
  248. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +113 -0
  249. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +458 -0
  250. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +73 -0
  251. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +219 -0
  252. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +146 -0
  253. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +621 -0
  254. data/src/core/ext/upb-generated/envoy/{api/v2/rds.upb.c → service/cluster/v3/cds.upb.c} +7 -9
  255. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +56 -0
  256. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +25 -0
  257. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +56 -0
  258. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +146 -0
  259. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +499 -0
  260. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +27 -0
  261. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +56 -0
  262. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +27 -0
  263. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +56 -0
  264. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +54 -0
  265. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +151 -0
  266. data/src/core/ext/upb-generated/envoy/{api/v2/srds.upb.c → service/route/v3/rds.upb.c} +7 -7
  267. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +56 -0
  268. data/src/core/ext/upb-generated/envoy/{api/v2/cds.upb.c → service/route/v3/srds.upb.c} +7 -7
  269. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +56 -0
  270. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
  271. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
  272. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
  273. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +128 -0
  274. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
  275. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
  276. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
  277. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +84 -0
  278. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
  279. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +78 -0
  280. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
  281. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +166 -0
  282. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
  283. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +146 -0
  284. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
  285. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
  286. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
  287. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +207 -0
  288. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
  289. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +301 -0
  290. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
  291. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +283 -0
  292. data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +3 -2
  293. data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +9 -9
  294. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +40 -0
  295. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +99 -0
  296. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +51 -0
  297. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +130 -0
  298. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +30 -0
  299. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +68 -0
  300. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  301. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +242 -0
  302. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +830 -0
  303. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +251 -0
  304. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +871 -0
  305. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  306. data/src/core/ext/upb-generated/google/api/http.upb.h +52 -32
  307. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  308. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +12 -6
  309. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +107 -106
  310. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +691 -496
  311. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  312. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +12 -6
  313. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  314. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +8 -2
  315. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +5 -5
  316. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +55 -57
  317. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  318. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +12 -6
  319. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
  320. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +82 -28
  321. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  322. data/src/core/ext/upb-generated/google/rpc/status.upb.h +17 -10
  323. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +5 -5
  324. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +40 -45
  325. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +43 -43
  326. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +236 -184
  327. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
  328. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +29 -13
  329. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  330. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +19 -7
  331. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
  332. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +122 -62
  333. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  334. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +30 -12
  335. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
  336. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +64 -0
  337. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -1
  338. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
  339. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +71 -0
  340. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
  341. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +60 -0
  342. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +9 -9
  343. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +48 -68
  344. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
  345. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
  346. data/src/core/ext/upb-generated/validate/validate.upb.c +71 -70
  347. data/src/core/ext/upb-generated/validate/validate.upb.h +732 -586
  348. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +28 -0
  349. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
  350. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
  351. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
  352. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
  353. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
  354. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +36 -0
  355. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
  356. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
  357. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
  358. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
  359. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
  360. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
  361. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
  362. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
  363. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  364. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
  365. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  366. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +251 -0
  367. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  368. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
  369. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
  370. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
  371. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  372. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +543 -0
  373. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
  374. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
  375. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  376. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +136 -0
  377. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  378. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
  379. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  380. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
  381. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  382. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +272 -0
  383. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +135 -0
  384. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
  385. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
  386. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
  387. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  388. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
  389. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
  390. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
  391. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  392. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
  393. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
  394. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
  395. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  396. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +231 -0
  397. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +85 -0
  398. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +43 -0
  399. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  400. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
  401. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  402. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +68 -0
  403. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  404. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +107 -0
  405. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  406. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
  407. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
  408. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
  409. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  410. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
  411. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  412. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +195 -0
  413. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
  414. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +193 -0
  415. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  416. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +59 -0
  417. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  418. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
  419. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  420. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
  421. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
  422. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +101 -0
  423. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
  424. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +944 -0
  425. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +290 -0
  426. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
  427. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  428. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +61 -0
  429. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  430. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
  431. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  432. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
  433. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  434. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
  435. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  436. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
  437. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  438. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +505 -0
  439. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
  440. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +44 -0
  441. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  442. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +170 -0
  443. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
  444. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +97 -0
  445. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  446. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +246 -0
  447. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
  448. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
  449. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
  450. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
  451. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  452. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +142 -0
  453. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
  454. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +73 -0
  455. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
  456. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +72 -0
  457. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
  458. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +80 -0
  459. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  460. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +80 -0
  461. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
  462. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
  463. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
  464. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
  465. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
  466. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
  467. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  468. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
  469. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  470. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
  471. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  472. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
  473. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  474. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
  475. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  476. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +69 -0
  477. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  478. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
  479. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  480. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
  481. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  482. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
  483. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  484. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
  485. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  486. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
  487. data/src/core/ext/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -10
  488. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
  489. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  490. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
  491. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  492. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
  493. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  494. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  495. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  496. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
  497. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  498. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +39 -0
  499. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  500. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
  501. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  502. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +40 -0
  503. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  504. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
  505. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  506. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
  507. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  508. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +40 -0
  509. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  510. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
  511. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  512. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
  513. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  514. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
  515. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  516. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
  517. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  518. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
  519. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  520. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
  521. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  522. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
  523. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  524. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
  525. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
  526. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +310 -0
  527. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  528. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
  529. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  530. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
  531. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  532. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
  533. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  534. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
  535. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  536. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
  537. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  538. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
  539. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  540. data/src/core/ext/xds/certificate_provider_factory.h +61 -0
  541. data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
  542. data/src/core/ext/xds/certificate_provider_registry.h +57 -0
  543. data/src/core/ext/xds/certificate_provider_store.cc +87 -0
  544. data/src/core/ext/xds/certificate_provider_store.h +112 -0
  545. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
  546. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
  547. data/src/core/ext/xds/xds_api.cc +3791 -0
  548. data/src/core/ext/xds/xds_api.h +671 -0
  549. data/src/core/ext/xds/xds_bootstrap.cc +555 -0
  550. data/src/core/ext/xds/xds_bootstrap.h +120 -0
  551. data/src/core/ext/xds/xds_certificate_provider.cc +405 -0
  552. data/src/core/ext/xds/xds_certificate_provider.h +151 -0
  553. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +9 -6
  554. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +983 -773
  555. data/src/core/ext/xds/xds_client.h +365 -0
  556. data/src/core/ext/xds/xds_client_stats.cc +159 -0
  557. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +80 -40
  558. data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
  559. data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
  560. data/src/core/ext/xds/xds_http_filters.cc +114 -0
  561. data/src/core/ext/xds/xds_http_filters.h +130 -0
  562. data/src/core/ext/xds/xds_server_config_fetcher.cc +532 -0
  563. data/src/core/lib/channel/channel_args.cc +24 -22
  564. data/src/core/lib/channel/channel_args.h +3 -2
  565. data/src/core/lib/channel/channel_stack.cc +12 -0
  566. data/src/core/lib/channel/channel_stack.h +27 -13
  567. data/src/core/lib/channel/channel_trace.cc +6 -8
  568. data/src/core/lib/channel/channel_trace.h +1 -1
  569. data/src/core/lib/channel/channelz.cc +137 -97
  570. data/src/core/lib/channel/channelz.h +47 -26
  571. data/src/core/lib/channel/channelz_registry.cc +34 -15
  572. data/src/core/lib/channel/channelz_registry.h +3 -1
  573. data/src/core/lib/channel/connected_channel.cc +7 -5
  574. data/src/core/lib/channel/context.h +1 -1
  575. data/src/core/lib/channel/handshaker.cc +15 -59
  576. data/src/core/lib/channel/handshaker.h +7 -22
  577. data/src/core/lib/channel/handshaker_registry.cc +5 -17
  578. data/src/core/lib/channel/status_util.cc +14 -5
  579. data/src/core/lib/channel/status_util.h +5 -0
  580. data/src/core/lib/compression/compression.cc +8 -4
  581. data/src/core/lib/compression/compression_args.cc +3 -2
  582. data/src/core/lib/compression/compression_internal.cc +10 -5
  583. data/src/core/lib/compression/compression_internal.h +2 -1
  584. data/src/core/lib/compression/message_compress.cc +5 -1
  585. data/src/core/lib/compression/stream_compression_identity.cc +1 -3
  586. data/src/core/lib/debug/stats.cc +21 -27
  587. data/src/core/lib/debug/stats.h +5 -3
  588. data/src/core/lib/debug/stats_data.cc +1 -0
  589. data/src/core/lib/debug/stats_data.h +13 -13
  590. data/src/core/lib/gpr/alloc.cc +3 -2
  591. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  592. data/src/core/lib/gpr/log.cc +59 -17
  593. data/src/core/lib/gpr/log_linux.cc +23 -9
  594. data/src/core/lib/gpr/log_posix.cc +19 -7
  595. data/src/core/lib/gpr/log_windows.cc +18 -4
  596. data/src/core/lib/gpr/murmur_hash.cc +1 -1
  597. data/src/core/lib/gpr/spinlock.h +12 -5
  598. data/src/core/lib/gpr/string.cc +33 -55
  599. data/src/core/lib/gpr/string.h +9 -24
  600. data/src/core/lib/gpr/sync.cc +4 -4
  601. data/src/core/lib/gpr/sync_abseil.cc +5 -6
  602. data/src/core/lib/gpr/sync_posix.cc +2 -8
  603. data/src/core/lib/gpr/sync_windows.cc +2 -2
  604. data/src/core/lib/gpr/time.cc +16 -12
  605. data/src/core/lib/gpr/time_posix.cc +1 -1
  606. data/src/core/lib/gpr/time_precise.cc +5 -2
  607. data/src/core/lib/gpr/time_precise.h +6 -2
  608. data/src/core/lib/gpr/tls.h +4 -0
  609. data/src/core/lib/gpr/tls_msvc.h +2 -0
  610. data/src/core/lib/gpr/tls_stdcpp.h +48 -0
  611. data/src/core/lib/gpr/useful.h +5 -4
  612. data/src/core/lib/gprpp/arena.h +3 -2
  613. data/src/core/lib/gprpp/atomic.h +9 -9
  614. data/src/core/lib/gprpp/dual_ref_counted.h +331 -0
  615. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  616. data/src/core/lib/gprpp/examine_stack.h +46 -0
  617. data/src/core/lib/gprpp/fork.cc +3 -3
  618. data/src/core/lib/gprpp/global_config_env.cc +8 -6
  619. data/src/core/lib/gprpp/host_port.cc +29 -35
  620. data/src/core/lib/gprpp/host_port.h +14 -17
  621. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  622. data/src/core/lib/gprpp/mpscq.cc +2 -2
  623. data/src/core/lib/gprpp/orphanable.h +4 -8
  624. data/src/core/lib/gprpp/ref_counted.h +91 -68
  625. data/src/core/lib/gprpp/ref_counted_ptr.h +173 -7
  626. data/src/core/lib/gprpp/stat.h +38 -0
  627. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  628. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  629. data/src/core/lib/gprpp/sync.h +129 -40
  630. data/src/core/lib/gprpp/thd.h +3 -3
  631. data/src/core/lib/gprpp/thd_posix.cc +42 -37
  632. data/src/core/lib/gprpp/thd_windows.cc +3 -1
  633. data/src/core/lib/gprpp/time_util.cc +77 -0
  634. data/src/core/lib/gprpp/time_util.h +42 -0
  635. data/src/core/lib/http/format_request.cc +46 -65
  636. data/src/core/lib/http/httpcli.cc +16 -14
  637. data/src/core/lib/http/httpcli.h +4 -6
  638. data/src/core/lib/http/httpcli_security_connector.cc +13 -13
  639. data/src/core/lib/http/parser.cc +47 -27
  640. data/src/core/lib/http/parser.h +2 -3
  641. data/src/core/lib/iomgr/buffer_list.h +23 -22
  642. data/src/core/lib/iomgr/call_combiner.cc +8 -5
  643. data/src/core/lib/iomgr/call_combiner.h +3 -2
  644. data/src/core/lib/iomgr/cfstream_handle.cc +6 -4
  645. data/src/core/lib/iomgr/closure.h +2 -3
  646. data/src/core/lib/iomgr/combiner.cc +2 -1
  647. data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
  648. data/src/core/lib/iomgr/endpoint.cc +5 -1
  649. data/src/core/lib/iomgr/endpoint.h +8 -4
  650. data/src/core/lib/iomgr/endpoint_cfstream.cc +38 -14
  651. data/src/core/lib/iomgr/endpoint_pair.h +2 -3
  652. data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
  653. data/src/core/lib/iomgr/error.cc +23 -21
  654. data/src/core/lib/iomgr/error.h +1 -2
  655. data/src/core/lib/iomgr/error_cfstream.cc +9 -8
  656. data/src/core/lib/iomgr/error_internal.h +1 -1
  657. data/src/core/lib/iomgr/ev_apple.cc +359 -0
  658. data/src/core/lib/iomgr/ev_apple.h +43 -0
  659. data/src/core/lib/iomgr/ev_epoll1_linux.cc +46 -43
  660. data/src/core/lib/iomgr/ev_epollex_linux.cc +46 -45
  661. data/src/core/lib/iomgr/ev_poll_posix.cc +18 -15
  662. data/src/core/lib/iomgr/ev_posix.cc +5 -6
  663. data/src/core/lib/iomgr/exec_ctx.cc +7 -3
  664. data/src/core/lib/iomgr/exec_ctx.h +26 -10
  665. data/src/core/lib/iomgr/executor.cc +2 -1
  666. data/src/core/lib/iomgr/executor.h +1 -1
  667. data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
  668. data/src/core/lib/iomgr/executor/threadpool.h +4 -4
  669. data/src/core/lib/iomgr/iomgr.cc +1 -1
  670. data/src/core/lib/iomgr/iomgr_posix.cc +0 -1
  671. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -21
  672. data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
  673. data/src/core/lib/iomgr/load_file.h +1 -1
  674. data/src/core/lib/iomgr/lockfree_event.cc +19 -14
  675. data/src/core/lib/iomgr/lockfree_event.h +2 -2
  676. data/src/core/lib/iomgr/parse_address.cc +322 -0
  677. data/src/core/lib/iomgr/parse_address.h +77 -0
  678. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
  679. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
  680. data/src/core/lib/iomgr/pollset_set_custom.cc +11 -11
  681. data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
  682. data/src/core/lib/iomgr/port.h +2 -21
  683. data/src/core/lib/iomgr/python_util.h +46 -0
  684. data/src/core/lib/iomgr/resolve_address.cc +4 -4
  685. data/src/core/lib/iomgr/resolve_address.h +4 -6
  686. data/src/core/lib/iomgr/resolve_address_custom.cc +42 -57
  687. data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
  688. data/src/core/lib/iomgr/resolve_address_posix.cc +11 -16
  689. data/src/core/lib/iomgr/resolve_address_windows.cc +16 -25
  690. data/src/core/lib/iomgr/resource_quota.cc +39 -38
  691. data/src/core/lib/iomgr/sockaddr_utils.cc +161 -44
  692. data/src/core/lib/iomgr/sockaddr_utils.h +40 -19
  693. data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
  694. data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
  695. data/src/core/lib/iomgr/socket_mutator.cc +3 -2
  696. data/src/core/lib/iomgr/socket_mutator.h +2 -3
  697. data/src/core/lib/iomgr/socket_utils_common_posix.cc +103 -81
  698. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  699. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  700. data/src/core/lib/iomgr/tcp_client.cc +3 -3
  701. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -18
  702. data/src/core/lib/iomgr/tcp_client_custom.cc +13 -15
  703. data/src/core/lib/iomgr/tcp_client_posix.cc +31 -37
  704. data/src/core/lib/iomgr/tcp_client_windows.cc +10 -11
  705. data/src/core/lib/iomgr/tcp_custom.cc +56 -36
  706. data/src/core/lib/iomgr/tcp_custom.h +1 -1
  707. data/src/core/lib/iomgr/tcp_posix.cc +48 -29
  708. data/src/core/lib/iomgr/tcp_server.cc +3 -4
  709. data/src/core/lib/iomgr/tcp_server.h +7 -5
  710. data/src/core/lib/iomgr/tcp_server_custom.cc +39 -45
  711. data/src/core/lib/iomgr/tcp_server_posix.cc +38 -44
  712. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
  713. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -8
  714. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -18
  715. data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
  716. data/src/core/lib/iomgr/tcp_uv.cc +5 -4
  717. data/src/core/lib/iomgr/tcp_windows.cc +26 -10
  718. data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
  719. data/src/core/lib/iomgr/timer_custom.cc +5 -5
  720. data/src/core/lib/iomgr/timer_generic.cc +20 -20
  721. data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
  722. data/src/core/lib/iomgr/timer_heap.h +2 -3
  723. data/src/core/lib/iomgr/timer_manager.cc +3 -3
  724. data/src/core/lib/iomgr/udp_server.cc +33 -38
  725. data/src/core/lib/iomgr/udp_server.h +6 -4
  726. data/src/core/lib/iomgr/unix_sockets_posix.cc +36 -30
  727. data/src/core/lib/iomgr/unix_sockets_posix.h +8 -1
  728. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +12 -2
  729. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
  730. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  731. data/src/core/lib/json/json.h +15 -4
  732. data/src/core/lib/json/json_reader.cc +33 -30
  733. data/src/core/lib/json/json_util.cc +58 -0
  734. data/src/core/lib/json/json_util.h +204 -0
  735. data/src/core/lib/json/json_writer.cc +15 -13
  736. data/src/core/lib/matchers/matchers.cc +339 -0
  737. data/src/core/lib/matchers/matchers.h +160 -0
  738. data/src/core/lib/security/context/security_context.cc +4 -3
  739. data/src/core/lib/security/context/security_context.h +3 -1
  740. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
  741. data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
  742. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  743. data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
  744. data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
  745. data/src/core/lib/security/credentials/credentials.cc +7 -91
  746. data/src/core/lib/security/credentials/credentials.h +18 -66
  747. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
  748. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
  749. data/src/core/lib/security/credentials/external/aws_request_signer.cc +213 -0
  750. data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
  751. data/src/core/lib/security/credentials/external/external_account_credentials.cc +497 -0
  752. data/src/core/lib/security/credentials/external/external_account_credentials.h +120 -0
  753. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +135 -0
  754. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +48 -0
  755. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +213 -0
  756. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +58 -0
  757. data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -2
  758. data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
  759. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
  760. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +90 -67
  761. data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
  762. data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
  763. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
  764. data/src/core/lib/security/credentials/jwt/json_token.cc +4 -4
  765. data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
  766. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
  767. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +13 -0
  768. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +13 -19
  769. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  770. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
  771. data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
  772. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +109 -97
  773. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -7
  774. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +20 -7
  775. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
  776. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +27 -6
  777. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +12 -2
  778. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +346 -0
  779. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +213 -0
  780. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +399 -0
  781. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +138 -0
  782. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +78 -140
  783. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +74 -167
  784. data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -13
  785. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
  786. data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
  787. data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
  788. data/src/core/lib/security/credentials/xds/xds_credentials.cc +244 -0
  789. data/src/core/lib/security/credentials/xds/xds_credentials.h +69 -0
  790. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -7
  791. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +27 -32
  792. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +121 -0
  793. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +87 -0
  794. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  795. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
  796. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  797. data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
  798. data/src/core/lib/security/security_connector/security_connector.cc +6 -3
  799. data/src/core/lib/security/security_connector/security_connector.h +6 -4
  800. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +42 -40
  801. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +8 -5
  802. data/src/core/lib/security/security_connector/ssl_utils.cc +100 -27
  803. data/src/core/lib/security/security_connector/ssl_utils.h +37 -31
  804. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +394 -284
  805. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +108 -42
  806. data/src/core/lib/security/transport/auth_filters.h +0 -5
  807. data/src/core/lib/security/transport/client_auth_filter.cc +11 -11
  808. data/src/core/lib/security/transport/secure_endpoint.cc +9 -3
  809. data/src/core/lib/security/transport/security_handshaker.cc +36 -8
  810. data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
  811. data/src/core/lib/security/util/json_util.cc +12 -13
  812. data/src/core/lib/security/util/json_util.h +1 -0
  813. data/src/core/lib/slice/slice.cc +45 -5
  814. data/src/core/lib/slice/slice_buffer.cc +2 -1
  815. data/src/core/lib/slice/slice_intern.cc +13 -16
  816. data/src/core/lib/slice/slice_internal.h +17 -2
  817. data/src/core/lib/slice/slice_utils.h +9 -0
  818. data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
  819. data/src/core/lib/surface/call.cc +95 -88
  820. data/src/core/lib/surface/call.h +2 -1
  821. data/src/core/lib/surface/call_details.cc +8 -8
  822. data/src/core/lib/surface/call_log_batch.cc +50 -58
  823. data/src/core/lib/surface/channel.cc +86 -72
  824. data/src/core/lib/surface/channel.h +54 -7
  825. data/src/core/lib/surface/channel_init.cc +1 -1
  826. data/src/core/lib/surface/channel_ping.cc +2 -3
  827. data/src/core/lib/surface/completion_queue.cc +64 -63
  828. data/src/core/lib/surface/completion_queue.h +16 -16
  829. data/src/core/lib/surface/event_string.cc +18 -25
  830. data/src/core/lib/surface/event_string.h +3 -1
  831. data/src/core/lib/surface/init.cc +45 -29
  832. data/src/core/lib/surface/init_secure.cc +1 -4
  833. data/src/core/lib/surface/lame_client.cc +47 -54
  834. data/src/core/lib/surface/lame_client.h +5 -0
  835. data/src/core/lib/surface/server.cc +1309 -1300
  836. data/src/core/lib/surface/server.h +469 -45
  837. data/src/core/lib/surface/validate_metadata.h +3 -0
  838. data/src/core/lib/surface/version.cc +2 -2
  839. data/src/core/lib/transport/authority_override.cc +40 -0
  840. data/src/core/lib/transport/authority_override.h +37 -0
  841. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  842. data/src/core/lib/transport/bdp_estimator.h +2 -1
  843. data/src/core/lib/transport/byte_stream.h +10 -5
  844. data/src/core/lib/transport/connectivity_state.cc +23 -17
  845. data/src/core/lib/transport/connectivity_state.h +31 -15
  846. data/src/core/lib/transport/error_utils.cc +13 -0
  847. data/src/core/lib/transport/error_utils.h +7 -1
  848. data/src/core/lib/transport/metadata.cc +19 -5
  849. data/src/core/lib/transport/metadata.h +2 -2
  850. data/src/core/lib/transport/metadata_batch.cc +27 -0
  851. data/src/core/lib/transport/metadata_batch.h +20 -7
  852. data/src/core/lib/transport/static_metadata.cc +296 -277
  853. data/src/core/lib/transport/static_metadata.h +81 -74
  854. data/src/core/lib/transport/status_conversion.cc +6 -14
  855. data/src/core/lib/transport/status_metadata.cc +4 -3
  856. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  857. data/src/core/lib/transport/transport.cc +7 -6
  858. data/src/core/lib/transport/transport.h +24 -10
  859. data/src/core/lib/transport/transport_op_string.cc +61 -102
  860. data/src/core/lib/uri/uri_parser.cc +135 -258
  861. data/src/core/lib/uri/uri_parser.h +60 -23
  862. data/src/core/plugin_registry/grpc_plugin_registry.cc +65 -12
  863. data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
  864. data/src/core/tsi/alts/crypt/gsec.cc +5 -4
  865. data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
  866. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +49 -38
  867. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
  868. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +98 -48
  869. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
  870. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +3 -3
  871. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
  872. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
  873. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
  874. data/src/core/tsi/fake_transport_security.cc +27 -20
  875. data/src/core/tsi/local_transport_security.cc +5 -1
  876. data/src/core/tsi/local_transport_security.h +6 -7
  877. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
  878. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  879. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
  880. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -4
  881. data/src/core/tsi/ssl_transport_security.cc +226 -105
  882. data/src/core/tsi/ssl_transport_security.h +28 -16
  883. data/src/core/tsi/ssl_types.h +0 -2
  884. data/src/core/tsi/transport_security.cc +10 -8
  885. data/src/core/tsi/transport_security.h +6 -9
  886. data/src/core/tsi/transport_security_grpc.h +2 -3
  887. data/src/core/tsi/transport_security_interface.h +9 -4
  888. data/src/ruby/bin/math_services_pb.rb +4 -4
  889. data/src/ruby/ext/grpc/extconf.rb +15 -4
  890. data/src/ruby/ext/grpc/rb_call.c +12 -3
  891. data/src/ruby/ext/grpc/rb_call.h +4 -0
  892. data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
  893. data/src/ruby/ext/grpc/rb_channel.c +10 -1
  894. data/src/ruby/ext/grpc/rb_channel_credentials.c +20 -1
  895. data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
  896. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  897. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  898. data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
  899. data/src/ruby/ext/grpc/rb_grpc.c +4 -0
  900. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +44 -18
  901. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +83 -44
  902. data/src/ruby/ext/grpc/rb_server.c +13 -1
  903. data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
  904. data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
  905. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
  906. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
  907. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
  908. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
  909. data/src/ruby/lib/grpc/errors.rb +103 -42
  910. data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
  911. data/src/ruby/lib/grpc/generic/client_stub.rb +5 -3
  912. data/src/ruby/lib/grpc/generic/interceptors.rb +5 -5
  913. data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
  914. data/src/ruby/lib/grpc/generic/service.rb +5 -4
  915. data/src/ruby/lib/grpc/structs.rb +1 -1
  916. data/src/ruby/lib/grpc/version.rb +1 -1
  917. data/src/ruby/pb/generate_proto_ruby.sh +5 -3
  918. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
  919. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +51 -0
  920. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +61 -11
  921. data/src/ruby/spec/call_spec.rb +1 -1
  922. data/src/ruby/spec/channel_credentials_spec.rb +42 -0
  923. data/src/ruby/spec/channel_spec.rb +17 -6
  924. data/src/ruby/spec/client_auth_spec.rb +27 -1
  925. data/src/ruby/spec/debug_message_spec.rb +134 -0
  926. data/src/ruby/spec/errors_spec.rb +1 -1
  927. data/src/ruby/spec/generic/active_call_spec.rb +21 -10
  928. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  929. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  930. data/src/ruby/spec/generic/service_spec.rb +2 -0
  931. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  932. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
  933. data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
  934. data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
  935. data/src/ruby/spec/pb/codegen/package_option_spec.rb +29 -7
  936. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  937. data/src/ruby/spec/server_spec.rb +22 -0
  938. data/src/ruby/spec/support/services.rb +10 -4
  939. data/src/ruby/spec/testdata/ca.pem +18 -13
  940. data/src/ruby/spec/testdata/client.key +26 -14
  941. data/src/ruby/spec/testdata/client.pem +18 -12
  942. data/src/ruby/spec/testdata/server1.key +26 -14
  943. data/src/ruby/spec/testdata/server1.pem +20 -14
  944. data/src/ruby/spec/user_agent_spec.rb +74 -0
  945. data/third_party/abseil-cpp/absl/algorithm/container.h +1764 -0
  946. data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
  947. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  948. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  949. data/third_party/abseil-cpp/absl/base/config.h +60 -17
  950. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
  951. data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
  952. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +166 -0
  953. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  954. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
  955. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
  956. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  957. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  958. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  959. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
  960. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
  961. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
  962. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
  963. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
  964. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
  965. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
  966. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  967. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  968. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
  969. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
  970. data/third_party/abseil-cpp/absl/base/macros.h +36 -109
  971. data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
  972. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  973. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  974. data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
  975. data/third_party/abseil-cpp/absl/container/fixed_array.h +532 -0
  976. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
  977. data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
  978. data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
  979. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
  980. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
  981. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
  982. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
  983. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  984. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +270 -0
  985. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +321 -0
  986. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
  987. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
  988. data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
  989. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
  990. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
  991. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1903 -0
  992. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
  993. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  994. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1945 -0
  995. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  996. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
  997. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
  998. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +196 -0
  999. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
  1000. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +89 -0
  1001. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
  1002. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
  1003. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  1004. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
  1005. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
  1006. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +149 -0
  1007. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -0
  1008. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  1009. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
  1010. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  1011. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +36 -0
  1012. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  1013. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  1014. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -0
  1015. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  1016. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  1017. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  1018. data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
  1019. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  1020. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  1021. data/third_party/abseil-cpp/absl/hash/hash.h +325 -0
  1022. data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
  1023. data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
  1024. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
  1025. data/third_party/abseil-cpp/absl/hash/internal/hash.h +996 -0
  1026. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  1027. data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
  1028. data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
  1029. data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
  1030. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
  1031. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
  1032. data/third_party/abseil-cpp/absl/status/status.cc +445 -0
  1033. data/third_party/abseil-cpp/absl/status/status.h +817 -0
  1034. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
  1035. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  1036. data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
  1037. data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
  1038. data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
  1039. data/third_party/abseil-cpp/absl/strings/cord.cc +1998 -0
  1040. data/third_party/abseil-cpp/absl/strings/cord.h +1276 -0
  1041. data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
  1042. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  1043. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  1044. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  1045. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  1046. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +173 -0
  1047. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
  1048. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
  1049. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
  1050. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
  1051. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
  1052. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
  1053. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
  1054. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
  1055. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
  1056. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  1057. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
  1058. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
  1059. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
  1060. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  1061. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  1062. data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
  1063. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  1064. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
  1065. data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
  1066. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
  1067. data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
  1068. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  1069. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  1070. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
  1071. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
  1072. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  1073. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  1074. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +698 -0
  1075. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  1076. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
  1077. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +249 -0
  1078. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  1079. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  1080. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +492 -0
  1081. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
  1082. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2739 -0
  1083. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1065 -0
  1084. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  1085. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  1086. data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
  1087. data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
  1088. data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
  1089. data/third_party/abseil-cpp/absl/time/clock.h +74 -0
  1090. data/third_party/abseil-cpp/absl/time/duration.cc +953 -0
  1091. data/third_party/abseil-cpp/absl/time/format.cc +160 -0
  1092. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  1093. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +632 -0
  1094. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +386 -0
  1095. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  1096. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  1097. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  1098. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  1099. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1029 -0
  1100. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  1101. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
  1102. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +113 -0
  1103. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  1104. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +965 -0
  1105. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +137 -0
  1106. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +309 -0
  1107. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  1108. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
  1109. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  1110. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  1111. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  1112. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +116 -0
  1113. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  1114. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  1115. data/third_party/abseil-cpp/absl/time/time.cc +499 -0
  1116. data/third_party/abseil-cpp/absl/time/time.h +1583 -0
  1117. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  1118. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  1119. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  1120. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  1121. data/third_party/abseil-cpp/absl/types/span.h +49 -36
  1122. data/third_party/abseil-cpp/absl/types/variant.h +861 -0
  1123. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  1124. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  1125. data/third_party/boringssl-with-bazel/err_data.c +759 -707
  1126. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +6 -6
  1127. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +5 -5
  1128. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +6 -6
  1129. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +6 -13
  1130. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  1131. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
  1132. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +5 -3
  1133. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
  1134. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +15 -20
  1135. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -0
  1136. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
  1137. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
  1138. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
  1139. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  1140. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
  1141. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +39 -85
  1142. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +5 -16
  1143. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
  1144. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
  1145. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
  1146. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  1147. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  1148. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
  1149. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  1150. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
  1151. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
  1152. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
  1153. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  1154. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +87 -0
  1155. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
  1156. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  1157. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +18 -7
  1158. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  1159. data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
  1160. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
  1161. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
  1162. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
  1163. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
  1164. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
  1165. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  1166. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
  1167. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
  1168. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +19 -43
  1169. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
  1170. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
  1171. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  1172. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +385 -0
  1173. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +56 -0
  1174. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
  1175. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
  1176. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -0
  1177. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +159 -0
  1178. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
  1179. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
  1180. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  1181. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -2
  1182. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  1183. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
  1184. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
  1185. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +34 -13
  1186. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
  1187. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
  1188. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +21 -13
  1189. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
  1190. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  1191. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +149 -211
  1192. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
  1193. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
  1194. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +301 -117
  1195. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +22 -28
  1196. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
  1197. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
  1198. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +434 -161
  1199. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
  1200. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +18 -25
  1201. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
  1202. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +104 -122
  1203. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +740 -0
  1204. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
  1205. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
  1206. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
  1207. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
  1208. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  1209. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
  1210. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
  1211. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
  1212. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
  1213. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
  1214. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
  1215. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +69 -5
  1216. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +162 -55
  1217. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -121
  1218. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
  1219. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +5 -0
  1220. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +73 -40
  1221. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +122 -55
  1222. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +217 -2
  1223. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
  1224. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +532 -0
  1225. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +246 -0
  1226. data/third_party/boringssl-with-bazel/src/crypto/mem.c +47 -16
  1227. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
  1228. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
  1229. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
  1230. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
  1231. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  1232. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  1233. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
  1234. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  1235. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +4 -0
  1236. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
  1237. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  1238. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
  1239. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
  1240. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +318 -0
  1241. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1399 -0
  1242. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +858 -0
  1243. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  1244. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +7 -7
  1245. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
  1246. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
  1247. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
  1248. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
  1249. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
  1250. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  1251. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +21 -37
  1252. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +27 -21
  1253. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
  1254. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +1 -1
  1255. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
  1256. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +89 -11
  1257. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +7 -4
  1258. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
  1259. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +4 -4
  1260. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +62 -44
  1261. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +67 -25
  1262. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +13 -11
  1263. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +10 -10
  1264. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +22 -17
  1265. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +38 -17
  1266. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
  1267. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  1268. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
  1269. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
  1270. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +68 -9
  1271. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  1272. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
  1273. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
  1274. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
  1275. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
  1276. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +25 -24
  1277. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
  1278. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +32 -28
  1279. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -2
  1280. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
  1281. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
  1282. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  1283. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
  1284. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
  1285. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +2 -2
  1286. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +126 -40
  1287. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -7
  1288. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
  1289. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
  1290. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  1291. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +54 -0
  1292. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +662 -556
  1293. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
  1294. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -7
  1295. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
  1296. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  1297. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
  1298. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +25 -0
  1299. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  1300. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +10 -5
  1301. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  1302. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +82 -20
  1303. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +11 -0
  1304. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
  1305. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
  1306. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
  1307. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
  1308. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +85 -3
  1309. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
  1310. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  1311. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
  1312. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +6 -17
  1313. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
  1314. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
  1315. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
  1316. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +359 -120
  1317. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +33 -10
  1318. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +310 -0
  1319. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1140 -755
  1320. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
  1321. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +593 -440
  1322. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  1323. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
  1324. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
  1325. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
  1326. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +181 -57
  1327. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +45 -26
  1328. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +43 -45
  1329. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +32 -10
  1330. data/third_party/boringssl-with-bazel/src/ssl/internal.h +160 -80
  1331. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
  1332. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -3
  1333. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
  1334. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +77 -8
  1335. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +7 -6
  1336. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
  1337. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +131 -15
  1338. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
  1339. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +50 -15
  1340. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
  1341. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
  1342. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
  1343. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +53 -30
  1344. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +636 -100
  1345. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +2 -3
  1346. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +187 -68
  1347. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +71 -90
  1348. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +247 -73
  1349. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
  1350. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  1351. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
  1352. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
  1353. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
  1354. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
  1355. data/third_party/re2/re2/bitmap256.h +117 -0
  1356. data/third_party/re2/re2/bitstate.cc +385 -0
  1357. data/third_party/re2/re2/compile.cc +1279 -0
  1358. data/third_party/re2/re2/dfa.cc +2130 -0
  1359. data/third_party/re2/re2/filtered_re2.cc +121 -0
  1360. data/third_party/re2/re2/filtered_re2.h +109 -0
  1361. data/third_party/re2/re2/mimics_pcre.cc +197 -0
  1362. data/third_party/re2/re2/nfa.cc +713 -0
  1363. data/third_party/re2/re2/onepass.cc +623 -0
  1364. data/third_party/re2/re2/parse.cc +2464 -0
  1365. data/third_party/re2/re2/perl_groups.cc +119 -0
  1366. data/third_party/re2/re2/pod_array.h +55 -0
  1367. data/third_party/re2/re2/prefilter.cc +710 -0
  1368. data/third_party/re2/re2/prefilter.h +108 -0
  1369. data/third_party/re2/re2/prefilter_tree.cc +407 -0
  1370. data/third_party/re2/re2/prefilter_tree.h +139 -0
  1371. data/third_party/re2/re2/prog.cc +988 -0
  1372. data/third_party/re2/re2/prog.h +436 -0
  1373. data/third_party/re2/re2/re2.cc +1362 -0
  1374. data/third_party/re2/re2/re2.h +1002 -0
  1375. data/third_party/re2/re2/regexp.cc +980 -0
  1376. data/third_party/re2/re2/regexp.h +659 -0
  1377. data/third_party/re2/re2/set.cc +154 -0
  1378. data/third_party/re2/re2/set.h +80 -0
  1379. data/third_party/re2/re2/simplify.cc +657 -0
  1380. data/third_party/re2/re2/sparse_array.h +392 -0
  1381. data/third_party/re2/re2/sparse_set.h +264 -0
  1382. data/third_party/re2/re2/stringpiece.cc +65 -0
  1383. data/third_party/re2/re2/stringpiece.h +210 -0
  1384. data/third_party/re2/re2/tostring.cc +351 -0
  1385. data/third_party/re2/re2/unicode_casefold.cc +582 -0
  1386. data/third_party/re2/re2/unicode_casefold.h +78 -0
  1387. data/third_party/re2/re2/unicode_groups.cc +6269 -0
  1388. data/third_party/re2/re2/unicode_groups.h +67 -0
  1389. data/third_party/re2/re2/walker-inl.h +246 -0
  1390. data/third_party/re2/util/benchmark.h +156 -0
  1391. data/third_party/re2/util/flags.h +26 -0
  1392. data/third_party/re2/util/logging.h +109 -0
  1393. data/third_party/re2/util/malloc_counter.h +19 -0
  1394. data/third_party/re2/util/mix.h +41 -0
  1395. data/third_party/re2/util/mutex.h +148 -0
  1396. data/third_party/re2/util/pcre.cc +1025 -0
  1397. data/third_party/re2/util/pcre.h +681 -0
  1398. data/third_party/re2/util/rune.cc +260 -0
  1399. data/third_party/re2/util/strutil.cc +149 -0
  1400. data/third_party/re2/util/strutil.h +21 -0
  1401. data/third_party/re2/util/test.h +50 -0
  1402. data/third_party/re2/util/utf.h +44 -0
  1403. data/third_party/re2/util/util.h +42 -0
  1404. data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
  1405. data/third_party/upb/upb/decode.c +604 -511
  1406. data/third_party/upb/upb/decode.h +20 -1
  1407. data/third_party/upb/upb/decode.int.h +163 -0
  1408. data/third_party/upb/upb/decode_fast.c +1040 -0
  1409. data/third_party/upb/upb/decode_fast.h +126 -0
  1410. data/third_party/upb/upb/def.c +2178 -0
  1411. data/third_party/upb/upb/def.h +315 -0
  1412. data/third_party/upb/upb/def.hpp +439 -0
  1413. data/third_party/upb/upb/encode.c +311 -211
  1414. data/third_party/upb/upb/encode.h +27 -2
  1415. data/third_party/upb/upb/msg.c +215 -70
  1416. data/third_party/upb/upb/msg.h +558 -14
  1417. data/third_party/upb/upb/port_def.inc +105 -63
  1418. data/third_party/upb/upb/port_undef.inc +10 -7
  1419. data/third_party/upb/upb/reflection.c +408 -0
  1420. data/third_party/upb/upb/reflection.h +168 -0
  1421. data/third_party/upb/upb/table.c +73 -269
  1422. data/third_party/upb/upb/table.int.h +25 -57
  1423. data/third_party/upb/upb/text_encode.c +421 -0
  1424. data/third_party/upb/upb/text_encode.h +38 -0
  1425. data/third_party/upb/upb/upb.c +138 -135
  1426. data/third_party/upb/upb/upb.h +119 -146
  1427. data/third_party/upb/upb/upb.hpp +88 -0
  1428. data/third_party/upb/upb/upb.int.h +29 -0
  1429. data/third_party/xxhash/xxhash.h +5443 -0
  1430. metadata +686 -160
  1431. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
  1432. data/src/core/ext/filters/client_channel/parse_address.cc +0 -237
  1433. data/src/core/ext/filters/client_channel/parse_address.h +0 -53
  1434. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -484
  1435. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -65
  1436. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -359
  1437. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -122
  1438. data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1779
  1439. data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -280
  1440. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +0 -347
  1441. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +0 -87
  1442. data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
  1443. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -104
  1444. data/src/core/ext/filters/client_channel/xds/xds_client.h +0 -274
  1445. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +0 -116
  1446. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -246
  1447. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -905
  1448. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
  1449. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -390
  1450. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1411
  1451. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -73
  1452. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
  1453. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +0 -34
  1454. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  1455. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +0 -54
  1456. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
  1457. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -111
  1458. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
  1459. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -292
  1460. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -847
  1461. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -95
  1462. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
  1463. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -196
  1464. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
  1465. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -168
  1466. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -658
  1467. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -35
  1468. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  1469. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -132
  1470. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -436
  1471. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -128
  1472. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
  1473. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +0 -30
  1474. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
  1475. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -91
  1476. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
  1477. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -17
  1478. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
  1479. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -88
  1480. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -258
  1481. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -111
  1482. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
  1483. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +0 -30
  1484. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
  1485. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -104
  1486. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -383
  1487. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -17
  1488. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
  1489. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -144
  1490. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
  1491. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -42
  1492. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
  1493. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
  1494. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -62
  1495. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
  1496. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -17
  1497. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
  1498. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -793
  1499. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2936
  1500. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -58
  1501. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
  1502. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
  1503. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -227
  1504. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
  1505. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -296
  1506. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1072
  1507. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -32
  1508. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  1509. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +0 -23
  1510. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
  1511. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -52
  1512. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -130
  1513. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -47
  1514. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -108
  1515. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -52
  1516. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  1517. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -87
  1518. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  1519. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +0 -38
  1520. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
  1521. data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -49
  1522. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
  1523. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +0 -28
  1524. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
  1525. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -88
  1526. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
  1527. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
  1528. data/src/core/lib/gprpp/map.h +0 -59
  1529. data/src/core/lib/gprpp/string_view.h +0 -60
  1530. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
  1531. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  1532. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  1533. data/src/core/lib/slice/slice_hash_table.h +0 -199
  1534. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
  1535. data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
  1536. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
  1537. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
  1538. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
  1539. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
  1540. data/third_party/upb/upb/generated_util.h +0 -105
  1541. data/third_party/upb/upb/port.c +0 -26
@@ -179,6 +179,7 @@ extern "C" {
179
179
  #define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114
180
180
  #define TLS1_AD_UNKNOWN_PSK_IDENTITY 115
181
181
  #define TLS1_AD_CERTIFICATE_REQUIRED 116
182
+ #define TLS1_AD_NO_APPLICATION_PROTOCOL 120
182
183
 
183
184
  // ExtensionType values from RFC6066
184
185
  #define TLSEXT_TYPE_server_name 0
@@ -205,13 +206,27 @@ extern "C" {
205
206
  // ExtensionType value from draft-ietf-tokbind-negotiation-10
206
207
  #define TLSEXT_TYPE_token_binding 24
207
208
 
208
- // ExtensionType value from draft-ietf-quic-tls. Note that this collides with
209
- // TLS-LTS and, based on scans, something else too. Since it's QUIC-only, that
210
- // shouldn't be a problem in practice.
211
- #define TLSEXT_TYPE_quic_transport_parameters 0xffa5
212
-
213
- // ExtensionType value assigned to
214
- // https://tools.ietf.org/html/draft-ietf-tls-certificate-compression-03
209
+ // ExtensionType value from draft-ietf-quic-tls. Drafts 00 through 32 use
210
+ // 0xffa5 which is part of the Private Use section of the registry, and it
211
+ // collides with TLS-LTS and, based on scans, something else too (though this
212
+ // hasn't been a problem in practice since it's QUIC-only). Drafts 33 onward
213
+ // use the value 57 which was officially registered with IANA.
214
+ #define TLSEXT_TYPE_quic_transport_parameters_legacy 0xffa5
215
+ #define TLSEXT_TYPE_quic_transport_parameters_standard 57
216
+
217
+ // TLSEXT_TYPE_quic_transport_parameters is an alias for
218
+ // |TLSEXT_TYPE_quic_transport_parameters_legacy|. It will switch to
219
+ // |TLSEXT_TYPE_quic_transport_parameters_standard| at a later date.
220
+ //
221
+ // Callers using |SSL_set_quic_use_legacy_codepoint| should use
222
+ // |TLSEXT_TYPE_quic_transport_parameters_legacy| or
223
+ // |TLSEXT_TYPE_quic_transport_parameters_standard| rather than this constant.
224
+ // When the default code point is switched to the standard one, this value will
225
+ // be updated and we will transition callers back to the unsuffixed constant.
226
+ #define TLSEXT_TYPE_quic_transport_parameters \
227
+ TLSEXT_TYPE_quic_transport_parameters_legacy
228
+
229
+ // ExtensionType value from RFC8879
215
230
  #define TLSEXT_TYPE_cert_compression 27
216
231
 
217
232
  // ExtensionType value from RFC4507
@@ -231,9 +246,17 @@ extern "C" {
231
246
  // ExtensionType value from RFC5746
232
247
  #define TLSEXT_TYPE_renegotiate 0xff01
233
248
 
234
- // ExtensionType value from draft-ietf-tls-subcerts. This is not an IANA defined
249
+ // ExtensionType value from draft-ietf-tls-subcerts.
250
+ #define TLSEXT_TYPE_delegated_credential 0x22
251
+
252
+ // ExtensionType value from draft-vvv-tls-alps. This is not an IANA defined
253
+ // extension number.
254
+ #define TLSEXT_TYPE_application_settings 17513
255
+
256
+ // ExtensionType values from draft-ietf-tls-esni-09. This is not an IANA defined
235
257
  // extension number.
236
- #define TLSEXT_TYPE_delegated_credential 0xff02
258
+ #define TLSEXT_TYPE_encrypted_client_hello 0xfe09
259
+ #define TLSEXT_TYPE_ech_is_inner 0xda09
237
260
 
238
261
  // ExtensionType value from RFC6962
239
262
  #define TLSEXT_TYPE_certificate_timestamp 18
@@ -267,7 +290,7 @@ extern "C" {
267
290
  #define TLSEXT_hash_sha384 5
268
291
  #define TLSEXT_hash_sha512 6
269
292
 
270
- // From https://tools.ietf.org/html/draft-ietf-tls-certificate-compression-03#section-3
293
+ // From https://www.rfc-editor.org/rfc/rfc8879.html#section-3
271
294
  #define TLSEXT_cert_compression_zlib 1
272
295
  #define TLSEXT_cert_compression_brotli 2
273
296
 
@@ -0,0 +1,310 @@
1
+ /* Copyright (c) 2020, Google Inc.
2
+ *
3
+ * Permission to use, copy, modify, and/or distribute this software for any
4
+ * purpose with or without fee is hereby granted, provided that the above
5
+ * copyright notice and this permission notice appear in all copies.
6
+ *
7
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
+
15
+ #ifndef OPENSSL_HEADER_TRUST_TOKEN_H
16
+ #define OPENSSL_HEADER_TRUST_TOKEN_H
17
+
18
+ #include <openssl/base.h>
19
+ #include <openssl/stack.h>
20
+
21
+ #if defined(__cplusplus)
22
+ extern "C" {
23
+ #endif
24
+
25
+
26
+ // Trust Token implementation.
27
+ //
28
+ // Trust Token is an implementation of an experimental mechanism similar to
29
+ // Privacy Pass which allows issuance and redemption of anonymized tokens with
30
+ // limited private metadata.
31
+ //
32
+ // References:
33
+ // https://eprint.iacr.org/2020/072.pdf
34
+ // https://github.com/alxdavids/privacy-pass-ietf/tree/master/drafts
35
+ // https://github.com/WICG/trust-token-api/blob/master/README.md
36
+ //
37
+ // WARNING: This API is unstable and subject to change.
38
+
39
+ // TRUST_TOKEN_experiment_v1 is an experimental Trust Tokens protocol using
40
+ // PMBTokens and P-384.
41
+ OPENSSL_EXPORT const TRUST_TOKEN_METHOD *TRUST_TOKEN_experiment_v1(void);
42
+
43
+ // TRUST_TOKEN_experiment_v2_voprf is an experimental Trust Tokens protocol
44
+ // using VOPRFs and P-384 with up to 6 keys, without RR verification.
45
+ OPENSSL_EXPORT const TRUST_TOKEN_METHOD *TRUST_TOKEN_experiment_v2_voprf(void);
46
+
47
+ // TRUST_TOKEN_experiment_v2_pmb is an experimental Trust Tokens protocol using
48
+ // PMBTokens and P-384 with up to 3 keys, without RR verification.
49
+ OPENSSL_EXPORT const TRUST_TOKEN_METHOD *TRUST_TOKEN_experiment_v2_pmb(void);
50
+
51
+ // trust_token_st represents a single-use token for the Trust Token protocol.
52
+ // For the client, this is the token and its corresponding signature. For the
53
+ // issuer, this is the token itself.
54
+ struct trust_token_st {
55
+ uint8_t *data;
56
+ size_t len;
57
+ };
58
+
59
+ DEFINE_STACK_OF(TRUST_TOKEN)
60
+
61
+ // TRUST_TOKEN_new creates a newly-allocated |TRUST_TOKEN| with value |data| or
62
+ // NULL on allocation failure.
63
+ OPENSSL_EXPORT TRUST_TOKEN *TRUST_TOKEN_new(const uint8_t *data, size_t len);
64
+
65
+ // TRUST_TOKEN_free releases memory associated with |token|.
66
+ OPENSSL_EXPORT void TRUST_TOKEN_free(TRUST_TOKEN *token);
67
+
68
+ #define TRUST_TOKEN_MAX_PRIVATE_KEY_SIZE 512
69
+ #define TRUST_TOKEN_MAX_PUBLIC_KEY_SIZE 512
70
+
71
+ // TRUST_TOKEN_generate_key creates a new Trust Token keypair labeled with |id|
72
+ // and serializes the private and public keys, writing the private key to
73
+ // |out_priv_key| and setting |*out_priv_key_len| to the number of bytes
74
+ // written, and writing the public key to |out_pub_key| and setting
75
+ // |*out_pub_key_len| to the number of bytes written.
76
+ //
77
+ // At most |max_priv_key_len| and |max_pub_key_len| bytes are written. In order
78
+ // to ensure success, these should be at least
79
+ // |TRUST_TOKEN_MAX_PRIVATE_KEY_SIZE| and |TRUST_TOKEN_MAX_PUBLIC_KEY_SIZE|.
80
+ //
81
+ // WARNING: This API is unstable and the serializations of these keys are
82
+ // subject to change. Keys generated with this function may not be persisted.
83
+ //
84
+ // This function returns one on success or zero on error.
85
+ OPENSSL_EXPORT int TRUST_TOKEN_generate_key(
86
+ const TRUST_TOKEN_METHOD *method, uint8_t *out_priv_key,
87
+ size_t *out_priv_key_len, size_t max_priv_key_len, uint8_t *out_pub_key,
88
+ size_t *out_pub_key_len, size_t max_pub_key_len, uint32_t id);
89
+
90
+
91
+ // Trust Token client implementation.
92
+ //
93
+ // These functions implements the client half of the Trust Token protocol. A
94
+ // single |TRUST_TOKEN_CLIENT| can perform a single protocol operation.
95
+
96
+ // TRUST_TOKEN_CLIENT_new returns a newly-allocated |TRUST_TOKEN_CLIENT|
97
+ // configured to use a max batchsize of |max_batchsize| or NULL on error.
98
+ // Issuance requests must be made in batches smaller than |max_batchsize|. This
99
+ // function will return an error if |max_batchsize| is too large for Trust
100
+ // Tokens.
101
+ OPENSSL_EXPORT TRUST_TOKEN_CLIENT *TRUST_TOKEN_CLIENT_new(
102
+ const TRUST_TOKEN_METHOD *method, size_t max_batchsize);
103
+
104
+ // TRUST_TOKEN_CLIENT_free releases memory associated with |ctx|.
105
+ OPENSSL_EXPORT void TRUST_TOKEN_CLIENT_free(TRUST_TOKEN_CLIENT *ctx);
106
+
107
+ // TRUST_TOKEN_CLIENT_add_key configures the |ctx| to support the public key
108
+ // |key|. It sets |*out_key_index| to the index this key has been configured to.
109
+ // It returns one on success or zero on error if the |key| can't be parsed or
110
+ // too many keys have been configured.
111
+ OPENSSL_EXPORT int TRUST_TOKEN_CLIENT_add_key(TRUST_TOKEN_CLIENT *ctx,
112
+ size_t *out_key_index,
113
+ const uint8_t *key,
114
+ size_t key_len);
115
+
116
+ // TRUST_TOKEN_CLIENT_set_srr_key sets the public key used to verify the SRR. It
117
+ // returns one on success and zero on error.
118
+ OPENSSL_EXPORT int TRUST_TOKEN_CLIENT_set_srr_key(TRUST_TOKEN_CLIENT *ctx,
119
+ EVP_PKEY *key);
120
+
121
+ // TRUST_TOKEN_CLIENT_begin_issuance produces a request for |count| trust tokens
122
+ // and serializes the request into a newly-allocated buffer, setting |*out| to
123
+ // that buffer and |*out_len| to its length. The caller takes ownership of the
124
+ // buffer and must call |OPENSSL_free| when done. It returns one on success and
125
+ // zero on error.
126
+ OPENSSL_EXPORT int TRUST_TOKEN_CLIENT_begin_issuance(TRUST_TOKEN_CLIENT *ctx,
127
+ uint8_t **out,
128
+ size_t *out_len,
129
+ size_t count);
130
+
131
+ // TRUST_TOKEN_CLIENT_finish_issuance consumes |response| from the issuer and
132
+ // extracts the tokens, returning a list of tokens and the index of the key used
133
+ // to sign the tokens in |*out_key_index|. The caller can use this to determine
134
+ // what key was used in an issuance and to drop tokens if a new key commitment
135
+ // arrives without the specified key present. The caller takes ownership of the
136
+ // list and must call |sk_TRUST_TOKEN_pop_free| when done. The list is empty if
137
+ // issuance fails.
138
+ OPENSSL_EXPORT STACK_OF(TRUST_TOKEN) *
139
+ TRUST_TOKEN_CLIENT_finish_issuance(TRUST_TOKEN_CLIENT *ctx,
140
+ size_t *out_key_index,
141
+ const uint8_t *response,
142
+ size_t response_len);
143
+
144
+
145
+ // TRUST_TOKEN_CLIENT_begin_redemption produces a request to redeem a token
146
+ // |token| and receive a signature over |data| and serializes the request into
147
+ // a newly-allocated buffer, setting |*out| to that buffer and |*out_len| to
148
+ // its length. |time| is the number of seconds since the UNIX epoch and used to
149
+ // verify the validity of the issuer's response in TrustTokenV1 and ignored in
150
+ // other versions. The caller takes ownership of the buffer and must call
151
+ // |OPENSSL_free| when done. It returns one on success or zero on error.
152
+ OPENSSL_EXPORT int TRUST_TOKEN_CLIENT_begin_redemption(
153
+ TRUST_TOKEN_CLIENT *ctx, uint8_t **out, size_t *out_len,
154
+ const TRUST_TOKEN *token, const uint8_t *data, size_t data_len,
155
+ uint64_t time);
156
+
157
+ // TRUST_TOKEN_CLIENT_finish_redemption consumes |response| from the issuer. In
158
+ // |TRUST_TOKEN_experiment_v1|, it then verifies the SRR and if valid sets
159
+ // |*out_rr| and |*out_rr_len| (respectively, |*out_sig| and |*out_sig_len|)
160
+ // to a newly-allocated buffer containing the SRR (respectively, the SRR
161
+ // signature). In other versions, it sets |*out_rr| and |*out_rr_len|
162
+ // to a newly-allocated buffer containing |response| and leaves all validation
163
+ // to the caller. It returns one on success or zero on failure.
164
+ OPENSSL_EXPORT int TRUST_TOKEN_CLIENT_finish_redemption(
165
+ TRUST_TOKEN_CLIENT *ctx, uint8_t **out_rr, size_t *out_rr_len,
166
+ uint8_t **out_sig, size_t *out_sig_len, const uint8_t *response,
167
+ size_t response_len);
168
+
169
+
170
+ // Trust Token issuer implementation.
171
+ //
172
+ // These functions implement the issuer half of the Trust Token protocol. A
173
+ // |TRUST_TOKEN_ISSUER| can be reused across multiple protocol operations. It
174
+ // may be used concurrently on multiple threads by non-mutating functions,
175
+ // provided no other thread is concurrently calling a mutating function.
176
+ // Functions which take a |const| pointer are non-mutating and functions which
177
+ // take a non-|const| pointer are mutating.
178
+
179
+ // TRUST_TOKEN_ISSUER_new returns a newly-allocated |TRUST_TOKEN_ISSUER|
180
+ // configured to use a max batchsize of |max_batchsize| or NULL on error.
181
+ // Issuance requests must be made in batches smaller than |max_batchsize|. This
182
+ // function will return an error if |max_batchsize| is too large for Trust
183
+ // Tokens.
184
+ OPENSSL_EXPORT TRUST_TOKEN_ISSUER *TRUST_TOKEN_ISSUER_new(
185
+ const TRUST_TOKEN_METHOD *method, size_t max_batchsize);
186
+
187
+ // TRUST_TOKEN_ISSUER_free releases memory associated with |ctx|.
188
+ OPENSSL_EXPORT void TRUST_TOKEN_ISSUER_free(TRUST_TOKEN_ISSUER *ctx);
189
+
190
+ // TRUST_TOKEN_ISSUER_add_key configures the |ctx| to support the private key
191
+ // |key|. It must be a private key returned by |TRUST_TOKEN_generate_key|. It
192
+ // returns one on success or zero on error. This function may fail if the |key|
193
+ // can't be parsed or too many keys have been configured.
194
+ OPENSSL_EXPORT int TRUST_TOKEN_ISSUER_add_key(TRUST_TOKEN_ISSUER *ctx,
195
+ const uint8_t *key,
196
+ size_t key_len);
197
+
198
+ // TRUST_TOKEN_ISSUER_set_srr_key sets the private key used to sign the SRR. It
199
+ // returns one on success and zero on error.
200
+ OPENSSL_EXPORT int TRUST_TOKEN_ISSUER_set_srr_key(TRUST_TOKEN_ISSUER *ctx,
201
+ EVP_PKEY *key);
202
+
203
+ // TRUST_TOKEN_ISSUER_set_metadata_key sets the key used to encrypt the private
204
+ // metadata. The key is a randomly generated bytestring of at least 32 bytes
205
+ // used to encode the private metadata bit in the SRR. It returns one on success
206
+ // and zero on error.
207
+ OPENSSL_EXPORT int TRUST_TOKEN_ISSUER_set_metadata_key(TRUST_TOKEN_ISSUER *ctx,
208
+ const uint8_t *key,
209
+ size_t len);
210
+
211
+ // TRUST_TOKEN_ISSUER_issue ingests |request| for token issuance
212
+ // and generates up to |max_issuance| valid tokens, producing a list of blinded
213
+ // tokens and storing the response into a newly-allocated buffer and setting
214
+ // |*out| to that buffer, |*out_len| to its length, and |*out_tokens_issued| to
215
+ // the number of tokens issued. The tokens are issued with public metadata of
216
+ // |public_metadata| and a private metadata value of |private_metadata|.
217
+ // |public_metadata| must be one of the previously configured key IDs.
218
+ // |private_metadata| must be 0 or 1. The caller takes ownership of the buffer
219
+ // and must call |OPENSSL_free| when done. It returns one on success or zero on
220
+ // error.
221
+ OPENSSL_EXPORT int TRUST_TOKEN_ISSUER_issue(
222
+ const TRUST_TOKEN_ISSUER *ctx, uint8_t **out, size_t *out_len,
223
+ size_t *out_tokens_issued, const uint8_t *request, size_t request_len,
224
+ uint32_t public_metadata, uint8_t private_metadata, size_t max_issuance);
225
+
226
+ // TRUST_TOKEN_ISSUER_redeem ingests a |request| for token redemption and
227
+ // verifies the token. If the token is valid, a RR is produced with a lifetime
228
+ // of |lifetime| (in seconds), signing over the requested data from the request
229
+ // and the value of the token, storing the result into a newly-allocated buffer
230
+ // and setting |*out| to that buffer and |*out_len| to its length. The extracted
231
+ // |TRUST_TOKEN| is stored into a newly-allocated buffer and stored in
232
+ // |*out_token|. The extracted client data is stored into a newly-allocated
233
+ // buffer and stored in |*out_client_data|. In TrustTokenV1, the extracted
234
+ // redemption time is stored in |*out_redemption_time|. The caller takes
235
+ // ownership of each output buffer and must call |OPENSSL_free| when done. It
236
+ // returns one on success or zero on error.
237
+ //
238
+ // The caller must keep track of all values of |*out_token| seen globally before
239
+ // returning the SRR to the client. If the value has been reused, the caller
240
+ // must discard the SRR and report an error to the caller. Returning an SRR with
241
+ // replayed values allows an attacker to double-spend tokens.
242
+ OPENSSL_EXPORT int TRUST_TOKEN_ISSUER_redeem(
243
+ const TRUST_TOKEN_ISSUER *ctx, uint8_t **out, size_t *out_len,
244
+ TRUST_TOKEN **out_token, uint8_t **out_client_data,
245
+ size_t *out_client_data_len, uint64_t *out_redemption_time,
246
+ const uint8_t *request, size_t request_len, uint64_t lifetime);
247
+
248
+ // TRUST_TOKEN_ISSUER_redeem_raw ingests a |request| for token redemption and
249
+ // verifies the token. The public metadata is stored in |*out_public|. The
250
+ // private metadata (if any) is stored in |*out_private|. The extracted
251
+ // |TRUST_TOKEN| is stored into a newly-allocated buffer and stored in
252
+ // |*out_token|. The extracted client data is stored into a newly-allocated
253
+ // buffer and stored in |*out_client_data|. The caller takes ownership of each
254
+ // output buffer and must call |OPENSSL_free| when done. It returns one on
255
+ // success or zero on error.
256
+ //
257
+ // The caller must keep track of all values of |*out_token| seen globally before
258
+ // returning a response to the client. If the value has been reused, the caller
259
+ // must report an error to the client. Returning a response with replayed values
260
+ // allows an attacker to double-spend tokens.
261
+ OPENSSL_EXPORT int TRUST_TOKEN_ISSUER_redeem_raw(
262
+ const TRUST_TOKEN_ISSUER *ctx, uint32_t *out_public, uint8_t *out_private,
263
+ TRUST_TOKEN **out_token, uint8_t **out_client_data,
264
+ size_t *out_client_data_len, const uint8_t *request, size_t request_len);
265
+
266
+ // TRUST_TOKEN_decode_private_metadata decodes |encrypted_bit| using the
267
+ // private metadata key specified by a |key| buffer of length |key_len| and the
268
+ // nonce by a |nonce| buffer of length |nonce_len|. The nonce in
269
+ // |TRUST_TOKEN_experiment_v1| is the token-hash field of the SRR. |*out_value|
270
+ // is set to the decrypted value, either zero or one. It returns one on success
271
+ // and zero on error.
272
+ OPENSSL_EXPORT int TRUST_TOKEN_decode_private_metadata(
273
+ const TRUST_TOKEN_METHOD *method, uint8_t *out_value, const uint8_t *key,
274
+ size_t key_len, const uint8_t *nonce, size_t nonce_len,
275
+ uint8_t encrypted_bit);
276
+
277
+
278
+ #if defined(__cplusplus)
279
+ } // extern C
280
+
281
+ extern "C++" {
282
+
283
+ BSSL_NAMESPACE_BEGIN
284
+
285
+ BORINGSSL_MAKE_DELETER(TRUST_TOKEN, TRUST_TOKEN_free)
286
+ BORINGSSL_MAKE_DELETER(TRUST_TOKEN_CLIENT, TRUST_TOKEN_CLIENT_free)
287
+ BORINGSSL_MAKE_DELETER(TRUST_TOKEN_ISSUER, TRUST_TOKEN_ISSUER_free)
288
+
289
+ BSSL_NAMESPACE_END
290
+
291
+ } // extern C++
292
+ #endif
293
+
294
+ #define TRUST_TOKEN_R_KEYGEN_FAILURE 100
295
+ #define TRUST_TOKEN_R_BUFFER_TOO_SMALL 101
296
+ #define TRUST_TOKEN_R_OVER_BATCHSIZE 102
297
+ #define TRUST_TOKEN_R_DECODE_ERROR 103
298
+ #define TRUST_TOKEN_R_SRR_SIGNATURE_ERROR 104
299
+ #define TRUST_TOKEN_R_DECODE_FAILURE 105
300
+ #define TRUST_TOKEN_R_INVALID_METADATA 106
301
+ #define TRUST_TOKEN_R_TOO_MANY_KEYS 107
302
+ #define TRUST_TOKEN_R_NO_KEYS_CONFIGURED 108
303
+ #define TRUST_TOKEN_R_INVALID_KEY_ID 109
304
+ #define TRUST_TOKEN_R_INVALID_TOKEN 110
305
+ #define TRUST_TOKEN_R_BAD_VALIDITY_CHECK 111
306
+ #define TRUST_TOKEN_R_NO_SRR_KEY_CONFIGURED 112
307
+ #define TRUST_TOKEN_R_INVALID_METADATA_KEY 113
308
+ #define TRUST_TOKEN_R_INVALID_PROOF 114
309
+
310
+ #endif // OPENSSL_HEADER_TRUST_TOKEN_H
@@ -4,21 +4,21 @@
4
4
  * This package is an SSL implementation written
5
5
  * by Eric Young (eay@cryptsoft.com).
6
6
  * The implementation was written so as to conform with Netscapes SSL.
7
- *
7
+ *
8
8
  * This library is free for commercial and non-commercial use as long as
9
9
  * the following conditions are aheared to. The following conditions
10
10
  * apply to all code found in this distribution, be it the RC4, RSA,
11
11
  * lhash, DES, etc., code; not just the SSL code. The SSL documentation
12
12
  * included with this distribution is covered by the same copyright terms
13
13
  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
14
- *
14
+ *
15
15
  * Copyright remains Eric Young's, and as such any Copyright notices in
16
16
  * the code are not to be removed.
17
17
  * If this package is used in a product, Eric Young should be given attribution
18
18
  * as the author of the parts of the library used.
19
19
  * This can be in the form of a textual message at program startup or
20
20
  * in documentation (online or textual) provided with the package.
21
- *
21
+ *
22
22
  * Redistribution and use in source and binary forms, with or without
23
23
  * modification, are permitted provided that the following conditions
24
24
  * are met:
@@ -33,10 +33,10 @@
33
33
  * Eric Young (eay@cryptsoft.com)"
34
34
  * The word 'cryptographic' can be left out if the rouines from the library
35
35
  * being used are not cryptographic related :-).
36
- * 4. If you include any Windows specific code (or a derivative thereof) from
36
+ * 4. If you include any Windows specific code (or a derivative thereof) from
37
37
  * the apps directory (application code) you must include an acknowledgement:
38
38
  * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
39
- *
39
+ *
40
40
  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
41
41
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
42
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -48,7 +48,7 @@
48
48
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
49
49
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
50
50
  * SUCH DAMAGE.
51
- *
51
+ *
52
52
  * The licence and distribution terms for any publically available version or
53
53
  * derivative of this code cannot be changed. i.e. this code cannot simply be
54
54
  * copied and put under another distribution licence
@@ -56,25 +56,22 @@
56
56
  */
57
57
  /* ====================================================================
58
58
  * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
59
- * ECDH support in OpenSSL originally developed by
59
+ * ECDH support in OpenSSL originally developed by
60
60
  * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
61
61
  */
62
62
 
63
63
  #ifndef HEADER_X509_H
64
64
  #define HEADER_X509_H
65
65
 
66
- #include <openssl/base.h>
67
-
68
- #include <time.h>
69
-
70
66
  #include <openssl/asn1.h>
67
+ #include <openssl/base.h>
71
68
  #include <openssl/bio.h>
72
69
  #include <openssl/cipher.h>
73
70
  #include <openssl/dh.h>
74
71
  #include <openssl/dsa.h>
72
+ #include <openssl/ec.h>
75
73
  #include <openssl/ecdh.h>
76
74
  #include <openssl/ecdsa.h>
77
- #include <openssl/ec.h>
78
75
  #include <openssl/evp.h>
79
76
  #include <openssl/obj.h>
80
77
  #include <openssl/pkcs7.h>
@@ -83,542 +80,752 @@
83
80
  #include <openssl/sha.h>
84
81
  #include <openssl/stack.h>
85
82
  #include <openssl/thread.h>
83
+ #include <time.h>
86
84
 
87
- #ifdef __cplusplus
85
+ #ifdef __cplusplus
88
86
  extern "C" {
89
87
  #endif
90
88
 
91
89
 
92
- /* Legacy X.509 library.
93
- *
94
- * This header is part of OpenSSL's X.509 implementation. It is retained for
95
- * compatibility but otherwise underdocumented and not actively maintained. In
96
- * the future, a replacement library will be available. Meanwhile, minimize
97
- * dependencies on this header where possible. */
98
-
99
-
100
- #define X509_FILETYPE_PEM 1
101
- #define X509_FILETYPE_ASN1 2
102
- #define X509_FILETYPE_DEFAULT 3
103
-
104
- #define X509v3_KU_DIGITAL_SIGNATURE 0x0080
105
- #define X509v3_KU_NON_REPUDIATION 0x0040
106
- #define X509v3_KU_KEY_ENCIPHERMENT 0x0020
107
- #define X509v3_KU_DATA_ENCIPHERMENT 0x0010
108
- #define X509v3_KU_KEY_AGREEMENT 0x0008
109
- #define X509v3_KU_KEY_CERT_SIGN 0x0004
110
- #define X509v3_KU_CRL_SIGN 0x0002
111
- #define X509v3_KU_ENCIPHER_ONLY 0x0001
112
- #define X509v3_KU_DECIPHER_ONLY 0x8000
113
- #define X509v3_KU_UNDEF 0xffff
90
+ // Legacy X.509 library.
91
+ //
92
+ // This header is part of OpenSSL's X.509 implementation. It is retained for
93
+ // compatibility but otherwise underdocumented and not actively maintained. In
94
+ // the future, a replacement library will be available. Meanwhile, minimize
95
+ // dependencies on this header where possible.
96
+
97
+
98
+ #define X509_FILETYPE_PEM 1
99
+ #define X509_FILETYPE_ASN1 2
100
+ #define X509_FILETYPE_DEFAULT 3
101
+
102
+ #define X509v3_KU_DIGITAL_SIGNATURE 0x0080
103
+ #define X509v3_KU_NON_REPUDIATION 0x0040
104
+ #define X509v3_KU_KEY_ENCIPHERMENT 0x0020
105
+ #define X509v3_KU_DATA_ENCIPHERMENT 0x0010
106
+ #define X509v3_KU_KEY_AGREEMENT 0x0008
107
+ #define X509v3_KU_KEY_CERT_SIGN 0x0004
108
+ #define X509v3_KU_CRL_SIGN 0x0002
109
+ #define X509v3_KU_ENCIPHER_ONLY 0x0001
110
+ #define X509v3_KU_DECIPHER_ONLY 0x8000
111
+ #define X509v3_KU_UNDEF 0xffff
114
112
 
115
113
  DEFINE_STACK_OF(X509_ALGOR)
116
114
  DECLARE_ASN1_SET_OF(X509_ALGOR)
117
115
 
118
116
  typedef STACK_OF(X509_ALGOR) X509_ALGORS;
119
117
 
120
- struct X509_val_st
121
- {
122
- ASN1_TIME *notBefore;
123
- ASN1_TIME *notAfter;
124
- } /* X509_VAL */;
125
-
126
- struct X509_pubkey_st
127
- {
128
- X509_ALGOR *algor;
129
- ASN1_BIT_STRING *public_key;
130
- EVP_PKEY *pkey;
131
- };
132
-
133
- struct X509_sig_st
134
- {
135
- X509_ALGOR *algor;
136
- ASN1_OCTET_STRING *digest;
137
- } /* X509_SIG */;
138
-
139
- struct X509_name_entry_st
140
- {
141
- ASN1_OBJECT *object;
142
- ASN1_STRING *value;
143
- int set;
144
- int size; /* temp variable */
145
- } /* X509_NAME_ENTRY */;
118
+ struct X509_val_st {
119
+ ASN1_TIME *notBefore;
120
+ ASN1_TIME *notAfter;
121
+ } /* X509_VAL */;
122
+
123
+ struct X509_pubkey_st {
124
+ X509_ALGOR *algor;
125
+ ASN1_BIT_STRING *public_key;
126
+ EVP_PKEY *pkey;
127
+ };
128
+
129
+ struct X509_sig_st {
130
+ X509_ALGOR *algor;
131
+ ASN1_OCTET_STRING *digest;
132
+ } /* X509_SIG */;
133
+
134
+ struct X509_name_entry_st {
135
+ ASN1_OBJECT *object;
136
+ ASN1_STRING *value;
137
+ int set;
138
+ int size; // temp variable
139
+ } /* X509_NAME_ENTRY */;
146
140
 
147
141
  DEFINE_STACK_OF(X509_NAME_ENTRY)
148
142
  DECLARE_ASN1_SET_OF(X509_NAME_ENTRY)
149
143
 
150
- /* we always keep X509_NAMEs in 2 forms. */
151
- struct X509_name_st
152
- {
153
- STACK_OF(X509_NAME_ENTRY) *entries;
154
- int modified; /* true if 'bytes' needs to be built */
155
- BUF_MEM *bytes;
156
- /* unsigned long hash; Keep the hash around for lookups */
157
- unsigned char *canon_enc;
158
- int canon_enclen;
159
- } /* X509_NAME */;
144
+ // we always keep X509_NAMEs in 2 forms.
145
+ struct X509_name_st {
146
+ STACK_OF(X509_NAME_ENTRY) *entries;
147
+ int modified; // true if 'bytes' needs to be built
148
+ BUF_MEM *bytes;
149
+ // unsigned long hash; Keep the hash around for lookups
150
+ unsigned char *canon_enc;
151
+ int canon_enclen;
152
+ } /* X509_NAME */;
160
153
 
161
154
  DEFINE_STACK_OF(X509_NAME)
162
155
 
163
- struct X509_extension_st
164
- {
165
- ASN1_OBJECT *object;
166
- ASN1_BOOLEAN critical;
167
- ASN1_OCTET_STRING *value;
168
- } /* X509_EXTENSION */;
156
+ struct X509_extension_st {
157
+ ASN1_OBJECT *object;
158
+ ASN1_BOOLEAN critical;
159
+ ASN1_OCTET_STRING *value;
160
+ } /* X509_EXTENSION */;
169
161
 
170
162
  typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS;
171
163
 
172
164
  DEFINE_STACK_OF(X509_EXTENSION)
173
165
  DECLARE_ASN1_SET_OF(X509_EXTENSION)
174
166
 
175
- /* a sequence of these are used */
176
- struct x509_attributes_st
177
- {
178
- ASN1_OBJECT *object;
179
- int single; /* 0 for a set, 1 for a single item (which is wrong) */
180
- union {
181
- char *ptr;
182
- /* 0 */ STACK_OF(ASN1_TYPE) *set;
183
- /* 1 */ ASN1_TYPE *single;
184
- } value;
185
- } /* X509_ATTRIBUTE */;
167
+ // a sequence of these are used
168
+ struct x509_attributes_st {
169
+ ASN1_OBJECT *object;
170
+ int single; // 0 for a set, 1 for a single item (which is wrong)
171
+ union {
172
+ char *ptr;
173
+ /* 0 */ STACK_OF(ASN1_TYPE) *set;
174
+ /* 1 */ ASN1_TYPE *single;
175
+ } value;
176
+ } /* X509_ATTRIBUTE */;
186
177
 
187
178
  DEFINE_STACK_OF(X509_ATTRIBUTE)
188
179
  DECLARE_ASN1_SET_OF(X509_ATTRIBUTE)
189
180
 
190
181
 
191
- struct X509_req_info_st
192
- {
193
- ASN1_ENCODING enc;
194
- ASN1_INTEGER *version;
195
- X509_NAME *subject;
196
- X509_PUBKEY *pubkey;
197
- /* d=2 hl=2 l= 0 cons: cont: 00 */
198
- STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */
199
- } /* X509_REQ_INFO */;
200
-
201
- struct X509_req_st
202
- {
203
- X509_REQ_INFO *req_info;
204
- X509_ALGOR *sig_alg;
205
- ASN1_BIT_STRING *signature;
206
- CRYPTO_refcount_t references;
207
- } /* X509_REQ */;
208
-
209
- struct x509_cinf_st
210
- {
211
- ASN1_INTEGER *version; /* [ 0 ] default of v1 */
212
- ASN1_INTEGER *serialNumber;
213
- X509_ALGOR *signature;
214
- X509_NAME *issuer;
215
- X509_VAL *validity;
216
- X509_NAME *subject;
217
- X509_PUBKEY *key;
218
- ASN1_BIT_STRING *issuerUID; /* [ 1 ] optional in v2 */
219
- ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */
220
- STACK_OF(X509_EXTENSION) *extensions; /* [ 3 ] optional in v3 */
221
- ASN1_ENCODING enc;
222
- } /* X509_CINF */;
223
-
224
- /* This stuff is certificate "auxiliary info"
225
- * it contains details which are useful in certificate
226
- * stores and databases. When used this is tagged onto
227
- * the end of the certificate itself
228
- */
229
-
230
- struct x509_cert_aux_st
231
- {
232
- STACK_OF(ASN1_OBJECT) *trust; /* trusted uses */
233
- STACK_OF(ASN1_OBJECT) *reject; /* rejected uses */
234
- ASN1_UTF8STRING *alias; /* "friendly name" */
235
- ASN1_OCTET_STRING *keyid; /* key id of private key */
236
- STACK_OF(X509_ALGOR) *other; /* other unspecified info */
237
- } /* X509_CERT_AUX */;
182
+ struct X509_req_info_st {
183
+ ASN1_ENCODING enc;
184
+ ASN1_INTEGER *version;
185
+ X509_NAME *subject;
186
+ X509_PUBKEY *pubkey;
187
+ // d=2 hl=2 l= 0 cons: cont: 00
188
+ STACK_OF(X509_ATTRIBUTE) *attributes; // [ 0 ]
189
+ } /* X509_REQ_INFO */;
190
+
191
+ struct X509_req_st {
192
+ X509_REQ_INFO *req_info;
193
+ X509_ALGOR *sig_alg;
194
+ ASN1_BIT_STRING *signature;
195
+ CRYPTO_refcount_t references;
196
+ } /* X509_REQ */;
197
+
198
+ struct x509_cinf_st {
199
+ ASN1_INTEGER *version; // [ 0 ] default of v1
200
+ ASN1_INTEGER *serialNumber;
201
+ X509_ALGOR *signature;
202
+ X509_NAME *issuer;
203
+ X509_VAL *validity;
204
+ X509_NAME *subject;
205
+ X509_PUBKEY *key;
206
+ ASN1_BIT_STRING *issuerUID; // [ 1 ] optional in v2
207
+ ASN1_BIT_STRING *subjectUID; // [ 2 ] optional in v2
208
+ STACK_OF(X509_EXTENSION) *extensions; // [ 3 ] optional in v3
209
+ ASN1_ENCODING enc;
210
+ } /* X509_CINF */;
211
+
212
+ // This stuff is certificate "auxiliary info"
213
+ // it contains details which are useful in certificate
214
+ // stores and databases. When used this is tagged onto
215
+ // the end of the certificate itself
216
+
217
+ struct x509_cert_aux_st {
218
+ STACK_OF(ASN1_OBJECT) *trust; // trusted uses
219
+ STACK_OF(ASN1_OBJECT) *reject; // rejected uses
220
+ ASN1_UTF8STRING *alias; // "friendly name"
221
+ ASN1_OCTET_STRING *keyid; // key id of private key
222
+ STACK_OF(X509_ALGOR) *other; // other unspecified info
223
+ } /* X509_CERT_AUX */;
238
224
 
239
225
  DECLARE_STACK_OF(DIST_POINT)
240
226
  DECLARE_STACK_OF(GENERAL_NAME)
241
227
 
242
- struct x509_st
243
- {
244
- X509_CINF *cert_info;
245
- X509_ALGOR *sig_alg;
246
- ASN1_BIT_STRING *signature;
247
- CRYPTO_refcount_t references;
248
- char *name;
249
- CRYPTO_EX_DATA ex_data;
250
- /* These contain copies of various extension values */
251
- long ex_pathlen;
252
- long ex_pcpathlen;
253
- unsigned long ex_flags;
254
- unsigned long ex_kusage;
255
- unsigned long ex_xkusage;
256
- unsigned long ex_nscert;
257
- ASN1_OCTET_STRING *skid;
258
- AUTHORITY_KEYID *akid;
259
- X509_POLICY_CACHE *policy_cache;
260
- STACK_OF(DIST_POINT) *crldp;
261
- STACK_OF(GENERAL_NAME) *altname;
262
- NAME_CONSTRAINTS *nc;
263
- unsigned char sha1_hash[SHA_DIGEST_LENGTH];
264
- X509_CERT_AUX *aux;
265
- CRYPTO_BUFFER *buf;
266
- CRYPTO_MUTEX lock;
267
- } /* X509 */;
228
+ struct x509_st {
229
+ X509_CINF *cert_info;
230
+ X509_ALGOR *sig_alg;
231
+ ASN1_BIT_STRING *signature;
232
+ CRYPTO_refcount_t references;
233
+ CRYPTO_EX_DATA ex_data;
234
+ // These contain copies of various extension values
235
+ long ex_pathlen;
236
+ long ex_pcpathlen;
237
+ unsigned long ex_flags;
238
+ unsigned long ex_kusage;
239
+ unsigned long ex_xkusage;
240
+ unsigned long ex_nscert;
241
+ ASN1_OCTET_STRING *skid;
242
+ AUTHORITY_KEYID *akid;
243
+ X509_POLICY_CACHE *policy_cache;
244
+ STACK_OF(DIST_POINT) *crldp;
245
+ STACK_OF(GENERAL_NAME) *altname;
246
+ NAME_CONSTRAINTS *nc;
247
+ unsigned char sha1_hash[SHA_DIGEST_LENGTH];
248
+ X509_CERT_AUX *aux;
249
+ CRYPTO_BUFFER *buf;
250
+ CRYPTO_MUTEX lock;
251
+ } /* X509 */;
268
252
 
269
253
  DEFINE_STACK_OF(X509)
270
254
  DECLARE_ASN1_SET_OF(X509)
271
255
 
272
- /* This is used for a table of trust checking functions */
256
+ // This is used for a table of trust checking functions
273
257
 
274
258
  struct x509_trust_st {
275
- int trust;
276
- int flags;
277
- int (*check_trust)(struct x509_trust_st *, X509 *, int);
278
- char *name;
279
- int arg1;
280
- void *arg2;
259
+ int trust;
260
+ int flags;
261
+ int (*check_trust)(struct x509_trust_st *, X509 *, int);
262
+ char *name;
263
+ int arg1;
264
+ void *arg2;
281
265
  } /* X509_TRUST */;
282
266
 
283
267
  DEFINE_STACK_OF(X509_TRUST)
284
268
 
285
- /* standard trust ids */
269
+ // standard trust ids
286
270
 
287
- #define X509_TRUST_DEFAULT (-1) /* Only valid in purpose settings */
271
+ #define X509_TRUST_DEFAULT (-1) // Only valid in purpose settings
288
272
 
289
- #define X509_TRUST_COMPAT 1
290
- #define X509_TRUST_SSL_CLIENT 2
291
- #define X509_TRUST_SSL_SERVER 3
292
- #define X509_TRUST_EMAIL 4
293
- #define X509_TRUST_OBJECT_SIGN 5
294
- #define X509_TRUST_OCSP_SIGN 6
295
- #define X509_TRUST_OCSP_REQUEST 7
296
- #define X509_TRUST_TSA 8
273
+ #define X509_TRUST_COMPAT 1
274
+ #define X509_TRUST_SSL_CLIENT 2
275
+ #define X509_TRUST_SSL_SERVER 3
276
+ #define X509_TRUST_EMAIL 4
277
+ #define X509_TRUST_OBJECT_SIGN 5
278
+ #define X509_TRUST_OCSP_SIGN 6
279
+ #define X509_TRUST_OCSP_REQUEST 7
280
+ #define X509_TRUST_TSA 8
297
281
 
298
- /* Keep these up to date! */
299
- #define X509_TRUST_MIN 1
300
- #define X509_TRUST_MAX 8
282
+ // Keep these up to date!
283
+ #define X509_TRUST_MIN 1
284
+ #define X509_TRUST_MAX 8
301
285
 
302
286
 
303
- /* trust_flags values */
304
- #define X509_TRUST_DYNAMIC 1
305
- #define X509_TRUST_DYNAMIC_NAME 2
287
+ // trust_flags values
288
+ #define X509_TRUST_DYNAMIC 1
289
+ #define X509_TRUST_DYNAMIC_NAME 2
306
290
 
307
- /* check_trust return codes */
291
+ // check_trust return codes
308
292
 
309
- #define X509_TRUST_TRUSTED 1
310
- #define X509_TRUST_REJECTED 2
311
- #define X509_TRUST_UNTRUSTED 3
293
+ #define X509_TRUST_TRUSTED 1
294
+ #define X509_TRUST_REJECTED 2
295
+ #define X509_TRUST_UNTRUSTED 3
312
296
 
313
- /* Flags for X509_print_ex() */
297
+ // Flags for X509_print_ex()
314
298
 
315
- #define X509_FLAG_COMPAT 0
316
- #define X509_FLAG_NO_HEADER 1L
317
- #define X509_FLAG_NO_VERSION (1L << 1)
318
- #define X509_FLAG_NO_SERIAL (1L << 2)
319
- #define X509_FLAG_NO_SIGNAME (1L << 3)
320
- #define X509_FLAG_NO_ISSUER (1L << 4)
321
- #define X509_FLAG_NO_VALIDITY (1L << 5)
322
- #define X509_FLAG_NO_SUBJECT (1L << 6)
323
- #define X509_FLAG_NO_PUBKEY (1L << 7)
324
- #define X509_FLAG_NO_EXTENSIONS (1L << 8)
325
- #define X509_FLAG_NO_SIGDUMP (1L << 9)
326
- #define X509_FLAG_NO_AUX (1L << 10)
327
- #define X509_FLAG_NO_ATTRIBUTES (1L << 11)
328
- #define X509_FLAG_NO_IDS (1L << 12)
299
+ #define X509_FLAG_COMPAT 0
300
+ #define X509_FLAG_NO_HEADER 1L
301
+ #define X509_FLAG_NO_VERSION (1L << 1)
302
+ #define X509_FLAG_NO_SERIAL (1L << 2)
303
+ #define X509_FLAG_NO_SIGNAME (1L << 3)
304
+ #define X509_FLAG_NO_ISSUER (1L << 4)
305
+ #define X509_FLAG_NO_VALIDITY (1L << 5)
306
+ #define X509_FLAG_NO_SUBJECT (1L << 6)
307
+ #define X509_FLAG_NO_PUBKEY (1L << 7)
308
+ #define X509_FLAG_NO_EXTENSIONS (1L << 8)
309
+ #define X509_FLAG_NO_SIGDUMP (1L << 9)
310
+ #define X509_FLAG_NO_AUX (1L << 10)
311
+ #define X509_FLAG_NO_ATTRIBUTES (1L << 11)
312
+ #define X509_FLAG_NO_IDS (1L << 12)
329
313
 
330
- /* Flags specific to X509_NAME_print_ex() */
314
+ // Flags specific to X509_NAME_print_ex()
331
315
 
332
- /* The field separator information */
316
+ // The field separator information
333
317
 
334
- #define XN_FLAG_SEP_MASK (0xf << 16)
318
+ #define XN_FLAG_SEP_MASK (0xf << 16)
335
319
 
336
- #define XN_FLAG_COMPAT 0 /* Traditional SSLeay: use old X509_NAME_print */
337
- #define XN_FLAG_SEP_COMMA_PLUS (1 << 16) /* RFC2253 ,+ */
338
- #define XN_FLAG_SEP_CPLUS_SPC (2 << 16) /* ,+ spaced: more readable */
339
- #define XN_FLAG_SEP_SPLUS_SPC (3 << 16) /* ;+ spaced */
340
- #define XN_FLAG_SEP_MULTILINE (4 << 16) /* One line per field */
320
+ #define XN_FLAG_COMPAT 0 // Traditional SSLeay: use old X509_NAME_print
321
+ #define XN_FLAG_SEP_COMMA_PLUS (1 << 16) // RFC2253 ,+
322
+ #define XN_FLAG_SEP_CPLUS_SPC (2 << 16) // ,+ spaced: more readable
323
+ #define XN_FLAG_SEP_SPLUS_SPC (3 << 16) // ;+ spaced
324
+ #define XN_FLAG_SEP_MULTILINE (4 << 16) // One line per field
341
325
 
342
- #define XN_FLAG_DN_REV (1 << 20) /* Reverse DN order */
326
+ #define XN_FLAG_DN_REV (1 << 20) // Reverse DN order
343
327
 
344
- /* How the field name is shown */
328
+ // How the field name is shown
345
329
 
346
- #define XN_FLAG_FN_MASK (0x3 << 21)
330
+ #define XN_FLAG_FN_MASK (0x3 << 21)
347
331
 
348
- #define XN_FLAG_FN_SN 0 /* Object short name */
349
- #define XN_FLAG_FN_LN (1 << 21) /* Object long name */
350
- #define XN_FLAG_FN_OID (2 << 21) /* Always use OIDs */
351
- #define XN_FLAG_FN_NONE (3 << 21) /* No field names */
332
+ #define XN_FLAG_FN_SN 0 // Object short name
333
+ #define XN_FLAG_FN_LN (1 << 21) // Object long name
334
+ #define XN_FLAG_FN_OID (2 << 21) // Always use OIDs
335
+ #define XN_FLAG_FN_NONE (3 << 21) // No field names
352
336
 
353
- #define XN_FLAG_SPC_EQ (1 << 23) /* Put spaces round '=' */
337
+ #define XN_FLAG_SPC_EQ (1 << 23) // Put spaces round '='
354
338
 
355
- /* This determines if we dump fields we don't recognise:
356
- * RFC2253 requires this.
357
- */
339
+ // This determines if we dump fields we don't recognise:
340
+ // RFC2253 requires this.
358
341
 
359
342
  #define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24)
360
343
 
361
- #define XN_FLAG_FN_ALIGN (1 << 25) /* Align field names to 20 characters */
362
-
363
- /* Complete set of RFC2253 flags */
364
-
365
- #define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \
366
- XN_FLAG_SEP_COMMA_PLUS | \
367
- XN_FLAG_DN_REV | \
368
- XN_FLAG_FN_SN | \
369
- XN_FLAG_DUMP_UNKNOWN_FIELDS)
370
-
371
- /* readable oneline form */
372
-
373
- #define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \
374
- ASN1_STRFLGS_ESC_QUOTE | \
375
- XN_FLAG_SEP_CPLUS_SPC | \
376
- XN_FLAG_SPC_EQ | \
377
- XN_FLAG_FN_SN)
378
-
379
- /* readable multiline form */
380
-
381
- #define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \
382
- ASN1_STRFLGS_ESC_MSB | \
383
- XN_FLAG_SEP_MULTILINE | \
384
- XN_FLAG_SPC_EQ | \
385
- XN_FLAG_FN_LN | \
386
- XN_FLAG_FN_ALIGN)
387
-
388
- struct x509_revoked_st
389
- {
390
- ASN1_INTEGER *serialNumber;
391
- ASN1_TIME *revocationDate;
392
- STACK_OF(X509_EXTENSION) /* optional */ *extensions;
393
- /* Set up if indirect CRL */
394
- STACK_OF(GENERAL_NAME) *issuer;
395
- /* Revocation reason */
396
- int reason;
397
- int sequence; /* load sequence */
398
- };
344
+ #define XN_FLAG_FN_ALIGN (1 << 25) // Align field names to 20 characters
345
+
346
+ // Complete set of RFC2253 flags
347
+
348
+ #define XN_FLAG_RFC2253 \
349
+ (ASN1_STRFLGS_RFC2253 | XN_FLAG_SEP_COMMA_PLUS | XN_FLAG_DN_REV | \
350
+ XN_FLAG_FN_SN | XN_FLAG_DUMP_UNKNOWN_FIELDS)
351
+
352
+ // readable oneline form
353
+
354
+ #define XN_FLAG_ONELINE \
355
+ (ASN1_STRFLGS_RFC2253 | ASN1_STRFLGS_ESC_QUOTE | XN_FLAG_SEP_CPLUS_SPC | \
356
+ XN_FLAG_SPC_EQ | XN_FLAG_FN_SN)
357
+
358
+ // readable multiline form
359
+
360
+ #define XN_FLAG_MULTILINE \
361
+ (ASN1_STRFLGS_ESC_CTRL | ASN1_STRFLGS_ESC_MSB | XN_FLAG_SEP_MULTILINE | \
362
+ XN_FLAG_SPC_EQ | XN_FLAG_FN_LN | XN_FLAG_FN_ALIGN)
363
+
364
+ struct x509_revoked_st {
365
+ ASN1_INTEGER *serialNumber;
366
+ ASN1_TIME *revocationDate;
367
+ STACK_OF(X509_EXTENSION) /* optional */ *extensions;
368
+ // Set up if indirect CRL
369
+ STACK_OF(GENERAL_NAME) *issuer;
370
+ // Revocation reason
371
+ int reason;
372
+ int sequence; // load sequence
373
+ };
399
374
 
400
375
  DEFINE_STACK_OF(X509_REVOKED)
401
376
  DECLARE_ASN1_SET_OF(X509_REVOKED)
402
377
 
403
- struct X509_crl_info_st
404
- {
405
- ASN1_INTEGER *version;
406
- X509_ALGOR *sig_alg;
407
- X509_NAME *issuer;
408
- ASN1_TIME *lastUpdate;
409
- ASN1_TIME *nextUpdate;
410
- STACK_OF(X509_REVOKED) *revoked;
411
- STACK_OF(X509_EXTENSION) /* [0] */ *extensions;
412
- ASN1_ENCODING enc;
413
- } /* X509_CRL_INFO */;
378
+ struct X509_crl_info_st {
379
+ ASN1_INTEGER *version;
380
+ X509_ALGOR *sig_alg;
381
+ X509_NAME *issuer;
382
+ ASN1_TIME *lastUpdate;
383
+ ASN1_TIME *nextUpdate;
384
+ STACK_OF(X509_REVOKED) *revoked;
385
+ STACK_OF(X509_EXTENSION) /* [0] */ *extensions;
386
+ ASN1_ENCODING enc;
387
+ } /* X509_CRL_INFO */;
414
388
 
415
389
  DECLARE_STACK_OF(GENERAL_NAMES)
416
390
 
417
- struct X509_crl_st
418
- {
419
- /* actual signature */
420
- X509_CRL_INFO *crl;
421
- X509_ALGOR *sig_alg;
422
- ASN1_BIT_STRING *signature;
423
- CRYPTO_refcount_t references;
424
- int flags;
425
- /* Copies of various extensions */
426
- AUTHORITY_KEYID *akid;
427
- ISSUING_DIST_POINT *idp;
428
- /* Convenient breakdown of IDP */
429
- int idp_flags;
430
- int idp_reasons;
431
- /* CRL and base CRL numbers for delta processing */
432
- ASN1_INTEGER *crl_number;
433
- ASN1_INTEGER *base_crl_number;
434
- unsigned char sha1_hash[SHA_DIGEST_LENGTH];
435
- STACK_OF(GENERAL_NAMES) *issuers;
436
- const X509_CRL_METHOD *meth;
437
- void *meth_data;
438
- } /* X509_CRL */;
391
+ struct X509_crl_st {
392
+ // actual signature
393
+ X509_CRL_INFO *crl;
394
+ X509_ALGOR *sig_alg;
395
+ ASN1_BIT_STRING *signature;
396
+ CRYPTO_refcount_t references;
397
+ int flags;
398
+ // Copies of various extensions
399
+ AUTHORITY_KEYID *akid;
400
+ ISSUING_DIST_POINT *idp;
401
+ // Convenient breakdown of IDP
402
+ int idp_flags;
403
+ int idp_reasons;
404
+ // CRL and base CRL numbers for delta processing
405
+ ASN1_INTEGER *crl_number;
406
+ ASN1_INTEGER *base_crl_number;
407
+ unsigned char sha1_hash[SHA_DIGEST_LENGTH];
408
+ STACK_OF(GENERAL_NAMES) *issuers;
409
+ const X509_CRL_METHOD *meth;
410
+ void *meth_data;
411
+ } /* X509_CRL */;
439
412
 
440
413
  DEFINE_STACK_OF(X509_CRL)
441
414
  DECLARE_ASN1_SET_OF(X509_CRL)
442
415
 
443
- struct private_key_st
444
- {
445
- int version;
446
- /* The PKCS#8 data types */
447
- X509_ALGOR *enc_algor;
448
- ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */
416
+ struct private_key_st {
417
+ int version;
418
+ // The PKCS#8 data types
419
+ X509_ALGOR *enc_algor;
420
+ ASN1_OCTET_STRING *enc_pkey; // encrypted pub key
449
421
 
450
- /* When decrypted, the following will not be NULL */
451
- EVP_PKEY *dec_pkey;
422
+ // When decrypted, the following will not be NULL
423
+ EVP_PKEY *dec_pkey;
452
424
 
453
- /* used to encrypt and decrypt */
454
- int key_length;
455
- char *key_data;
456
- int key_free; /* true if we should auto free key_data */
425
+ // used to encrypt and decrypt
426
+ int key_length;
427
+ char *key_data;
428
+ int key_free; // true if we should auto free key_data
457
429
 
458
- /* expanded version of 'enc_algor' */
459
- EVP_CIPHER_INFO cipher;
460
- } /* X509_PKEY */;
430
+ // expanded version of 'enc_algor'
431
+ EVP_CIPHER_INFO cipher;
432
+ } /* X509_PKEY */;
461
433
 
462
434
  #ifndef OPENSSL_NO_EVP
463
- struct X509_info_st
464
- {
465
- X509 *x509;
466
- X509_CRL *crl;
467
- X509_PKEY *x_pkey;
435
+ struct X509_info_st {
436
+ X509 *x509;
437
+ X509_CRL *crl;
438
+ X509_PKEY *x_pkey;
468
439
 
469
- EVP_CIPHER_INFO enc_cipher;
470
- int enc_len;
471
- char *enc_data;
440
+ EVP_CIPHER_INFO enc_cipher;
441
+ int enc_len;
442
+ char *enc_data;
472
443
 
473
- } /* X509_INFO */;
444
+ } /* X509_INFO */;
474
445
 
475
446
  DEFINE_STACK_OF(X509_INFO)
476
447
  #endif
477
448
 
478
- /* The next 2 structures and their 8 routines were sent to me by
479
- * Pat Richard <patr@x509.com> and are used to manipulate
480
- * Netscapes spki structures - useful if you are writing a CA web page
481
- */
482
- struct Netscape_spkac_st
483
- {
484
- X509_PUBKEY *pubkey;
485
- ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */
486
- } /* NETSCAPE_SPKAC */;
487
-
488
- struct Netscape_spki_st
489
- {
490
- NETSCAPE_SPKAC *spkac; /* signed public key and challenge */
491
- X509_ALGOR *sig_algor;
492
- ASN1_BIT_STRING *signature;
493
- } /* NETSCAPE_SPKI */;
494
-
495
- /* PKCS#8 private key info structure */
496
-
497
- struct pkcs8_priv_key_info_st
498
- {
499
- int broken; /* Flag for various broken formats */
500
- #define PKCS8_OK 0
501
- #define PKCS8_NO_OCTET 1
502
- #define PKCS8_EMBEDDED_PARAM 2
503
- #define PKCS8_NS_DB 3
504
- #define PKCS8_NEG_PRIVKEY 4
505
- ASN1_INTEGER *version;
506
- X509_ALGOR *pkeyalg;
507
- ASN1_TYPE *pkey; /* Should be OCTET STRING but some are broken */
508
- STACK_OF(X509_ATTRIBUTE) *attributes;
509
- };
510
-
511
- #ifdef __cplusplus
449
+ // The next 2 structures and their 8 routines were sent to me by
450
+ // Pat Richard <patr@x509.com> and are used to manipulate
451
+ // Netscapes spki structures - useful if you are writing a CA web page
452
+ struct Netscape_spkac_st {
453
+ X509_PUBKEY *pubkey;
454
+ ASN1_IA5STRING *challenge; // challenge sent in atlas >= PR2
455
+ } /* NETSCAPE_SPKAC */;
456
+
457
+ struct Netscape_spki_st {
458
+ NETSCAPE_SPKAC *spkac; // signed public key and challenge
459
+ X509_ALGOR *sig_algor;
460
+ ASN1_BIT_STRING *signature;
461
+ } /* NETSCAPE_SPKI */;
462
+
463
+ #ifdef __cplusplus
512
464
  }
513
465
  #endif
514
466
 
515
467
  #include <openssl/x509_vfy.h>
516
468
 
517
- #ifdef __cplusplus
469
+ #ifdef __cplusplus
518
470
  extern "C" {
519
471
  #endif
520
472
 
521
- #define X509_get_version(x) ASN1_INTEGER_get((x)->cert_info->version)
522
- /* #define X509_get_serialNumber(x) ((x)->cert_info->serialNumber) */
523
- #define X509_get_notBefore(x) ((x)->cert_info->validity->notBefore)
524
- #define X509_get_notAfter(x) ((x)->cert_info->validity->notAfter)
525
- #define X509_get_cert_info(x) ((x)->cert_info)
526
- #define X509_extract_key(x) X509_get_pubkey(x) /*****/
527
- #define X509_REQ_get_version(x) ASN1_INTEGER_get((x)->req_info->version)
528
- #define X509_REQ_get_subject_name(x) ((x)->req_info->subject)
529
- #define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a)
530
- #define X509_name_cmp(a,b) X509_NAME_cmp((a),(b))
531
- #define X509_get_signature_type(x) EVP_PKEY_type(OBJ_obj2nid((x)->sig_alg->algorithm))
532
-
533
- #define X509_CRL_get_version(x) ASN1_INTEGER_get((x)->crl->version)
534
- const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl);
535
- const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl);
536
- #define X509_CRL_get_lastUpdate(x) ((x)->crl->lastUpdate)
537
- #define X509_CRL_get_nextUpdate(x) ((x)->crl->nextUpdate)
538
- #define X509_CRL_get_issuer(x) ((x)->crl->issuer)
539
- #define X509_CRL_get_REVOKED(x) ((x)->crl->revoked)
540
-
541
- #define X509_CINF_set_modified(c) ((c)->enc.modified = 1)
542
- #define X509_CINF_get_issuer(c) (&(c)->issuer)
543
- #define X509_CINF_get_extensions(c) ((c)->extensions)
544
- #define X509_CINF_get_signature(c) ((c)->signature)
473
+ // TODO(davidben): Document remaining functions, reorganize them, and define
474
+ // supported patterns for using |X509| objects in general. In particular, when
475
+ // it is safe to call mutating functions is a little tricky due to various
476
+ // internal caches.
477
+
478
+ // X509_get_version returns the numerical value of |x509|'s version. That is,
479
+ // it returns zero for X.509v1, one for X.509v2, and two for X.509v3. Unknown
480
+ // versions are rejected by the parser, but a manually-created |X509| object may
481
+ // encode invalid versions. In that case, the function will return the invalid
482
+ // version, or -1 on overflow.
483
+ OPENSSL_EXPORT long X509_get_version(const X509 *x509);
484
+
485
+ // X509_get0_serialNumber returns |x509|'s serial number.
486
+ OPENSSL_EXPORT const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x509);
487
+
488
+ // X509_get0_notBefore returns |x509|'s notBefore time.
489
+ OPENSSL_EXPORT const ASN1_TIME *X509_get0_notBefore(const X509 *x509);
490
+
491
+ // X509_get0_notAfter returns |x509|'s notAfter time.
492
+ OPENSSL_EXPORT const ASN1_TIME *X509_get0_notAfter(const X509 *x509);
493
+
494
+ // X509_set1_notBefore sets |x509|'s notBefore time to |tm|. It returns one on
495
+ // success and zero on error.
496
+ OPENSSL_EXPORT int X509_set1_notBefore(X509 *x509, const ASN1_TIME *tm);
497
+
498
+ // X509_set1_notAfter sets |x509|'s notAfter time to |tm|. it returns one on
499
+ // success and zero on error.
500
+ OPENSSL_EXPORT int X509_set1_notAfter(X509 *x509, const ASN1_TIME *tm);
501
+
502
+ // X509_getm_notBefore returns a mutable pointer to |x509|'s notBefore time.
503
+ OPENSSL_EXPORT ASN1_TIME *X509_getm_notBefore(X509 *x509);
504
+
505
+ // X509_getm_notAfter returns a mutable pointer to |x509|'s notAfter time.
506
+ OPENSSL_EXPORT ASN1_TIME *X509_getm_notAfter(X509 *x);
507
+
508
+ // X509_get_notBefore returns |x509|'s notBefore time. Note this function is not
509
+ // const-correct for legacy reasons. Use |X509_get0_notBefore| or
510
+ // |X509_getm_notBefore| instead.
511
+ OPENSSL_EXPORT ASN1_TIME *X509_get_notBefore(const X509 *x509);
512
+
513
+ // X509_get_notAfter returns |x509|'s notAfter time. Note this function is not
514
+ // const-correct for legacy reasons. Use |X509_get0_notAfter| or
515
+ // |X509_getm_notAfter| instead.
516
+ OPENSSL_EXPORT ASN1_TIME *X509_get_notAfter(const X509 *x509);
517
+
518
+ // X509_set_notBefore calls |X509_set1_notBefore|. Use |X509_set1_notBefore|
519
+ // instead.
520
+ OPENSSL_EXPORT int X509_set_notBefore(X509 *x509, const ASN1_TIME *tm);
521
+
522
+ // X509_set_notAfter calls |X509_set1_notAfter|. Use |X509_set1_notAfter|
523
+ // instead.
524
+ OPENSSL_EXPORT int X509_set_notAfter(X509 *x509, const ASN1_TIME *tm);
525
+
526
+ // X509_get0_uids sets |*out_issuer_uid| and |*out_subject_uid| to non-owning
527
+ // pointers to the issuerUID and subjectUID fields, respectively, of |x509|.
528
+ // Either output pointer may be NULL to skip the field.
529
+ OPENSSL_EXPORT void X509_get0_uids(const X509 *x509,
530
+ const ASN1_BIT_STRING **out_issuer_uid,
531
+ const ASN1_BIT_STRING **out_subject_uid);
532
+
533
+ // X509_get_cert_info returns |x509|'s TBSCertificate structure. Note this
534
+ // function is not const-correct for legacy reasons.
535
+ //
536
+ // This function is deprecated and may be removed in the future. It is not
537
+ // present in OpenSSL and constrains some improvements to the library.
538
+ OPENSSL_EXPORT X509_CINF *X509_get_cert_info(const X509 *x509);
539
+
540
+ // X509_extract_key is a legacy alias to |X509_get_pubkey|. Use
541
+ // |X509_get_pubkey| instead.
542
+ #define X509_extract_key(x) X509_get_pubkey(x)
543
+
544
+ // X509_get_pathlen returns path length constraint from the basic constraints
545
+ // extension in |x509|. (See RFC5280, section 4.2.1.9.) It returns -1 if the
546
+ // constraint is not present, or if some extension in |x509| was invalid.
547
+ //
548
+ // Note that decoding an |X509| object will not check for invalid extensions. To
549
+ // detect the error case, call |X509_get_extensions_flags| and check the
550
+ // |EXFLAG_INVALID| bit.
551
+ OPENSSL_EXPORT long X509_get_pathlen(X509 *x509);
552
+
553
+ // X509_REQ_get_version returns the numerical value of |req|'s version. That is,
554
+ // it returns zero for a v1 request. If |req| is invalid, it may return another
555
+ // value, or -1 on overflow.
556
+ OPENSSL_EXPORT long X509_REQ_get_version(const X509_REQ *req);
557
+
558
+ // X509_REQ_get_subject_name returns |req|'s subject name. Note this function is
559
+ // not const-correct for legacy reasons.
560
+ OPENSSL_EXPORT X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req);
561
+
562
+ // X509_REQ_extract_key is a legacy alias for |X509_REQ_get_pubkey|.
563
+ #define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a)
564
+
565
+ // X509_name_cmp is a legacy alias for |X509_NAME_cmp|.
566
+ #define X509_name_cmp(a, b) X509_NAME_cmp((a), (b))
567
+
568
+ // X509_REQ_get_version returns the numerical value of |crl|'s version. That is,
569
+ // it returns zero for a v1 CRL and one for a v2 CRL. If |crl| is invalid, it
570
+ // may return another value, or -1 on overflow.
571
+ OPENSSL_EXPORT long X509_CRL_get_version(const X509_CRL *crl);
572
+
573
+ // X509_CRL_get0_lastUpdate returns |crl|'s lastUpdate time.
574
+ OPENSSL_EXPORT const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl);
575
+
576
+ // X509_CRL_get0_nextUpdate returns |crl|'s nextUpdate time, or NULL if |crl|
577
+ // has none.
578
+ OPENSSL_EXPORT const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl);
579
+
580
+ // X509_CRL_set1_lastUpdate sets |crl|'s lastUpdate time to |tm|. It returns one
581
+ // on success and zero on error.
582
+ OPENSSL_EXPORT int X509_CRL_set1_lastUpdate(X509_CRL *crl, const ASN1_TIME *tm);
583
+
584
+ // X509_CRL_set1_nextUpdate sets |crl|'s nextUpdate time to |tm|. It returns one
585
+ // on success and zero on error.
586
+ OPENSSL_EXPORT int X509_CRL_set1_nextUpdate(X509_CRL *crl, const ASN1_TIME *tm);
587
+
588
+ // The following symbols are deprecated aliases to |X509_CRL_set1_*|.
589
+ #define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate
590
+ #define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate
591
+
592
+ // X509_CRL_get_lastUpdate returns a mutable pointer to |crl|'s lastUpdate time.
593
+ // Use |X509_CRL_get0_lastUpdate| or |X509_CRL_set1_lastUpdate| instead.
594
+ OPENSSL_EXPORT ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl);
595
+
596
+ // X509_CRL_get_nextUpdate returns a mutable pointer to |crl|'s nextUpdate time,
597
+ // or NULL if |crl| has none. Use |X509_CRL_get0_nextUpdate| or
598
+ // |X509_CRL_set1_nextUpdate| instead.
599
+ OPENSSL_EXPORT ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl);
600
+
601
+ // X509_CRL_get_issuer returns |crl|'s issuer name. Note this function is not
602
+ // const-correct for legacy reasons.
603
+ OPENSSL_EXPORT X509_NAME *X509_CRL_get_issuer(const X509_CRL *crl);
604
+
605
+ // X509_CRL_get_REVOKED returns the list of revoked certificates in |crl|.
606
+ //
607
+ // TOOD(davidben): This function was originally a macro, without clear const
608
+ // semantics. It should take a const input and give const output, but the latter
609
+ // would break existing callers. For now, we match upstream.
610
+ OPENSSL_EXPORT STACK_OF(X509_REVOKED) *X509_CRL_get_REVOKED(X509_CRL *crl);
611
+
612
+ // X509_CRL_get0_extensions returns |crl|'s extension list.
613
+ OPENSSL_EXPORT const STACK_OF(X509_EXTENSION) *X509_CRL_get0_extensions(
614
+ const X509_CRL *crl);
615
+
616
+ // X509_CINF_set_modified marks |cinf| as modified so that changes will be
617
+ // reflected in serializing the structure.
618
+ //
619
+ // This function is deprecated and may be removed in the future. It is not
620
+ // present in OpenSSL and constrains some improvements to the library.
621
+ OPENSSL_EXPORT void X509_CINF_set_modified(X509_CINF *cinf);
622
+
623
+ // X509_CINF_get_signature returns the signature algorithm in |cinf|. Note this
624
+ // isn't the signature itself, but the extra copy of the signature algorithm
625
+ // in the TBSCertificate.
626
+ //
627
+ // This function is deprecated and may be removed in the future. It is not
628
+ // present in OpenSSL and constrains some improvements to the library. Use
629
+ // |X509_get0_tbs_sigalg| instead.
630
+ OPENSSL_EXPORT const X509_ALGOR *X509_CINF_get_signature(const X509_CINF *cinf);
631
+
632
+ // X509_SIG_get0 sets |*out_alg| and |*out_digest| to non-owning pointers to
633
+ // |sig|'s algorithm and digest fields, respectively. Either |out_alg| and
634
+ // |out_digest| may be NULL to skip those fields.
635
+ OPENSSL_EXPORT void X509_SIG_get0(const X509_SIG *sig,
636
+ const X509_ALGOR **out_alg,
637
+ const ASN1_OCTET_STRING **out_digest);
638
+
639
+ // X509_SIG_getm behaves like |X509_SIG_get0| but returns mutable pointers.
640
+ OPENSSL_EXPORT void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **out_alg,
641
+ ASN1_OCTET_STRING **out_digest);
545
642
 
546
643
  OPENSSL_EXPORT void X509_CRL_set_default_method(const X509_CRL_METHOD *meth);
547
644
  OPENSSL_EXPORT X509_CRL_METHOD *X509_CRL_METHOD_new(
548
- int (*crl_init)(X509_CRL *crl),
549
- int (*crl_free)(X509_CRL *crl),
550
- int (*crl_lookup)(X509_CRL *crl, X509_REVOKED **ret,
551
- ASN1_INTEGER *ser, X509_NAME *issuer),
552
- int (*crl_verify)(X509_CRL *crl, EVP_PKEY *pk));
645
+ int (*crl_init)(X509_CRL *crl), int (*crl_free)(X509_CRL *crl),
646
+ int (*crl_lookup)(X509_CRL *crl, X509_REVOKED **ret, ASN1_INTEGER *ser,
647
+ X509_NAME *issuer),
648
+ int (*crl_verify)(X509_CRL *crl, EVP_PKEY *pk));
553
649
  OPENSSL_EXPORT void X509_CRL_METHOD_free(X509_CRL_METHOD *m);
554
650
 
555
651
  OPENSSL_EXPORT void X509_CRL_set_meth_data(X509_CRL *crl, void *dat);
556
652
  OPENSSL_EXPORT void *X509_CRL_get_meth_data(X509_CRL *crl);
557
653
 
558
- /* This one is only used so that a binary form can output, as in
559
- * i2d_X509_NAME(X509_get_X509_PUBKEY(x),&buf) */
560
- #define X509_get_X509_PUBKEY(x) ((x)->cert_info->key)
561
-
562
-
563
- OPENSSL_EXPORT const char *X509_verify_cert_error_string(long n);
564
-
565
- #ifndef OPENSSL_NO_EVP
566
- OPENSSL_EXPORT int X509_verify(X509 *a, EVP_PKEY *r);
567
-
568
- OPENSSL_EXPORT int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r);
569
- OPENSSL_EXPORT int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r);
570
- OPENSSL_EXPORT int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r);
571
-
572
- OPENSSL_EXPORT NETSCAPE_SPKI * NETSCAPE_SPKI_b64_decode(const char *str, int len);
573
- OPENSSL_EXPORT char * NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x);
574
- OPENSSL_EXPORT EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x);
575
- OPENSSL_EXPORT int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey);
576
-
577
- OPENSSL_EXPORT int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki);
578
-
579
- OPENSSL_EXPORT int X509_signature_dump(BIO *bp,const ASN1_STRING *sig, int indent);
580
- OPENSSL_EXPORT int X509_signature_print(BIO *bp, const X509_ALGOR *alg,
654
+ // X509_get_X509_PUBKEY returns the public key of |x509|. Note this function is
655
+ // not const-correct for legacy reasons. Callers should not modify the returned
656
+ // object.
657
+ OPENSSL_EXPORT X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x509);
658
+
659
+ // X509_verify_cert_error_string returns |err| as a human-readable string, where
660
+ // |err| should be one of the |X509_V_*| values. If |err| is unknown, it returns
661
+ // a default description.
662
+ //
663
+ // TODO(davidben): Move this function to x509_vfy.h, with the |X509_V_*|
664
+ // definitions, or fold x509_vfy.h into this function.
665
+ OPENSSL_EXPORT const char *X509_verify_cert_error_string(long err);
666
+
667
+ // X509_verify checks that |x509| has a valid signature by |pkey|. It returns
668
+ // one if the signature is valid and zero otherwise. Note this function only
669
+ // checks the signature itself and does not perform a full certificate
670
+ // validation.
671
+ OPENSSL_EXPORT int X509_verify(X509 *x509, EVP_PKEY *pkey);
672
+
673
+ // X509_REQ_verify checks that |req| has a valid signature by |pkey|. It returns
674
+ // one if the signature is valid and zero otherwise.
675
+ OPENSSL_EXPORT int X509_REQ_verify(X509_REQ *req, EVP_PKEY *pkey);
676
+
677
+ // X509_CRL_verify checks that |crl| has a valid signature by |pkey|. It returns
678
+ // one if the signature is valid and zero otherwise.
679
+ OPENSSL_EXPORT int X509_CRL_verify(X509_CRL *crl, EVP_PKEY *pkey);
680
+
681
+ // NETSCAPE_SPKI_verify checks that |spki| has a valid signature by |pkey|. It
682
+ // returns one if the signature is valid and zero otherwise.
683
+ OPENSSL_EXPORT int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *spki, EVP_PKEY *pkey);
684
+
685
+ // NETSCAPE_SPKI_b64_decode decodes |len| bytes from |str| as a base64-encoded
686
+ // Netscape signed public key and challenge (SPKAC) structure. It returns a
687
+ // newly-allocated |NETSCAPE_SPKI| structure with the result, or NULL on error.
688
+ // If |len| is 0 or negative, the length is calculated with |strlen| and |str|
689
+ // must be a NUL-terminated C string.
690
+ OPENSSL_EXPORT NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str,
691
+ int len);
692
+
693
+ // NETSCAPE_SPKI_b64_encode encodes |spki| as a base64-encoded Netscape signed
694
+ // public key and challenge (SPKAC) structure. It returns a newly-allocated
695
+ // NUL-terminated C string with the result, or NULL on error. The caller must
696
+ // release the memory with |OPENSSL_free| when done.
697
+ OPENSSL_EXPORT char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *spki);
698
+
699
+ // NETSCAPE_SPKI_get_pubkey decodes and returns the public key in |spki| as an
700
+ // |EVP_PKEY|, or NULL on error. The caller takes ownership of the resulting
701
+ // pointer and must call |EVP_PKEY_free| when done.
702
+ OPENSSL_EXPORT EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *spki);
703
+
704
+ // NETSCAPE_SPKI_set_pubkey sets |spki|'s public key to |pkey|. It returns one
705
+ // on success or zero on error. This function does not take ownership of |pkey|,
706
+ // so the caller may continue to manage its lifetime independently of |spki|.
707
+ OPENSSL_EXPORT int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *spki,
708
+ EVP_PKEY *pkey);
709
+
710
+ // X509_signature_dump writes a human-readable representation of |sig| to |bio|,
711
+ // indented with |indent| spaces. It returns one on success and zero on error.
712
+ OPENSSL_EXPORT int X509_signature_dump(BIO *bio, const ASN1_STRING *sig,
713
+ int indent);
714
+
715
+ // X509_signature_print writes a human-readable representation of |alg| and
716
+ // |sig| to |bio|. It returns one on success and zero on error.
717
+ OPENSSL_EXPORT int X509_signature_print(BIO *bio, const X509_ALGOR *alg,
581
718
  const ASN1_STRING *sig);
582
719
 
583
- OPENSSL_EXPORT int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md);
584
- OPENSSL_EXPORT int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx);
585
- OPENSSL_EXPORT int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md);
586
- OPENSSL_EXPORT int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx);
587
- OPENSSL_EXPORT int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md);
588
- OPENSSL_EXPORT int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx);
589
- OPENSSL_EXPORT int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md);
590
-
591
- OPENSSL_EXPORT int X509_pubkey_digest(const X509 *data,const EVP_MD *type,
592
- unsigned char *md, unsigned int *len);
593
- OPENSSL_EXPORT int X509_digest(const X509 *data,const EVP_MD *type,
594
- unsigned char *md, unsigned int *len);
595
- OPENSSL_EXPORT int X509_CRL_digest(const X509_CRL *data,const EVP_MD *type,
596
- unsigned char *md, unsigned int *len);
597
- OPENSSL_EXPORT int X509_REQ_digest(const X509_REQ *data,const EVP_MD *type,
598
- unsigned char *md, unsigned int *len);
599
- OPENSSL_EXPORT int X509_NAME_digest(const X509_NAME *data,const EVP_MD *type,
600
- unsigned char *md, unsigned int *len);
601
- #endif
602
-
603
- /* X509_parse_from_buffer parses an X.509 structure from |buf| and returns a
604
- * fresh X509 or NULL on error. There must not be any trailing data in |buf|.
605
- * The returned structure (if any) holds a reference to |buf| rather than
606
- * copying parts of it as a normal |d2i_X509| call would do. */
720
+ // X509_sign signs |x509| with |pkey| and replaces the signature algorithm and
721
+ // signature fields. It returns one on success and zero on error. This function
722
+ // uses digest algorithm |md|, or |pkey|'s default if NULL. Other signing
723
+ // parameters use |pkey|'s defaults. To customize them, use |X509_sign_ctx|.
724
+ OPENSSL_EXPORT int X509_sign(X509 *x509, EVP_PKEY *pkey, const EVP_MD *md);
725
+
726
+ // X509_sign_ctx signs |x509| with |ctx| and replaces the signature algorithm
727
+ // and signature fields. It returns one on success and zero on error. The
728
+ // signature algorithm and parameters come from |ctx|, which must have been
729
+ // initialized with |EVP_DigestSignInit|. The caller should configure the
730
+ // corresponding |EVP_PKEY_CTX| before calling this function.
731
+ OPENSSL_EXPORT int X509_sign_ctx(X509 *x509, EVP_MD_CTX *ctx);
732
+
733
+ // X509_REQ_sign signs |req| with |pkey| and replaces the signature algorithm
734
+ // and signature fields. It returns one on success and zero on error. This
735
+ // function uses digest algorithm |md|, or |pkey|'s default if NULL. Other
736
+ // signing parameters use |pkey|'s defaults. To customize them, use
737
+ // |X509_REQ_sign_ctx|.
738
+ OPENSSL_EXPORT int X509_REQ_sign(X509_REQ *req, EVP_PKEY *pkey,
739
+ const EVP_MD *md);
740
+
741
+ // X509_REQ_sign_ctx signs |req| with |ctx| and replaces the signature algorithm
742
+ // and signature fields. It returns one on success and zero on error. The
743
+ // signature algorithm and parameters come from |ctx|, which must have been
744
+ // initialized with |EVP_DigestSignInit|. The caller should configure the
745
+ // corresponding |EVP_PKEY_CTX| before calling this function.
746
+ OPENSSL_EXPORT int X509_REQ_sign_ctx(X509_REQ *req, EVP_MD_CTX *ctx);
747
+
748
+ // X509_CRL_sign signs |crl| with |pkey| and replaces the signature algorithm
749
+ // and signature fields. It returns one on success and zero on error. This
750
+ // function uses digest algorithm |md|, or |pkey|'s default if NULL. Other
751
+ // signing parameters use |pkey|'s defaults. To customize them, use
752
+ // |X509_CRL_sign_ctx|.
753
+ OPENSSL_EXPORT int X509_CRL_sign(X509_CRL *crl, EVP_PKEY *pkey,
754
+ const EVP_MD *md);
755
+
756
+ // X509_CRL_sign_ctx signs |crl| with |ctx| and replaces the signature algorithm
757
+ // and signature fields. It returns one on success and zero on error. The
758
+ // signature algorithm and parameters come from |ctx|, which must have been
759
+ // initialized with |EVP_DigestSignInit|. The caller should configure the
760
+ // corresponding |EVP_PKEY_CTX| before calling this function.
761
+ OPENSSL_EXPORT int X509_CRL_sign_ctx(X509_CRL *crl, EVP_MD_CTX *ctx);
762
+
763
+ // NETSCAPE_SPKI_sign signs |spki| with |pkey| and replaces the signature
764
+ // algorithm and signature fields. It returns one on success and zero on error.
765
+ // This function uses digest algorithm |md|, or |pkey|'s default if NULL. Other
766
+ // signing parameters use |pkey|'s defaults.
767
+ OPENSSL_EXPORT int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *spki, EVP_PKEY *pkey,
768
+ const EVP_MD *md);
769
+
770
+ // X509_pubkey_digest hashes the DER encoding of |x509|'s subjectPublicKeyInfo
771
+ // field with |md| and writes the result to |out|. |EVP_MD_CTX_size| bytes are
772
+ // written, which is at most |EVP_MAX_MD_SIZE|. If |out_len| is not NULL,
773
+ // |*out_len| is set to the number of bytes written. This function returns one
774
+ // on success and zero on error.
775
+ OPENSSL_EXPORT int X509_pubkey_digest(const X509 *x509, const EVP_MD *md,
776
+ uint8_t *out, unsigned *out_len);
777
+
778
+ // X509_digest hashes |x509|'s DER encoding with |md| and writes the result to
779
+ // |out|. |EVP_MD_CTX_size| bytes are written, which is at most
780
+ // |EVP_MAX_MD_SIZE|. If |out_len| is not NULL, |*out_len| is set to the number
781
+ // of bytes written. This function returns one on success and zero on error.
782
+ // Note this digest covers the entire certificate, not just the signed portion.
783
+ OPENSSL_EXPORT int X509_digest(const X509 *x509, const EVP_MD *md, uint8_t *out,
784
+ unsigned *out_len);
785
+
786
+ // X509_CRL_digest hashes |crl|'s DER encoding with |md| and writes the result
787
+ // to |out|. |EVP_MD_CTX_size| bytes are written, which is at most
788
+ // |EVP_MAX_MD_SIZE|. If |out_len| is not NULL, |*out_len| is set to the number
789
+ // of bytes written. This function returns one on success and zero on error.
790
+ // Note this digest covers the entire CRL, not just the signed portion.
791
+ OPENSSL_EXPORT int X509_CRL_digest(const X509_CRL *crl, const EVP_MD *md,
792
+ uint8_t *out, unsigned *out_len);
793
+
794
+ // X509_REQ_digest hashes |req|'s DER encoding with |md| and writes the result
795
+ // to |out|. |EVP_MD_CTX_size| bytes are written, which is at most
796
+ // |EVP_MAX_MD_SIZE|. If |out_len| is not NULL, |*out_len| is set to the number
797
+ // of bytes written. This function returns one on success and zero on error.
798
+ // Note this digest covers the entire certificate request, not just the signed
799
+ // portion.
800
+ OPENSSL_EXPORT int X509_REQ_digest(const X509_REQ *req, const EVP_MD *md,
801
+ uint8_t *out, unsigned *out_len);
802
+
803
+ // X509_NAME_digest hashes |name|'s DER encoding with |md| and writes the result
804
+ // to |out|. |EVP_MD_CTX_size| bytes are written, which is at most
805
+ // |EVP_MAX_MD_SIZE|. If |out_len| is not NULL, |*out_len| is set to the number
806
+ // of bytes written. This function returns one on success and zero on error.
807
+ OPENSSL_EXPORT int X509_NAME_digest(const X509_NAME *name, const EVP_MD *md,
808
+ uint8_t *out, unsigned *out_len);
809
+
810
+ // X509_parse_from_buffer parses an X.509 structure from |buf| and returns a
811
+ // fresh X509 or NULL on error. There must not be any trailing data in |buf|.
812
+ // The returned structure (if any) holds a reference to |buf| rather than
813
+ // copying parts of it as a normal |d2i_X509| call would do.
607
814
  OPENSSL_EXPORT X509 *X509_parse_from_buffer(CRYPTO_BUFFER *buf);
608
815
 
609
816
  #ifndef OPENSSL_NO_FP_API
610
817
  OPENSSL_EXPORT X509 *d2i_X509_fp(FILE *fp, X509 **x509);
611
- OPENSSL_EXPORT int i2d_X509_fp(FILE *fp,X509 *x509);
612
- OPENSSL_EXPORT X509_CRL *d2i_X509_CRL_fp(FILE *fp,X509_CRL **crl);
613
- OPENSSL_EXPORT int i2d_X509_CRL_fp(FILE *fp,X509_CRL *crl);
614
- OPENSSL_EXPORT X509_REQ *d2i_X509_REQ_fp(FILE *fp,X509_REQ **req);
615
- OPENSSL_EXPORT int i2d_X509_REQ_fp(FILE *fp,X509_REQ *req);
616
- OPENSSL_EXPORT RSA *d2i_RSAPrivateKey_fp(FILE *fp,RSA **rsa);
617
- OPENSSL_EXPORT int i2d_RSAPrivateKey_fp(FILE *fp,RSA *rsa);
618
- OPENSSL_EXPORT RSA *d2i_RSAPublicKey_fp(FILE *fp,RSA **rsa);
619
- OPENSSL_EXPORT int i2d_RSAPublicKey_fp(FILE *fp,RSA *rsa);
620
- OPENSSL_EXPORT RSA *d2i_RSA_PUBKEY_fp(FILE *fp,RSA **rsa);
621
- OPENSSL_EXPORT int i2d_RSA_PUBKEY_fp(FILE *fp,RSA *rsa);
818
+ OPENSSL_EXPORT int i2d_X509_fp(FILE *fp, X509 *x509);
819
+ OPENSSL_EXPORT X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl);
820
+ OPENSSL_EXPORT int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl);
821
+ OPENSSL_EXPORT X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req);
822
+ OPENSSL_EXPORT int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req);
823
+ OPENSSL_EXPORT RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa);
824
+ OPENSSL_EXPORT int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa);
825
+ OPENSSL_EXPORT RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa);
826
+ OPENSSL_EXPORT int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa);
827
+ OPENSSL_EXPORT RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa);
828
+ OPENSSL_EXPORT int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa);
622
829
  #ifndef OPENSSL_NO_DSA
623
830
  OPENSSL_EXPORT DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa);
624
831
  OPENSSL_EXPORT int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa);
@@ -626,14 +833,15 @@ OPENSSL_EXPORT DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa);
626
833
  OPENSSL_EXPORT int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa);
627
834
  #endif
628
835
  OPENSSL_EXPORT EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey);
629
- OPENSSL_EXPORT int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey);
836
+ OPENSSL_EXPORT int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey);
630
837
  OPENSSL_EXPORT EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey);
631
- OPENSSL_EXPORT int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey);
632
- OPENSSL_EXPORT X509_SIG *d2i_PKCS8_fp(FILE *fp,X509_SIG **p8);
633
- OPENSSL_EXPORT int i2d_PKCS8_fp(FILE *fp,X509_SIG *p8);
634
- OPENSSL_EXPORT PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp,
635
- PKCS8_PRIV_KEY_INFO **p8inf);
636
- OPENSSL_EXPORT int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp,PKCS8_PRIV_KEY_INFO *p8inf);
838
+ OPENSSL_EXPORT int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey);
839
+ OPENSSL_EXPORT X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8);
840
+ OPENSSL_EXPORT int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8);
841
+ OPENSSL_EXPORT PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(
842
+ FILE *fp, PKCS8_PRIV_KEY_INFO **p8inf);
843
+ OPENSSL_EXPORT int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp,
844
+ PKCS8_PRIV_KEY_INFO *p8inf);
637
845
  OPENSSL_EXPORT int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key);
638
846
  OPENSSL_EXPORT int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey);
639
847
  OPENSSL_EXPORT EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a);
@@ -641,18 +849,18 @@ OPENSSL_EXPORT int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey);
641
849
  OPENSSL_EXPORT EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a);
642
850
  #endif
643
851
 
644
- OPENSSL_EXPORT X509 *d2i_X509_bio(BIO *bp,X509 **x509);
645
- OPENSSL_EXPORT int i2d_X509_bio(BIO *bp,X509 *x509);
646
- OPENSSL_EXPORT X509_CRL *d2i_X509_CRL_bio(BIO *bp,X509_CRL **crl);
647
- OPENSSL_EXPORT int i2d_X509_CRL_bio(BIO *bp,X509_CRL *crl);
648
- OPENSSL_EXPORT X509_REQ *d2i_X509_REQ_bio(BIO *bp,X509_REQ **req);
649
- OPENSSL_EXPORT int i2d_X509_REQ_bio(BIO *bp,X509_REQ *req);
650
- OPENSSL_EXPORT RSA *d2i_RSAPrivateKey_bio(BIO *bp,RSA **rsa);
651
- OPENSSL_EXPORT int i2d_RSAPrivateKey_bio(BIO *bp,RSA *rsa);
652
- OPENSSL_EXPORT RSA *d2i_RSAPublicKey_bio(BIO *bp,RSA **rsa);
653
- OPENSSL_EXPORT int i2d_RSAPublicKey_bio(BIO *bp,RSA *rsa);
654
- OPENSSL_EXPORT RSA *d2i_RSA_PUBKEY_bio(BIO *bp,RSA **rsa);
655
- OPENSSL_EXPORT int i2d_RSA_PUBKEY_bio(BIO *bp,RSA *rsa);
852
+ OPENSSL_EXPORT X509 *d2i_X509_bio(BIO *bp, X509 **x509);
853
+ OPENSSL_EXPORT int i2d_X509_bio(BIO *bp, X509 *x509);
854
+ OPENSSL_EXPORT X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl);
855
+ OPENSSL_EXPORT int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl);
856
+ OPENSSL_EXPORT X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req);
857
+ OPENSSL_EXPORT int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req);
858
+ OPENSSL_EXPORT RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa);
859
+ OPENSSL_EXPORT int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa);
860
+ OPENSSL_EXPORT RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa);
861
+ OPENSSL_EXPORT int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa);
862
+ OPENSSL_EXPORT RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa);
863
+ OPENSSL_EXPORT int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa);
656
864
  #ifndef OPENSSL_NO_DSA
657
865
  OPENSSL_EXPORT DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa);
658
866
  OPENSSL_EXPORT int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa);
@@ -660,14 +868,15 @@ OPENSSL_EXPORT DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa);
660
868
  OPENSSL_EXPORT int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa);
661
869
  #endif
662
870
  OPENSSL_EXPORT EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey);
663
- OPENSSL_EXPORT int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey);
871
+ OPENSSL_EXPORT int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey);
664
872
  OPENSSL_EXPORT EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey);
665
- OPENSSL_EXPORT int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey);
666
- OPENSSL_EXPORT X509_SIG *d2i_PKCS8_bio(BIO *bp,X509_SIG **p8);
667
- OPENSSL_EXPORT int i2d_PKCS8_bio(BIO *bp,X509_SIG *p8);
668
- OPENSSL_EXPORT PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp,
669
- PKCS8_PRIV_KEY_INFO **p8inf);
670
- OPENSSL_EXPORT int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp,PKCS8_PRIV_KEY_INFO *p8inf);
873
+ OPENSSL_EXPORT int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey);
874
+ OPENSSL_EXPORT X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8);
875
+ OPENSSL_EXPORT int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8);
876
+ OPENSSL_EXPORT PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(
877
+ BIO *bp, PKCS8_PRIV_KEY_INFO **p8inf);
878
+ OPENSSL_EXPORT int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp,
879
+ PKCS8_PRIV_KEY_INFO *p8inf);
671
880
  OPENSSL_EXPORT int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key);
672
881
  OPENSSL_EXPORT int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey);
673
882
  OPENSSL_EXPORT EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a);
@@ -683,7 +892,8 @@ OPENSSL_EXPORT X509_CRL *X509_CRL_dup(X509_CRL *crl);
683
892
  OPENSSL_EXPORT X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev);
684
893
  OPENSSL_EXPORT X509_REQ *X509_REQ_dup(X509_REQ *req);
685
894
  OPENSSL_EXPORT X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn);
686
- OPENSSL_EXPORT int X509_ALGOR_set0(X509_ALGOR *alg, const ASN1_OBJECT *aobj, int ptype, void *pval);
895
+ OPENSSL_EXPORT int X509_ALGOR_set0(X509_ALGOR *alg, const ASN1_OBJECT *aobj,
896
+ int ptype, void *pval);
687
897
  OPENSSL_EXPORT void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype,
688
898
  const void **ppval,
689
899
  const X509_ALGOR *algor);
@@ -697,50 +907,39 @@ OPENSSL_EXPORT int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne);
697
907
  OPENSSL_EXPORT int X509_NAME_get0_der(X509_NAME *nm, const unsigned char **pder,
698
908
  size_t *pderlen);
699
909
 
700
- OPENSSL_EXPORT int X509_cmp_time(const ASN1_TIME *s, time_t *t);
701
- OPENSSL_EXPORT int X509_cmp_current_time(const ASN1_TIME *s);
702
- OPENSSL_EXPORT ASN1_TIME * X509_time_adj(ASN1_TIME *s, long adj, time_t *t);
703
- OPENSSL_EXPORT ASN1_TIME * X509_time_adj_ex(ASN1_TIME *s, int offset_day, long offset_sec, time_t *t);
704
- OPENSSL_EXPORT ASN1_TIME * X509_gmtime_adj(ASN1_TIME *s, long adj);
910
+ OPENSSL_EXPORT int X509_cmp_time(const ASN1_TIME *s, time_t *t);
911
+ 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);
913
+ OPENSSL_EXPORT ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, int offset_day,
914
+ long offset_sec, time_t *t);
915
+ OPENSSL_EXPORT ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj);
705
916
 
706
- OPENSSL_EXPORT const char * X509_get_default_cert_area(void );
707
- OPENSSL_EXPORT const char * X509_get_default_cert_dir(void );
708
- OPENSSL_EXPORT const char * X509_get_default_cert_file(void );
709
- OPENSSL_EXPORT const char * X509_get_default_cert_dir_env(void );
710
- OPENSSL_EXPORT const char * X509_get_default_cert_file_env(void );
711
- OPENSSL_EXPORT const char * X509_get_default_private_dir(void );
917
+ OPENSSL_EXPORT const char *X509_get_default_cert_area(void);
918
+ OPENSSL_EXPORT const char *X509_get_default_cert_dir(void);
919
+ OPENSSL_EXPORT const char *X509_get_default_cert_file(void);
920
+ OPENSSL_EXPORT const char *X509_get_default_cert_dir_env(void);
921
+ OPENSSL_EXPORT const char *X509_get_default_cert_file_env(void);
922
+ OPENSSL_EXPORT const char *X509_get_default_private_dir(void);
712
923
 
713
- OPENSSL_EXPORT X509_REQ * X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md);
714
- OPENSSL_EXPORT X509 * X509_REQ_to_X509(X509_REQ *r, int days,EVP_PKEY *pkey);
924
+ OPENSSL_EXPORT X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey,
925
+ const EVP_MD *md);
926
+ OPENSSL_EXPORT X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey);
715
927
 
716
928
  DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS)
717
929
  DECLARE_ASN1_FUNCTIONS(X509_VAL)
718
930
 
719
931
  DECLARE_ASN1_FUNCTIONS(X509_PUBKEY)
720
932
 
721
- OPENSSL_EXPORT int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey);
722
- OPENSSL_EXPORT EVP_PKEY * X509_PUBKEY_get(X509_PUBKEY *key);
723
- OPENSSL_EXPORT int i2d_PUBKEY(const EVP_PKEY *a,unsigned char **pp);
724
- OPENSSL_EXPORT EVP_PKEY * d2i_PUBKEY(EVP_PKEY **a,const unsigned char **pp,
725
- long length);
726
- OPENSSL_EXPORT int i2d_RSA_PUBKEY(const RSA *a,unsigned char **pp);
727
- OPENSSL_EXPORT RSA * d2i_RSA_PUBKEY(RSA **a,const unsigned char **pp,
728
- long length);
729
- #ifndef OPENSSL_NO_DSA
730
- OPENSSL_EXPORT int i2d_DSA_PUBKEY(const DSA *a,unsigned char **pp);
731
- OPENSSL_EXPORT DSA * d2i_DSA_PUBKEY(DSA **a,const unsigned char **pp,
732
- long length);
733
- #endif
734
- OPENSSL_EXPORT int i2d_EC_PUBKEY(const EC_KEY *a, unsigned char **pp);
735
- OPENSSL_EXPORT EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp,
736
- long length);
933
+ OPENSSL_EXPORT int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey);
934
+ OPENSSL_EXPORT EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key);
737
935
 
738
936
  DECLARE_ASN1_FUNCTIONS(X509_SIG)
739
937
  DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO)
740
938
  DECLARE_ASN1_FUNCTIONS(X509_REQ)
741
939
 
742
940
  DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE)
743
- OPENSSL_EXPORT X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value);
941
+ OPENSSL_EXPORT X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype,
942
+ void *value);
744
943
 
745
944
  DECLARE_ASN1_FUNCTIONS(X509_EXTENSION)
746
945
  DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS)
@@ -749,34 +948,83 @@ DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY)
749
948
 
750
949
  DECLARE_ASN1_FUNCTIONS(X509_NAME)
751
950
 
752
- OPENSSL_EXPORT int X509_NAME_set(X509_NAME **xn, X509_NAME *name);
951
+ OPENSSL_EXPORT int X509_NAME_set(X509_NAME **xn, X509_NAME *name);
753
952
 
754
953
  DECLARE_ASN1_FUNCTIONS(X509_CINF)
755
954
 
756
955
  DECLARE_ASN1_FUNCTIONS(X509)
757
956
  DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX)
758
957
 
759
- /* X509_up_ref adds one to the reference count of |x| and returns one. */
958
+ // X509_up_ref adds one to the reference count of |x| and returns one.
760
959
  OPENSSL_EXPORT int X509_up_ref(X509 *x);
761
960
 
762
- OPENSSL_EXPORT int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused,
763
- CRYPTO_EX_dup *dup_unused, CRYPTO_EX_free *free_func);
961
+ OPENSSL_EXPORT int X509_get_ex_new_index(long argl, void *argp,
962
+ CRYPTO_EX_unused *unused,
963
+ CRYPTO_EX_dup *dup_unused,
964
+ CRYPTO_EX_free *free_func);
764
965
  OPENSSL_EXPORT int X509_set_ex_data(X509 *r, int idx, void *arg);
765
966
  OPENSSL_EXPORT void *X509_get_ex_data(X509 *r, int idx);
766
- OPENSSL_EXPORT int i2d_X509_AUX(X509 *a,unsigned char **pp);
767
- OPENSSL_EXPORT X509 * d2i_X509_AUX(X509 **a,const unsigned char **pp,long length);
768
-
769
- OPENSSL_EXPORT int i2d_re_X509_tbs(X509 *x, unsigned char **pp);
967
+ OPENSSL_EXPORT int i2d_X509_AUX(X509 *a, unsigned char **pp);
968
+ OPENSSL_EXPORT X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp,
969
+ long length);
970
+
971
+ // i2d_re_X509_tbs serializes the TBSCertificate portion of |x509|. If |outp| is
972
+ // NULL, nothing is written. Otherwise, if |*outp| is not NULL, the result is
973
+ // written to |*outp|, which must have enough space available, and |*outp| is
974
+ // advanced just past the output. If |outp| is non-NULL and |*outp| is NULL, it
975
+ // sets |*outp| to a newly-allocated buffer containing the result. The caller is
976
+ // responsible for releasing the buffer with |OPENSSL_free|. In all cases, this
977
+ // function returns the number of bytes in the result, whether written or not,
978
+ // or a negative value on error.
979
+ //
980
+ // This function re-encodes the TBSCertificate and may not reflect |x509|'s
981
+ // original encoding. It may be used to manually generate a signature for a new
982
+ // certificate. To verify certificates, use |i2d_X509_tbs| instead.
983
+ OPENSSL_EXPORT int i2d_re_X509_tbs(X509 *x509, unsigned char **outp);
984
+
985
+ // i2d_X509_tbs serializes the TBSCertificate portion of |x509|. If |outp| is
986
+ // NULL, nothing is written. Otherwise, if |*outp| is not NULL, the result is
987
+ // written to |*outp|, which must have enough space available, and |*outp| is
988
+ // advanced just past the output. If |outp| is non-NULL and |*outp| is NULL, it
989
+ // sets |*outp| to a newly-allocated buffer containing the result. The caller is
990
+ // responsible for releasing the buffer with |OPENSSL_free|. In all cases, this
991
+ // function returns the number of bytes in the result, whether written or not,
992
+ // or a negative value on error.
993
+ //
994
+ // This function preserves the original encoding of the TBSCertificate and may
995
+ // not reflect modifications made to |x509|. It may be used to manually verify
996
+ // the signature of an existing certificate. To generate certificates, use
997
+ // |i2d_re_X509_tbs| instead.
998
+ OPENSSL_EXPORT int i2d_X509_tbs(X509 *x509, unsigned char **outp);
999
+
1000
+ // X509_set1_signature_algo sets |x509|'s signature algorithm to |algo| and
1001
+ // returns one on success or zero on error. It updates both the signature field
1002
+ // of the TBSCertificate structure, and the signatureAlgorithm field of the
1003
+ // Certificate.
1004
+ OPENSSL_EXPORT int X509_set1_signature_algo(X509 *x509, const X509_ALGOR *algo);
1005
+
1006
+ // X509_set1_signature_value sets |x509|'s signature to a copy of the |sig_len|
1007
+ // bytes pointed by |sig|. It returns one on success and zero on error.
1008
+ //
1009
+ // Due to a specification error, X.509 certificates store signatures in ASN.1
1010
+ // BIT STRINGs, but signature algorithms return byte strings rather than bit
1011
+ // strings. This function creates a BIT STRING containing a whole number of
1012
+ // bytes, with the bit order matching the DER encoding. This matches the
1013
+ // encoding used by all X.509 signature algorithms.
1014
+ OPENSSL_EXPORT int X509_set1_signature_value(X509 *x509, const uint8_t *sig,
1015
+ size_t sig_len);
770
1016
 
771
1017
  OPENSSL_EXPORT void X509_get0_signature(const ASN1_BIT_STRING **psig,
772
1018
  const X509_ALGOR **palg, const X509 *x);
773
1019
  OPENSSL_EXPORT int X509_get_signature_nid(const X509 *x);
774
1020
 
775
- OPENSSL_EXPORT int X509_alias_set1(X509 *x, unsigned char *name, int len);
776
- OPENSSL_EXPORT int X509_keyid_set1(X509 *x, unsigned char *id, int len);
777
- OPENSSL_EXPORT unsigned char * X509_alias_get0(X509 *x, int *len);
778
- OPENSSL_EXPORT unsigned char * X509_keyid_get0(X509 *x, int *len);
779
- OPENSSL_EXPORT int (*X509_TRUST_set_default(int (*trust)(int , X509 *, int)))(int, X509 *, int);
1021
+ OPENSSL_EXPORT int X509_alias_set1(X509 *x, const unsigned char *name, int len);
1022
+ OPENSSL_EXPORT int X509_keyid_set1(X509 *x, const unsigned char *id, int len);
1023
+ OPENSSL_EXPORT unsigned char *X509_alias_get0(X509 *x, int *len);
1024
+ OPENSSL_EXPORT unsigned char *X509_keyid_get0(X509 *x, int *len);
1025
+ OPENSSL_EXPORT int (*X509_TRUST_set_default(int (*trust)(int, X509 *,
1026
+ int)))(int, X509 *,
1027
+ int);
780
1028
  OPENSSL_EXPORT int X509_TRUST_set(int *t, int trust);
781
1029
  OPENSSL_EXPORT int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj);
782
1030
  OPENSSL_EXPORT int X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj);
@@ -788,93 +1036,95 @@ DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO)
788
1036
  DECLARE_ASN1_FUNCTIONS(X509_CRL)
789
1037
 
790
1038
  OPENSSL_EXPORT int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev);
791
- OPENSSL_EXPORT int X509_CRL_get0_by_serial(X509_CRL *crl,
792
- X509_REVOKED **ret, ASN1_INTEGER *serial);
793
- OPENSSL_EXPORT int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x);
1039
+ OPENSSL_EXPORT int X509_CRL_get0_by_serial(X509_CRL *crl, X509_REVOKED **ret,
1040
+ ASN1_INTEGER *serial);
1041
+ OPENSSL_EXPORT int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret,
1042
+ X509 *x);
794
1043
 
795
- OPENSSL_EXPORT X509_PKEY * X509_PKEY_new(void );
796
- OPENSSL_EXPORT void X509_PKEY_free(X509_PKEY *a);
1044
+ OPENSSL_EXPORT X509_PKEY *X509_PKEY_new(void);
1045
+ OPENSSL_EXPORT void X509_PKEY_free(X509_PKEY *a);
797
1046
 
798
1047
  DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI)
799
1048
  DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC)
800
1049
 
801
- #ifndef OPENSSL_NO_EVP
802
- OPENSSL_EXPORT X509_INFO * X509_INFO_new(void);
803
- OPENSSL_EXPORT void X509_INFO_free(X509_INFO *a);
804
- OPENSSL_EXPORT char * X509_NAME_oneline(X509_NAME *a,char *buf,int size);
1050
+ OPENSSL_EXPORT X509_INFO *X509_INFO_new(void);
1051
+ OPENSSL_EXPORT void X509_INFO_free(X509_INFO *a);
1052
+ OPENSSL_EXPORT char *X509_NAME_oneline(const X509_NAME *a, char *buf, int size);
805
1053
 
806
- OPENSSL_EXPORT int ASN1_digest(i2d_of_void *i2d,const EVP_MD *type,char *data,
807
- unsigned char *md,unsigned int *len);
1054
+ OPENSSL_EXPORT int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data,
1055
+ unsigned char *md, unsigned int *len);
808
1056
 
809
- OPENSSL_EXPORT int ASN1_item_digest(const ASN1_ITEM *it,const EVP_MD *type,void *data,
810
- unsigned char *md,unsigned int *len);
1057
+ OPENSSL_EXPORT int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type,
1058
+ void *data, unsigned char *md,
1059
+ unsigned int *len);
811
1060
 
812
1061
  OPENSSL_EXPORT int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1,
813
- ASN1_BIT_STRING *signature,void *data,EVP_PKEY *pkey);
814
-
815
- OPENSSL_EXPORT int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,
816
- ASN1_BIT_STRING *signature,
817
- void *data, EVP_PKEY *pkey, const EVP_MD *type);
818
- OPENSSL_EXPORT int ASN1_item_sign_ctx(const ASN1_ITEM *it,
819
- X509_ALGOR *algor1, X509_ALGOR *algor2,
820
- ASN1_BIT_STRING *signature, void *asn, EVP_MD_CTX *ctx);
821
- #endif
822
-
823
- OPENSSL_EXPORT int X509_set_version(X509 *x,long version);
824
- OPENSSL_EXPORT int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial);
825
- OPENSSL_EXPORT ASN1_INTEGER * X509_get_serialNumber(X509 *x);
826
- OPENSSL_EXPORT int X509_set_issuer_name(X509 *x, X509_NAME *name);
827
- OPENSSL_EXPORT X509_NAME * X509_get_issuer_name(X509 *a);
828
- OPENSSL_EXPORT int X509_set_subject_name(X509 *x, X509_NAME *name);
829
- OPENSSL_EXPORT X509_NAME * X509_get_subject_name(X509 *a);
830
- OPENSSL_EXPORT int X509_set_notBefore(X509 *x, const ASN1_TIME *tm);
831
- OPENSSL_EXPORT const ASN1_TIME *X509_get0_notBefore(const X509 *x);
832
- OPENSSL_EXPORT int X509_set_notAfter(X509 *x, const ASN1_TIME *tm);
833
- OPENSSL_EXPORT const ASN1_TIME *X509_get0_notAfter(const X509 *x);
834
- OPENSSL_EXPORT int X509_set_pubkey(X509 *x, EVP_PKEY *pkey);
835
- OPENSSL_EXPORT EVP_PKEY * X509_get_pubkey(X509 *x);
836
- OPENSSL_EXPORT ASN1_BIT_STRING * X509_get0_pubkey_bitstr(const X509 *x);
837
- OPENSSL_EXPORT STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x);
1062
+ ASN1_BIT_STRING *signature, void *data,
1063
+ EVP_PKEY *pkey);
1064
+
1065
+ OPENSSL_EXPORT int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1,
1066
+ X509_ALGOR *algor2,
1067
+ ASN1_BIT_STRING *signature, void *data,
1068
+ EVP_PKEY *pkey, const EVP_MD *type);
1069
+ OPENSSL_EXPORT int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1,
1070
+ X509_ALGOR *algor2,
1071
+ ASN1_BIT_STRING *signature, void *asn,
1072
+ EVP_MD_CTX *ctx);
1073
+
1074
+ OPENSSL_EXPORT int X509_set_version(X509 *x, long version);
1075
+ OPENSSL_EXPORT int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial);
1076
+ OPENSSL_EXPORT ASN1_INTEGER *X509_get_serialNumber(X509 *x);
1077
+ OPENSSL_EXPORT int X509_set_issuer_name(X509 *x, X509_NAME *name);
1078
+ OPENSSL_EXPORT X509_NAME *X509_get_issuer_name(const X509 *a);
1079
+ OPENSSL_EXPORT int X509_set_subject_name(X509 *x, X509_NAME *name);
1080
+ OPENSSL_EXPORT X509_NAME *X509_get_subject_name(const X509 *a);
1081
+ OPENSSL_EXPORT int X509_set_pubkey(X509 *x, EVP_PKEY *pkey);
1082
+ OPENSSL_EXPORT EVP_PKEY *X509_get_pubkey(X509 *x);
1083
+ OPENSSL_EXPORT ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x);
1084
+ OPENSSL_EXPORT const STACK_OF(X509_EXTENSION) *X509_get0_extensions(
1085
+ const X509 *x);
838
1086
  OPENSSL_EXPORT const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x);
839
1087
 
840
- OPENSSL_EXPORT int X509_REQ_set_version(X509_REQ *x,long version);
841
- OPENSSL_EXPORT int X509_REQ_set_subject_name(X509_REQ *req,X509_NAME *name);
1088
+ OPENSSL_EXPORT int X509_REQ_set_version(X509_REQ *x, long version);
1089
+ OPENSSL_EXPORT int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name);
842
1090
  OPENSSL_EXPORT void X509_REQ_get0_signature(const X509_REQ *req,
843
1091
  const ASN1_BIT_STRING **psig,
844
1092
  const X509_ALGOR **palg);
845
1093
  OPENSSL_EXPORT int X509_REQ_get_signature_nid(const X509_REQ *req);
846
1094
  OPENSSL_EXPORT int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp);
847
- OPENSSL_EXPORT int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey);
848
- OPENSSL_EXPORT EVP_PKEY * X509_REQ_get_pubkey(X509_REQ *req);
849
- OPENSSL_EXPORT int X509_REQ_extension_nid(int nid);
850
- OPENSSL_EXPORT const int * X509_REQ_get_extension_nids(void);
851
- OPENSSL_EXPORT void X509_REQ_set_extension_nids(const int *nids);
1095
+ OPENSSL_EXPORT int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey);
1096
+ OPENSSL_EXPORT EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req);
1097
+ OPENSSL_EXPORT int X509_REQ_extension_nid(int nid);
1098
+ OPENSSL_EXPORT const int *X509_REQ_get_extension_nids(void);
1099
+ OPENSSL_EXPORT void X509_REQ_set_extension_nids(const int *nids);
852
1100
  OPENSSL_EXPORT STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req);
853
- OPENSSL_EXPORT int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts,
854
- int nid);
855
- OPENSSL_EXPORT int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts);
1101
+ OPENSSL_EXPORT int X509_REQ_add_extensions_nid(X509_REQ *req,
1102
+ STACK_OF(X509_EXTENSION) *exts,
1103
+ int nid);
1104
+ OPENSSL_EXPORT int X509_REQ_add_extensions(X509_REQ *req,
1105
+ STACK_OF(X509_EXTENSION) *exts);
856
1106
  OPENSSL_EXPORT int X509_REQ_get_attr_count(const X509_REQ *req);
857
1107
  OPENSSL_EXPORT int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid,
858
- int lastpos);
859
- OPENSSL_EXPORT int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, ASN1_OBJECT *obj,
860
- int lastpos);
1108
+ int lastpos);
1109
+ OPENSSL_EXPORT int X509_REQ_get_attr_by_OBJ(const X509_REQ *req,
1110
+ ASN1_OBJECT *obj, int lastpos);
861
1111
  OPENSSL_EXPORT X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc);
862
1112
  OPENSSL_EXPORT X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc);
863
1113
  OPENSSL_EXPORT int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr);
864
1114
  OPENSSL_EXPORT int X509_REQ_add1_attr_by_OBJ(X509_REQ *req,
865
- const ASN1_OBJECT *obj, int type,
866
- const unsigned char *bytes, int len);
867
- OPENSSL_EXPORT int X509_REQ_add1_attr_by_NID(X509_REQ *req,
868
- int nid, int type,
869
- const unsigned char *bytes, int len);
1115
+ const ASN1_OBJECT *obj, int type,
1116
+ const unsigned char *bytes,
1117
+ int len);
1118
+ OPENSSL_EXPORT int X509_REQ_add1_attr_by_NID(X509_REQ *req, int nid, int type,
1119
+ const unsigned char *bytes,
1120
+ int len);
870
1121
  OPENSSL_EXPORT int X509_REQ_add1_attr_by_txt(X509_REQ *req,
871
- const char *attrname, int type,
872
- const unsigned char *bytes, int len);
1122
+ const char *attrname, int type,
1123
+ const unsigned char *bytes,
1124
+ int len);
873
1125
 
874
1126
  OPENSSL_EXPORT int X509_CRL_set_version(X509_CRL *x, long version);
875
1127
  OPENSSL_EXPORT int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name);
876
- OPENSSL_EXPORT int X509_CRL_set_lastUpdate(X509_CRL *x, const ASN1_TIME *tm);
877
- OPENSSL_EXPORT int X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm);
878
1128
  OPENSSL_EXPORT int X509_CRL_sort(X509_CRL *crl);
879
1129
  OPENSSL_EXPORT int X509_CRL_up_ref(X509_CRL *crl);
880
1130
 
@@ -882,233 +1132,365 @@ OPENSSL_EXPORT void X509_CRL_get0_signature(const X509_CRL *crl,
882
1132
  const ASN1_BIT_STRING **psig,
883
1133
  const X509_ALGOR **palg);
884
1134
  OPENSSL_EXPORT int X509_CRL_get_signature_nid(const X509_CRL *crl);
885
- OPENSSL_EXPORT int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp);
886
1135
 
1136
+ // i2d_re_X509_CRL_tbs serializes the TBSCertList portion of |crl|. If |outp| is
1137
+ // NULL, nothing is written. Otherwise, if |*outp| is not NULL, the result is
1138
+ // written to |*outp|, which must have enough space available, and |*outp| is
1139
+ // advanced just past the output. If |outp| is non-NULL and |*outp| is NULL, it
1140
+ // sets |*outp| to a newly-allocated buffer containing the result. The caller is
1141
+ // responsible for releasing the buffer with |OPENSSL_free|. In all cases, this
1142
+ // function returns the number of bytes in the result, whether written or not,
1143
+ // or a negative value on error.
1144
+ //
1145
+ // This function re-encodes the TBSCertList and may not reflect |crl|'s original
1146
+ // encoding. It may be used to manually generate a signature for a new CRL. To
1147
+ // verify CRLs, use |i2d_X509_CRL_tbs| instead.
1148
+ OPENSSL_EXPORT int i2d_re_X509_CRL_tbs(X509_CRL *crl, unsigned char **outp);
1149
+
1150
+ // i2d_X509_CRL_tbs serializes the TBSCertList portion of |crl|. If |outp| is
1151
+ // NULL, nothing is written. Otherwise, if |*outp| is not NULL, the result is
1152
+ // written to |*outp|, which must have enough space available, and |*outp| is
1153
+ // advanced just past the output. If |outp| is non-NULL and |*outp| is NULL, it
1154
+ // sets |*outp| to a newly-allocated buffer containing the result. The caller is
1155
+ // responsible for releasing the buffer with |OPENSSL_free|. In all cases, this
1156
+ // function returns the number of bytes in the result, whether written or not,
1157
+ // or a negative value on error.
1158
+ //
1159
+ // This function preserves the original encoding of the TBSCertList and may not
1160
+ // reflect modifications made to |crl|. It may be used to manually verify the
1161
+ // signature of an existing CRL. To generate CRLs, use |i2d_re_X509_CRL_tbs|
1162
+ // instead.
1163
+ OPENSSL_EXPORT int i2d_X509_CRL_tbs(X509_CRL *crl, unsigned char **outp);
1164
+
1165
+ // X509_REVOKED_get0_serialNumber returns the serial number of the certificate
1166
+ // revoked by |revoked|.
887
1167
  OPENSSL_EXPORT const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(
888
- const X509_REVOKED *x);
889
- OPENSSL_EXPORT int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial);
1168
+ const X509_REVOKED *revoked);
1169
+
1170
+ // X509_REVOKED_set_serialNumber sets |revoked|'s serial number to |serial|. It
1171
+ // returns one on success or zero on error.
1172
+ OPENSSL_EXPORT int X509_REVOKED_set_serialNumber(X509_REVOKED *revoked,
1173
+ const ASN1_INTEGER *serial);
1174
+
1175
+ // X509_REVOKED_get0_revocationDate returns the revocation time of the
1176
+ // certificate revoked by |revoked|.
890
1177
  OPENSSL_EXPORT const ASN1_TIME *X509_REVOKED_get0_revocationDate(
891
- const X509_REVOKED *x);
892
- OPENSSL_EXPORT int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm);
1178
+ const X509_REVOKED *revoked);
1179
+
1180
+ // X509_REVOKED_set_revocationDate sets |revoked|'s revocation time to |tm|. It
1181
+ // returns one on success or zero on error.
1182
+ OPENSSL_EXPORT int X509_REVOKED_set_revocationDate(X509_REVOKED *revoked,
1183
+ const ASN1_TIME *tm);
1184
+
1185
+ // X509_REVOKED_get0_extensions returns |r|'s extensions.
1186
+ OPENSSL_EXPORT const STACK_OF(X509_EXTENSION) *X509_REVOKED_get0_extensions(
1187
+ const X509_REVOKED *r);
893
1188
 
894
1189
  OPENSSL_EXPORT X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer,
895
- EVP_PKEY *skey, const EVP_MD *md, unsigned int flags);
1190
+ EVP_PKEY *skey, const EVP_MD *md,
1191
+ unsigned int flags);
896
1192
 
897
- OPENSSL_EXPORT int X509_REQ_check_private_key(X509_REQ *x509,EVP_PKEY *pkey);
1193
+ OPENSSL_EXPORT int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey);
898
1194
 
899
- OPENSSL_EXPORT int X509_check_private_key(X509 *x509, const EVP_PKEY *pkey);
900
- OPENSSL_EXPORT int X509_chain_check_suiteb(int *perror_depth,
901
- X509 *x, STACK_OF(X509) *chain,
902
- unsigned long flags);
903
- OPENSSL_EXPORT int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk,
904
- unsigned long flags);
1195
+ OPENSSL_EXPORT int X509_check_private_key(X509 *x509, const EVP_PKEY *pkey);
1196
+ OPENSSL_EXPORT int X509_chain_check_suiteb(int *perror_depth, X509 *x,
1197
+ STACK_OF(X509) *chain,
1198
+ unsigned long flags);
1199
+ OPENSSL_EXPORT int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk,
1200
+ unsigned long flags);
905
1201
  OPENSSL_EXPORT STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain);
906
1202
 
907
- OPENSSL_EXPORT int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b);
908
- OPENSSL_EXPORT unsigned long X509_issuer_and_serial_hash(X509 *a);
1203
+ OPENSSL_EXPORT int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b);
909
1204
 
910
- OPENSSL_EXPORT int X509_issuer_name_cmp(const X509 *a, const X509 *b);
911
- OPENSSL_EXPORT unsigned long X509_issuer_name_hash(X509 *a);
1205
+ OPENSSL_EXPORT int X509_issuer_name_cmp(const X509 *a, const X509 *b);
1206
+ OPENSSL_EXPORT unsigned long X509_issuer_name_hash(X509 *a);
912
1207
 
913
- OPENSSL_EXPORT int X509_subject_name_cmp(const X509 *a, const X509 *b);
914
- OPENSSL_EXPORT unsigned long X509_subject_name_hash(X509 *x);
1208
+ OPENSSL_EXPORT int X509_subject_name_cmp(const X509 *a, const X509 *b);
1209
+ OPENSSL_EXPORT unsigned long X509_subject_name_hash(X509 *x);
915
1210
 
916
- OPENSSL_EXPORT unsigned long X509_issuer_name_hash_old(X509 *a);
917
- OPENSSL_EXPORT unsigned long X509_subject_name_hash_old(X509 *x);
1211
+ OPENSSL_EXPORT unsigned long X509_issuer_name_hash_old(X509 *a);
1212
+ OPENSSL_EXPORT unsigned long X509_subject_name_hash_old(X509 *x);
918
1213
 
919
- OPENSSL_EXPORT int X509_cmp(const X509 *a, const X509 *b);
920
- OPENSSL_EXPORT int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b);
921
- OPENSSL_EXPORT unsigned long X509_NAME_hash(X509_NAME *x);
922
- OPENSSL_EXPORT unsigned long X509_NAME_hash_old(X509_NAME *x);
1214
+ OPENSSL_EXPORT int X509_cmp(const X509 *a, const X509 *b);
1215
+ OPENSSL_EXPORT int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b);
1216
+ OPENSSL_EXPORT unsigned long X509_NAME_hash(X509_NAME *x);
1217
+ OPENSSL_EXPORT unsigned long X509_NAME_hash_old(X509_NAME *x);
923
1218
 
924
- OPENSSL_EXPORT int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b);
925
- OPENSSL_EXPORT int X509_CRL_match(const X509_CRL *a, const X509_CRL *b);
1219
+ OPENSSL_EXPORT int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b);
1220
+ OPENSSL_EXPORT int X509_CRL_match(const X509_CRL *a, const X509_CRL *b);
926
1221
  #ifndef OPENSSL_NO_FP_API
927
- OPENSSL_EXPORT int X509_print_ex_fp(FILE *bp,X509 *x, unsigned long nmflag, unsigned long cflag);
928
- OPENSSL_EXPORT int X509_print_fp(FILE *bp,X509 *x);
929
- OPENSSL_EXPORT int X509_CRL_print_fp(FILE *bp,X509_CRL *x);
930
- OPENSSL_EXPORT int X509_REQ_print_fp(FILE *bp,X509_REQ *req);
931
- OPENSSL_EXPORT int X509_NAME_print_ex_fp(FILE *fp, X509_NAME *nm, int indent, unsigned long flags);
1222
+ OPENSSL_EXPORT int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag,
1223
+ unsigned long cflag);
1224
+ OPENSSL_EXPORT int X509_print_fp(FILE *bp, X509 *x);
1225
+ OPENSSL_EXPORT int X509_CRL_print_fp(FILE *bp, X509_CRL *x);
1226
+ OPENSSL_EXPORT int X509_REQ_print_fp(FILE *bp, X509_REQ *req);
1227
+ OPENSSL_EXPORT int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm,
1228
+ int indent, unsigned long flags);
932
1229
  #endif
933
1230
 
934
- OPENSSL_EXPORT int X509_NAME_print(BIO *bp, X509_NAME *name, int obase);
935
- OPENSSL_EXPORT int X509_NAME_print_ex(BIO *out, X509_NAME *nm, int indent, unsigned long flags);
936
- OPENSSL_EXPORT int X509_print_ex(BIO *bp,X509 *x, unsigned long nmflag, unsigned long cflag);
937
- OPENSSL_EXPORT int X509_print(BIO *bp,X509 *x);
938
- OPENSSL_EXPORT int X509_ocspid_print(BIO *bp,X509 *x);
939
- OPENSSL_EXPORT int X509_CERT_AUX_print(BIO *bp,X509_CERT_AUX *x, int indent);
940
- OPENSSL_EXPORT int X509_CRL_print(BIO *bp,X509_CRL *x);
941
- OPENSSL_EXPORT int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, unsigned long cflag);
942
- OPENSSL_EXPORT int X509_REQ_print(BIO *bp,X509_REQ *req);
943
-
944
- OPENSSL_EXPORT int X509_NAME_entry_count(X509_NAME *name);
945
- OPENSSL_EXPORT int X509_NAME_get_text_by_NID(X509_NAME *name, int nid,
946
- char *buf,int len);
947
- OPENSSL_EXPORT int X509_NAME_get_text_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj,
948
- char *buf,int len);
949
-
950
- /* NOTE: you should be passsing -1, not 0 as lastpos. The functions that use
951
- * lastpos, search after that position on. */
952
- OPENSSL_EXPORT int X509_NAME_get_index_by_NID(X509_NAME *name,int nid,int lastpos);
953
- OPENSSL_EXPORT int X509_NAME_get_index_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj,
954
- int lastpos);
955
- OPENSSL_EXPORT X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc);
956
- OPENSSL_EXPORT X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc);
957
- OPENSSL_EXPORT int X509_NAME_add_entry(X509_NAME *name,X509_NAME_ENTRY *ne,
958
- int loc, int set);
959
- OPENSSL_EXPORT int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type,
960
- unsigned char *bytes, int len, int loc, int set);
961
- OPENSSL_EXPORT int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type,
962
- unsigned char *bytes, int len, int loc, int set);
963
- OPENSSL_EXPORT X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne,
964
- const char *field, int type, const unsigned char *bytes, int len);
965
- OPENSSL_EXPORT X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid,
966
- int type,unsigned char *bytes, int len);
967
- OPENSSL_EXPORT int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type,
968
- const unsigned char *bytes, int len, int loc, int set);
969
- OPENSSL_EXPORT X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne,
970
- const ASN1_OBJECT *obj, int type,const unsigned char *bytes,
971
- int len);
972
- OPENSSL_EXPORT int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne,
973
- const ASN1_OBJECT *obj);
974
- OPENSSL_EXPORT int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type,
975
- const unsigned char *bytes, int len);
976
- OPENSSL_EXPORT ASN1_OBJECT * X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne);
977
- OPENSSL_EXPORT ASN1_STRING * X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne);
978
-
979
- OPENSSL_EXPORT int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x);
980
- OPENSSL_EXPORT int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x,
981
- int nid, int lastpos);
982
- OPENSSL_EXPORT int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x,
983
- const ASN1_OBJECT *obj,int lastpos);
984
- OPENSSL_EXPORT int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x,
985
- int crit, int lastpos);
986
- OPENSSL_EXPORT X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc);
987
- OPENSSL_EXPORT X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc);
988
- OPENSSL_EXPORT STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x,
989
- X509_EXTENSION *ex, int loc);
990
-
991
- OPENSSL_EXPORT int X509_get_ext_count(X509 *x);
992
- OPENSSL_EXPORT int X509_get_ext_by_NID(X509 *x, int nid, int lastpos);
993
- OPENSSL_EXPORT int X509_get_ext_by_OBJ(X509 *x,ASN1_OBJECT *obj,int lastpos);
994
- OPENSSL_EXPORT int X509_get_ext_by_critical(X509 *x, int crit, int lastpos);
995
- OPENSSL_EXPORT X509_EXTENSION *X509_get_ext(X509 *x, int loc);
1231
+ OPENSSL_EXPORT int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase);
1232
+ OPENSSL_EXPORT int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent,
1233
+ unsigned long flags);
1234
+ OPENSSL_EXPORT int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag,
1235
+ unsigned long cflag);
1236
+ OPENSSL_EXPORT int X509_print(BIO *bp, X509 *x);
1237
+ OPENSSL_EXPORT int X509_ocspid_print(BIO *bp, X509 *x);
1238
+ OPENSSL_EXPORT int X509_CERT_AUX_print(BIO *bp, X509_CERT_AUX *x, int indent);
1239
+ OPENSSL_EXPORT int X509_CRL_print(BIO *bp, X509_CRL *x);
1240
+ OPENSSL_EXPORT int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag,
1241
+ unsigned long cflag);
1242
+ OPENSSL_EXPORT int X509_REQ_print(BIO *bp, X509_REQ *req);
1243
+
1244
+ OPENSSL_EXPORT int X509_NAME_entry_count(const X509_NAME *name);
1245
+ OPENSSL_EXPORT int X509_NAME_get_text_by_NID(const X509_NAME *name, int nid,
1246
+ char *buf, int len);
1247
+ OPENSSL_EXPORT int X509_NAME_get_text_by_OBJ(const X509_NAME *name,
1248
+ const ASN1_OBJECT *obj, char *buf,
1249
+ int len);
1250
+
1251
+ // NOTE: you should be passsing -1, not 0 as lastpos. The functions that use
1252
+ // lastpos, search after that position on.
1253
+ OPENSSL_EXPORT int X509_NAME_get_index_by_NID(const X509_NAME *name, int nid,
1254
+ int lastpos);
1255
+ OPENSSL_EXPORT int X509_NAME_get_index_by_OBJ(const X509_NAME *name,
1256
+ const ASN1_OBJECT *obj,
1257
+ int lastpos);
1258
+ OPENSSL_EXPORT X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name,
1259
+ int loc);
1260
+ OPENSSL_EXPORT X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name,
1261
+ int loc);
1262
+ OPENSSL_EXPORT int X509_NAME_add_entry(X509_NAME *name, X509_NAME_ENTRY *ne,
1263
+ int loc, int set);
1264
+ OPENSSL_EXPORT int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj,
1265
+ int type,
1266
+ const unsigned char *bytes,
1267
+ int len, int loc, int set);
1268
+ OPENSSL_EXPORT int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid,
1269
+ int type,
1270
+ const unsigned char *bytes,
1271
+ int len, int loc, int set);
1272
+ OPENSSL_EXPORT X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(
1273
+ X509_NAME_ENTRY **ne, const char *field, int type,
1274
+ const unsigned char *bytes, int len);
1275
+ OPENSSL_EXPORT X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(
1276
+ X509_NAME_ENTRY **ne, int nid, int type, const unsigned char *bytes,
1277
+ int len);
1278
+ OPENSSL_EXPORT int X509_NAME_add_entry_by_txt(X509_NAME *name,
1279
+ const char *field, int type,
1280
+ const unsigned char *bytes,
1281
+ int len, int loc, int set);
1282
+ OPENSSL_EXPORT X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(
1283
+ X509_NAME_ENTRY **ne, const ASN1_OBJECT *obj, int type,
1284
+ const unsigned char *bytes, int len);
1285
+ OPENSSL_EXPORT int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne,
1286
+ const ASN1_OBJECT *obj);
1287
+ OPENSSL_EXPORT int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type,
1288
+ const unsigned char *bytes,
1289
+ int len);
1290
+ OPENSSL_EXPORT ASN1_OBJECT *X509_NAME_ENTRY_get_object(
1291
+ const X509_NAME_ENTRY *ne);
1292
+ OPENSSL_EXPORT ASN1_STRING *X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne);
1293
+
1294
+ OPENSSL_EXPORT int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x);
1295
+ OPENSSL_EXPORT int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x,
1296
+ int nid, int lastpos);
1297
+ OPENSSL_EXPORT int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x,
1298
+ const ASN1_OBJECT *obj, int lastpos);
1299
+ OPENSSL_EXPORT int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x,
1300
+ int crit, int lastpos);
1301
+ OPENSSL_EXPORT X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x,
1302
+ int loc);
1303
+ OPENSSL_EXPORT X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x,
1304
+ int loc);
1305
+ OPENSSL_EXPORT STACK_OF(X509_EXTENSION) *X509v3_add_ext(
1306
+ STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc);
1307
+
1308
+ OPENSSL_EXPORT int X509_get_ext_count(const X509 *x);
1309
+ OPENSSL_EXPORT int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos);
1310
+ OPENSSL_EXPORT int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj,
1311
+ int lastpos);
1312
+ OPENSSL_EXPORT int X509_get_ext_by_critical(const X509 *x, int crit,
1313
+ int lastpos);
1314
+ OPENSSL_EXPORT X509_EXTENSION *X509_get_ext(const X509 *x, int loc);
996
1315
  OPENSSL_EXPORT X509_EXTENSION *X509_delete_ext(X509 *x, int loc);
997
- OPENSSL_EXPORT int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc);
998
- OPENSSL_EXPORT void * X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx);
999
- OPENSSL_EXPORT int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit,
1000
- unsigned long flags);
1001
-
1002
- OPENSSL_EXPORT int X509_CRL_get_ext_count(X509_CRL *x);
1003
- OPENSSL_EXPORT int X509_CRL_get_ext_by_NID(X509_CRL *x, int nid, int lastpos);
1004
- OPENSSL_EXPORT int X509_CRL_get_ext_by_OBJ(X509_CRL *x,ASN1_OBJECT *obj,int lastpos);
1005
- OPENSSL_EXPORT int X509_CRL_get_ext_by_critical(X509_CRL *x, int crit, int lastpos);
1006
- OPENSSL_EXPORT X509_EXTENSION *X509_CRL_get_ext(X509_CRL *x, int loc);
1316
+ OPENSSL_EXPORT int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc);
1317
+
1318
+ // X509_get_ext_d2i behaves like |X509V3_get_d2i| but looks for the extension in
1319
+ // |x509|'s extension list.
1320
+ //
1321
+ // WARNING: This function is difficult to use correctly. See the documentation
1322
+ // for |X509V3_get_d2i| for details.
1323
+ OPENSSL_EXPORT void *X509_get_ext_d2i(const X509 *x509, int nid,
1324
+ int *out_critical, int *out_idx);
1325
+
1326
+ // X509_add1_ext_i2d behaves like |X509V3_add1_i2d| but adds the extension to
1327
+ // |x|'s extension list.
1328
+ //
1329
+ // WARNING: This function may return zero or -1 on error. The caller must also
1330
+ // ensure |value|'s type matches |nid|. See the documentation for
1331
+ // |X509V3_add1_i2d| for details.
1332
+ OPENSSL_EXPORT int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit,
1333
+ unsigned long flags);
1334
+
1335
+ OPENSSL_EXPORT int X509_CRL_get_ext_count(const X509_CRL *x);
1336
+ OPENSSL_EXPORT int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid,
1337
+ int lastpos);
1338
+ OPENSSL_EXPORT int X509_CRL_get_ext_by_OBJ(const X509_CRL *x,
1339
+ const ASN1_OBJECT *obj, int lastpos);
1340
+ OPENSSL_EXPORT int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit,
1341
+ int lastpos);
1342
+ OPENSSL_EXPORT X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc);
1007
1343
  OPENSSL_EXPORT X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc);
1008
- OPENSSL_EXPORT int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc);
1009
- OPENSSL_EXPORT void * X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx);
1010
- OPENSSL_EXPORT int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit,
1011
- unsigned long flags);
1012
-
1013
- OPENSSL_EXPORT int X509_REVOKED_get_ext_count(X509_REVOKED *x);
1014
- OPENSSL_EXPORT int X509_REVOKED_get_ext_by_NID(X509_REVOKED *x, int nid, int lastpos);
1015
- OPENSSL_EXPORT int X509_REVOKED_get_ext_by_OBJ(X509_REVOKED *x,ASN1_OBJECT *obj,int lastpos);
1016
- OPENSSL_EXPORT int X509_REVOKED_get_ext_by_critical(X509_REVOKED *x, int crit, int lastpos);
1017
- OPENSSL_EXPORT X509_EXTENSION *X509_REVOKED_get_ext(X509_REVOKED *x, int loc);
1018
- OPENSSL_EXPORT X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc);
1019
- OPENSSL_EXPORT int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc);
1020
- OPENSSL_EXPORT void * X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx);
1021
- OPENSSL_EXPORT int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit,
1022
- unsigned long flags);
1023
-
1024
- OPENSSL_EXPORT X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex,
1025
- int nid, int crit, ASN1_OCTET_STRING *data);
1026
- OPENSSL_EXPORT X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex,
1027
- const ASN1_OBJECT *obj,int crit,ASN1_OCTET_STRING *data);
1028
- OPENSSL_EXPORT int X509_EXTENSION_set_object(X509_EXTENSION *ex,const ASN1_OBJECT *obj);
1029
- OPENSSL_EXPORT int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit);
1030
- OPENSSL_EXPORT int X509_EXTENSION_set_data(X509_EXTENSION *ex,
1031
- ASN1_OCTET_STRING *data);
1032
- OPENSSL_EXPORT ASN1_OBJECT * X509_EXTENSION_get_object(X509_EXTENSION *ex);
1344
+ OPENSSL_EXPORT int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc);
1345
+
1346
+ // X509_CRL_get_ext_d2i behaves like |X509V3_get_d2i| but looks for the
1347
+ // extension in |crl|'s extension list.
1348
+ //
1349
+ // WARNING: This function is difficult to use correctly. See the documentation
1350
+ // for |X509V3_get_d2i| for details.
1351
+ OPENSSL_EXPORT void *X509_CRL_get_ext_d2i(const X509_CRL *crl, int nid,
1352
+ int *out_critical, int *out_idx);
1353
+
1354
+ // X509_CRL_add1_ext_i2d behaves like |X509V3_add1_i2d| but adds the extension
1355
+ // to |x|'s extension list.
1356
+ //
1357
+ // WARNING: This function may return zero or -1 on error. The caller must also
1358
+ // ensure |value|'s type matches |nid|. See the documentation for
1359
+ // |X509V3_add1_i2d| for details.
1360
+ OPENSSL_EXPORT int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value,
1361
+ int crit, unsigned long flags);
1362
+
1363
+ OPENSSL_EXPORT int X509_REVOKED_get_ext_count(const X509_REVOKED *x);
1364
+ OPENSSL_EXPORT int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid,
1365
+ int lastpos);
1366
+ OPENSSL_EXPORT int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x,
1367
+ const ASN1_OBJECT *obj,
1368
+ int lastpos);
1369
+ OPENSSL_EXPORT int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x,
1370
+ int crit, int lastpos);
1371
+ OPENSSL_EXPORT X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x,
1372
+ int loc);
1373
+ OPENSSL_EXPORT X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x,
1374
+ int loc);
1375
+ OPENSSL_EXPORT int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex,
1376
+ int loc);
1377
+
1378
+ // X509_REVOKED_get_ext_d2i behaves like |X509V3_get_d2i| but looks for the
1379
+ // extension in |revoked|'s extension list.
1380
+ //
1381
+ // WARNING: This function is difficult to use correctly. See the documentation
1382
+ // for |X509V3_get_d2i| for details.
1383
+ OPENSSL_EXPORT void *X509_REVOKED_get_ext_d2i(const X509_REVOKED *revoked,
1384
+ int nid, int *out_critical,
1385
+ int *out_idx);
1386
+
1387
+ // X509_REVOKED_add1_ext_i2d behaves like |X509V3_add1_i2d| but adds the
1388
+ // extension to |x|'s extension list.
1389
+ //
1390
+ // WARNING: This function may return zero or -1 on error. The caller must also
1391
+ // ensure |value|'s type matches |nid|. See the documentation for
1392
+ // |X509V3_add1_i2d| for details.
1393
+ OPENSSL_EXPORT int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid,
1394
+ void *value, int crit,
1395
+ unsigned long flags);
1396
+
1397
+ OPENSSL_EXPORT X509_EXTENSION *X509_EXTENSION_create_by_NID(
1398
+ X509_EXTENSION **ex, int nid, int crit, const ASN1_OCTET_STRING *data);
1399
+ OPENSSL_EXPORT X509_EXTENSION *X509_EXTENSION_create_by_OBJ(
1400
+ X509_EXTENSION **ex, const ASN1_OBJECT *obj, int crit,
1401
+ const ASN1_OCTET_STRING *data);
1402
+ OPENSSL_EXPORT int X509_EXTENSION_set_object(X509_EXTENSION *ex,
1403
+ const ASN1_OBJECT *obj);
1404
+ OPENSSL_EXPORT int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit);
1405
+ OPENSSL_EXPORT int X509_EXTENSION_set_data(X509_EXTENSION *ex,
1406
+ const ASN1_OCTET_STRING *data);
1407
+ OPENSSL_EXPORT ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex);
1033
1408
  OPENSSL_EXPORT ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne);
1034
- OPENSSL_EXPORT int X509_EXTENSION_get_critical(X509_EXTENSION *ex);
1409
+ OPENSSL_EXPORT int X509_EXTENSION_get_critical(X509_EXTENSION *ex);
1035
1410
 
1036
1411
  OPENSSL_EXPORT int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x);
1037
- OPENSSL_EXPORT int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid,
1038
- int lastpos);
1039
- OPENSSL_EXPORT int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, const ASN1_OBJECT *obj,
1040
- int lastpos);
1041
- OPENSSL_EXPORT X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc);
1042
- OPENSSL_EXPORT X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc);
1043
- OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
1044
- X509_ATTRIBUTE *attr);
1045
- OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) **x,
1046
- const ASN1_OBJECT *obj, int type,
1047
- const unsigned char *bytes, int len);
1048
- OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) **x,
1049
- int nid, int type,
1050
- const unsigned char *bytes, int len);
1051
- OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) **x,
1052
- const char *attrname, int type,
1053
- const unsigned char *bytes, int len);
1412
+ OPENSSL_EXPORT int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x,
1413
+ int nid, int lastpos);
1414
+ OPENSSL_EXPORT int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk,
1415
+ const ASN1_OBJECT *obj, int lastpos);
1416
+ OPENSSL_EXPORT X509_ATTRIBUTE *X509at_get_attr(
1417
+ const STACK_OF(X509_ATTRIBUTE) *x, int loc);
1418
+ OPENSSL_EXPORT X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x,
1419
+ int loc);
1420
+ OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(
1421
+ STACK_OF(X509_ATTRIBUTE) **x, X509_ATTRIBUTE *attr);
1422
+ OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(
1423
+ STACK_OF(X509_ATTRIBUTE) **x, const ASN1_OBJECT *obj, int type,
1424
+ const unsigned char *bytes, int len);
1425
+ OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(
1426
+ STACK_OF(X509_ATTRIBUTE) **x, int nid, int type, const unsigned char *bytes,
1427
+ int len);
1428
+ OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(
1429
+ STACK_OF(X509_ATTRIBUTE) **x, const char *attrname, int type,
1430
+ const unsigned char *bytes, int len);
1054
1431
  OPENSSL_EXPORT void *X509at_get0_data_by_OBJ(STACK_OF(X509_ATTRIBUTE) *x,
1055
- ASN1_OBJECT *obj, int lastpos, int type);
1056
- OPENSSL_EXPORT X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid,
1057
- int atrtype, const void *data, int len);
1058
- OPENSSL_EXPORT X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr,
1059
- const ASN1_OBJECT *obj, int atrtype, const void *data, int len);
1060
- OPENSSL_EXPORT X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr,
1061
- const char *atrname, int type, const unsigned char *bytes, int len);
1062
- OPENSSL_EXPORT int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj);
1063
- OPENSSL_EXPORT int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, const void *data, int len);
1432
+ ASN1_OBJECT *obj, int lastpos,
1433
+ int type);
1434
+ OPENSSL_EXPORT X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(
1435
+ X509_ATTRIBUTE **attr, int nid, int atrtype, const void *data, int len);
1436
+ OPENSSL_EXPORT X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(
1437
+ X509_ATTRIBUTE **attr, const ASN1_OBJECT *obj, int atrtype,
1438
+ const void *data, int len);
1439
+ OPENSSL_EXPORT X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(
1440
+ X509_ATTRIBUTE **attr, const char *atrname, int type,
1441
+ const unsigned char *bytes, int len);
1442
+ OPENSSL_EXPORT int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr,
1443
+ const ASN1_OBJECT *obj);
1444
+ OPENSSL_EXPORT int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype,
1445
+ const void *data, int len);
1064
1446
  OPENSSL_EXPORT void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx,
1065
- int atrtype, void *data);
1447
+ int atrtype, void *data);
1066
1448
  OPENSSL_EXPORT int X509_ATTRIBUTE_count(X509_ATTRIBUTE *attr);
1067
1449
  OPENSSL_EXPORT ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr);
1068
- OPENSSL_EXPORT ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx);
1450
+ OPENSSL_EXPORT ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr,
1451
+ int idx);
1069
1452
 
1070
- OPENSSL_EXPORT int X509_verify_cert(X509_STORE_CTX *ctx);
1453
+ OPENSSL_EXPORT int X509_verify_cert(X509_STORE_CTX *ctx);
1071
1454
 
1072
- /* lookup a cert from a X509 STACK */
1073
- OPENSSL_EXPORT X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk,X509_NAME *name,
1074
- ASN1_INTEGER *serial);
1075
- OPENSSL_EXPORT X509 *X509_find_by_subject(STACK_OF(X509) *sk,X509_NAME *name);
1455
+ // lookup a cert from a X509 STACK
1456
+ OPENSSL_EXPORT X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk,
1457
+ X509_NAME *name,
1458
+ ASN1_INTEGER *serial);
1459
+ OPENSSL_EXPORT X509 *X509_find_by_subject(STACK_OF(X509) *sk, X509_NAME *name);
1076
1460
 
1077
- /* PKCS#8 utilities */
1461
+ // PKCS#8 utilities
1078
1462
 
1079
1463
  DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO)
1080
1464
 
1081
1465
  OPENSSL_EXPORT EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8);
1082
1466
  OPENSSL_EXPORT PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey);
1083
- OPENSSL_EXPORT PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken);
1084
- OPENSSL_EXPORT PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken);
1085
1467
 
1086
1468
  OPENSSL_EXPORT int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj,
1087
- int version, int ptype, void *pval,
1088
- unsigned char *penc, int penclen);
1469
+ int version, int ptype, void *pval,
1470
+ unsigned char *penc, int penclen);
1089
1471
  OPENSSL_EXPORT int PKCS8_pkey_get0(ASN1_OBJECT **ppkalg,
1090
- const unsigned char **pk, int *ppklen,
1091
- X509_ALGOR **pa,
1092
- PKCS8_PRIV_KEY_INFO *p8);
1472
+ const unsigned char **pk, int *ppklen,
1473
+ X509_ALGOR **pa, PKCS8_PRIV_KEY_INFO *p8);
1093
1474
 
1094
- OPENSSL_EXPORT int X509_PUBKEY_set0_param(X509_PUBKEY *pub, const ASN1_OBJECT *aobj,
1095
- int ptype, void *pval,
1096
- unsigned char *penc, int penclen);
1475
+ OPENSSL_EXPORT int X509_PUBKEY_set0_param(X509_PUBKEY *pub,
1476
+ const ASN1_OBJECT *aobj, int ptype,
1477
+ void *pval, unsigned char *penc,
1478
+ int penclen);
1097
1479
  OPENSSL_EXPORT int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg,
1098
- const unsigned char **pk, int *ppklen,
1099
- X509_ALGOR **pa,
1100
- X509_PUBKEY *pub);
1480
+ const unsigned char **pk, int *ppklen,
1481
+ X509_ALGOR **pa, X509_PUBKEY *pub);
1101
1482
 
1102
1483
  OPENSSL_EXPORT int X509_check_trust(X509 *x, int id, int flags);
1103
1484
  OPENSSL_EXPORT int X509_TRUST_get_count(void);
1104
- OPENSSL_EXPORT X509_TRUST * X509_TRUST_get0(int idx);
1485
+ OPENSSL_EXPORT X509_TRUST *X509_TRUST_get0(int idx);
1105
1486
  OPENSSL_EXPORT int X509_TRUST_get_by_id(int id);
1106
- OPENSSL_EXPORT int X509_TRUST_add(int id, int flags, int (*ck)(X509_TRUST *, X509 *, int),
1107
- char *name, int arg1, void *arg2);
1487
+ OPENSSL_EXPORT int X509_TRUST_add(int id, int flags,
1488
+ int (*ck)(X509_TRUST *, X509 *, int),
1489
+ char *name, int arg1, void *arg2);
1108
1490
  OPENSSL_EXPORT void X509_TRUST_cleanup(void);
1109
- OPENSSL_EXPORT int X509_TRUST_get_flags(X509_TRUST *xp);
1110
- OPENSSL_EXPORT char *X509_TRUST_get0_name(X509_TRUST *xp);
1111
- OPENSSL_EXPORT int X509_TRUST_get_trust(X509_TRUST *xp);
1491
+ OPENSSL_EXPORT int X509_TRUST_get_flags(const X509_TRUST *xp);
1492
+ OPENSSL_EXPORT char *X509_TRUST_get0_name(const X509_TRUST *xp);
1493
+ OPENSSL_EXPORT int X509_TRUST_get_trust(const X509_TRUST *xp);
1112
1494
 
1113
1495
 
1114
1496
  typedef struct rsa_pss_params_st {
@@ -1122,7 +1504,7 @@ DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS)
1122
1504
 
1123
1505
 
1124
1506
 
1125
- #ifdef __cplusplus
1507
+ #ifdef __cplusplus
1126
1508
  }
1127
1509
  #endif
1128
1510
 
@@ -1160,8 +1542,8 @@ using ScopedX509_STORE_CTX =
1160
1542
 
1161
1543
  BSSL_NAMESPACE_END
1162
1544
 
1163
- } /* extern C++ */
1164
- #endif /* !BORINGSSL_NO_CXX */
1545
+ } // extern C++
1546
+ #endif // !BORINGSSL_NO_CXX
1165
1547
 
1166
1548
  #define X509_R_AKID_MISMATCH 100
1167
1549
  #define X509_R_BAD_PKCS7_VERSION 101
@@ -1201,5 +1583,8 @@ BSSL_NAMESPACE_END
1201
1583
  #define X509_R_NAME_TOO_LONG 135
1202
1584
  #define X509_R_INVALID_PARAMETER 136
1203
1585
  #define X509_R_SIGNATURE_ALGORITHM_MISMATCH 137
1586
+ #define X509_R_DELTA_CRL_WITHOUT_CRL_NUMBER 138
1587
+ #define X509_R_INVALID_FIELD_FOR_VERSION 139
1588
+ #define X509_R_INVALID_VERSION 140
1204
1589
 
1205
1590
  #endif