grpc 1.9.1 → 1.10.0.pre1

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

Potentially problematic release.


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

Files changed (637) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +2654 -953
  3. data/etc/roots.pem +282 -683
  4. data/include/grpc/compression.h +9 -26
  5. data/include/grpc/grpc.h +10 -24
  6. data/include/grpc/grpc_security.h +7 -1
  7. data/include/grpc/impl/codegen/compression_types.h +5 -62
  8. data/include/grpc/impl/codegen/grpc_types.h +10 -6
  9. data/include/grpc/module.modulemap +1 -10
  10. data/include/grpc/support/alloc.h +3 -2
  11. data/include/grpc/support/log.h +1 -2
  12. data/{src/core/lib/gpr/thd_internal.h → include/grpc/support/thd_id.h} +23 -9
  13. data/src/boringssl/err_data.c +550 -496
  14. data/src/core/ext/census/grpc_context.cc +2 -1
  15. data/src/core/ext/filters/client_channel/backup_poller.cc +5 -4
  16. data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -7
  17. data/src/core/ext/filters/client_channel/client_channel.cc +162 -172
  18. data/src/core/ext/filters/client_channel/client_channel_factory.cc +4 -2
  19. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +10 -10
  20. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +18 -14
  21. data/src/core/ext/filters/client_channel/http_proxy.cc +3 -1
  22. data/src/core/ext/filters/client_channel/lb_policy.cc +21 -105
  23. data/src/core/ext/filters/client_channel/lb_policy.h +166 -170
  24. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +41 -36
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1452 -1459
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -2
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +7 -8
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -27
  30. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +279 -304
  31. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +358 -330
  32. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +30 -41
  33. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +7 -14
  34. data/src/core/ext/filters/client_channel/lb_policy_factory.cc +8 -21
  35. data/src/core/ext/filters/client_channel/lb_policy_factory.h +23 -27
  36. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +58 -33
  37. data/src/core/ext/filters/client_channel/lb_policy_registry.h +25 -12
  38. data/src/core/ext/filters/client_channel/parse_address.cc +10 -8
  39. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -2
  40. data/src/core/ext/filters/client_channel/resolver.cc +6 -52
  41. data/src/core/ext/filters/client_channel/resolver.h +98 -55
  42. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +266 -237
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +31 -27
  45. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +244 -207
  46. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +161 -148
  47. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +47 -31
  48. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +126 -126
  49. data/src/core/ext/filters/client_channel/resolver_factory.h +33 -32
  50. data/src/core/ext/filters/client_channel/resolver_registry.cc +110 -90
  51. data/src/core/ext/filters/client_channel/resolver_registry.h +49 -36
  52. data/src/core/ext/filters/client_channel/retry_throttle.cc +29 -22
  53. data/src/core/ext/filters/client_channel/subchannel.cc +173 -173
  54. data/src/core/ext/filters/client_channel/subchannel.h +38 -45
  55. data/src/core/ext/filters/client_channel/subchannel_index.cc +44 -40
  56. data/src/core/ext/filters/client_channel/uri_parser.cc +3 -3
  57. data/src/core/ext/filters/deadline/deadline_filter.cc +27 -18
  58. data/src/core/ext/filters/http/client/http_client_filter.cc +26 -23
  59. data/src/core/ext/filters/http/http_filters_plugin.cc +3 -2
  60. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +78 -110
  61. data/src/core/ext/filters/http/server/http_server_filter.cc +29 -26
  62. data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +9 -11
  63. data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +2 -1
  64. data/src/core/ext/filters/max_age/max_age_filter.cc +14 -14
  65. data/src/core/ext/filters/message_size/message_size_filter.cc +20 -18
  66. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -4
  67. data/src/core/ext/filters/workarounds/workaround_utils.cc +4 -4
  68. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  69. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -10
  70. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +4 -4
  71. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +11 -12
  72. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +16 -13
  73. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +36 -9
  74. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -0
  75. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +17 -14
  76. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -145
  77. data/src/core/ext/transport/chttp2/transport/flow_control.cc +16 -14
  78. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -7
  79. data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -33
  80. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +27 -25
  81. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -12
  82. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +16 -15
  83. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
  84. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +11 -11
  85. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +23 -22
  86. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +35 -35
  87. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +10 -7
  88. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -2
  89. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  90. data/src/core/ext/transport/chttp2/transport/internal.h +1 -1
  91. data/src/core/ext/transport/chttp2/transport/parsing.cc +35 -39
  92. data/src/core/ext/transport/chttp2/transport/stream_map.cc +8 -7
  93. data/src/core/ext/transport/chttp2/transport/varint.cc +5 -5
  94. data/src/core/ext/transport/chttp2/transport/writing.cc +18 -18
  95. data/src/core/ext/transport/inproc/inproc_transport.cc +43 -23
  96. data/src/core/lib/{gpr → avl}/avl.cc +61 -57
  97. data/{include/grpc/support → src/core/lib/avl}/avl.h +25 -35
  98. data/src/core/lib/backoff/backoff.cc +6 -5
  99. data/src/core/lib/channel/channel_args.cc +23 -109
  100. data/src/core/lib/channel/channel_args.h +5 -31
  101. data/src/core/lib/channel/channel_stack.cc +11 -8
  102. data/src/core/lib/channel/channel_stack_builder.cc +10 -7
  103. data/src/core/lib/channel/connected_channel.cc +18 -17
  104. data/src/core/lib/channel/handshaker.cc +8 -8
  105. data/src/core/lib/channel/handshaker_registry.cc +3 -2
  106. data/src/core/lib/compression/algorithm_metadata.h +13 -6
  107. data/src/core/lib/compression/compression.cc +72 -183
  108. data/src/core/lib/compression/compression_internal.cc +274 -0
  109. data/src/core/lib/compression/compression_internal.h +86 -0
  110. data/src/core/lib/compression/message_compress.cc +15 -15
  111. data/src/core/lib/compression/message_compress.h +4 -3
  112. data/src/core/lib/compression/stream_compression_gzip.cc +8 -8
  113. data/src/core/lib/compression/stream_compression_identity.cc +1 -1
  114. data/src/core/lib/debug/stats.cc +10 -8
  115. data/src/core/lib/debug/stats_data.cc +2 -1
  116. data/src/core/lib/debug/trace.cc +3 -3
  117. data/src/core/lib/gpr/alloc.cc +7 -11
  118. data/src/core/lib/gpr/arena.cc +34 -12
  119. data/src/core/lib/gpr/atm.cc +2 -1
  120. data/src/core/lib/gpr/cpu_linux.cc +3 -3
  121. data/src/core/lib/gpr/cpu_posix.cc +2 -1
  122. data/src/core/lib/gpr/env.h +1 -1
  123. data/src/core/lib/gpr/env_linux.cc +1 -1
  124. data/src/core/lib/gpr/env_windows.cc +4 -4
  125. data/src/core/lib/gpr/fork.cc +16 -2
  126. data/src/core/lib/gpr/host_port.cc +5 -4
  127. data/{include/grpc/support → src/core/lib/gpr}/host_port.h +5 -13
  128. data/src/core/lib/gpr/log.cc +5 -4
  129. data/src/core/lib/gpr/log_linux.cc +1 -1
  130. data/src/core/lib/gpr/mpscq.cc +1 -0
  131. data/src/core/lib/gpr/murmur_hash.cc +4 -4
  132. data/src/core/lib/gpr/string.cc +19 -16
  133. data/src/core/lib/gpr/string_posix.cc +3 -3
  134. data/src/core/lib/gpr/sync_posix.cc +5 -9
  135. data/src/core/lib/gpr/thd.cc +3 -3
  136. data/{include/grpc/support → src/core/lib/gpr}/thd.h +20 -28
  137. data/src/core/lib/gpr/thd_posix.cc +6 -4
  138. data/src/core/lib/gpr/thd_windows.cc +3 -1
  139. data/src/core/lib/gpr/time.cc +6 -4
  140. data/src/core/lib/gpr/time_posix.cc +2 -2
  141. data/{include/grpc/support → src/core/lib/gpr}/tls.h +6 -6
  142. data/{include/grpc/support → src/core/lib/gpr}/tls_gcc.h +3 -3
  143. data/{include/grpc/support → src/core/lib/gpr}/tls_msvc.h +3 -3
  144. data/src/core/lib/gpr/tls_pthread.cc +1 -1
  145. data/{include/grpc/support → src/core/lib/gpr}/tls_pthread.h +3 -3
  146. data/{include/grpc/support → src/core/lib/gpr}/useful.h +3 -3
  147. data/src/core/lib/{gpr++ → gprpp}/abstract.h +3 -3
  148. data/src/core/lib/{gpr++ → gprpp}/atomic.h +5 -5
  149. data/src/core/lib/{gpr++ → gprpp}/atomic_with_atm.h +3 -3
  150. data/src/core/lib/{gpr++ → gprpp}/atomic_with_std.h +3 -3
  151. data/src/core/lib/{gpr++ → gprpp}/debug_location.h +3 -3
  152. data/src/core/lib/{gpr++ → gprpp}/inlined_vector.h +44 -22
  153. data/src/core/lib/{gpr++ → gprpp}/manual_constructor.h +2 -2
  154. data/src/core/lib/{gpr++ → gprpp}/memory.h +14 -5
  155. data/src/core/lib/{gpr++ → gprpp}/orphanable.h +39 -14
  156. data/src/core/lib/{gpr++ → gprpp}/ref_counted.h +42 -10
  157. data/src/core/lib/{gpr++ → gprpp}/ref_counted_ptr.h +18 -8
  158. data/src/core/lib/http/format_request.cc +3 -3
  159. data/src/core/lib/http/httpcli.cc +6 -7
  160. data/src/core/lib/http/httpcli_security_connector.cc +10 -10
  161. data/src/core/lib/http/parser.cc +16 -12
  162. data/src/core/lib/iomgr/call_combiner.cc +12 -13
  163. data/src/core/lib/iomgr/closure.h +4 -6
  164. data/src/core/lib/iomgr/combiner.cc +10 -21
  165. data/src/core/lib/iomgr/error.cc +50 -55
  166. data/src/core/lib/iomgr/ev_epoll1_linux.cc +41 -52
  167. data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -28
  168. data/src/core/lib/iomgr/ev_epollsig_linux.cc +23 -30
  169. data/src/core/lib/iomgr/ev_poll_posix.cc +52 -46
  170. data/src/core/lib/iomgr/ev_posix.cc +47 -6
  171. data/src/core/lib/iomgr/exec_ctx.cc +10 -10
  172. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  173. data/src/core/lib/iomgr/executor.cc +16 -13
  174. data/src/core/lib/iomgr/fork_posix.cc +1 -3
  175. data/src/core/lib/iomgr/gethostname_host_name_max.cc +1 -1
  176. data/src/core/lib/iomgr/iocp_windows.cc +1 -2
  177. data/src/core/lib/iomgr/iomgr.cc +2 -2
  178. data/src/core/lib/iomgr/iomgr_uv.cc +2 -0
  179. data/src/core/lib/iomgr/iomgr_uv.h +1 -1
  180. data/src/core/lib/iomgr/is_epollexclusive_available.cc +5 -4
  181. data/src/core/lib/iomgr/load_file.cc +3 -3
  182. data/src/core/lib/iomgr/pollset_windows.cc +1 -1
  183. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -9
  184. data/src/core/lib/iomgr/resolve_address_uv.cc +2 -2
  185. data/src/core/lib/iomgr/resolve_address_windows.cc +3 -2
  186. data/src/core/lib/iomgr/resource_quota.cc +36 -34
  187. data/src/core/lib/iomgr/sockaddr_utils.cc +39 -23
  188. data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
  189. data/src/core/lib/iomgr/socket_mutator.cc +7 -7
  190. data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -4
  191. data/src/core/lib/iomgr/socket_utils_linux.cc +3 -2
  192. data/src/core/lib/iomgr/tcp_client_posix.cc +7 -6
  193. data/src/core/lib/iomgr/tcp_client_windows.cc +0 -1
  194. data/src/core/lib/iomgr/tcp_posix.cc +47 -55
  195. data/src/core/lib/iomgr/tcp_server_posix.cc +12 -10
  196. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -5
  197. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -3
  198. data/src/core/lib/iomgr/tcp_windows.cc +1 -1
  199. data/src/core/lib/iomgr/timer_generic.cc +16 -14
  200. data/src/core/lib/iomgr/timer_heap.cc +8 -7
  201. data/src/core/lib/iomgr/timer_manager.cc +4 -3
  202. data/src/core/lib/iomgr/udp_server.cc +24 -16
  203. data/src/core/lib/iomgr/unix_sockets_posix.cc +15 -10
  204. data/src/core/lib/iomgr/wakeup_fd_cv.cc +6 -5
  205. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +1 -2
  206. data/src/core/lib/json/json.cc +1 -1
  207. data/src/core/lib/json/json_reader.cc +8 -6
  208. data/src/core/lib/json/json_string.cc +19 -18
  209. data/src/core/lib/json/json_writer.cc +10 -8
  210. data/src/core/lib/profiling/basic_timers.cc +1 -1
  211. data/src/core/lib/profiling/timers.h +3 -20
  212. data/src/core/lib/security/context/security_context.cc +16 -14
  213. data/src/core/lib/security/credentials/composite/composite_credentials.cc +17 -14
  214. data/src/core/lib/security/credentials/credentials.cc +9 -8
  215. data/src/core/lib/security/credentials/credentials.h +1 -1
  216. data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
  217. data/src/core/lib/security/credentials/fake/fake_credentials.cc +12 -13
  218. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -4
  219. data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -3
  220. data/src/core/lib/security/credentials/jwt/json_token.cc +4 -3
  221. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -7
  222. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +21 -18
  223. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +23 -18
  224. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +11 -7
  225. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +22 -21
  226. data/src/core/lib/security/{transport → security_connector}/security_connector.cc +46 -43
  227. data/src/core/lib/security/{transport → security_connector}/security_connector.h +3 -3
  228. data/src/core/lib/security/transport/client_auth_filter.cc +32 -34
  229. data/src/core/lib/security/transport/lb_targets_info.cc +7 -5
  230. data/src/core/lib/security/transport/secure_endpoint.cc +21 -21
  231. data/src/core/lib/security/transport/security_handshaker.cc +19 -18
  232. data/src/core/lib/security/transport/security_handshaker.h +1 -1
  233. data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
  234. data/src/core/lib/slice/b64.cc +19 -16
  235. data/src/core/lib/slice/percent_encoding.cc +5 -5
  236. data/src/core/lib/slice/slice.cc +35 -33
  237. data/src/core/lib/slice/slice_buffer.cc +16 -14
  238. data/src/core/lib/slice/slice_hash_table.cc +3 -2
  239. data/src/core/lib/slice/slice_intern.cc +21 -25
  240. data/src/core/lib/slice/slice_string_helpers.cc +45 -9
  241. data/src/core/lib/slice/slice_string_helpers.h +6 -0
  242. data/src/core/lib/surface/byte_buffer.cc +2 -2
  243. data/src/core/lib/surface/byte_buffer_reader.cc +6 -3
  244. data/src/core/lib/surface/call.cc +171 -260
  245. data/src/core/lib/surface/call_test_only.h +1 -13
  246. data/src/core/lib/surface/channel.cc +20 -43
  247. data/src/core/lib/surface/channel_init.cc +7 -7
  248. data/src/core/lib/surface/channel_ping.cc +2 -2
  249. data/src/core/lib/surface/completion_queue.cc +69 -75
  250. data/src/core/lib/surface/init.cc +4 -5
  251. data/src/core/lib/surface/init_secure.cc +1 -1
  252. data/src/core/lib/surface/lame_client.cc +1 -1
  253. data/src/core/lib/surface/server.cc +64 -59
  254. data/src/core/lib/surface/version.cc +2 -2
  255. data/src/core/lib/transport/bdp_estimator.cc +6 -5
  256. data/src/core/lib/transport/byte_stream.cc +23 -14
  257. data/src/core/lib/transport/byte_stream.h +1 -1
  258. data/src/core/lib/transport/connectivity_state.cc +9 -13
  259. data/src/core/lib/transport/error_utils.cc +10 -7
  260. data/src/core/lib/transport/metadata.cc +27 -26
  261. data/src/core/lib/transport/metadata.h +1 -1
  262. data/src/core/lib/transport/pid_controller.cc +2 -1
  263. data/src/core/lib/transport/service_config.cc +5 -5
  264. data/src/core/lib/transport/static_metadata.cc +225 -222
  265. data/src/core/lib/transport/static_metadata.h +77 -76
  266. data/src/core/lib/transport/timeout_encoding.cc +3 -2
  267. data/src/core/lib/transport/transport.cc +6 -5
  268. data/src/core/lib/transport/transport_op_string.cc +0 -1
  269. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
  270. data/src/core/tsi/alts_transport_security.cc +61 -0
  271. data/src/core/tsi/{gts_transport_security.h → alts_transport_security.h} +16 -8
  272. data/src/core/tsi/fake_transport_security.cc +59 -43
  273. data/src/core/tsi/ssl_transport_security.cc +122 -107
  274. data/src/core/tsi/transport_security.cc +3 -3
  275. data/src/core/tsi/transport_security_adapter.cc +16 -10
  276. data/src/ruby/bin/apis/pubsub_demo.rb +1 -1
  277. data/src/ruby/ext/grpc/rb_channel.c +3 -4
  278. data/src/ruby/ext/grpc/rb_compression_options.c +13 -3
  279. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -76
  280. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +8 -120
  281. data/src/ruby/ext/grpc/rb_server.c +52 -28
  282. data/src/ruby/lib/grpc/generic/rpc_server.rb +7 -4
  283. data/src/ruby/lib/grpc/version.rb +1 -1
  284. data/src/ruby/pb/test/client.rb +1 -1
  285. data/src/ruby/pb/test/server.rb +1 -1
  286. data/src/ruby/spec/client_server_spec.rb +4 -2
  287. data/src/ruby/spec/generic/active_call_spec.rb +2 -1
  288. data/src/ruby/spec/generic/client_stub_spec.rb +32 -8
  289. data/src/ruby/spec/server_spec.rb +26 -7
  290. data/third_party/boringssl/crypto/asn1/a_bitstr.c +7 -2
  291. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +15 -0
  292. data/third_party/boringssl/crypto/asn1/a_gentm.c +1 -1
  293. data/third_party/boringssl/crypto/asn1/a_print.c +0 -28
  294. data/third_party/boringssl/crypto/asn1/a_strnid.c +3 -0
  295. data/third_party/boringssl/crypto/asn1/a_time.c +17 -9
  296. data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -1
  297. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -49
  298. data/third_party/boringssl/crypto/asn1/asn1_locl.h +1 -1
  299. data/third_party/boringssl/crypto/asn1/tasn_dec.c +9 -9
  300. data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -6
  301. data/third_party/boringssl/crypto/asn1/time_support.c +5 -5
  302. data/third_party/boringssl/crypto/base64/base64.c +65 -43
  303. data/third_party/boringssl/crypto/bio/bio.c +134 -110
  304. data/third_party/boringssl/crypto/bio/bio_mem.c +9 -9
  305. data/third_party/boringssl/crypto/bio/connect.c +17 -17
  306. data/third_party/boringssl/crypto/bio/fd.c +2 -1
  307. data/third_party/boringssl/crypto/bio/file.c +14 -14
  308. data/third_party/boringssl/crypto/bio/hexdump.c +15 -16
  309. data/third_party/boringssl/crypto/bio/internal.h +14 -14
  310. data/third_party/boringssl/crypto/bio/pair.c +45 -45
  311. data/third_party/boringssl/crypto/bio/printf.c +6 -10
  312. data/third_party/boringssl/crypto/{bn → bn_extra}/bn_asn1.c +9 -9
  313. data/third_party/boringssl/crypto/{bn → bn_extra}/convert.c +18 -223
  314. data/third_party/boringssl/crypto/buf/buf.c +20 -44
  315. data/third_party/boringssl/crypto/bytestring/ber.c +35 -35
  316. data/third_party/boringssl/crypto/bytestring/cbb.c +24 -24
  317. data/third_party/boringssl/crypto/bytestring/cbs.c +33 -37
  318. data/third_party/boringssl/crypto/bytestring/internal.h +38 -38
  319. data/third_party/boringssl/crypto/chacha/chacha.c +7 -7
  320. data/third_party/boringssl/crypto/{asn1/t_bitst.c → cipher_extra/cipher_extra.c} +49 -38
  321. data/third_party/boringssl/crypto/{cipher → cipher_extra}/derive_key.c +0 -2
  322. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +281 -0
  323. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +867 -0
  324. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +326 -0
  325. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_null.c +0 -1
  326. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc2.c +22 -10
  327. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc4.c +0 -0
  328. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_ssl3.c +120 -64
  329. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_tls.c +220 -141
  330. data/third_party/boringssl/crypto/{asn1/x_bignum.c → cipher_extra/internal.h} +61 -86
  331. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +482 -0
  332. data/third_party/boringssl/crypto/cmac/cmac.c +20 -20
  333. data/third_party/boringssl/crypto/conf/conf.c +32 -20
  334. data/third_party/boringssl/crypto/conf/internal.h +3 -3
  335. data/third_party/boringssl/crypto/cpu-aarch64-linux.c +5 -5
  336. data/third_party/boringssl/crypto/cpu-arm-linux.c +44 -41
  337. data/third_party/boringssl/crypto/cpu-intel.c +68 -43
  338. data/third_party/boringssl/crypto/cpu-ppc64le.c +5 -7
  339. data/third_party/boringssl/crypto/crypto.c +54 -32
  340. data/third_party/boringssl/crypto/curve25519/curve25519.c +269 -269
  341. data/third_party/boringssl/crypto/curve25519/internal.h +28 -8
  342. data/third_party/boringssl/crypto/curve25519/spake25519.c +180 -106
  343. data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +9 -9
  344. data/third_party/boringssl/crypto/dh/check.c +33 -34
  345. data/third_party/boringssl/crypto/dh/dh.c +72 -36
  346. data/third_party/boringssl/crypto/dh/dh_asn1.c +1 -1
  347. data/third_party/boringssl/crypto/dh/params.c +1 -161
  348. data/third_party/boringssl/crypto/digest_extra/digest_extra.c +240 -0
  349. data/third_party/boringssl/crypto/dsa/dsa.c +127 -87
  350. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +1 -1
  351. data/third_party/boringssl/crypto/{ec → ec_extra}/ec_asn1.c +83 -70
  352. data/third_party/boringssl/crypto/ecdh/ecdh.c +1 -1
  353. data/third_party/boringssl/crypto/{ecdsa → ecdsa_extra}/ecdsa_asn1.c +86 -31
  354. data/third_party/boringssl/crypto/engine/engine.c +6 -6
  355. data/third_party/boringssl/crypto/err/err.c +197 -106
  356. data/third_party/boringssl/crypto/err/internal.h +58 -0
  357. data/third_party/boringssl/crypto/evp/digestsign.c +86 -14
  358. data/third_party/boringssl/crypto/evp/evp.c +6 -11
  359. data/third_party/boringssl/crypto/evp/evp_asn1.c +17 -17
  360. data/third_party/boringssl/crypto/evp/evp_ctx.c +15 -11
  361. data/third_party/boringssl/crypto/evp/internal.h +66 -51
  362. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +11 -11
  363. data/third_party/boringssl/crypto/evp/p_ec.c +10 -8
  364. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +11 -12
  365. data/third_party/boringssl/crypto/evp/p_ed25519.c +71 -0
  366. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +190 -0
  367. data/third_party/boringssl/crypto/evp/p_rsa.c +50 -95
  368. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +28 -18
  369. data/third_party/boringssl/crypto/evp/pbkdf.c +49 -56
  370. data/third_party/boringssl/crypto/evp/print.c +5 -36
  371. data/third_party/boringssl/crypto/evp/scrypt.c +209 -0
  372. data/third_party/boringssl/crypto/ex_data.c +15 -45
  373. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +100 -0
  374. data/third_party/boringssl/crypto/fipsmodule/bcm.c +679 -0
  375. data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/internal.h +40 -27
  376. data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/rsaz_exp.h +0 -0
  377. data/third_party/boringssl/crypto/{cipher → fipsmodule/cipher}/internal.h +34 -67
  378. data/third_party/boringssl/crypto/fipsmodule/delocate.h +88 -0
  379. data/third_party/boringssl/crypto/{des → fipsmodule/des}/internal.h +18 -4
  380. data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/internal.h +18 -18
  381. data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/md32_common.h +58 -64
  382. data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/internal.h +58 -52
  383. data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64-table.h +11 -11
  384. data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64.h +32 -32
  385. data/third_party/boringssl/crypto/{rand/internal.h → fipsmodule/is_fips.c} +10 -15
  386. data/third_party/boringssl/crypto/{modes → fipsmodule/modes}/internal.h +112 -119
  387. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +92 -0
  388. data/third_party/boringssl/crypto/{rsa → fipsmodule/rsa}/internal.h +36 -49
  389. data/third_party/boringssl/crypto/hkdf/hkdf.c +6 -6
  390. data/third_party/boringssl/crypto/internal.h +301 -233
  391. data/third_party/boringssl/crypto/lhash/lhash.c +26 -45
  392. data/third_party/boringssl/crypto/mem.c +76 -33
  393. data/third_party/boringssl/crypto/obj/obj.c +44 -28
  394. data/third_party/boringssl/crypto/obj/obj_dat.h +102 -34
  395. data/third_party/boringssl/crypto/obj/obj_xref.c +6 -6
  396. data/third_party/boringssl/crypto/pem/pem_info.c +3 -5
  397. data/third_party/boringssl/crypto/pem/pem_lib.c +1 -6
  398. data/third_party/boringssl/crypto/pem/pem_pk8.c +1 -0
  399. data/third_party/boringssl/crypto/pem/pem_pkey.c +1 -1
  400. data/third_party/boringssl/crypto/pem/pem_xaux.c +0 -2
  401. data/third_party/boringssl/crypto/pkcs7/internal.h +49 -0
  402. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +166 -0
  403. data/third_party/boringssl/crypto/{x509/pkcs7.c → pkcs7/pkcs7_x509.c} +27 -147
  404. data/third_party/boringssl/crypto/pkcs8/internal.h +34 -16
  405. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +120 -39
  406. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +144 -857
  407. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +789 -0
  408. data/third_party/boringssl/crypto/poly1305/internal.h +4 -3
  409. data/third_party/boringssl/crypto/poly1305/poly1305.c +14 -14
  410. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +11 -11
  411. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +41 -41
  412. data/third_party/boringssl/crypto/pool/internal.h +2 -2
  413. data/third_party/boringssl/crypto/pool/pool.c +15 -15
  414. data/third_party/boringssl/crypto/{rand → rand_extra}/deterministic.c +7 -7
  415. data/third_party/boringssl/crypto/rand_extra/forkunsafe.c +46 -0
  416. data/third_party/boringssl/crypto/{rand → rand_extra}/fuchsia.c +7 -7
  417. data/third_party/boringssl/crypto/rand_extra/rand_extra.c +70 -0
  418. data/third_party/boringssl/crypto/{rand → rand_extra}/windows.c +5 -5
  419. data/third_party/boringssl/crypto/refcount_c11.c +2 -2
  420. data/third_party/boringssl/crypto/refcount_lock.c +1 -1
  421. data/third_party/boringssl/crypto/{rsa → rsa_extra}/rsa_asn1.c +12 -120
  422. data/third_party/boringssl/crypto/stack/stack.c +13 -13
  423. data/third_party/boringssl/crypto/thread_none.c +1 -1
  424. data/third_party/boringssl/crypto/thread_pthread.c +1 -1
  425. data/third_party/boringssl/crypto/thread_win.c +40 -40
  426. data/third_party/boringssl/crypto/x509/a_sign.c +5 -12
  427. data/third_party/boringssl/crypto/x509/a_verify.c +6 -18
  428. data/third_party/boringssl/crypto/x509/algorithm.c +22 -6
  429. data/third_party/boringssl/crypto/x509/asn1_gen.c +30 -7
  430. data/third_party/boringssl/crypto/x509/by_dir.c +2 -2
  431. data/third_party/boringssl/crypto/x509/by_file.c +2 -2
  432. data/third_party/boringssl/crypto/x509/rsa_pss.c +5 -5
  433. data/third_party/boringssl/crypto/x509/t_x509.c +2 -1
  434. data/third_party/boringssl/crypto/x509/x509_def.c +5 -0
  435. data/third_party/boringssl/crypto/x509/x509_lu.c +35 -4
  436. data/third_party/boringssl/crypto/x509/x509_set.c +10 -0
  437. data/third_party/boringssl/crypto/x509/x509_vfy.c +20 -17
  438. data/third_party/boringssl/crypto/x509/x_name.c +13 -16
  439. data/third_party/boringssl/crypto/x509/x_x509.c +3 -3
  440. data/third_party/boringssl/crypto/x509/x_x509a.c +0 -7
  441. data/third_party/boringssl/crypto/x509v3/ext_dat.h +8 -0
  442. data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
  443. data/third_party/boringssl/crypto/x509v3/pcy_lib.c +0 -9
  444. data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -1
  445. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +25 -15
  446. data/third_party/boringssl/crypto/x509v3/v3_alt.c +21 -11
  447. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +9 -3
  448. data/third_party/boringssl/crypto/x509v3/v3_info.c +22 -14
  449. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +27 -11
  450. data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -33
  451. data/third_party/boringssl/crypto/x509v3/v3_utl.c +4 -4
  452. data/third_party/boringssl/include/openssl/aead.h +280 -191
  453. data/third_party/boringssl/include/openssl/aes.h +50 -50
  454. data/third_party/boringssl/include/openssl/arm_arch.h +12 -12
  455. data/third_party/boringssl/include/openssl/asn1.h +14 -77
  456. data/third_party/boringssl/include/openssl/asn1t.h +11 -15
  457. data/third_party/boringssl/include/openssl/base.h +78 -51
  458. data/third_party/boringssl/include/openssl/base64.h +68 -68
  459. data/third_party/boringssl/include/openssl/bio.h +472 -406
  460. data/third_party/boringssl/include/openssl/blowfish.h +1 -1
  461. data/third_party/boringssl/include/openssl/bn.h +454 -435
  462. data/third_party/boringssl/include/openssl/buf.h +27 -27
  463. data/third_party/boringssl/include/openssl/bytestring.h +282 -267
  464. data/third_party/boringssl/include/openssl/cast.h +2 -2
  465. data/third_party/boringssl/include/openssl/chacha.h +5 -5
  466. data/third_party/boringssl/include/openssl/cipher.h +209 -200
  467. data/third_party/boringssl/include/openssl/cmac.h +27 -27
  468. data/third_party/boringssl/include/openssl/conf.h +49 -46
  469. data/third_party/boringssl/include/openssl/cpu.h +60 -45
  470. data/third_party/boringssl/include/openssl/crypto.h +59 -35
  471. data/third_party/boringssl/include/openssl/curve25519.h +97 -92
  472. data/third_party/boringssl/include/openssl/des.h +25 -25
  473. data/third_party/boringssl/include/openssl/dh.h +98 -97
  474. data/third_party/boringssl/include/openssl/digest.h +143 -114
  475. data/third_party/boringssl/include/openssl/dsa.h +217 -202
  476. data/third_party/boringssl/include/openssl/ec.h +132 -131
  477. data/third_party/boringssl/include/openssl/ec_key.h +132 -128
  478. data/third_party/boringssl/include/openssl/ecdh.h +9 -9
  479. data/third_party/boringssl/include/openssl/ecdsa.h +66 -66
  480. data/third_party/boringssl/include/openssl/engine.h +38 -38
  481. data/third_party/boringssl/include/openssl/err.h +189 -219
  482. data/third_party/boringssl/include/openssl/evp.h +473 -397
  483. data/third_party/boringssl/include/openssl/ex_data.h +46 -56
  484. data/third_party/boringssl/include/openssl/hkdf.h +17 -17
  485. data/third_party/boringssl/include/openssl/hmac.h +55 -43
  486. data/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
  487. data/third_party/boringssl/include/openssl/lhash.h +67 -67
  488. data/third_party/boringssl/include/openssl/lhash_macros.h +4 -4
  489. data/third_party/boringssl/include/openssl/md4.h +14 -14
  490. data/third_party/boringssl/include/openssl/md5.h +14 -14
  491. data/third_party/boringssl/include/openssl/mem.h +39 -33
  492. data/third_party/boringssl/include/openssl/nid.h +43 -0
  493. data/third_party/boringssl/include/openssl/obj.h +93 -87
  494. data/third_party/boringssl/include/openssl/opensslconf.h +8 -1
  495. data/third_party/boringssl/include/openssl/pem.h +2 -122
  496. data/third_party/boringssl/include/openssl/pkcs7.h +68 -2
  497. data/third_party/boringssl/include/openssl/pkcs8.h +81 -66
  498. data/third_party/boringssl/include/openssl/poly1305.h +11 -11
  499. data/third_party/boringssl/include/openssl/pool.h +29 -25
  500. data/third_party/boringssl/include/openssl/rand.h +48 -45
  501. data/third_party/boringssl/include/openssl/rc4.h +9 -9
  502. data/third_party/boringssl/include/openssl/ripemd.h +13 -13
  503. data/third_party/boringssl/include/openssl/rsa.h +371 -340
  504. data/third_party/boringssl/include/openssl/sha.h +71 -71
  505. data/third_party/boringssl/include/openssl/span.h +191 -0
  506. data/third_party/boringssl/include/openssl/ssl.h +2639 -2519
  507. data/third_party/boringssl/include/openssl/ssl3.h +39 -122
  508. data/third_party/boringssl/include/openssl/stack.h +355 -164
  509. data/third_party/boringssl/include/openssl/thread.h +43 -43
  510. data/third_party/boringssl/include/openssl/tls1.h +60 -63
  511. data/third_party/boringssl/include/openssl/type_check.h +10 -14
  512. data/third_party/boringssl/include/openssl/x509.h +41 -116
  513. data/third_party/boringssl/include/openssl/x509_vfy.h +17 -25
  514. data/third_party/boringssl/include/openssl/x509v3.h +27 -21
  515. data/third_party/boringssl/ssl/{bio_ssl.c → bio_ssl.cc} +9 -5
  516. data/third_party/boringssl/ssl/{custom_extensions.c → custom_extensions.cc} +19 -12
  517. data/third_party/boringssl/ssl/{d1_both.c → d1_both.cc} +224 -193
  518. data/third_party/boringssl/ssl/{d1_lib.c → d1_lib.cc} +86 -79
  519. data/third_party/boringssl/ssl/{d1_pkt.c → d1_pkt.cc} +55 -87
  520. data/third_party/boringssl/ssl/{d1_srtp.c → d1_srtp.cc} +12 -16
  521. data/third_party/boringssl/ssl/{dtls_method.c → dtls_method.cc} +33 -50
  522. data/third_party/boringssl/ssl/{dtls_record.c → dtls_record.cc} +76 -64
  523. data/third_party/boringssl/ssl/handshake.cc +547 -0
  524. data/third_party/boringssl/ssl/handshake_client.cc +1828 -0
  525. data/third_party/boringssl/ssl/handshake_server.cc +1672 -0
  526. data/third_party/boringssl/ssl/internal.h +2027 -1280
  527. data/third_party/boringssl/ssl/s3_both.cc +603 -0
  528. data/third_party/boringssl/ssl/{s3_lib.c → s3_lib.cc} +22 -10
  529. data/third_party/boringssl/ssl/{s3_pkt.c → s3_pkt.cc} +171 -75
  530. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +415 -0
  531. data/third_party/boringssl/ssl/{ssl_asn1.c → ssl_asn1.cc} +257 -261
  532. data/third_party/boringssl/ssl/{ssl_buffer.c → ssl_buffer.cc} +81 -97
  533. data/third_party/boringssl/ssl/{ssl_cert.c → ssl_cert.cc} +304 -414
  534. data/third_party/boringssl/ssl/{ssl_cipher.c → ssl_cipher.cc} +427 -505
  535. data/third_party/boringssl/ssl/{ssl_file.c → ssl_file.cc} +24 -16
  536. data/third_party/boringssl/ssl/ssl_key_share.cc +245 -0
  537. data/third_party/boringssl/ssl/{ssl_lib.c → ssl_lib.cc} +665 -828
  538. data/third_party/boringssl/ssl/ssl_privkey.cc +518 -0
  539. data/third_party/boringssl/ssl/{ssl_session.c → ssl_session.cc} +596 -471
  540. data/third_party/boringssl/ssl/{ssl_stat.c → ssl_stat.cc} +5 -224
  541. data/third_party/boringssl/ssl/{ssl_transcript.c → ssl_transcript.cc} +117 -140
  542. data/third_party/boringssl/ssl/ssl_versions.cc +439 -0
  543. data/third_party/boringssl/ssl/{ssl_x509.c → ssl_x509.cc} +751 -267
  544. data/third_party/boringssl/ssl/{t1_enc.c → t1_enc.cc} +120 -161
  545. data/third_party/boringssl/ssl/{t1_lib.c → t1_lib.cc} +859 -966
  546. data/third_party/boringssl/ssl/{tls13_both.c → tls13_both.cc} +202 -284
  547. data/third_party/boringssl/ssl/tls13_client.cc +842 -0
  548. data/third_party/boringssl/ssl/{tls13_enc.c → tls13_enc.cc} +108 -90
  549. data/third_party/boringssl/ssl/tls13_server.cc +967 -0
  550. data/third_party/boringssl/ssl/{tls_method.c → tls_method.cc} +94 -73
  551. data/third_party/boringssl/ssl/tls_record.cc +675 -0
  552. metadata +117 -168
  553. data/include/grpc/support/cmdline.h +0 -88
  554. data/include/grpc/support/subprocess.h +0 -44
  555. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -29
  556. data/src/core/ext/filters/client_channel/resolver_factory.cc +0 -40
  557. data/src/core/lib/gpr/cmdline.cc +0 -330
  558. data/src/core/lib/gpr/subprocess_posix.cc +0 -99
  559. data/src/core/lib/gpr/subprocess_windows.cc +0 -126
  560. data/src/core/lib/surface/alarm.cc +0 -137
  561. data/src/core/lib/surface/alarm_internal.h +0 -40
  562. data/src/core/tsi/gts_transport_security.cc +0 -40
  563. data/third_party/boringssl/crypto/aes/aes.c +0 -1142
  564. data/third_party/boringssl/crypto/aes/internal.h +0 -87
  565. data/third_party/boringssl/crypto/aes/key_wrap.c +0 -138
  566. data/third_party/boringssl/crypto/aes/mode_wrappers.c +0 -112
  567. data/third_party/boringssl/crypto/asn1/x_long.c +0 -200
  568. data/third_party/boringssl/crypto/bn/add.c +0 -377
  569. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -532
  570. data/third_party/boringssl/crypto/bn/bn.c +0 -365
  571. data/third_party/boringssl/crypto/bn/cmp.c +0 -239
  572. data/third_party/boringssl/crypto/bn/ctx.c +0 -313
  573. data/third_party/boringssl/crypto/bn/div.c +0 -728
  574. data/third_party/boringssl/crypto/bn/exponentiation.c +0 -1240
  575. data/third_party/boringssl/crypto/bn/gcd.c +0 -635
  576. data/third_party/boringssl/crypto/bn/generic.c +0 -707
  577. data/third_party/boringssl/crypto/bn/kronecker.c +0 -176
  578. data/third_party/boringssl/crypto/bn/montgomery.c +0 -409
  579. data/third_party/boringssl/crypto/bn/montgomery_inv.c +0 -207
  580. data/third_party/boringssl/crypto/bn/mul.c +0 -871
  581. data/third_party/boringssl/crypto/bn/prime.c +0 -861
  582. data/third_party/boringssl/crypto/bn/random.c +0 -343
  583. data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -254
  584. data/third_party/boringssl/crypto/bn/shift.c +0 -307
  585. data/third_party/boringssl/crypto/bn/sqrt.c +0 -506
  586. data/third_party/boringssl/crypto/cipher/aead.c +0 -156
  587. data/third_party/boringssl/crypto/cipher/cipher.c +0 -657
  588. data/third_party/boringssl/crypto/cipher/e_aes.c +0 -1771
  589. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +0 -276
  590. data/third_party/boringssl/crypto/cipher/e_des.c +0 -205
  591. data/third_party/boringssl/crypto/cipher/tls_cbc.c +0 -482
  592. data/third_party/boringssl/crypto/des/des.c +0 -771
  593. data/third_party/boringssl/crypto/digest/digest.c +0 -251
  594. data/third_party/boringssl/crypto/digest/digests.c +0 -358
  595. data/third_party/boringssl/crypto/ec/ec.c +0 -847
  596. data/third_party/boringssl/crypto/ec/ec_key.c +0 -479
  597. data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -303
  598. data/third_party/boringssl/crypto/ec/oct.c +0 -416
  599. data/third_party/boringssl/crypto/ec/p224-64.c +0 -1143
  600. data/third_party/boringssl/crypto/ec/p256-64.c +0 -1701
  601. data/third_party/boringssl/crypto/ec/p256-x86_64.c +0 -561
  602. data/third_party/boringssl/crypto/ec/simple.c +0 -1118
  603. data/third_party/boringssl/crypto/ec/util-64.c +0 -109
  604. data/third_party/boringssl/crypto/ec/wnaf.c +0 -458
  605. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +0 -479
  606. data/third_party/boringssl/crypto/hmac/hmac.c +0 -215
  607. data/third_party/boringssl/crypto/md4/md4.c +0 -236
  608. data/third_party/boringssl/crypto/md5/md5.c +0 -285
  609. data/third_party/boringssl/crypto/modes/cbc.c +0 -212
  610. data/third_party/boringssl/crypto/modes/cfb.c +0 -230
  611. data/third_party/boringssl/crypto/modes/ctr.c +0 -219
  612. data/third_party/boringssl/crypto/modes/gcm.c +0 -1071
  613. data/third_party/boringssl/crypto/modes/ofb.c +0 -95
  614. data/third_party/boringssl/crypto/modes/polyval.c +0 -94
  615. data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +0 -85
  616. data/third_party/boringssl/crypto/rand/rand.c +0 -244
  617. data/third_party/boringssl/crypto/rand/urandom.c +0 -335
  618. data/third_party/boringssl/crypto/rsa/blinding.c +0 -265
  619. data/third_party/boringssl/crypto/rsa/padding.c +0 -708
  620. data/third_party/boringssl/crypto/rsa/rsa.c +0 -830
  621. data/third_party/boringssl/crypto/rsa/rsa_impl.c +0 -1100
  622. data/third_party/boringssl/crypto/sha/sha1-altivec.c +0 -346
  623. data/third_party/boringssl/crypto/sha/sha1.c +0 -355
  624. data/third_party/boringssl/crypto/sha/sha256.c +0 -329
  625. data/third_party/boringssl/crypto/sha/sha512.c +0 -609
  626. data/third_party/boringssl/crypto/x509/x509type.c +0 -126
  627. data/third_party/boringssl/include/openssl/stack_macros.h +0 -3987
  628. data/third_party/boringssl/ssl/handshake_client.c +0 -1883
  629. data/third_party/boringssl/ssl/handshake_server.c +0 -1950
  630. data/third_party/boringssl/ssl/s3_both.c +0 -895
  631. data/third_party/boringssl/ssl/ssl_aead_ctx.c +0 -335
  632. data/third_party/boringssl/ssl/ssl_ecdh.c +0 -465
  633. data/third_party/boringssl/ssl/ssl_privkey.c +0 -683
  634. data/third_party/boringssl/ssl/ssl_privkey_cc.cc +0 -76
  635. data/third_party/boringssl/ssl/tls13_client.c +0 -712
  636. data/third_party/boringssl/ssl/tls13_server.c +0 -680
  637. data/third_party/boringssl/ssl/tls_record.c +0 -556
@@ -125,14 +125,14 @@ extern "C" {
125
125
  #endif
126
126
 
127
127
 
128
- /* These are kept to support clients that negotiates higher protocol versions
129
- * using SSLv2 client hello records. */
128
+ // These are kept to support clients that negotiates higher protocol versions
129
+ // using SSLv2 client hello records.
130
130
  #define SSL2_MT_CLIENT_HELLO 1
131
131
  #define SSL2_VERSION 0x0002
132
132
 
133
- /* Signalling cipher suite value from RFC 5746. */
133
+ // Signalling cipher suite value from RFC 5746.
134
134
  #define SSL3_CK_SCSV 0x030000FF
135
- /* Fallback signalling cipher suite value from RFC 7507. */
135
+ // Fallback signalling cipher suite value from RFC 7507.
136
136
  #define SSL3_CK_FALLBACK_SCSV 0x03005600
137
137
 
138
138
  #define SSL3_CK_RSA_NULL_MD5 0x03000001
@@ -208,11 +208,11 @@ extern "C" {
208
208
  #define SSL3_HM_HEADER_LENGTH 4
209
209
 
210
210
  #ifndef SSL3_ALIGN_PAYLOAD
211
- /* Some will argue that this increases memory footprint, but it's not actually
212
- * true. Point is that malloc has to return at least 64-bit aligned pointers,
213
- * meaning that allocating 5 bytes wastes 3 bytes in either case. Suggested
214
- * pre-gaping simply moves these wasted bytes from the end of allocated region
215
- * to its front, but makes data payload aligned, which improves performance. */
211
+ // Some will argue that this increases memory footprint, but it's not actually
212
+ // true. Point is that malloc has to return at least 64-bit aligned pointers,
213
+ // meaning that allocating 5 bytes wastes 3 bytes in either case. Suggested
214
+ // pre-gaping simply moves these wasted bytes from the end of allocated region
215
+ // to its front, but makes data payload aligned, which improves performance.
216
216
  #define SSL3_ALIGN_PAYLOAD 8
217
217
  #else
218
218
  #if (SSL3_ALIGN_PAYLOAD & (SSL3_ALIGN_PAYLOAD - 1)) != 0
@@ -221,33 +221,33 @@ extern "C" {
221
221
  #endif
222
222
  #endif
223
223
 
224
- /* This is the maximum MAC (digest) size used by the SSL library. Currently
225
- * maximum of 20 is used by SHA1, but we reserve for future extension for
226
- * 512-bit hashes. */
224
+ // This is the maximum MAC (digest) size used by the SSL library. Currently
225
+ // maximum of 20 is used by SHA1, but we reserve for future extension for
226
+ // 512-bit hashes.
227
227
 
228
228
  #define SSL3_RT_MAX_MD_SIZE 64
229
229
 
230
- /* Maximum block size used in all ciphersuites. Currently 16 for AES. */
230
+ // Maximum block size used in all ciphersuites. Currently 16 for AES.
231
231
 
232
232
  #define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16
233
233
 
234
- /* Maximum plaintext length: defined by SSL/TLS standards */
234
+ // Maximum plaintext length: defined by SSL/TLS standards
235
235
  #define SSL3_RT_MAX_PLAIN_LENGTH 16384
236
- /* Maximum compression overhead: defined by SSL/TLS standards */
236
+ // Maximum compression overhead: defined by SSL/TLS standards
237
237
  #define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024
238
238
 
239
- /* The standards give a maximum encryption overhead of 1024 bytes. In practice
240
- * the value is lower than this. The overhead is the maximum number of padding
241
- * bytes (256) plus the mac size.
242
- *
243
- * TODO(davidben): This derivation doesn't take AEADs into account, or TLS 1.1
244
- * explicit nonces. It happens to work because |SSL3_RT_MAX_MD_SIZE| is larger
245
- * than necessary and no true AEAD has variable overhead in TLS 1.2. */
239
+ // The standards give a maximum encryption overhead of 1024 bytes. In practice
240
+ // the value is lower than this. The overhead is the maximum number of padding
241
+ // bytes (256) plus the mac size.
242
+ //
243
+ // TODO(davidben): This derivation doesn't take AEADs into account, or TLS 1.1
244
+ // explicit nonces. It happens to work because |SSL3_RT_MAX_MD_SIZE| is larger
245
+ // than necessary and no true AEAD has variable overhead in TLS 1.2.
246
246
  #define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE)
247
247
 
248
- /* SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD is the maximum overhead in encrypting a
249
- * record. This does not include the record header. Some ciphers use explicit
250
- * nonces, so it includes both the AEAD overhead as well as the nonce. */
248
+ // SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD is the maximum overhead in encrypting a
249
+ // record. This does not include the record header. Some ciphers use explicit
250
+ // nonces, so it includes both the AEAD overhead as well as the nonce.
251
251
  #define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \
252
252
  (EVP_AEAD_MAX_OVERHEAD + EVP_AEAD_MAX_NONCE_LENGTH)
253
253
 
@@ -255,9 +255,9 @@ OPENSSL_COMPILE_ASSERT(
255
255
  SSL3_RT_MAX_ENCRYPTED_OVERHEAD >= SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD,
256
256
  max_overheads_are_consistent);
257
257
 
258
- /* SSL3_RT_MAX_COMPRESSED_LENGTH is an alias for
259
- * |SSL3_RT_MAX_PLAIN_LENGTH|. Compression is gone, so don't include the
260
- * compression overhead. */
258
+ // SSL3_RT_MAX_COMPRESSED_LENGTH is an alias for
259
+ // |SSL3_RT_MAX_PLAIN_LENGTH|. Compression is gone, so don't include the
260
+ // compression overhead.
261
261
  #define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH
262
262
 
263
263
  #define SSL3_RT_MAX_ENCRYPTED_LENGTH \
@@ -273,100 +273,27 @@ OPENSSL_COMPILE_ASSERT(
273
273
  #define SSL3_RT_HANDSHAKE 22
274
274
  #define SSL3_RT_APPLICATION_DATA 23
275
275
 
276
- /* Pseudo content type for SSL/TLS header info */
276
+ // Pseudo content type for SSL/TLS header info
277
277
  #define SSL3_RT_HEADER 0x100
278
278
 
279
279
  #define SSL3_AL_WARNING 1
280
280
  #define SSL3_AL_FATAL 2
281
281
 
282
282
  #define SSL3_AD_CLOSE_NOTIFY 0
283
- #define SSL3_AD_UNEXPECTED_MESSAGE 10 /* fatal */
284
- #define SSL3_AD_BAD_RECORD_MAC 20 /* fatal */
285
- #define SSL3_AD_DECOMPRESSION_FAILURE 30 /* fatal */
286
- #define SSL3_AD_HANDSHAKE_FAILURE 40 /* fatal */
283
+ #define SSL3_AD_UNEXPECTED_MESSAGE 10 // fatal
284
+ #define SSL3_AD_BAD_RECORD_MAC 20 // fatal
285
+ #define SSL3_AD_DECOMPRESSION_FAILURE 30 // fatal
286
+ #define SSL3_AD_HANDSHAKE_FAILURE 40 // fatal
287
287
  #define SSL3_AD_NO_CERTIFICATE 41
288
288
  #define SSL3_AD_BAD_CERTIFICATE 42
289
289
  #define SSL3_AD_UNSUPPORTED_CERTIFICATE 43
290
290
  #define SSL3_AD_CERTIFICATE_REVOKED 44
291
291
  #define SSL3_AD_CERTIFICATE_EXPIRED 45
292
292
  #define SSL3_AD_CERTIFICATE_UNKNOWN 46
293
- #define SSL3_AD_ILLEGAL_PARAMETER 47 /* fatal */
294
- #define SSL3_AD_INAPPROPRIATE_FALLBACK 86 /* fatal */
293
+ #define SSL3_AD_ILLEGAL_PARAMETER 47 // fatal
294
+ #define SSL3_AD_INAPPROPRIATE_FALLBACK 86 // fatal
295
295
 
296
296
  #define SSL3_CT_RSA_SIGN 1
297
- #define SSL3_CT_DSS_SIGN 2
298
- #define SSL3_CT_RSA_FIXED_DH 3
299
- #define SSL3_CT_DSS_FIXED_DH 4
300
- #define SSL3_CT_RSA_EPHEMERAL_DH 5
301
- #define SSL3_CT_DSS_EPHEMERAL_DH 6
302
- #define SSL3_CT_FORTEZZA_DMS 20
303
-
304
- /* SSLv3 */
305
- /* client */
306
- /* extra state */
307
- #define SSL3_ST_CW_FLUSH (0x100 | SSL_ST_CONNECT)
308
- #define SSL3_ST_FALSE_START (0x101 | SSL_ST_CONNECT)
309
- #define SSL3_ST_VERIFY_SERVER_CERT (0x102 | SSL_ST_CONNECT)
310
- #define SSL3_ST_FINISH_CLIENT_HANDSHAKE (0x103 | SSL_ST_CONNECT)
311
- /* write to server */
312
- #define SSL3_ST_CW_CLNT_HELLO_A (0x110 | SSL_ST_CONNECT)
313
- /* read from server */
314
- #define SSL3_ST_CR_SRVR_HELLO_A (0x120 | SSL_ST_CONNECT)
315
- #define DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A (0x126 | SSL_ST_CONNECT)
316
- #define SSL3_ST_CR_CERT_A (0x130 | SSL_ST_CONNECT)
317
- #define SSL3_ST_CR_KEY_EXCH_A (0x140 | SSL_ST_CONNECT)
318
- #define SSL3_ST_CR_KEY_EXCH_B (0x141 | SSL_ST_CONNECT)
319
- #define SSL3_ST_CR_CERT_REQ_A (0x150 | SSL_ST_CONNECT)
320
- #define SSL3_ST_CR_SRVR_DONE_A (0x160 | SSL_ST_CONNECT)
321
- /* write to server */
322
- #define SSL3_ST_CW_CERT_A (0x170 | SSL_ST_CONNECT)
323
- #define SSL3_ST_CW_KEY_EXCH_A (0x180 | SSL_ST_CONNECT)
324
- #define SSL3_ST_CW_CERT_VRFY_A (0x190 | SSL_ST_CONNECT)
325
- #define SSL3_ST_CW_CERT_VRFY_B (0x191 | SSL_ST_CONNECT)
326
- #define SSL3_ST_CW_CHANGE (0x1A0 | SSL_ST_CONNECT)
327
- #define SSL3_ST_CW_NEXT_PROTO_A (0x200 | SSL_ST_CONNECT)
328
- #define SSL3_ST_CW_CHANNEL_ID_A (0x220 | SSL_ST_CONNECT)
329
- #define SSL3_ST_CW_FINISHED_A (0x1B0 | SSL_ST_CONNECT)
330
- /* read from server */
331
- #define SSL3_ST_CR_CHANGE (0x1C0 | SSL_ST_CONNECT)
332
- #define SSL3_ST_CR_FINISHED_A (0x1D0 | SSL_ST_CONNECT)
333
- #define SSL3_ST_CR_SESSION_TICKET_A (0x1E0 | SSL_ST_CONNECT)
334
- #define SSL3_ST_CR_CERT_STATUS_A (0x1F0 | SSL_ST_CONNECT)
335
-
336
- /* SSL3_ST_CR_SRVR_HELLO_B is a legacy alias for |SSL3_ST_CR_SRVR_HELLO_A| used
337
- * by some consumers which check |SSL_state|. */
338
- #define SSL3_ST_CR_SRVR_HELLO_B SSL3_ST_CR_SRVR_HELLO_A
339
-
340
- /* server */
341
- /* extra state */
342
- #define SSL3_ST_SW_FLUSH (0x100 | SSL_ST_ACCEPT)
343
- /* read from client */
344
- #define SSL3_ST_SR_CLNT_HELLO_A (0x110 | SSL_ST_ACCEPT)
345
- #define SSL3_ST_SR_CLNT_HELLO_B (0x111 | SSL_ST_ACCEPT)
346
- #define SSL3_ST_SR_CLNT_HELLO_C (0x112 | SSL_ST_ACCEPT)
347
- #define SSL3_ST_SR_CLNT_HELLO_D (0x113 | SSL_ST_ACCEPT)
348
- /* write to client */
349
- #define SSL3_ST_SW_SRVR_HELLO_A (0x130 | SSL_ST_ACCEPT)
350
- #define SSL3_ST_SW_CERT_A (0x140 | SSL_ST_ACCEPT)
351
- #define SSL3_ST_SW_KEY_EXCH_A (0x150 | SSL_ST_ACCEPT)
352
- #define SSL3_ST_SW_KEY_EXCH_B (0x151 | SSL_ST_ACCEPT)
353
- #define SSL3_ST_SW_CERT_REQ_A (0x160 | SSL_ST_ACCEPT)
354
- #define SSL3_ST_SW_SRVR_DONE_A (0x170 | SSL_ST_ACCEPT)
355
- /* read from client */
356
- #define SSL3_ST_SR_CERT_A (0x180 | SSL_ST_ACCEPT)
357
- #define SSL3_ST_SR_KEY_EXCH_A (0x190 | SSL_ST_ACCEPT)
358
- #define SSL3_ST_SR_KEY_EXCH_B (0x191 | SSL_ST_ACCEPT)
359
- #define SSL3_ST_SR_CERT_VRFY_A (0x1A0 | SSL_ST_ACCEPT)
360
- #define SSL3_ST_SR_CHANGE (0x1B0 | SSL_ST_ACCEPT)
361
- #define SSL3_ST_SR_NEXT_PROTO_A (0x210 | SSL_ST_ACCEPT)
362
- #define SSL3_ST_SR_CHANNEL_ID_A (0x230 | SSL_ST_ACCEPT)
363
- #define SSL3_ST_SR_FINISHED_A (0x1C0 | SSL_ST_ACCEPT)
364
-
365
- /* write to client */
366
- #define SSL3_ST_SW_CHANGE (0x1D0 | SSL_ST_ACCEPT)
367
- #define SSL3_ST_SW_FINISHED_A (0x1E0 | SSL_ST_ACCEPT)
368
- #define SSL3_ST_SW_SESSION_TICKET_A (0x1F0 | SSL_ST_ACCEPT)
369
- #define SSL3_ST_SW_CERT_STATUS_A (0x200 | SSL_ST_ACCEPT)
370
297
 
371
298
  #define SSL3_MT_HELLO_REQUEST 0
372
299
  #define SSL3_MT_CLIENT_HELLO 1
@@ -388,27 +315,17 @@ OPENSSL_COMPILE_ASSERT(
388
315
  #define SSL3_MT_CHANNEL_ID 203
389
316
  #define DTLS1_MT_HELLO_VERIFY_REQUEST 3
390
317
 
391
- /* The following are legacy aliases for consumers which use
392
- * |SSL_CTX_set_msg_callback|. */
318
+ // The following are legacy aliases for consumers which use
319
+ // |SSL_CTX_set_msg_callback|.
393
320
  #define SSL3_MT_SERVER_DONE SSL3_MT_SERVER_HELLO_DONE
394
321
  #define SSL3_MT_NEWSESSION_TICKET SSL3_MT_NEW_SESSION_TICKET
395
322
 
396
323
 
397
324
  #define SSL3_MT_CCS 1
398
325
 
399
- /* These are used when changing over to a new cipher */
400
- #define SSL3_CC_READ 0x01
401
- #define SSL3_CC_WRITE 0x02
402
- #define SSL3_CC_CLIENT 0x10
403
- #define SSL3_CC_SERVER 0x20
404
- #define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT | SSL3_CC_WRITE)
405
- #define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER | SSL3_CC_READ)
406
- #define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT | SSL3_CC_READ)
407
- #define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER | SSL3_CC_WRITE)
408
-
409
326
 
410
327
  #ifdef __cplusplus
411
- } /* extern C */
328
+ } // extern C
412
329
  #endif
413
330
 
414
- #endif /* OPENSSL_HEADER_SSL3_H */
331
+ #endif // OPENSSL_HEADER_SSL3_H
@@ -66,45 +66,45 @@ extern "C" {
66
66
  #endif
67
67
 
68
68
 
69
- /* A stack, in OpenSSL, is an array of pointers. They are the most commonly
70
- * used collection object.
71
- *
72
- * This file defines macros for type safe use of the stack functions. A stack
73
- * of a specific type of object has type |STACK_OF(type)|. This can be defined
74
- * (once) with |DEFINE_STACK_OF(type)| and declared where needed with
75
- * |DECLARE_STACK_OF(type)|. For example:
76
- *
77
- * struct foo {
78
- * int bar;
79
- * };
80
- *
81
- * DEFINE_STACK_OF(struct foo);
82
- *
83
- * Although note that the stack will contain /pointers/ to |foo|.
84
- *
85
- * A macro will be defined for each of the sk_* functions below. For
86
- * STACK_OF(foo), the macros would be sk_foo_new, sk_foo_pop etc. */
87
-
88
-
89
- /* stack_cmp_func is a comparison function that returns a value < 0, 0 or > 0
90
- * if |*a| is less than, equal to or greater than |*b|, respectively. Note the
91
- * extra indirection - the function is given a pointer to a pointer to the
92
- * element. This differs from the usual qsort/bsearch comparison function. */
69
+ // A stack, in OpenSSL, is an array of pointers. They are the most commonly
70
+ // used collection object.
71
+ //
72
+ // This file defines macros for type safe use of the stack functions. A stack
73
+ // of a specific type of object has type |STACK_OF(type)|. This can be defined
74
+ // (once) with |DEFINE_STACK_OF(type)| and declared where needed with
75
+ // |DECLARE_STACK_OF(type)|. For example:
76
+ //
77
+ // typedef struct foo_st {
78
+ // int bar;
79
+ // } FOO;
80
+ //
81
+ // DEFINE_STACK_OF(FOO);
82
+ //
83
+ // Although note that the stack will contain /pointers/ to |FOO|.
84
+ //
85
+ // A macro will be defined for each of the sk_* functions below. For
86
+ // STACK_OF(FOO), the macros would be sk_FOO_new, sk_FOO_pop etc.
87
+
88
+
89
+ // stack_cmp_func is a comparison function that returns a value < 0, 0 or > 0
90
+ // if |*a| is less than, equal to or greater than |*b|, respectively. Note the
91
+ // extra indirection - the function is given a pointer to a pointer to the
92
+ // element. This differs from the usual qsort/bsearch comparison function.
93
93
  typedef int (*stack_cmp_func)(const void **a, const void **b);
94
94
 
95
- /* stack_st contains an array of pointers. It is not designed to be used
96
- * directly, rather the wrapper macros should be used. */
95
+ // stack_st contains an array of pointers. It is not designed to be used
96
+ // directly, rather the wrapper macros should be used.
97
97
  typedef struct stack_st {
98
- /* num contains the number of valid pointers in |data|. */
98
+ // num contains the number of valid pointers in |data|.
99
99
  size_t num;
100
100
  void **data;
101
- /* sorted is non-zero if the values pointed to by |data| are in ascending
102
- * order, based on |comp|. */
101
+ // sorted is non-zero if the values pointed to by |data| are in ascending
102
+ // order, based on |comp|.
103
103
  int sorted;
104
- /* num_alloc contains the number of pointers allocated in the buffer pointed
105
- * to by |data|, which may be larger than |num|. */
104
+ // num_alloc contains the number of pointers allocated in the buffer pointed
105
+ // to by |data|, which may be larger than |num|.
106
106
  size_t num_alloc;
107
- /* comp is an optional comparison function. */
107
+ // comp is an optional comparison function.
108
108
  stack_cmp_func comp;
109
109
  } _STACK;
110
110
 
@@ -113,182 +113,373 @@ typedef struct stack_st {
113
113
 
114
114
  #define DECLARE_STACK_OF(type) STACK_OF(type);
115
115
 
116
- /* The make_macros.sh script in this directory parses the following lines and
117
- * generates the stack_macros.h file that contains macros for the following
118
- * types of stacks:
119
- *
120
- * STACK_OF:ACCESS_DESCRIPTION
121
- * STACK_OF:ASN1_ADB_TABLE
122
- * STACK_OF:ASN1_GENERALSTRING
123
- * STACK_OF:ASN1_INTEGER
124
- * STACK_OF:ASN1_OBJECT
125
- * STACK_OF:ASN1_STRING_TABLE
126
- * STACK_OF:ASN1_TYPE
127
- * STACK_OF:ASN1_VALUE
128
- * STACK_OF:BIO
129
- * STACK_OF:BY_DIR_ENTRY
130
- * STACK_OF:BY_DIR_HASH
131
- * STACK_OF:CONF_VALUE
132
- * STACK_OF:CRYPTO_BUFFER
133
- * STACK_OF:CRYPTO_EX_DATA_FUNCS
134
- * STACK_OF:DIST_POINT
135
- * STACK_OF:GENERAL_NAME
136
- * STACK_OF:GENERAL_NAMES
137
- * STACK_OF:GENERAL_SUBTREE
138
- * STACK_OF:POLICYINFO
139
- * STACK_OF:POLICYQUALINFO
140
- * STACK_OF:POLICY_MAPPING
141
- * STACK_OF:RSA_additional_prime
142
- * STACK_OF:SSL_COMP
143
- * STACK_OF:SSL_CUSTOM_EXTENSION
144
- * STACK_OF:STACK_OF_X509_NAME_ENTRY
145
- * STACK_OF:SXNETID
146
- * STACK_OF:X509
147
- * STACK_OF:X509V3_EXT_METHOD
148
- * STACK_OF:X509_ALGOR
149
- * STACK_OF:X509_ATTRIBUTE
150
- * STACK_OF:X509_CRL
151
- * STACK_OF:X509_EXTENSION
152
- * STACK_OF:X509_INFO
153
- * STACK_OF:X509_LOOKUP
154
- * STACK_OF:X509_NAME
155
- * STACK_OF:X509_NAME_ENTRY
156
- * STACK_OF:X509_OBJECT
157
- * STACK_OF:X509_POLICY_DATA
158
- * STACK_OF:X509_POLICY_NODE
159
- * STACK_OF:X509_PURPOSE
160
- * STACK_OF:X509_REVOKED
161
- * STACK_OF:X509_TRUST
162
- * STACK_OF:X509_VERIFY_PARAM
163
- * STACK_OF:void
164
- *
165
- * Some stacks contain only const structures, so the stack should return const
166
- * pointers to retain type-checking.
167
- *
168
- * CONST_STACK_OF:SRTP_PROTECTION_PROFILE
169
- * CONST_STACK_OF:SSL_CIPHER */
170
-
171
-
172
- /* Some stacks are special because, although we would like STACK_OF(char *),
173
- * that would actually be a stack of pointers to char*, but we just want to
174
- * point to the string directly. In this case we call them "special" and use
175
- * |DEFINE_SPECIAL_STACK_OF(type)| */
176
- #define DEFINE_SPECIAL_STACK_OF(type, inner) \
177
- STACK_OF(type) { _STACK special_stack; }; \
178
- OPENSSL_COMPILE_ASSERT(sizeof(type) == sizeof(void *), \
179
- special_stack_of_non_pointer_##type);
180
-
181
- typedef char *OPENSSL_STRING;
182
-
183
- DEFINE_SPECIAL_STACK_OF(OPENSSL_STRING, char)
116
+ // These are the raw stack functions, you shouldn't be using them. Rather you
117
+ // should be using the type stack macros implemented above.
184
118
 
185
- /* The make_macros.sh script in this directory parses the following lines and
186
- * generates the stack_macros.h file that contains macros for the following
187
- * types of stacks:
188
- *
189
- * SPECIAL_STACK_OF:OPENSSL_STRING */
190
-
191
- #define IN_STACK_H
192
- #include <openssl/stack_macros.h>
193
- #undef IN_STACK_H
194
-
195
-
196
- /* These are the raw stack functions, you shouldn't be using them. Rather you
197
- * should be using the type stack macros implemented above. */
198
-
199
- /* sk_new creates a new, empty stack with the given comparison function, which
200
- * may be zero. It returns the new stack or NULL on allocation failure. */
119
+ // sk_new creates a new, empty stack with the given comparison function, which
120
+ // may be zero. It returns the new stack or NULL on allocation failure.
201
121
  OPENSSL_EXPORT _STACK *sk_new(stack_cmp_func comp);
202
122
 
203
- /* sk_new_null creates a new, empty stack. It returns the new stack or NULL on
204
- * allocation failure. */
123
+ // sk_new_null creates a new, empty stack. It returns the new stack or NULL on
124
+ // allocation failure.
205
125
  OPENSSL_EXPORT _STACK *sk_new_null(void);
206
126
 
207
- /* sk_num returns the number of elements in |s|. */
127
+ // sk_num returns the number of elements in |s|.
208
128
  OPENSSL_EXPORT size_t sk_num(const _STACK *sk);
209
129
 
210
- /* sk_zero resets |sk| to the empty state but does nothing to free the
211
- * individual elements themselves. */
130
+ // sk_zero resets |sk| to the empty state but does nothing to free the
131
+ // individual elements themselves.
212
132
  OPENSSL_EXPORT void sk_zero(_STACK *sk);
213
133
 
214
- /* sk_value returns the |i|th pointer in |sk|, or NULL if |i| is out of
215
- * range. */
134
+ // sk_value returns the |i|th pointer in |sk|, or NULL if |i| is out of
135
+ // range.
216
136
  OPENSSL_EXPORT void *sk_value(const _STACK *sk, size_t i);
217
137
 
218
- /* sk_set sets the |i|th pointer in |sk| to |p| and returns |p|. If |i| is out
219
- * of range, it returns NULL. */
138
+ // sk_set sets the |i|th pointer in |sk| to |p| and returns |p|. If |i| is out
139
+ // of range, it returns NULL.
220
140
  OPENSSL_EXPORT void *sk_set(_STACK *sk, size_t i, void *p);
221
141
 
222
- /* sk_free frees the given stack and array of pointers, but does nothing to
223
- * free the individual elements. Also see |sk_pop_free|. */
142
+ // sk_free frees the given stack and array of pointers, but does nothing to
143
+ // free the individual elements. Also see |sk_pop_free|.
224
144
  OPENSSL_EXPORT void sk_free(_STACK *sk);
225
145
 
226
- /* sk_pop_free calls |free_func| on each element in the stack and then frees
227
- * the stack itself. */
146
+ // sk_pop_free calls |free_func| on each element in the stack and then frees
147
+ // the stack itself.
228
148
  OPENSSL_EXPORT void sk_pop_free(_STACK *sk, void (*free_func)(void *));
229
149
 
230
- /* sk_insert inserts |p| into the stack at index |where|, moving existing
231
- * elements if needed. It returns the length of the new stack, or zero on
232
- * error. */
150
+ // sk_insert inserts |p| into the stack at index |where|, moving existing
151
+ // elements if needed. It returns the length of the new stack, or zero on
152
+ // error.
233
153
  OPENSSL_EXPORT size_t sk_insert(_STACK *sk, void *p, size_t where);
234
154
 
235
- /* sk_delete removes the pointer at index |where|, moving other elements down
236
- * if needed. It returns the removed pointer, or NULL if |where| is out of
237
- * range. */
155
+ // sk_delete removes the pointer at index |where|, moving other elements down
156
+ // if needed. It returns the removed pointer, or NULL if |where| is out of
157
+ // range.
238
158
  OPENSSL_EXPORT void *sk_delete(_STACK *sk, size_t where);
239
159
 
240
- /* sk_delete_ptr removes, at most, one instance of |p| from the stack based on
241
- * pointer equality. If an instance of |p| is found then |p| is returned,
242
- * otherwise it returns NULL. */
160
+ // sk_delete_ptr removes, at most, one instance of |p| from the stack based on
161
+ // pointer equality. If an instance of |p| is found then |p| is returned,
162
+ // otherwise it returns NULL.
243
163
  OPENSSL_EXPORT void *sk_delete_ptr(_STACK *sk, void *p);
244
164
 
245
- /* sk_find returns the first value in the stack equal to |p|. If a comparison
246
- * function has been set on the stack, then equality is defined by it and the
247
- * stack will be sorted if need be so that a binary search can be used.
248
- * Otherwise pointer equality is used. If a matching element is found, its
249
- * index is written to |*out_index| (if |out_index| is not NULL) and one is
250
- * returned. Otherwise zero is returned. */
165
+ // sk_find returns the first value in the stack equal to |p|. If a comparison
166
+ // function has been set on the stack, then equality is defined by it and the
167
+ // stack will be sorted if need be so that a binary search can be used.
168
+ // Otherwise pointer equality is used. If a matching element is found, its
169
+ // index is written to |*out_index| (if |out_index| is not NULL) and one is
170
+ // returned. Otherwise zero is returned.
251
171
  OPENSSL_EXPORT int sk_find(_STACK *sk, size_t *out_index, void *p);
252
172
 
253
- /* sk_shift removes and returns the first element in the stack, or returns NULL
254
- * if the stack is empty. */
173
+ // sk_shift removes and returns the first element in the stack, or returns NULL
174
+ // if the stack is empty.
255
175
  OPENSSL_EXPORT void *sk_shift(_STACK *sk);
256
176
 
257
- /* sk_push appends |p| to the stack and returns the length of the new stack, or
258
- * 0 on allocation failure. */
177
+ // sk_push appends |p| to the stack and returns the length of the new stack, or
178
+ // 0 on allocation failure.
259
179
  OPENSSL_EXPORT size_t sk_push(_STACK *sk, void *p);
260
180
 
261
- /* sk_pop returns and removes the last element on the stack, or NULL if the
262
- * stack is empty. */
181
+ // sk_pop returns and removes the last element on the stack, or NULL if the
182
+ // stack is empty.
263
183
  OPENSSL_EXPORT void *sk_pop(_STACK *sk);
264
184
 
265
- /* sk_dup performs a shallow copy of a stack and returns the new stack, or NULL
266
- * on error. */
185
+ // sk_dup performs a shallow copy of a stack and returns the new stack, or NULL
186
+ // on error.
267
187
  OPENSSL_EXPORT _STACK *sk_dup(const _STACK *sk);
268
188
 
269
- /* sk_sort sorts the elements of |sk| into ascending order based on the
270
- * comparison function. The stack maintains a |sorted| flag and sorting an
271
- * already sorted stack is a no-op. */
189
+ // sk_sort sorts the elements of |sk| into ascending order based on the
190
+ // comparison function. The stack maintains a |sorted| flag and sorting an
191
+ // already sorted stack is a no-op.
272
192
  OPENSSL_EXPORT void sk_sort(_STACK *sk);
273
193
 
274
- /* sk_is_sorted returns one if |sk| is known to be sorted and zero
275
- * otherwise. */
194
+ // sk_is_sorted returns one if |sk| is known to be sorted and zero
195
+ // otherwise.
276
196
  OPENSSL_EXPORT int sk_is_sorted(const _STACK *sk);
277
197
 
278
- /* sk_set_cmp_func sets the comparison function to be used by |sk| and returns
279
- * the previous one. */
198
+ // sk_set_cmp_func sets the comparison function to be used by |sk| and returns
199
+ // the previous one.
280
200
  OPENSSL_EXPORT stack_cmp_func sk_set_cmp_func(_STACK *sk, stack_cmp_func comp);
281
201
 
282
- /* sk_deep_copy performs a copy of |sk| and of each of the non-NULL elements in
283
- * |sk| by using |copy_func|. If an error occurs, |free_func| is used to free
284
- * any copies already made and NULL is returned. */
202
+ // sk_deep_copy performs a copy of |sk| and of each of the non-NULL elements in
203
+ // |sk| by using |copy_func|. If an error occurs, |free_func| is used to free
204
+ // any copies already made and NULL is returned.
285
205
  OPENSSL_EXPORT _STACK *sk_deep_copy(const _STACK *sk,
286
206
  void *(*copy_func)(void *),
287
207
  void (*free_func)(void *));
288
208
 
289
209
 
210
+ // Defining stack types.
211
+ //
212
+ // This set of macros is used to emit the typed functions that act on a
213
+ // |STACK_OF(T)|.
214
+
215
+ #if !defined(BORINGSSL_NO_CXX)
216
+ extern "C++" {
217
+ namespace bssl {
218
+ namespace internal {
219
+ template <typename T>
220
+ struct StackTraits {};
221
+ }
222
+ }
223
+ }
224
+
225
+ #define BORINGSSL_DEFINE_STACK_TRAITS(name, type, is_const) \
226
+ extern "C++" { \
227
+ namespace bssl { \
228
+ namespace internal { \
229
+ template <> \
230
+ struct StackTraits<STACK_OF(name)> { \
231
+ static constexpr bool kIsStack = true; \
232
+ using Type = type; \
233
+ static constexpr bool kIsConst = is_const; \
234
+ }; \
235
+ } \
236
+ } \
237
+ }
238
+
239
+ #else
240
+ #define BORINGSSL_DEFINE_STACK_TRAITS(name, type, is_const)
241
+ #endif
242
+
243
+ // Stack functions must be tagged unused to support file-local stack types.
244
+ // Clang's -Wunused-function only allows unused static inline functions if they
245
+ // are defined in a header.
246
+
247
+ #define BORINGSSL_DEFINE_STACK_OF_IMPL(name, ptrtype, constptrtype) \
248
+ DECLARE_STACK_OF(name); \
249
+ \
250
+ typedef int (*stack_##name##_cmp_func)(constptrtype *a, constptrtype *b); \
251
+ \
252
+ static inline OPENSSL_UNUSED STACK_OF(name) * \
253
+ sk_##name##_new(stack_##name##_cmp_func comp) { \
254
+ return (STACK_OF(name) *)sk_new((stack_cmp_func)comp); \
255
+ } \
256
+ \
257
+ static inline OPENSSL_UNUSED STACK_OF(name) *sk_##name##_new_null(void) { \
258
+ return (STACK_OF(name) *)sk_new_null(); \
259
+ } \
260
+ \
261
+ static inline OPENSSL_UNUSED size_t sk_##name##_num( \
262
+ const STACK_OF(name) *sk) { \
263
+ return sk_num((const _STACK *)sk); \
264
+ } \
265
+ \
266
+ static inline OPENSSL_UNUSED void sk_##name##_zero(STACK_OF(name) *sk) { \
267
+ sk_zero((_STACK *)sk); \
268
+ } \
269
+ \
270
+ static inline OPENSSL_UNUSED ptrtype sk_##name##_value( \
271
+ const STACK_OF(name) *sk, size_t i) { \
272
+ return (ptrtype)sk_value((const _STACK *)sk, i); \
273
+ } \
274
+ \
275
+ static inline OPENSSL_UNUSED ptrtype sk_##name##_set(STACK_OF(name) *sk, \
276
+ size_t i, ptrtype p) { \
277
+ return (ptrtype)sk_set((_STACK *)sk, i, (void *)p); \
278
+ } \
279
+ \
280
+ static inline OPENSSL_UNUSED void sk_##name##_free(STACK_OF(name) *sk) { \
281
+ sk_free((_STACK *)sk); \
282
+ } \
283
+ \
284
+ static inline OPENSSL_UNUSED void sk_##name##_pop_free( \
285
+ STACK_OF(name) *sk, void (*free_func)(ptrtype p)) { \
286
+ sk_pop_free((_STACK *)sk, (void (*)(void *))free_func); \
287
+ } \
288
+ \
289
+ static inline OPENSSL_UNUSED size_t sk_##name##_insert( \
290
+ STACK_OF(name) *sk, ptrtype p, size_t where) { \
291
+ return sk_insert((_STACK *)sk, (void *)p, where); \
292
+ } \
293
+ \
294
+ static inline OPENSSL_UNUSED ptrtype sk_##name##_delete(STACK_OF(name) *sk, \
295
+ size_t where) { \
296
+ return (ptrtype)sk_delete((_STACK *)sk, where); \
297
+ } \
298
+ \
299
+ static inline OPENSSL_UNUSED ptrtype sk_##name##_delete_ptr( \
300
+ STACK_OF(name) *sk, ptrtype p) { \
301
+ return (ptrtype)sk_delete_ptr((_STACK *)sk, (void *)p); \
302
+ } \
303
+ \
304
+ static inline OPENSSL_UNUSED int sk_##name##_find( \
305
+ STACK_OF(name) *sk, size_t *out_index, ptrtype p) { \
306
+ return sk_find((_STACK *)sk, out_index, (void *)p); \
307
+ } \
308
+ \
309
+ static inline OPENSSL_UNUSED ptrtype sk_##name##_shift(STACK_OF(name) *sk) { \
310
+ return (ptrtype)sk_shift((_STACK *)sk); \
311
+ } \
312
+ \
313
+ static inline OPENSSL_UNUSED size_t sk_##name##_push(STACK_OF(name) *sk, \
314
+ ptrtype p) { \
315
+ return sk_push((_STACK *)sk, (void *)p); \
316
+ } \
317
+ \
318
+ static inline OPENSSL_UNUSED ptrtype sk_##name##_pop(STACK_OF(name) *sk) { \
319
+ return (ptrtype)sk_pop((_STACK *)sk); \
320
+ } \
321
+ \
322
+ static inline OPENSSL_UNUSED STACK_OF(name) * \
323
+ sk_##name##_dup(const STACK_OF(name) *sk) { \
324
+ return (STACK_OF(name) *)sk_dup((const _STACK *)sk); \
325
+ } \
326
+ \
327
+ static inline OPENSSL_UNUSED void sk_##name##_sort(STACK_OF(name) *sk) { \
328
+ sk_sort((_STACK *)sk); \
329
+ } \
330
+ \
331
+ static inline OPENSSL_UNUSED int sk_##name##_is_sorted( \
332
+ const STACK_OF(name) *sk) { \
333
+ return sk_is_sorted((const _STACK *)sk); \
334
+ } \
335
+ \
336
+ static inline OPENSSL_UNUSED stack_##name##_cmp_func \
337
+ sk_##name##_set_cmp_func(STACK_OF(name) *sk, \
338
+ stack_##name##_cmp_func comp) { \
339
+ return (stack_##name##_cmp_func)sk_set_cmp_func((_STACK *)sk, \
340
+ (stack_cmp_func)comp); \
341
+ } \
342
+ \
343
+ static inline OPENSSL_UNUSED STACK_OF(name) * \
344
+ sk_##name##_deep_copy(const STACK_OF(name) *sk, \
345
+ ptrtype(*copy_func)(ptrtype), \
346
+ void (*free_func)(ptrtype)) { \
347
+ return (STACK_OF(name) *)sk_deep_copy((_STACK *)sk, \
348
+ (void *(*)(void *))copy_func, \
349
+ (void (*)(void *))free_func); \
350
+ }
351
+
352
+ // DEFINE_STACK_OF defines |STACK_OF(type)| to be a stack whose elements are
353
+ // |type| *.
354
+ #define DEFINE_STACK_OF(type) \
355
+ BORINGSSL_DEFINE_STACK_OF_IMPL(type, type *, const type *) \
356
+ BORINGSSL_DEFINE_STACK_TRAITS(type, type, false)
357
+
358
+ // DEFINE_CONST_STACK_OF defines |STACK_OF(type)| to be a stack whose elements
359
+ // are const |type| *.
360
+ #define DEFINE_CONST_STACK_OF(type) \
361
+ BORINGSSL_DEFINE_STACK_OF_IMPL(type, const type *, const type *) \
362
+ BORINGSSL_DEFINE_STACK_TRAITS(type, const type, true)
363
+
364
+ // DEFINE_SPECIAL_STACK_OF defines |STACK_OF(type)| to be a stack whose elements
365
+ // are |type|, where |type| must be a typedef for a pointer.
366
+ #define DEFINE_SPECIAL_STACK_OF(type) \
367
+ OPENSSL_COMPILE_ASSERT(sizeof(type) == sizeof(void *), \
368
+ special_stack_of_non_pointer_##type); \
369
+ BORINGSSL_DEFINE_STACK_OF_IMPL(type, type, const type)
370
+
371
+
372
+ typedef char *OPENSSL_STRING;
373
+
374
+ DEFINE_STACK_OF(void)
375
+ DEFINE_SPECIAL_STACK_OF(OPENSSL_STRING)
376
+
377
+
290
378
  #if defined(__cplusplus)
291
- } /* extern C */
379
+ } // extern C
380
+ #endif
381
+
382
+ #if !defined(BORINGSSL_NO_CXX)
383
+ extern "C++" {
384
+
385
+ #include <type_traits>
386
+
387
+ namespace bssl {
388
+
389
+ namespace internal {
390
+
391
+ // Stacks defined with |DEFINE_CONST_STACK_OF| are freed with |sk_free|.
392
+ template <typename Stack>
393
+ struct DeleterImpl<
394
+ Stack, typename std::enable_if<StackTraits<Stack>::kIsConst>::type> {
395
+ static void Free(Stack *sk) { sk_free(reinterpret_cast<_STACK *>(sk)); }
396
+ };
397
+
398
+ // Stacks defined with |DEFINE_STACK_OF| are freed with |sk_pop_free| and the
399
+ // corresponding type's deleter.
400
+ template <typename Stack>
401
+ struct DeleterImpl<
402
+ Stack, typename std::enable_if<!StackTraits<Stack>::kIsConst>::type> {
403
+ static void Free(Stack *sk) {
404
+ sk_pop_free(
405
+ reinterpret_cast<_STACK *>(sk),
406
+ reinterpret_cast<void (*)(void *)>(
407
+ DeleterImpl<typename StackTraits<Stack>::Type>::Free));
408
+ }
409
+ };
410
+
411
+ template <typename Stack>
412
+ class StackIteratorImpl {
413
+ public:
414
+ using Type = typename StackTraits<Stack>::Type;
415
+ // Iterators must be default-constructable.
416
+ StackIteratorImpl() : sk_(nullptr), idx_(0) {}
417
+ StackIteratorImpl(const Stack *sk, size_t idx) : sk_(sk), idx_(idx) {}
418
+
419
+ bool operator==(StackIteratorImpl other) const {
420
+ return sk_ == other.sk_ && idx_ == other.idx_;
421
+ }
422
+ bool operator!=(StackIteratorImpl other) const {
423
+ return !(*this == other);
424
+ }
425
+
426
+ Type *operator*() const {
427
+ return reinterpret_cast<Type *>(
428
+ sk_value(reinterpret_cast<const _STACK *>(sk_), idx_));
429
+ }
430
+
431
+ StackIteratorImpl &operator++(/* prefix */) {
432
+ idx_++;
433
+ return *this;
434
+ }
435
+
436
+ StackIteratorImpl operator++(int /* postfix */) {
437
+ StackIteratorImpl copy(*this);
438
+ ++(*this);
439
+ return copy;
440
+ }
441
+
442
+ private:
443
+ const Stack *sk_;
444
+ size_t idx_;
445
+ };
446
+
447
+ template <typename Stack>
448
+ using StackIterator = typename std::enable_if<StackTraits<Stack>::kIsStack,
449
+ StackIteratorImpl<Stack>>::type;
450
+
451
+ } // namespace internal
452
+
453
+ // PushToStack pushes |elem| to |sk|. It returns true on success and false on
454
+ // allocation failure.
455
+ template <typename Stack>
456
+ static inline
457
+ typename std::enable_if<!internal::StackTraits<Stack>::kIsConst, bool>::type
458
+ PushToStack(Stack *sk,
459
+ UniquePtr<typename internal::StackTraits<Stack>::Type> elem) {
460
+ if (!sk_push(reinterpret_cast<_STACK *>(sk), elem.get())) {
461
+ return false;
462
+ }
463
+ // sk_push takes ownership on success.
464
+ elem.release();
465
+ return true;
466
+ }
467
+
468
+ } // namespace bssl
469
+
470
+ // Define begin() and end() for stack types so C++ range for loops work.
471
+ template <typename Stack>
472
+ static inline bssl::internal::StackIterator<Stack> begin(const Stack *sk) {
473
+ return bssl::internal::StackIterator<Stack>(sk, 0);
474
+ }
475
+
476
+ template <typename Stack>
477
+ static inline bssl::internal::StackIterator<Stack> end(const Stack *sk) {
478
+ return bssl::internal::StackIterator<Stack>(
479
+ sk, sk_num(reinterpret_cast<const _STACK *>(sk)));
480
+ }
481
+
482
+ } // extern C++
292
483
  #endif
293
484
 
294
- #endif /* OPENSSL_HEADER_STACK_H */
485
+ #endif // OPENSSL_HEADER_STACK_H