grpc 0.13.1 → 0.14.1.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 (724) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +2098 -828
  3. data/include/grpc/byte_buffer.h +1 -1
  4. data/include/grpc/byte_buffer_reader.h +1 -20
  5. data/include/grpc/census.h +4 -4
  6. data/include/grpc/compression.h +6 -5
  7. data/include/grpc/grpc.h +31 -20
  8. data/include/grpc/grpc_security.h +17 -31
  9. data/include/grpc/grpc_security_constants.h +114 -0
  10. data/include/grpc/grpc_zookeeper.h +1 -1
  11. data/include/grpc/impl/codegen/alloc.h +1 -1
  12. data/include/grpc/impl/codegen/atm.h +1 -1
  13. data/include/grpc/impl/codegen/atm_gcc_atomic.h +1 -1
  14. data/include/grpc/impl/codegen/atm_gcc_sync.h +1 -1
  15. data/include/grpc/impl/codegen/atm_win32.h +1 -1
  16. data/include/grpc/impl/codegen/byte_buffer.h +1 -1
  17. data/{src/core/client_config/lb_policies/round_robin.h → include/grpc/impl/codegen/byte_buffer_reader.h} +19 -8
  18. data/include/grpc/impl/codegen/grpc_types.h +20 -3
  19. data/include/grpc/impl/codegen/log.h +9 -2
  20. data/include/grpc/impl/codegen/port_platform.h +102 -17
  21. data/include/grpc/impl/codegen/propagation_bits.h +3 -3
  22. data/include/grpc/impl/codegen/slice.h +3 -3
  23. data/include/grpc/impl/codegen/slice_buffer.h +3 -3
  24. data/include/grpc/impl/codegen/status.h +1 -1
  25. data/include/grpc/impl/codegen/sync_generic.h +1 -1
  26. data/include/grpc/impl/codegen/sync_posix.h +1 -1
  27. data/include/grpc/impl/codegen/sync_win32.h +1 -1
  28. data/include/grpc/impl/codegen/time.h +3 -3
  29. data/include/grpc/status.h +1 -1
  30. data/include/grpc/support/alloc.h +1 -1
  31. data/include/grpc/support/atm.h +1 -1
  32. data/include/grpc/support/atm_gcc_atomic.h +4 -4
  33. data/include/grpc/support/atm_gcc_sync.h +1 -1
  34. data/include/grpc/support/atm_win32.h +1 -1
  35. data/include/grpc/support/avl.h +1 -1
  36. data/include/grpc/support/cmdline.h +1 -1
  37. data/include/grpc/support/cpu.h +1 -1
  38. data/include/grpc/support/histogram.h +1 -1
  39. data/include/grpc/support/host_port.h +1 -1
  40. data/include/grpc/support/log.h +1 -1
  41. data/include/grpc/support/log_win32.h +1 -1
  42. data/include/grpc/support/port_platform.h +1 -1
  43. data/include/grpc/support/slice.h +1 -1
  44. data/include/grpc/support/slice_buffer.h +1 -1
  45. data/include/grpc/support/string_util.h +3 -1
  46. data/include/grpc/support/subprocess.h +2 -2
  47. data/include/grpc/support/sync.h +1 -1
  48. data/include/grpc/support/sync_generic.h +1 -1
  49. data/include/grpc/support/sync_posix.h +1 -1
  50. data/include/grpc/support/sync_win32.h +1 -1
  51. data/include/grpc/support/thd.h +1 -1
  52. data/include/grpc/support/time.h +1 -1
  53. data/include/grpc/support/tls.h +1 -1
  54. data/include/grpc/support/tls_gcc.h +45 -1
  55. data/include/grpc/support/tls_msvc.h +3 -3
  56. data/include/grpc/support/tls_pthread.h +1 -1
  57. data/include/grpc/support/useful.h +1 -1
  58. data/src/boringssl/err_data.c +258 -252
  59. data/src/core/{census → ext/census}/aggregation.h +3 -3
  60. data/src/core/{statistics → ext/census}/census_interface.h +3 -3
  61. data/src/core/{statistics → ext/census}/census_rpc_stats.h +4 -4
  62. data/src/core/{census → ext/census}/context.c +2 -2
  63. data/src/core/{census → ext/census}/grpc_context.c +2 -2
  64. data/src/core/{census → ext/census}/grpc_filter.c +30 -16
  65. data/src/core/{census → ext/census}/grpc_filter.h +4 -4
  66. data/src/core/ext/census/grpc_plugin.c +82 -0
  67. data/src/core/{census → ext/census}/initialize.c +1 -1
  68. data/src/core/{census → ext/census}/mlog.c +2 -2
  69. data/src/core/{census → ext/census}/mlog.h +4 -4
  70. data/src/core/{census → ext/census}/operation.c +0 -0
  71. data/src/core/{census → ext/census}/placeholders.c +0 -0
  72. data/src/core/{census → ext/census}/rpc_metric_id.h +3 -3
  73. data/src/core/{census → ext/census}/tracing.c +0 -0
  74. data/src/core/{surface → ext/client_config}/channel_connectivity.c +8 -21
  75. data/src/core/{channel → ext/client_config}/client_channel.c +80 -35
  76. data/src/core/{channel → ext/client_config}/client_channel.h +5 -5
  77. data/src/core/{client_config/subchannel_factory.c → ext/client_config/client_channel_factory.c} +14 -6
  78. data/src/core/ext/client_config/client_channel_factory.h +85 -0
  79. data/src/core/{client_config → ext/client_config}/client_config.c +4 -2
  80. data/src/core/{client_config → ext/client_config}/client_config.h +4 -4
  81. data/src/core/ext/client_config/client_config_plugin.c +95 -0
  82. data/src/core/{client_config → ext/client_config}/connector.c +2 -2
  83. data/src/core/{client_config → ext/client_config}/connector.h +7 -10
  84. data/src/core/{client_config → ext/client_config}/default_initial_connect_string.c +1 -1
  85. data/src/core/{client_config → ext/client_config}/initial_connect_string.c +1 -1
  86. data/src/core/{client_config → ext/client_config}/initial_connect_string.h +4 -4
  87. data/src/core/{client_config → ext/client_config}/lb_policy.c +12 -3
  88. data/src/core/{client_config → ext/client_config}/lb_policy.h +19 -6
  89. data/src/core/{client_config → ext/client_config}/lb_policy_factory.c +4 -3
  90. data/src/core/{client_config → ext/client_config}/lb_policy_factory.h +14 -9
  91. data/src/core/{client_config → ext/client_config}/lb_policy_registry.c +4 -9
  92. data/src/core/{client_config → ext/client_config}/lb_policy_registry.h +7 -6
  93. data/src/core/ext/client_config/parse_address.c +137 -0
  94. data/src/core/ext/client_config/parse_address.h +56 -0
  95. data/src/core/{client_config → ext/client_config}/resolver.c +1 -1
  96. data/src/core/{client_config → ext/client_config}/resolver.h +6 -6
  97. data/src/core/{client_config → ext/client_config}/resolver_factory.c +1 -1
  98. data/src/core/{client_config → ext/client_config}/resolver_factory.h +7 -7
  99. data/src/core/{client_config → ext/client_config}/resolver_registry.c +25 -11
  100. data/src/core/{client_config → ext/client_config}/resolver_registry.h +9 -5
  101. data/src/core/{client_config → ext/client_config}/subchannel.c +90 -126
  102. data/src/core/{client_config → ext/client_config}/subchannel.h +15 -15
  103. data/src/core/{channel → ext/client_config}/subchannel_call_holder.c +9 -8
  104. data/src/core/{channel → ext/client_config}/subchannel_call_holder.h +7 -7
  105. data/src/core/{client_config → ext/client_config}/subchannel_index.c +3 -2
  106. data/src/core/{client_config → ext/client_config}/subchannel_index.h +5 -5
  107. data/src/core/{client_config → ext/client_config}/uri_parser.c +69 -1
  108. data/src/core/{client_config → ext/client_config}/uri_parser.h +15 -3
  109. data/src/core/{client_config/lb_policies → ext/lb_policy/grpclb}/load_balancer_api.c +18 -9
  110. data/src/core/{client_config/lb_policies → ext/lb_policy/grpclb}/load_balancer_api.h +5 -5
  111. data/src/core/{proto → ext/lb_policy/grpclb/proto}/grpc/lb/v0/load_balancer.pb.c +1 -1
  112. data/src/core/{proto → ext/lb_policy/grpclb/proto}/grpc/lb/v0/load_balancer.pb.h +0 -0
  113. data/src/core/{client_config/lb_policies → ext/lb_policy/pick_first}/pick_first.c +95 -32
  114. data/src/core/{client_config/lb_policies → ext/lb_policy/round_robin}/round_robin.c +98 -34
  115. data/src/core/{client_config/resolvers → ext/resolver/dns/native}/dns_resolver.c +83 -39
  116. data/src/core/{client_config/resolvers → ext/resolver/sockaddr}/sockaddr_resolver.c +66 -169
  117. data/src/core/{transport/chttp2 → ext/transport/chttp2/alpn}/alpn.c +1 -1
  118. data/src/core/{transport/chttp2 → ext/transport/chttp2/alpn}/alpn.h +3 -3
  119. data/src/core/{surface → ext/transport/chttp2/client/insecure}/channel_create.c +65 -59
  120. data/src/core/{surface → ext/transport/chttp2/client/secure}/secure_channel_create.c +77 -69
  121. data/src/core/{surface → ext/transport/chttp2/server/insecure}/server_chttp2.c +8 -11
  122. data/src/core/{security → ext/transport/chttp2/server/secure}/server_secure_chttp2.c +14 -17
  123. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/bin_encoder.c +28 -74
  124. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/bin_encoder.h +5 -5
  125. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +46 -0
  126. data/src/core/{transport → ext/transport/chttp2/transport}/chttp2_transport.c +551 -310
  127. data/src/core/{transport → ext/transport/chttp2/transport}/chttp2_transport.h +5 -5
  128. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame.h +3 -3
  129. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_data.c +30 -14
  130. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_data.h +10 -7
  131. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_goaway.c +2 -2
  132. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_goaway.h +5 -5
  133. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_ping.c +2 -2
  134. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_ping.h +5 -5
  135. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_rst_stream.c +9 -5
  136. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_rst_stream.h +8 -6
  137. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_settings.c +6 -6
  138. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_settings.h +5 -5
  139. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_window_update.c +11 -5
  140. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_window_update.h +8 -6
  141. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_encoder.c +21 -12
  142. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_encoder.h +8 -6
  143. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_parser.c +42 -25
  144. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_parser.h +7 -7
  145. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_table.c +21 -11
  146. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_table.h +4 -4
  147. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/http2_errors.h +3 -3
  148. data/src/core/ext/transport/chttp2/transport/huffsyms.c +105 -0
  149. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/huffsyms.h +3 -3
  150. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/incoming_metadata.c +2 -2
  151. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/incoming_metadata.h +4 -4
  152. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/internal.h +81 -37
  153. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/parsing.c +54 -21
  154. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/status_conversion.c +1 -1
  155. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/status_conversion.h +4 -4
  156. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_lists.c +10 -2
  157. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_map.c +1 -1
  158. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_map.h +3 -3
  159. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/timeout_encoding.c +4 -4
  160. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/timeout_encoding.h +4 -4
  161. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/varint.c +1 -1
  162. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/varint.h +3 -3
  163. data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/writing.c +30 -20
  164. data/src/core/{channel → lib/channel}/channel_args.c +3 -15
  165. data/src/core/{channel → lib/channel}/channel_args.h +11 -15
  166. data/src/core/{channel → lib/channel}/channel_stack.c +5 -3
  167. data/src/core/{channel → lib/channel}/channel_stack.h +13 -8
  168. data/src/core/lib/channel/channel_stack_builder.c +277 -0
  169. data/src/core/lib/channel/channel_stack_builder.h +161 -0
  170. data/src/core/{channel → lib/channel}/compress_filter.c +51 -16
  171. data/src/core/{channel → lib/channel}/compress_filter.h +6 -4
  172. data/src/core/{channel → lib/channel}/connected_channel.c +34 -24
  173. data/src/core/lib/channel/connected_channel.h +42 -0
  174. data/src/core/{channel → lib/channel}/context.h +3 -3
  175. data/src/core/{channel → lib/channel}/http_client_filter.c +24 -13
  176. data/src/core/{channel → lib/channel}/http_client_filter.h +4 -4
  177. data/src/core/{channel → lib/channel}/http_server_filter.c +39 -19
  178. data/src/core/{channel → lib/channel}/http_server_filter.h +4 -4
  179. data/src/core/{compression → lib/compression}/algorithm_metadata.h +4 -4
  180. data/src/core/{compression → lib/compression}/compression_algorithm.c +46 -9
  181. data/src/core/{compression → lib/compression}/message_compress.c +1 -1
  182. data/src/core/{compression → lib/compression}/message_compress.h +3 -3
  183. data/src/core/{debug → lib/debug}/trace.c +2 -2
  184. data/src/core/{debug → lib/debug}/trace.h +3 -3
  185. data/src/core/{httpcli → lib/http}/format_request.c +8 -8
  186. data/src/core/{httpcli → lib/http}/format_request.h +4 -4
  187. data/src/core/{httpcli → lib/http}/httpcli.c +24 -19
  188. data/src/core/{httpcli → lib/http}/httpcli.h +14 -33
  189. data/src/core/{httpcli → lib/http}/httpcli_security_connector.c +5 -5
  190. data/src/core/lib/http/parser.c +341 -0
  191. data/src/core/lib/http/parser.h +119 -0
  192. data/src/core/{iomgr → lib/iomgr}/closure.c +8 -2
  193. data/src/core/{iomgr → lib/iomgr}/closure.h +7 -4
  194. data/src/core/{iomgr → lib/iomgr}/endpoint.c +1 -1
  195. data/src/core/{iomgr → lib/iomgr}/endpoint.h +5 -5
  196. data/src/core/{iomgr → lib/iomgr}/endpoint_pair.h +4 -4
  197. data/src/core/{iomgr → lib/iomgr}/endpoint_pair_posix.c +8 -7
  198. data/src/core/{iomgr → lib/iomgr}/endpoint_pair_windows.c +4 -4
  199. data/src/core/lib/iomgr/ev_poll_and_epoll_posix.c +1936 -0
  200. data/src/core/lib/iomgr/ev_poll_and_epoll_posix.h +41 -0
  201. data/src/core/lib/iomgr/ev_posix.c +164 -0
  202. data/src/core/lib/iomgr/ev_posix.h +158 -0
  203. data/src/core/{iomgr → lib/iomgr}/exec_ctx.c +78 -3
  204. data/src/core/{iomgr → lib/iomgr}/exec_ctx.h +25 -10
  205. data/src/core/{iomgr → lib/iomgr}/executor.c +3 -3
  206. data/src/core/{iomgr → lib/iomgr}/executor.h +5 -5
  207. data/src/core/{iomgr → lib/iomgr}/iocp_windows.c +6 -6
  208. data/src/core/{iomgr → lib/iomgr}/iocp_windows.h +5 -5
  209. data/src/core/{iomgr → lib/iomgr}/iomgr.c +13 -10
  210. data/src/core/{iomgr → lib/iomgr}/iomgr.h +3 -3
  211. data/src/core/{iomgr → lib/iomgr}/iomgr_internal.h +5 -9
  212. data/src/core/{iomgr → lib/iomgr}/iomgr_posix.c +6 -6
  213. data/src/core/{iomgr → lib/iomgr}/iomgr_posix.h +4 -4
  214. data/src/core/{iomgr → lib/iomgr}/iomgr_windows.c +7 -4
  215. data/src/core/{iomgr → lib/iomgr}/pollset.h +11 -11
  216. data/src/core/{iomgr → lib/iomgr}/pollset_set.h +5 -5
  217. data/src/core/{iomgr → lib/iomgr}/pollset_set_windows.c +2 -2
  218. data/src/core/lib/iomgr/pollset_set_windows.h +39 -0
  219. data/src/core/{iomgr → lib/iomgr}/pollset_windows.c +7 -7
  220. data/src/core/{iomgr → lib/iomgr}/pollset_windows.h +8 -5
  221. data/src/core/{iomgr → lib/iomgr}/resolve_address.h +10 -9
  222. data/src/core/{iomgr → lib/iomgr}/resolve_address_posix.c +22 -22
  223. data/src/core/{iomgr → lib/iomgr}/resolve_address_windows.c +20 -12
  224. data/src/core/{iomgr → lib/iomgr}/sockaddr.h +5 -5
  225. data/src/core/{iomgr → lib/iomgr}/sockaddr_posix.h +5 -5
  226. data/src/core/{iomgr → lib/iomgr}/sockaddr_utils.c +9 -16
  227. data/src/core/{iomgr → lib/iomgr}/sockaddr_utils.h +4 -4
  228. data/src/core/{iomgr → lib/iomgr}/sockaddr_win32.h +6 -4
  229. data/src/core/{iomgr → lib/iomgr}/socket_utils_common_posix.c +29 -7
  230. data/src/core/{iomgr → lib/iomgr}/socket_utils_linux.c +2 -2
  231. data/src/core/{iomgr → lib/iomgr}/socket_utils_posix.c +1 -1
  232. data/src/core/{iomgr → lib/iomgr}/socket_utils_posix.h +14 -4
  233. data/src/core/{iomgr → lib/iomgr}/socket_windows.c +7 -5
  234. data/src/core/{iomgr → lib/iomgr}/socket_windows.h +6 -6
  235. data/src/core/{iomgr → lib/iomgr}/tcp_client.h +6 -6
  236. data/src/core/{iomgr → lib/iomgr}/tcp_client_posix.c +33 -18
  237. data/src/core/{iomgr → lib/iomgr}/tcp_client_windows.c +30 -20
  238. data/src/core/{iomgr → lib/iomgr}/tcp_posix.c +9 -10
  239. data/src/core/{iomgr → lib/iomgr}/tcp_posix.h +6 -6
  240. data/src/core/{iomgr → lib/iomgr}/tcp_server.h +6 -6
  241. data/src/core/{iomgr → lib/iomgr}/tcp_server_posix.c +24 -37
  242. data/src/core/{iomgr → lib/iomgr}/tcp_server_windows.c +8 -36
  243. data/src/core/{iomgr → lib/iomgr}/tcp_windows.c +27 -17
  244. data/src/core/{iomgr → lib/iomgr}/tcp_windows.h +5 -5
  245. data/src/core/{iomgr → lib/iomgr}/time_averaged_stats.c +1 -1
  246. data/src/core/{iomgr → lib/iomgr}/time_averaged_stats.h +3 -3
  247. data/src/core/{iomgr → lib/iomgr}/timer.c +31 -4
  248. data/src/core/{iomgr → lib/iomgr}/timer.h +6 -7
  249. data/src/core/{iomgr → lib/iomgr}/timer_heap.c +2 -2
  250. data/src/core/{iomgr → lib/iomgr}/timer_heap.h +4 -4
  251. data/src/core/{iomgr → lib/iomgr}/udp_server.c +13 -37
  252. data/src/core/{iomgr → lib/iomgr}/udp_server.h +11 -10
  253. data/src/core/lib/iomgr/unix_sockets_posix.c +89 -0
  254. data/src/core/{client_config/resolvers/sockaddr_resolver.h → lib/iomgr/unix_sockets_posix.h} +15 -11
  255. data/src/core/lib/iomgr/unix_sockets_posix_noop.c +59 -0
  256. data/src/core/{iomgr → lib/iomgr}/wakeup_fd_eventfd.c +2 -2
  257. data/src/core/{iomgr → lib/iomgr}/wakeup_fd_nospecial.c +1 -1
  258. data/src/core/{iomgr → lib/iomgr}/wakeup_fd_pipe.c +8 -3
  259. data/src/core/{iomgr → lib/iomgr}/wakeup_fd_pipe.h +4 -4
  260. data/src/core/{iomgr → lib/iomgr}/wakeup_fd_posix.c +2 -2
  261. data/src/core/{iomgr → lib/iomgr}/wakeup_fd_posix.h +3 -3
  262. data/src/core/{iomgr → lib/iomgr}/workqueue.h +10 -10
  263. data/src/core/{iomgr → lib/iomgr}/workqueue_posix.c +5 -6
  264. data/src/core/{iomgr → lib/iomgr}/workqueue_posix.h +5 -5
  265. data/src/core/{iomgr → lib/iomgr}/workqueue_windows.c +1 -1
  266. data/src/core/{iomgr → lib/iomgr}/workqueue_windows.h +3 -3
  267. data/src/core/{json → lib/json}/json.c +1 -1
  268. data/src/core/{json → lib/json}/json.h +4 -4
  269. data/src/core/{json → lib/json}/json_common.h +3 -3
  270. data/src/core/{json → lib/json}/json_reader.c +16 -4
  271. data/src/core/{json → lib/json}/json_reader.h +4 -4
  272. data/src/core/{json → lib/json}/json_string.c +4 -4
  273. data/src/core/{json → lib/json}/json_writer.c +1 -1
  274. data/src/core/{json → lib/json}/json_writer.h +4 -4
  275. data/src/core/{profiling → lib/profiling}/basic_timers.c +3 -2
  276. data/src/core/{profiling → lib/profiling}/stap_timers.c +2 -2
  277. data/src/core/{profiling → lib/profiling}/timers.h +3 -3
  278. data/src/core/{security → lib/security}/auth_filters.h +4 -4
  279. data/src/core/{security → lib/security}/b64.c +2 -2
  280. data/src/core/{security → lib/security}/b64.h +4 -4
  281. data/src/core/{security → lib/security}/client_auth_filter.c +16 -16
  282. data/src/core/{security → lib/security}/credentials.c +42 -26
  283. data/src/core/{security → lib/security}/credentials.h +11 -10
  284. data/src/core/{security → lib/security}/credentials_metadata.c +1 -1
  285. data/src/core/{security → lib/security}/credentials_posix.c +3 -3
  286. data/src/core/{security → lib/security}/credentials_win32.c +3 -3
  287. data/src/core/{security → lib/security}/google_default_credentials.c +10 -9
  288. data/src/core/{security → lib/security}/handshake.c +4 -4
  289. data/src/core/{security → lib/security}/handshake.h +6 -6
  290. data/src/core/{security → lib/security}/json_token.c +4 -4
  291. data/src/core/{security → lib/security}/json_token.h +4 -4
  292. data/src/core/{security → lib/security}/jwt_verifier.c +14 -14
  293. data/src/core/{security → lib/security}/jwt_verifier.h +5 -5
  294. data/src/core/{security → lib/security}/secure_endpoint.c +9 -8
  295. data/src/core/{security → lib/security}/secure_endpoint.h +4 -4
  296. data/src/core/{security → lib/security}/security_connector.c +53 -21
  297. data/src/core/{security → lib/security}/security_connector.h +8 -8
  298. data/src/core/{security → lib/security}/security_context.c +5 -5
  299. data/src/core/{security → lib/security}/security_context.h +5 -5
  300. data/src/core/{security → lib/security}/server_auth_filter.c +9 -9
  301. data/src/core/{support → lib/support}/alloc.c +5 -3
  302. data/src/core/{support → lib/support}/avl.c +1 -1
  303. data/src/core/lib/support/backoff.c +76 -0
  304. data/src/core/lib/support/backoff.h +68 -0
  305. data/src/core/{support → lib/support}/block_annotate.h +3 -3
  306. data/src/core/{support → lib/support}/cmdline.c +1 -1
  307. data/src/core/{support → lib/support}/cpu_iphone.c +0 -0
  308. data/src/core/{support → lib/support}/cpu_linux.c +2 -2
  309. data/src/core/{support → lib/support}/cpu_posix.c +2 -2
  310. data/src/core/{support → lib/support}/cpu_windows.c +0 -0
  311. data/src/core/{support → lib/support}/env.h +3 -3
  312. data/src/core/{support → lib/support}/env_linux.c +3 -3
  313. data/src/core/{support → lib/support}/env_posix.c +2 -2
  314. data/src/core/{support → lib/support}/env_win32.c +27 -21
  315. data/src/core/{support → lib/support}/histogram.c +1 -1
  316. data/src/core/{support → lib/support}/host_port.c +1 -1
  317. data/src/core/{support → lib/support}/load_file.c +4 -4
  318. data/src/core/{support → lib/support}/load_file.h +4 -4
  319. data/src/core/{support → lib/support}/log.c +33 -0
  320. data/src/core/{support → lib/support}/log_android.c +2 -2
  321. data/src/core/{support → lib/support}/log_linux.c +6 -5
  322. data/src/core/{support → lib/support}/log_posix.c +3 -3
  323. data/src/core/{support → lib/support}/log_win32.c +8 -22
  324. data/src/core/{support → lib/support}/murmur_hash.c +1 -1
  325. data/src/core/{support → lib/support}/murmur_hash.h +3 -3
  326. data/src/core/{support → lib/support}/slice.c +0 -0
  327. data/src/core/{support → lib/support}/slice_buffer.c +0 -0
  328. data/src/core/{support → lib/support}/stack_lockfree.c +7 -7
  329. data/src/core/{support → lib/support}/stack_lockfree.h +3 -3
  330. data/src/core/{support → lib/support}/string.c +1 -1
  331. data/src/core/{support → lib/support}/string.h +4 -4
  332. data/src/core/{support → lib/support}/string_posix.c +1 -1
  333. data/src/core/{support/string_win32.c → lib/support/string_util_win32.c} +23 -38
  334. data/src/core/lib/support/string_win32.c +83 -0
  335. data/src/core/{support → lib/support}/string_win32.h +3 -3
  336. data/src/core/{support → lib/support}/subprocess_posix.c +3 -3
  337. data/src/core/{support → lib/support}/subprocess_windows.c +3 -3
  338. data/src/core/{support → lib/support}/sync.c +2 -2
  339. data/src/core/{support → lib/support}/sync_posix.c +3 -3
  340. data/src/core/{support → lib/support}/sync_win32.c +1 -1
  341. data/src/core/{support → lib/support}/thd.c +0 -0
  342. data/src/core/{support → lib/support}/thd_internal.h +3 -3
  343. data/src/core/{support → lib/support}/thd_posix.c +4 -3
  344. data/src/core/{support → lib/support}/thd_win32.c +1 -1
  345. data/src/core/{support → lib/support}/time.c +2 -2
  346. data/src/core/{support → lib/support}/time_posix.c +12 -6
  347. data/src/core/{support → lib/support}/time_precise.c +0 -0
  348. data/src/core/{support → lib/support}/time_precise.h +3 -3
  349. data/src/core/{support → lib/support}/time_win32.c +7 -7
  350. data/src/core/{support → lib/support}/tls_pthread.c +0 -0
  351. data/src/core/{support → lib/support}/tmpfile.h +4 -4
  352. data/src/core/lib/support/tmpfile_msys.c +73 -0
  353. data/src/core/{support → lib/support}/tmpfile_posix.c +5 -5
  354. data/src/core/{support → lib/support}/tmpfile_win32.c +5 -5
  355. data/src/core/{support → lib/support}/wrap_memcpy.c +0 -0
  356. data/src/core/{surface → lib/surface}/alarm.c +3 -3
  357. data/src/core/{surface → lib/surface}/api_trace.c +1 -1
  358. data/src/core/{surface → lib/surface}/api_trace.h +4 -4
  359. data/src/core/{surface → lib/surface}/byte_buffer.c +3 -3
  360. data/src/core/{surface → lib/surface}/byte_buffer_reader.c +3 -3
  361. data/src/core/{surface → lib/surface}/call.c +145 -73
  362. data/src/core/{surface → lib/surface}/call.h +14 -7
  363. data/src/core/{surface → lib/surface}/call_details.c +1 -1
  364. data/src/core/{surface → lib/surface}/call_log_batch.c +2 -2
  365. data/src/core/{surface → lib/surface}/call_test_only.h +3 -3
  366. data/src/core/{surface → lib/surface}/channel.c +33 -34
  367. data/src/core/{surface → lib/surface}/channel.h +9 -9
  368. data/src/core/lib/surface/channel_init.c +140 -0
  369. data/src/core/lib/surface/channel_init.h +87 -0
  370. data/src/core/{surface → lib/surface}/channel_ping.c +4 -4
  371. data/src/core/lib/surface/channel_stack_type.c +54 -0
  372. data/src/core/{httpcli/parser.h → lib/surface/channel_stack_type.h} +22 -28
  373. data/src/core/{surface → lib/surface}/completion_queue.c +15 -11
  374. data/src/core/{surface → lib/surface}/completion_queue.h +4 -4
  375. data/src/core/{surface → lib/surface}/event_string.c +2 -2
  376. data/src/core/{surface → lib/surface}/event_string.h +3 -3
  377. data/src/core/lib/surface/init.c +217 -0
  378. data/src/core/{surface → lib/surface}/init.h +4 -3
  379. data/src/core/lib/surface/init_secure.c +89 -0
  380. data/src/core/{surface → lib/surface}/lame_client.c +31 -19
  381. data/src/core/{iomgr/pollset_set_windows.h → lib/surface/lame_client.h} +7 -5
  382. data/src/core/{surface → lib/surface}/metadata_array.c +1 -1
  383. data/src/core/{surface → lib/surface}/server.c +208 -183
  384. data/src/core/{surface → lib/surface}/server.h +6 -11
  385. data/src/core/{surface → lib/surface}/surface_trace.h +5 -5
  386. data/src/core/{surface → lib/surface}/validate_metadata.c +1 -1
  387. data/src/core/{surface → lib/surface}/version.c +2 -2
  388. data/src/core/{transport → lib/transport}/byte_stream.c +1 -1
  389. data/src/core/{transport → lib/transport}/byte_stream.h +4 -4
  390. data/src/core/{transport → lib/transport}/connectivity_state.c +2 -2
  391. data/src/core/{transport → lib/transport}/connectivity_state.h +4 -4
  392. data/src/core/{transport → lib/transport}/metadata.c +71 -19
  393. data/src/core/{transport → lib/transport}/metadata.h +11 -4
  394. data/src/core/{transport → lib/transport}/metadata_batch.c +2 -2
  395. data/src/core/{transport → lib/transport}/metadata_batch.h +4 -4
  396. data/src/core/{transport → lib/transport}/static_metadata.c +100 -32
  397. data/src/core/{transport → lib/transport}/static_metadata.h +58 -58
  398. data/src/core/{transport → lib/transport}/transport.c +25 -5
  399. data/src/core/{transport → lib/transport}/transport.h +41 -16
  400. data/src/core/{transport → lib/transport}/transport_impl.h +8 -5
  401. data/src/core/{transport → lib/transport}/transport_op_string.c +2 -2
  402. data/src/core/{tsi → lib/tsi}/fake_transport_security.c +18 -14
  403. data/src/core/{tsi → lib/tsi}/fake_transport_security.h +4 -4
  404. data/src/core/{tsi → lib/tsi}/ssl_transport_security.c +173 -63
  405. data/src/core/{tsi → lib/tsi}/ssl_transport_security.h +24 -6
  406. data/src/core/{tsi → lib/tsi}/ssl_types.h +3 -3
  407. data/src/core/{tsi → lib/tsi}/transport_security.c +12 -28
  408. data/src/core/{tsi → lib/tsi}/transport_security.h +4 -4
  409. data/src/core/{tsi → lib/tsi}/transport_security_interface.h +12 -3
  410. data/src/core/plugin_registry/grpc_plugin_registry.c +66 -0
  411. data/src/ruby/ext/grpc/extconf.rb +14 -20
  412. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -3
  413. data/src/ruby/ext/grpc/rb_call.c +37 -4
  414. data/src/ruby/ext/grpc/rb_call_credentials.c +13 -3
  415. data/src/ruby/ext/grpc/rb_channel.c +2 -3
  416. data/src/ruby/ext/grpc/rb_channel_args.c +2 -3
  417. data/src/ruby/ext/grpc/rb_channel_credentials.c +31 -3
  418. data/src/ruby/ext/grpc/rb_completion_queue.c +2 -2
  419. data/src/ruby/ext/grpc/rb_event_thread.c +1 -1
  420. data/src/ruby/ext/grpc/rb_grpc.c +4 -2
  421. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +8 -0
  422. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +14 -2
  423. data/src/ruby/ext/grpc/rb_server.c +2 -3
  424. data/src/ruby/ext/grpc/rb_server_credentials.c +16 -13
  425. data/src/ruby/ext/grpc/rb_signal.c +70 -0
  426. data/src/ruby/ext/grpc/rb_signal.h +39 -0
  427. data/src/ruby/lib/grpc.rb +21 -13
  428. data/src/ruby/lib/grpc/core/time_consts.rb +2 -2
  429. data/src/ruby/lib/grpc/errors.rb +2 -2
  430. data/src/ruby/lib/grpc/generic/active_call.rb +10 -3
  431. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -2
  432. data/src/ruby/lib/grpc/generic/client_stub.rb +10 -7
  433. data/src/ruby/lib/grpc/generic/rpc_desc.rb +2 -2
  434. data/src/ruby/lib/grpc/generic/rpc_server.rb +21 -61
  435. data/src/ruby/lib/grpc/generic/service.rb +5 -15
  436. data/src/ruby/lib/grpc/grpc.rb +3 -3
  437. data/src/ruby/{bin/interop/interop_server.rb → lib/grpc/signals.rb} +39 -20
  438. data/src/ruby/lib/grpc/version.rb +2 -2
  439. data/src/ruby/pb/generate_proto_ruby.sh +9 -2
  440. data/src/ruby/pb/grpc/health/checker.rb +1 -1
  441. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services.rb +28 -0
  442. data/src/ruby/pb/grpc/testing/metrics.rb +28 -0
  443. data/src/ruby/pb/grpc/testing/metrics_services.rb +27 -0
  444. data/src/ruby/pb/test/client.rb +12 -23
  445. data/src/ruby/pb/test/server.rb +1 -1
  446. data/src/ruby/spec/client_server_spec.rb +1 -1
  447. data/src/ruby/spec/generic/client_stub_spec.rb +18 -17
  448. data/src/ruby/spec/generic/rpc_server_spec.rb +23 -7
  449. data/src/ruby/spec/generic/service_spec.rb +0 -69
  450. data/src/ruby/{bin/interop/interop_client.rb → spec/pb/duplicate/codegen_spec.rb} +41 -21
  451. data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
  452. data/third_party/boringssl/crypto/asn1/a_bitstr.c +184 -176
  453. data/third_party/boringssl/crypto/asn1/a_bool.c +42 -44
  454. data/third_party/boringssl/crypto/asn1/a_bytes.c +236 -245
  455. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +173 -192
  456. data/third_party/boringssl/crypto/asn1/a_dup.c +43 -35
  457. data/third_party/boringssl/crypto/asn1/a_enum.c +107 -109
  458. data/third_party/boringssl/crypto/asn1/a_gentm.c +180 -181
  459. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +73 -80
  460. data/third_party/boringssl/crypto/asn1/a_int.c +357 -353
  461. data/third_party/boringssl/crypto/asn1/a_mbstr.c +272 -253
  462. data/third_party/boringssl/crypto/asn1/a_object.c +293 -309
  463. data/third_party/boringssl/crypto/asn1/a_octet.c +13 -6
  464. data/third_party/boringssl/crypto/asn1/a_print.c +54 -52
  465. data/third_party/boringssl/crypto/asn1/a_strnid.c +179 -157
  466. data/third_party/boringssl/crypto/asn1/a_time.c +125 -129
  467. data/third_party/boringssl/crypto/asn1/a_type.c +79 -86
  468. data/third_party/boringssl/crypto/asn1/a_utctm.c +246 -255
  469. data/third_party/boringssl/crypto/asn1/a_utf8.c +159 -135
  470. data/third_party/boringssl/crypto/asn1/asn1_lib.c +361 -368
  471. data/third_party/boringssl/crypto/asn1/asn1_locl.h +11 -11
  472. data/third_party/boringssl/crypto/asn1/asn1_par.c +309 -351
  473. data/third_party/boringssl/crypto/asn1/asn_pack.c +30 -29
  474. data/third_party/boringssl/crypto/asn1/bio_asn1.c +375 -394
  475. data/third_party/boringssl/crypto/asn1/bio_ndef.c +146 -149
  476. data/third_party/boringssl/crypto/asn1/f_enum.c +128 -134
  477. data/third_party/boringssl/crypto/asn1/f_int.c +131 -139
  478. data/third_party/boringssl/crypto/asn1/f_string.c +125 -133
  479. data/third_party/boringssl/crypto/asn1/t_bitst.c +30 -29
  480. data/third_party/boringssl/crypto/asn1/t_pkey.c +45 -47
  481. data/third_party/boringssl/crypto/asn1/tasn_dec.c +1099 -1216
  482. data/third_party/boringssl/crypto/asn1/tasn_enc.c +556 -592
  483. data/third_party/boringssl/crypto/asn1/tasn_fre.c +175 -193
  484. data/third_party/boringssl/crypto/asn1/tasn_new.c +271 -288
  485. data/third_party/boringssl/crypto/asn1/tasn_prn.c +462 -508
  486. data/third_party/boringssl/crypto/asn1/tasn_typ.c +28 -21
  487. data/third_party/boringssl/crypto/asn1/x_bignum.c +62 -52
  488. data/third_party/boringssl/crypto/asn1/x_long.c +101 -86
  489. data/third_party/boringssl/crypto/bio/buffer.c +3 -3
  490. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +8 -68
  491. data/third_party/boringssl/crypto/bn/bn.c +1 -1
  492. data/third_party/boringssl/crypto/bn/bn_asn1.c +9 -22
  493. data/third_party/boringssl/crypto/bn/convert.c +9 -4
  494. data/third_party/boringssl/crypto/bn/div.c +0 -20
  495. data/third_party/boringssl/crypto/bn/exponentiation.c +22 -13
  496. data/third_party/boringssl/crypto/bn/generic.c +6 -242
  497. data/third_party/boringssl/crypto/bn/internal.h +9 -70
  498. data/third_party/boringssl/crypto/bn/montgomery.c +1 -2
  499. data/third_party/boringssl/crypto/bn/mul.c +6 -26
  500. data/third_party/boringssl/crypto/bn/rsaz_exp.c +21 -28
  501. data/third_party/boringssl/crypto/bytestring/asn1_compat.c +51 -0
  502. data/third_party/boringssl/crypto/bytestring/ber.c +128 -87
  503. data/third_party/boringssl/crypto/bytestring/cbb.c +37 -3
  504. data/third_party/boringssl/crypto/bytestring/internal.h +39 -10
  505. data/third_party/boringssl/crypto/chacha/chacha_vec.c +18 -13
  506. data/third_party/boringssl/crypto/cipher/e_aes.c +2 -2
  507. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +4 -9
  508. data/third_party/boringssl/crypto/cipher/tls_cbc.c +39 -10
  509. data/third_party/boringssl/crypto/conf/conf.c +9 -0
  510. data/third_party/boringssl/crypto/cpu-intel.c +1 -1
  511. data/third_party/boringssl/crypto/crypto.c +2 -0
  512. data/third_party/boringssl/crypto/curve25519/curve25519.c +125 -120
  513. data/third_party/boringssl/crypto/curve25519/internal.h +45 -0
  514. data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +225 -0
  515. data/third_party/boringssl/crypto/dh/check.c +32 -10
  516. data/third_party/boringssl/crypto/dh/dh.c +1 -1
  517. data/third_party/boringssl/crypto/digest/md32_common.h +0 -60
  518. data/third_party/boringssl/crypto/dsa/dsa.c +47 -21
  519. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +249 -64
  520. data/third_party/boringssl/crypto/ec/ec.c +45 -31
  521. data/third_party/boringssl/crypto/ec/ec_asn1.c +315 -382
  522. data/third_party/boringssl/crypto/ec/ec_key.c +1 -4
  523. data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -9
  524. data/third_party/boringssl/crypto/ec/internal.h +1 -19
  525. data/third_party/boringssl/crypto/ec/oct.c +12 -0
  526. data/third_party/boringssl/crypto/ec/p224-64.c +4 -65
  527. data/third_party/boringssl/crypto/ec/p256-64.c +9 -71
  528. data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +1 -6
  529. data/third_party/boringssl/crypto/ec/p256-x86_64.c +3 -13
  530. data/third_party/boringssl/crypto/ec/simple.c +0 -76
  531. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +1 -1
  532. data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +10 -24
  533. data/third_party/boringssl/crypto/evp/evp.c +4 -3
  534. data/third_party/boringssl/crypto/evp/evp_asn1.c +101 -0
  535. data/third_party/boringssl/crypto/evp/evp_ctx.c +22 -51
  536. data/third_party/boringssl/crypto/evp/internal.h +28 -27
  537. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +78 -249
  538. data/third_party/boringssl/crypto/evp/p_ec.c +19 -66
  539. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +74 -231
  540. data/third_party/boringssl/crypto/evp/p_rsa.c +90 -13
  541. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +49 -48
  542. data/third_party/boringssl/crypto/internal.h +16 -1
  543. data/third_party/boringssl/crypto/mem.c +2 -2
  544. data/third_party/boringssl/crypto/modes/ctr.c +2 -1
  545. data/third_party/boringssl/crypto/modes/gcm.c +5 -3
  546. data/third_party/boringssl/crypto/obj/obj_dat.h +6 -3
  547. data/third_party/boringssl/crypto/pem/pem_all.c +83 -102
  548. data/third_party/boringssl/crypto/pem/pem_info.c +286 -309
  549. data/third_party/boringssl/crypto/pem/pem_lib.c +690 -710
  550. data/third_party/boringssl/crypto/pem/pem_oth.c +15 -16
  551. data/third_party/boringssl/crypto/pem/pem_pk8.c +132 -119
  552. data/third_party/boringssl/crypto/pem/pem_pkey.c +144 -220
  553. data/third_party/boringssl/crypto/pem/pem_x509.c +3 -3
  554. data/third_party/boringssl/crypto/pem/pem_xaux.c +5 -4
  555. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +54 -60
  556. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +3 -1
  557. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +48 -50
  558. data/third_party/boringssl/crypto/rand/rand.c +2 -0
  559. data/third_party/boringssl/crypto/rsa/blinding.c +8 -48
  560. data/third_party/boringssl/crypto/rsa/internal.h +1 -9
  561. data/third_party/boringssl/crypto/rsa/padding.c +73 -77
  562. data/third_party/boringssl/crypto/rsa/rsa.c +1 -1
  563. data/third_party/boringssl/crypto/rsa/rsa_asn1.c +27 -46
  564. data/third_party/boringssl/crypto/rsa/rsa_impl.c +23 -34
  565. data/third_party/boringssl/crypto/test/scoped_types.h +3 -0
  566. data/third_party/boringssl/crypto/thread_win.c +15 -13
  567. data/third_party/boringssl/crypto/time_support.c +0 -6
  568. data/third_party/boringssl/crypto/x509/a_digest.c +26 -27
  569. data/third_party/boringssl/crypto/x509/a_sign.c +63 -64
  570. data/third_party/boringssl/crypto/x509/a_strex.c +482 -413
  571. data/third_party/boringssl/crypto/x509/a_verify.c +45 -51
  572. data/third_party/boringssl/crypto/x509/asn1_gen.c +715 -769
  573. data/third_party/boringssl/crypto/x509/by_dir.c +355 -393
  574. data/third_party/boringssl/crypto/x509/by_file.c +186 -206
  575. data/third_party/boringssl/crypto/x509/charmap.h +11 -11
  576. data/third_party/boringssl/crypto/x509/i2d_pr.c +21 -22
  577. data/third_party/boringssl/crypto/x509/t_crl.c +50 -51
  578. data/third_party/boringssl/crypto/x509/t_x509.c +414 -406
  579. data/third_party/boringssl/crypto/x509/t_x509a.c +44 -42
  580. data/third_party/boringssl/crypto/x509/vpm_int.h +13 -13
  581. data/third_party/boringssl/crypto/x509/x509_att.c +241 -219
  582. data/third_party/boringssl/crypto/x509/x509_cmp.c +343 -359
  583. data/third_party/boringssl/crypto/x509/x509_d2.c +36 -35
  584. data/third_party/boringssl/crypto/x509/x509_def.c +23 -13
  585. data/third_party/boringssl/crypto/x509/x509_ext.c +75 -75
  586. data/third_party/boringssl/crypto/x509/x509_lu.c +574 -612
  587. data/third_party/boringssl/crypto/x509/x509_obj.c +104 -115
  588. data/third_party/boringssl/crypto/x509/x509_r2x.c +40 -40
  589. data/third_party/boringssl/crypto/x509/x509_req.c +181 -174
  590. data/third_party/boringssl/crypto/x509/x509_set.c +71 -76
  591. data/third_party/boringssl/crypto/x509/x509_trs.c +193 -171
  592. data/third_party/boringssl/crypto/x509/x509_txt.c +135 -138
  593. data/third_party/boringssl/crypto/x509/x509_v3.c +174 -167
  594. data/third_party/boringssl/crypto/x509/x509_vfy.c +2079 -2130
  595. data/third_party/boringssl/crypto/x509/x509_vpm.c +486 -522
  596. data/third_party/boringssl/crypto/x509/x509cset.c +96 -99
  597. data/third_party/boringssl/crypto/x509/x509name.c +280 -275
  598. data/third_party/boringssl/crypto/x509/x509rset.c +15 -14
  599. data/third_party/boringssl/crypto/x509/x509spki.c +62 -60
  600. data/third_party/boringssl/crypto/x509/x509type.c +58 -60
  601. data/third_party/boringssl/crypto/x509/x_algor.c +70 -73
  602. data/third_party/boringssl/crypto/x509/x_all.c +282 -328
  603. data/third_party/boringssl/crypto/x509/x_attrib.c +36 -42
  604. data/third_party/boringssl/crypto/x509/x_crl.c +397 -418
  605. data/third_party/boringssl/crypto/x509/x_exten.c +5 -5
  606. data/third_party/boringssl/crypto/x509/x_info.c +30 -27
  607. data/third_party/boringssl/crypto/x509/x_name.c +387 -388
  608. data/third_party/boringssl/crypto/x509/x_pkey.c +32 -29
  609. data/third_party/boringssl/crypto/x509/x_pubkey.c +261 -280
  610. data/third_party/boringssl/crypto/x509/x_req.c +30 -33
  611. data/third_party/boringssl/crypto/x509/x_sig.c +2 -2
  612. data/third_party/boringssl/crypto/x509/x_spki.c +9 -7
  613. data/third_party/boringssl/crypto/x509/x_val.c +2 -2
  614. data/third_party/boringssl/crypto/x509/x_x509.c +120 -119
  615. data/third_party/boringssl/crypto/x509/x_x509a.c +99 -91
  616. data/third_party/boringssl/crypto/x509v3/ext_dat.h +57 -51
  617. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +199 -214
  618. data/third_party/boringssl/crypto/x509v3/pcy_data.c +57 -64
  619. data/third_party/boringssl/crypto/x509v3/pcy_int.h +95 -90
  620. data/third_party/boringssl/crypto/x509v3/pcy_lib.c +86 -87
  621. data/third_party/boringssl/crypto/x509v3/pcy_map.c +61 -64
  622. data/third_party/boringssl/crypto/x509v3/pcy_node.c +108 -117
  623. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +676 -724
  624. data/third_party/boringssl/crypto/x509v3/v3_akey.c +128 -136
  625. data/third_party/boringssl/crypto/x509v3/v3_akeya.c +7 -6
  626. data/third_party/boringssl/crypto/x509v3/v3_alt.c +499 -507
  627. data/third_party/boringssl/crypto/x509v3/v3_bcons.c +54 -47
  628. data/third_party/boringssl/crypto/x509v3/v3_bitst.c +67 -67
  629. data/third_party/boringssl/crypto/x509v3/v3_conf.c +330 -328
  630. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +354 -338
  631. data/third_party/boringssl/crypto/x509v3/v3_crld.c +441 -496
  632. data/third_party/boringssl/crypto/x509v3/v3_enum.c +35 -33
  633. data/third_party/boringssl/crypto/x509v3/v3_extku.c +66 -63
  634. data/third_party/boringssl/crypto/x509v3/v3_genn.c +157 -159
  635. data/third_party/boringssl/crypto/x509v3/v3_ia5.c +45 -43
  636. data/third_party/boringssl/crypto/x509v3/v3_info.c +124 -112
  637. data/third_party/boringssl/crypto/x509v3/v3_int.c +30 -26
  638. data/third_party/boringssl/crypto/x509v3/v3_lib.c +231 -204
  639. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +353 -381
  640. data/third_party/boringssl/crypto/x509v3/v3_pci.c +252 -270
  641. data/third_party/boringssl/crypto/x509v3/v3_pcia.c +9 -8
  642. data/third_party/boringssl/crypto/x509v3/v3_pcons.c +58 -61
  643. data/third_party/boringssl/crypto/x509v3/v3_pku.c +35 -34
  644. data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +72 -74
  645. data/third_party/boringssl/crypto/x509v3/v3_prn.c +146 -121
  646. data/third_party/boringssl/crypto/x509v3/v3_purp.c +651 -582
  647. data/third_party/boringssl/crypto/x509v3/v3_skey.c +76 -72
  648. data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +139 -131
  649. data/third_party/boringssl/crypto/x509v3/v3_utl.c +1072 -1068
  650. data/third_party/boringssl/include/openssl/asn1.h +40 -38
  651. data/third_party/boringssl/include/openssl/base.h +10 -1
  652. data/third_party/boringssl/include/openssl/bio.h +10 -11
  653. data/third_party/boringssl/include/openssl/bn.h +12 -9
  654. data/third_party/boringssl/include/openssl/buf.h +1 -1
  655. data/third_party/boringssl/include/openssl/bytestring.h +29 -0
  656. data/third_party/boringssl/include/openssl/conf.h +25 -0
  657. data/third_party/boringssl/include/openssl/crypto.h +6 -1
  658. data/third_party/boringssl/include/openssl/curve25519.h +6 -3
  659. data/third_party/boringssl/include/openssl/dh.h +7 -3
  660. data/third_party/boringssl/include/openssl/dsa.h +108 -51
  661. data/third_party/boringssl/include/openssl/ec.h +46 -21
  662. data/third_party/boringssl/include/openssl/ec_key.h +78 -42
  663. data/third_party/boringssl/include/openssl/ecdsa.h +4 -4
  664. data/third_party/boringssl/include/openssl/err.h +3 -2
  665. data/third_party/boringssl/include/openssl/evp.h +120 -37
  666. data/third_party/boringssl/include/openssl/mem.h +4 -13
  667. data/third_party/boringssl/include/openssl/obj_mac.h +4 -0
  668. data/third_party/boringssl/include/openssl/pem.h +0 -9
  669. data/third_party/boringssl/include/openssl/pkcs8.h +6 -2
  670. data/third_party/boringssl/include/openssl/rand.h +3 -0
  671. data/third_party/boringssl/include/openssl/rsa.h +42 -42
  672. data/third_party/boringssl/include/openssl/ssl.h +115 -41
  673. data/third_party/boringssl/include/openssl/stack.h +0 -3
  674. data/third_party/boringssl/include/openssl/stack_macros.h +0 -256
  675. data/third_party/boringssl/include/openssl/tls1.h +1 -1
  676. data/third_party/boringssl/include/openssl/x509.h +0 -2
  677. data/third_party/boringssl/include/openssl/x509_vfy.h +5 -0
  678. data/third_party/boringssl/ssl/d1_both.c +102 -101
  679. data/third_party/boringssl/ssl/d1_clnt.c +145 -150
  680. data/third_party/boringssl/ssl/d1_lib.c +63 -62
  681. data/third_party/boringssl/ssl/d1_pkt.c +73 -71
  682. data/third_party/boringssl/ssl/d1_srvr.c +116 -125
  683. data/third_party/boringssl/ssl/dtls_record.c +3 -3
  684. data/third_party/boringssl/ssl/internal.h +210 -208
  685. data/third_party/boringssl/ssl/pqueue/pqueue.c +2 -2
  686. data/third_party/boringssl/ssl/s3_both.c +116 -130
  687. data/third_party/boringssl/ssl/s3_clnt.c +589 -740
  688. data/third_party/boringssl/ssl/s3_enc.c +52 -151
  689. data/third_party/boringssl/ssl/s3_lib.c +70 -76
  690. data/third_party/boringssl/ssl/s3_pkt.c +105 -144
  691. data/third_party/boringssl/ssl/s3_srvr.c +542 -806
  692. data/third_party/boringssl/ssl/ssl_aead_ctx.c +1 -1
  693. data/third_party/boringssl/ssl/ssl_cert.c +2 -2
  694. data/third_party/boringssl/ssl/ssl_cipher.c +7 -3
  695. data/third_party/boringssl/ssl/ssl_ecdh.c +374 -0
  696. data/third_party/boringssl/ssl/ssl_lib.c +260 -221
  697. data/third_party/boringssl/ssl/ssl_session.c +17 -17
  698. data/third_party/boringssl/ssl/t1_enc.c +128 -273
  699. data/third_party/boringssl/ssl/t1_lib.c +134 -258
  700. data/third_party/boringssl/ssl/test/test_config.h +2 -0
  701. data/third_party/boringssl/ssl/tls_record.c +52 -15
  702. metadata +385 -359
  703. data/src/core/channel/client_uchannel.c +0 -243
  704. data/src/core/channel/client_uchannel.h +0 -60
  705. data/src/core/channel/connected_channel.h +0 -51
  706. data/src/core/client_config/lb_policies/pick_first.h +0 -43
  707. data/src/core/client_config/resolvers/dns_resolver.h +0 -42
  708. data/src/core/client_config/subchannel_factory.h +0 -66
  709. data/src/core/httpcli/parser.c +0 -211
  710. data/src/core/iomgr/fd_posix.c +0 -451
  711. data/src/core/iomgr/fd_posix.h +0 -192
  712. data/src/core/iomgr/pollset_multipoller_with_epoll.c +0 -324
  713. data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +0 -234
  714. data/src/core/iomgr/pollset_posix.c +0 -633
  715. data/src/core/iomgr/pollset_posix.h +0 -153
  716. data/src/core/iomgr/pollset_set_posix.c +0 -202
  717. data/src/core/iomgr/pollset_set_posix.h +0 -45
  718. data/src/core/surface/init.c +0 -174
  719. data/src/core/surface/init_secure.c +0 -42
  720. data/src/core/surface/server_create.c +0 -48
  721. data/src/core/transport/chttp2/huffsyms.c +0 -297
  722. data/src/ruby/bin/grpc_ruby_interop_client +0 -33
  723. data/src/ruby/bin/grpc_ruby_interop_server +0 -33
  724. data/third_party/boringssl/crypto/dsa/internal.h +0 -78
@@ -127,50 +127,8 @@
127
127
  #include "internal.h"
128
128
 
129
129
 
130
- static int ssl_check_clienthello_tlsext(SSL *s);
131
- static int ssl_check_serverhello_tlsext(SSL *s);
132
-
133
- const SSL3_ENC_METHOD TLSv1_enc_data = {
134
- tls1_prf,
135
- tls1_setup_key_block,
136
- tls1_generate_master_secret,
137
- tls1_change_cipher_state,
138
- tls1_final_finish_mac,
139
- tls1_cert_verify_mac,
140
- TLS_MD_CLIENT_FINISH_CONST,TLS_MD_CLIENT_FINISH_CONST_SIZE,
141
- TLS_MD_SERVER_FINISH_CONST,TLS_MD_SERVER_FINISH_CONST_SIZE,
142
- tls1_alert_code,
143
- tls1_export_keying_material,
144
- 0,
145
- };
146
-
147
- const SSL3_ENC_METHOD TLSv1_1_enc_data = {
148
- tls1_prf,
149
- tls1_setup_key_block,
150
- tls1_generate_master_secret,
151
- tls1_change_cipher_state,
152
- tls1_final_finish_mac,
153
- tls1_cert_verify_mac,
154
- TLS_MD_CLIENT_FINISH_CONST,TLS_MD_CLIENT_FINISH_CONST_SIZE,
155
- TLS_MD_SERVER_FINISH_CONST,TLS_MD_SERVER_FINISH_CONST_SIZE,
156
- tls1_alert_code,
157
- tls1_export_keying_material,
158
- SSL_ENC_FLAG_EXPLICIT_IV,
159
- };
160
-
161
- const SSL3_ENC_METHOD TLSv1_2_enc_data = {
162
- tls1_prf,
163
- tls1_setup_key_block,
164
- tls1_generate_master_secret,
165
- tls1_change_cipher_state,
166
- tls1_final_finish_mac,
167
- tls1_cert_verify_mac,
168
- TLS_MD_CLIENT_FINISH_CONST,TLS_MD_CLIENT_FINISH_CONST_SIZE,
169
- TLS_MD_SERVER_FINISH_CONST,TLS_MD_SERVER_FINISH_CONST_SIZE,
170
- tls1_alert_code,
171
- tls1_export_keying_material,
172
- SSL_ENC_FLAG_EXPLICIT_IV|SSL_ENC_FLAG_SIGALGS|SSL_ENC_FLAG_SHA256_PRF,
173
- };
130
+ static int ssl_check_clienthello_tlsext(SSL *ssl);
131
+ static int ssl_check_serverhello_tlsext(SSL *ssl);
174
132
 
175
133
  static int compare_uint16_t(const void *p1, const void *p2) {
176
134
  uint16_t u1 = *((const uint16_t *)p1);
@@ -211,8 +169,7 @@ static int tls1_check_duplicate_extensions(const CBS *cbs) {
211
169
  return 1;
212
170
  }
213
171
 
214
- extension_types =
215
- (uint16_t *)OPENSSL_malloc(sizeof(uint16_t) * num_extensions);
172
+ extension_types = OPENSSL_malloc(sizeof(uint16_t) * num_extensions);
216
173
  if (extension_types == NULL) {
217
174
  OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
218
175
  goto done;
@@ -335,126 +292,62 @@ int SSL_early_callback_ctx_extension_get(
335
292
  return 0;
336
293
  }
337
294
 
338
- struct tls_curve {
339
- uint16_t curve_id;
340
- int nid;
341
- const char curve_name[8];
342
- };
343
-
344
- /* ECC curves from RFC4492. */
345
- static const struct tls_curve tls_curves[] = {
346
- {21, NID_secp224r1, "P-224"},
347
- {23, NID_X9_62_prime256v1, "P-256"},
348
- {24, NID_secp384r1, "P-384"},
349
- {25, NID_secp521r1, "P-521"},
350
- };
351
-
352
295
  static const uint16_t eccurves_default[] = {
353
- 23, /* X9_62_prime256v1 */
354
- 24, /* secp384r1 */
296
+ SSL_CURVE_X25519,
297
+ SSL_CURVE_SECP256R1,
298
+ SSL_CURVE_SECP384R1,
355
299
  #if defined(BORINGSSL_ANDROID_SYSTEM)
356
- 25, /* secp521r1 */
300
+ SSL_CURVE_SECP521R1,
357
301
  #endif
358
302
  };
359
303
 
360
- int tls1_ec_curve_id2nid(uint16_t curve_id) {
361
- size_t i;
362
- for (i = 0; i < sizeof(tls_curves) / sizeof(tls_curves[0]); i++) {
363
- if (curve_id == tls_curves[i].curve_id) {
364
- return tls_curves[i].nid;
365
- }
366
- }
367
- return NID_undef;
368
- }
369
-
370
- int tls1_ec_nid2curve_id(uint16_t *out_curve_id, int nid) {
371
- size_t i;
372
- for (i = 0; i < sizeof(tls_curves) / sizeof(tls_curves[0]); i++) {
373
- if (nid == tls_curves[i].nid) {
374
- *out_curve_id = tls_curves[i].curve_id;
375
- return 1;
376
- }
377
- }
378
- return 0;
379
- }
380
-
381
- const char* tls1_ec_curve_id2name(uint16_t curve_id) {
382
- size_t i;
383
- for (i = 0; i < sizeof(tls_curves) / sizeof(tls_curves[0]); i++) {
384
- if (curve_id == tls_curves[i].curve_id) {
385
- return tls_curves[i].curve_name;
386
- }
387
- }
388
- return NULL;
389
- }
390
-
391
304
  /* tls1_get_curvelist sets |*out_curve_ids| and |*out_curve_ids_len| to the
392
305
  * list of allowed curve IDs. If |get_peer_curves| is non-zero, return the
393
306
  * peer's curve list. Otherwise, return the preferred list. */
394
- static void tls1_get_curvelist(SSL *s, int get_peer_curves,
307
+ static void tls1_get_curvelist(SSL *ssl, int get_peer_curves,
395
308
  const uint16_t **out_curve_ids,
396
309
  size_t *out_curve_ids_len) {
397
310
  if (get_peer_curves) {
398
311
  /* Only clients send a curve list, so this function is only called
399
312
  * on the server. */
400
- assert(s->server);
401
- *out_curve_ids = s->s3->tmp.peer_ellipticcurvelist;
402
- *out_curve_ids_len = s->s3->tmp.peer_ellipticcurvelist_length;
313
+ assert(ssl->server);
314
+ *out_curve_ids = ssl->s3->tmp.peer_ellipticcurvelist;
315
+ *out_curve_ids_len = ssl->s3->tmp.peer_ellipticcurvelist_length;
403
316
  return;
404
317
  }
405
318
 
406
- *out_curve_ids = s->tlsext_ellipticcurvelist;
407
- *out_curve_ids_len = s->tlsext_ellipticcurvelist_length;
319
+ *out_curve_ids = ssl->tlsext_ellipticcurvelist;
320
+ *out_curve_ids_len = ssl->tlsext_ellipticcurvelist_length;
408
321
  if (!*out_curve_ids) {
409
322
  *out_curve_ids = eccurves_default;
410
323
  *out_curve_ids_len = sizeof(eccurves_default) / sizeof(eccurves_default[0]);
411
324
  }
412
325
  }
413
326
 
414
- int tls1_check_curve(SSL *s, CBS *cbs, uint16_t *out_curve_id) {
415
- uint8_t curve_type;
416
- uint16_t curve_id;
417
- const uint16_t *curves;
418
- size_t curves_len, i;
419
-
420
- /* Only support named curves. */
421
- if (!CBS_get_u8(cbs, &curve_type) ||
422
- curve_type != NAMED_CURVE_TYPE ||
423
- !CBS_get_u16(cbs, &curve_id)) {
424
- return 0;
425
- }
426
-
427
- tls1_get_curvelist(s, 0, &curves, &curves_len);
428
- for (i = 0; i < curves_len; i++) {
429
- if (curve_id == curves[i]) {
430
- *out_curve_id = curve_id;
431
- return 1;
432
- }
433
- }
434
-
435
- return 0;
436
- }
437
-
438
- int tls1_get_shared_curve(SSL *s) {
327
+ int tls1_get_shared_curve(SSL *ssl, uint16_t *out_curve_id) {
439
328
  const uint16_t *curves, *peer_curves, *pref, *supp;
440
329
  size_t curves_len, peer_curves_len, pref_len, supp_len, i, j;
441
330
 
442
331
  /* Can't do anything on client side */
443
- if (s->server == 0) {
444
- return NID_undef;
332
+ if (ssl->server == 0) {
333
+ return 0;
445
334
  }
446
335
 
447
- tls1_get_curvelist(s, 0 /* local curves */, &curves, &curves_len);
448
- tls1_get_curvelist(s, 1 /* peer curves */, &peer_curves, &peer_curves_len);
336
+ tls1_get_curvelist(ssl, 0 /* local curves */, &curves, &curves_len);
337
+ tls1_get_curvelist(ssl, 1 /* peer curves */, &peer_curves, &peer_curves_len);
449
338
 
450
339
  if (peer_curves_len == 0) {
451
340
  /* Clients are not required to send a supported_curves extension. In this
452
341
  * case, the server is free to pick any curve it likes. See RFC 4492,
453
- * section 4, paragraph 3. */
454
- return (curves_len == 0) ? NID_undef : tls1_ec_curve_id2nid(curves[0]);
342
+ * section 4, paragraph 3.
343
+ *
344
+ * However, in the interests of compatibility, we will skip ECDH if the
345
+ * client didn't send an extension because we can't be sure that they'll
346
+ * support our favoured curve. */
347
+ return 0;
455
348
  }
456
349
 
457
- if (s->options & SSL_OP_CIPHER_SERVER_PREFERENCE) {
350
+ if (ssl->options & SSL_OP_CIPHER_SERVER_PREFERENCE) {
458
351
  pref = curves;
459
352
  pref_len = curves_len;
460
353
  supp = peer_curves;
@@ -469,12 +362,13 @@ int tls1_get_shared_curve(SSL *s) {
469
362
  for (i = 0; i < pref_len; i++) {
470
363
  for (j = 0; j < supp_len; j++) {
471
364
  if (pref[i] == supp[j]) {
472
- return tls1_ec_curve_id2nid(pref[i]);
365
+ *out_curve_id = pref[i];
366
+ return 1;
473
367
  }
474
368
  }
475
369
  }
476
370
 
477
- return NID_undef;
371
+ return 0;
478
372
  }
479
373
 
480
374
  int tls1_set_curves(uint16_t **out_curve_ids, size_t *out_curve_ids_len,
@@ -482,13 +376,13 @@ int tls1_set_curves(uint16_t **out_curve_ids, size_t *out_curve_ids_len,
482
376
  uint16_t *curve_ids;
483
377
  size_t i;
484
378
 
485
- curve_ids = (uint16_t *)OPENSSL_malloc(ncurves * sizeof(uint16_t));
379
+ curve_ids = OPENSSL_malloc(ncurves * sizeof(uint16_t));
486
380
  if (curve_ids == NULL) {
487
381
  return 0;
488
382
  }
489
383
 
490
384
  for (i = 0; i < ncurves; i++) {
491
- if (!tls1_ec_nid2curve_id(&curve_ids[i], curves[i])) {
385
+ if (!ssl_nid_to_curve_id(&curve_ids[i], curves[i])) {
492
386
  OPENSSL_free(curve_ids);
493
387
  return 0;
494
388
  }
@@ -521,7 +415,7 @@ static int tls1_curve_params_from_ec_key(uint16_t *out_curve_id,
521
415
 
522
416
  /* Determine curve ID */
523
417
  nid = EC_GROUP_get_curve_name(grp);
524
- if (!tls1_ec_nid2curve_id(&id, nid)) {
418
+ if (!ssl_nid_to_curve_id(&id, nid)) {
525
419
  return 0;
526
420
  }
527
421
 
@@ -545,19 +439,19 @@ static int tls1_curve_params_from_ec_key(uint16_t *out_curve_id,
545
439
  /* tls1_check_curve_id returns one if |curve_id| is consistent with both our
546
440
  * and the peer's curve preferences. Note: if called as the client, only our
547
441
  * preferences are checked; the peer (the server) does not send preferences. */
548
- static int tls1_check_curve_id(SSL *s, uint16_t curve_id) {
442
+ int tls1_check_curve_id(SSL *ssl, uint16_t curve_id) {
549
443
  const uint16_t *curves;
550
444
  size_t curves_len, i, get_peer_curves;
551
445
 
552
446
  /* Check against our list, then the peer's list. */
553
447
  for (get_peer_curves = 0; get_peer_curves <= 1; get_peer_curves++) {
554
- if (get_peer_curves && !s->server) {
448
+ if (get_peer_curves && !ssl->server) {
555
449
  /* Servers do not present a preference list so, if we are a client, only
556
450
  * check our list. */
557
451
  continue;
558
452
  }
559
453
 
560
- tls1_get_curvelist(s, get_peer_curves, &curves, &curves_len);
454
+ tls1_get_curvelist(ssl, get_peer_curves, &curves, &curves_len);
561
455
  if (get_peer_curves && curves_len == 0) {
562
456
  /* Clients are not required to send a supported_curves extension. In this
563
457
  * case, the server is free to pick any curve it likes. See RFC 4492,
@@ -578,7 +472,7 @@ static int tls1_check_curve_id(SSL *s, uint16_t curve_id) {
578
472
  return 1;
579
473
  }
580
474
 
581
- int tls1_check_ec_cert(SSL *s, X509 *x) {
475
+ int tls1_check_ec_cert(SSL *ssl, X509 *x) {
582
476
  int ret = 0;
583
477
  EVP_PKEY *pkey = X509_get_pubkey(x);
584
478
  uint16_t curve_id;
@@ -590,7 +484,7 @@ int tls1_check_ec_cert(SSL *s, X509 *x) {
590
484
  EC_KEY *ec_key = EVP_PKEY_get0_EC_KEY(pkey);
591
485
  if (ec_key == NULL ||
592
486
  !tls1_curve_params_from_ec_key(&curve_id, &comp_id, ec_key) ||
593
- !tls1_check_curve_id(s, curve_id) ||
487
+ !tls1_check_curve_id(ssl, curve_id) ||
594
488
  comp_id != TLSEXT_ECPOINTFORMAT_uncompressed) {
595
489
  goto done;
596
490
  }
@@ -615,11 +509,10 @@ static const uint8_t tls12_sigalgs[] = {
615
509
  tlsext_sigalg(TLSEXT_hash_sha512)
616
510
  tlsext_sigalg(TLSEXT_hash_sha384)
617
511
  tlsext_sigalg(TLSEXT_hash_sha256)
618
- tlsext_sigalg(TLSEXT_hash_sha224)
619
512
  tlsext_sigalg(TLSEXT_hash_sha1)
620
513
  };
621
514
 
622
- size_t tls12_get_psigalgs(SSL *s, const uint8_t **psigs) {
515
+ size_t tls12_get_psigalgs(SSL *ssl, const uint8_t **psigs) {
623
516
  *psigs = tls12_sigalgs;
624
517
  return sizeof(tls12_sigalgs);
625
518
  }
@@ -672,8 +565,8 @@ int tls12_check_peer_sigalg(SSL *ssl, const EVP_MD **out_md, int *out_alert,
672
565
  * supported or doesn't appear in supported signature algorithms. Unlike
673
566
  * ssl_cipher_get_disabled this applies to a specific session and not global
674
567
  * settings. */
675
- void ssl_set_client_disabled(SSL *s) {
676
- CERT *c = s->cert;
568
+ void ssl_set_client_disabled(SSL *ssl) {
569
+ CERT *c = ssl->cert;
677
570
  const uint8_t *sigalgs;
678
571
  size_t i, sigalgslen;
679
572
  int have_rsa = 0, have_ecdsa = 0;
@@ -682,7 +575,7 @@ void ssl_set_client_disabled(SSL *s) {
682
575
 
683
576
  /* Now go through all signature algorithms seeing if we support any for RSA,
684
577
  * DSA, ECDSA. Do this for all versions not just TLS 1.2. */
685
- sigalgslen = tls12_get_psigalgs(s, &sigalgs);
578
+ sigalgslen = tls12_get_psigalgs(ssl, &sigalgs);
686
579
  for (i = 0; i < sigalgslen; i += 2, sigalgs += 2) {
687
580
  switch (sigalgs[1]) {
688
581
  case TLSEXT_signature_rsa:
@@ -704,7 +597,7 @@ void ssl_set_client_disabled(SSL *s) {
704
597
  }
705
598
 
706
599
  /* with PSK there must be client callback set */
707
- if (!s->psk_client_callback) {
600
+ if (!ssl->psk_client_callback) {
708
601
  c->mask_a |= SSL_aPSK;
709
602
  c->mask_k |= SSL_kPSK;
710
603
  }
@@ -765,7 +658,8 @@ static int ext_sni_add_clienthello(SSL *ssl, CBB *out) {
765
658
  return 1;
766
659
  }
767
660
 
768
- static int ext_sni_parse_serverhello(SSL *ssl, uint8_t *out_alert, CBS *contents) {
661
+ static int ext_sni_parse_serverhello(SSL *ssl, uint8_t *out_alert,
662
+ CBS *contents) {
769
663
  if (contents == NULL) {
770
664
  return 1;
771
665
  }
@@ -788,7 +682,8 @@ static int ext_sni_parse_serverhello(SSL *ssl, uint8_t *out_alert, CBS *contents
788
682
  return 1;
789
683
  }
790
684
 
791
- static int ext_sni_parse_clienthello(SSL *ssl, uint8_t *out_alert, CBS *contents) {
685
+ static int ext_sni_parse_clienthello(SSL *ssl, uint8_t *out_alert,
686
+ CBS *contents) {
792
687
  if (contents == NULL) {
793
688
  return 1;
794
689
  }
@@ -1005,7 +900,8 @@ static int ext_ri_parse_clienthello(SSL *ssl, uint8_t *out_alert,
1005
900
  }
1006
901
 
1007
902
  /* Check that the extension matches */
1008
- if (!CBS_mem_equal(&renegotiated_connection, ssl->s3->previous_client_finished,
903
+ if (!CBS_mem_equal(&renegotiated_connection,
904
+ ssl->s3->previous_client_finished,
1009
905
  ssl->s3->previous_client_finished_len)) {
1010
906
  OPENSSL_PUT_ERROR(SSL, SSL_R_RENEGOTIATION_MISMATCH);
1011
907
  *out_alert = SSL_AD_HANDSHAKE_FAILURE;
@@ -1036,7 +932,7 @@ static int ext_ri_add_serverhello(SSL *ssl, CBB *out) {
1036
932
 
1037
933
  /* Extended Master Secret.
1038
934
  *
1039
- * https://tools.ietf.org/html/draft-ietf-tls-session-hash-05 */
935
+ * https://tools.ietf.org/html/rfc7627 */
1040
936
 
1041
937
  static void ext_ems_init(SSL *ssl) {
1042
938
  ssl->s3->tmp.extended_master_secret = 0;
@@ -1069,7 +965,8 @@ static int ext_ems_parse_serverhello(SSL *ssl, uint8_t *out_alert,
1069
965
  return 1;
1070
966
  }
1071
967
 
1072
- static int ext_ems_parse_clienthello(SSL *ssl, uint8_t *out_alert, CBS *contents) {
968
+ static int ext_ems_parse_clienthello(SSL *ssl, uint8_t *out_alert,
969
+ CBS *contents) {
1073
970
  if (ssl->version == SSL3_VERSION || contents == NULL) {
1074
971
  return 1;
1075
972
  }
@@ -1151,7 +1048,8 @@ static int ext_ticket_parse_serverhello(SSL *ssl, uint8_t *out_alert,
1151
1048
  return 1;
1152
1049
  }
1153
1050
 
1154
- static int ext_ticket_parse_clienthello(SSL *ssl, uint8_t *out_alert, CBS *contents) {
1051
+ static int ext_ticket_parse_clienthello(SSL *ssl, uint8_t *out_alert,
1052
+ CBS *contents) {
1155
1053
  /* This function isn't used because the ticket extension from the client is
1156
1054
  * handled in ssl_session.c. */
1157
1055
  return 1;
@@ -1244,6 +1142,7 @@ static int ext_sigalgs_add_serverhello(SSL *ssl, CBB *out) {
1244
1142
 
1245
1143
  static void ext_ocsp_init(SSL *ssl) {
1246
1144
  ssl->s3->tmp.certificate_status_expected = 0;
1145
+ ssl->tlsext_status_type = -1;
1247
1146
  }
1248
1147
 
1249
1148
  static int ext_ocsp_add_clienthello(SSL *ssl, CBB *out) {
@@ -1261,6 +1160,7 @@ static int ext_ocsp_add_clienthello(SSL *ssl, CBB *out) {
1261
1160
  return 0;
1262
1161
  }
1263
1162
 
1163
+ ssl->tlsext_status_type = TLSEXT_STATUSTYPE_ocsp;
1264
1164
  return 1;
1265
1165
  }
1266
1166
 
@@ -1376,14 +1276,14 @@ static int ext_npn_parse_serverhello(SSL *ssl, uint8_t *out_alert,
1376
1276
  return 0;
1377
1277
  }
1378
1278
 
1379
- OPENSSL_free(ssl->next_proto_negotiated);
1380
- ssl->next_proto_negotiated = BUF_memdup(selected, selected_len);
1381
- if (ssl->next_proto_negotiated == NULL) {
1279
+ OPENSSL_free(ssl->s3->next_proto_negotiated);
1280
+ ssl->s3->next_proto_negotiated = BUF_memdup(selected, selected_len);
1281
+ if (ssl->s3->next_proto_negotiated == NULL) {
1382
1282
  *out_alert = SSL_AD_INTERNAL_ERROR;
1383
1283
  return 0;
1384
1284
  }
1385
1285
 
1386
- ssl->next_proto_negotiated_len = selected_len;
1286
+ ssl->s3->next_proto_negotiated_len = selected_len;
1387
1287
  ssl->s3->next_proto_neg_seen = 1;
1388
1288
 
1389
1289
  return 1;
@@ -1629,7 +1529,8 @@ static int ext_alpn_add_serverhello(SSL *ssl, CBB *out) {
1629
1529
  !CBB_add_u16_length_prefixed(out, &contents) ||
1630
1530
  !CBB_add_u16_length_prefixed(&contents, &proto_list) ||
1631
1531
  !CBB_add_u8_length_prefixed(&proto_list, &proto) ||
1632
- !CBB_add_bytes(&proto, ssl->s3->alpn_selected, ssl->s3->alpn_selected_len) ||
1532
+ !CBB_add_bytes(&proto, ssl->s3->alpn_selected,
1533
+ ssl->s3->alpn_selected_len) ||
1633
1534
  !CBB_flush(out)) {
1634
1535
  return 0;
1635
1536
  }
@@ -2003,9 +1904,7 @@ static int ext_ec_curves_parse_clienthello(SSL *ssl, uint8_t *out_alert,
2003
1904
  return 0;
2004
1905
  }
2005
1906
 
2006
- ssl->s3->tmp.peer_ellipticcurvelist =
2007
- (uint16_t *)OPENSSL_malloc(CBS_len(&elliptic_curve_list));
2008
-
1907
+ ssl->s3->tmp.peer_ellipticcurvelist = OPENSSL_malloc(CBS_len(&elliptic_curve_list));
2009
1908
  if (ssl->s3->tmp.peer_ellipticcurvelist == NULL) {
2010
1909
  *out_alert = SSL_AD_INTERNAL_ERROR;
2011
1910
  return 0;
@@ -2293,16 +2192,16 @@ err:
2293
2192
  return 0;
2294
2193
  }
2295
2194
 
2296
- static int ssl_scan_clienthello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
2195
+ static int ssl_scan_clienthello_tlsext(SSL *ssl, CBS *cbs, int *out_alert) {
2297
2196
  size_t i;
2298
2197
  for (i = 0; i < kNumExtensions; i++) {
2299
2198
  if (kExtensions[i].init != NULL) {
2300
- kExtensions[i].init(s);
2199
+ kExtensions[i].init(ssl);
2301
2200
  }
2302
2201
  }
2303
2202
 
2304
- s->s3->tmp.extensions.received = 0;
2305
- s->s3->tmp.custom_extensions.received = 0;
2203
+ ssl->s3->tmp.extensions.received = 0;
2204
+ ssl->s3->tmp.custom_extensions.received = 0;
2306
2205
  /* The renegotiation extension must always be at index zero because the
2307
2206
  * |received| and |sent| bitsets need to be tweaked when the "extension" is
2308
2207
  * sent as an SCSV. */
@@ -2331,7 +2230,7 @@ static int ssl_scan_clienthello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
2331
2230
 
2332
2231
  /* RFC 5746 made the existence of extensions in SSL 3.0 somewhat
2333
2232
  * ambiguous. Ignore all but the renegotiation_info extension. */
2334
- if (s->version == SSL3_VERSION && type != TLSEXT_TYPE_renegotiate) {
2233
+ if (ssl->version == SSL3_VERSION && type != TLSEXT_TYPE_renegotiate) {
2335
2234
  continue;
2336
2235
  }
2337
2236
 
@@ -2340,16 +2239,16 @@ static int ssl_scan_clienthello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
2340
2239
  tls_extension_find(&ext_index, type);
2341
2240
 
2342
2241
  if (ext == NULL) {
2343
- if (!custom_ext_parse_clienthello(s, out_alert, type, &extension)) {
2242
+ if (!custom_ext_parse_clienthello(ssl, out_alert, type, &extension)) {
2344
2243
  OPENSSL_PUT_ERROR(SSL, SSL_R_ERROR_PARSING_EXTENSION);
2345
2244
  return 0;
2346
2245
  }
2347
2246
  continue;
2348
2247
  }
2349
2248
 
2350
- s->s3->tmp.extensions.received |= (1u << ext_index);
2249
+ ssl->s3->tmp.extensions.received |= (1u << ext_index);
2351
2250
  uint8_t alert = SSL_AD_DECODE_ERROR;
2352
- if (!ext->parse_clienthello(s, &alert, &extension)) {
2251
+ if (!ext->parse_clienthello(ssl, &alert, &extension)) {
2353
2252
  *out_alert = alert;
2354
2253
  OPENSSL_PUT_ERROR(SSL, SSL_R_ERROR_PARSING_EXTENSION);
2355
2254
  ERR_add_error_dataf("extension: %u", (unsigned)type);
@@ -2359,11 +2258,11 @@ static int ssl_scan_clienthello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
2359
2258
  }
2360
2259
 
2361
2260
  for (i = 0; i < kNumExtensions; i++) {
2362
- if (!(s->s3->tmp.extensions.received & (1u << i))) {
2261
+ if (!(ssl->s3->tmp.extensions.received & (1u << i))) {
2363
2262
  /* Extension wasn't observed so call the callback with a NULL
2364
2263
  * parameter. */
2365
2264
  uint8_t alert = SSL_AD_DECODE_ERROR;
2366
- if (!kExtensions[i].parse_clienthello(s, &alert, NULL)) {
2265
+ if (!kExtensions[i].parse_clienthello(ssl, &alert, NULL)) {
2367
2266
  OPENSSL_PUT_ERROR(SSL, SSL_R_MISSING_EXTENSION);
2368
2267
  ERR_add_error_dataf("extension: %u", (unsigned)kExtensions[i].value);
2369
2268
  *out_alert = alert;
@@ -2375,14 +2274,14 @@ static int ssl_scan_clienthello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
2375
2274
  return 1;
2376
2275
  }
2377
2276
 
2378
- int ssl_parse_clienthello_tlsext(SSL *s, CBS *cbs) {
2277
+ int ssl_parse_clienthello_tlsext(SSL *ssl, CBS *cbs) {
2379
2278
  int alert = -1;
2380
- if (ssl_scan_clienthello_tlsext(s, cbs, &alert) <= 0) {
2381
- ssl3_send_alert(s, SSL3_AL_FATAL, alert);
2279
+ if (ssl_scan_clienthello_tlsext(ssl, cbs, &alert) <= 0) {
2280
+ ssl3_send_alert(ssl, SSL3_AL_FATAL, alert);
2382
2281
  return 0;
2383
2282
  }
2384
2283
 
2385
- if (ssl_check_clienthello_tlsext(s) <= 0) {
2284
+ if (ssl_check_clienthello_tlsext(ssl) <= 0) {
2386
2285
  OPENSSL_PUT_ERROR(SSL, SSL_R_CLIENTHELLO_TLSEXT);
2387
2286
  return 0;
2388
2287
  }
@@ -2392,7 +2291,7 @@ int ssl_parse_clienthello_tlsext(SSL *s, CBS *cbs) {
2392
2291
 
2393
2292
  OPENSSL_COMPILE_ASSERT(kNumExtensions <= sizeof(uint32_t) * 8, too_many_bits);
2394
2293
 
2395
- static int ssl_scan_serverhello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
2294
+ static int ssl_scan_serverhello_tlsext(SSL *ssl, CBS *cbs, int *out_alert) {
2396
2295
  uint32_t received = 0;
2397
2296
 
2398
2297
  if (CBS_len(cbs) != 0) {
@@ -2421,13 +2320,13 @@ static int ssl_scan_serverhello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
2421
2320
  tls_extension_find(&ext_index, type);
2422
2321
 
2423
2322
  if (ext == NULL) {
2424
- if (!custom_ext_parse_serverhello(s, out_alert, type, &extension)) {
2323
+ if (!custom_ext_parse_serverhello(ssl, out_alert, type, &extension)) {
2425
2324
  return 0;
2426
2325
  }
2427
2326
  continue;
2428
2327
  }
2429
2328
 
2430
- if (!(s->s3->tmp.extensions.sent & (1u << ext_index))) {
2329
+ if (!(ssl->s3->tmp.extensions.sent & (1u << ext_index))) {
2431
2330
  /* If the extension was never sent then it is illegal. */
2432
2331
  OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_EXTENSION);
2433
2332
  ERR_add_error_dataf("extension :%u", (unsigned)type);
@@ -2438,7 +2337,7 @@ static int ssl_scan_serverhello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
2438
2337
  received |= (1u << ext_index);
2439
2338
 
2440
2339
  uint8_t alert = SSL_AD_DECODE_ERROR;
2441
- if (!ext->parse_serverhello(s, &alert, &extension)) {
2340
+ if (!ext->parse_serverhello(ssl, &alert, &extension)) {
2442
2341
  OPENSSL_PUT_ERROR(SSL, SSL_R_ERROR_PARSING_EXTENSION);
2443
2342
  ERR_add_error_dataf("extension: %u", (unsigned)type);
2444
2343
  *out_alert = alert;
@@ -2453,7 +2352,7 @@ static int ssl_scan_serverhello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
2453
2352
  /* Extension wasn't observed so call the callback with a NULL
2454
2353
  * parameter. */
2455
2354
  uint8_t alert = SSL_AD_DECODE_ERROR;
2456
- if (!kExtensions[i].parse_serverhello(s, &alert, NULL)) {
2355
+ if (!kExtensions[i].parse_serverhello(ssl, &alert, NULL)) {
2457
2356
  OPENSSL_PUT_ERROR(SSL, SSL_R_MISSING_EXTENSION);
2458
2357
  ERR_add_error_dataf("extension: %u", (unsigned)kExtensions[i].value);
2459
2358
  *out_alert = alert;
@@ -2465,33 +2364,33 @@ static int ssl_scan_serverhello_tlsext(SSL *s, CBS *cbs, int *out_alert) {
2465
2364
  return 1;
2466
2365
  }
2467
2366
 
2468
- static int ssl_check_clienthello_tlsext(SSL *s) {
2367
+ static int ssl_check_clienthello_tlsext(SSL *ssl) {
2469
2368
  int ret = SSL_TLSEXT_ERR_NOACK;
2470
2369
  int al = SSL_AD_UNRECOGNIZED_NAME;
2471
2370
 
2472
2371
  /* The handling of the ECPointFormats extension is done elsewhere, namely in
2473
2372
  * ssl3_choose_cipher in s3_lib.c. */
2474
2373
 
2475
- if (s->ctx != NULL && s->ctx->tlsext_servername_callback != 0) {
2476
- ret = s->ctx->tlsext_servername_callback(s, &al,
2477
- s->ctx->tlsext_servername_arg);
2478
- } else if (s->initial_ctx != NULL &&
2479
- s->initial_ctx->tlsext_servername_callback != 0) {
2480
- ret = s->initial_ctx->tlsext_servername_callback(
2481
- s, &al, s->initial_ctx->tlsext_servername_arg);
2374
+ if (ssl->ctx != NULL && ssl->ctx->tlsext_servername_callback != 0) {
2375
+ ret = ssl->ctx->tlsext_servername_callback(ssl, &al,
2376
+ ssl->ctx->tlsext_servername_arg);
2377
+ } else if (ssl->initial_ctx != NULL &&
2378
+ ssl->initial_ctx->tlsext_servername_callback != 0) {
2379
+ ret = ssl->initial_ctx->tlsext_servername_callback(
2380
+ ssl, &al, ssl->initial_ctx->tlsext_servername_arg);
2482
2381
  }
2483
2382
 
2484
2383
  switch (ret) {
2485
2384
  case SSL_TLSEXT_ERR_ALERT_FATAL:
2486
- ssl3_send_alert(s, SSL3_AL_FATAL, al);
2385
+ ssl3_send_alert(ssl, SSL3_AL_FATAL, al);
2487
2386
  return -1;
2488
2387
 
2489
2388
  case SSL_TLSEXT_ERR_ALERT_WARNING:
2490
- ssl3_send_alert(s, SSL3_AL_WARNING, al);
2389
+ ssl3_send_alert(ssl, SSL3_AL_WARNING, al);
2491
2390
  return 1;
2492
2391
 
2493
2392
  case SSL_TLSEXT_ERR_NOACK:
2494
- s->s3->tmp.should_ack_sni = 0;
2393
+ ssl->s3->tmp.should_ack_sni = 0;
2495
2394
  return 1;
2496
2395
 
2497
2396
  default:
@@ -2499,26 +2398,26 @@ static int ssl_check_clienthello_tlsext(SSL *s) {
2499
2398
  }
2500
2399
  }
2501
2400
 
2502
- static int ssl_check_serverhello_tlsext(SSL *s) {
2401
+ static int ssl_check_serverhello_tlsext(SSL *ssl) {
2503
2402
  int ret = SSL_TLSEXT_ERR_OK;
2504
2403
  int al = SSL_AD_UNRECOGNIZED_NAME;
2505
2404
 
2506
- if (s->ctx != NULL && s->ctx->tlsext_servername_callback != 0) {
2507
- ret = s->ctx->tlsext_servername_callback(s, &al,
2508
- s->ctx->tlsext_servername_arg);
2509
- } else if (s->initial_ctx != NULL &&
2510
- s->initial_ctx->tlsext_servername_callback != 0) {
2511
- ret = s->initial_ctx->tlsext_servername_callback(
2512
- s, &al, s->initial_ctx->tlsext_servername_arg);
2405
+ if (ssl->ctx != NULL && ssl->ctx->tlsext_servername_callback != 0) {
2406
+ ret = ssl->ctx->tlsext_servername_callback(ssl, &al,
2407
+ ssl->ctx->tlsext_servername_arg);
2408
+ } else if (ssl->initial_ctx != NULL &&
2409
+ ssl->initial_ctx->tlsext_servername_callback != 0) {
2410
+ ret = ssl->initial_ctx->tlsext_servername_callback(
2411
+ ssl, &al, ssl->initial_ctx->tlsext_servername_arg);
2513
2412
  }
2514
2413
 
2515
2414
  switch (ret) {
2516
2415
  case SSL_TLSEXT_ERR_ALERT_FATAL:
2517
- ssl3_send_alert(s, SSL3_AL_FATAL, al);
2416
+ ssl3_send_alert(ssl, SSL3_AL_FATAL, al);
2518
2417
  return -1;
2519
2418
 
2520
2419
  case SSL_TLSEXT_ERR_ALERT_WARNING:
2521
- ssl3_send_alert(s, SSL3_AL_WARNING, al);
2420
+ ssl3_send_alert(ssl, SSL3_AL_WARNING, al);
2522
2421
  return 1;
2523
2422
 
2524
2423
  default:
@@ -2526,14 +2425,14 @@ static int ssl_check_serverhello_tlsext(SSL *s) {
2526
2425
  }
2527
2426
  }
2528
2427
 
2529
- int ssl_parse_serverhello_tlsext(SSL *s, CBS *cbs) {
2428
+ int ssl_parse_serverhello_tlsext(SSL *ssl, CBS *cbs) {
2530
2429
  int alert = -1;
2531
- if (ssl_scan_serverhello_tlsext(s, cbs, &alert) <= 0) {
2532
- ssl3_send_alert(s, SSL3_AL_FATAL, alert);
2430
+ if (ssl_scan_serverhello_tlsext(ssl, cbs, &alert) <= 0) {
2431
+ ssl3_send_alert(ssl, SSL3_AL_FATAL, alert);
2533
2432
  return 0;
2534
2433
  }
2535
2434
 
2536
- if (ssl_check_serverhello_tlsext(s) <= 0) {
2435
+ if (ssl_check_serverhello_tlsext(ssl) <= 0) {
2537
2436
  OPENSSL_PUT_ERROR(SSL, SSL_R_SERVERHELLO_TLSEXT);
2538
2437
  return 0;
2539
2438
  }
@@ -2542,7 +2441,7 @@ int ssl_parse_serverhello_tlsext(SSL *s, CBS *cbs) {
2542
2441
  }
2543
2442
 
2544
2443
  int tls_process_ticket(SSL *ssl, SSL_SESSION **out_session,
2545
- int *out_send_ticket, const uint8_t *ticket,
2444
+ int *out_renew_ticket, const uint8_t *ticket,
2546
2445
  size_t ticket_len, const uint8_t *session_id,
2547
2446
  size_t session_id_len) {
2548
2447
  int ret = 1; /* Most errors are non-fatal. */
@@ -2554,19 +2453,13 @@ int tls_process_ticket(SSL *ssl, SSL_SESSION **out_session,
2554
2453
  EVP_CIPHER_CTX cipher_ctx;
2555
2454
  EVP_CIPHER_CTX_init(&cipher_ctx);
2556
2455
 
2557
- *out_send_ticket = 0;
2456
+ *out_renew_ticket = 0;
2558
2457
  *out_session = NULL;
2559
2458
 
2560
2459
  if (session_id_len > SSL_MAX_SSL_SESSION_ID_LENGTH) {
2561
2460
  goto done;
2562
2461
  }
2563
2462
 
2564
- if (ticket_len == 0) {
2565
- /* The client will accept a ticket but doesn't currently have one. */
2566
- *out_send_ticket = 1;
2567
- goto done;
2568
- }
2569
-
2570
2463
  /* Ensure there is room for the key name and the largest IV
2571
2464
  * |tlsext_ticket_key_cb| may try to consume. The real limit may be lower, but
2572
2465
  * the maximum IV length should be well under the minimum size for the
@@ -2577,9 +2470,9 @@ int tls_process_ticket(SSL *ssl, SSL_SESSION **out_session,
2577
2470
  const uint8_t *iv = ticket + SSL_TICKET_KEY_NAME_LEN;
2578
2471
 
2579
2472
  if (ssl_ctx->tlsext_ticket_key_cb != NULL) {
2580
- int cb_ret = ssl_ctx->tlsext_ticket_key_cb(ssl, (uint8_t*)ticket /* name */,
2581
- (uint8_t*)iv, &cipher_ctx, &hmac_ctx,
2582
- 0 /* decrypt */);
2473
+ int cb_ret = ssl_ctx->tlsext_ticket_key_cb(
2474
+ ssl, (uint8_t *)ticket /* name */, (uint8_t *)iv, &cipher_ctx,
2475
+ &hmac_ctx, 0 /* decrypt */);
2583
2476
  if (cb_ret < 0) {
2584
2477
  ret = 0;
2585
2478
  goto done;
@@ -2588,7 +2481,7 @@ int tls_process_ticket(SSL *ssl, SSL_SESSION **out_session,
2588
2481
  goto done;
2589
2482
  }
2590
2483
  if (cb_ret == 2) {
2591
- *out_send_ticket = 1;
2484
+ *out_renew_ticket = 1;
2592
2485
  }
2593
2486
  } else {
2594
2487
  /* Check the key name matches. */
@@ -2667,12 +2560,12 @@ typedef struct {
2667
2560
  int id;
2668
2561
  } tls12_lookup;
2669
2562
 
2670
- static const tls12_lookup tls12_md[] = {{NID_md5, TLSEXT_hash_md5},
2671
- {NID_sha1, TLSEXT_hash_sha1},
2672
- {NID_sha224, TLSEXT_hash_sha224},
2673
- {NID_sha256, TLSEXT_hash_sha256},
2674
- {NID_sha384, TLSEXT_hash_sha384},
2675
- {NID_sha512, TLSEXT_hash_sha512}};
2563
+ static const tls12_lookup tls12_md[] = {
2564
+ {NID_sha1, TLSEXT_hash_sha1},
2565
+ {NID_sha256, TLSEXT_hash_sha256},
2566
+ {NID_sha384, TLSEXT_hash_sha384},
2567
+ {NID_sha512, TLSEXT_hash_sha512},
2568
+ };
2676
2569
 
2677
2570
  static const tls12_lookup tls12_sig[] = {{EVP_PKEY_RSA, TLSEXT_signature_rsa},
2678
2571
  {EVP_PKEY_EC, TLSEXT_signature_ecdsa}};
@@ -2693,40 +2586,22 @@ int tls12_get_sigid(int pkey_type) {
2693
2586
  sizeof(tls12_sig) / sizeof(tls12_lookup));
2694
2587
  }
2695
2588
 
2696
- int tls12_get_sigandhash(SSL *ssl, uint8_t *p, const EVP_MD *md) {
2697
- int sig_id, md_id;
2698
-
2699
- if (!md) {
2700
- return 0;
2701
- }
2702
-
2703
- md_id = tls12_find_id(EVP_MD_type(md), tls12_md,
2704
- sizeof(tls12_md) / sizeof(tls12_lookup));
2705
- if (md_id == -1) {
2706
- return 0;
2707
- }
2708
-
2709
- sig_id = tls12_get_sigid(ssl_private_key_type(ssl));
2710
- if (sig_id == -1) {
2711
- return 0;
2712
- }
2589
+ int tls12_add_sigandhash(SSL *ssl, CBB *out, const EVP_MD *md) {
2590
+ int md_id = tls12_find_id(EVP_MD_type(md), tls12_md,
2591
+ sizeof(tls12_md) / sizeof(tls12_lookup));
2592
+ int sig_id = tls12_get_sigid(ssl_private_key_type(ssl));
2713
2593
 
2714
- p[0] = (uint8_t)md_id;
2715
- p[1] = (uint8_t)sig_id;
2716
- return 1;
2594
+ return md_id != -1 &&
2595
+ sig_id != -1 &&
2596
+ CBB_add_u8(out, (uint8_t)md_id) &&
2597
+ CBB_add_u8(out, (uint8_t)sig_id);
2717
2598
  }
2718
2599
 
2719
2600
  const EVP_MD *tls12_get_hash(uint8_t hash_alg) {
2720
2601
  switch (hash_alg) {
2721
- case TLSEXT_hash_md5:
2722
- return EVP_md5();
2723
-
2724
2602
  case TLSEXT_hash_sha1:
2725
2603
  return EVP_sha1();
2726
2604
 
2727
- case TLSEXT_hash_sha224:
2728
- return EVP_sha224();
2729
-
2730
2605
  case TLSEXT_hash_sha256:
2731
2606
  return EVP_sha256();
2732
2607
 
@@ -2761,7 +2636,7 @@ OPENSSL_COMPILE_ASSERT(sizeof(TLS_SIGALGS) == 2,
2761
2636
 
2762
2637
  int tls1_parse_peer_sigalgs(SSL *ssl, const CBS *in_sigalgs) {
2763
2638
  /* Extension ignored for inappropriate versions */
2764
- if (!SSL_USE_SIGALGS(ssl)) {
2639
+ if (ssl3_protocol_version(ssl) < TLS1_2_VERSION) {
2765
2640
  return 1;
2766
2641
  }
2767
2642
 
@@ -2812,7 +2687,7 @@ const EVP_MD *tls1_choose_signing_digest(SSL *ssl) {
2812
2687
  size_t i, j;
2813
2688
 
2814
2689
  static const int kDefaultDigestList[] = {NID_sha256, NID_sha384, NID_sha512,
2815
- NID_sha224, NID_sha1};
2690
+ NID_sha1};
2816
2691
 
2817
2692
  const int *digest_nids = kDefaultDigestList;
2818
2693
  size_t num_digest_nids =
@@ -2882,24 +2757,25 @@ err:
2882
2757
  }
2883
2758
 
2884
2759
  /* tls1_record_handshake_hashes_for_channel_id records the current handshake
2885
- * hashes in |s->session| so that Channel ID resumptions can sign that data. */
2886
- int tls1_record_handshake_hashes_for_channel_id(SSL *s) {
2760
+ * hashes in |ssl->session| so that Channel ID resumptions can sign that
2761
+ * data. */
2762
+ int tls1_record_handshake_hashes_for_channel_id(SSL *ssl) {
2887
2763
  int digest_len;
2888
2764
  /* This function should never be called for a resumed session because the
2889
2765
  * handshake hashes that we wish to record are for the original, full
2890
2766
  * handshake. */
2891
- if (s->hit) {
2767
+ if (ssl->hit) {
2892
2768
  return -1;
2893
2769
  }
2894
2770
 
2895
2771
  digest_len =
2896
- tls1_handshake_digest(s, s->session->original_handshake_hash,
2897
- sizeof(s->session->original_handshake_hash));
2772
+ tls1_handshake_digest(ssl, ssl->session->original_handshake_hash,
2773
+ sizeof(ssl->session->original_handshake_hash));
2898
2774
  if (digest_len < 0) {
2899
2775
  return -1;
2900
2776
  }
2901
2777
 
2902
- s->session->original_handshake_hash_len = digest_len;
2778
+ ssl->session->original_handshake_hash_len = digest_len;
2903
2779
 
2904
2780
  return 1;
2905
2781
  }