grpc 1.84.0 → 1.85.0.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1004) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +40 -27
  3. data/include/grpc/event_engine/memory_allocator.h +1 -0
  4. data/include/grpc/grpc.h +3 -0
  5. data/include/grpc/grpc_security_constants.h +2 -0
  6. data/include/grpc/impl/channel_arg_names.h +4 -0
  7. data/src/core/call/call_filters.h +10 -10
  8. data/src/core/{lib/security/authorization → call}/evaluate_args.cc +22 -1
  9. data/src/core/{lib/security/authorization → call}/evaluate_args.h +19 -5
  10. data/src/core/call/filter_fusion.h +15 -15
  11. data/src/core/call/interception_chain.h +3 -3
  12. data/src/core/call/metadata_batch.cc +1 -0
  13. data/src/core/call/metadata_batch.h +45 -33
  14. data/src/core/call/parsed_metadata.h +3 -3
  15. data/src/core/call/request_buffer.cc +6 -6
  16. data/src/core/call/request_buffer.h +1 -1
  17. data/src/core/channelz/channel_trace.cc +5 -5
  18. data/src/core/channelz/channel_trace.h +1 -1
  19. data/src/core/channelz/channelz.cc +9 -9
  20. data/src/core/channelz/channelz.h +12 -12
  21. data/src/core/channelz/channelz_registry.cc +10 -10
  22. data/src/core/channelz/ztrace_collector.h +5 -5
  23. data/src/core/client_channel/client_channel.cc +4 -4
  24. data/src/core/client_channel/client_channel_filter.cc +14 -14
  25. data/src/core/client_channel/global_subchannel_pool.cc +4 -4
  26. data/src/core/client_channel/subchannel.cc +24 -23
  27. data/src/core/client_channel/subchannel_stream_client.cc +5 -5
  28. data/src/core/credentials/call/external/aws_external_account_credentials.cc +7 -7
  29. data/src/core/credentials/call/external/aws_request_signer.cc +16 -0
  30. data/src/core/credentials/call/external/external_account_credentials.cc +4 -4
  31. data/src/core/credentials/call/regional_access_boundary_fetcher.cc +9 -9
  32. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +4 -4
  33. data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -3
  34. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +1 -1
  35. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +9 -9
  36. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +1 -1
  37. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +6 -6
  38. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
  39. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +4 -4
  40. data/src/core/credentials/transport/tls/ssl_utils.cc +10 -0
  41. data/src/core/credentials/transport/tls/tls_security_connector.cc +10 -10
  42. data/src/core/credentials/transport/tls/tls_security_connector.h +6 -6
  43. data/src/core/credentials/transport/tls/tls_utils.h +9 -0
  44. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +1 -1
  45. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  46. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
  47. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
  48. data/src/core/ext/filters/http/message_compress/compression_filter.cc +15 -0
  49. data/src/core/ext/filters/rbac/rbac_filter.h +1 -1
  50. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +5 -5
  51. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +30 -21
  52. data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -11
  53. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +14 -11
  54. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  55. data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -4
  56. data/src/core/ext/transport/chttp2/transport/frame.h +9 -0
  57. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -9
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -2
  59. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +16 -18
  60. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +2 -1
  61. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +277 -189
  62. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +40 -17
  63. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +12 -24
  64. data/src/core/ext/transport/chttp2/transport/http2_transport.h +3 -29
  65. data/src/core/ext/transport/chttp2/transport/internal.h +2 -2
  66. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
  67. data/src/core/ext/transport/chttp2/transport/read_context.h +96 -3
  68. data/src/core/ext/transport/chttp2/transport/reclaimer.cc +32 -0
  69. data/src/core/ext/transport/chttp2/transport/reclaimer.h +64 -0
  70. data/src/core/ext/transport/chttp2/transport/security_frame.h +8 -8
  71. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +17 -9
  72. data/src/core/ext/transport/chttp2/transport/write_cycle.h +23 -3
  73. data/src/core/ext/transport/inproc/inproc_transport.cc +5 -5
  74. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb.h +137 -73
  75. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.c +45 -25
  76. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb.h +6 -6
  77. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.c +4 -4
  78. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.h +5 -5
  79. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb.h +46 -26
  80. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.c +17 -14
  81. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.h +5 -5
  82. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb.h +5 -5
  83. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.c +3 -3
  84. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.h +5 -5
  85. data/src/core/ext/upb-gen/grpc/health/v1/health.upb.h +329 -0
  86. data/src/core/ext/upb-gen/grpc/health/v1/health.upb_minitable.c +128 -0
  87. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/health/v1/health.upb_minitable.h +8 -5
  88. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb.h +5 -5
  89. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.c +3 -3
  90. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.h +5 -5
  91. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb.h +185 -23
  92. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.c +20 -12
  93. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.h +5 -5
  94. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb.h +58 -42
  95. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.c +17 -12
  96. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.h +5 -5
  97. data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +567 -549
  98. data/src/core/ext/upbdefs-gen/grpc/lookup/v1/rls_config.upbdefs.c +182 -0
  99. data/src/core/ext/upbdefs-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upbdefs.h +14 -14
  100. data/src/core/filter/ext_proc/ext_proc_filter.cc +1603 -46
  101. data/src/core/filter/ext_proc/ext_proc_filter.h +55 -22
  102. data/src/core/filter/ext_proc/ext_proc_messages.cc +106 -51
  103. data/src/core/filter/ext_proc/ext_proc_messages.h +36 -9
  104. data/src/core/handshaker/handshaker.cc +4 -4
  105. data/src/core/handshaker/http_connect/http_connect_client_handshaker.cc +3 -3
  106. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +10 -10
  107. data/src/core/handshaker/security/secure_endpoint.cc +13 -13
  108. data/src/core/handshaker/security/security_handshaker.cc +6 -6
  109. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
  110. data/src/core/lib/channel/channel_args.cc +20 -0
  111. data/src/core/lib/channel/channel_args.h +17 -17
  112. data/src/core/lib/channel/promise_based_filter.cc +2 -2
  113. data/src/core/lib/channel/promise_based_filter.h +66 -27
  114. data/src/core/lib/debug/trace_flags.cc +2 -0
  115. data/src/core/lib/debug/trace_flags.h +1 -0
  116. data/src/core/lib/event_engine/ares_resolver.cc +14 -14
  117. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +7 -7
  118. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +4 -4
  119. data/src/core/lib/event_engine/default_event_engine.cc +5 -5
  120. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +9 -9
  121. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +16 -14
  122. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +6 -6
  123. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -3
  124. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1 -1
  125. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +7 -7
  126. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +17 -17
  127. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +3 -3
  128. data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
  129. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
  130. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
  131. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -1
  132. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  133. data/src/core/lib/event_engine/thread_pool/thread_count.h +3 -3
  134. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +50 -21
  135. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +3 -3
  136. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +3 -3
  137. data/src/core/lib/event_engine/windows/windows_engine.cc +15 -15
  138. data/src/core/lib/event_engine/windows/windows_listener.cc +6 -6
  139. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +6 -6
  140. data/src/core/lib/experiments/experiments.cc +48 -0
  141. data/src/core/lib/experiments/experiments.h +24 -0
  142. data/src/core/lib/iomgr/buffer_list.cc +3 -3
  143. data/src/core/lib/iomgr/buffer_list.h +1 -1
  144. data/src/core/lib/iomgr/combiner.cc +0 -1
  145. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  146. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
  147. data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
  148. data/src/core/lib/iomgr/tcp_posix.cc +7 -7
  149. data/src/core/lib/promise/activity.cc +1 -1
  150. data/src/core/lib/promise/activity.h +1 -1
  151. data/src/core/lib/promise/arena_promise.h +7 -7
  152. data/src/core/lib/promise/detail/promise_factory.h +8 -8
  153. data/src/core/lib/promise/detail/promise_like.h +4 -4
  154. data/src/core/lib/promise/inter_activity_latch.h +6 -6
  155. data/src/core/lib/promise/inter_activity_pipe.h +1 -1
  156. data/src/core/lib/promise/observable.h +3 -3
  157. data/src/core/lib/promise/party.cc +1 -1
  158. data/src/core/lib/promise/try_seq.h +2 -2
  159. data/src/core/lib/resource_quota/arena.h +3 -3
  160. data/src/core/lib/resource_quota/memory_quota.cc +16 -16
  161. data/src/core/lib/resource_quota/memory_quota.h +1 -1
  162. data/src/core/lib/resource_quota/thread_quota.cc +3 -3
  163. data/src/core/lib/security/authorization/audit_logging.cc +5 -5
  164. data/src/core/lib/security/authorization/authorization_engine.h +1 -1
  165. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
  166. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  167. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  168. data/src/core/lib/security/authorization/matchers.h +1 -1
  169. data/src/core/lib/surface/call.cc +8 -7
  170. data/src/core/lib/surface/call.h +3 -3
  171. data/src/core/lib/surface/call_utils.h +4 -0
  172. data/src/core/lib/surface/channel.cc +1 -1
  173. data/src/core/lib/surface/channel.h +1 -1
  174. data/src/core/lib/surface/channel_init.cc +1 -1
  175. data/src/core/lib/surface/init.cc +7 -7
  176. data/src/core/lib/surface/lame_client.cc +1 -1
  177. data/src/core/lib/surface/legacy_channel.cc +2 -2
  178. data/src/core/lib/surface/version.cc +1 -1
  179. data/src/core/lib/transport/transport_framing_endpoint_extension.h +3 -3
  180. data/src/core/load_balancing/autosharding/autosharding.cc +931 -0
  181. data/src/core/load_balancing/autosharding/autosharding.h +78 -0
  182. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -2
  183. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  184. data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -1
  185. data/src/core/load_balancing/health_check_client.cc +7 -7
  186. data/src/core/load_balancing/lb_policy.cc +1 -1
  187. data/src/core/load_balancing/oob_backend_metric.cc +5 -5
  188. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
  189. data/src/core/load_balancing/ring_hash/ring_hash.cc +109 -37
  190. data/src/core/load_balancing/rls/rls.cc +23 -17
  191. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +10 -10
  192. data/src/core/load_balancing/xds/cds.cc +6 -5
  193. data/src/core/load_balancing/xds/xds_cluster_impl.cc +2 -2
  194. data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
  195. data/src/core/mitigation_engine/mitigation_engine.h +28 -4
  196. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
  197. data/src/core/resolver/dns/dns_resolver.cc +7 -7
  198. data/src/core/resolver/fake/fake_resolver.cc +5 -5
  199. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +38 -30
  200. data/src/core/server/server.cc +30 -30
  201. data/src/core/server/server.h +4 -3
  202. data/src/core/server/server_config_selector_filter.cc +3 -3
  203. data/src/core/server/xds_server_config_fetcher_legacy.cc +15 -15
  204. data/src/core/telemetry/default_tcp_tracer.cc +1 -1
  205. data/src/core/telemetry/instrument.cc +30 -16
  206. data/src/core/telemetry/instrument.h +3 -3
  207. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
  208. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -4
  209. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +2 -2
  210. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  211. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
  212. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
  213. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +3 -3
  214. data/src/core/tsi/ssl_transport_security.cc +46 -13
  215. data/src/core/tsi/ssl_transport_security.h +7 -0
  216. data/src/core/tsi/ssl_transport_security_utils.cc +16 -6
  217. data/src/core/util/event_log.cc +3 -3
  218. data/src/core/util/http_client/httpcli.cc +5 -5
  219. data/src/core/util/http_client/httpcli.h +1 -1
  220. data/src/core/util/json/json_object_loader.cc +7 -0
  221. data/src/core/util/json/json_object_loader.h +17 -2
  222. data/src/core/util/latent_see.cc +123 -36
  223. data/src/core/util/latent_see.h +14 -1
  224. data/src/core/util/mpscq.cc +1 -1
  225. data/src/core/util/notification.h +4 -4
  226. data/src/core/util/sync.h +20 -6
  227. data/src/core/util/table.h +20 -22
  228. data/src/core/util/work_serializer.cc +2 -2
  229. data/src/core/xds/grpc/blackboard.cc +4 -3
  230. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  231. data/src/core/xds/grpc/streaming_call_promise_wrapper.cc +181 -0
  232. data/src/core/xds/grpc/streaming_call_promise_wrapper.h +213 -0
  233. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +2 -2
  234. data/src/core/xds/grpc/xds_client_grpc.cc +8 -8
  235. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  236. data/src/core/xds/grpc/xds_endpoint.cc +1 -1
  237. data/src/core/xds/grpc/xds_endpoint_parser.cc +11 -0
  238. data/src/core/xds/grpc/xds_grpc_service_parser.cc +12 -10
  239. data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +17 -14
  240. data/src/core/xds/grpc/xds_matcher.h +2 -2
  241. data/src/core/xds/grpc/xds_transport_grpc.cc +125 -85
  242. data/src/core/xds/grpc/xds_transport_grpc.h +19 -4
  243. data/src/core/xds/xds_client/lrs_client.cc +22 -19
  244. data/src/core/xds/xds_client/xds_client.cc +19 -16
  245. data/src/core/xds/xds_client/xds_transport.h +49 -3
  246. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  247. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  248. data/src/ruby/lib/grpc/version.rb +1 -1
  249. data/src/ruby/pb/README.md +1 -1
  250. data/src/ruby/pb/generate_proto_ruby.sh +1 -1
  251. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  252. data/third_party/abseil-cpp/absl/algorithm/container.h +345 -147
  253. data/third_party/abseil-cpp/absl/base/attributes.h +67 -44
  254. data/third_party/abseil-cpp/absl/base/call_once.h +1 -0
  255. data/third_party/abseil-cpp/absl/base/casts.cc +61 -0
  256. data/third_party/abseil-cpp/absl/base/casts.h +135 -2
  257. data/third_party/abseil-cpp/absl/base/config.h +63 -41
  258. data/third_party/abseil-cpp/absl/base/fast_type_id.h +30 -2
  259. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
  260. data/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
  261. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +6 -2
  262. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -4
  263. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
  264. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  265. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
  266. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +26 -24
  267. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +74 -29
  268. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -11
  269. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  270. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +5 -1
  271. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  272. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
  273. data/third_party/abseil-cpp/absl/base/macros.h +76 -37
  274. data/third_party/abseil-cpp/absl/base/nullability.h +5 -5
  275. data/third_party/abseil-cpp/absl/base/optimization.h +4 -5
  276. data/third_party/abseil-cpp/absl/base/options.h +46 -18
  277. data/third_party/abseil-cpp/absl/base/policy_checks.h +5 -5
  278. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  279. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  280. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +7 -2
  281. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  282. data/third_party/abseil-cpp/absl/container/btree_map.h +60 -10
  283. data/third_party/abseil-cpp/absl/container/btree_set.h +61 -15
  284. data/third_party/abseil-cpp/absl/container/fixed_array.h +19 -21
  285. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +49 -27
  286. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +50 -26
  287. data/third_party/abseil-cpp/absl/container/inlined_vector.h +42 -36
  288. data/third_party/abseil-cpp/absl/container/internal/btree.h +32 -24
  289. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +30 -22
  290. data/third_party/abseil-cpp/absl/container/internal/common.h +57 -5
  291. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  292. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +40 -36
  293. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +119 -39
  294. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +14 -2
  295. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +14 -22
  296. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +52 -52
  297. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +7 -7
  298. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +7 -7
  299. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +32 -40
  300. data/third_party/abseil-cpp/absl/container/internal/layout.h +13 -13
  301. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +95 -72
  302. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +633 -365
  303. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1016 -749
  304. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -1
  305. data/third_party/abseil-cpp/absl/container/node_hash_map.h +58 -35
  306. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +23 -6
  307. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
  308. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  309. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  310. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  311. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
  312. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +304 -188
  313. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
  314. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
  315. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  316. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
  317. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +15 -1
  318. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -1
  319. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +12 -1
  320. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
  321. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -11
  322. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  323. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
  324. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +6 -1
  325. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +14 -8
  326. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +48 -38
  327. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
  328. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +63 -118
  329. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +7 -47
  330. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  331. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +83 -149
  332. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
  333. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  334. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
  335. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  336. data/third_party/abseil-cpp/absl/flags/declare.h +9 -0
  337. data/third_party/abseil-cpp/absl/flags/flag.h +2 -1
  338. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
  339. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +19 -18
  340. data/third_party/abseil-cpp/absl/flags/internal/flag.h +33 -34
  341. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
  342. data/third_party/abseil-cpp/absl/flags/marshalling.cc +1 -16
  343. data/third_party/abseil-cpp/absl/flags/marshalling.h +2 -28
  344. data/third_party/abseil-cpp/absl/flags/reflection.cc +11 -7
  345. data/third_party/abseil-cpp/absl/flags/usage_config.cc +2 -2
  346. data/third_party/abseil-cpp/absl/functional/any_invocable.h +22 -19
  347. data/third_party/abseil-cpp/absl/functional/bind_front.h +7 -1
  348. data/third_party/abseil-cpp/absl/functional/function_ref.h +125 -20
  349. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +43 -31
  350. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  351. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +44 -6
  352. data/third_party/abseil-cpp/absl/hash/hash.h +1 -1
  353. data/third_party/abseil-cpp/absl/hash/internal/city.cc +39 -51
  354. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +379 -14
  355. data/third_party/abseil-cpp/absl/hash/internal/hash.h +457 -353
  356. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  357. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +2 -1
  358. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +4 -0
  359. data/third_party/abseil-cpp/absl/log/internal/check_op.h +128 -50
  360. data/third_party/abseil-cpp/absl/log/internal/conditions.h +38 -35
  361. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +108 -110
  362. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +10 -6
  363. data/third_party/abseil-cpp/absl/log/internal/log_message.h +19 -1
  364. data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
  365. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  366. data/third_party/abseil-cpp/absl/log/internal/proto.cc +13 -0
  367. data/third_party/abseil-cpp/absl/log/internal/strip.h +30 -31
  368. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  369. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  370. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +30 -30
  371. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
  372. data/third_party/abseil-cpp/absl/log/log.h +2 -2
  373. data/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
  374. data/third_party/abseil-cpp/absl/log/log_entry.h +2 -0
  375. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  376. data/third_party/abseil-cpp/absl/memory/memory.h +55 -5
  377. data/third_party/abseil-cpp/absl/meta/type_traits.h +161 -56
  378. data/third_party/abseil-cpp/absl/numeric/int128.h +41 -21
  379. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
  380. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
  381. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +32 -4
  382. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
  383. data/third_party/abseil-cpp/absl/random/beta_distribution.h +2 -2
  384. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  385. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  386. data/third_party/abseil-cpp/absl/random/distributions.h +17 -17
  387. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  388. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  389. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +2 -2
  390. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  391. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  392. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  393. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  394. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  395. data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -13
  396. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  397. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  398. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  399. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +5 -31
  400. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  401. data/third_party/abseil-cpp/absl/random/internal/traits.h +21 -0
  402. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  403. data/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
  404. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  405. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  406. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +30 -4
  407. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +225 -63
  408. data/third_party/abseil-cpp/absl/status/status.cc +66 -70
  409. data/third_party/abseil-cpp/absl/status/status.h +254 -23
  410. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  411. data/third_party/abseil-cpp/absl/status/statusor.h +117 -137
  412. data/third_party/abseil-cpp/absl/strings/ascii.h +10 -6
  413. data/third_party/abseil-cpp/absl/strings/cord.cc +41 -17
  414. data/third_party/abseil-cpp/absl/strings/cord.h +26 -17
  415. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  416. data/third_party/abseil-cpp/absl/strings/escaping.cc +305 -125
  417. data/third_party/abseil-cpp/absl/strings/escaping.h +12 -2
  418. data/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  419. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +2 -2
  420. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
  421. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +27 -21
  422. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +11 -19
  423. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  424. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  425. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  426. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +2 -24
  427. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -36
  428. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  429. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  430. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  431. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
  432. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +921 -231
  433. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -16
  434. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +16 -12
  435. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  436. data/third_party/abseil-cpp/absl/strings/numbers.cc +477 -8
  437. data/third_party/abseil-cpp/absl/strings/numbers.h +29 -12
  438. data/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
  439. data/third_party/abseil-cpp/absl/strings/str_cat.cc +96 -91
  440. data/third_party/abseil-cpp/absl/strings/str_cat.h +53 -13
  441. data/third_party/abseil-cpp/absl/strings/str_split.h +14 -9
  442. data/third_party/abseil-cpp/absl/strings/string_view.h +10 -716
  443. data/third_party/abseil-cpp/absl/strings/substitute.cc +24 -24
  444. data/third_party/abseil-cpp/absl/strings/substitute.h +2 -2
  445. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +1 -1
  446. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
  447. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +24 -3
  448. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
  449. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
  450. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  451. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +41 -29
  452. data/third_party/abseil-cpp/absl/synchronization/mutex.h +199 -94
  453. data/third_party/abseil-cpp/absl/synchronization/notification.cc +5 -5
  454. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  455. data/third_party/abseil-cpp/absl/time/clock.cc +29 -30
  456. data/third_party/abseil-cpp/absl/time/clock.h +3 -0
  457. data/third_party/abseil-cpp/absl/time/duration.cc +2 -2
  458. data/third_party/abseil-cpp/absl/time/format.cc +3 -10
  459. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
  460. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +131 -91
  461. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
  462. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
  463. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  464. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  465. data/third_party/abseil-cpp/absl/time/time.cc +4 -4
  466. data/third_party/abseil-cpp/absl/time/time.h +14 -13
  467. data/third_party/abseil-cpp/absl/types/compare.h +64 -63
  468. data/third_party/abseil-cpp/absl/types/internal/span.h +6 -6
  469. data/third_party/abseil-cpp/absl/types/optional.h +31 -4
  470. data/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
  471. data/third_party/{boringssl-with-bazel/crypto/x509/x_val.cc → abseil-cpp/absl/types/source_location.cc} +4 -14
  472. data/third_party/abseil-cpp/absl/types/source_location.h +172 -0
  473. data/third_party/abseil-cpp/absl/types/span.h +67 -38
  474. data/third_party/abseil-cpp/absl/types/variant.h +75 -18
  475. data/third_party/abseil-cpp/absl/utility/utility.h +112 -16
  476. data/third_party/boringssl-with-bazel/crypto/aes/aes.cc +3 -0
  477. data/third_party/boringssl-with-bazel/crypto/armv8_feature_parsing.h +67 -0
  478. data/third_party/boringssl-with-bazel/crypto/asn1/a_bitstr.cc +143 -105
  479. data/third_party/boringssl-with-bazel/crypto/asn1/a_bool.cc +5 -8
  480. data/third_party/boringssl-with-bazel/crypto/asn1/a_d2i_fp.cc +3 -3
  481. data/third_party/boringssl-with-bazel/crypto/asn1/a_dup.cc +6 -6
  482. data/third_party/boringssl-with-bazel/crypto/asn1/a_gentm.cc +33 -12
  483. data/third_party/boringssl-with-bazel/crypto/asn1/a_i2d_fp.cc +7 -6
  484. data/third_party/boringssl-with-bazel/crypto/asn1/a_int.cc +80 -52
  485. data/third_party/boringssl-with-bazel/crypto/asn1/a_mbstr.cc +7 -4
  486. data/third_party/boringssl-with-bazel/crypto/asn1/a_object.cc +70 -72
  487. data/third_party/boringssl-with-bazel/crypto/asn1/a_strex.cc +38 -42
  488. data/third_party/boringssl-with-bazel/crypto/asn1/a_strnid.cc +41 -39
  489. data/third_party/boringssl-with-bazel/crypto/asn1/a_time.cc +59 -35
  490. data/third_party/boringssl-with-bazel/crypto/asn1/a_type.cc +275 -15
  491. data/third_party/boringssl-with-bazel/crypto/asn1/a_utctm.cc +32 -13
  492. data/third_party/boringssl-with-bazel/crypto/asn1/asn1_lib.cc +128 -30
  493. data/third_party/boringssl-with-bazel/crypto/asn1/asn_pack.cc +10 -10
  494. data/third_party/boringssl-with-bazel/crypto/asn1/f_int.cc +1 -1
  495. data/third_party/boringssl-with-bazel/crypto/asn1/f_string.cc +1 -1
  496. data/third_party/boringssl-with-bazel/crypto/asn1/internal.h +261 -115
  497. data/third_party/boringssl-with-bazel/crypto/asn1/posix_time.cc +8 -5
  498. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_dec.cc +373 -725
  499. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_enc.cc +211 -526
  500. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_fre.cc +22 -19
  501. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_new.cc +26 -24
  502. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_typ.cc +19 -5
  503. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_utl.cc +47 -51
  504. data/third_party/boringssl-with-bazel/crypto/base64/base64.cc +14 -15
  505. data/third_party/boringssl-with-bazel/crypto/bcm_support.h +7 -29
  506. data/third_party/boringssl-with-bazel/crypto/bio/bio.cc +234 -176
  507. data/third_party/boringssl-with-bazel/crypto/bio/bio_mem.cc +72 -86
  508. data/third_party/boringssl-with-bazel/crypto/bio/connect.cc +153 -199
  509. data/third_party/boringssl-with-bazel/crypto/bio/errno.cc +3 -1
  510. data/third_party/boringssl-with-bazel/crypto/bio/fd.cc +56 -55
  511. data/third_party/boringssl-with-bazel/crypto/bio/file.cc +70 -78
  512. data/third_party/boringssl-with-bazel/crypto/bio/hexdump.cc +6 -4
  513. data/third_party/boringssl-with-bazel/crypto/bio/internal.h +69 -17
  514. data/third_party/boringssl-with-bazel/crypto/bio/pair.cc +117 -136
  515. data/third_party/boringssl-with-bazel/crypto/bio/printf.cc +1 -1
  516. data/third_party/boringssl-with-bazel/crypto/bio/socket.cc +116 -50
  517. data/third_party/boringssl-with-bazel/crypto/bio/socket_helper.cc +53 -5
  518. data/third_party/boringssl-with-bazel/crypto/blake2/blake2.cc +9 -5
  519. data/third_party/boringssl-with-bazel/crypto/bn/bn_asn1.cc +2 -2
  520. data/third_party/boringssl-with-bazel/crypto/bn/convert.cc +56 -70
  521. data/third_party/boringssl-with-bazel/crypto/bn/div.cc +102 -0
  522. data/third_party/boringssl-with-bazel/crypto/bn/exponentiation.cc +26 -42
  523. data/third_party/boringssl-with-bazel/crypto/bn/sqrt.cc +93 -0
  524. data/third_party/boringssl-with-bazel/crypto/buf/buf.cc +6 -5
  525. data/third_party/boringssl-with-bazel/crypto/bytestring/asn1_compat.cc +6 -5
  526. data/third_party/boringssl-with-bazel/crypto/bytestring/ber.cc +22 -20
  527. data/third_party/boringssl-with-bazel/crypto/bytestring/cbb.cc +119 -59
  528. data/third_party/boringssl-with-bazel/crypto/bytestring/cbs.cc +115 -31
  529. data/third_party/boringssl-with-bazel/crypto/bytestring/internal.h +79 -24
  530. data/third_party/boringssl-with-bazel/crypto/bytestring/unicode.cc +2 -2
  531. data/third_party/boringssl-with-bazel/crypto/chacha/chacha.cc +5 -3
  532. data/third_party/boringssl-with-bazel/crypto/chacha/internal.h +23 -22
  533. data/third_party/boringssl-with-bazel/crypto/cipher/derive_key.cc +14 -18
  534. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesctrhmac.cc +73 -58
  535. data/third_party/boringssl-with-bazel/crypto/cipher/e_aeseax.cc +132 -70
  536. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesgcmsiv.cc +390 -249
  537. data/third_party/boringssl-with-bazel/crypto/cipher/e_chacha20poly1305.cc +200 -137
  538. data/third_party/boringssl-with-bazel/crypto/cipher/e_des.cc +45 -29
  539. data/third_party/boringssl-with-bazel/crypto/cipher/e_null.cc +9 -5
  540. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc2.cc +43 -28
  541. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc4.cc +7 -5
  542. data/third_party/boringssl-with-bazel/crypto/cipher/e_tls.cc +250 -237
  543. data/third_party/boringssl-with-bazel/crypto/cipher/get_cipher.cc +12 -12
  544. data/third_party/boringssl-with-bazel/crypto/cipher/internal.h +59 -59
  545. data/third_party/boringssl-with-bazel/crypto/cipher/tls_cbc.cc +111 -111
  546. data/third_party/boringssl-with-bazel/crypto/cms/cms.cc +48 -42
  547. data/third_party/boringssl-with-bazel/crypto/conf/conf.cc +69 -63
  548. data/third_party/boringssl-with-bazel/crypto/conf/internal.h +11 -12
  549. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_apple.cc +8 -5
  550. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_fuchsia.cc +6 -1
  551. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_linux.cc +7 -1
  552. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_openbsd.cc +7 -21
  553. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_sysreg.cc +15 -41
  554. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_win.cc +16 -3
  555. data/third_party/boringssl-with-bazel/crypto/cpu_arm_freebsd.cc +4 -2
  556. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.cc +54 -31
  557. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.h +79 -101
  558. data/third_party/boringssl-with-bazel/crypto/cpu_intel.cc +51 -45
  559. data/third_party/boringssl-with-bazel/crypto/crypto.cc +26 -55
  560. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519.cc +28 -25
  561. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519_tables.h +6 -6
  562. data/third_party/boringssl-with-bazel/crypto/curve25519/internal.h +14 -15
  563. data/third_party/boringssl-with-bazel/crypto/curve25519/spake25519.cc +23 -20
  564. data/third_party/boringssl-with-bazel/crypto/des/des.cc +27 -19
  565. data/third_party/boringssl-with-bazel/crypto/des/internal.h +4 -9
  566. data/third_party/boringssl-with-bazel/crypto/dh/dh_asn1.cc +34 -49
  567. data/third_party/boringssl-with-bazel/crypto/dh/params.cc +44 -41
  568. data/third_party/boringssl-with-bazel/crypto/digest/digest_extra.cc +87 -40
  569. data/third_party/boringssl-with-bazel/crypto/dsa/dsa.cc +237 -260
  570. data/third_party/boringssl-with-bazel/crypto/dsa/dsa_asn1.cc +100 -173
  571. data/third_party/boringssl-with-bazel/crypto/dsa/internal.h +23 -21
  572. data/third_party/boringssl-with-bazel/crypto/ec/ec_asn1.cc +181 -209
  573. data/third_party/boringssl-with-bazel/crypto/ec/ec_derive.cc +26 -28
  574. data/third_party/boringssl-with-bazel/crypto/ec/hash_to_curve.cc +265 -174
  575. data/third_party/boringssl-with-bazel/crypto/ec/internal.h +54 -18
  576. data/third_party/boringssl-with-bazel/crypto/ecdh/ecdh.cc +7 -5
  577. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_asn1.cc +50 -70
  578. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  579. data/third_party/boringssl-with-bazel/crypto/engine/engine.cc +7 -7
  580. data/third_party/boringssl-with-bazel/crypto/err/err.cc +116 -105
  581. data/third_party/boringssl-with-bazel/crypto/err/internal.h +8 -21
  582. data/third_party/boringssl-with-bazel/crypto/evp/evp.cc +238 -166
  583. data/third_party/boringssl-with-bazel/crypto/evp/evp_asn1.cc +202 -234
  584. data/third_party/boringssl-with-bazel/crypto/evp/evp_ctx.cc +260 -159
  585. data/third_party/boringssl-with-bazel/crypto/evp/evp_kem.cc +82 -0
  586. data/third_party/boringssl-with-bazel/crypto/evp/internal.h +292 -137
  587. data/third_party/boringssl-with-bazel/crypto/evp/p_dh.cc +198 -25
  588. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa.cc +333 -0
  589. data/third_party/boringssl-with-bazel/crypto/evp/p_ec.cc +427 -42
  590. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519.cc +270 -14
  591. data/third_party/boringssl-with-bazel/crypto/evp/p_hkdf.cc +70 -102
  592. data/third_party/boringssl-with-bazel/crypto/evp/p_mldsa.cc +549 -0
  593. data/third_party/boringssl-with-bazel/crypto/evp/p_mlkem.cc +485 -0
  594. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa.cc +666 -158
  595. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519.cc +290 -28
  596. data/third_party/boringssl-with-bazel/crypto/evp/p_xwing.cc +273 -0
  597. data/third_party/boringssl-with-bazel/crypto/evp/pbkdf.cc +14 -7
  598. data/third_party/boringssl-with-bazel/crypto/evp/print.cc +34 -89
  599. data/third_party/boringssl-with-bazel/crypto/evp/scrypt.cc +23 -21
  600. data/third_party/boringssl-with-bazel/crypto/evp/sign.cc +23 -42
  601. data/third_party/boringssl-with-bazel/crypto/ex_data.cc +40 -41
  602. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes.cc.inc +34 -28
  603. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes_nohw.cc.inc +119 -121
  604. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cbc.cc.inc +16 -14
  605. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cfb.cc.inc +12 -10
  606. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ctr.cc.inc +7 -5
  607. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm.cc.inc +39 -29
  608. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm_nohw.cc.inc +15 -13
  609. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/internal.h +193 -177
  610. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -3
  611. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/mode_wrappers.cc.inc +7 -3
  612. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ofb.cc.inc +7 -5
  613. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm.cc +24 -19
  614. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm_interface.h +512 -384
  615. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/add.cc.inc +7 -5
  616. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +63 -44
  617. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bn.cc.inc +40 -37
  618. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bytes.cc.inc +27 -22
  619. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/cmp.cc.inc +9 -7
  620. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/ctx.cc.inc +62 -126
  621. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div.cc.inc +92 -167
  622. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div_extra.cc.inc +15 -12
  623. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/exponentiation.cc.inc +96 -93
  624. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd.cc.inc +73 -92
  625. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd_extra.cc.inc +59 -71
  626. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/generic.cc.inc +54 -57
  627. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/internal.h +333 -255
  628. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/jacobi.cc.inc +12 -19
  629. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery.cc.inc +80 -95
  630. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery_inv.cc.inc +53 -96
  631. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/mul.cc.inc +58 -419
  632. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/prime.cc.inc +164 -213
  633. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/random.cc.inc +27 -26
  634. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.cc.inc +12 -10
  635. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.h +47 -49
  636. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/shift.cc.inc +14 -17
  637. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/sqrt.cc.inc +19 -108
  638. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/aead.cc.inc +427 -105
  639. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/cipher.cc.inc +412 -212
  640. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aes.cc.inc +230 -225
  641. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aesccm.cc.inc +115 -84
  642. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/internal.h +374 -27
  643. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cmac/cmac.cc.inc +28 -23
  644. data/third_party/boringssl-with-bazel/crypto/fipsmodule/delocate.h +36 -40
  645. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/check.cc.inc +68 -78
  646. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/dh.cc.inc +154 -196
  647. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/internal.h +24 -24
  648. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digest.cc.inc +40 -69
  649. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digests.cc.inc +13 -7
  650. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/internal.h +13 -11
  651. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/md32_common.h +86 -81
  652. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digestsign/digestsign.cc.inc +38 -34
  653. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec.cc.inc +187 -196
  654. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_key.cc.inc +196 -154
  655. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_montgomery.cc.inc +65 -125
  656. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/felem.cc.inc +85 -22
  657. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/internal.h +281 -287
  658. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/oct.cc.inc +23 -22
  659. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256.cc.inc +514 -573
  660. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256_internal.h +193 -0
  661. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/scalar.cc.inc +44 -39
  662. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple.cc.inc +58 -90
  663. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple_mul.cc.inc +39 -34
  664. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/util.cc.inc +6 -3
  665. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/wnaf.cc.inc +23 -20
  666. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdh/ecdh.cc.inc +6 -3
  667. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +47 -37
  668. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/internal.h +5 -10
  669. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/internal.h +38 -0
  670. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/jitter.cc.inc +463 -0
  671. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  672. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hkdf/hkdf.cc.inc +8 -6
  673. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hmac/hmac.cc.inc +19 -16
  674. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/internal.h +41 -15
  675. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/keccak.cc.inc +172 -44
  676. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/fips_known_values.inc +5 -5
  677. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/mldsa.cc.inc +1632 -766
  678. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/fips_known_values.inc +5 -5
  679. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/mlkem.cc.inc +740 -436
  680. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  681. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/ctrdrbg.cc.inc +240 -53
  682. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/internal.h +41 -26
  683. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/rand.cc.inc +221 -218
  684. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/internal.h +64 -67
  685. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/padding.cc.inc +49 -57
  686. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa.cc.inc +247 -234
  687. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa_impl.cc.inc +392 -692
  688. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/fips.cc.inc +10 -10
  689. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/self_check.cc.inc +479 -449
  690. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/internal.h +34 -11
  691. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +46 -43
  692. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/internal.h +61 -70
  693. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha1.cc.inc +27 -13
  694. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha256.cc.inc +46 -30
  695. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha512.cc.inc +47 -47
  696. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/address.h +98 -73
  697. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.cc.inc +108 -98
  698. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.h +14 -24
  699. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.cc.inc +94 -91
  700. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.h +19 -31
  701. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/params.h +156 -56
  702. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +318 -132
  703. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.cc.inc +234 -81
  704. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.h +20 -34
  705. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.cc.inc +97 -96
  706. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.h +10 -20
  707. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/internal.h +2 -16
  708. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/kdf.cc.inc +26 -26
  709. data/third_party/boringssl-with-bazel/crypto/fuzzer_mode.cc +5 -5
  710. data/third_party/boringssl-with-bazel/crypto/hpke/hpke.cc +461 -97
  711. data/third_party/boringssl-with-bazel/crypto/hrss/hrss.cc +153 -149
  712. data/third_party/boringssl-with-bazel/crypto/hrss/internal.h +9 -13
  713. data/third_party/boringssl-with-bazel/crypto/internal.h +531 -394
  714. data/third_party/boringssl-with-bazel/crypto/kyber/internal.h +117 -12
  715. data/third_party/boringssl-with-bazel/crypto/kyber/kyber.cc +59 -58
  716. data/third_party/boringssl-with-bazel/crypto/lhash/internal.h +38 -37
  717. data/third_party/boringssl-with-bazel/crypto/lhash/lhash.cc +68 -65
  718. data/third_party/boringssl-with-bazel/crypto/md4/md4.cc +19 -6
  719. data/third_party/boringssl-with-bazel/crypto/md5/internal.h +6 -9
  720. data/third_party/boringssl-with-bazel/crypto/md5/md5.cc +18 -6
  721. data/third_party/boringssl-with-bazel/crypto/mem.cc +61 -65
  722. data/third_party/boringssl-with-bazel/crypto/mem_internal.h +671 -0
  723. data/third_party/boringssl-with-bazel/crypto/mldsa/mldsa.cc +238 -32
  724. data/third_party/boringssl-with-bazel/crypto/mlkem/mlkem.cc +21 -65
  725. data/third_party/boringssl-with-bazel/crypto/obj/obj.cc +132 -157
  726. data/third_party/boringssl-with-bazel/crypto/obj/obj_dat.h +79 -1
  727. data/third_party/boringssl-with-bazel/crypto/obj/obj_xref.cc +14 -11
  728. data/third_party/boringssl-with-bazel/crypto/params_internal.h +30 -0
  729. data/third_party/boringssl-with-bazel/crypto/pem/internal.h +20 -15
  730. data/third_party/boringssl-with-bazel/crypto/pem/pem_all.cc +20 -19
  731. data/third_party/boringssl-with-bazel/crypto/pem/pem_info.cc +72 -76
  732. data/third_party/boringssl-with-bazel/crypto/pem/pem_lib.cc +215 -217
  733. data/third_party/boringssl-with-bazel/crypto/pem/pem_oth.cc +6 -6
  734. data/third_party/boringssl-with-bazel/crypto/pem/pem_pk8.cc +13 -13
  735. data/third_party/boringssl-with-bazel/crypto/pem/pem_pkey.cc +11 -11
  736. data/third_party/boringssl-with-bazel/crypto/pkcs7/internal.h +12 -17
  737. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7.cc +29 -27
  738. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7_x509.cc +55 -49
  739. data/third_party/boringssl-with-bazel/crypto/pkcs8/internal.h +21 -26
  740. data/third_party/boringssl-with-bazel/crypto/pkcs8/p5_pbev2.cc +33 -31
  741. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8.cc +73 -81
  742. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8_x509.cc +139 -138
  743. data/third_party/boringssl-with-bazel/crypto/poly1305/internal.h +3 -7
  744. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305.cc +5 -4
  745. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_arm.cc +43 -47
  746. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_vec.cc +29 -26
  747. data/third_party/boringssl-with-bazel/crypto/pool/internal.h +64 -20
  748. data/third_party/boringssl-with-bazel/crypto/pool/pool.cc +177 -157
  749. data/third_party/boringssl-with-bazel/crypto/rand/deterministic.cc +9 -16
  750. data/third_party/boringssl-with-bazel/crypto/rand/fork_detect.cc +70 -42
  751. data/third_party/boringssl-with-bazel/crypto/rand/forkunsafe.cc +7 -7
  752. data/third_party/boringssl-with-bazel/crypto/rand/getentropy.cc +6 -13
  753. data/third_party/boringssl-with-bazel/crypto/rand/internal.h +16 -4
  754. data/third_party/boringssl-with-bazel/crypto/rand/ios.cc +4 -11
  755. data/third_party/boringssl-with-bazel/crypto/rand/rand.cc +11 -9
  756. data/third_party/boringssl-with-bazel/crypto/rand/trusty.cc +4 -11
  757. data/third_party/boringssl-with-bazel/crypto/rand/urandom.cc +16 -195
  758. data/third_party/boringssl-with-bazel/crypto/rand/windows.cc +12 -19
  759. data/third_party/boringssl-with-bazel/crypto/refcount.cc +7 -17
  760. data/third_party/boringssl-with-bazel/crypto/rsa/internal.h +22 -7
  761. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_asn1.cc +199 -78
  762. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_crypt.cc +49 -50
  763. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_extra.cc +11 -0
  764. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_print.cc +4 -6
  765. data/third_party/boringssl-with-bazel/crypto/sha/sha1.cc +3 -0
  766. data/third_party/boringssl-with-bazel/crypto/sha/sha256.cc +3 -1
  767. data/third_party/boringssl-with-bazel/crypto/sha/sha512.cc +6 -4
  768. data/third_party/boringssl-with-bazel/crypto/siphash/siphash.cc +2 -0
  769. data/third_party/boringssl-with-bazel/crypto/slhdsa/slhdsa.cc +43 -6
  770. data/third_party/boringssl-with-bazel/crypto/spake2plus/internal.h +31 -31
  771. data/third_party/boringssl-with-bazel/crypto/spake2plus/spake2plus.cc +1 -1
  772. data/third_party/boringssl-with-bazel/crypto/stack/stack.cc +89 -130
  773. data/third_party/boringssl-with-bazel/crypto/thread.cc +14 -14
  774. data/third_party/boringssl-with-bazel/crypto/thread_none.cc +10 -13
  775. data/third_party/boringssl-with-bazel/crypto/thread_pthread.cc +22 -35
  776. data/third_party/boringssl-with-bazel/crypto/thread_win.cc +29 -40
  777. data/third_party/boringssl-with-bazel/crypto/trust_token/internal.h +81 -88
  778. data/third_party/boringssl-with-bazel/crypto/trust_token/pmbtoken.cc +160 -144
  779. data/third_party/boringssl-with-bazel/crypto/trust_token/trust_token.cc +96 -80
  780. data/third_party/boringssl-with-bazel/crypto/trust_token/voprf.cc +90 -87
  781. data/third_party/boringssl-with-bazel/crypto/x509/a_digest.cc +5 -5
  782. data/third_party/boringssl-with-bazel/crypto/x509/a_sign.cc +51 -48
  783. data/third_party/boringssl-with-bazel/crypto/x509/a_verify.cc +30 -34
  784. data/third_party/boringssl-with-bazel/crypto/x509/algorithm.cc +47 -16
  785. data/third_party/boringssl-with-bazel/crypto/x509/asn1_gen.cc +41 -43
  786. data/third_party/boringssl-with-bazel/crypto/x509/by_dir.cc +183 -237
  787. data/third_party/boringssl-with-bazel/crypto/x509/by_file.cc +29 -30
  788. data/third_party/boringssl-with-bazel/crypto/x509/internal.h +276 -180
  789. data/third_party/boringssl-with-bazel/crypto/x509/name_print.cc +15 -13
  790. data/third_party/boringssl-with-bazel/crypto/x509/policy.cc +415 -525
  791. data/third_party/boringssl-with-bazel/crypto/x509/rsa_pss.cc +94 -271
  792. data/third_party/boringssl-with-bazel/crypto/x509/t_crl.cc +11 -8
  793. data/third_party/boringssl-with-bazel/crypto/x509/t_req.cc +26 -23
  794. data/third_party/boringssl-with-bazel/crypto/x509/t_x509.cc +26 -22
  795. data/third_party/boringssl-with-bazel/crypto/x509/t_x509a.cc +3 -1
  796. data/third_party/boringssl-with-bazel/crypto/x509/v3_akey.cc +69 -76
  797. data/third_party/boringssl-with-bazel/crypto/x509/v3_akeya.cc +2 -2
  798. data/third_party/boringssl-with-bazel/crypto/x509/v3_alt.cc +112 -69
  799. data/third_party/boringssl-with-bazel/crypto/x509/v3_bcons.cc +15 -14
  800. data/third_party/boringssl-with-bazel/crypto/x509/v3_bitst.cc +16 -18
  801. data/third_party/boringssl-with-bazel/crypto/x509/v3_conf.cc +62 -67
  802. data/third_party/boringssl-with-bazel/crypto/x509/v3_cpols.cc +143 -170
  803. data/third_party/boringssl-with-bazel/crypto/x509/v3_crld.cc +121 -165
  804. data/third_party/boringssl-with-bazel/crypto/x509/v3_enum.cc +13 -12
  805. data/third_party/boringssl-with-bazel/crypto/x509/v3_extku.cc +17 -34
  806. data/third_party/boringssl-with-bazel/crypto/x509/v3_genn.cc +20 -10
  807. data/third_party/boringssl-with-bazel/crypto/x509/v3_ia5.cc +22 -18
  808. data/third_party/boringssl-with-bazel/crypto/x509/v3_info.cc +45 -47
  809. data/third_party/boringssl-with-bazel/crypto/x509/v3_int.cc +35 -33
  810. data/third_party/boringssl-with-bazel/crypto/x509/v3_lib.cc +106 -61
  811. data/third_party/boringssl-with-bazel/crypto/x509/v3_ncons.cc +642 -358
  812. data/third_party/boringssl-with-bazel/crypto/x509/v3_ocsp.cc +25 -22
  813. data/third_party/boringssl-with-bazel/crypto/x509/v3_pcons.cc +15 -14
  814. data/third_party/boringssl-with-bazel/crypto/x509/v3_pmaps.cc +16 -15
  815. data/third_party/boringssl-with-bazel/crypto/x509/v3_prn.cc +6 -6
  816. data/third_party/boringssl-with-bazel/crypto/x509/v3_purp.cc +150 -137
  817. data/third_party/boringssl-with-bazel/crypto/x509/v3_skey.cc +23 -26
  818. data/third_party/boringssl-with-bazel/crypto/x509/v3_utl.cc +151 -178
  819. data/third_party/boringssl-with-bazel/crypto/x509/x509.cc +1 -1
  820. data/third_party/boringssl-with-bazel/crypto/x509/x509_att.cc +32 -30
  821. data/third_party/boringssl-with-bazel/crypto/x509/x509_cmp.cc +95 -88
  822. data/third_party/boringssl-with-bazel/crypto/x509/x509_d2.cc +9 -9
  823. data/third_party/boringssl-with-bazel/crypto/x509/x509_def.cc +6 -8
  824. data/third_party/boringssl-with-bazel/crypto/x509/x509_ext.cc +46 -24
  825. data/third_party/boringssl-with-bazel/crypto/x509/x509_lu.cc +211 -195
  826. data/third_party/boringssl-with-bazel/crypto/x509/x509_obj.cc +20 -16
  827. data/third_party/boringssl-with-bazel/crypto/x509/x509_req.cc +37 -46
  828. data/third_party/boringssl-with-bazel/crypto/x509/x509_set.cc +62 -90
  829. data/third_party/boringssl-with-bazel/crypto/x509/x509_trs.cc +18 -13
  830. data/third_party/boringssl-with-bazel/crypto/x509/x509_v3.cc +33 -33
  831. data/third_party/boringssl-with-bazel/crypto/x509/x509_vfy.cc +109 -110
  832. data/third_party/boringssl-with-bazel/crypto/x509/x509_vpm.cc +56 -47
  833. data/third_party/boringssl-with-bazel/crypto/x509/x509cset.cc +27 -40
  834. data/third_party/boringssl-with-bazel/crypto/x509/x509name.cc +77 -67
  835. data/third_party/boringssl-with-bazel/crypto/x509/x509rset.cc +5 -17
  836. data/third_party/boringssl-with-bazel/crypto/x509/x509spki.cc +13 -13
  837. data/third_party/boringssl-with-bazel/crypto/x509/x_algor.cc +131 -24
  838. data/third_party/boringssl-with-bazel/crypto/x509/x_all.cc +72 -39
  839. data/third_party/boringssl-with-bazel/crypto/x509/x_attrib.cc +10 -4
  840. data/third_party/boringssl-with-bazel/crypto/x509/x_crl.cc +77 -44
  841. data/third_party/boringssl-with-bazel/crypto/x509/x_exten.cc +6 -0
  842. data/third_party/boringssl-with-bazel/crypto/x509/x_name.cc +311 -383
  843. data/third_party/boringssl-with-bazel/crypto/x509/x_pubkey.cc +129 -82
  844. data/third_party/boringssl-with-bazel/crypto/x509/x_req.cc +11 -6
  845. data/third_party/boringssl-with-bazel/crypto/x509/x_sig.cc +4 -4
  846. data/third_party/boringssl-with-bazel/crypto/x509/x_spki.cc +11 -1
  847. data/third_party/boringssl-with-bazel/crypto/x509/x_x509.cc +285 -280
  848. data/third_party/boringssl-with-bazel/crypto/x509/x_x509a.cc +60 -60
  849. data/third_party/boringssl-with-bazel/crypto/xwing/xwing.cc +257 -0
  850. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +301 -0
  851. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +301 -0
  852. data/third_party/boringssl-with-bazel/gen/crypto/err_data.cc +526 -500
  853. data/third_party/boringssl-with-bazel/include/openssl/aead.h +286 -114
  854. data/third_party/boringssl-with-bazel/include/openssl/aes.h +43 -43
  855. data/third_party/boringssl-with-bazel/include/openssl/asm_base.h +29 -16
  856. data/third_party/boringssl-with-bazel/include/openssl/asn1.h +641 -631
  857. data/third_party/boringssl-with-bazel/include/openssl/asn1t.h +7 -9
  858. data/third_party/boringssl-with-bazel/include/openssl/base.h +34 -54
  859. data/third_party/boringssl-with-bazel/include/openssl/base64.h +30 -30
  860. data/third_party/boringssl-with-bazel/include/openssl/bio.h +373 -316
  861. data/third_party/boringssl-with-bazel/include/openssl/blake2.h +15 -11
  862. data/third_party/boringssl-with-bazel/include/openssl/blowfish.h +10 -3
  863. data/third_party/boringssl-with-bazel/include/openssl/bn.h +298 -306
  864. data/third_party/boringssl-with-bazel/include/openssl/buf.h +14 -14
  865. data/third_party/boringssl-with-bazel/include/openssl/bytestring.h +272 -207
  866. data/third_party/boringssl-with-bazel/include/openssl/cast.h +45 -8
  867. data/third_party/boringssl-with-bazel/include/openssl/chacha.h +3 -3
  868. data/third_party/boringssl-with-bazel/include/openssl/cipher.h +334 -152
  869. data/third_party/boringssl-with-bazel/include/openssl/cmac.h +13 -13
  870. data/third_party/boringssl-with-bazel/include/openssl/cms.h +35 -34
  871. data/third_party/boringssl-with-bazel/include/openssl/conf.h +15 -14
  872. data/third_party/boringssl-with-bazel/include/openssl/crypto.h +15 -13
  873. data/third_party/boringssl-with-bazel/include/openssl/ctrdrbg.h +49 -15
  874. data/third_party/boringssl-with-bazel/include/openssl/curve25519.h +24 -24
  875. data/third_party/boringssl-with-bazel/include/openssl/des.h +22 -16
  876. data/third_party/boringssl-with-bazel/include/openssl/dh.h +95 -95
  877. data/third_party/boringssl-with-bazel/include/openssl/digest.h +140 -71
  878. data/third_party/boringssl-with-bazel/include/openssl/dsa.h +101 -101
  879. data/third_party/boringssl-with-bazel/include/openssl/ec.h +143 -119
  880. data/third_party/boringssl-with-bazel/include/openssl/ec_key.h +97 -97
  881. data/third_party/boringssl-with-bazel/include/openssl/ecdh.h +9 -9
  882. data/third_party/boringssl-with-bazel/include/openssl/ecdsa.h +89 -46
  883. data/third_party/boringssl-with-bazel/include/openssl/engine.h +5 -5
  884. data/third_party/boringssl-with-bazel/include/openssl/err.h +73 -71
  885. data/third_party/boringssl-with-bazel/include/openssl/evp.h +824 -344
  886. data/third_party/boringssl-with-bazel/include/openssl/evp_errors.h +9 -2
  887. data/third_party/boringssl-with-bazel/include/openssl/ex_data.h +27 -32
  888. data/third_party/boringssl-with-bazel/include/openssl/hkdf.h +6 -6
  889. data/third_party/boringssl-with-bazel/include/openssl/hmac.h +31 -31
  890. data/third_party/boringssl-with-bazel/include/openssl/hpke.h +133 -117
  891. data/third_party/boringssl-with-bazel/include/openssl/hrss.h +14 -8
  892. data/third_party/boringssl-with-bazel/include/openssl/kdf.h +20 -19
  893. data/third_party/boringssl-with-bazel/include/openssl/lhash.h +4 -25
  894. data/third_party/boringssl-with-bazel/include/openssl/md4.h +14 -7
  895. data/third_party/boringssl-with-bazel/include/openssl/md5.h +7 -7
  896. data/third_party/boringssl-with-bazel/include/openssl/mem.h +38 -38
  897. data/third_party/boringssl-with-bazel/include/openssl/mldsa.h +380 -24
  898. data/third_party/boringssl-with-bazel/include/openssl/mlkem.h +43 -43
  899. data/third_party/boringssl-with-bazel/include/openssl/nid.h +1297 -2
  900. data/third_party/boringssl-with-bazel/include/openssl/obj.h +49 -49
  901. data/third_party/boringssl-with-bazel/include/openssl/opensslconf.h +30 -0
  902. data/third_party/boringssl-with-bazel/include/openssl/params.h +42 -0
  903. data/third_party/boringssl-with-bazel/include/openssl/pem.h +39 -30
  904. data/third_party/boringssl-with-bazel/include/openssl/pkcs7.h +40 -40
  905. data/third_party/boringssl-with-bazel/include/openssl/pkcs8.h +69 -63
  906. data/third_party/boringssl-with-bazel/include/openssl/poly1305.h +8 -5
  907. data/third_party/boringssl-with-bazel/include/openssl/pool.h +54 -25
  908. data/third_party/boringssl-with-bazel/include/openssl/posix_time.h +6 -6
  909. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols.h +7866 -0
  910. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_S.h +585 -0
  911. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_c.h +305 -0
  912. data/third_party/boringssl-with-bazel/include/openssl/rand.h +18 -18
  913. data/third_party/boringssl-with-bazel/include/openssl/rc4.h +4 -4
  914. data/third_party/boringssl-with-bazel/include/openssl/ripemd.h +15 -10
  915. data/third_party/boringssl-with-bazel/include/openssl/rsa.h +272 -235
  916. data/third_party/boringssl-with-bazel/include/openssl/service_indicator.h +4 -81
  917. data/third_party/boringssl-with-bazel/include/openssl/sha.h +43 -166
  918. data/third_party/boringssl-with-bazel/include/openssl/sha2.h +201 -0
  919. data/third_party/boringssl-with-bazel/include/openssl/slhdsa.h +100 -48
  920. data/third_party/boringssl-with-bazel/include/openssl/span.h +190 -75
  921. data/third_party/boringssl-with-bazel/include/openssl/ssl.h +2168 -1567
  922. data/third_party/boringssl-with-bazel/include/openssl/ssl3.h +11 -69
  923. data/third_party/boringssl-with-bazel/include/openssl/stack.h +135 -80
  924. data/third_party/boringssl-with-bazel/include/openssl/target.h +13 -1
  925. data/third_party/boringssl-with-bazel/include/openssl/thread.h +0 -10
  926. data/third_party/boringssl-with-bazel/include/openssl/tls1.h +31 -310
  927. data/third_party/boringssl-with-bazel/include/openssl/tls_prf.h +47 -0
  928. data/third_party/boringssl-with-bazel/include/openssl/trust_token.h +97 -92
  929. data/third_party/boringssl-with-bazel/include/openssl/type_check.h +1 -1
  930. data/third_party/boringssl-with-bazel/include/openssl/x509.h +1805 -1857
  931. data/third_party/boringssl-with-bazel/include/openssl/x509v3.h +1 -1
  932. data/third_party/boringssl-with-bazel/include/openssl/xwing.h +115 -0
  933. data/third_party/boringssl-with-bazel/ssl/bio_ssl.cc +24 -19
  934. data/third_party/boringssl-with-bazel/ssl/d1_both.cc +59 -57
  935. data/third_party/boringssl-with-bazel/ssl/d1_lib.cc +53 -42
  936. data/third_party/boringssl-with-bazel/ssl/d1_pkt.cc +4 -4
  937. data/third_party/boringssl-with-bazel/ssl/d1_srtp.cc +2 -2
  938. data/third_party/boringssl-with-bazel/ssl/dtls_method.cc +10 -10
  939. data/third_party/boringssl-with-bazel/ssl/dtls_record.cc +6 -6
  940. data/third_party/boringssl-with-bazel/ssl/encrypted_client_hello.cc +61 -71
  941. data/third_party/boringssl-with-bazel/ssl/extensions.cc +967 -366
  942. data/third_party/boringssl-with-bazel/ssl/handoff.cc +77 -38
  943. data/third_party/boringssl-with-bazel/ssl/handshake.cc +63 -30
  944. data/third_party/boringssl-with-bazel/ssl/handshake_client.cc +129 -85
  945. data/third_party/boringssl-with-bazel/ssl/handshake_server.cc +116 -68
  946. data/third_party/boringssl-with-bazel/ssl/internal.h +983 -1207
  947. data/third_party/boringssl-with-bazel/ssl/s3_both.cc +34 -29
  948. data/third_party/boringssl-with-bazel/ssl/s3_lib.cc +4 -3
  949. data/third_party/boringssl-with-bazel/ssl/s3_pkt.cc +12 -12
  950. data/third_party/boringssl-with-bazel/ssl/ssl_aead_ctx.cc +5 -5
  951. data/third_party/boringssl-with-bazel/ssl/ssl_asn1.cc +114 -59
  952. data/third_party/boringssl-with-bazel/ssl/ssl_buffer.cc +17 -18
  953. data/third_party/boringssl-with-bazel/ssl/ssl_cert.cc +99 -61
  954. data/third_party/boringssl-with-bazel/ssl/ssl_cipher.cc +143 -134
  955. data/third_party/boringssl-with-bazel/ssl/ssl_credential.cc +188 -90
  956. data/third_party/boringssl-with-bazel/ssl/ssl_file.cc +132 -225
  957. data/third_party/boringssl-with-bazel/ssl/ssl_key_share.cc +79 -7
  958. data/third_party/boringssl-with-bazel/ssl/ssl_lib.cc +698 -302
  959. data/third_party/boringssl-with-bazel/ssl/ssl_privkey.cc +102 -45
  960. data/third_party/boringssl-with-bazel/ssl/ssl_session.cc +117 -102
  961. data/third_party/boringssl-with-bazel/ssl/ssl_transcript.cc +3 -3
  962. data/third_party/boringssl-with-bazel/ssl/ssl_versions.cc +24 -24
  963. data/third_party/boringssl-with-bazel/ssl/ssl_x509.cc +184 -170
  964. data/third_party/boringssl-with-bazel/ssl/t1_enc.cc +12 -10
  965. data/third_party/boringssl-with-bazel/ssl/tls13_both.cc +86 -54
  966. data/third_party/boringssl-with-bazel/ssl/tls13_client.cc +176 -90
  967. data/third_party/boringssl-with-bazel/ssl/tls13_enc.cc +166 -112
  968. data/third_party/boringssl-with-bazel/ssl/tls13_server.cc +188 -97
  969. data/third_party/boringssl-with-bazel/ssl/tls_method.cc +23 -23
  970. data/third_party/boringssl-with-bazel/ssl/tls_record.cc +17 -14
  971. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  972. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  973. data/third_party/boringssl-with-bazel/third_party/fiat/curve25519_64_adx.h +37 -33
  974. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64.h +4 -93
  975. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64_msvc.h +4 -69
  976. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_32.br.c.inc +71 -0
  977. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_64.br.c.inc +84 -0
  978. data/third_party/boringssl-with-bazel/third_party/fiat/p256_point.br.c.inc +166 -0
  979. metadata +77 -52
  980. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -240
  981. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -56
  982. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +0 -157
  983. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +0 -72
  984. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -181
  985. data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -39
  986. data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +0 -106
  987. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -105
  988. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
  989. data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -257
  990. data/third_party/boringssl-with-bazel/crypto/evp/p_dh_asn1.cc +0 -142
  991. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa_asn1.cc +0 -279
  992. data/third_party/boringssl-with-bazel/crypto/evp/p_ec_asn1.cc +0 -286
  993. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519_asn1.cc +0 -225
  994. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa_asn1.cc +0 -198
  995. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519_asn1.cc +0 -237
  996. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p224-64.cc.inc +0 -1163
  997. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.cc.inc +0 -741
  998. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.h +0 -207
  999. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/blinding.cc.inc +0 -147
  1000. data/third_party/boringssl-with-bazel/crypto/rand/getrandom_fillin.h +0 -64
  1001. data/third_party/boringssl-with-bazel/crypto/rand/passive.cc +0 -178
  1002. data/third_party/boringssl-with-bazel/crypto/x509/ext_dat.h +0 -92
  1003. data/third_party/boringssl-with-bazel/include/openssl/bcm_public.h +0 -82
  1004. data/third_party/boringssl-with-bazel/include/openssl/experimental/kyber.h +0 -146
@@ -36,7 +36,7 @@ extern "C" {
36
36
  // particularly prone to behavior changes and API removals, as BoringSSL
37
37
  // iterates on these issues.
38
38
  //
39
- // Use the new |CBS| and |CBB| library in <openssl/bytestring.h> instead.
39
+ // Use the new `CBS` and `CBB` library in <openssl/bytestring.h> instead.
40
40
 
41
41
 
42
42
  // Tag constants.
@@ -63,7 +63,7 @@ extern "C" {
63
63
  #define V_ASN1_PRIMITIVE_TAG 0x1f
64
64
 
65
65
  // V_ASN1_MAX_UNIVERSAL is the highest supported universal tag number. It is
66
- // necessary to avoid ambiguity with |V_ASN1_NEG| and |MBSTRING_FLAG|.
66
+ // necessary to avoid ambiguity with `V_ASN1_NEG` and `MBSTRING_FLAG`.
67
67
  //
68
68
  // TODO(davidben): Make this private.
69
69
  #define V_ASN1_MAX_UNIVERSAL 0xff
@@ -71,16 +71,12 @@ extern "C" {
71
71
  // V_ASN1_UNDEF is used in some APIs to indicate an ASN.1 element is omitted.
72
72
  #define V_ASN1_UNDEF (-1)
73
73
 
74
- // V_ASN1_OTHER is used in |ASN1_TYPE| to indicate a non-universal ASN.1 type.
74
+ // V_ASN1_OTHER is used in `ASN1_TYPE` to indicate a non-universal ASN.1 type.
75
75
  #define V_ASN1_OTHER (-3)
76
76
 
77
77
  // V_ASN1_ANY is used by the ASN.1 templates to indicate an ANY type.
78
78
  #define V_ASN1_ANY (-4)
79
79
 
80
- // V_ASN1_ANY_AS_STRING is used by the ASN.1 templates to indicate an ANY type
81
- // represented with |ASN1_STRING| instead of |ASN1_TYPE|.
82
- #define V_ASN1_ANY_AS_STRING (-5)
83
-
84
80
  // The following constants are tag numbers for universal types.
85
81
  #define V_ASN1_EOC 0
86
82
  #define V_ASN1_BOOLEAN 1
@@ -111,8 +107,8 @@ extern "C" {
111
107
  #define V_ASN1_UNIVERSALSTRING 28
112
108
  #define V_ASN1_BMPSTRING 30
113
109
 
114
- // The following constants are used for |ASN1_STRING| values that represent
115
- // negative INTEGER and ENUMERATED values. See |ASN1_STRING| for more details.
110
+ // The following constants are used for `ASN1_STRING` values that represent
111
+ // negative INTEGER and ENUMERATED values. See `ASN1_STRING` for more details.
116
112
  #define V_ASN1_NEG 0x100
117
113
  #define V_ASN1_NEG_INTEGER (V_ASN1_INTEGER | V_ASN1_NEG)
118
114
  #define V_ASN1_NEG_ENUMERATED (V_ASN1_ENUMERATED | V_ASN1_NEG)
@@ -137,12 +133,12 @@ extern "C" {
137
133
  #define B_ASN1_GENERALIZEDTIME 0x8000
138
134
  #define B_ASN1_SEQUENCE 0x10000
139
135
 
140
- // ASN1_tag2bit converts |tag| from the tag number of a universal type to a
141
- // corresponding |B_ASN1_*| constant, or zero if |tag| has no bitmask.
136
+ // ASN1_tag2bit converts `tag` from the tag number of a universal type to a
137
+ // corresponding `B_ASN1_*` constant, or zero if `tag` has no bitmask.
142
138
  OPENSSL_EXPORT unsigned long ASN1_tag2bit(int tag);
143
139
 
144
- // ASN1_tag2str returns a string representation of |tag|, interpret as a tag
145
- // number for a universal type, or |V_ASN1_NEG_*|.
140
+ // ASN1_tag2str returns a string representation of `tag`, interpret as a tag
141
+ // number for a universal type, or `V_ASN1_NEG_*`.
146
142
  OPENSSL_EXPORT const char *ASN1_tag2str(int tag);
147
143
 
148
144
 
@@ -153,36 +149,36 @@ OPENSSL_EXPORT const char *ASN1_tag2str(int tag);
153
149
 
154
150
  #if 0 // Sample functions
155
151
 
156
- // d2i_SAMPLE parses a structure from up to |len| bytes at |*inp|. On success,
157
- // it advances |*inp| by the number of bytes read and returns a newly-allocated
158
- // |SAMPLE| object containing the parsed structure. If |out| is non-NULL, it
159
- // additionally frees the previous value at |*out| and updates |*out| to the
152
+ // d2i_SAMPLE parses a structure from up to `len` bytes at `*inp`. On success,
153
+ // it advances `*inp` by the number of bytes read and returns a newly-allocated
154
+ // `SAMPLE` object containing the parsed structure. If `out` is non-NULL, it
155
+ // additionally frees the previous value at `*out` and updates `*out` to the
160
156
  // result. If parsing or allocating the result fails, it returns NULL.
161
157
  //
162
158
  // This function does not reject trailing data in the input. This allows the
163
159
  // caller to parse a sequence of concatenated structures. Callers parsing only
164
- // one structure should check for trailing data by comparing the updated |*inp|
160
+ // one structure should check for trailing data by comparing the updated `*inp`
165
161
  // with the end of the input.
166
162
  //
167
- // Note: If |out| and |*out| are both non-NULL, the object at |*out| is not
163
+ // Note: If `out` and `*out` are both non-NULL, the object at `*out` is not
168
164
  // updated in-place. Instead, it is freed, and the pointer is updated to the
169
- // new object. This differs from OpenSSL. Callers are recommended to set |out|
165
+ // new object. This differs from OpenSSL. Callers are recommended to set `out`
170
166
  // to NULL and instead use the return value.
171
167
  SAMPLE *d2i_SAMPLE(SAMPLE **out, const uint8_t **inp, long len);
172
168
 
173
- // i2d_SAMPLE marshals |in|. On error, it returns a negative value. On success,
174
- // it returns the length of the result and outputs it via |outp| as follows:
169
+ // i2d_SAMPLE marshals `in`. On error, it returns a negative value. On success,
170
+ // it returns the length of the result and outputs it via `outp` as follows:
175
171
  //
176
- // If |outp| is NULL, the function writes nothing. This mode can be used to size
172
+ // If `outp` is NULL, the function writes nothing. This mode can be used to size
177
173
  // buffers.
178
174
  //
179
- // If |outp| is non-NULL but |*outp| is NULL, the function sets |*outp| to a
175
+ // If `outp` is non-NULL but `*outp` is NULL, the function sets `*outp` to a
180
176
  // newly-allocated buffer containing the result. The caller is responsible for
181
- // releasing |*outp| with |OPENSSL_free|. This mode is recommended for most
177
+ // releasing `*outp` with `OPENSSL_free`. This mode is recommended for most
182
178
  // callers.
183
179
  //
184
- // If |outp| and |*outp| are non-NULL, the function writes the result to
185
- // |*outp|, which must have enough space available, and advances |*outp| just
180
+ // If `outp` and `*outp` are non-NULL, the function writes the result to
181
+ // `*outp`, which must have enough space available, and advances `*outp` just
186
182
  // past the output.
187
183
  //
188
184
  // WARNING: In the third mode, the function does not internally check output
@@ -193,7 +189,7 @@ int i2d_SAMPLE(const SAMPLE *in, uint8_t **outp);
193
189
  #endif // Sample functions
194
190
 
195
191
  // The following typedefs are sometimes used for pointers to functions like
196
- // |d2i_SAMPLE| and |i2d_SAMPLE|. Note, however, that these act on |void*|.
192
+ // `d2i_SAMPLE` and `i2d_SAMPLE`. Note, however, that these act on `void*`.
197
193
  // Calling a function with a different pointer type is undefined in C, so this
198
194
  // is only valid with a wrapper.
199
195
  typedef void *d2i_of_void(void **, const unsigned char **, long);
@@ -202,212 +198,214 @@ typedef int i2d_of_void(const void *, unsigned char **);
202
198
 
203
199
  // ASN.1 types.
204
200
  //
205
- // An |ASN1_ITEM| represents an ASN.1 type and allows working with ASN.1 types
201
+ // An `ASN1_ITEM` represents an ASN.1 type and allows working with ASN.1 types
206
202
  // generically.
207
203
  //
208
- // |ASN1_ITEM|s use a different namespace from C types and are accessed via
209
- // |ASN1_ITEM_*| macros. So, for example, |ASN1_OCTET_STRING| is both a C type
210
- // and the name of an |ASN1_ITEM|, referenced as
211
- // |ASN1_ITEM_rptr(ASN1_OCTET_STRING)|.
204
+ // `ASN1_ITEM`s use a different namespace from C types and are accessed via
205
+ // `ASN1_ITEM_*` macros. So, for example, `ASN1_OCTET_STRING` is both a C type
206
+ // and the name of an `ASN1_ITEM`, referenced as
207
+ // `ASN1_ITEM_rptr(ASN1_OCTET_STRING)`.
212
208
  //
213
- // Each |ASN1_ITEM| has a corresponding C type, typically with the same name,
209
+ // Each `ASN1_ITEM` has a corresponding C type, typically with the same name,
214
210
  // which represents values in the ASN.1 type. This type is either a pointer type
215
- // or |ASN1_BOOLEAN|. When it is a pointer, NULL pointers represent omitted
211
+ // or `ASN1_BOOLEAN`. When it is a pointer, NULL pointers represent omitted
216
212
  // values. For example, an OCTET STRING value is declared with the C type
217
- // |ASN1_OCTET_STRING*| and uses the |ASN1_ITEM| named |ASN1_OCTET_STRING|. An
213
+ // `ASN1_OCTET_STRING*` and uses the `ASN1_ITEM` named `ASN1_OCTET_STRING`. An
218
214
  // OPTIONAL OCTET STRING uses the same C type and represents an omitted value
219
- // with a NULL pointer. |ASN1_BOOLEAN| is described in a later section.
215
+ // with a NULL pointer. `ASN1_BOOLEAN` is described in a later section.
220
216
 
221
- // DECLARE_ASN1_ITEM declares an |ASN1_ITEM| with name |name|. The |ASN1_ITEM|
222
- // may be referenced with |ASN1_ITEM_rptr|. Uses of this macro should document
217
+ // DECLARE_ASN1_ITEM declares an `ASN1_ITEM` with name `name`. The `ASN1_ITEM`
218
+ // may be referenced with `ASN1_ITEM_rptr`. Uses of this macro should document
223
219
  // the corresponding ASN.1 and C types.
224
220
  #define DECLARE_ASN1_ITEM(name) extern OPENSSL_EXPORT const ASN1_ITEM name##_it;
225
221
 
226
- // ASN1_ITEM_rptr returns the |const ASN1_ITEM *| named |name|.
222
+ // ASN1_ITEM_rptr returns the `const ASN1_ITEM *` named `name`.
227
223
  #define ASN1_ITEM_rptr(name) (&(name##_it))
228
224
 
229
- // ASN1_ITEM_EXP is an abstraction for referencing an |ASN1_ITEM| in a
225
+ // ASN1_ITEM_EXP is an abstraction for referencing an `ASN1_ITEM` in a
230
226
  // constant-initialized structure, such as a method table. It exists because, on
231
- // some OpenSSL platforms, |ASN1_ITEM| references are indirected through
232
- // functions. Structures reference the |ASN1_ITEM| by declaring a field like
233
- // |ASN1_ITEM_EXP *item| and initializing it with |ASN1_ITEM_ref|.
227
+ // some OpenSSL platforms, `ASN1_ITEM` references are indirected through
228
+ // functions. Structures reference the `ASN1_ITEM` by declaring a field like
229
+ // `ASN1_ITEM_EXP *item` and initializing it with `ASN1_ITEM_ref`.
234
230
  typedef const ASN1_ITEM ASN1_ITEM_EXP;
235
231
 
236
- // ASN1_ITEM_ref returns an |ASN1_ITEM_EXP*| for the |ASN1_ITEM| named |name|.
232
+ // ASN1_ITEM_ref returns an `ASN1_ITEM_EXP*` for the `ASN1_ITEM` named `name`.
237
233
  #define ASN1_ITEM_ref(name) (&(name##_it))
238
234
 
239
- // ASN1_ITEM_ptr converts |iptr|, which must be an |ASN1_ITEM_EXP*| to a
240
- // |const ASN1_ITEM*|.
235
+ // ASN1_ITEM_ptr converts `iptr`, which must be an `ASN1_ITEM_EXP*` to a
236
+ // `const ASN1_ITEM*`.
241
237
  #define ASN1_ITEM_ptr(iptr) (iptr)
242
238
 
243
- // ASN1_VALUE_st (aka |ASN1_VALUE|) is an opaque type used as a placeholder for
244
- // the C type corresponding to an |ASN1_ITEM|.
239
+ // ASN1_VALUE_st (aka `ASN1_VALUE`) is an opaque type used as a placeholder for
240
+ // the C type corresponding to an `ASN1_ITEM`.
245
241
  typedef struct ASN1_VALUE_st ASN1_VALUE;
246
242
 
247
- // ASN1_item_new allocates a new value of the C type corresponding to |it|, or
243
+ // ASN1_item_new allocates a new value of the C type corresponding to `it`, or
248
244
  // NULL on error. On success, the caller must release the value with
249
- // |ASN1_item_free|, or the corresponding C type's free function, when done. The
245
+ // `ASN1_item_free`, or the corresponding C type's free function, when done. The
250
246
  // new value will initialize fields of the value to some default state, such as
251
247
  // an empty string. Note, however, that this default state sometimes omits
252
248
  // required values, such as with CHOICE types.
253
249
  //
254
- // This function may not be used with |ASN1_ITEM|s whose C type is
255
- // |ASN1_BOOLEAN|.
250
+ // This function may not be used with `ASN1_ITEM`s whose C type is
251
+ // `ASN1_BOOLEAN`.
256
252
  //
257
253
  // WARNING: Casting the result of this function to the wrong type is a
258
254
  // potentially exploitable memory error. Callers must ensure the value is used
259
- // consistently with |it|. Prefer using type-specific functions such as
260
- // |ASN1_OCTET_STRING_new|.
255
+ // consistently with `it`. Prefer using type-specific functions such as
256
+ // `ASN1_OCTET_STRING_new`.
261
257
  OPENSSL_EXPORT ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it);
262
258
 
263
- // ASN1_item_free releases memory associated with |val|, which must be an object
264
- // of the C type corresponding to |it|.
259
+ // ASN1_item_free releases memory associated with `val`, which must be an object
260
+ // of the C type corresponding to `it`.
265
261
  //
266
- // This function may not be used with |ASN1_ITEM|s whose C type is
267
- // |ASN1_BOOLEAN|.
262
+ // This function may not be used with `ASN1_ITEM`s whose C type is
263
+ // `ASN1_BOOLEAN`.
268
264
  //
269
265
  // WARNING: Passing a pointer of the wrong type into this function is a
270
- // potentially exploitable memory error. Callers must ensure |val| is consistent
271
- // with |it|. Prefer using type-specific functions such as
272
- // |ASN1_OCTET_STRING_free|.
266
+ // potentially exploitable memory error. Callers must ensure `val` is consistent
267
+ // with `it`. Prefer using type-specific functions such as
268
+ // `ASN1_OCTET_STRING_free`.
273
269
  OPENSSL_EXPORT void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it);
274
270
 
275
- // ASN1_item_d2i parses the ASN.1 type |it| from up to |len| bytes at |*inp|.
276
- // It behaves like |d2i_SAMPLE|, except that |out| and the return value are cast
277
- // to |ASN1_VALUE| pointers.
271
+ // ASN1_item_d2i parses the ASN.1 type `it` from up to `len` bytes at `*inp`.
272
+ // It behaves like `d2i_SAMPLE`, except that `out` and the return value are cast
273
+ // to `ASN1_VALUE` pointers.
278
274
  //
279
275
  // TODO(https://crbug.com/boringssl/444): C strict aliasing forbids type-punning
280
- // |T*| and |ASN1_VALUE*| the way this function signature does. When that bug is
281
- // resolved, we will need to pick which type |*out| is (probably |T*|). Do not
282
- // use a non-NULL |out| to avoid ending up on the wrong side of this question.
276
+ // `T*` and `ASN1_VALUE*` the way this function signature does. When that bug is
277
+ // resolved, we will need to pick which type `*out` is (probably `T*`). Do not
278
+ // use a non-NULL `out` to avoid ending up on the wrong side of this question.
283
279
  //
284
- // This function may not be used with |ASN1_ITEM|s whose C type is
285
- // |ASN1_BOOLEAN|.
280
+ // This function may not be used with `ASN1_ITEM`s whose C type is
281
+ // `ASN1_BOOLEAN`.
286
282
  //
287
283
  // WARNING: Casting the result of this function to the wrong type, or passing a
288
284
  // pointer of the wrong type into this function, are potentially exploitable
289
- // memory errors. Callers must ensure |out| is consistent with |it|. Prefer
290
- // using type-specific functions such as |d2i_ASN1_OCTET_STRING|.
285
+ // memory errors. Callers must ensure `out` is consistent with `it`. Prefer
286
+ // using type-specific functions such as `d2i_ASN1_OCTET_STRING`.
291
287
  OPENSSL_EXPORT ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **out,
292
288
  const unsigned char **inp, long len,
293
289
  const ASN1_ITEM *it);
294
290
 
295
- // ASN1_item_i2d marshals |val| as the ASN.1 type associated with |it|, as
296
- // described in |i2d_SAMPLE|.
291
+ // ASN1_item_i2d marshals `val` as the ASN.1 type associated with `it`, as
292
+ // described in `i2d_SAMPLE`.
297
293
  //
298
- // This function may not be used with |ASN1_ITEM|s whose C type is
299
- // |ASN1_BOOLEAN|.
294
+ // This function may not be used with `ASN1_ITEM`s whose C type is
295
+ // `ASN1_BOOLEAN`.
300
296
  //
301
297
  // WARNING: Passing a pointer of the wrong type into this function is a
302
- // potentially exploitable memory error. Callers must ensure |val| is consistent
303
- // with |it|. Prefer using type-specific functions such as
304
- // |i2d_ASN1_OCTET_STRING|.
298
+ // potentially exploitable memory error. Callers must ensure `val` is consistent
299
+ // with `it`. Prefer using type-specific functions such as
300
+ // `i2d_ASN1_OCTET_STRING`.
305
301
  OPENSSL_EXPORT int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **outp,
306
302
  const ASN1_ITEM *it);
307
303
 
308
- // ASN1_item_dup returns a newly-allocated copy of |x|, or NULL on error. |x|
309
- // must be an object of |it|'s C type.
304
+ // ASN1_item_dup returns a newly-allocated copy of `x`, or NULL on error. `x`
305
+ // must be an object of `it`'s C type.
310
306
  //
311
- // This function may not be used with |ASN1_ITEM|s whose C type is
312
- // |ASN1_BOOLEAN|.
307
+ // This function may not be used with `ASN1_ITEM`s whose C type is
308
+ // `ASN1_BOOLEAN`.
313
309
  //
314
310
  // WARNING: Casting the result of this function to the wrong type, or passing a
315
311
  // pointer of the wrong type into this function, are potentially exploitable
316
312
  // memory errors. Prefer using type-specific functions such as
317
- // |ASN1_STRING_dup|.
313
+ // `ASN1_STRING_dup`.
318
314
  OPENSSL_EXPORT void *ASN1_item_dup(const ASN1_ITEM *it, void *x);
319
315
 
320
- // The following functions behave like |ASN1_item_d2i| but read from |in|
321
- // instead. |out| is the same parameter as in |ASN1_item_d2i|, but written with
322
- // |void*| instead. The return values similarly match.
316
+ // The following functions behave like `ASN1_item_d2i` but read from `in`
317
+ // instead. `out` is the same parameter as in `ASN1_item_d2i`, but written with
318
+ // `void*` instead. The return values similarly match.
323
319
  //
324
- // These functions may not be used with |ASN1_ITEM|s whose C type is
325
- // |ASN1_BOOLEAN|.
320
+ // These functions may not be used with `ASN1_ITEM`s whose C type is
321
+ // `ASN1_BOOLEAN`.
326
322
  //
327
- // WARNING: These functions do not bound how much data is read from |in|.
323
+ // WARNING: These functions do not bound how much data is read from `in`.
328
324
  // Parsing an untrusted input could consume unbounded memory.
329
325
  OPENSSL_EXPORT void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *out);
330
326
  OPENSSL_EXPORT void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *out);
331
327
 
332
- // The following functions behave like |ASN1_item_i2d| but write to |out|
333
- // instead. |in| is the same parameter as in |ASN1_item_i2d|, but written with
334
- // |void*| instead.
328
+ // The following functions behave like `ASN1_item_i2d` but write to `out`
329
+ // instead. `in` is the same parameter as in `ASN1_item_i2d`, but written with
330
+ // `void*` instead.
335
331
  //
336
- // These functions may not be used with |ASN1_ITEM|s whose C type is
337
- // |ASN1_BOOLEAN|.
338
- OPENSSL_EXPORT int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *in);
339
- OPENSSL_EXPORT int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *in);
332
+ // These functions may not be used with `ASN1_ITEM`s whose C type is
333
+ // `ASN1_BOOLEAN`.
334
+ OPENSSL_EXPORT int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out,
335
+ const void *in);
336
+ OPENSSL_EXPORT int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out,
337
+ const void *in);
340
338
 
341
- // ASN1_item_unpack parses |oct|'s contents as |it|'s ASN.1 type. It returns a
342
- // newly-allocated instance of |it|'s C type on success, or NULL on error.
339
+ // ASN1_item_unpack parses `oct`'s contents as `it`'s ASN.1 type. It returns a
340
+ // newly-allocated instance of `it`'s C type on success, or NULL on error.
343
341
  //
344
- // This function may not be used with |ASN1_ITEM|s whose C type is
345
- // |ASN1_BOOLEAN|.
342
+ // This function may not be used with `ASN1_ITEM`s whose C type is
343
+ // `ASN1_BOOLEAN`.
346
344
  //
347
345
  // WARNING: Casting the result of this function to the wrong type is a
348
346
  // potentially exploitable memory error. Callers must ensure the value is used
349
- // consistently with |it|.
347
+ // consistently with `it`.
350
348
  OPENSSL_EXPORT void *ASN1_item_unpack(const ASN1_STRING *oct,
351
349
  const ASN1_ITEM *it);
352
350
 
353
- // ASN1_item_pack marshals |obj| as |it|'s ASN.1 type. If |out| is NULL, it
354
- // returns a newly-allocated |ASN1_STRING| with the result, or NULL on error.
355
- // If |out| is non-NULL, but |*out| is NULL, it does the same but additionally
356
- // sets |*out| to the result. If both |out| and |*out| are non-NULL, it writes
357
- // the result to |*out| and returns |*out| on success or NULL on error.
351
+ // ASN1_item_pack marshals `obj` as `it`'s ASN.1 type. If `out` is NULL, it
352
+ // returns a newly-allocated `ASN1_STRING` with the result, or NULL on error.
353
+ // If `out` is non-NULL, but `*out` is NULL, it does the same but additionally
354
+ // sets `*out` to the result. If both `out` and `*out` are non-NULL, it writes
355
+ // the result to `*out` and returns `*out` on success or NULL on error.
358
356
  //
359
- // This function may not be used with |ASN1_ITEM|s whose C type is
360
- // |ASN1_BOOLEAN|.
357
+ // This function may not be used with `ASN1_ITEM`s whose C type is
358
+ // `ASN1_BOOLEAN`.
361
359
  //
362
360
  // WARNING: Passing a pointer of the wrong type into this function is a
363
- // potentially exploitable memory error. Callers must ensure |val| is consistent
364
- // with |it|.
361
+ // potentially exploitable memory error. Callers must ensure `val` is consistent
362
+ // with `it`.
365
363
  OPENSSL_EXPORT ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it,
366
364
  ASN1_STRING **out);
367
365
 
368
366
 
369
367
  // Booleans.
370
368
  //
371
- // This library represents ASN.1 BOOLEAN values with |ASN1_BOOLEAN|, which is an
369
+ // This library represents ASN.1 BOOLEAN values with `ASN1_BOOLEAN`, which is an
372
370
  // integer type. FALSE is zero, TRUE is 0xff, and an omitted OPTIONAL BOOLEAN is
373
371
  // -1.
374
372
 
375
- // ASN1_BOOLEAN_FALSE is FALSE as an |ASN1_BOOLEAN|.
373
+ // ASN1_BOOLEAN_FALSE is FALSE as an `ASN1_BOOLEAN`.
376
374
  #define ASN1_BOOLEAN_FALSE 0
377
375
 
378
- // ASN1_BOOLEAN_TRUE is TRUE as an |ASN1_BOOLEAN|. Some code incorrectly uses
379
- // 1, so prefer |b != ASN1_BOOLEAN_FALSE| over |b == ASN1_BOOLEAN_TRUE|.
376
+ // ASN1_BOOLEAN_TRUE is TRUE as an `ASN1_BOOLEAN`. Some code incorrectly uses
377
+ // 1, so prefer `b != ASN1_BOOLEAN_FALSE` over `b == ASN1_BOOLEAN_TRUE`.
380
378
  #define ASN1_BOOLEAN_TRUE 0xff
381
379
 
382
- // ASN1_BOOLEAN_NONE, in contexts where the |ASN1_BOOLEAN| represents an
380
+ // ASN1_BOOLEAN_NONE, in contexts where the `ASN1_BOOLEAN` represents an
383
381
  // OPTIONAL BOOLEAN, is an omitted value. Using this value in other contexts is
384
382
  // undefined and may be misinterpreted as TRUE.
385
383
  #define ASN1_BOOLEAN_NONE (-1)
386
384
 
387
- // d2i_ASN1_BOOLEAN parses a DER-encoded ASN.1 BOOLEAN from up to |len| bytes at
388
- // |*inp|. On success, it advances |*inp| by the number of bytes read and
389
- // returns the result. If |out| is non-NULL, it additionally writes the result
390
- // to |*out|. On error, it returns |ASN1_BOOLEAN_NONE|.
385
+ // d2i_ASN1_BOOLEAN parses a DER-encoded ASN.1 BOOLEAN from up to `len` bytes at
386
+ // `*inp`. On success, it advances `*inp` by the number of bytes read and
387
+ // returns the result. If `out` is non-NULL, it additionally writes the result
388
+ // to `*out`. On error, it returns `ASN1_BOOLEAN_NONE`.
391
389
  //
392
390
  // This function does not reject trailing data in the input. This allows the
393
391
  // caller to parse a sequence of concatenated structures. Callers parsing only
394
- // one structure should check for trailing data by comparing the updated |*inp|
392
+ // one structure should check for trailing data by comparing the updated `*inp`
395
393
  // with the end of the input.
396
394
  //
397
- // WARNING: This function's is slightly different from other |d2i_*| functions
398
- // because |ASN1_BOOLEAN| is not a pointer type.
395
+ // WARNING: This function's is slightly different from other `d2i_*` functions
396
+ // because `ASN1_BOOLEAN` is not a pointer type.
399
397
  OPENSSL_EXPORT ASN1_BOOLEAN d2i_ASN1_BOOLEAN(ASN1_BOOLEAN *out,
400
398
  const unsigned char **inp,
401
399
  long len);
402
400
 
403
- // i2d_ASN1_BOOLEAN marshals |a| as a DER-encoded ASN.1 BOOLEAN, as described in
404
- // |i2d_SAMPLE|.
401
+ // i2d_ASN1_BOOLEAN marshals `a` as a DER-encoded ASN.1 BOOLEAN, as described in
402
+ // `i2d_SAMPLE`.
405
403
  OPENSSL_EXPORT int i2d_ASN1_BOOLEAN(ASN1_BOOLEAN a, unsigned char **outp);
406
404
 
407
- // The following |ASN1_ITEM|s have ASN.1 type BOOLEAN and C type |ASN1_BOOLEAN|.
408
- // |ASN1_TBOOLEAN| and |ASN1_FBOOLEAN| must be marked OPTIONAL. When omitted,
405
+ // The following `ASN1_ITEM`s have ASN.1 type BOOLEAN and C type `ASN1_BOOLEAN`.
406
+ // `ASN1_TBOOLEAN` and `ASN1_FBOOLEAN` must be marked OPTIONAL. When omitted,
409
407
  // they are parsed as TRUE and FALSE, respectively, rather than
410
- // |ASN1_BOOLEAN_NONE|.
408
+ // `ASN1_BOOLEAN_NONE`.
411
409
  DECLARE_ASN1_ITEM(ASN1_BOOLEAN)
412
410
  DECLARE_ASN1_ITEM(ASN1_TBOOLEAN)
413
411
  DECLARE_ASN1_ITEM(ASN1_FBOOLEAN)
@@ -417,71 +415,71 @@ DECLARE_ASN1_ITEM(ASN1_FBOOLEAN)
417
415
  //
418
416
  // ASN.1 contains a myriad of string types, as well as types that contain data
419
417
  // that may be encoded into a string. This library uses a single type,
420
- // |ASN1_STRING|, to represent most values.
418
+ // `ASN1_STRING`, to represent most values.
421
419
 
422
- // An asn1_string_st (aka |ASN1_STRING|) represents a value of a string-like
423
- // ASN.1 type. It contains a |type| field, and a byte string |data| field with a
420
+ // An asn1_string_st (aka `ASN1_STRING`) represents a value of a string-like
421
+ // ASN.1 type. It contains a `type` field, and a byte string `data` field with a
424
422
  // type-specific representation. This type-specific representation does not
425
423
  // always correspond to the DER encoding of the type.
426
424
  //
427
- // If |type| is one of |V_ASN1_OCTET_STRING|, |V_ASN1_UTF8STRING|,
428
- // |V_ASN1_NUMERICSTRING|, |V_ASN1_PRINTABLESTRING|, |V_ASN1_T61STRING|,
429
- // |V_ASN1_VIDEOTEXSTRING|, |V_ASN1_IA5STRING|, |V_ASN1_GRAPHICSTRING|,
430
- // |V_ASN1_ISO64STRING|, |V_ASN1_VISIBLESTRING|, |V_ASN1_GENERALSTRING|,
431
- // |V_ASN1_UNIVERSALSTRING|, or |V_ASN1_BMPSTRING|, the object represents an
425
+ // If `type` is one of `V_ASN1_OCTET_STRING`, `V_ASN1_UTF8STRING`,
426
+ // `V_ASN1_NUMERICSTRING`, `V_ASN1_PRINTABLESTRING`, `V_ASN1_T61STRING`,
427
+ // `V_ASN1_VIDEOTEXSTRING`, `V_ASN1_IA5STRING`, `V_ASN1_GRAPHICSTRING`,
428
+ // `V_ASN1_ISO64STRING`, `V_ASN1_VISIBLESTRING`, `V_ASN1_GENERALSTRING`,
429
+ // `V_ASN1_UNIVERSALSTRING`, or `V_ASN1_BMPSTRING`, the object represents an
432
430
  // ASN.1 string type. The data contains the byte representation of the
433
431
  // string.
434
432
  //
435
- // If |type| is |V_ASN1_BIT_STRING|, the object represents a BIT STRING value.
433
+ // If `type` is `V_ASN1_BIT_STRING`, the object represents a BIT STRING value.
436
434
  // See bit string documentation below for the data and flags.
437
435
  //
438
- // If |type| is one of |V_ASN1_INTEGER|, |V_ASN1_NEG_INTEGER|,
439
- // |V_ASN1_ENUMERATED|, or |V_ASN1_NEG_ENUMERATED|, the object represents an
436
+ // If `type` is one of `V_ASN1_INTEGER`, `V_ASN1_NEG_INTEGER`,
437
+ // `V_ASN1_ENUMERATED`, or `V_ASN1_NEG_ENUMERATED`, the object represents an
440
438
  // INTEGER or ENUMERATED value. See integer documentation below for details.
441
439
  //
442
- // If |type| is |V_ASN1_GENERALIZEDTIME| or |V_ASN1_UTCTIME|, the object
440
+ // If `type` is `V_ASN1_GENERALIZEDTIME` or `V_ASN1_UTCTIME`, the object
443
441
  // represents a GeneralizedTime or UTCTime value, respectively. The data
444
442
  // contains the DER encoding of the value. For example, the UNIX epoch would be
445
443
  // "19700101000000Z" for a GeneralizedTime and "700101000000Z" for a UTCTime.
446
444
  //
447
- // If |type| is |V_ASN1_SEQUENCE|, |V_ASN1_SET|, or |V_ASN1_OTHER|, the object
445
+ // If `type` is `V_ASN1_SEQUENCE`, `V_ASN1_SET`, or `V_ASN1_OTHER`, the object
448
446
  // represents a SEQUENCE, SET, or arbitrary ASN.1 value, respectively. Unlike
449
447
  // the above cases, the data contains the DER encoding of the entire structure,
450
448
  // including the header. If the value is explicitly or implicitly tagged, this
451
449
  // too will be reflected in the data field. As this case handles unknown types,
452
450
  // the contents are not checked when parsing or serializing.
453
451
  //
454
- // Other values of |type| do not represent a valid ASN.1 value, though
455
- // default-constructed objects may set |type| to -1. Such objects cannot be
452
+ // Other values of `type` do not represent a valid ASN.1 value, though
453
+ // default-constructed objects may set `type` to -1. Such objects cannot be
456
454
  // serialized.
457
455
  //
458
- // |ASN1_STRING| additionally has the following typedefs: |ASN1_BIT_STRING|,
459
- // |ASN1_BMPSTRING|, |ASN1_ENUMERATED|, |ASN1_GENERALIZEDTIME|,
460
- // |ASN1_GENERALSTRING|, |ASN1_IA5STRING|, |ASN1_INTEGER|, |ASN1_OCTET_STRING|,
461
- // |ASN1_PRINTABLESTRING|, |ASN1_T61STRING|, |ASN1_TIME|,
462
- // |ASN1_UNIVERSALSTRING|, |ASN1_UTCTIME|, |ASN1_UTF8STRING|, and
463
- // |ASN1_VISIBLESTRING|. Other than |ASN1_TIME|, these correspond to universal
464
- // ASN.1 types. |ASN1_TIME| represents a CHOICE of UTCTime and GeneralizedTime,
456
+ // `ASN1_STRING` additionally has the following typedefs: `ASN1_BIT_STRING`,
457
+ // `ASN1_BMPSTRING`, `ASN1_ENUMERATED`, `ASN1_GENERALIZEDTIME`,
458
+ // `ASN1_GENERALSTRING`, `ASN1_IA5STRING`, `ASN1_INTEGER`, `ASN1_OCTET_STRING`,
459
+ // `ASN1_PRINTABLESTRING`, `ASN1_T61STRING`, `ASN1_TIME`,
460
+ // `ASN1_UNIVERSALSTRING`, `ASN1_UTCTIME`, `ASN1_UTF8STRING`, and
461
+ // `ASN1_VISIBLESTRING`. Other than `ASN1_TIME`, these correspond to universal
462
+ // ASN.1 types. `ASN1_TIME` represents a CHOICE of UTCTime and GeneralizedTime,
465
463
  // with a cutoff of 2049, as used in Section 4.1.2.5 of RFC 5280.
466
464
  //
467
465
  // For clarity, callers are encouraged to use the appropriate typedef when
468
- // available. They are the same type as |ASN1_STRING|, so a caller may freely
469
- // pass them into functions expecting |ASN1_STRING|, such as
470
- // |ASN1_STRING_length|.
471
- //
472
- // If a function returns an |ASN1_STRING| where the typedef or ASN.1 structure
473
- // implies constraints on |type|, callers may assume that |type| is correct.
474
- // However, if a function takes an |ASN1_STRING| as input, callers must ensure
475
- // |type| matches. These invariants are not captured by the C type system and
466
+ // available. They are the same type as `ASN1_STRING`, so a caller may freely
467
+ // pass them into functions expecting `ASN1_STRING`, such as
468
+ // `ASN1_STRING_length`.
469
+ //
470
+ // If a function returns an `ASN1_STRING` where the typedef or ASN.1 structure
471
+ // implies constraints on `type`, callers may assume that `type` is correct.
472
+ // However, if a function takes an `ASN1_STRING` as input, callers must ensure
473
+ // `type` matches. These invariants are not captured by the C type system and
476
474
  // may not be checked at runtime. For example, callers may assume the output of
477
- // |X509_get0_serialNumber| has type |V_ASN1_INTEGER| or |V_ASN1_NEG_INTEGER|.
478
- // Callers must not pass a string of type |V_ASN1_OCTET_STRING| to
479
- // |X509_set_serialNumber|. Doing so may break invariants on the |X509| object
480
- // and break the |X509_get0_serialNumber| invariant.
475
+ // `X509_get0_serialNumber` has type `V_ASN1_INTEGER` or `V_ASN1_NEG_INTEGER`.
476
+ // Callers must not pass a string of type `V_ASN1_OCTET_STRING` to
477
+ // `X509_set_serialNumber`. Doing so may break invariants on the `X509` object
478
+ // and break the `X509_get0_serialNumber` invariant.
481
479
  //
482
480
  // TODO(https://crbug.com/boringssl/445): This is very unfriendly. Getting the
483
481
  // type field wrong should not cause memory errors, but it may do strange
484
- // things. We should add runtime checks to anything that consumes |ASN1_STRING|s
482
+ // things. We should add runtime checks to anything that consumes `ASN1_STRING`s
485
483
  // from the caller.
486
484
  struct asn1_string_st {
487
485
  int length;
@@ -490,89 +488,91 @@ struct asn1_string_st {
490
488
  long flags;
491
489
  };
492
490
 
493
- // ASN1_STRING_FLAG_BITS_LEFT indicates, in a BIT STRING |ASN1_STRING|, that
494
- // flags & 0x7 contains the number of padding bits added to the BIT STRING
495
- // value. When not set, all trailing zero bits in the last byte are implicitly
496
- // treated as padding. This behavior is deprecated and should not be used.
497
- #define ASN1_STRING_FLAG_BITS_LEFT 0x08
498
-
499
- // ASN1_STRING_type_new returns a newly-allocated empty |ASN1_STRING| object of
500
- // type |type|, or NULL on error.
491
+ // ASN1_STRING_type_new returns a newly-allocated empty `ASN1_STRING` object of
492
+ // type `type`, or NULL on error.
501
493
  OPENSSL_EXPORT ASN1_STRING *ASN1_STRING_type_new(int type);
502
494
 
503
- // ASN1_STRING_new returns a newly-allocated empty |ASN1_STRING| object with an
495
+ // ASN1_STRING_new returns a newly-allocated empty `ASN1_STRING` object with an
504
496
  // arbitrary type. Prefer one of the type-specific constructors, such as
505
- // |ASN1_OCTET_STRING_new|, or |ASN1_STRING_type_new|.
497
+ // `ASN1_OCTET_STRING_new`, or `ASN1_STRING_type_new`.
506
498
  OPENSSL_EXPORT ASN1_STRING *ASN1_STRING_new(void);
507
499
 
508
- // ASN1_STRING_free releases memory associated with |str|.
500
+ // ASN1_STRING_free releases memory associated with `str`.
509
501
  OPENSSL_EXPORT void ASN1_STRING_free(ASN1_STRING *str);
510
502
 
511
- // ASN1_STRING_copy sets |dst| to a copy of |str|. It returns one on success and
503
+ // ASN1_STRING_copy sets `dst` to a copy of `str`. It returns one on success and
512
504
  // zero on error.
513
505
  OPENSSL_EXPORT int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str);
514
506
 
515
- // ASN1_STRING_dup returns a newly-allocated copy of |str|, or NULL on error.
507
+ // ASN1_STRING_dup returns a newly-allocated copy of `str`, or NULL on error.
516
508
  OPENSSL_EXPORT ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *str);
517
509
 
518
- // ASN1_STRING_type returns the type of |str|. This value will be one of the
519
- // |V_ASN1_*| constants.
510
+ // ASN1_STRING_type returns the type of `str`. This value will be one of the
511
+ // `V_ASN1_*` constants.
520
512
  OPENSSL_EXPORT int ASN1_STRING_type(const ASN1_STRING *str);
521
513
 
522
- // ASN1_STRING_get0_data returns a pointer to |str|'s contents. Callers should
523
- // use |ASN1_STRING_length| to determine the length of the string. The string
514
+ // ASN1_STRING_get0_data returns a pointer to `str`'s contents. Callers should
515
+ // use `ASN1_STRING_length` to determine the length of the string. The string
524
516
  // may have embedded NUL bytes and may not be NUL-terminated.
525
517
  //
526
- // The contents of an |ASN1_STRING| encode the value in some type-specific
518
+ // The contents of an `ASN1_STRING` encode the value in some type-specific
527
519
  // representation that does not always correspond to the DER encoding of the
528
- // type. See the documentation for |ASN1_STRING| for details.
520
+ // type. See the documentation for `ASN1_STRING` for details.
529
521
  OPENSSL_EXPORT const unsigned char *ASN1_STRING_get0_data(
530
522
  const ASN1_STRING *str);
531
523
 
532
- // ASN1_STRING_data returns a mutable pointer to |str|'s contents. Callers
533
- // should use |ASN1_STRING_length| to determine the length of the string. The
524
+ // ASN1_STRING_data returns a mutable pointer to `str`'s contents. Callers
525
+ // should use `ASN1_STRING_length` to determine the length of the string. The
534
526
  // string may have embedded NUL bytes and may not be NUL-terminated.
535
527
  //
536
- // The contents of an |ASN1_STRING| encode the value in some type-specific
528
+ // The contents of an `ASN1_STRING` encode the value in some type-specific
537
529
  // representation that does not always correspond to the DER encoding of the
538
- // type. See the documentation for |ASN1_STRING| for details.
530
+ // type. See the documentation for `ASN1_STRING` for details.
539
531
  //
540
- // Prefer |ASN1_STRING_get0_data|.
532
+ // Prefer `ASN1_STRING_get0_data`.
541
533
  OPENSSL_EXPORT unsigned char *ASN1_STRING_data(ASN1_STRING *str);
542
534
 
543
- // ASN1_STRING_length returns the length of |str|, in bytes.
535
+ // ASN1_STRING_length returns the length of `str`, in bytes.
544
536
  //
545
- // The contents of an |ASN1_STRING| encode the value in some type-specific
537
+ // The contents of an `ASN1_STRING` encode the value in some type-specific
546
538
  // representation that does not always correspond to the DER encoding of the
547
- // type. See the documentation for |ASN1_STRING| for details.
539
+ // type. See the documentation for `ASN1_STRING` for details.
548
540
  OPENSSL_EXPORT int ASN1_STRING_length(const ASN1_STRING *str);
549
541
 
550
- // ASN1_STRING_cmp compares |a| and |b|'s type and contents. It returns an
551
- // integer equal to, less than, or greater than zero if |a| is equal to, less
552
- // than, or greater than |b|, respectively. This function compares by length,
553
- // then data, then type. Note the data compared is the |ASN1_STRING| internal
542
+ // ASN1_STRING_cmp compares `a` and `b`'s type and contents. It returns an
543
+ // integer equal to, less than, or greater than zero if `a` is equal to, less
544
+ // than, or greater than `b`, respectively. This function compares by length,
545
+ // then data, then type. Note the data compared is the `ASN1_STRING` internal
554
546
  // representation and the type order is arbitrary. While this comparison is
555
- // suitable for sorting, callers should not rely on the exact order when |a|
556
- // and |b| are different types.
547
+ // suitable for sorting, callers should not rely on the exact order when `a`
548
+ // and `b` are different types.
557
549
  //
558
- // Note that, if |a| and |b| are INTEGERs, this comparison does not order the
559
- // values numerically. For a numerical comparison, use |ASN1_INTEGER_cmp|.
550
+ // Note that, if `a` and `b` are INTEGERs, this comparison does not order the
551
+ // values numerically. For a numerical comparison, use `ASN1_INTEGER_cmp`.
560
552
  OPENSSL_EXPORT int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b);
561
553
 
562
- // ASN1_STRING_set sets the contents of |str| to a copy of |len| bytes from
563
- // |data|. It returns one on success and zero on error. If |data| is NULL, it
554
+ // ASN1_STRING_set sets the contents of `str` to a copy of `len` bytes from
555
+ // `data`. It returns one on success and zero on error. If `data` is NULL, it
564
556
  // updates the length and allocates the buffer as needed, but does not
565
557
  // initialize the contents.
558
+ //
559
+ // If `str` is a BIT STRING, this function sets the number of unused bits to
560
+ // zero. `ASN1_BIT_STRING_set1` may be used to set a BIT STRING that is not a
561
+ // whole number of bytes.
566
562
  OPENSSL_EXPORT int ASN1_STRING_set(ASN1_STRING *str, const void *data,
567
563
  ossl_ssize_t len);
568
564
 
569
- // ASN1_STRING_set0 sets the contents of |str| to |len| bytes from |data|. It
570
- // takes ownership of |data|, which must have been allocated with
571
- // |OPENSSL_malloc|.
565
+ // ASN1_STRING_set0 sets the contents of `str` to `len` bytes from `data`. It
566
+ // takes ownership of `data`, which must have been allocated with
567
+ // `OPENSSL_malloc`.
568
+ //
569
+ // If `str` is a BIT STRING, this function sets the number of unused bits to
570
+ // zero. `ASN1_BIT_STRING_set1` may be used to set a BIT STRING that is not a
571
+ // whole number of bytes.
572
572
  OPENSSL_EXPORT void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len);
573
573
 
574
- // The following functions call |ASN1_STRING_type_new| with the corresponding
575
- // |V_ASN1_*| constant.
574
+ // The following functions call `ASN1_STRING_type_new` with the corresponding
575
+ // `V_ASN1_*` constant.
576
576
  OPENSSL_EXPORT ASN1_BMPSTRING *ASN1_BMPSTRING_new(void);
577
577
  OPENSSL_EXPORT ASN1_GENERALSTRING *ASN1_GENERALSTRING_new(void);
578
578
  OPENSSL_EXPORT ASN1_IA5STRING *ASN1_IA5STRING_new(void);
@@ -583,7 +583,7 @@ OPENSSL_EXPORT ASN1_UNIVERSALSTRING *ASN1_UNIVERSALSTRING_new(void);
583
583
  OPENSSL_EXPORT ASN1_UTF8STRING *ASN1_UTF8STRING_new(void);
584
584
  OPENSSL_EXPORT ASN1_VISIBLESTRING *ASN1_VISIBLESTRING_new(void);
585
585
 
586
- // The following functions call |ASN1_STRING_free|.
586
+ // The following functions call `ASN1_STRING_free`.
587
587
  OPENSSL_EXPORT void ASN1_BMPSTRING_free(ASN1_BMPSTRING *str);
588
588
  OPENSSL_EXPORT void ASN1_GENERALSTRING_free(ASN1_GENERALSTRING *str);
589
589
  OPENSSL_EXPORT void ASN1_IA5STRING_free(ASN1_IA5STRING *str);
@@ -594,9 +594,9 @@ OPENSSL_EXPORT void ASN1_UNIVERSALSTRING_free(ASN1_UNIVERSALSTRING *str);
594
594
  OPENSSL_EXPORT void ASN1_UTF8STRING_free(ASN1_UTF8STRING *str);
595
595
  OPENSSL_EXPORT void ASN1_VISIBLESTRING_free(ASN1_VISIBLESTRING *str);
596
596
 
597
- // The following functions parse up to |len| bytes from |*inp| as a
597
+ // The following functions parse up to `len` bytes from `*inp` as a
598
598
  // DER-encoded ASN.1 value of the corresponding type, as described in
599
- // |d2i_SAMPLE|.
599
+ // `d2i_SAMPLE`.
600
600
  OPENSSL_EXPORT ASN1_BMPSTRING *d2i_ASN1_BMPSTRING(ASN1_BMPSTRING **out,
601
601
  const uint8_t **inp,
602
602
  long len);
@@ -621,8 +621,8 @@ OPENSSL_EXPORT ASN1_UTF8STRING *d2i_ASN1_UTF8STRING(ASN1_UTF8STRING **out,
621
621
  OPENSSL_EXPORT ASN1_VISIBLESTRING *d2i_ASN1_VISIBLESTRING(
622
622
  ASN1_VISIBLESTRING **out, const uint8_t **inp, long len);
623
623
 
624
- // The following functions marshal |in| as a DER-encoded ASN.1 value of the
625
- // corresponding type, as described in |i2d_SAMPLE|.
624
+ // The following functions marshal `in` as a DER-encoded ASN.1 value of the
625
+ // corresponding type, as described in `i2d_SAMPLE`.
626
626
  OPENSSL_EXPORT int i2d_ASN1_BMPSTRING(const ASN1_BMPSTRING *in, uint8_t **outp);
627
627
  OPENSSL_EXPORT int i2d_ASN1_GENERALSTRING(const ASN1_GENERALSTRING *in,
628
628
  uint8_t **outp);
@@ -639,8 +639,8 @@ OPENSSL_EXPORT int i2d_ASN1_UTF8STRING(const ASN1_UTF8STRING *in,
639
639
  OPENSSL_EXPORT int i2d_ASN1_VISIBLESTRING(const ASN1_VISIBLESTRING *in,
640
640
  uint8_t **outp);
641
641
 
642
- // The following |ASN1_ITEM|s have the ASN.1 type referred to in their name and
643
- // C type |ASN1_STRING*|. The C type may also be written as the corresponding
642
+ // The following `ASN1_ITEM`s have the ASN.1 type referred to in their name and
643
+ // C type `ASN1_STRING*`. The C type may also be written as the corresponding
644
644
  // typedef.
645
645
  DECLARE_ASN1_ITEM(ASN1_BMPSTRING)
646
646
  DECLARE_ASN1_ITEM(ASN1_GENERALSTRING)
@@ -652,27 +652,27 @@ DECLARE_ASN1_ITEM(ASN1_UNIVERSALSTRING)
652
652
  DECLARE_ASN1_ITEM(ASN1_UTF8STRING)
653
653
  DECLARE_ASN1_ITEM(ASN1_VISIBLESTRING)
654
654
 
655
- // ASN1_OCTET_STRING_dup calls |ASN1_STRING_dup|.
655
+ // ASN1_OCTET_STRING_dup calls `ASN1_STRING_dup`.
656
656
  OPENSSL_EXPORT ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(
657
657
  const ASN1_OCTET_STRING *a);
658
658
 
659
- // ASN1_OCTET_STRING_cmp calls |ASN1_STRING_cmp|.
659
+ // ASN1_OCTET_STRING_cmp calls `ASN1_STRING_cmp`.
660
660
  OPENSSL_EXPORT int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a,
661
661
  const ASN1_OCTET_STRING *b);
662
662
 
663
- // ASN1_OCTET_STRING_set calls |ASN1_STRING_set|.
663
+ // ASN1_OCTET_STRING_set calls `ASN1_STRING_set`.
664
664
  OPENSSL_EXPORT int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str,
665
665
  const unsigned char *data, int len);
666
666
 
667
- // ASN1_STRING_to_UTF8 converts |in| to UTF-8. On success, sets |*out| to a
667
+ // ASN1_STRING_to_UTF8 converts `in` to UTF-8. On success, sets `*out` to a
668
668
  // newly-allocated buffer containing the resulting string and returns the length
669
- // of the string. The caller must call |OPENSSL_free| to release |*out| when
669
+ // of the string. The caller must call `OPENSSL_free` to release `*out` when
670
670
  // done. On error, it returns a negative number.
671
671
  OPENSSL_EXPORT int ASN1_STRING_to_UTF8(unsigned char **out,
672
672
  const ASN1_STRING *in);
673
673
 
674
674
  // The following formats define encodings for use with functions like
675
- // |ASN1_mbstring_copy|. Note |MBSTRING_ASC| refers to Latin-1, not ASCII.
675
+ // `ASN1_mbstring_copy`. Note `MBSTRING_ASC` refers to Latin-1, not ASCII.
676
676
  #define MBSTRING_FLAG 0x1000
677
677
  #define MBSTRING_UTF8 (MBSTRING_FLAG)
678
678
  #define MBSTRING_ASC (MBSTRING_FLAG | 1)
@@ -687,77 +687,80 @@ OPENSSL_EXPORT int ASN1_STRING_to_UTF8(unsigned char **out,
687
687
  // PKCS9STRING_TYPE contains the valid string types in a PKCS9String.
688
688
  #define PKCS9STRING_TYPE (DIRSTRING_TYPE | B_ASN1_IA5STRING)
689
689
 
690
- // ASN1_mbstring_copy converts |len| bytes from |in| to an ASN.1 string. If
691
- // |len| is -1, |in| must be NUL-terminated and the length is determined by
692
- // |strlen|. |in| is decoded according to |inform|, which must be one of
693
- // |MBSTRING_*|. |mask| determines the set of valid output types and is a
694
- // bitmask containing a subset of |B_ASN1_PRINTABLESTRING|, |B_ASN1_IA5STRING|,
695
- // |B_ASN1_T61STRING|, |B_ASN1_BMPSTRING|, |B_ASN1_UNIVERSALSTRING|, and
696
- // |B_ASN1_UTF8STRING|, in that preference order. This function chooses the
697
- // first output type in |mask| which can represent |in|. It interprets T61String
690
+ // ASN1_mbstring_copy converts `len` bytes from `in` to an ASN.1 string. If
691
+ // `len` is -1, `in` must be NUL-terminated and the length is determined by
692
+ // `strlen`. `in` is decoded according to `inform`, which must be one of
693
+ // `MBSTRING_*`. `mask` determines the set of valid output types and is a
694
+ // bitmask containing a subset of `B_ASN1_PRINTABLESTRING`, `B_ASN1_IA5STRING`,
695
+ // `B_ASN1_T61STRING`, `B_ASN1_BMPSTRING`, `B_ASN1_UNIVERSALSTRING`, and
696
+ // `B_ASN1_UTF8STRING`, in that preference order. This function chooses the
697
+ // first output type in `mask` which can represent `in`. It interprets T61String
698
698
  // as Latin-1, rather than T.61.
699
699
  //
700
- // If |mask| is zero, |DIRSTRING_TYPE| is used by default.
700
+ // If `mask` is zero, `DIRSTRING_TYPE` is used by default.
701
701
  //
702
- // On success, this function returns the |V_ASN1_*| constant corresponding to
703
- // the selected output type and, if |out| and |*out| are both non-NULL, updates
704
- // the object at |*out| with the result. If |out| is non-NULL and |*out| is
705
- // NULL, it instead sets |*out| to a newly-allocated |ASN1_STRING| containing
706
- // the result. If |out| is NULL, it returns the selected output type without
707
- // constructing an |ASN1_STRING|. On error, this function returns -1.
702
+ // On success, this function returns the `V_ASN1_*` constant corresponding to
703
+ // the selected output type and, if `out` and `*out` are both non-NULL, updates
704
+ // the object at `*out` with the result. If `out` is non-NULL and `*out` is
705
+ // NULL, it instead sets `*out` to a newly-allocated `ASN1_STRING` containing
706
+ // the result. If `out` is NULL, it returns the selected output type without
707
+ // constructing an `ASN1_STRING`. On error, this function returns -1.
708
708
  OPENSSL_EXPORT int ASN1_mbstring_copy(ASN1_STRING **out, const uint8_t *in,
709
709
  ossl_ssize_t len, int inform,
710
710
  unsigned long mask);
711
711
 
712
- // ASN1_mbstring_ncopy behaves like |ASN1_mbstring_copy| but returns an error if
713
- // the input is less than |minsize| or greater than |maxsize| codepoints long. A
714
- // |maxsize| value of zero is ignored. Note the sizes are measured in
712
+ // ASN1_mbstring_ncopy behaves like `ASN1_mbstring_copy` but returns an error if
713
+ // the input is less than `minsize` or greater than `maxsize` codepoints long. A
714
+ // `maxsize` value of zero is ignored. Note the sizes are measured in
715
715
  // codepoints, not output bytes.
716
716
  OPENSSL_EXPORT int ASN1_mbstring_ncopy(ASN1_STRING **out, const uint8_t *in,
717
717
  ossl_ssize_t len, int inform,
718
718
  unsigned long mask, ossl_ssize_t minsize,
719
719
  ossl_ssize_t maxsize);
720
720
 
721
- // ASN1_STRING_set_by_NID behaves like |ASN1_mbstring_ncopy|, but determines
722
- // |mask|, |minsize|, and |maxsize| based on |nid|. When |nid| is a recognized
721
+ // ASN1_STRING_set_by_NID behaves like `ASN1_mbstring_ncopy`, but determines
722
+ // `mask`, `minsize`, and `maxsize` based on `nid`. When `nid` is a recognized
723
723
  // X.509 attribute type, it will pick a suitable ASN.1 string type and bounds.
724
- // For most attribute types, it preferentially chooses UTF8String. If |nid| is
725
- // unrecognized, it uses UTF8String by default.
726
- //
727
- // Slightly unlike |ASN1_mbstring_ncopy|, this function interprets |out| and
728
- // returns its result as follows: If |out| is NULL, it returns a newly-allocated
729
- // |ASN1_STRING| containing the result. If |out| is non-NULL and
730
- // |*out| is NULL, it additionally sets |*out| to the result. If both |out| and
731
- // |*out| are non-NULL, it instead updates the object at |*out| and returns
732
- // |*out|. In all cases, it returns NULL on error.
733
- //
734
- // This function supports the following NIDs: |NID_countryName|,
735
- // |NID_dnQualifier|, |NID_domainComponent|, |NID_friendlyName|,
736
- // |NID_givenName|, |NID_initials|, |NID_localityName|, |NID_ms_csp_name|,
737
- // |NID_name|, |NID_organizationalUnitName|, |NID_organizationName|,
738
- // |NID_pkcs9_challengePassword|, |NID_pkcs9_emailAddress|,
739
- // |NID_pkcs9_unstructuredAddress|, |NID_pkcs9_unstructuredName|,
740
- // |NID_serialNumber|, |NID_stateOrProvinceName|, and |NID_surname|. Additional
741
- // NIDs may be registered with |ASN1_STRING_set_by_NID|, but it is recommended
742
- // to call |ASN1_mbstring_ncopy| directly instead.
724
+ // For most attribute types, it preferentially chooses UTF8String. If `nid` is
725
+ // unrecognized, it uses UTF8String by default. This function will also enforce
726
+ // any known attribute-specific constraints on the sizes of the string and fail
727
+ // if the size is invalid. In RFC 5280, these bounds are specified by
728
+ // constraints like "SIZE (1..ub-common-name)" in ASN.1.
729
+ //
730
+ // Slightly unlike `ASN1_mbstring_ncopy`, this function interprets `out` and
731
+ // returns its result as follows: If `out` is NULL, it returns a newly-allocated
732
+ // `ASN1_STRING` containing the result. If `out` is non-NULL and
733
+ // `*out` is NULL, it additionally sets `*out` to the result. If both `out` and
734
+ // `*out` are non-NULL, it instead updates the object at `*out` and returns
735
+ // `*out`. In all cases, it returns NULL on error.
736
+ //
737
+ // This function supports the following NIDs: `NID_countryName`,
738
+ // `NID_dnQualifier`, `NID_domainComponent`, `NID_friendlyName`,
739
+ // `NID_givenName`, `NID_initials`, `NID_localityName`, `NID_ms_csp_name`,
740
+ // `NID_name`, `NID_organizationalUnitName`, `NID_organizationName`,
741
+ // `NID_pkcs9_challengePassword`, `NID_pkcs9_emailAddress`,
742
+ // `NID_pkcs9_unstructuredAddress`, `NID_pkcs9_unstructuredName`,
743
+ // `NID_serialNumber`, `NID_stateOrProvinceName`, and `NID_surname`. Additional
744
+ // NIDs may be registered with `ASN1_STRING_set_by_NID`, but it is recommended
745
+ // to call `ASN1_mbstring_ncopy` directly instead.
743
746
  OPENSSL_EXPORT ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out,
744
747
  const unsigned char *in,
745
748
  ossl_ssize_t len, int inform,
746
749
  int nid);
747
750
 
748
- // STABLE_NO_MASK causes |ASN1_STRING_TABLE_add| to allow types other than
751
+ // STABLE_NO_MASK causes `ASN1_STRING_TABLE_add` to allow types other than
749
752
  // UTF8String.
750
753
  #define STABLE_NO_MASK 0x02
751
754
 
752
- // ASN1_STRING_TABLE_add registers the corresponding parameters with |nid|, for
753
- // use with |ASN1_STRING_set_by_NID|. It returns one on success and zero on
754
- // error. It is an error to call this function if |nid| is a built-in NID, or
755
+ // ASN1_STRING_TABLE_add registers the corresponding parameters with `nid`, for
756
+ // use with `ASN1_STRING_set_by_NID`. It returns one on success and zero on
757
+ // error. It is an error to call this function if `nid` is a built-in NID, or
755
758
  // was already registered by a previous call.
756
759
  //
757
760
  // WARNING: This function affects global state in the library. If two libraries
758
761
  // in the same address space register information for the same OID, one call
759
- // will fail. Prefer directly passing the desired parametrs to
760
- // |ASN1_mbstring_copy| or |ASN1_mbstring_ncopy| instead.
762
+ // will fail. Prefer directly passing the desired parameters to
763
+ // `ASN1_mbstring_copy` or `ASN1_mbstring_ncopy` instead.
761
764
  OPENSSL_EXPORT int ASN1_STRING_TABLE_add(int nid, long minsize, long maxsize,
762
765
  unsigned long mask,
763
766
  unsigned long flags);
@@ -765,11 +768,11 @@ OPENSSL_EXPORT int ASN1_STRING_TABLE_add(int nid, long minsize, long maxsize,
765
768
 
766
769
  // Multi-strings.
767
770
  //
768
- // A multi-string, or "MSTRING", is an |ASN1_STRING| that represents a CHOICE of
771
+ // A multi-string, or "MSTRING", is an `ASN1_STRING` that represents a CHOICE of
769
772
  // several string or string-like types, such as X.509's DirectoryString. The
770
- // |ASN1_STRING|'s type field determines which type is used.
773
+ // `ASN1_STRING`'s type field determines which type is used.
771
774
  //
772
- // Multi-string types are associated with a bitmask, using the |B_ASN1_*|
775
+ // Multi-string types are associated with a bitmask, using the `B_ASN1_*`
773
776
  // constants, which defines which types are valid.
774
777
 
775
778
  // B_ASN1_DIRECTORYSTRING is a bitmask of types allowed in an X.509
@@ -778,16 +781,16 @@ OPENSSL_EXPORT int ASN1_STRING_TABLE_add(int nid, long minsize, long maxsize,
778
781
  (B_ASN1_PRINTABLESTRING | B_ASN1_TELETEXSTRING | B_ASN1_BMPSTRING | \
779
782
  B_ASN1_UNIVERSALSTRING | B_ASN1_UTF8STRING)
780
783
 
781
- // DIRECTORYSTRING_new returns a newly-allocated |ASN1_STRING| with type -1, or
782
- // NULL on error. The resulting |ASN1_STRING| is not a valid X.509
784
+ // DIRECTORYSTRING_new returns a newly-allocated `ASN1_STRING` with type -1, or
785
+ // NULL on error. The resulting `ASN1_STRING` is not a valid X.509
783
786
  // DirectoryString until initialized with a value.
784
787
  OPENSSL_EXPORT ASN1_STRING *DIRECTORYSTRING_new(void);
785
788
 
786
- // DIRECTORYSTRING_free calls |ASN1_STRING_free|.
789
+ // DIRECTORYSTRING_free calls `ASN1_STRING_free`.
787
790
  OPENSSL_EXPORT void DIRECTORYSTRING_free(ASN1_STRING *str);
788
791
 
789
- // d2i_DIRECTORYSTRING parses up to |len| bytes from |*inp| as a DER-encoded
790
- // X.509 DirectoryString (RFC 5280), as described in |d2i_SAMPLE|.
792
+ // d2i_DIRECTORYSTRING parses up to `len` bytes from `*inp` as a DER-encoded
793
+ // X.509 DirectoryString (RFC 5280), as described in `d2i_SAMPLE`.
791
794
  //
792
795
  // TODO(https://crbug.com/boringssl/354): This function currently also accepts
793
796
  // BER, but this will be removed in the future.
@@ -797,30 +800,26 @@ OPENSSL_EXPORT void DIRECTORYSTRING_free(ASN1_STRING *str);
797
800
  OPENSSL_EXPORT ASN1_STRING *d2i_DIRECTORYSTRING(ASN1_STRING **out,
798
801
  const uint8_t **inp, long len);
799
802
 
800
- // i2d_DIRECTORYSTRING marshals |in| as a DER-encoded X.509 DirectoryString (RFC
801
- // 5280), as described in |i2d_SAMPLE|.
803
+ // i2d_DIRECTORYSTRING marshals `in` as a DER-encoded X.509 DirectoryString (RFC
804
+ // 5280), as described in `i2d_SAMPLE`.
802
805
  OPENSSL_EXPORT int i2d_DIRECTORYSTRING(const ASN1_STRING *in, uint8_t **outp);
803
806
 
804
- // DIRECTORYSTRING is an |ASN1_ITEM| whose ASN.1 type is X.509 DirectoryString
805
- // (RFC 5280) and C type is |ASN1_STRING*|.
806
- DECLARE_ASN1_ITEM(DIRECTORYSTRING)
807
-
808
807
  // B_ASN1_DISPLAYTEXT is a bitmask of types allowed in an X.509 DisplayText (RFC
809
808
  // 5280).
810
809
  #define B_ASN1_DISPLAYTEXT \
811
810
  (B_ASN1_IA5STRING | B_ASN1_VISIBLESTRING | B_ASN1_BMPSTRING | \
812
811
  B_ASN1_UTF8STRING)
813
812
 
814
- // DISPLAYTEXT_new returns a newly-allocated |ASN1_STRING| with type -1, or NULL
815
- // on error. The resulting |ASN1_STRING| is not a valid X.509 DisplayText until
813
+ // DISPLAYTEXT_new returns a newly-allocated `ASN1_STRING` with type -1, or NULL
814
+ // on error. The resulting `ASN1_STRING` is not a valid X.509 DisplayText until
816
815
  // initialized with a value.
817
816
  OPENSSL_EXPORT ASN1_STRING *DISPLAYTEXT_new(void);
818
817
 
819
- // DISPLAYTEXT_free calls |ASN1_STRING_free|.
818
+ // DISPLAYTEXT_free calls `ASN1_STRING_free`.
820
819
  OPENSSL_EXPORT void DISPLAYTEXT_free(ASN1_STRING *str);
821
820
 
822
- // d2i_DISPLAYTEXT parses up to |len| bytes from |*inp| as a DER-encoded X.509
823
- // DisplayText (RFC 5280), as described in |d2i_SAMPLE|.
821
+ // d2i_DISPLAYTEXT parses up to `len` bytes from `*inp` as a DER-encoded X.509
822
+ // DisplayText (RFC 5280), as described in `d2i_SAMPLE`.
824
823
  //
825
824
  // TODO(https://crbug.com/boringssl/354): This function currently also accepts
826
825
  // BER, but this will be removed in the future.
@@ -830,14 +829,10 @@ OPENSSL_EXPORT void DISPLAYTEXT_free(ASN1_STRING *str);
830
829
  OPENSSL_EXPORT ASN1_STRING *d2i_DISPLAYTEXT(ASN1_STRING **out,
831
830
  const uint8_t **inp, long len);
832
831
 
833
- // i2d_DISPLAYTEXT marshals |in| as a DER-encoded X.509 DisplayText (RFC 5280),
834
- // as described in |i2d_SAMPLE|.
832
+ // i2d_DISPLAYTEXT marshals `in` as a DER-encoded X.509 DisplayText (RFC 5280),
833
+ // as described in `i2d_SAMPLE`.
835
834
  OPENSSL_EXPORT int i2d_DISPLAYTEXT(const ASN1_STRING *in, uint8_t **outp);
836
835
 
837
- // DISPLAYTEXT is an |ASN1_ITEM| whose ASN.1 type is X.509 DisplayText (RFC
838
- // 5280) and C type is |ASN1_STRING*|.
839
- DECLARE_ASN1_ITEM(DISPLAYTEXT)
840
-
841
836
 
842
837
  // Bit strings.
843
838
  //
@@ -848,7 +843,7 @@ DECLARE_ASN1_ITEM(DISPLAYTEXT)
848
843
  // Some BIT STRINGs represent a bitmask of named bits, such as the X.509 key
849
844
  // usage extension in RFC 5280, section 4.2.1.3. For such bit strings, DER
850
845
  // imposes an additional restriction that trailing zero bits are removed. Some
851
- // functions like |ASN1_BIT_STRING_set_bit| help in maintaining this.
846
+ // functions like `ASN1_BIT_STRING_set_bit` help in maintaining this.
852
847
  //
853
848
  // Other BIT STRINGs are arbitrary strings of bits used as identifiers and do
854
849
  // not have this constraint, such as the X.509 issuerUniqueID field.
@@ -859,54 +854,51 @@ DECLARE_ASN1_ITEM(DISPLAYTEXT)
859
854
  // AlgorithmIdentifier. While some unknown algorithm could choose to store
860
855
  // arbitrary bit strings, all supported algorithms use a byte string, with bit
861
856
  // order matching the DER encoding. Callers interpreting a BIT STRING as a byte
862
- // string should use |ASN1_BIT_STRING_num_bytes| instead of |ASN1_STRING_length|
863
- // and reject bit strings that are not a whole number of bytes.
857
+ // string should reject bit strings that are not a whole number of bytes by
858
+ // requiring that `ASN1_BIT_STRING_unused_bits` returns zero; the byte length is
859
+ // returned by `ASN1_STRING_length`.
864
860
  //
865
- // This library represents BIT STRINGs as |ASN1_STRING|s with type
866
- // |V_ASN1_BIT_STRING|. The data contains the encoded form of the BIT STRING,
861
+ // This library represents BIT STRINGs as `ASN1_STRING`s with type
862
+ // `V_ASN1_BIT_STRING`. The data contains the encoded form of the BIT STRING,
867
863
  // including any padding bits added to round to a whole number of bytes, but
868
- // excluding the leading byte containing the number of padding bits. If
869
- // |ASN1_STRING_FLAG_BITS_LEFT| is set, the bottom three bits contains the
870
- // number of padding bits. For example, DER encodes the BIT STRING {1, 0} as
871
- // {0x06, 0x80 = 0b10_000000}. The |ASN1_STRING| representation has data of
872
- // {0x80} and flags of ASN1_STRING_FLAG_BITS_LEFT | 6. If
873
- // |ASN1_STRING_FLAG_BITS_LEFT| is unset, trailing zero bits are implicitly
874
- // removed. Callers should not rely this representation when constructing bit
875
- // strings. The padding bits in the |ASN1_STRING| data must be zero.
876
-
877
- // ASN1_BIT_STRING_new calls |ASN1_STRING_type_new| with |V_ASN1_BIT_STRING|.
864
+ // excluding the leading byte containing the number of padding bits. Instead,
865
+ // the bottom three bits of `flags` contain the number of padding bits. For
866
+ // example, DER encodes the BIT STRING {1, 0} as {0x06, 0x80 = 0b10_000000}. The
867
+ // `ASN1_STRING` representation has data of {0x80} and flags of 6.
868
+
869
+ // ASN1_BIT_STRING_new calls `ASN1_STRING_type_new` with `V_ASN1_BIT_STRING`.
878
870
  OPENSSL_EXPORT ASN1_BIT_STRING *ASN1_BIT_STRING_new(void);
879
871
 
880
- // ASN1_BIT_STRING_free calls |ASN1_STRING_free|.
872
+ // ASN1_BIT_STRING_free calls `ASN1_STRING_free`.
881
873
  OPENSSL_EXPORT void ASN1_BIT_STRING_free(ASN1_BIT_STRING *str);
882
874
 
883
- // d2i_ASN1_BIT_STRING parses up to |len| bytes from |*inp| as a DER-encoded
884
- // ASN.1 BIT STRING, as described in |d2i_SAMPLE|.
875
+ // d2i_ASN1_BIT_STRING parses up to `len` bytes from `*inp` as a DER-encoded
876
+ // ASN.1 BIT STRING, as described in `d2i_SAMPLE`.
885
877
  OPENSSL_EXPORT ASN1_BIT_STRING *d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **out,
886
878
  const uint8_t **inp,
887
879
  long len);
888
880
 
889
- // i2d_ASN1_BIT_STRING marshals |in| as a DER-encoded ASN.1 BIT STRING, as
890
- // described in |i2d_SAMPLE|.
881
+ // i2d_ASN1_BIT_STRING marshals `in` as a DER-encoded ASN.1 BIT STRING, as
882
+ // described in `i2d_SAMPLE`.
891
883
  OPENSSL_EXPORT int i2d_ASN1_BIT_STRING(const ASN1_BIT_STRING *in,
892
884
  uint8_t **outp);
893
885
 
894
- // c2i_ASN1_BIT_STRING decodes |len| bytes from |*inp| as the contents of a
886
+ // c2i_ASN1_BIT_STRING decodes `len` bytes from `*inp` as the contents of a
895
887
  // DER-encoded BIT STRING, excluding the tag and length. It behaves like
896
- // |d2i_SAMPLE| except, on success, it always consumes all |len| bytes.
888
+ // `d2i_SAMPLE` except, on success, it always consumes all `len` bytes.
897
889
  OPENSSL_EXPORT ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **out,
898
890
  const uint8_t **inp,
899
891
  long len);
900
892
 
901
- // i2c_ASN1_BIT_STRING encodes |in| as the contents of a DER-encoded BIT STRING,
902
- // excluding the tag and length. If |outp| is non-NULL, it writes the result to
903
- // |*outp|, advances |*outp| just past the output, and returns the number of
904
- // bytes written. |*outp| must have space available for the result. If |outp| is
893
+ // i2c_ASN1_BIT_STRING encodes `in` as the contents of a DER-encoded BIT STRING,
894
+ // excluding the tag and length. If `outp` is non-NULL, it writes the result to
895
+ // `*outp`, advances `*outp` just past the output, and returns the number of
896
+ // bytes written. `*outp` must have space available for the result. If `outp` is
905
897
  // NULL, it returns the number of bytes without writing anything. On error, it
906
898
  // returns a value <= 0.
907
899
  //
908
- // Note this function differs slightly from |i2d_SAMPLE|. If |outp| is non-NULL
909
- // and |*outp| is NULL, it does not allocate a new buffer.
900
+ // Note this function differs slightly from `i2d_SAMPLE`. If `outp` is non-NULL
901
+ // and `*outp` is NULL, it does not allocate a new buffer.
910
902
  //
911
903
  // TODO(davidben): This function currently returns zero on error instead of -1,
912
904
  // but it is also mostly infallible. I've currently documented <= 0 to suggest
@@ -914,44 +906,44 @@ OPENSSL_EXPORT ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **out,
914
906
  OPENSSL_EXPORT int i2c_ASN1_BIT_STRING(const ASN1_BIT_STRING *in,
915
907
  uint8_t **outp);
916
908
 
917
- // ASN1_BIT_STRING is an |ASN1_ITEM| with ASN.1 type BIT STRING and C type
918
- // |ASN1_BIT_STRING*|.
909
+ // ASN1_BIT_STRING is an `ASN1_ITEM` with ASN.1 type BIT STRING and C type
910
+ // `ASN1_BIT_STRING*`.
919
911
  DECLARE_ASN1_ITEM(ASN1_BIT_STRING)
920
912
 
921
- // ASN1_BIT_STRING_num_bytes computes the length of |str| in bytes. If |str|'s
922
- // bit length is a multiple of 8, it sets |*out| to the byte length and returns
923
- // one. Otherwise, it returns zero.
924
- //
925
- // This function may be used with |ASN1_STRING_get0_data| to interpret |str| as
926
- // a byte string.
927
- OPENSSL_EXPORT int ASN1_BIT_STRING_num_bytes(const ASN1_BIT_STRING *str,
928
- size_t *out);
913
+ // ASN1_BIT_STRING_unused_bits returns the number of unused bits in the last
914
+ // byte of `str`. If `str` is empty (i.e. `ASN1_STRING_length` is zero), this
915
+ // always returns zero. Otherwise it returns a number between 0 and 7.
916
+ OPENSSL_EXPORT uint8_t ASN1_BIT_STRING_unused_bits(const ASN1_BIT_STRING *str);
929
917
 
930
- // ASN1_BIT_STRING_set calls |ASN1_STRING_set|. It leaves flags unchanged, so
931
- // the caller must set the number of unused bits.
932
- //
933
- // TODO(davidben): Maybe it should? Wrapping a byte string in a bit string is a
934
- // common use case.
935
- OPENSSL_EXPORT int ASN1_BIT_STRING_set(ASN1_BIT_STRING *str,
936
- const unsigned char *d,
918
+ // ASN1_BIT_STRING_set calls `ASN1_STRING_set`.
919
+ OPENSSL_EXPORT int ASN1_BIT_STRING_set(ASN1_BIT_STRING *str, const uint8_t *data,
937
920
  ossl_ssize_t length);
938
921
 
939
- // ASN1_BIT_STRING_set_bit sets bit |n| of |str| to one if |value| is non-zero
940
- // and zero if |value| is zero, resizing |str| as needed. It then truncates
941
- // trailing zeros in |str| to align with the DER represention for a bit string
942
- // with named bits. It returns one on success and zero on error. |n| is indexed
922
+ // ASN1_BIT_STRING_set1 sets `str` to a BIT STRING containing `length` bytes
923
+ // from `data`. It returns one on success and zero on error. The least
924
+ // significant `unused_bits` of the last byte of `data` are removed from the bit
925
+ // string. The removed bits must all be zero. `unused_bits` must be between 0
926
+ // and 7, and must be 0 if `length` is zero.
927
+ OPENSSL_EXPORT int ASN1_BIT_STRING_set1(ASN1_BIT_STRING *str,
928
+ const uint8_t *data, size_t length,
929
+ int unused_bits);
930
+
931
+ // ASN1_BIT_STRING_set_bit sets bit `n` of `str` to one if `value` is non-zero
932
+ // and zero if `value` is zero, resizing `str` as needed. It then truncates
933
+ // trailing zeros in `str` to align with the DER representation for a bit string
934
+ // with named bits. It returns one on success and zero on error. `n` is indexed
943
935
  // beginning from zero.
944
936
  OPENSSL_EXPORT int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *str, int n,
945
937
  int value);
946
938
 
947
- // ASN1_BIT_STRING_get_bit returns one if bit |n| of |a| is in bounds and set,
948
- // and zero otherwise. |n| is indexed beginning from zero.
939
+ // ASN1_BIT_STRING_get_bit returns one if bit `n` of `a` is in bounds and set,
940
+ // and zero otherwise. `n` is indexed beginning from zero.
949
941
  OPENSSL_EXPORT int ASN1_BIT_STRING_get_bit(const ASN1_BIT_STRING *str, int n);
950
942
 
951
- // ASN1_BIT_STRING_check returns one if |str| only contains bits that are set in
952
- // the |flags_len| bytes pointed by |flags|. Otherwise it returns zero. Bits in
953
- // |flags| are arranged according to the DER representation, so bit 0
954
- // corresponds to the MSB of |flags[0]|.
943
+ // ASN1_BIT_STRING_check returns one if `str` only contains bits that are set in
944
+ // the `flags_len` bytes pointed by `flags`. Otherwise it returns zero. Bits in
945
+ // `flags` are arranged according to the DER representation, so bit 0
946
+ // corresponds to the MSB of `flags[0]`.
955
947
  OPENSSL_EXPORT int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *str,
956
948
  const unsigned char *flags,
957
949
  int flags_len);
@@ -959,162 +951,162 @@ OPENSSL_EXPORT int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *str,
959
951
 
960
952
  // Integers and enumerated values.
961
953
  //
962
- // INTEGER and ENUMERATED values are represented as |ASN1_STRING|s where the
954
+ // INTEGER and ENUMERATED values are represented as `ASN1_STRING`s where the
963
955
  // data contains the big-endian encoding of the absolute value of the integer.
964
956
  // The sign bit is encoded in the type: non-negative values have a type of
965
- // |V_ASN1_INTEGER| or |V_ASN1_ENUMERATED|, while negative values have a type of
966
- // |V_ASN1_NEG_INTEGER| or |V_ASN1_NEG_ENUMERATED|. Note this differs from DER's
957
+ // `V_ASN1_INTEGER` or `V_ASN1_ENUMERATED`, while negative values have a type of
958
+ // `V_ASN1_NEG_INTEGER` or `V_ASN1_NEG_ENUMERATED`. Note this differs from DER's
967
959
  // two's complement representation.
968
960
  //
969
- // The data in the |ASN1_STRING| may not have leading zeros. Note this means
961
+ // The data in the `ASN1_STRING` may not have leading zeros. Note this means
970
962
  // zero is represented as the empty string. Parsing functions will never return
971
963
  // invalid representations. If an invalid input is constructed, the marshaling
972
964
  // functions will skip leading zeros, however other functions, such as
973
- // |ASN1_INTEGER_cmp| or |ASN1_INTEGER_get|, may not return the correct result.
965
+ // `ASN1_INTEGER_cmp` or `ASN1_INTEGER_get`, may not return the correct result.
974
966
 
975
967
  DEFINE_STACK_OF(ASN1_INTEGER)
976
968
 
977
- // ASN1_INTEGER_new calls |ASN1_STRING_type_new| with |V_ASN1_INTEGER|. The
969
+ // ASN1_INTEGER_new calls `ASN1_STRING_type_new` with `V_ASN1_INTEGER`. The
978
970
  // resulting object has value zero.
979
971
  OPENSSL_EXPORT ASN1_INTEGER *ASN1_INTEGER_new(void);
980
972
 
981
- // ASN1_INTEGER_free calls |ASN1_STRING_free|.
973
+ // ASN1_INTEGER_free calls `ASN1_STRING_free`.
982
974
  OPENSSL_EXPORT void ASN1_INTEGER_free(ASN1_INTEGER *str);
983
975
 
984
- // ASN1_INTEGER_dup calls |ASN1_STRING_dup|.
976
+ // ASN1_INTEGER_dup calls `ASN1_STRING_dup`.
985
977
  OPENSSL_EXPORT ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x);
986
978
 
987
- // d2i_ASN1_INTEGER parses up to |len| bytes from |*inp| as a DER-encoded
988
- // ASN.1 INTEGER, as described in |d2i_SAMPLE|.
979
+ // d2i_ASN1_INTEGER parses up to `len` bytes from `*inp` as a DER-encoded
980
+ // ASN.1 INTEGER, as described in `d2i_SAMPLE`.
989
981
  OPENSSL_EXPORT ASN1_INTEGER *d2i_ASN1_INTEGER(ASN1_INTEGER **out,
990
982
  const uint8_t **inp, long len);
991
983
 
992
- // i2d_ASN1_INTEGER marshals |in| as a DER-encoded ASN.1 INTEGER, as
993
- // described in |i2d_SAMPLE|.
984
+ // i2d_ASN1_INTEGER marshals `in` as a DER-encoded ASN.1 INTEGER, as
985
+ // described in `i2d_SAMPLE`.
994
986
  OPENSSL_EXPORT int i2d_ASN1_INTEGER(const ASN1_INTEGER *in, uint8_t **outp);
995
987
 
996
- // c2i_ASN1_INTEGER decodes |len| bytes from |*inp| as the contents of a
988
+ // c2i_ASN1_INTEGER decodes `len` bytes from `*inp` as the contents of a
997
989
  // DER-encoded INTEGER, excluding the tag and length. It behaves like
998
- // |d2i_SAMPLE| except, on success, it always consumes all |len| bytes.
990
+ // `d2i_SAMPLE` except, on success, it always consumes all `len` bytes.
999
991
  OPENSSL_EXPORT ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **in,
1000
992
  const uint8_t **outp, long len);
1001
993
 
1002
- // i2c_ASN1_INTEGER encodes |in| as the contents of a DER-encoded INTEGER,
1003
- // excluding the tag and length. If |outp| is non-NULL, it writes the result to
1004
- // |*outp|, advances |*outp| just past the output, and returns the number of
1005
- // bytes written. |*outp| must have space available for the result. If |outp| is
994
+ // i2c_ASN1_INTEGER encodes `in` as the contents of a DER-encoded INTEGER,
995
+ // excluding the tag and length. If `outp` is non-NULL, it writes the result to
996
+ // `*outp`, advances `*outp` just past the output, and returns the number of
997
+ // bytes written. `*outp` must have space available for the result. If `outp` is
1006
998
  // NULL, it returns the number of bytes without writing anything. On error, it
1007
999
  // returns a value <= 0.
1008
1000
  //
1009
- // Note this function differs slightly from |i2d_SAMPLE|. If |outp| is non-NULL
1010
- // and |*outp| is NULL, it does not allocate a new buffer.
1001
+ // Note this function differs slightly from `i2d_SAMPLE`. If `outp` is non-NULL
1002
+ // and `*outp` is NULL, it does not allocate a new buffer.
1011
1003
  //
1012
1004
  // TODO(davidben): This function currently returns zero on error instead of -1,
1013
1005
  // but it is also mostly infallible. I've currently documented <= 0 to suggest
1014
1006
  // callers work with both.
1015
1007
  OPENSSL_EXPORT int i2c_ASN1_INTEGER(const ASN1_INTEGER *in, uint8_t **outp);
1016
1008
 
1017
- // ASN1_INTEGER is an |ASN1_ITEM| with ASN.1 type INTEGER and C type
1018
- // |ASN1_INTEGER*|.
1009
+ // ASN1_INTEGER is an `ASN1_ITEM` with ASN.1 type INTEGER and C type
1010
+ // `ASN1_INTEGER*`.
1019
1011
  DECLARE_ASN1_ITEM(ASN1_INTEGER)
1020
1012
 
1021
- // ASN1_INTEGER_set_uint64 sets |a| to an INTEGER with value |v|. It returns one
1013
+ // ASN1_INTEGER_set_uint64 sets `a` to an INTEGER with value `v`. It returns one
1022
1014
  // on success and zero on error.
1023
1015
  OPENSSL_EXPORT int ASN1_INTEGER_set_uint64(ASN1_INTEGER *out, uint64_t v);
1024
1016
 
1025
- // ASN1_INTEGER_set_int64 sets |a| to an INTEGER with value |v|. It returns one
1017
+ // ASN1_INTEGER_set_int64 sets `a` to an INTEGER with value `v`. It returns one
1026
1018
  // on success and zero on error.
1027
1019
  OPENSSL_EXPORT int ASN1_INTEGER_set_int64(ASN1_INTEGER *out, int64_t v);
1028
1020
 
1029
- // ASN1_INTEGER_get_uint64 converts |a| to a |uint64_t|. On success, it returns
1030
- // one and sets |*out| to the result. If |a| did not fit or has the wrong type,
1021
+ // ASN1_INTEGER_get_uint64 converts `a` to a `uint64_t`. On success, it returns
1022
+ // one and sets `*out` to the result. If `a` did not fit or has the wrong type,
1031
1023
  // it returns zero.
1032
1024
  OPENSSL_EXPORT int ASN1_INTEGER_get_uint64(uint64_t *out,
1033
1025
  const ASN1_INTEGER *a);
1034
1026
 
1035
- // ASN1_INTEGER_get_int64 converts |a| to a |int64_t|. On success, it returns
1036
- // one and sets |*out| to the result. If |a| did not fit or has the wrong type,
1027
+ // ASN1_INTEGER_get_int64 converts `a` to a `int64_t`. On success, it returns
1028
+ // one and sets `*out` to the result. If `a` did not fit or has the wrong type,
1037
1029
  // it returns zero.
1038
1030
  OPENSSL_EXPORT int ASN1_INTEGER_get_int64(int64_t *out, const ASN1_INTEGER *a);
1039
1031
 
1040
- // BN_to_ASN1_INTEGER sets |ai| to an INTEGER with value |bn| and returns |ai|
1041
- // on success or NULL or error. If |ai| is NULL, it returns a newly-allocated
1042
- // |ASN1_INTEGER| on success instead, which the caller must release with
1043
- // |ASN1_INTEGER_free|.
1032
+ // BN_to_ASN1_INTEGER sets `ai` to an INTEGER with value `bn` and returns `ai`
1033
+ // on success or NULL or error. If `ai` is NULL, it returns a newly-allocated
1034
+ // `ASN1_INTEGER` on success instead, which the caller must release with
1035
+ // `ASN1_INTEGER_free`.
1044
1036
  OPENSSL_EXPORT ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn,
1045
1037
  ASN1_INTEGER *ai);
1046
1038
 
1047
- // ASN1_INTEGER_to_BN sets |bn| to the value of |ai| and returns |bn| on success
1048
- // or NULL or error. If |bn| is NULL, it returns a newly-allocated |BIGNUM| on
1049
- // success instead, which the caller must release with |BN_free|.
1039
+ // ASN1_INTEGER_to_BN sets `bn` to the value of `ai` and returns `bn` on success
1040
+ // or NULL or error. If `bn` is NULL, it returns a newly-allocated `BIGNUM` on
1041
+ // success instead, which the caller must release with `BN_free`.
1050
1042
  OPENSSL_EXPORT BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn);
1051
1043
 
1052
- // ASN1_INTEGER_cmp compares the values of |x| and |y|. It returns an integer
1053
- // equal to, less than, or greater than zero if |x| is equal to, less than, or
1054
- // greater than |y|, respectively.
1044
+ // ASN1_INTEGER_cmp compares the values of `x` and `y`. It returns an integer
1045
+ // equal to, less than, or greater than zero if `x` is equal to, less than, or
1046
+ // greater than `y`, respectively.
1055
1047
  OPENSSL_EXPORT int ASN1_INTEGER_cmp(const ASN1_INTEGER *x,
1056
1048
  const ASN1_INTEGER *y);
1057
1049
 
1058
- // ASN1_ENUMERATED_new calls |ASN1_STRING_type_new| with |V_ASN1_ENUMERATED|.
1050
+ // ASN1_ENUMERATED_new calls `ASN1_STRING_type_new` with `V_ASN1_ENUMERATED`.
1059
1051
  // The resulting object has value zero.
1060
1052
  OPENSSL_EXPORT ASN1_ENUMERATED *ASN1_ENUMERATED_new(void);
1061
1053
 
1062
- // ASN1_ENUMERATED_free calls |ASN1_STRING_free|.
1054
+ // ASN1_ENUMERATED_free calls `ASN1_STRING_free`.
1063
1055
  OPENSSL_EXPORT void ASN1_ENUMERATED_free(ASN1_ENUMERATED *str);
1064
1056
 
1065
- // d2i_ASN1_ENUMERATED parses up to |len| bytes from |*inp| as a DER-encoded
1066
- // ASN.1 ENUMERATED, as described in |d2i_SAMPLE|.
1057
+ // d2i_ASN1_ENUMERATED parses up to `len` bytes from `*inp` as a DER-encoded
1058
+ // ASN.1 ENUMERATED, as described in `d2i_SAMPLE`.
1067
1059
  OPENSSL_EXPORT ASN1_ENUMERATED *d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **out,
1068
1060
  const uint8_t **inp,
1069
1061
  long len);
1070
1062
 
1071
- // i2d_ASN1_ENUMERATED marshals |in| as a DER-encoded ASN.1 ENUMERATED, as
1072
- // described in |i2d_SAMPLE|.
1063
+ // i2d_ASN1_ENUMERATED marshals `in` as a DER-encoded ASN.1 ENUMERATED, as
1064
+ // described in `i2d_SAMPLE`.
1073
1065
  OPENSSL_EXPORT int i2d_ASN1_ENUMERATED(const ASN1_ENUMERATED *in,
1074
1066
  uint8_t **outp);
1075
1067
 
1076
- // ASN1_ENUMERATED is an |ASN1_ITEM| with ASN.1 type ENUMERATED and C type
1077
- // |ASN1_ENUMERATED*|.
1068
+ // ASN1_ENUMERATED is an `ASN1_ITEM` with ASN.1 type ENUMERATED and C type
1069
+ // `ASN1_ENUMERATED*`.
1078
1070
  DECLARE_ASN1_ITEM(ASN1_ENUMERATED)
1079
1071
 
1080
- // ASN1_ENUMERATED_set_uint64 sets |a| to an ENUMERATED with value |v|. It
1072
+ // ASN1_ENUMERATED_set_uint64 sets `a` to an ENUMERATED with value `v`. It
1081
1073
  // returns one on success and zero on error.
1082
1074
  OPENSSL_EXPORT int ASN1_ENUMERATED_set_uint64(ASN1_ENUMERATED *out, uint64_t v);
1083
1075
 
1084
- // ASN1_ENUMERATED_set_int64 sets |a| to an ENUMERATED with value |v|. It
1076
+ // ASN1_ENUMERATED_set_int64 sets `a` to an ENUMERATED with value `v`. It
1085
1077
  // returns one on success and zero on error.
1086
1078
  OPENSSL_EXPORT int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *out, int64_t v);
1087
1079
 
1088
- // ASN1_ENUMERATED_get_uint64 converts |a| to a |uint64_t|. On success, it
1089
- // returns one and sets |*out| to the result. If |a| did not fit or has the
1080
+ // ASN1_ENUMERATED_get_uint64 converts `a` to a `uint64_t`. On success, it
1081
+ // returns one and sets `*out` to the result. If `a` did not fit or has the
1090
1082
  // wrong type, it returns zero.
1091
1083
  OPENSSL_EXPORT int ASN1_ENUMERATED_get_uint64(uint64_t *out,
1092
1084
  const ASN1_ENUMERATED *a);
1093
1085
 
1094
- // ASN1_ENUMERATED_get_int64 converts |a| to a |int64_t|. On success, it
1095
- // returns one and sets |*out| to the result. If |a| did not fit or has the
1086
+ // ASN1_ENUMERATED_get_int64 converts `a` to a `int64_t`. On success, it
1087
+ // returns one and sets `*out` to the result. If `a` did not fit or has the
1096
1088
  // wrong type, it returns zero.
1097
1089
  OPENSSL_EXPORT int ASN1_ENUMERATED_get_int64(int64_t *out,
1098
1090
  const ASN1_ENUMERATED *a);
1099
1091
 
1100
- // BN_to_ASN1_ENUMERATED sets |ai| to an ENUMERATED with value |bn| and returns
1101
- // |ai| on success or NULL or error. If |ai| is NULL, it returns a
1102
- // newly-allocated |ASN1_ENUMERATED| on success instead, which the caller must
1103
- // release with |ASN1_ENUMERATED_free|.
1092
+ // BN_to_ASN1_ENUMERATED sets `ai` to an ENUMERATED with value `bn` and returns
1093
+ // `ai` on success or NULL or error. If `ai` is NULL, it returns a
1094
+ // newly-allocated `ASN1_ENUMERATED` on success instead, which the caller must
1095
+ // release with `ASN1_ENUMERATED_free`.
1104
1096
  OPENSSL_EXPORT ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn,
1105
1097
  ASN1_ENUMERATED *ai);
1106
1098
 
1107
- // ASN1_ENUMERATED_to_BN sets |bn| to the value of |ai| and returns |bn| on
1108
- // success or NULL or error. If |bn| is NULL, it returns a newly-allocated
1109
- // |BIGNUM| on success instead, which the caller must release with |BN_free|.
1099
+ // ASN1_ENUMERATED_to_BN sets `bn` to the value of `ai` and returns `bn` on
1100
+ // success or NULL or error. If `bn` is NULL, it returns a newly-allocated
1101
+ // `BIGNUM` on success instead, which the caller must release with `BN_free`.
1110
1102
  OPENSSL_EXPORT BIGNUM *ASN1_ENUMERATED_to_BN(const ASN1_ENUMERATED *ai,
1111
1103
  BIGNUM *bn);
1112
1104
 
1113
1105
 
1114
1106
  // Time.
1115
1107
  //
1116
- // GeneralizedTime and UTCTime values are represented as |ASN1_STRING|s. The
1117
- // type field is |V_ASN1_GENERALIZEDTIME| or |V_ASN1_UTCTIME|, respectively. The
1108
+ // GeneralizedTime and UTCTime values are represented as `ASN1_STRING`s. The
1109
+ // type field is `V_ASN1_GENERALIZEDTIME` or `V_ASN1_UTCTIME`, respectively. The
1118
1110
  // data field contains the DER encoding of the value. For example, the UNIX
1119
1111
  // epoch would be "19700101000000Z" for a GeneralizedTime and "700101000000Z"
1120
1112
  // for a UTCTime.
@@ -1125,49 +1117,49 @@ OPENSSL_EXPORT BIGNUM *ASN1_ENUMERATED_to_BN(const ASN1_ENUMERATED *ai,
1125
1117
  // BER, and the additional restrictions from RFC 5280, but future versions may.
1126
1118
  // Callers should not rely on fractional seconds and non-UTC time zones.
1127
1119
  //
1128
- // The |ASN1_TIME| typedef is a multi-string representing the X.509 Time type,
1120
+ // The `ASN1_TIME` typedef is a multi-string representing the X.509 Time type,
1129
1121
  // which is a CHOICE of GeneralizedTime and UTCTime, using UTCTime when the
1130
1122
  // value is in range.
1131
1123
 
1132
- // ASN1_UTCTIME_new calls |ASN1_STRING_type_new| with |V_ASN1_UTCTIME|. The
1124
+ // ASN1_UTCTIME_new calls `ASN1_STRING_type_new` with `V_ASN1_UTCTIME`. The
1133
1125
  // resulting object contains empty contents and must be initialized to be a
1134
1126
  // valid UTCTime.
1135
1127
  OPENSSL_EXPORT ASN1_UTCTIME *ASN1_UTCTIME_new(void);
1136
1128
 
1137
- // ASN1_UTCTIME_free calls |ASN1_STRING_free|.
1129
+ // ASN1_UTCTIME_free calls `ASN1_STRING_free`.
1138
1130
  OPENSSL_EXPORT void ASN1_UTCTIME_free(ASN1_UTCTIME *str);
1139
1131
 
1140
- // d2i_ASN1_UTCTIME parses up to |len| bytes from |*inp| as a DER-encoded
1141
- // ASN.1 UTCTime, as described in |d2i_SAMPLE|.
1132
+ // d2i_ASN1_UTCTIME parses up to `len` bytes from `*inp` as a DER-encoded
1133
+ // ASN.1 UTCTime, as described in `d2i_SAMPLE`.
1142
1134
  //
1143
1135
  // TODO(https://crbug.com/boringssl/354): This function currently also accepts
1144
1136
  // BER, but this will be removed in the future.
1145
1137
  OPENSSL_EXPORT ASN1_UTCTIME *d2i_ASN1_UTCTIME(ASN1_UTCTIME **out,
1146
1138
  const uint8_t **inp, long len);
1147
1139
 
1148
- // i2d_ASN1_UTCTIME marshals |in| as a DER-encoded ASN.1 UTCTime, as
1149
- // described in |i2d_SAMPLE|.
1140
+ // i2d_ASN1_UTCTIME marshals `in` as a DER-encoded ASN.1 UTCTime, as
1141
+ // described in `i2d_SAMPLE`.
1150
1142
  OPENSSL_EXPORT int i2d_ASN1_UTCTIME(const ASN1_UTCTIME *in, uint8_t **outp);
1151
1143
 
1152
- // ASN1_UTCTIME is an |ASN1_ITEM| with ASN.1 type UTCTime and C type
1153
- // |ASN1_UTCTIME*|.
1144
+ // ASN1_UTCTIME is an `ASN1_ITEM` with ASN.1 type UTCTime and C type
1145
+ // `ASN1_UTCTIME*`.
1154
1146
  DECLARE_ASN1_ITEM(ASN1_UTCTIME)
1155
1147
 
1156
- // ASN1_UTCTIME_check returns one if |a| is a valid UTCTime and zero otherwise.
1148
+ // ASN1_UTCTIME_check returns one if `a` is a valid UTCTime and zero otherwise.
1157
1149
  OPENSSL_EXPORT int ASN1_UTCTIME_check(const ASN1_UTCTIME *a);
1158
1150
 
1159
- // ASN1_UTCTIME_set represents |posix_time| as a UTCTime and writes the result
1160
- // to |s|. It returns |s| on success and NULL on error. If |s| is NULL, it
1161
- // returns a newly-allocated |ASN1_UTCTIME| instead.
1151
+ // ASN1_UTCTIME_set represents `posix_time` as a UTCTime and writes the result
1152
+ // to `s`. It returns `s` on success and NULL on error. If `s` is NULL, it
1153
+ // returns a newly-allocated `ASN1_UTCTIME` instead.
1162
1154
  //
1163
1155
  // Note this function may fail if the time is out of range for UTCTime.
1164
1156
  OPENSSL_EXPORT ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s,
1165
1157
  int64_t posix_time);
1166
1158
 
1167
- // ASN1_UTCTIME_adj adds |offset_day| days and |offset_sec| seconds to
1168
- // |posix_time| and writes the result to |s| as a UTCTime. It returns |s| on
1169
- // success and NULL on error. If |s| is NULL, it returns a newly-allocated
1170
- // |ASN1_UTCTIME| instead.
1159
+ // ASN1_UTCTIME_adj adds `offset_day` days and `offset_sec` seconds to
1160
+ // `posix_time` and writes the result to `s` as a UTCTime. It returns `s` on
1161
+ // success and NULL on error. If `s` is NULL, it returns a newly-allocated
1162
+ // `ASN1_UTCTIME` instead.
1171
1163
  //
1172
1164
  // Note this function may fail if the time overflows or is out of range for
1173
1165
  // UTCTime.
@@ -1175,51 +1167,51 @@ OPENSSL_EXPORT ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s,
1175
1167
  int64_t posix_time,
1176
1168
  int offset_day, long offset_sec);
1177
1169
 
1178
- // ASN1_UTCTIME_set_string sets |s| to a UTCTime whose contents are a copy of
1179
- // |str|. It returns one on success and zero on error or if |str| is not a valid
1170
+ // ASN1_UTCTIME_set_string sets `s` to a UTCTime whose contents are a copy of
1171
+ // `str`. It returns one on success and zero on error or if `str` is not a valid
1180
1172
  // UTCTime.
1181
1173
  //
1182
- // If |s| is NULL, this function validates |str| without copying it.
1174
+ // If `s` is NULL, this function validates `str` without copying it.
1183
1175
  OPENSSL_EXPORT int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str);
1184
1176
 
1185
- // ASN1_GENERALIZEDTIME_new calls |ASN1_STRING_type_new| with
1186
- // |V_ASN1_GENERALIZEDTIME|. The resulting object contains empty contents and
1177
+ // ASN1_GENERALIZEDTIME_new calls `ASN1_STRING_type_new` with
1178
+ // `V_ASN1_GENERALIZEDTIME`. The resulting object contains empty contents and
1187
1179
  // must be initialized to be a valid GeneralizedTime.
1188
1180
  OPENSSL_EXPORT ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_new(void);
1189
1181
 
1190
- // ASN1_GENERALIZEDTIME_free calls |ASN1_STRING_free|.
1182
+ // ASN1_GENERALIZEDTIME_free calls `ASN1_STRING_free`.
1191
1183
  OPENSSL_EXPORT void ASN1_GENERALIZEDTIME_free(ASN1_GENERALIZEDTIME *str);
1192
1184
 
1193
- // d2i_ASN1_GENERALIZEDTIME parses up to |len| bytes from |*inp| as a
1194
- // DER-encoded ASN.1 GeneralizedTime, as described in |d2i_SAMPLE|.
1185
+ // d2i_ASN1_GENERALIZEDTIME parses up to `len` bytes from `*inp` as a
1186
+ // DER-encoded ASN.1 GeneralizedTime, as described in `d2i_SAMPLE`.
1195
1187
  OPENSSL_EXPORT ASN1_GENERALIZEDTIME *d2i_ASN1_GENERALIZEDTIME(
1196
1188
  ASN1_GENERALIZEDTIME **out, const uint8_t **inp, long len);
1197
1189
 
1198
- // i2d_ASN1_GENERALIZEDTIME marshals |in| as a DER-encoded ASN.1
1199
- // GeneralizedTime, as described in |i2d_SAMPLE|.
1190
+ // i2d_ASN1_GENERALIZEDTIME marshals `in` as a DER-encoded ASN.1
1191
+ // GeneralizedTime, as described in `i2d_SAMPLE`.
1200
1192
  OPENSSL_EXPORT int i2d_ASN1_GENERALIZEDTIME(const ASN1_GENERALIZEDTIME *in,
1201
1193
  uint8_t **outp);
1202
1194
 
1203
- // ASN1_GENERALIZEDTIME is an |ASN1_ITEM| with ASN.1 type GeneralizedTime and C
1204
- // type |ASN1_GENERALIZEDTIME*|.
1195
+ // ASN1_GENERALIZEDTIME is an `ASN1_ITEM` with ASN.1 type GeneralizedTime and C
1196
+ // type `ASN1_GENERALIZEDTIME*`.
1205
1197
  DECLARE_ASN1_ITEM(ASN1_GENERALIZEDTIME)
1206
1198
 
1207
- // ASN1_GENERALIZEDTIME_check returns one if |a| is a valid GeneralizedTime and
1199
+ // ASN1_GENERALIZEDTIME_check returns one if `a` is a valid GeneralizedTime and
1208
1200
  // zero otherwise.
1209
1201
  OPENSSL_EXPORT int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a);
1210
1202
 
1211
- // ASN1_GENERALIZEDTIME_set represents |posix_time| as a GeneralizedTime and
1212
- // writes the result to |s|. It returns |s| on success and NULL on error. If |s|
1213
- // is NULL, it returns a newly-allocated |ASN1_GENERALIZEDTIME| instead.
1203
+ // ASN1_GENERALIZEDTIME_set represents `posix_time` as a GeneralizedTime and
1204
+ // writes the result to `s`. It returns `s` on success and NULL on error. If `s`
1205
+ // is NULL, it returns a newly-allocated `ASN1_GENERALIZEDTIME` instead.
1214
1206
  //
1215
1207
  // Note this function may fail if the time is out of range for GeneralizedTime.
1216
1208
  OPENSSL_EXPORT ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(
1217
1209
  ASN1_GENERALIZEDTIME *s, int64_t posix_time);
1218
1210
 
1219
- // ASN1_GENERALIZEDTIME_adj adds |offset_day| days and |offset_sec| seconds to
1220
- // |posix_time| and writes the result to |s| as a GeneralizedTime. It returns
1221
- // |s| on success and NULL on error. If |s| is NULL, it returns a
1222
- // newly-allocated |ASN1_GENERALIZEDTIME| instead.
1211
+ // ASN1_GENERALIZEDTIME_adj adds `offset_day` days and `offset_sec` seconds to
1212
+ // `posix_time` and writes the result to `s` as a GeneralizedTime. It returns
1213
+ // `s` on success and NULL on error. If `s` is NULL, it returns a
1214
+ // newly-allocated `ASN1_GENERALIZEDTIME` instead.
1223
1215
  //
1224
1216
  // Note this function may fail if the time overflows or is out of range for
1225
1217
  // GeneralizedTime.
@@ -1227,114 +1219,110 @@ OPENSSL_EXPORT ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(
1227
1219
  ASN1_GENERALIZEDTIME *s, int64_t posix_time, int offset_day,
1228
1220
  long offset_sec);
1229
1221
 
1230
- // ASN1_GENERALIZEDTIME_set_string sets |s| to a GeneralizedTime whose contents
1231
- // are a copy of |str|. It returns one on success and zero on error or if |str|
1222
+ // ASN1_GENERALIZEDTIME_set_string sets `s` to a GeneralizedTime whose contents
1223
+ // are a copy of `str`. It returns one on success and zero on error or if `str`
1232
1224
  // is not a valid GeneralizedTime.
1233
1225
  //
1234
- // If |s| is NULL, this function validates |str| without copying it.
1226
+ // If `s` is NULL, this function validates `str` without copying it.
1235
1227
  OPENSSL_EXPORT int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s,
1236
1228
  const char *str);
1237
1229
 
1238
1230
  // B_ASN1_TIME is a bitmask of types allowed in an X.509 Time.
1239
1231
  #define B_ASN1_TIME (B_ASN1_UTCTIME | B_ASN1_GENERALIZEDTIME)
1240
1232
 
1241
- // ASN1_TIME_new returns a newly-allocated |ASN1_TIME| with type -1, or NULL on
1242
- // error. The resulting |ASN1_TIME| is not a valid X.509 Time until initialized
1233
+ // ASN1_TIME_new returns a newly-allocated `ASN1_TIME` with type -1, or NULL on
1234
+ // error. The resulting `ASN1_TIME` is not a valid X.509 Time until initialized
1243
1235
  // with a value.
1244
1236
  OPENSSL_EXPORT ASN1_TIME *ASN1_TIME_new(void);
1245
1237
 
1246
- // ASN1_TIME_free releases memory associated with |str|.
1238
+ // ASN1_TIME_free releases memory associated with `str`.
1247
1239
  OPENSSL_EXPORT void ASN1_TIME_free(ASN1_TIME *str);
1248
1240
 
1249
- // d2i_ASN1_TIME parses up to |len| bytes from |*inp| as a DER-encoded X.509
1250
- // Time (RFC 5280), as described in |d2i_SAMPLE|.
1241
+ // d2i_ASN1_TIME parses up to `len` bytes from `*inp` as a DER-encoded X.509
1242
+ // Time (RFC 5280), as described in `d2i_SAMPLE`.
1251
1243
  //
1252
1244
  // TODO(https://crbug.com/boringssl/354): This function currently also accepts
1253
1245
  // BER, but this will be removed in the future.
1254
1246
  OPENSSL_EXPORT ASN1_TIME *d2i_ASN1_TIME(ASN1_TIME **out, const uint8_t **inp,
1255
1247
  long len);
1256
1248
 
1257
- // i2d_ASN1_TIME marshals |in| as a DER-encoded X.509 Time (RFC 5280), as
1258
- // described in |i2d_SAMPLE|.
1249
+ // i2d_ASN1_TIME marshals `in` as a DER-encoded X.509 Time (RFC 5280), as
1250
+ // described in `i2d_SAMPLE`.
1259
1251
  OPENSSL_EXPORT int i2d_ASN1_TIME(const ASN1_TIME *in, uint8_t **outp);
1260
1252
 
1261
- // ASN1_TIME is an |ASN1_ITEM| whose ASN.1 type is X.509 Time (RFC 5280) and C
1262
- // type is |ASN1_TIME*|.
1263
- DECLARE_ASN1_ITEM(ASN1_TIME)
1264
-
1265
- // ASN1_TIME_diff computes |to| - |from|. On success, it sets |*out_days| to the
1266
- // difference in days, rounded towards zero, sets |*out_seconds| to the
1253
+ // ASN1_TIME_diff computes `to` - `from`. On success, it sets `*out_days` to the
1254
+ // difference in days, rounded towards zero, sets `*out_seconds` to the
1267
1255
  // remainder, and returns one. On error, it returns zero.
1268
1256
  //
1269
- // If |from| is before |to|, both outputs will be <= 0, with at least one
1270
- // negative. If |from| is after |to|, both will be >= 0, with at least one
1257
+ // If `from` is before `to`, both outputs will be <= 0, with at least one
1258
+ // negative. If `from` is after `to`, both will be >= 0, with at least one
1271
1259
  // positive. If they are equal, ignoring fractional seconds, both will be zero.
1272
1260
  //
1273
- // Note this function may fail on overflow, or if |from| or |to| cannot be
1261
+ // Note this function may fail on overflow, or if `from` or `to` cannot be
1274
1262
  // decoded.
1275
1263
  OPENSSL_EXPORT int ASN1_TIME_diff(int *out_days, int *out_seconds,
1276
1264
  const ASN1_TIME *from, const ASN1_TIME *to);
1277
1265
 
1278
- // ASN1_TIME_set_posix represents |posix_time| as a GeneralizedTime or UTCTime
1279
- // and writes the result to |s|. As in RFC 5280, section 4.1.2.5, it uses
1280
- // UTCTime when the time fits and GeneralizedTime otherwise. It returns |s| on
1281
- // success and NULL on error. If |s| is NULL, it returns a newly-allocated
1282
- // |ASN1_TIME| instead.
1266
+ // ASN1_TIME_set_posix represents `posix_time` as a GeneralizedTime or UTCTime
1267
+ // and writes the result to `s`. As in RFC 5280, section 4.1.2.5, it uses
1268
+ // UTCTime when the time fits and GeneralizedTime otherwise. It returns `s` on
1269
+ // success and NULL on error. If `s` is NULL, it returns a newly-allocated
1270
+ // `ASN1_TIME` instead.
1283
1271
  //
1284
1272
  // Note this function may fail if the time is out of range for GeneralizedTime.
1285
1273
  OPENSSL_EXPORT ASN1_TIME *ASN1_TIME_set_posix(ASN1_TIME *s, int64_t posix_time);
1286
1274
 
1287
- // ASN1_TIME_set is exactly the same as |ASN1_TIME_set_posix| but with a
1275
+ // ASN1_TIME_set is exactly the same as `ASN1_TIME_set_posix` but with a
1288
1276
  // time_t as input for compatibility.
1289
1277
  OPENSSL_EXPORT ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t time);
1290
1278
 
1291
- // ASN1_TIME_adj adds |offset_day| days and |offset_sec| seconds to
1292
- // |posix_time| and writes the result to |s|. As in RFC 5280, section 4.1.2.5,
1279
+ // ASN1_TIME_adj adds `offset_day` days and `offset_sec` seconds to
1280
+ // `posix_time` and writes the result to `s`. As in RFC 5280, section 4.1.2.5,
1293
1281
  // it uses UTCTime when the time fits and GeneralizedTime otherwise. It returns
1294
- // |s| on success and NULL on error. If |s| is NULL, it returns a
1295
- // newly-allocated |ASN1_GENERALIZEDTIME| instead.
1282
+ // `s` on success and NULL on error. If `s` is NULL, it returns a
1283
+ // newly-allocated `ASN1_GENERALIZEDTIME` instead.
1296
1284
  //
1297
1285
  // Note this function may fail if the time overflows or is out of range for
1298
1286
  // GeneralizedTime.
1299
1287
  OPENSSL_EXPORT ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, int64_t posix_time,
1300
1288
  int offset_day, long offset_sec);
1301
1289
 
1302
- // ASN1_TIME_check returns one if |t| is a valid UTCTime or GeneralizedTime, and
1303
- // zero otherwise. |t|'s type determines which check is performed. This
1290
+ // ASN1_TIME_check returns one if `t` is a valid UTCTime or GeneralizedTime, and
1291
+ // zero otherwise. `t`'s type determines which check is performed. This
1304
1292
  // function does not enforce that UTCTime was used when possible.
1305
1293
  OPENSSL_EXPORT int ASN1_TIME_check(const ASN1_TIME *t);
1306
1294
 
1307
- // ASN1_TIME_to_generalizedtime converts |t| to a GeneralizedTime. If |out| is
1308
- // NULL, it returns a newly-allocated |ASN1_GENERALIZEDTIME| on success, or NULL
1309
- // on error. If |out| is non-NULL and |*out| is NULL, it additionally sets
1310
- // |*out| to the result. If |out| and |*out| are non-NULL, it instead updates
1311
- // the object pointed by |*out| and returns |*out| on success or NULL on error.
1295
+ // ASN1_TIME_to_generalizedtime converts `t` to a GeneralizedTime. If `out` is
1296
+ // NULL, it returns a newly-allocated `ASN1_GENERALIZEDTIME` on success, or NULL
1297
+ // on error. If `out` is non-NULL and `*out` is NULL, it additionally sets
1298
+ // `*out` to the result. If `out` and `*out` are non-NULL, it instead updates
1299
+ // the object pointed by `*out` and returns `*out` on success or NULL on error.
1312
1300
  OPENSSL_EXPORT ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(
1313
1301
  const ASN1_TIME *t, ASN1_GENERALIZEDTIME **out);
1314
1302
 
1315
- // ASN1_TIME_set_string behaves like |ASN1_UTCTIME_set_string| if |str| is a
1316
- // valid UTCTime, and |ASN1_GENERALIZEDTIME_set_string| if |str| is a valid
1317
- // GeneralizedTime. If |str| is neither, it returns zero.
1303
+ // ASN1_TIME_set_string behaves like `ASN1_UTCTIME_set_string` if `str` is a
1304
+ // valid UTCTime, and `ASN1_GENERALIZEDTIME_set_string` if `str` is a valid
1305
+ // GeneralizedTime. If `str` is neither, it returns zero.
1318
1306
  OPENSSL_EXPORT int ASN1_TIME_set_string(ASN1_TIME *s, const char *str);
1319
1307
 
1320
- // ASN1_TIME_set_string_X509 behaves like |ASN1_TIME_set_string| except it
1308
+ // ASN1_TIME_set_string_X509 behaves like `ASN1_TIME_set_string` except it
1321
1309
  // additionally converts GeneralizedTime to UTCTime if it is in the range where
1322
1310
  // UTCTime is used. See RFC 5280, section 4.1.2.5.
1323
1311
  OPENSSL_EXPORT int ASN1_TIME_set_string_X509(ASN1_TIME *s, const char *str);
1324
1312
 
1325
- // ASN1_TIME_to_time_t converts |t| to a time_t value in |out|. On
1313
+ // ASN1_TIME_to_time_t converts `t` to a time_t value in `out`. On
1326
1314
  // success, one is returned. On failure, zero is returned. This function
1327
1315
  // will fail if the time can not be represented in a time_t.
1328
1316
  OPENSSL_EXPORT int ASN1_TIME_to_time_t(const ASN1_TIME *t, time_t *out);
1329
1317
 
1330
- // ASN1_TIME_to_posix converts |t| to a POSIX time value in |out|. On
1318
+ // ASN1_TIME_to_posix converts `t` to a POSIX time value in `out`. On
1331
1319
  // success, one is returned. On failure, zero is returned.
1332
1320
  OPENSSL_EXPORT int ASN1_TIME_to_posix(const ASN1_TIME *t, int64_t *out);
1333
1321
 
1334
- // ASN1_TIME_to_posix_nonstandard converts |t| to a POSIX time value in
1335
- // |out|. It is exactly the same as |ASN1_TIME_to_posix| but allows for
1322
+ // ASN1_TIME_to_posix_nonstandard converts `t` to a POSIX time value in
1323
+ // `out`. It is exactly the same as `ASN1_TIME_to_posix` but allows for
1336
1324
  // non-standard four-digit timezone offsets on UTC times. On success, one is
1337
- // returned. On failure, zero is returned. |ASN1_TIME_to_posix| should normally
1325
+ // returned. On failure, zero is returned. `ASN1_TIME_to_posix` should normally
1338
1326
  // be used instead of this function.
1339
1327
  OPENSSL_EXPORT int ASN1_TIME_to_posix_nonstandard(
1340
1328
  const ASN1_TIME *t, int64_t *out);
@@ -1345,120 +1333,120 @@ OPENSSL_EXPORT int ASN1_TIME_to_posix_nonstandard(
1345
1333
  // NULL values.
1346
1334
  //
1347
1335
  // This library represents the ASN.1 NULL value by a non-NULL pointer to the
1348
- // opaque type |ASN1_NULL|. An omitted OPTIONAL ASN.1 NULL value is a NULL
1349
- // pointer. Unlike other pointer types, it is not necessary to free |ASN1_NULL|
1336
+ // opaque type `ASN1_NULL`. An omitted OPTIONAL ASN.1 NULL value is a NULL
1337
+ // pointer. Unlike other pointer types, it is not necessary to free `ASN1_NULL`
1350
1338
  // pointers, but it is safe to do so.
1351
1339
 
1352
1340
  // ASN1_NULL_new returns an opaque, non-NULL pointer. It is safe to call
1353
- // |ASN1_NULL_free| on the result, but not necessary.
1341
+ // `ASN1_NULL_free` on the result, but not necessary.
1354
1342
  OPENSSL_EXPORT ASN1_NULL *ASN1_NULL_new(void);
1355
1343
 
1356
1344
  // ASN1_NULL_free does nothing.
1357
1345
  OPENSSL_EXPORT void ASN1_NULL_free(ASN1_NULL *null);
1358
1346
 
1359
- // d2i_ASN1_NULL parses a DER-encoded ASN.1 NULL value from up to |len| bytes
1360
- // at |*inp|, as described in |d2i_SAMPLE|.
1347
+ // d2i_ASN1_NULL parses a DER-encoded ASN.1 NULL value from up to `len` bytes
1348
+ // at `*inp`, as described in `d2i_SAMPLE`.
1361
1349
  OPENSSL_EXPORT ASN1_NULL *d2i_ASN1_NULL(ASN1_NULL **out, const uint8_t **inp,
1362
1350
  long len);
1363
1351
 
1364
- // i2d_ASN1_NULL marshals |in| as a DER-encoded ASN.1 NULL value, as described
1365
- // in |i2d_SAMPLE|.
1352
+ // i2d_ASN1_NULL marshals `in` as a DER-encoded ASN.1 NULL value, as described
1353
+ // in `i2d_SAMPLE`.
1366
1354
  OPENSSL_EXPORT int i2d_ASN1_NULL(const ASN1_NULL *in, uint8_t **outp);
1367
1355
 
1368
- // ASN1_NULL is an |ASN1_ITEM| with ASN.1 type NULL and C type |ASN1_NULL*|.
1356
+ // ASN1_NULL is an `ASN1_ITEM` with ASN.1 type NULL and C type `ASN1_NULL*`.
1369
1357
  DECLARE_ASN1_ITEM(ASN1_NULL)
1370
1358
 
1371
1359
 
1372
1360
  // Object identifiers.
1373
1361
  //
1374
- // An |ASN1_OBJECT| represents a ASN.1 OBJECT IDENTIFIER. See also obj.h for
1375
- // additional functions relating to |ASN1_OBJECT|.
1362
+ // An `ASN1_OBJECT` represents a ASN.1 OBJECT IDENTIFIER. See also obj.h for
1363
+ // additional functions relating to `ASN1_OBJECT`.
1376
1364
  //
1377
1365
  // TODO(davidben): What's the relationship between asn1.h and obj.h? Most of
1378
- // obj.h deals with the large NID table, but then functions like |OBJ_get0_data|
1379
- // or |OBJ_dup| are general |ASN1_OBJECT| functions.
1366
+ // obj.h deals with the large NID table, but then functions like `OBJ_get0_data`
1367
+ // or `OBJ_dup` are general `ASN1_OBJECT` functions.
1380
1368
 
1381
1369
  DEFINE_STACK_OF(ASN1_OBJECT)
1382
1370
 
1383
- // ASN1_OBJECT_create returns a newly-allocated |ASN1_OBJECT| with |len| bytes
1384
- // from |data| as the encoded OID, or NULL on error. |data| should contain the
1371
+ // ASN1_OBJECT_create returns a newly-allocated `ASN1_OBJECT` with `len` bytes
1372
+ // from `data` as the encoded OID, or NULL on error. `data` should contain the
1385
1373
  // DER-encoded identifier, excluding the tag and length.
1386
1374
  //
1387
- // |nid| should be |NID_undef|. Passing a NID value that does not match |data|
1388
- // will cause some functions to misbehave. |sn| and |ln| should be NULL. If
1375
+ // `nid` should be `NID_undef`. Passing a NID value that does not match `data`
1376
+ // will cause some functions to misbehave. `sn` and `ln` should be NULL. If
1389
1377
  // non-NULL, they are stored as short and long names, respectively, but these
1390
- // values have no effect for |ASN1_OBJECT|s created through this function.
1378
+ // values have no effect for `ASN1_OBJECT`s created through this function.
1391
1379
  //
1392
1380
  // TODO(davidben): Should we just ignore all those parameters? NIDs and names
1393
- // are only relevant for |ASN1_OBJECT|s in the obj.h table.
1381
+ // are only relevant for `ASN1_OBJECT`s in the obj.h table.
1394
1382
  OPENSSL_EXPORT ASN1_OBJECT *ASN1_OBJECT_create(int nid, const uint8_t *data,
1395
1383
  size_t len, const char *sn,
1396
1384
  const char *ln);
1397
1385
 
1398
- // ASN1_OBJECT_free releases memory associated with |a|. If |a| is a static
1399
- // |ASN1_OBJECT|, returned from |OBJ_nid2obj|, this function does nothing.
1386
+ // ASN1_OBJECT_free releases memory associated with `a`. If `a` is a static
1387
+ // `ASN1_OBJECT`, returned from `OBJ_nid2obj`, this function does nothing.
1400
1388
  OPENSSL_EXPORT void ASN1_OBJECT_free(ASN1_OBJECT *a);
1401
1389
 
1402
- // d2i_ASN1_OBJECT parses a DER-encoded ASN.1 OBJECT IDENTIFIER from up to |len|
1403
- // bytes at |*inp|, as described in |d2i_SAMPLE|.
1390
+ // d2i_ASN1_OBJECT parses a DER-encoded ASN.1 OBJECT IDENTIFIER from up to `len`
1391
+ // bytes at `*inp`, as described in `d2i_SAMPLE`.
1404
1392
  OPENSSL_EXPORT ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **out,
1405
1393
  const uint8_t **inp, long len);
1406
1394
 
1407
- // i2d_ASN1_OBJECT marshals |in| as a DER-encoded ASN.1 OBJECT IDENTIFIER, as
1408
- // described in |i2d_SAMPLE|.
1395
+ // i2d_ASN1_OBJECT marshals `in` as a DER-encoded ASN.1 OBJECT IDENTIFIER, as
1396
+ // described in `i2d_SAMPLE`.
1409
1397
  OPENSSL_EXPORT int i2d_ASN1_OBJECT(const ASN1_OBJECT *in, uint8_t **outp);
1410
1398
 
1411
- // c2i_ASN1_OBJECT decodes |len| bytes from |*inp| as the contents of a
1399
+ // c2i_ASN1_OBJECT decodes `len` bytes from `*inp` as the contents of a
1412
1400
  // DER-encoded OBJECT IDENTIFIER, excluding the tag and length. It behaves like
1413
- // |d2i_SAMPLE| except, on success, it always consumes all |len| bytes.
1401
+ // `d2i_SAMPLE` except, on success, it always consumes all `len` bytes.
1414
1402
  OPENSSL_EXPORT ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **out,
1415
1403
  const uint8_t **inp, long len);
1416
1404
 
1417
- // ASN1_OBJECT is an |ASN1_ITEM| with ASN.1 type OBJECT IDENTIFIER and C type
1418
- // |ASN1_OBJECT*|.
1405
+ // ASN1_OBJECT is an `ASN1_ITEM` with ASN.1 type OBJECT IDENTIFIER and C type
1406
+ // `ASN1_OBJECT*`.
1419
1407
  DECLARE_ASN1_ITEM(ASN1_OBJECT)
1420
1408
 
1421
1409
 
1422
1410
  // Arbitrary elements.
1423
1411
 
1424
- // An asn1_type_st (aka |ASN1_TYPE|) represents an arbitrary ASN.1 element,
1425
- // typically used for ANY types. It contains a |type| field and a |value| union
1426
- // dependent on |type|.
1412
+ // An asn1_type_st (aka `ASN1_TYPE`) represents an arbitrary ASN.1 element,
1413
+ // typically used for ANY types. It contains a `type` field and a `value` union
1414
+ // dependent on `type`.
1427
1415
  //
1428
1416
  // WARNING: This struct has a complex representation. Callers must not construct
1429
- // |ASN1_TYPE| values manually. Use |ASN1_TYPE_set| and |ASN1_TYPE_set1|
1417
+ // `ASN1_TYPE` values manually. Use `ASN1_TYPE_set` and `ASN1_TYPE_set1`
1430
1418
  // instead. Additionally, callers performing non-trivial operations on this type
1431
- // are encouraged to use |CBS| and |CBB| from <openssl/bytestring.h>, and
1432
- // convert to or from |ASN1_TYPE| with |d2i_ASN1_TYPE| or |i2d_ASN1_TYPE|.
1419
+ // are encouraged to use `CBS` and `CBB` from <openssl/bytestring.h>, and
1420
+ // convert to or from `ASN1_TYPE` with `d2i_ASN1_TYPE` or `i2d_ASN1_TYPE`.
1433
1421
  //
1434
- // The |type| field corresponds to the tag of the ASN.1 element being
1422
+ // The `type` field corresponds to the tag of the ASN.1 element being
1435
1423
  // represented:
1436
1424
  //
1437
- // If |type| is a |V_ASN1_*| constant for an ASN.1 string-like type, as defined
1438
- // by |ASN1_STRING|, the tag matches the constant. |value| contains an
1439
- // |ASN1_STRING| pointer (equivalently, one of the more specific typedefs). See
1440
- // |ASN1_STRING| for details on the representation. Unlike |ASN1_STRING|,
1441
- // |ASN1_TYPE| does not use the |V_ASN1_NEG| flag for negative INTEGER and
1442
- // ENUMERATE values. For a negative value, the |ASN1_TYPE|'s |type| will be
1443
- // |V_ASN1_INTEGER| or |V_ASN1_ENUMERATED|, but |value| will an |ASN1_STRING|
1444
- // whose |type| is |V_ASN1_NEG_INTEGER| or |V_ASN1_NEG_ENUMERATED|.
1425
+ // If `type` is a `V_ASN1_*` constant for an ASN.1 string-like type, as defined
1426
+ // by `ASN1_STRING`, the tag matches the constant. `value` contains an
1427
+ // `ASN1_STRING` pointer (equivalently, one of the more specific typedefs). See
1428
+ // `ASN1_STRING` for details on the representation. Unlike `ASN1_STRING`,
1429
+ // `ASN1_TYPE` does not use the `V_ASN1_NEG` flag for negative INTEGER and
1430
+ // ENUMERATE values. For a negative value, the `ASN1_TYPE`'s `type` will be
1431
+ // `V_ASN1_INTEGER` or `V_ASN1_ENUMERATED`, but `value` will an `ASN1_STRING`
1432
+ // whose `type` is `V_ASN1_NEG_INTEGER` or `V_ASN1_NEG_ENUMERATED`.
1445
1433
  //
1446
- // If |type| is |V_ASN1_OBJECT|, the tag is OBJECT IDENTIFIER and |value|
1447
- // contains an |ASN1_OBJECT| pointer.
1434
+ // If `type` is `V_ASN1_OBJECT`, the tag is OBJECT IDENTIFIER and `value`
1435
+ // contains an `ASN1_OBJECT` pointer.
1448
1436
  //
1449
- // If |type| is |V_ASN1_NULL|, the tag is NULL. |value| contains a NULL pointer.
1437
+ // If `type` is `V_ASN1_NULL`, the tag is NULL. `value` contains a NULL pointer.
1450
1438
  //
1451
- // If |type| is |V_ASN1_BOOLEAN|, the tag is BOOLEAN. |value| contains an
1452
- // |ASN1_BOOLEAN|.
1439
+ // If `type` is `V_ASN1_BOOLEAN`, the tag is BOOLEAN. `value` contains an
1440
+ // `ASN1_BOOLEAN`.
1453
1441
  //
1454
- // If |type| is |V_ASN1_SEQUENCE|, |V_ASN1_SET|, or |V_ASN1_OTHER|, the tag is
1455
- // SEQUENCE, SET, or some arbitrary tag, respectively. |value| uses the
1456
- // corresponding |ASN1_STRING| representation. Although any type may be
1457
- // represented in |V_ASN1_OTHER|, the parser will always return the more
1442
+ // If `type` is `V_ASN1_SEQUENCE`, `V_ASN1_SET`, or `V_ASN1_OTHER`, the tag is
1443
+ // SEQUENCE, SET, or some arbitrary tag, respectively. `value` uses the
1444
+ // corresponding `ASN1_STRING` representation. Although any type may be
1445
+ // represented in `V_ASN1_OTHER`, the parser will always return the more
1458
1446
  // specific encoding when available.
1459
1447
  //
1460
- // Other values of |type| do not represent a valid ASN.1 value, though
1461
- // default-constructed objects may set |type| to -1. Such objects cannot be
1448
+ // Other values of `type` do not represent a valid ASN.1 value, though
1449
+ // default-constructed objects may set `type` to -1. Such objects cannot be
1462
1450
  // serialized.
1463
1451
  struct asn1_type_st {
1464
1452
  int type;
@@ -1490,18 +1478,18 @@ struct asn1_type_st {
1490
1478
 
1491
1479
  DEFINE_STACK_OF(ASN1_TYPE)
1492
1480
 
1493
- // ASN1_TYPE_new returns a newly-allocated |ASN1_TYPE|, or NULL on allocation
1481
+ // ASN1_TYPE_new returns a newly-allocated `ASN1_TYPE`, or NULL on allocation
1494
1482
  // failure. The resulting object has type -1 and must be initialized to be
1495
1483
  // a valid ANY value.
1496
1484
  OPENSSL_EXPORT ASN1_TYPE *ASN1_TYPE_new(void);
1497
1485
 
1498
- // ASN1_TYPE_free releases memory associated with |a|.
1486
+ // ASN1_TYPE_free releases memory associated with `a`.
1499
1487
  OPENSSL_EXPORT void ASN1_TYPE_free(ASN1_TYPE *a);
1500
1488
 
1501
- // d2i_ASN1_TYPE parses up to |len| bytes from |*inp| as an ASN.1 value of any
1502
- // type, as described in |d2i_SAMPLE|. Note this function only validates
1489
+ // d2i_ASN1_TYPE parses up to `len` bytes from `*inp` as an ASN.1 value of any
1490
+ // type, as described in `d2i_SAMPLE`. Note this function only validates
1503
1491
  // primitive, universal types supported by this library. Values of type
1504
- // |V_ASN1_SEQUENCE|, |V_ASN1_SET|, |V_ASN1_OTHER|, or an unsupported primitive
1492
+ // `V_ASN1_SEQUENCE`, `V_ASN1_SET`, `V_ASN1_OTHER`, or an unsupported primitive
1505
1493
  // type must be validated by the caller when interpreting.
1506
1494
  //
1507
1495
  // TODO(https://crbug.com/boringssl/354): This function currently also accepts
@@ -1509,46 +1497,46 @@ OPENSSL_EXPORT void ASN1_TYPE_free(ASN1_TYPE *a);
1509
1497
  OPENSSL_EXPORT ASN1_TYPE *d2i_ASN1_TYPE(ASN1_TYPE **out, const uint8_t **inp,
1510
1498
  long len);
1511
1499
 
1512
- // i2d_ASN1_TYPE marshals |in| as DER, as described in |i2d_SAMPLE|.
1500
+ // i2d_ASN1_TYPE marshals `in` as DER, as described in `i2d_SAMPLE`.
1513
1501
  OPENSSL_EXPORT int i2d_ASN1_TYPE(const ASN1_TYPE *in, uint8_t **outp);
1514
1502
 
1515
- // ASN1_ANY is an |ASN1_ITEM| with ASN.1 type ANY and C type |ASN1_TYPE*|. Note
1516
- // the |ASN1_ITEM| name and C type do not match.
1503
+ // ASN1_ANY is an `ASN1_ITEM` with ASN.1 type ANY and C type `ASN1_TYPE*`. Note
1504
+ // the `ASN1_ITEM` name and C type do not match.
1517
1505
  DECLARE_ASN1_ITEM(ASN1_ANY)
1518
1506
 
1519
- // ASN1_TYPE_get returns the type of |a|, which will be one of the |V_ASN1_*|
1520
- // constants, or zero if |a| is not fully initialized.
1507
+ // ASN1_TYPE_get returns the type of `a`, which will be one of the `V_ASN1_*`
1508
+ // constants, or zero if `a` is not fully initialized.
1521
1509
  OPENSSL_EXPORT int ASN1_TYPE_get(const ASN1_TYPE *a);
1522
1510
 
1523
- // ASN1_TYPE_set sets |a| to an |ASN1_TYPE| of type |type| and value |value|,
1524
- // releasing the previous contents of |a|.
1511
+ // ASN1_TYPE_set sets `a` to an `ASN1_TYPE` of type `type` and value `value`,
1512
+ // releasing the previous contents of `a`.
1525
1513
  //
1526
- // If |type| is |V_ASN1_BOOLEAN|, |a| is set to FALSE if |value| is NULL and
1527
- // TRUE otherwise. If setting |a| to TRUE, |value| may be an invalid pointer,
1514
+ // If `type` is `V_ASN1_BOOLEAN`, `a` is set to FALSE if `value` is NULL and
1515
+ // TRUE otherwise. If setting `a` to TRUE, `value` may be an invalid pointer,
1528
1516
  // such as (void*)1.
1529
1517
  //
1530
- // If |type| is |V_ASN1_NULL|, |value| must be NULL.
1518
+ // If `type` is `V_ASN1_NULL`, `value` must be NULL.
1531
1519
  //
1532
- // For other values of |type|, this function takes ownership of |value|, which
1533
- // must point to an object of the corresponding type. See |ASN1_TYPE| for
1520
+ // For other values of `type`, this function takes ownership of `value`, which
1521
+ // must point to an object of the corresponding type. See `ASN1_TYPE` for
1534
1522
  // details.
1535
1523
  OPENSSL_EXPORT void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value);
1536
1524
 
1537
- // ASN1_TYPE_set1 behaves like |ASN1_TYPE_set| except it does not take ownership
1538
- // of |value|. It returns one on success and zero on error.
1525
+ // ASN1_TYPE_set1 behaves like `ASN1_TYPE_set` except it does not take ownership
1526
+ // of `value`. It returns one on success and zero on error.
1539
1527
  OPENSSL_EXPORT int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value);
1540
1528
 
1541
- // ASN1_TYPE_cmp returns zero if |a| and |b| are equal and some non-zero value
1529
+ // ASN1_TYPE_cmp returns zero if `a` and `b` are equal and some non-zero value
1542
1530
  // otherwise. Note this function can only be used for equality checks, not an
1543
1531
  // ordering.
1544
1532
  OPENSSL_EXPORT int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b);
1545
1533
 
1546
1534
  typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY;
1547
1535
 
1548
- // d2i_ASN1_SEQUENCE_ANY parses up to |len| bytes from |*inp| as a DER-encoded
1549
- // ASN.1 SEQUENCE OF ANY structure, as described in |d2i_SAMPLE|. The resulting
1550
- // |ASN1_SEQUENCE_ANY| owns its contents and thus must be released with
1551
- // |sk_ASN1_TYPE_pop_free| and |ASN1_TYPE_free|, not |sk_ASN1_TYPE_free|.
1536
+ // d2i_ASN1_SEQUENCE_ANY parses up to `len` bytes from `*inp` as a DER-encoded
1537
+ // ASN.1 SEQUENCE OF ANY structure, as described in `d2i_SAMPLE`. The resulting
1538
+ // `ASN1_SEQUENCE_ANY` owns its contents and thus must be released with
1539
+ // `sk_ASN1_TYPE_pop_free` and `ASN1_TYPE_free`, not `sk_ASN1_TYPE_free`.
1552
1540
  //
1553
1541
  // TODO(https://crbug.com/boringssl/354): This function currently also accepts
1554
1542
  // BER, but this will be removed in the future.
@@ -1556,15 +1544,15 @@ OPENSSL_EXPORT ASN1_SEQUENCE_ANY *d2i_ASN1_SEQUENCE_ANY(ASN1_SEQUENCE_ANY **out,
1556
1544
  const uint8_t **inp,
1557
1545
  long len);
1558
1546
 
1559
- // i2d_ASN1_SEQUENCE_ANY marshals |in| as a DER-encoded SEQUENCE OF ANY
1560
- // structure, as described in |i2d_SAMPLE|.
1547
+ // i2d_ASN1_SEQUENCE_ANY marshals `in` as a DER-encoded SEQUENCE OF ANY
1548
+ // structure, as described in `i2d_SAMPLE`.
1561
1549
  OPENSSL_EXPORT int i2d_ASN1_SEQUENCE_ANY(const ASN1_SEQUENCE_ANY *in,
1562
1550
  uint8_t **outp);
1563
1551
 
1564
- // d2i_ASN1_SET_ANY parses up to |len| bytes from |*inp| as a DER-encoded ASN.1
1565
- // SET OF ANY structure, as described in |d2i_SAMPLE|. The resulting
1566
- // |ASN1_SEQUENCE_ANY| owns its contents and thus must be released with
1567
- // |sk_ASN1_TYPE_pop_free| and |ASN1_TYPE_free|, not |sk_ASN1_TYPE_free|.
1552
+ // d2i_ASN1_SET_ANY parses up to `len` bytes from `*inp` as a DER-encoded ASN.1
1553
+ // SET OF ANY structure, as described in `d2i_SAMPLE`. The resulting
1554
+ // `ASN1_SEQUENCE_ANY` owns its contents and thus must be released with
1555
+ // `sk_ASN1_TYPE_pop_free` and `ASN1_TYPE_free`, not `sk_ASN1_TYPE_free`.
1568
1556
  //
1569
1557
  // TODO(https://crbug.com/boringssl/354): This function currently also accepts
1570
1558
  // BER, but this will be removed in the future.
@@ -1572,8 +1560,8 @@ OPENSSL_EXPORT ASN1_SEQUENCE_ANY *d2i_ASN1_SET_ANY(ASN1_SEQUENCE_ANY **out,
1572
1560
  const uint8_t **inp,
1573
1561
  long len);
1574
1562
 
1575
- // i2d_ASN1_SET_ANY marshals |in| as a DER-encoded SET OF ANY structure, as
1576
- // described in |i2d_SAMPLE|.
1563
+ // i2d_ASN1_SET_ANY marshals `in` as a DER-encoded SET OF ANY structure, as
1564
+ // described in `i2d_SAMPLE`.
1577
1565
  OPENSSL_EXPORT int i2d_ASN1_SET_ANY(const ASN1_SEQUENCE_ANY *in,
1578
1566
  uint8_t **outp);
1579
1567
 
@@ -1584,25 +1572,25 @@ OPENSSL_EXPORT int i2d_ASN1_SET_ANY(const ASN1_SEQUENCE_ANY *in,
1584
1572
  // functions may be used for debugging and logging. However, the output should
1585
1573
  // not be consumed programmatically. They may be ambiguous or lose information.
1586
1574
 
1587
- // ASN1_UTCTIME_print writes a human-readable representation of |a| to |out|. It
1575
+ // ASN1_UTCTIME_print writes a human-readable representation of `a` to `out`. It
1588
1576
  // returns one on success and zero on error.
1589
1577
  OPENSSL_EXPORT int ASN1_UTCTIME_print(BIO *out, const ASN1_UTCTIME *a);
1590
1578
 
1591
- // ASN1_GENERALIZEDTIME_print writes a human-readable representation of |a| to
1592
- // |out|. It returns one on success and zero on error.
1579
+ // ASN1_GENERALIZEDTIME_print writes a human-readable representation of `a` to
1580
+ // `out`. It returns one on success and zero on error.
1593
1581
  OPENSSL_EXPORT int ASN1_GENERALIZEDTIME_print(BIO *out,
1594
1582
  const ASN1_GENERALIZEDTIME *a);
1595
1583
 
1596
- // ASN1_TIME_print writes a human-readable representation of |a| to |out|. It
1584
+ // ASN1_TIME_print writes a human-readable representation of `a` to `out`. It
1597
1585
  // returns one on success and zero on error.
1598
1586
  OPENSSL_EXPORT int ASN1_TIME_print(BIO *out, const ASN1_TIME *a);
1599
1587
 
1600
- // ASN1_STRING_print writes a human-readable representation of |str| to |out|.
1588
+ // ASN1_STRING_print writes a human-readable representation of `str` to `out`.
1601
1589
  // It returns one on success and zero on error. Unprintable characters are
1602
1590
  // replaced with '.'.
1603
1591
  OPENSSL_EXPORT int ASN1_STRING_print(BIO *out, const ASN1_STRING *str);
1604
1592
 
1605
- // The following flags must not collide with |XN_FLAG_*|.
1593
+ // The following flags must not collide with `XN_FLAG_*`.
1606
1594
 
1607
1595
  // ASN1_STRFLGS_ESC_2253 causes characters to be escaped as in RFC 2253, section
1608
1596
  // 2.4.
@@ -1623,12 +1611,12 @@ OPENSSL_EXPORT int ASN1_STRING_print(BIO *out, const ASN1_STRING *str);
1623
1611
  // byte in the UTF-8 encoding treated as an individual character for purposes of
1624
1612
  // escape sequences. If not set, each Unicode codepoint in the string is treated
1625
1613
  // as a character, with wide characters escaped as "\Uxxxx" or "\Wxxxxxxxx".
1626
- // Note this can be ambiguous if |ASN1_STRFLGS_ESC_*| are all unset. In that
1614
+ // Note this can be ambiguous if `ASN1_STRFLGS_ESC_*` are all unset. In that
1627
1615
  // case, backslashes are not escaped, but wide characters are.
1628
1616
  #define ASN1_STRFLGS_UTF8_CONVERT 0x10ul
1629
1617
 
1630
1618
  // ASN1_STRFLGS_IGNORE_TYPE causes the string type to be ignored. The
1631
- // |ASN1_STRING| in-memory representation will be printed directly.
1619
+ // `ASN1_STRING` in-memory representation will be printed directly.
1632
1620
  #define ASN1_STRFLGS_IGNORE_TYPE 0x20ul
1633
1621
 
1634
1622
  // ASN1_STRFLGS_SHOW_TYPE causes the string type to be included in the output.
@@ -1638,15 +1626,15 @@ OPENSSL_EXPORT int ASN1_STRING_print(BIO *out, const ASN1_STRING *str);
1638
1626
  // RFC 2253 hexstring notation, such as "#0123456789ABCDEF".
1639
1627
  #define ASN1_STRFLGS_DUMP_ALL 0x80ul
1640
1628
 
1641
- // ASN1_STRFLGS_DUMP_UNKNOWN behaves like |ASN1_STRFLGS_DUMP_ALL| but only
1629
+ // ASN1_STRFLGS_DUMP_UNKNOWN behaves like `ASN1_STRFLGS_DUMP_ALL` but only
1642
1630
  // applies to values of unknown type. If unset, unknown values will print
1643
1631
  // their contents as single-byte characters with escape sequences.
1644
1632
  #define ASN1_STRFLGS_DUMP_UNKNOWN 0x100ul
1645
1633
 
1646
1634
  // ASN1_STRFLGS_DUMP_DER causes hexdumped strings (as determined by
1647
- // |ASN1_STRFLGS_DUMP_ALL| or |ASN1_STRFLGS_DUMP_UNKNOWN|) to print the entire
1635
+ // `ASN1_STRFLGS_DUMP_ALL` or `ASN1_STRFLGS_DUMP_UNKNOWN`) to print the entire
1648
1636
  // DER element as in RFC 2253, rather than only the contents of the
1649
- // |ASN1_STRING|.
1637
+ // `ASN1_STRING`.
1650
1638
  #define ASN1_STRFLGS_DUMP_DER 0x200ul
1651
1639
 
1652
1640
  // ASN1_STRFLGS_RFC2253 causes the string to be escaped as in RFC 2253,
@@ -1656,103 +1644,103 @@ OPENSSL_EXPORT int ASN1_STRING_print(BIO *out, const ASN1_STRING *str);
1656
1644
  ASN1_STRFLGS_UTF8_CONVERT | ASN1_STRFLGS_DUMP_UNKNOWN | \
1657
1645
  ASN1_STRFLGS_DUMP_DER)
1658
1646
 
1659
- // ASN1_STRING_print_ex writes a human-readable representation of |str| to
1660
- // |out|. It returns the number of bytes written on success and -1 on error. If
1661
- // |out| is NULL, it returns the number of bytes it would have written, without
1647
+ // ASN1_STRING_print_ex writes a human-readable representation of `str` to
1648
+ // `out`. It returns the number of bytes written on success and -1 on error. If
1649
+ // `out` is NULL, it returns the number of bytes it would have written, without
1662
1650
  // writing anything.
1663
1651
  //
1664
- // The |flags| should be a combination of combination of |ASN1_STRFLGS_*|
1652
+ // The `flags` should be a combination of combination of `ASN1_STRFLGS_*`
1665
1653
  // constants. See the documentation for each flag for how it controls the
1666
- // output. If unsure, use |ASN1_STRFLGS_RFC2253|.
1654
+ // output. If unsure, use `ASN1_STRFLGS_RFC2253`.
1667
1655
  OPENSSL_EXPORT int ASN1_STRING_print_ex(BIO *out, const ASN1_STRING *str,
1668
1656
  unsigned long flags);
1669
1657
 
1670
- // ASN1_STRING_print_ex_fp behaves like |ASN1_STRING_print_ex| but writes to a
1671
- // |FILE| rather than a |BIO|.
1658
+ // ASN1_STRING_print_ex_fp behaves like `ASN1_STRING_print_ex` but writes to a
1659
+ // `FILE` rather than a `BIO`.
1672
1660
  OPENSSL_EXPORT int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str,
1673
1661
  unsigned long flags);
1674
1662
 
1675
- // i2a_ASN1_INTEGER writes a human-readable representation of |a| to |bp|. It
1663
+ // i2a_ASN1_INTEGER writes a human-readable representation of `a` to `bp`. It
1676
1664
  // returns the number of bytes written on success, or a negative number on
1677
- // error. On error, this function may have written a partial output to |bp|.
1665
+ // error. On error, this function may have written a partial output to `bp`.
1678
1666
  OPENSSL_EXPORT int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a);
1679
1667
 
1680
- // i2a_ASN1_ENUMERATED writes a human-readable representation of |a| to |bp|. It
1668
+ // i2a_ASN1_ENUMERATED writes a human-readable representation of `a` to `bp`. It
1681
1669
  // returns the number of bytes written on success, or a negative number on
1682
- // error. On error, this function may have written a partial output to |bp|.
1670
+ // error. On error, this function may have written a partial output to `bp`.
1683
1671
  OPENSSL_EXPORT int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a);
1684
1672
 
1685
- // i2a_ASN1_OBJECT writes a human-readable representation of |a| to |bp|. It
1673
+ // i2a_ASN1_OBJECT writes a human-readable representation of `a` to `bp`. It
1686
1674
  // returns the number of bytes written on success, or a negative number on
1687
- // error. On error, this function may have written a partial output to |bp|.
1675
+ // error. On error, this function may have written a partial output to `bp`.
1688
1676
  OPENSSL_EXPORT int i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a);
1689
1677
 
1690
- // i2a_ASN1_STRING writes a text representation of |a|'s contents to |bp|. It
1678
+ // i2a_ASN1_STRING writes a text representation of `a`'s contents to `bp`. It
1691
1679
  // returns the number of bytes written on success, or a negative number on
1692
- // error. On error, this function may have written a partial output to |bp|.
1693
- // |type| is ignored.
1680
+ // error. On error, this function may have written a partial output to `bp`.
1681
+ // `type` is ignored.
1694
1682
  //
1695
- // This function does not decode |a| into a Unicode string. It only hex-encodes
1696
- // the internal representation of |a|. This is suitable for printing an OCTET
1683
+ // This function does not decode `a` into a Unicode string. It only hex-encodes
1684
+ // the internal representation of `a`. This is suitable for printing an OCTET
1697
1685
  // STRING, but may not be human-readable for any other string type.
1698
1686
  OPENSSL_EXPORT int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type);
1699
1687
 
1700
- // i2t_ASN1_OBJECT calls |OBJ_obj2txt| with |always_return_oid| set to zero.
1688
+ // i2t_ASN1_OBJECT calls `OBJ_obj2txt` with `always_return_oid` set to zero.
1701
1689
  OPENSSL_EXPORT int i2t_ASN1_OBJECT(char *buf, int buf_len,
1702
1690
  const ASN1_OBJECT *a);
1703
1691
 
1704
1692
 
1705
1693
  // Low-level encoding functions.
1706
1694
 
1707
- // ASN1_get_object parses a BER element from up to |max_len| bytes at |*inp|. It
1708
- // returns |V_ASN1_CONSTRUCTED| if it successfully parsed a constructed element,
1695
+ // ASN1_get_object parses a BER element from up to `max_len` bytes at `*inp`. It
1696
+ // returns `V_ASN1_CONSTRUCTED` if it successfully parsed a constructed element,
1709
1697
  // zero if it successfully parsed a primitive element, and 0x80 on error. On
1710
- // success, it additionally advances |*inp| to the element body, sets
1711
- // |*out_length|, |*out_tag|, and |*out_class| to the element's length, tag
1698
+ // success, it additionally advances `*inp` to the element body, sets
1699
+ // `*out_length`, `*out_tag`, and `*out_class` to the element's length, tag
1712
1700
  // number, and tag class, respectively,
1713
1701
  //
1714
1702
  // Unlike OpenSSL, this function only supports DER. Indefinite and non-minimal
1715
1703
  // lengths are rejected.
1716
1704
  //
1717
- // This function is difficult to use correctly. Use |CBS_get_asn1| and related
1705
+ // This function is difficult to use correctly. Use `CBS_get_asn1` and related
1718
1706
  // functions from bytestring.h.
1719
1707
  OPENSSL_EXPORT int ASN1_get_object(const unsigned char **inp, long *out_length,
1720
1708
  int *out_tag, int *out_class, long max_len);
1721
1709
 
1722
- // ASN1_put_object writes the header for a DER or BER element to |*outp| and
1723
- // advances |*outp| by the number of bytes written. The caller is responsible
1724
- // for ensuring |*outp| has enough space for the output. The header describes an
1725
- // element with length |length|, tag number |tag|, and class |xclass|. |xclass|
1726
- // should be one of the |V_ASN1_*| tag class constants. The element is primitive
1727
- // if |constructed| is zero and constructed if it is one or two. If
1728
- // |constructed| is two, |length| is ignored and the element uses
1710
+ // ASN1_put_object writes the header for a DER or BER element to `*outp` and
1711
+ // advances `*outp` by the number of bytes written. The caller is responsible
1712
+ // for ensuring `*outp` has enough space for the output. The header describes an
1713
+ // element with length `length`, tag number `tag`, and class `xclass`. `xclass`
1714
+ // should be one of the `V_ASN1_*` tag class constants. The element is primitive
1715
+ // if `constructed` is zero and constructed if it is one or two. If
1716
+ // `constructed` is two, `length` is ignored and the element uses
1729
1717
  // indefinite-length encoding.
1730
1718
  //
1731
- // Use |CBB_add_asn1| instead.
1719
+ // Use `CBB_add_asn1` instead.
1732
1720
  OPENSSL_EXPORT void ASN1_put_object(unsigned char **outp, int constructed,
1733
1721
  int length, int tag, int xclass);
1734
1722
 
1735
- // ASN1_put_eoc writes two zero bytes to |*outp|, advances |*outp| to point past
1723
+ // ASN1_put_eoc writes two zero bytes to `*outp`, advances `*outp` to point past
1736
1724
  // those bytes, and returns two.
1737
1725
  //
1738
1726
  // Use definite-length encoding instead.
1739
1727
  OPENSSL_EXPORT int ASN1_put_eoc(unsigned char **outp);
1740
1728
 
1741
1729
  // ASN1_object_size returns the number of bytes needed to encode a DER or BER
1742
- // value with length |length| and tag number |tag|, or -1 on error. |tag| should
1743
- // not include the constructed bit or tag class. If |constructed| is zero or
1730
+ // value with length `length` and tag number `tag`, or -1 on error. `tag` should
1731
+ // not include the constructed bit or tag class. If `constructed` is zero or
1744
1732
  // one, the result uses a definite-length encoding with minimally-encoded
1745
- // length, as in DER. If |constructed| is two, the result uses BER
1733
+ // length, as in DER. If `constructed` is two, the result uses BER
1746
1734
  // indefinite-length encoding.
1747
1735
  //
1748
- // Use |CBB_add_asn1| instead.
1736
+ // Use `CBB_add_asn1` instead.
1749
1737
  OPENSSL_EXPORT int ASN1_object_size(int constructed, int length, int tag);
1750
1738
 
1751
1739
 
1752
1740
  // Function declaration macros.
1753
1741
  //
1754
1742
  // The following macros declare functions for ASN.1 types. Prefer writing the
1755
- // prototypes directly. Particularly when |type|, |itname|, or |name| differ,
1743
+ // prototypes directly. Particularly when `type`, `itname`, or `name` differ,
1756
1744
  // the macros can be difficult to understand.
1757
1745
 
1758
1746
  #define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type)
@@ -1791,19 +1779,41 @@ OPENSSL_EXPORT int ASN1_object_size(int constructed, int length, int tag);
1791
1779
 
1792
1780
  // Deprecated functions.
1793
1781
 
1782
+ // ASN1_STRING_FLAG_BITS_LEFT does nothing. Historically, when a BIT STRING
1783
+ // lacked this flag, it enabled an implicit truncation behavior. This has since
1784
+ // been removed.
1785
+ //
1786
+ // TODO(crbug.com/443769299): Remove this when `ASN1_STRING` is opaque. For now,
1787
+ // we continue to set it in various codepaths, in case code is querying `flags`
1788
+ // manually, even though it does nothing.
1789
+ #define ASN1_STRING_FLAG_BITS_LEFT 0x08
1790
+
1791
+ // ASN1_BIT_STRING_num_bytes computes the length of `str` in bytes. If `str`'s
1792
+ // bit length is a multiple of 8, it sets `*out` to the byte length and returns
1793
+ // one. Otherwise, it returns zero.
1794
+ //
1795
+ // This function may be used with `ASN1_STRING_get0_data` to interpret `str` as
1796
+ // a byte string.
1797
+ //
1798
+ // This function is no longer necessary. The byte length is always equal to
1799
+ // `ASN1_STRING_length` and callers can check for a whole number of bytes by
1800
+ // checking if `ASN1_BIT_STRING_unused_bits` is zero.
1801
+ OPENSSL_EXPORT int ASN1_BIT_STRING_num_bytes(const ASN1_BIT_STRING *str,
1802
+ size_t *out);
1803
+
1794
1804
  // ASN1_STRING_set_default_mask does nothing.
1795
1805
  OPENSSL_EXPORT void ASN1_STRING_set_default_mask(unsigned long mask);
1796
1806
 
1797
1807
  // ASN1_STRING_set_default_mask_asc returns one.
1798
1808
  OPENSSL_EXPORT int ASN1_STRING_set_default_mask_asc(const char *p);
1799
1809
 
1800
- // ASN1_STRING_get_default_mask returns |B_ASN1_UTF8STRING|.
1810
+ // ASN1_STRING_get_default_mask returns `B_ASN1_UTF8STRING`.
1801
1811
  OPENSSL_EXPORT unsigned long ASN1_STRING_get_default_mask(void);
1802
1812
 
1803
1813
  // ASN1_STRING_TABLE_cleanup does nothing.
1804
1814
  OPENSSL_EXPORT void ASN1_STRING_TABLE_cleanup(void);
1805
1815
 
1806
- // M_ASN1_* are legacy aliases for various |ASN1_STRING| functions. Use the
1816
+ // M_ASN1_* are legacy aliases for various `ASN1_STRING` functions. Use the
1807
1817
  // functions themselves.
1808
1818
  #define M_ASN1_STRING_length(x) ASN1_STRING_length(x)
1809
1819
  #define M_ASN1_STRING_type(x) ASN1_STRING_type(x)
@@ -1851,30 +1861,30 @@ OPENSSL_EXPORT void ASN1_STRING_TABLE_cleanup(void);
1851
1861
  #define M_ASN1_UTF8STRING_new() ASN1_UTF8STRING_new()
1852
1862
  #define M_ASN1_UTF8STRING_free(a) ASN1_UTF8STRING_free(a)
1853
1863
 
1854
- // ASN1_INTEGER_set sets |a| to an INTEGER with value |v|. It returns one on
1864
+ // ASN1_INTEGER_set sets `a` to an INTEGER with value `v`. It returns one on
1855
1865
  // success and zero on error.
1856
1866
  //
1857
- // Use |ASN1_INTEGER_set_uint64| and |ASN1_INTEGER_set_int64| instead.
1867
+ // Use `ASN1_INTEGER_set_uint64` and `ASN1_INTEGER_set_int64` instead.
1858
1868
  OPENSSL_EXPORT int ASN1_INTEGER_set(ASN1_INTEGER *a, long v);
1859
1869
 
1860
- // ASN1_ENUMERATED_set sets |a| to an ENUMERATED with value |v|. It returns one
1870
+ // ASN1_ENUMERATED_set sets `a` to an ENUMERATED with value `v`. It returns one
1861
1871
  // on success and zero on error.
1862
1872
  //
1863
- // Use |ASN1_ENUMERATED_set_uint64| and |ASN1_ENUMERATED_set_int64| instead.
1873
+ // Use `ASN1_ENUMERATED_set_uint64` and `ASN1_ENUMERATED_set_int64` instead.
1864
1874
  OPENSSL_EXPORT int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v);
1865
1875
 
1866
- // ASN1_INTEGER_get returns the value of |a| as a |long|, or -1 if |a| is out of
1876
+ // ASN1_INTEGER_get returns the value of `a` as a `long`, or -1 if `a` is out of
1867
1877
  // range or the wrong type.
1868
1878
  //
1869
1879
  // WARNING: This function's return value cannot distinguish errors from -1.
1870
- // Use |ASN1_INTEGER_get_uint64| and |ASN1_INTEGER_get_int64| instead.
1880
+ // Use `ASN1_INTEGER_get_uint64` and `ASN1_INTEGER_get_int64` instead.
1871
1881
  OPENSSL_EXPORT long ASN1_INTEGER_get(const ASN1_INTEGER *a);
1872
1882
 
1873
- // ASN1_ENUMERATED_get returns the value of |a| as a |long|, or -1 if |a| is out
1883
+ // ASN1_ENUMERATED_get returns the value of `a` as a `long`, or -1 if `a` is out
1874
1884
  // of range or the wrong type.
1875
1885
  //
1876
1886
  // WARNING: This function's return value cannot distinguish errors from -1.
1877
- // Use |ASN1_ENUMERATED_get_uint64| and |ASN1_ENUMERATED_get_int64| instead.
1887
+ // Use `ASN1_ENUMERATED_get_uint64` and `ASN1_ENUMERATED_get_int64` instead.
1878
1888
  OPENSSL_EXPORT long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a);
1879
1889
 
1880
1890