grpc 1.53.1 → 1.54.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 (689) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +78 -66
  3. data/include/grpc/event_engine/event_engine.h +30 -14
  4. data/include/grpc/grpc_security.h +4 -0
  5. data/include/grpc/support/port_platform.h +4 -4
  6. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
  7. data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
  8. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
  9. data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
  10. data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
  11. data/src/core/ext/filters/client_channel/client_channel.h +131 -173
  12. data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
  13. data/src/core/ext/filters/client_channel/config_selector.h +4 -3
  14. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
  16. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
  17. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2 -16
  18. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
  19. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
  20. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -3
  21. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
  22. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
  24. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
  25. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
  26. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
  27. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
  28. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
  29. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
  30. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
  31. data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
  32. data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
  33. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
  34. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
  35. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
  36. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
  37. data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
  38. data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
  39. data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
  40. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
  41. data/src/core/ext/gcp/metadata_query.cc +142 -0
  42. data/src/core/ext/gcp/metadata_query.h +82 -0
  43. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
  44. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +8 -12
  45. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -5
  46. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +116 -58
  47. data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -2
  48. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
  49. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
  50. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +222 -118
  51. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +113 -295
  52. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -2
  53. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +0 -2
  54. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +277 -451
  55. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
  56. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -14
  57. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -9
  58. data/src/core/ext/transport/chttp2/transport/internal.h +16 -3
  59. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
  60. data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
  61. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
  62. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
  63. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
  64. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
  65. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
  66. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
  67. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
  68. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
  69. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
  70. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
  71. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
  72. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
  73. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
  74. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
  75. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
  76. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
  77. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
  78. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
  79. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +5 -3
  80. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +24 -0
  81. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
  82. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
  83. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
  84. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
  85. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
  86. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
  87. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  88. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
  89. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
  90. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
  92. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
  93. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
  94. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
  95. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  96. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
  97. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
  98. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
  99. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
  100. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
  101. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
  102. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
  103. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
  104. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
  105. data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
  106. data/src/core/ext/xds/xds_client_stats.cc +29 -15
  107. data/src/core/ext/xds/xds_client_stats.h +24 -20
  108. data/src/core/ext/xds/xds_endpoint.cc +5 -2
  109. data/src/core/ext/xds/xds_endpoint.h +9 -1
  110. data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
  111. data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
  112. data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
  113. data/src/core/lib/channel/call_finalization.h +1 -1
  114. data/src/core/lib/channel/call_tracer.cc +51 -0
  115. data/src/core/lib/channel/call_tracer.h +101 -38
  116. data/src/core/lib/channel/connected_channel.cc +483 -1050
  117. data/src/core/lib/channel/context.h +8 -1
  118. data/src/core/lib/channel/promise_based_filter.cc +106 -42
  119. data/src/core/lib/channel/promise_based_filter.h +27 -13
  120. data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
  121. data/src/core/lib/config/config_vars.cc +151 -0
  122. data/src/core/lib/config/config_vars.h +127 -0
  123. data/src/core/lib/config/config_vars_non_generated.cc +51 -0
  124. data/src/core/lib/config/load_config.cc +66 -0
  125. data/src/core/lib/config/load_config.h +49 -0
  126. data/src/core/lib/debug/trace.cc +5 -6
  127. data/src/core/lib/debug/trace.h +0 -5
  128. data/src/core/lib/event_engine/event_engine.cc +37 -2
  129. data/src/core/lib/event_engine/handle_containers.h +7 -22
  130. data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
  131. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
  132. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
  133. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
  134. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
  135. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
  136. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -3
  137. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
  138. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
  139. data/src/core/lib/event_engine/resolved_address.cc +2 -1
  140. data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
  141. data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
  142. data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
  143. data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
  144. data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
  145. data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
  146. data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
  147. data/src/core/lib/experiments/config.cc +3 -10
  148. data/src/core/lib/experiments/experiments.cc +7 -0
  149. data/src/core/lib/experiments/experiments.h +9 -1
  150. data/src/core/lib/gpr/log.cc +15 -28
  151. data/src/core/lib/gprpp/fork.cc +8 -14
  152. data/src/core/lib/gprpp/orphanable.h +4 -3
  153. data/src/core/lib/gprpp/per_cpu.h +9 -3
  154. data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
  155. data/src/core/lib/gprpp/ref_counted.h +33 -34
  156. data/src/core/lib/gprpp/thd.h +16 -0
  157. data/src/core/lib/gprpp/time.cc +1 -0
  158. data/src/core/lib/gprpp/time.h +4 -4
  159. data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
  160. data/src/core/lib/iomgr/call_combiner.h +2 -2
  161. data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
  162. data/src/core/lib/iomgr/ev_posix.cc +13 -53
  163. data/src/core/lib/iomgr/ev_posix.h +0 -3
  164. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
  165. data/src/core/lib/iomgr/iomgr.cc +4 -8
  166. data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
  167. data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
  168. data/src/core/lib/iomgr/pollset_windows.cc +1 -1
  169. data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
  170. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
  171. data/src/core/lib/iomgr/tcp_posix.cc +0 -1
  172. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -16
  173. data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
  174. data/src/core/lib/iomgr/tcp_windows.cc +12 -8
  175. data/src/core/lib/load_balancing/lb_policy.cc +9 -13
  176. data/src/core/lib/load_balancing/lb_policy.h +4 -2
  177. data/src/core/lib/promise/activity.cc +22 -6
  178. data/src/core/lib/promise/activity.h +61 -24
  179. data/src/core/lib/promise/cancel_callback.h +77 -0
  180. data/src/core/lib/promise/detail/basic_seq.h +1 -1
  181. data/src/core/lib/promise/detail/promise_factory.h +4 -0
  182. data/src/core/lib/promise/for_each.h +176 -0
  183. data/src/core/lib/promise/if.h +9 -0
  184. data/src/core/lib/promise/interceptor_list.h +23 -2
  185. data/src/core/lib/promise/latch.h +89 -3
  186. data/src/core/lib/promise/loop.h +13 -9
  187. data/src/core/lib/promise/map.h +7 -0
  188. data/src/core/lib/promise/party.cc +286 -0
  189. data/src/core/lib/promise/party.h +499 -0
  190. data/src/core/lib/promise/pipe.h +197 -57
  191. data/src/core/lib/promise/poll.h +48 -0
  192. data/src/core/lib/promise/promise.h +2 -2
  193. data/src/core/lib/resource_quota/arena.cc +19 -3
  194. data/src/core/lib/resource_quota/arena.h +119 -5
  195. data/src/core/lib/resource_quota/memory_quota.cc +1 -1
  196. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
  197. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
  198. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
  199. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
  200. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  201. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
  202. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
  203. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
  204. data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
  205. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
  206. data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
  207. data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
  208. data/src/core/lib/slice/slice.cc +1 -1
  209. data/src/core/lib/surface/builtins.cc +2 -0
  210. data/src/core/lib/surface/call.cc +926 -1024
  211. data/src/core/lib/surface/call.h +10 -0
  212. data/src/core/lib/surface/lame_client.cc +1 -0
  213. data/src/core/lib/surface/validate_metadata.cc +42 -43
  214. data/src/core/lib/surface/validate_metadata.h +0 -9
  215. data/src/core/lib/surface/version.cc +2 -2
  216. data/src/core/lib/transport/batch_builder.cc +179 -0
  217. data/src/core/lib/transport/batch_builder.h +468 -0
  218. data/src/core/lib/transport/bdp_estimator.cc +7 -7
  219. data/src/core/lib/transport/bdp_estimator.h +10 -6
  220. data/src/core/lib/transport/custom_metadata.h +30 -0
  221. data/src/core/lib/transport/metadata_batch.cc +5 -2
  222. data/src/core/lib/transport/metadata_batch.h +17 -113
  223. data/src/core/lib/transport/parsed_metadata.h +6 -16
  224. data/src/core/lib/transport/timeout_encoding.cc +6 -1
  225. data/src/core/lib/transport/transport.cc +30 -2
  226. data/src/core/lib/transport/transport.h +70 -14
  227. data/src/core/lib/transport/transport_impl.h +7 -0
  228. data/src/core/lib/transport/transport_op_string.cc +52 -42
  229. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
  230. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
  231. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
  232. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
  233. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  234. data/src/core/tsi/ssl_transport_security.cc +4 -2
  235. data/src/ruby/lib/grpc/version.rb +1 -1
  236. data/third_party/abseil-cpp/absl/base/config.h +1 -1
  237. data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
  238. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
  239. data/third_party/abseil-cpp/absl/flags/config.h +68 -0
  240. data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
  241. data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
  242. data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
  243. data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
  244. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
  245. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
  246. data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
  247. data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
  248. data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
  249. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
  250. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
  251. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
  252. data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
  253. data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
  254. data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
  255. data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
  256. data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
  257. data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
  258. data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
  259. data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
  260. data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
  261. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
  262. data/third_party/boringssl-with-bazel/err_data.c +728 -712
  263. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
  264. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
  265. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
  266. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
  267. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
  268. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
  269. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
  270. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
  271. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
  272. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
  273. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
  274. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
  275. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
  276. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
  277. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
  278. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
  279. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
  280. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
  281. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
  282. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
  283. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
  284. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
  286. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
  287. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
  288. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
  289. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
  290. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
  291. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
  292. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
  293. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
  294. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
  295. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
  296. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
  297. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
  298. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
  299. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
  300. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
  301. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
  302. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
  303. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
  304. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
  305. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
  306. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
  307. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
  308. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
  309. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
  310. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
  311. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
  312. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
  313. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
  314. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
  315. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
  316. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
  317. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
  318. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
  319. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
  320. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
  321. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
  322. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
  323. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
  324. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
  325. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
  326. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
  327. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
  328. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
  329. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
  330. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
  331. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
  332. data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
  333. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
  334. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
  335. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
  336. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
  337. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
  338. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
  339. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
  340. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
  341. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
  342. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
  343. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
  344. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
  345. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
  346. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
  347. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
  348. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
  349. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
  350. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
  351. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
  352. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
  353. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
  354. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
  355. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
  356. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
  357. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
  358. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
  359. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
  360. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
  361. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
  362. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
  363. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
  364. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
  365. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
  366. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
  367. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
  368. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
  369. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
  370. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
  371. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
  372. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
  373. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
  374. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
  375. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
  376. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
  377. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
  378. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
  379. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
  380. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
  381. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
  382. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
  383. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
  384. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
  385. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
  386. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
  387. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
  388. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
  389. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
  390. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
  391. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
  392. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
  393. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
  394. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
  395. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
  396. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
  397. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
  398. data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
  399. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
  400. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
  401. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
  402. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
  403. data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
  404. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
  405. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
  406. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
  407. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
  408. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
  409. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
  410. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
  411. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
  412. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
  413. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
  414. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
  415. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
  416. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
  417. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
  418. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
  419. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
  420. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
  421. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
  422. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
  423. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
  424. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
  425. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
  426. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
  427. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
  428. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
  429. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
  430. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
  431. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
  432. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
  433. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
  434. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
  435. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
  436. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
  437. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
  438. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
  439. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
  440. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
  441. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
  442. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
  443. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
  444. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
  445. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
  446. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
  447. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
  448. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
  449. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
  450. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
  451. data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
  452. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
  453. data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
  454. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
  455. data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
  456. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
  457. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
  458. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
  459. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
  460. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
  461. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
  462. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
  463. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
  464. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
  465. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
  466. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
  467. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
  468. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
  469. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
  470. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
  471. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
  472. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
  473. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
  474. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
  475. data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
  476. data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
  477. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
  478. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
  479. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
  480. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
  481. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
  482. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
  483. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
  484. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
  485. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
  486. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
  487. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
  488. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
  489. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
  490. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
  491. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
  504. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
  505. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
  506. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
  507. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
  508. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
  509. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
  510. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
  511. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
  512. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
  513. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
  514. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
  515. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
  516. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
  517. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
  518. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
  519. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
  520. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
  521. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
  522. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
  523. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
  524. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
  525. data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
  526. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
  527. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
  528. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
  529. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
  530. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
  531. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
  532. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
  533. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
  534. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
  535. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
  536. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
  537. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
  538. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
  539. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
  540. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
  541. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
  542. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
  543. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
  544. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
  545. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
  546. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
  547. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
  548. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
  549. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
  550. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
  551. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
  552. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
  553. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
  554. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
  555. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
  556. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
  557. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
  558. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
  559. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
  560. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
  561. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
  562. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
  563. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
  564. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
  565. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
  566. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
  567. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
  568. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
  569. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
  570. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
  571. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
  572. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
  573. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
  574. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
  575. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
  576. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
  577. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
  578. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
  579. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
  580. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
  581. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
  582. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
  583. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
  584. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
  585. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
  586. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
  587. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
  588. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
  589. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
  590. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
  591. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
  592. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
  593. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
  594. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
  595. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
  596. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
  597. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
  598. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
  599. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
  600. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
  601. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
  602. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
  603. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
  604. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
  605. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
  606. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
  607. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
  608. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
  609. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
  610. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
  611. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
  612. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
  613. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
  614. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
  615. data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
  616. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
  617. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  618. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
  619. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
  620. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
  621. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
  622. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
  623. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
  624. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
  625. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
  626. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
  627. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
  628. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
  629. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
  630. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
  631. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
  632. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
  633. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
  634. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
  635. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
  636. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
  637. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
  638. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
  639. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
  640. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
  641. metadata +103 -70
  642. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
  643. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
  644. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +0 -29
  645. data/src/core/lib/gprpp/global_config.h +0 -93
  646. data/src/core/lib/gprpp/global_config_env.cc +0 -140
  647. data/src/core/lib/gprpp/global_config_env.h +0 -133
  648. data/src/core/lib/gprpp/global_config_generic.h +0 -40
  649. data/src/core/lib/promise/intra_activity_waiter.h +0 -55
  650. data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
  651. data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
  652. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
  653. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
  654. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
  655. data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
  656. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
  657. data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
  658. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
  659. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
  660. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
  661. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
  662. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
  663. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
  664. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
  665. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
  666. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
  667. /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
  668. /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
  669. /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
  670. /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
  671. /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
  672. /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
  673. /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
  674. /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
  675. /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
  676. /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
  677. /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
  678. /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
  679. /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
  680. /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
  681. /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
  682. /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
  683. /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
  684. /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
  685. /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
  686. /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
  687. /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
  688. /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
  689. /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
@@ -55,8 +55,8 @@
55
55
  * [including the GNU Public Licence.]
56
56
  */
57
57
 
58
- #ifndef HEADER_ASN1_H
59
- #define HEADER_ASN1_H
58
+ #ifndef OPENSSL_HEADER_ASN1_H
59
+ #define OPENSSL_HEADER_ASN1_H
60
60
 
61
61
  #include <openssl/base.h>
62
62
 
@@ -213,38 +213,10 @@ OPENSSL_EXPORT const char *ASN1_tag2str(int tag);
213
213
  //
214
214
  // Note: If |out| and |*out| are both non-NULL, the object at |*out| is not
215
215
  // updated in-place. Instead, it is freed, and the pointer is updated to the
216
- // new object. This differs from OpenSSL, which behaves more like
217
- // |d2i_SAMPLE_with_reuse|. Callers are recommended to set |out| to NULL and
218
- // instead use the return value.
216
+ // new object. This differs from OpenSSL. Callers are recommended to set |out|
217
+ // to NULL and instead use the return value.
219
218
  SAMPLE *d2i_SAMPLE(SAMPLE **out, const uint8_t **inp, long len);
220
219
 
221
- // d2i_SAMPLE_with_reuse parses a structure from up to |len| bytes at |*inp|. On
222
- // success, it advances |*inp| by the number of bytes read and returns a
223
- // non-NULL pointer to an object containing the parsed structure. The object is
224
- // determined from |out| as follows:
225
- //
226
- // If |out| is NULL, the function places the result in a newly-allocated
227
- // |SAMPLE| object and returns it. This mode is recommended.
228
- //
229
- // If |out| is non-NULL, but |*out| is NULL, the function also places the result
230
- // in a newly-allocated |SAMPLE| object. It sets |*out| to this object and also
231
- // returns it.
232
- //
233
- // If |out| and |*out| are both non-NULL, the function updates the object at
234
- // |*out| in-place with the result and returns |*out|.
235
- //
236
- // If any of the above fail, the function returns NULL.
237
- //
238
- // This function does not reject trailing data in the input. This allows the
239
- // caller to parse a sequence of concatenated structures. Callers parsing only
240
- // one structure should check for trailing data by comparing the updated |*inp|
241
- // with the end of the input.
242
- //
243
- // WARNING: Callers should not rely on the in-place update mode. It often
244
- // produces the wrong result or breaks the type's internal invariants. Future
245
- // revisions of BoringSSL may standardize on the |d2i_SAMPLE| behavior.
246
- SAMPLE *d2i_SAMPLE_with_reuse(SAMPLE **out, const uint8_t **inp, long len);
247
-
248
220
  // i2d_SAMPLE marshals |in|. On error, it returns a negative value. On success,
249
221
  // it returns the length of the result and outputs it via |outp| as follows:
250
222
  //
@@ -348,8 +320,8 @@ OPENSSL_EXPORT ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it);
348
320
  OPENSSL_EXPORT void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it);
349
321
 
350
322
  // ASN1_item_d2i parses the ASN.1 type |it| from up to |len| bytes at |*inp|.
351
- // It behaves like |d2i_SAMPLE_with_reuse|, except that |out| and the return
352
- // value are cast to |ASN1_VALUE| pointers.
323
+ // It behaves like |d2i_SAMPLE|, except that |out| and the return value are cast
324
+ // to |ASN1_VALUE| pointers.
353
325
  //
354
326
  // TODO(https://crbug.com/boringssl/444): C strict aliasing forbids type-punning
355
327
  // |T*| and |ASN1_VALUE*| the way this function signature does. When that bug is
@@ -447,10 +419,22 @@ OPENSSL_EXPORT ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it,
447
419
  // integer type. FALSE is zero, TRUE is 0xff, and an omitted OPTIONAL BOOLEAN is
448
420
  // -1.
449
421
 
422
+ // ASN1_BOOLEAN_FALSE is FALSE as an |ASN1_BOOLEAN|.
423
+ #define ASN1_BOOLEAN_FALSE 0
424
+
425
+ // ASN1_BOOLEAN_TRUE is TRUE as an |ASN1_BOOLEAN|. Some code incorrectly uses
426
+ // 1, so prefer |b != ASN1_BOOLEAN_FALSE| over |b == ASN1_BOOLEAN_TRUE|.
427
+ #define ASN1_BOOLEAN_TRUE 0xff
428
+
429
+ // ASN1_BOOLEAN_NONE, in contexts where the |ASN1_BOOLEAN| represents an
430
+ // OPTIONAL BOOLEAN, is an omitted value. Using this value in other contexts is
431
+ // undefined and may be misinterpreted as TRUE.
432
+ #define ASN1_BOOLEAN_NONE (-1)
433
+
450
434
  // d2i_ASN1_BOOLEAN parses a DER-encoded ASN.1 BOOLEAN from up to |len| bytes at
451
435
  // |*inp|. On success, it advances |*inp| by the number of bytes read and
452
436
  // returns the result. If |out| is non-NULL, it additionally writes the result
453
- // to |*out|. On error, it returns -1.
437
+ // to |*out|. On error, it returns |ASN1_BOOLEAN_NONE|.
454
438
  //
455
439
  // This function does not reject trailing data in the input. This allows the
456
440
  // caller to parse a sequence of concatenated structures. Callers parsing only
@@ -459,9 +443,6 @@ OPENSSL_EXPORT ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it,
459
443
  //
460
444
  // WARNING: This function's is slightly different from other |d2i_*| functions
461
445
  // because |ASN1_BOOLEAN| is not a pointer type.
462
- //
463
- // TODO(https://crbug.com/boringssl/354): This function currently also accepts
464
- // BER, but this will be removed in the future.
465
446
  OPENSSL_EXPORT ASN1_BOOLEAN d2i_ASN1_BOOLEAN(ASN1_BOOLEAN *out,
466
447
  const unsigned char **inp,
467
448
  long len);
@@ -472,7 +453,8 @@ OPENSSL_EXPORT int i2d_ASN1_BOOLEAN(ASN1_BOOLEAN a, unsigned char **outp);
472
453
 
473
454
  // The following |ASN1_ITEM|s have ASN.1 type BOOLEAN and C type |ASN1_BOOLEAN|.
474
455
  // |ASN1_TBOOLEAN| and |ASN1_FBOOLEAN| must be marked OPTIONAL. When omitted,
475
- // they are parsed as TRUE and FALSE, respectively, rather than -1.
456
+ // they are parsed as TRUE and FALSE, respectively, rather than
457
+ // |ASN1_BOOLEAN_NONE|.
476
458
  DECLARE_ASN1_ITEM(ASN1_BOOLEAN)
477
459
  DECLARE_ASN1_ITEM(ASN1_TBOOLEAN)
478
460
  DECLARE_ASN1_ITEM(ASN1_FBOOLEAN)
@@ -485,31 +467,39 @@ DECLARE_ASN1_ITEM(ASN1_FBOOLEAN)
485
467
  // |ASN1_STRING|, to represent most values.
486
468
 
487
469
  // An asn1_string_st (aka |ASN1_STRING|) represents a value of a string-like
488
- // ASN.1 type. It contains a type field, and a byte string data field with a
470
+ // ASN.1 type. It contains a |type| field, and a byte string |data| field with a
489
471
  // type-specific representation.
490
472
  //
491
- // When representing a string value, the type field is one of
492
- // |V_ASN1_OCTET_STRING|, |V_ASN1_UTF8STRING|, |V_ASN1_NUMERICSTRING|,
493
- // |V_ASN1_PRINTABLESTRING|, |V_ASN1_T61STRING|, |V_ASN1_VIDEOTEXSTRING|,
494
- // |V_ASN1_IA5STRING|, |V_ASN1_GRAPHICSTRING|, |V_ASN1_ISO64STRING|,
495
- // |V_ASN1_VISIBLESTRING|, |V_ASN1_GENERALSTRING|, |V_ASN1_UNIVERSALSTRING|, or
496
- // |V_ASN1_BMPSTRING|. The data contains the byte representation of of the
473
+ // If |type| is one of |V_ASN1_OCTET_STRING|, |V_ASN1_UTF8STRING|,
474
+ // |V_ASN1_NUMERICSTRING|, |V_ASN1_PRINTABLESTRING|, |V_ASN1_T61STRING|,
475
+ // |V_ASN1_VIDEOTEXSTRING|, |V_ASN1_IA5STRING|, |V_ASN1_GRAPHICSTRING|,
476
+ // |V_ASN1_ISO64STRING|, |V_ASN1_VISIBLESTRING|, |V_ASN1_GENERALSTRING|,
477
+ // |V_ASN1_UNIVERSALSTRING|, or |V_ASN1_BMPSTRING|, the object represents an
478
+ // ASN.1 string type. The data contains the byte representation of the
497
479
  // string.
498
480
  //
499
- // When representing a BIT STRING value, the type field is |V_ASN1_BIT_STRING|.
500
- // See bit string documentation below for how the data and flags are used.
481
+ // If |type| is |V_ASN1_BIT_STRING|, the object represents a BIT STRING value.
482
+ // See bit string documentation below for the data and flags.
501
483
  //
502
- // When representing an INTEGER or ENUMERATED value, the type field is one of
503
- // |V_ASN1_INTEGER|, |V_ASN1_NEG_INTEGER|, |V_ASN1_ENUMERATED|, or
504
- // |V_ASN1_NEG_ENUMERATED|. See integer documentation below for details.
484
+ // If |type| is one of |V_ASN1_INTEGER|, |V_ASN1_NEG_INTEGER|,
485
+ // |V_ASN1_ENUMERATED|, or |V_ASN1_NEG_ENUMERATED|, the object represents an
486
+ // INTEGER or ENUMERATED value. See integer documentation below for details.
505
487
  //
506
- // When representing a GeneralizedTime or UTCTime value, the type field is
507
- // |V_ASN1_GENERALIZEDTIME| or |V_ASN1_UTCTIME|, respectively. The data contains
508
- // the DER encoding of the value. For example, the UNIX epoch would be
488
+ // If |type| is |V_ASN1_GENERALIZEDTIME| or |V_ASN1_UTCTIME|, the object
489
+ // represents a GeneralizedTime or UTCTime value, respectively. The data
490
+ // contains the DER encoding of the value. For example, the UNIX epoch would be
509
491
  // "19700101000000Z" for a GeneralizedTime and "700101000000Z" for a UTCTime.
510
492
  //
511
- // |ASN1_STRING|, when stored in an |ASN1_TYPE|, may also represent an element
512
- // with tag not directly supported by this library. See |ASN1_TYPE| for details.
493
+ // If |type| is |V_ASN1_SEQUENCE|, |V_ASN1_SET|, or |V_ASN1_OTHER|, the object
494
+ // represents a SEQUENCE, SET, or arbitrary ASN.1 value, respectively. Unlike
495
+ // the above cases, the data contains the DER encoding of the entire structure,
496
+ // including the header. If the value is explicitly or implicitly tagged, this
497
+ // too will be reflected in the data field. As this case handles unknown types,
498
+ // the contents are not checked when parsing or serializing.
499
+ //
500
+ // Other values of |type| do not represent a valid ASN.1 value, though
501
+ // default-constructed objects may set |type| to -1. Such objects cannot be
502
+ // serialized.
513
503
  //
514
504
  // |ASN1_STRING| additionally has the following typedefs: |ASN1_BIT_STRING|,
515
505
  // |ASN1_BMPSTRING|, |ASN1_ENUMERATED|, |ASN1_GENERALIZEDTIME|,
@@ -526,15 +516,14 @@ DECLARE_ASN1_ITEM(ASN1_FBOOLEAN)
526
516
  // |ASN1_STRING_length|.
527
517
  //
528
518
  // If a function returns an |ASN1_STRING| where the typedef or ASN.1 structure
529
- // implies constraints on the type field, callers may assume that the type field
530
- // is correct. However, if a function takes an |ASN1_STRING| as input, callers
531
- // must ensure the type field matches. These invariants are not captured by the
532
- // C type system and may not be checked at runtime. For example, callers may
533
- // assume the output of |X509_get0_serialNumber| has type |V_ASN1_INTEGER| or
534
- // |V_ASN1_NEG_INTEGER|. Callers must not pass a string of type
535
- // |V_ASN1_OCTET_STRING| to |X509_set_serialNumber|. Doing so may break
536
- // invariants on the |X509| object and break the |X509_get0_serialNumber|
537
- // invariant.
519
+ // implies constraints on |type|, callers may assume that |type| is correct.
520
+ // However, if a function takes an |ASN1_STRING| as input, callers must ensure
521
+ // |type| matches. These invariants are not captured by the C type system and
522
+ // may not be checked at runtime. For example, callers may assume the output of
523
+ // |X509_get0_serialNumber| has type |V_ASN1_INTEGER| or |V_ASN1_NEG_INTEGER|.
524
+ // Callers must not pass a string of type |V_ASN1_OCTET_STRING| to
525
+ // |X509_set_serialNumber|. Doing so may break invariants on the |X509| object
526
+ // and break the |X509_get0_serialNumber| invariant.
538
527
  //
539
528
  // TODO(https://crbug.com/boringssl/445): This is very unfriendly. Getting the
540
529
  // type field wrong should not cause memory errors, but it may do strange
@@ -605,8 +594,11 @@ OPENSSL_EXPORT int ASN1_STRING_length(const ASN1_STRING *str);
605
594
  OPENSSL_EXPORT int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b);
606
595
 
607
596
  // ASN1_STRING_set sets the contents of |str| to a copy of |len| bytes from
608
- // |data|. It returns one on success and zero on error.
609
- OPENSSL_EXPORT int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len);
597
+ // |data|. It returns one on success and zero on error. If |data| is NULL, it
598
+ // updates the length and allocates the buffer as needed, but does not
599
+ // initialize the contents.
600
+ OPENSSL_EXPORT int ASN1_STRING_set(ASN1_STRING *str, const void *data,
601
+ ossl_ssize_t len);
610
602
 
611
603
  // ASN1_STRING_set0 sets the contents of |str| to |len| bytes from |data|. It
612
604
  // takes ownership of |data|, which must have been allocated with
@@ -638,10 +630,7 @@ OPENSSL_EXPORT void ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *str);
638
630
 
639
631
  // The following functions parse up to |len| bytes from |*inp| as a
640
632
  // DER-encoded ASN.1 value of the corresponding type, as described in
641
- // |d2i_SAMPLE_with_reuse|.
642
- //
643
- // TODO(https://crbug.com/boringssl/354): This function currently also accepts
644
- // BER, but this will be removed in the future.
633
+ // |d2i_SAMPLE|.
645
634
  OPENSSL_EXPORT ASN1_BMPSTRING *d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **out,
646
635
  const uint8_t **inp,
647
636
  long len);
@@ -830,7 +819,7 @@ OPENSSL_EXPORT ASN1_STRING *DIRECTORYSTRING_new(void);
830
819
  OPENSSL_EXPORT void DIRECTORYSTRING_free(ASN1_STRING *str);
831
820
 
832
821
  // d2i_DIRECTORYSTRING parses up to |len| bytes from |*inp| as a DER-encoded
833
- // X.509 DirectoryString (RFC 5280), as described in |d2i_SAMPLE_with_reuse|.
822
+ // X.509 DirectoryString (RFC 5280), as described in |d2i_SAMPLE|.
834
823
  //
835
824
  // TODO(https://crbug.com/boringssl/354): This function currently also accepts
836
825
  // BER, but this will be removed in the future.
@@ -863,7 +852,7 @@ OPENSSL_EXPORT ASN1_STRING *DISPLAYTEXT_new(void);
863
852
  OPENSSL_EXPORT void DISPLAYTEXT_free(ASN1_STRING *str);
864
853
 
865
854
  // d2i_DISPLAYTEXT parses up to |len| bytes from |*inp| as a DER-encoded X.509
866
- // DisplayText (RFC 5280), as described in |d2i_SAMPLE_with_reuse|.
855
+ // DisplayText (RFC 5280), as described in |d2i_SAMPLE|.
867
856
  //
868
857
  // TODO(https://crbug.com/boringssl/354): This function currently also accepts
869
858
  // BER, but this will be removed in the future.
@@ -924,10 +913,7 @@ OPENSSL_EXPORT ASN1_BIT_STRING *ASN1_BIT_STRING_new(void);
924
913
  OPENSSL_EXPORT void ASN1_BIT_STRING_free(ASN1_BIT_STRING *str);
925
914
 
926
915
  // d2i_ASN1_BIT_STRING parses up to |len| bytes from |*inp| as a DER-encoded
927
- // ASN.1 BIT STRING, as described in |d2i_SAMPLE_with_reuse|.
928
- //
929
- // TODO(https://crbug.com/boringssl/354): This function currently also accepts
930
- // BER, but this will be removed in the future.
916
+ // ASN.1 BIT STRING, as described in |d2i_SAMPLE|.
931
917
  OPENSSL_EXPORT ASN1_BIT_STRING *d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **out,
932
918
  const uint8_t **inp,
933
919
  long len);
@@ -939,11 +925,7 @@ OPENSSL_EXPORT int i2d_ASN1_BIT_STRING(const ASN1_BIT_STRING *in,
939
925
 
940
926
  // c2i_ASN1_BIT_STRING decodes |len| bytes from |*inp| as the contents of a
941
927
  // DER-encoded BIT STRING, excluding the tag and length. It behaves like
942
- // |d2i_SAMPLE_with_reuse| except, on success, it always consumes all |len|
943
- // bytes.
944
- //
945
- // TODO(https://crbug.com/boringssl/354): This function currently also accepts
946
- // BER, but this will be removed in the future.
928
+ // |d2i_SAMPLE| except, on success, it always consumes all |len| bytes.
947
929
  OPENSSL_EXPORT ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **out,
948
930
  const uint8_t **inp,
949
931
  long len);
@@ -983,7 +965,8 @@ OPENSSL_EXPORT int ASN1_BIT_STRING_num_bytes(const ASN1_BIT_STRING *str,
983
965
  // TODO(davidben): Maybe it should? Wrapping a byte string in a bit string is a
984
966
  // common use case.
985
967
  OPENSSL_EXPORT int ASN1_BIT_STRING_set(ASN1_BIT_STRING *str,
986
- const unsigned char *d, int length);
968
+ const unsigned char *d,
969
+ ossl_ssize_t length);
987
970
 
988
971
  // ASN1_BIT_STRING_set_bit sets bit |n| of |str| to one if |value| is non-zero
989
972
  // and zero if |value| is zero, resizing |str| as needed. It then truncates
@@ -1014,6 +997,12 @@ OPENSSL_EXPORT int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *str,
1014
997
  // |V_ASN1_INTEGER| or |V_ASN1_ENUMERATED|, while negative values have a type of
1015
998
  // |V_ASN1_NEG_INTEGER| or |V_ASN1_NEG_ENUMERATED|. Note this differs from DER's
1016
999
  // two's complement representation.
1000
+ //
1001
+ // The data in the |ASN1_STRING| may not have leading zeros. Note this means
1002
+ // zero is represented as the empty string. Parsing functions will never return
1003
+ // invalid representations. If an invalid input is constructed, the marshaling
1004
+ // functions will skip leading zeros, however other functions, such as
1005
+ // |ASN1_INTEGER_cmp| or |ASN1_INTEGER_get|, may not return the correct result.
1017
1006
 
1018
1007
  DEFINE_STACK_OF(ASN1_INTEGER)
1019
1008
 
@@ -1028,10 +1017,7 @@ OPENSSL_EXPORT void ASN1_INTEGER_free(ASN1_INTEGER *str);
1028
1017
  OPENSSL_EXPORT ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x);
1029
1018
 
1030
1019
  // d2i_ASN1_INTEGER parses up to |len| bytes from |*inp| as a DER-encoded
1031
- // ASN.1 INTEGER, as described in |d2i_SAMPLE_with_reuse|.
1032
- //
1033
- // TODO(https://crbug.com/boringssl/354): This function currently also accepts
1034
- // BER, but this will be removed in the future.
1020
+ // ASN.1 INTEGER, as described in |d2i_SAMPLE|.
1035
1021
  OPENSSL_EXPORT ASN1_INTEGER *d2i_ASN1_INTEGER(ASN1_INTEGER **out,
1036
1022
  const uint8_t **inp, long len);
1037
1023
 
@@ -1041,11 +1027,7 @@ OPENSSL_EXPORT int i2d_ASN1_INTEGER(const ASN1_INTEGER *in, uint8_t **outp);
1041
1027
 
1042
1028
  // c2i_ASN1_INTEGER decodes |len| bytes from |*inp| as the contents of a
1043
1029
  // DER-encoded INTEGER, excluding the tag and length. It behaves like
1044
- // |d2i_SAMPLE_with_reuse| except, on success, it always consumes all |len|
1045
- // bytes.
1046
- //
1047
- // TODO(https://crbug.com/boringssl/354): This function currently also accepts
1048
- // some invalid inputs, but this will be removed in the future.
1030
+ // |d2i_SAMPLE| except, on success, it always consumes all |len| bytes.
1049
1031
  OPENSSL_EXPORT ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **in,
1050
1032
  const uint8_t **outp, long len);
1051
1033
 
@@ -1068,17 +1050,24 @@ OPENSSL_EXPORT int i2c_ASN1_INTEGER(const ASN1_INTEGER *in, uint8_t **outp);
1068
1050
  // |ASN1_INTEGER*|.
1069
1051
  DECLARE_ASN1_ITEM(ASN1_INTEGER)
1070
1052
 
1071
- // ASN1_INTEGER_set sets |a| to an INTEGER with value |v|. It returns one on
1072
- // success and zero on error.
1073
- OPENSSL_EXPORT int ASN1_INTEGER_set(ASN1_INTEGER *a, long v);
1074
-
1075
1053
  // ASN1_INTEGER_set_uint64 sets |a| to an INTEGER with value |v|. It returns one
1076
1054
  // on success and zero on error.
1077
1055
  OPENSSL_EXPORT int ASN1_INTEGER_set_uint64(ASN1_INTEGER *out, uint64_t v);
1078
1056
 
1079
- // ASN1_INTEGER_get returns the value of |a| as a |long|, or -1 if |a| is out of
1080
- // range or the wrong type.
1081
- OPENSSL_EXPORT long ASN1_INTEGER_get(const ASN1_INTEGER *a);
1057
+ // ASN1_INTEGER_set_int64 sets |a| to an INTEGER with value |v|. It returns one
1058
+ // on success and zero on error.
1059
+ OPENSSL_EXPORT int ASN1_INTEGER_set_int64(ASN1_INTEGER *out, int64_t v);
1060
+
1061
+ // ASN1_INTEGER_get_uint64 converts |a| to a |uint64_t|. On success, it returns
1062
+ // one and sets |*out| to the result. If |a| did not fit or has the wrong type,
1063
+ // it returns zero.
1064
+ OPENSSL_EXPORT int ASN1_INTEGER_get_uint64(uint64_t *out,
1065
+ const ASN1_INTEGER *a);
1066
+
1067
+ // ASN1_INTEGER_get_int64 converts |a| to a |int64_t|. On success, it returns
1068
+ // one and sets |*out| to the result. If |a| did not fit or has the wrong type,
1069
+ // it returns zero.
1070
+ OPENSSL_EXPORT int ASN1_INTEGER_get_int64(int64_t *out, const ASN1_INTEGER *a);
1082
1071
 
1083
1072
  // BN_to_ASN1_INTEGER sets |ai| to an INTEGER with value |bn| and returns |ai|
1084
1073
  // on success or NULL or error. If |ai| is NULL, it returns a newly-allocated
@@ -1106,10 +1095,7 @@ OPENSSL_EXPORT ASN1_ENUMERATED *ASN1_ENUMERATED_new(void);
1106
1095
  OPENSSL_EXPORT void ASN1_ENUMERATED_free(ASN1_ENUMERATED *str);
1107
1096
 
1108
1097
  // d2i_ASN1_ENUMERATED parses up to |len| bytes from |*inp| as a DER-encoded
1109
- // ASN.1 ENUMERATED, as described in |d2i_SAMPLE_with_reuse|.
1110
- //
1111
- // TODO(https://crbug.com/boringssl/354): This function currently also accepts
1112
- // BER, but this will be removed in the future.
1098
+ // ASN.1 ENUMERATED, as described in |d2i_SAMPLE|.
1113
1099
  OPENSSL_EXPORT ASN1_ENUMERATED *d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **out,
1114
1100
  const uint8_t **inp,
1115
1101
  long len);
@@ -1123,18 +1109,30 @@ OPENSSL_EXPORT int i2d_ASN1_ENUMERATED(const ASN1_ENUMERATED *in,
1123
1109
  // |ASN1_ENUMERATED*|.
1124
1110
  DECLARE_ASN1_ITEM(ASN1_ENUMERATED)
1125
1111
 
1126
- // ASN1_ENUMERATED_set sets |a| to an ENUMERATED with value |v|. It returns one
1127
- // on success and zero on error.
1128
- OPENSSL_EXPORT int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v);
1112
+ // ASN1_ENUMERATED_set_uint64 sets |a| to an ENUMERATED with value |v|. It
1113
+ // returns one on success and zero on error.
1114
+ OPENSSL_EXPORT int ASN1_ENUMERATED_set_uint64(ASN1_ENUMERATED *out, uint64_t v);
1129
1115
 
1130
- // ASN1_ENUMERATED_get returns the value of |a| as a |long|, or -1 if |a| is out
1131
- // of range or the wrong type.
1132
- OPENSSL_EXPORT long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a);
1116
+ // ASN1_ENUMERATED_set_int64 sets |a| to an ENUMERATED with value |v|. It
1117
+ // returns one on success and zero on error.
1118
+ OPENSSL_EXPORT int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *out, int64_t v);
1119
+
1120
+ // ASN1_ENUMERATED_get_uint64 converts |a| to a |uint64_t|. On success, it
1121
+ // returns one and sets |*out| to the result. If |a| did not fit or has the
1122
+ // wrong type, it returns zero.
1123
+ OPENSSL_EXPORT int ASN1_ENUMERATED_get_uint64(uint64_t *out,
1124
+ const ASN1_ENUMERATED *a);
1125
+
1126
+ // ASN1_ENUMERATED_get_int64 converts |a| to a |int64_t|. On success, it
1127
+ // returns one and sets |*out| to the result. If |a| did not fit or has the
1128
+ // wrong type, it returns zero.
1129
+ OPENSSL_EXPORT int ASN1_ENUMERATED_get_int64(int64_t *out,
1130
+ const ASN1_ENUMERATED *a);
1133
1131
 
1134
1132
  // BN_to_ASN1_ENUMERATED sets |ai| to an ENUMERATED with value |bn| and returns
1135
1133
  // |ai| on success or NULL or error. If |ai| is NULL, it returns a
1136
- // newly-allocated |ASN1_INTEGER| on success instead, which the caller must
1137
- // release with |ASN1_INTEGER_free|.
1134
+ // newly-allocated |ASN1_ENUMERATED| on success instead, which the caller must
1135
+ // release with |ASN1_ENUMERATED_free|.
1138
1136
  OPENSSL_EXPORT ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn,
1139
1137
  ASN1_ENUMERATED *ai);
1140
1138
 
@@ -1172,7 +1170,7 @@ OPENSSL_EXPORT ASN1_UTCTIME *ASN1_UTCTIME_new(void);
1172
1170
  OPENSSL_EXPORT void ASN1_UTCTIME_free(ASN1_UTCTIME *str);
1173
1171
 
1174
1172
  // d2i_ASN1_UTCTIME parses up to |len| bytes from |*inp| as a DER-encoded
1175
- // ASN.1 UTCTime, as described in |d2i_SAMPLE_with_reuse|.
1173
+ // ASN.1 UTCTime, as described in |d2i_SAMPLE|.
1176
1174
  //
1177
1175
  // TODO(https://crbug.com/boringssl/354): This function currently also accepts
1178
1176
  // BER, but this will be removed in the future.
@@ -1190,20 +1188,23 @@ DECLARE_ASN1_ITEM(ASN1_UTCTIME)
1190
1188
  // ASN1_UTCTIME_check returns one if |a| is a valid UTCTime and zero otherwise.
1191
1189
  OPENSSL_EXPORT int ASN1_UTCTIME_check(const ASN1_UTCTIME *a);
1192
1190
 
1193
- // ASN1_UTCTIME_set represents |t| as a UTCTime and writes the result to |s|. It
1194
- // returns |s| on success and NULL on error. If |s| is NULL, it returns a
1195
- // newly-allocated |ASN1_UTCTIME| instead.
1191
+ // ASN1_UTCTIME_set represents |posix_time| as a UTCTime and writes the result
1192
+ // to |s|. It returns |s| on success and NULL on error. If |s| is NULL, it
1193
+ // returns a newly-allocated |ASN1_UTCTIME| instead.
1196
1194
  //
1197
1195
  // Note this function may fail if the time is out of range for UTCTime.
1198
- OPENSSL_EXPORT ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t);
1196
+ OPENSSL_EXPORT ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s,
1197
+ int64_t posix_time);
1199
1198
 
1200
- // ASN1_UTCTIME_adj adds |offset_day| days and |offset_sec| seconds to |t| and
1201
- // writes the result to |s| as a UTCTime. It returns |s| on success and NULL on
1202
- // error. If |s| is NULL, it returns a newly-allocated |ASN1_UTCTIME| instead.
1199
+ // ASN1_UTCTIME_adj adds |offset_day| days and |offset_sec| seconds to
1200
+ // |posix_time| and writes the result to |s| as a UTCTime. It returns |s| on
1201
+ // success and NULL on error. If |s| is NULL, it returns a newly-allocated
1202
+ // |ASN1_UTCTIME| instead.
1203
1203
  //
1204
1204
  // Note this function may fail if the time overflows or is out of range for
1205
1205
  // UTCTime.
1206
- OPENSSL_EXPORT ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t,
1206
+ OPENSSL_EXPORT ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s,
1207
+ int64_t posix_time,
1207
1208
  int offset_day, long offset_sec);
1208
1209
 
1209
1210
  // ASN1_UTCTIME_set_string sets |s| to a UTCTime whose contents are a copy of
@@ -1226,10 +1227,7 @@ OPENSSL_EXPORT ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_new(void);
1226
1227
  OPENSSL_EXPORT void ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *str);
1227
1228
 
1228
1229
  // d2i_ASN1_GENERALIZEDTIME parses up to |len| bytes from |*inp| as a
1229
- // DER-encoded ASN.1 GeneralizedTime, as described in |d2i_SAMPLE_with_reuse|.
1230
- //
1231
- // TODO(https://crbug.com/boringssl/354): This function currently also accepts
1232
- // BER, but this will be removed in the future.
1230
+ // DER-encoded ASN.1 GeneralizedTime, as described in |d2i_SAMPLE|.
1233
1231
  OPENSSL_EXPORT ASN1_GENERALIZEDTIME *d2i_ASN1_GENERALIZEDTIME(
1234
1232
  ASN1_GENERALIZEDTIME **out, const uint8_t **inp, long len);
1235
1233
 
@@ -1246,23 +1244,24 @@ DECLARE_ASN1_ITEM(ASN1_GENERALIZEDTIME)
1246
1244
  // zero otherwise.
1247
1245
  OPENSSL_EXPORT int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a);
1248
1246
 
1249
- // ASN1_GENERALIZEDTIME_set represents |t| as a GeneralizedTime and writes the
1250
- // result to |s|. It returns |s| on success and NULL on error. If |s| is NULL,
1251
- // it returns a newly-allocated |ASN1_GENERALIZEDTIME| instead.
1247
+ // ASN1_GENERALIZEDTIME_set represents |posix_time| as a GeneralizedTime and
1248
+ // writes the result to |s|. It returns |s| on success and NULL on error. If |s|
1249
+ // is NULL, it returns a newly-allocated |ASN1_GENERALIZEDTIME| instead.
1252
1250
  //
1253
1251
  // Note this function may fail if the time is out of range for GeneralizedTime.
1254
1252
  OPENSSL_EXPORT ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(
1255
- ASN1_GENERALIZEDTIME *s, time_t t);
1253
+ ASN1_GENERALIZEDTIME *s, int64_t posix_time);
1256
1254
 
1257
1255
  // ASN1_GENERALIZEDTIME_adj adds |offset_day| days and |offset_sec| seconds to
1258
- // |t| and writes the result to |s| as a GeneralizedTime. It returns |s| on
1259
- // success and NULL on error. If |s| is NULL, it returns a newly-allocated
1260
- // |ASN1_GENERALIZEDTIME| instead.
1256
+ // |posix_time| and writes the result to |s| as a GeneralizedTime. It returns
1257
+ // |s| on success and NULL on error. If |s| is NULL, it returns a
1258
+ // newly-allocated |ASN1_GENERALIZEDTIME| instead.
1261
1259
  //
1262
1260
  // Note this function may fail if the time overflows or is out of range for
1263
1261
  // GeneralizedTime.
1264
1262
  OPENSSL_EXPORT ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(
1265
- ASN1_GENERALIZEDTIME *s, time_t t, int offset_day, long offset_sec);
1263
+ ASN1_GENERALIZEDTIME *s, int64_t posix_time, int offset_day,
1264
+ long offset_sec);
1266
1265
 
1267
1266
  // ASN1_GENERALIZEDTIME_set_string sets |s| to a GeneralizedTime whose contents
1268
1267
  // are a copy of |str|. It returns one on success and zero on error or if |str|
@@ -1284,7 +1283,7 @@ OPENSSL_EXPORT ASN1_TIME *ASN1_TIME_new(void);
1284
1283
  OPENSSL_EXPORT void ASN1_TIME_free(ASN1_TIME *str);
1285
1284
 
1286
1285
  // d2i_ASN1_TIME parses up to |len| bytes from |*inp| as a DER-encoded X.509
1287
- // Time (RFC 5280), as described in |d2i_SAMPLE_with_reuse|.
1286
+ // Time (RFC 5280), as described in |d2i_SAMPLE|.
1288
1287
  //
1289
1288
  // TODO(https://crbug.com/boringssl/354): This function currently also accepts
1290
1289
  // BER, but this will be removed in the future.
@@ -1312,24 +1311,29 @@ DECLARE_ASN1_ITEM(ASN1_TIME)
1312
1311
  OPENSSL_EXPORT int ASN1_TIME_diff(int *out_days, int *out_seconds,
1313
1312
  const ASN1_TIME *from, const ASN1_TIME *to);
1314
1313
 
1315
- // ASN1_TIME_set represents |t| as a GeneralizedTime or UTCTime and writes
1316
- // the result to |s|. As in RFC 5280, section 4.1.2.5, it uses UTCTime when the
1317
- // time fits and GeneralizedTime otherwise. It returns |s| on success and NULL
1318
- // on error. If |s| is NULL, it returns a newly-allocated |ASN1_TIME| instead.
1314
+ // ASN1_TIME_set_posix represents |posix_time| as a GeneralizedTime or UTCTime
1315
+ // and writes the result to |s|. As in RFC 5280, section 4.1.2.5, it uses
1316
+ // UTCTime when the time fits and GeneralizedTime otherwise. It returns |s| on
1317
+ // success and NULL on error. If |s| is NULL, it returns a newly-allocated
1318
+ // |ASN1_TIME| instead.
1319
1319
  //
1320
1320
  // Note this function may fail if the time is out of range for GeneralizedTime.
1321
- OPENSSL_EXPORT ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t);
1321
+ OPENSSL_EXPORT ASN1_TIME *ASN1_TIME_set_posix(ASN1_TIME *s, int64_t posix_time);
1322
+
1323
+ // ASN1_TIME_set is exactly the same as |ASN1_TIME_set_posix| but with a
1324
+ // time_t as input for compatibility.
1325
+ OPENSSL_EXPORT ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t time);
1322
1326
 
1323
1327
  // ASN1_TIME_adj adds |offset_day| days and |offset_sec| seconds to
1324
- // |t| and writes the result to |s|. As in RFC 5280, section 4.1.2.5, it uses
1325
- // UTCTime when the time fits and GeneralizedTime otherwise. It returns |s| on
1326
- // success and NULL on error. If |s| is NULL, it returns a newly-allocated
1327
- // |ASN1_GENERALIZEDTIME| instead.
1328
+ // |posix_time| and writes the result to |s|. As in RFC 5280, section 4.1.2.5,
1329
+ // it uses UTCTime when the time fits and GeneralizedTime otherwise. It returns
1330
+ // |s| on success and NULL on error. If |s| is NULL, it returns a
1331
+ // newly-allocated |ASN1_GENERALIZEDTIME| instead.
1328
1332
  //
1329
1333
  // Note this function may fail if the time overflows or is out of range for
1330
1334
  // GeneralizedTime.
1331
- OPENSSL_EXPORT ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, int offset_day,
1332
- long offset_sec);
1335
+ OPENSSL_EXPORT ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, int64_t posix_time,
1336
+ int offset_day, long offset_sec);
1333
1337
 
1334
1338
  // ASN1_TIME_check returns one if |t| is a valid UTCTime or GeneralizedTime, and
1335
1339
  // zero otherwise. |t|'s type determines which check is performed. This
@@ -1349,6 +1353,15 @@ OPENSSL_EXPORT ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(
1349
1353
  // GeneralizedTime. If |str| is neither, it returns zero.
1350
1354
  OPENSSL_EXPORT int ASN1_TIME_set_string(ASN1_TIME *s, const char *str);
1351
1355
 
1356
+ // ASN1_TIME_to_time_t converts |t| to a time_t value in |out|. On
1357
+ // success, one is returned. On failure zero is returned. This function
1358
+ // will fail if the time can not be represented in a time_t.
1359
+ OPENSSL_EXPORT int ASN1_TIME_to_time_t(const ASN1_TIME *t, time_t *out);
1360
+
1361
+ // ASN1_TIME_to_posix converts |t| to a POSIX time value in |out|. On
1362
+ // success, one is returned. On failure zero is returned.
1363
+ OPENSSL_EXPORT int ASN1_TIME_to_posix(const ASN1_TIME *t, int64_t *out);
1364
+
1352
1365
  // TODO(davidben): Expand and document function prototypes generated in macros.
1353
1366
 
1354
1367
 
@@ -1368,9 +1381,6 @@ OPENSSL_EXPORT void ASN1_NULL_free(ASN1_NULL *null);
1368
1381
 
1369
1382
  // d2i_ASN1_NULL parses a DER-encoded ASN.1 NULL value from up to |len| bytes
1370
1383
  // at |*inp|, as described in |d2i_SAMPLE|.
1371
- //
1372
- // TODO(https://crbug.com/boringssl/354): This function currently also accepts
1373
- // BER, but this will be removed in the future.
1374
1384
  OPENSSL_EXPORT ASN1_NULL *d2i_ASN1_NULL(ASN1_NULL **out, const uint8_t **inp,
1375
1385
  long len);
1376
1386
 
@@ -1405,7 +1415,7 @@ DEFINE_STACK_OF(ASN1_OBJECT)
1405
1415
  // TODO(davidben): Should we just ignore all those parameters? NIDs and names
1406
1416
  // are only relevant for |ASN1_OBJECT|s in the obj.h table.
1407
1417
  OPENSSL_EXPORT ASN1_OBJECT *ASN1_OBJECT_create(int nid, const uint8_t *data,
1408
- int len, const char *sn,
1418
+ size_t len, const char *sn,
1409
1419
  const char *ln);
1410
1420
 
1411
1421
  // ASN1_OBJECT_free releases memory associated with |a|. If |a| is a static
@@ -1413,21 +1423,17 @@ OPENSSL_EXPORT ASN1_OBJECT *ASN1_OBJECT_create(int nid, const uint8_t *data,
1413
1423
  OPENSSL_EXPORT void ASN1_OBJECT_free(ASN1_OBJECT *a);
1414
1424
 
1415
1425
  // d2i_ASN1_OBJECT parses a DER-encoded ASN.1 OBJECT IDENTIFIER from up to |len|
1416
- // bytes at |*inp|, as described in |d2i_SAMPLE_with_reuse|.
1417
- //
1418
- // TODO(https://crbug.com/boringssl/354): This function currently also accepts
1419
- // BER, but this will be removed in the future.
1426
+ // bytes at |*inp|, as described in |d2i_SAMPLE|.
1420
1427
  OPENSSL_EXPORT ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **out,
1421
1428
  const uint8_t **inp, long len);
1422
1429
 
1423
1430
  // i2d_ASN1_OBJECT marshals |in| as a DER-encoded ASN.1 OBJECT IDENTIFIER, as
1424
1431
  // described in |i2d_SAMPLE|.
1425
- OPENSSL_EXPORT int i2d_ASN1_OBJECT(const ASN1_OBJECT *a, uint8_t **outp);
1432
+ OPENSSL_EXPORT int i2d_ASN1_OBJECT(const ASN1_OBJECT *in, uint8_t **outp);
1426
1433
 
1427
1434
  // c2i_ASN1_OBJECT decodes |len| bytes from |*inp| as the contents of a
1428
1435
  // DER-encoded OBJECT IDENTIFIER, excluding the tag and length. It behaves like
1429
- // |d2i_SAMPLE_with_reuse| except, on success, it always consumes all |len|
1430
- // bytes.
1436
+ // |d2i_SAMPLE| except, on success, it always consumes all |len| bytes.
1431
1437
  OPENSSL_EXPORT ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **out,
1432
1438
  const uint8_t **inp, long len);
1433
1439
 
@@ -1469,15 +1475,14 @@ DECLARE_ASN1_ITEM(ASN1_OBJECT)
1469
1475
  // |ASN1_BOOLEAN|.
1470
1476
  //
1471
1477
  // If |type| is |V_ASN1_SEQUENCE|, |V_ASN1_SET|, or |V_ASN1_OTHER|, the tag is
1472
- // SEQUENCE, SET, or some non-universal tag, respectively. |value| is an
1473
- // |ASN1_STRING| containing the entire element, including the tag and length.
1474
- // The |ASN1_STRING|'s |type| field matches the containing |ASN1_TYPE|'s |type|.
1475
- //
1476
- // Other positive values of |type|, up to |V_ASN1_MAX_UNIVERSAL|, correspond to
1477
- // universal primitive tags not directly supported by this library. |value| is
1478
- // an |ASN1_STRING| containing the body of the element, excluding the tag
1479
- // and length. The |ASN1_STRING|'s |type| field matches the containing
1480
- // |ASN1_TYPE|'s |type|.
1478
+ // SEQUENCE, SET, or some arbitrary tag, respectively. |value| uses the
1479
+ // corresponding |ASN1_STRING| representation. Although any type may be
1480
+ // represented in |V_ASN1_OTHER|, the parser will always return the more
1481
+ // specific encoding when available.
1482
+ //
1483
+ // Other values of |type| do not represent a valid ASN.1 value, though
1484
+ // default-constructed objects may set |type| to -1. Such objects cannot be
1485
+ // serialized.
1481
1486
  struct asn1_type_st {
1482
1487
  int type;
1483
1488
  union {
@@ -1517,10 +1522,10 @@ OPENSSL_EXPORT ASN1_TYPE *ASN1_TYPE_new(void);
1517
1522
  OPENSSL_EXPORT void ASN1_TYPE_free(ASN1_TYPE *a);
1518
1523
 
1519
1524
  // d2i_ASN1_TYPE parses up to |len| bytes from |*inp| as an ASN.1 value of any
1520
- // type, as described in |d2i_SAMPLE_with_reuse|. Note this function only
1521
- // validates primitive, universal types supported by this library. Values of
1522
- // type |V_ASN1_SEQUENCE|, |V_ASN1_SET|, |V_ASN1_OTHER|, or an unsupported
1523
- // primitive type must be validated by the caller when interpreting.
1525
+ // type, as described in |d2i_SAMPLE|. Note this function only validates
1526
+ // primitive, universal types supported by this library. Values of type
1527
+ // |V_ASN1_SEQUENCE|, |V_ASN1_SET|, |V_ASN1_OTHER|, or an unsupported primitive
1528
+ // type must be validated by the caller when interpreting.
1524
1529
  //
1525
1530
  // TODO(https://crbug.com/boringssl/354): This function currently also accepts
1526
1531
  // BER, but this will be removed in the future.
@@ -1564,9 +1569,9 @@ OPENSSL_EXPORT int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b);
1564
1569
  typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY;
1565
1570
 
1566
1571
  // d2i_ASN1_SEQUENCE_ANY parses up to |len| bytes from |*inp| as a DER-encoded
1567
- // ASN.1 SEQUENCE OF ANY structure, as described in |d2i_SAMPLE_with_reuse|. The
1568
- // resulting |ASN1_SEQUENCE_ANY| owns its contents and thus must be released
1569
- // with |sk_ASN1_TYPE_pop_free| and |ASN1_TYPE_free|, not |sk_ASN1_TYPE_free|.
1572
+ // ASN.1 SEQUENCE OF ANY structure, as described in |d2i_SAMPLE|. The resulting
1573
+ // |ASN1_SEQUENCE_ANY| owns its contents and thus must be released with
1574
+ // |sk_ASN1_TYPE_pop_free| and |ASN1_TYPE_free|, not |sk_ASN1_TYPE_free|.
1570
1575
  //
1571
1576
  // TODO(https://crbug.com/boringssl/354): This function currently also accepts
1572
1577
  // BER, but this will be removed in the future.
@@ -1580,7 +1585,7 @@ OPENSSL_EXPORT int i2d_ASN1_SEQUENCE_ANY(const ASN1_SEQUENCE_ANY *in,
1580
1585
  uint8_t **outp);
1581
1586
 
1582
1587
  // d2i_ASN1_SET_ANY parses up to |len| bytes from |*inp| as a DER-encoded ASN.1
1583
- // SET OF ANY structure, as described in |d2i_SAMPLE_with_reuse|. The resulting
1588
+ // SET OF ANY structure, as described in |d2i_SAMPLE|. The resulting
1584
1589
  // |ASN1_SEQUENCE_ANY| owns its contents and thus must be released with
1585
1590
  // |sk_ASN1_TYPE_pop_free| and |ASN1_TYPE_free|, not |sk_ASN1_TYPE_free|.
1586
1591
  //
@@ -1620,6 +1625,8 @@ OPENSSL_EXPORT int ASN1_TIME_print(BIO *out, const ASN1_TIME *a);
1620
1625
  // replaced with '.'.
1621
1626
  OPENSSL_EXPORT int ASN1_STRING_print(BIO *out, const ASN1_STRING *str);
1622
1627
 
1628
+ // The following flags must not collide with |XN_FLAG_*|.
1629
+
1623
1630
  // ASN1_STRFLGS_ESC_2253 causes characters to be escaped as in RFC 2253, section
1624
1631
  // 2.4.
1625
1632
  #define ASN1_STRFLGS_ESC_2253 1
@@ -1727,13 +1734,11 @@ OPENSSL_EXPORT int i2t_ASN1_OBJECT(char *buf, int buf_len,
1727
1734
  // |*out_length|, |*out_tag|, and |*out_class| to the element's length, tag
1728
1735
  // number, and tag class, respectively,
1729
1736
  //
1730
- // Unlike OpenSSL, this function does not support indefinite-length elements.
1737
+ // Unlike OpenSSL, this function only supports DER. Indefinite and non-minimal
1738
+ // lengths are rejected.
1731
1739
  //
1732
1740
  // This function is difficult to use correctly. Use |CBS_get_asn1| and related
1733
1741
  // functions from bytestring.h.
1734
- //
1735
- // TODO(https://crbug.com/boringssl/354): Remove support for non-minimal
1736
- // lengths.
1737
1742
  OPENSSL_EXPORT int ASN1_get_object(const unsigned char **inp, long *out_length,
1738
1743
  int *out_tag, int *out_class, long max_len);
1739
1744
 
@@ -1809,15 +1814,6 @@ OPENSSL_EXPORT int ASN1_object_size(int constructed, int length, int tag);
1809
1814
 
1810
1815
  // Deprecated functions.
1811
1816
 
1812
- // ASN1_PRINTABLE_type interprets |len| bytes from |s| as a Latin-1 string. It
1813
- // returns the first of |V_ASN1_PRINTABLESTRING|, |V_ASN1_IA5STRING|, or
1814
- // |V_ASN1_T61STRING| that can represent every character. If |len| is negative,
1815
- // |strlen(s)| is used instead.
1816
- //
1817
- // TODO(davidben): Remove this once all copies of Conscrypt have been updated
1818
- // past https://github.com/google/conscrypt/pull/1032.
1819
- OPENSSL_EXPORT int ASN1_PRINTABLE_type(const unsigned char *s, int len);
1820
-
1821
1817
  // ASN1_STRING_set_default_mask does nothing.
1822
1818
  OPENSSL_EXPORT void ASN1_STRING_set_default_mask(unsigned long mask);
1823
1819
 
@@ -1899,7 +1895,7 @@ OPENSSL_EXPORT void ASN1_PRINTABLE_free(ASN1_STRING *str);
1899
1895
 
1900
1896
  // d2i_ASN1_PRINTABLE parses up to |len| bytes from |*inp| as a DER-encoded
1901
1897
  // CHOICE of an ad-hoc subset of string-like types, as described in
1902
- // |d2i_SAMPLE_with_reuse|.
1898
+ // |d2i_SAMPLE|.
1903
1899
  //
1904
1900
  // Do not use this. Despite, the name it has no connection to PrintableString or
1905
1901
  // printable characters. See https://crbug.com/boringssl/412.
@@ -1922,6 +1918,32 @@ OPENSSL_EXPORT int i2d_ASN1_PRINTABLE(const ASN1_STRING *in, uint8_t **outp);
1922
1918
  // printable characters. See https://crbug.com/boringssl/412.
1923
1919
  DECLARE_ASN1_ITEM(ASN1_PRINTABLE)
1924
1920
 
1921
+ // ASN1_INTEGER_set sets |a| to an INTEGER with value |v|. It returns one on
1922
+ // success and zero on error.
1923
+ //
1924
+ // Use |ASN1_INTEGER_set_uint64| and |ASN1_INTEGER_set_int64| instead.
1925
+ OPENSSL_EXPORT int ASN1_INTEGER_set(ASN1_INTEGER *a, long v);
1926
+
1927
+ // ASN1_ENUMERATED_set sets |a| to an ENUMERATED with value |v|. It returns one
1928
+ // on success and zero on error.
1929
+ //
1930
+ // Use |ASN1_ENUMERATED_set_uint64| and |ASN1_ENUMERATED_set_int64| instead.
1931
+ OPENSSL_EXPORT int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v);
1932
+
1933
+ // ASN1_INTEGER_get returns the value of |a| as a |long|, or -1 if |a| is out of
1934
+ // range or the wrong type.
1935
+ //
1936
+ // WARNING: This function's return value cannot distinguish errors from -1.
1937
+ // Use |ASN1_INTEGER_get_uint64| and |ASN1_INTEGER_get_int64| instead.
1938
+ OPENSSL_EXPORT long ASN1_INTEGER_get(const ASN1_INTEGER *a);
1939
+
1940
+ // ASN1_ENUMERATED_get returns the value of |a| as a |long|, or -1 if |a| is out
1941
+ // of range or the wrong type.
1942
+ //
1943
+ // WARNING: This function's return value cannot distinguish errors from -1.
1944
+ // Use |ASN1_ENUMERATED_get_uint64| and |ASN1_ENUMERATED_get_int64| instead.
1945
+ OPENSSL_EXPORT long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a);
1946
+
1925
1947
 
1926
1948
  #if defined(__cplusplus)
1927
1949
  } // extern C
@@ -2035,5 +2057,7 @@ BSSL_NAMESPACE_END
2035
2057
  #define ASN1_R_NESTED_TOO_DEEP 192
2036
2058
  #define ASN1_R_BAD_TEMPLATE 193
2037
2059
  #define ASN1_R_INVALID_BIT_STRING_PADDING 194
2060
+ #define ASN1_R_WRONG_INTEGER_TYPE 195
2061
+ #define ASN1_R_INVALID_INTEGER 196
2038
2062
 
2039
- #endif
2063
+ #endif // OPENSSL_HEADER_ASN1_H