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
@@ -114,23 +114,14 @@ OPENSSL_EXPORT int OPENSSL_strncasecmp(const char *a, const char *b, size_t n);
114
114
  * representation of the given type. */
115
115
  #define DECIMAL_SIZE(type) ((sizeof(type)*8+2)/3+1)
116
116
 
117
- /* Printf functions.
118
- *
119
- * These functions are either OpenSSL wrappers for standard functions (i.e.
120
- * |BIO_snprintf| and |BIO_vsnprintf|) which don't exist in C89, or are
121
- * versions of printf functions that output to a BIO rather than a FILE. */
122
- #ifdef __GNUC__
123
- #define __bio_h__attr__ __attribute__
124
- #else
125
- #define __bio_h__attr__(x)
126
- #endif
117
+ /* BIO_snprintf has the same behavior as snprintf(3). */
127
118
  OPENSSL_EXPORT int BIO_snprintf(char *buf, size_t n, const char *format, ...)
128
- __bio_h__attr__((__format__(__printf__, 3, 4)));
119
+ OPENSSL_PRINTF_FORMAT_FUNC(3, 4);
129
120
 
121
+ /* BIO_vsnprintf has the same behavior as vsnprintf(3). */
130
122
  OPENSSL_EXPORT int BIO_vsnprintf(char *buf, size_t n, const char *format,
131
123
  va_list args)
132
- __bio_h__attr__((__format__(__printf__, 3, 0)));
133
- #undef __bio_h__attr__
124
+ OPENSSL_PRINTF_FORMAT_FUNC(3, 0);
134
125
 
135
126
 
136
127
  #if defined(__cplusplus)
@@ -4138,3 +4138,7 @@
4138
4138
  #define SN_dh_cofactor_kdf "dh-cofactor-kdf"
4139
4139
  #define NID_dh_cofactor_kdf 947
4140
4140
 
4141
+ #define SN_x25519 "X25519"
4142
+ #define LN_x25519 "x25519"
4143
+ #define NID_x25519 948
4144
+
@@ -125,13 +125,10 @@ extern "C" {
125
125
  #define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY"
126
126
  #define PEM_STRING_PKCS8INF "PRIVATE KEY"
127
127
  #define PEM_STRING_DHPARAMS "DH PARAMETERS"
128
- #define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS"
129
128
  #define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS"
130
129
  #define PEM_STRING_DSAPARAMS "DSA PARAMETERS"
131
130
  #define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY"
132
- #define PEM_STRING_ECPARAMETERS "EC PARAMETERS"
133
131
  #define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY"
134
- #define PEM_STRING_PARAMETERS "PARAMETERS"
135
132
  #define PEM_STRING_CMS "CMS"
136
133
 
137
134
  /* Note that this structure is initialised by PEM_SealInit and cleaned up
@@ -454,13 +451,11 @@ DECLARE_PEM_rw_const(DSAparams, DSA)
454
451
 
455
452
  #endif
456
453
 
457
- DECLARE_PEM_rw_const(ECPKParameters, EC_GROUP)
458
454
  DECLARE_PEM_rw_cb(ECPrivateKey, EC_KEY)
459
455
  DECLARE_PEM_rw(EC_PUBKEY, EC_KEY)
460
456
 
461
457
 
462
458
  DECLARE_PEM_rw_const(DHparams, DH)
463
- DECLARE_PEM_write_const(DHxparams, DH)
464
459
 
465
460
 
466
461
  DECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY)
@@ -481,10 +476,6 @@ OPENSSL_EXPORT EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_pass
481
476
 
482
477
  OPENSSL_EXPORT int PEM_write_PKCS8PrivateKey(FILE *fp,EVP_PKEY *x,const EVP_CIPHER *enc, char *kstr,int klen, pem_password_cb *cd, void *u);
483
478
 
484
- OPENSSL_EXPORT EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x);
485
- OPENSSL_EXPORT int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x);
486
-
487
-
488
479
  OPENSSL_EXPORT EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length);
489
480
  OPENSSL_EXPORT EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length);
490
481
  OPENSSL_EXPORT EVP_PKEY *b2i_PrivateKey_bio(BIO *in);
@@ -139,12 +139,16 @@ OPENSSL_EXPORT PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(X509_SIG *pkcs8,
139
139
  OPENSSL_EXPORT void PKCS12_PBE_add(void);
140
140
 
141
141
  /* d2i_PKCS12 is a dummy function that copies |*ber_bytes| into a
142
- * |PKCS12| structure. The |out_p12| argument must be NULL. On exit,
142
+ * |PKCS12| structure. The |out_p12| argument should be NULL(✝). On exit,
143
143
  * |*ber_bytes| will be advanced by |ber_len|. It returns a fresh |PKCS12|
144
144
  * structure or NULL on error.
145
145
  *
146
146
  * Note: unlike other d2i functions, |d2i_PKCS12| will always consume |ber_len|
147
- * bytes.*/
147
+ * bytes.
148
+ *
149
+ * (✝) If |out_p12| is not NULL and the function is successful, |*out_p12| will
150
+ * be freed if not NULL itself and the result will be written to |*out_p12|.
151
+ * New code should not depend on this. */
148
152
  OPENSSL_EXPORT PKCS12 *d2i_PKCS12(PKCS12 **out_p12, const uint8_t **ber_bytes,
149
153
  size_t ber_len);
150
154
 
@@ -75,6 +75,9 @@ OPENSSL_EXPORT void RAND_seed(const void *buf, int num);
75
75
  /* RAND_load_file returns a nonnegative number. */
76
76
  OPENSSL_EXPORT int RAND_load_file(const char *path, long num);
77
77
 
78
+ /* RAND_file_name returns NULL. */
79
+ OPENSSL_EXPORT const char *RAND_file_name(char *buf, size_t num);
80
+
78
81
  /* RAND_add does nothing. */
79
82
  OPENSSL_EXPORT void RAND_add(const void *buf, int num, double entropy);
80
83
 
@@ -124,8 +124,8 @@ OPENSSL_EXPORT int RSA_generate_multi_prime_key(RSA *rsa, int bits,
124
124
  * It returns 1 on success or zero on error.
125
125
  *
126
126
  * The |padding| argument must be one of the |RSA_*_PADDING| values. If in
127
- * doubt, |RSA_PKCS1_PADDING| is the most common but |RSA_PKCS1_OAEP_PADDING|
128
- * is the most secure. */
127
+ * doubt, use |RSA_PKCS1_OAEP_PADDING| for new protocols but
128
+ * |RSA_PKCS1_PADDING| is most common. */
129
129
  OPENSSL_EXPORT int RSA_encrypt(RSA *rsa, size_t *out_len, uint8_t *out,
130
130
  size_t max_out, const uint8_t *in, size_t in_len,
131
131
  int padding);
@@ -137,8 +137,14 @@ OPENSSL_EXPORT int RSA_encrypt(RSA *rsa, size_t *out_len, uint8_t *out,
137
137
  * It returns 1 on success or zero on error.
138
138
  *
139
139
  * The |padding| argument must be one of the |RSA_*_PADDING| values. If in
140
- * doubt, |RSA_PKCS1_PADDING| is the most common but |RSA_PKCS1_OAEP_PADDING|
141
- * is the most secure. */
140
+ * doubt, use |RSA_PKCS1_OAEP_PADDING| for new protocols.
141
+ *
142
+ * Passing |RSA_PKCS1_PADDING| into this function is deprecated and insecure. If
143
+ * implementing a protocol using RSAES-PKCS1-V1_5, use |RSA_NO_PADDING| and then
144
+ * check padding in constant-time combined with a swap to a random session key
145
+ * or other mitigation. See "Chosen Ciphertext Attacks Against Protocols Based
146
+ * on the RSA Encryption Standard PKCS #1", Daniel Bleichenbacher, Advances in
147
+ * Cryptology (Crypto '98). */
142
148
  OPENSSL_EXPORT int RSA_decrypt(RSA *rsa, size_t *out_len, uint8_t *out,
143
149
  size_t max_out, const uint8_t *in, size_t in_len,
144
150
  int padding);
@@ -147,8 +153,8 @@ OPENSSL_EXPORT int RSA_decrypt(RSA *rsa, size_t *out_len, uint8_t *out,
147
153
  * |rsa| and writes the encrypted data to |to|. The |to| buffer must have at
148
154
  * least |RSA_size| bytes of space. It returns the number of bytes written, or
149
155
  * -1 on error. The |padding| argument must be one of the |RSA_*_PADDING|
150
- * values. If in doubt, |RSA_PKCS1_PADDING| is the most common but
151
- * |RSA_PKCS1_OAEP_PADDING| is the most secure.
156
+ * values. If in doubt, use |RSA_PKCS1_OAEP_PADDING| for new protocols but
157
+ * |RSA_PKCS1_PADDING| is most common.
152
158
  *
153
159
  * WARNING: this function is dangerous because it breaks the usual return value
154
160
  * convention. Use |RSA_encrypt| instead. */
@@ -156,37 +162,25 @@ OPENSSL_EXPORT int RSA_public_encrypt(size_t flen, const uint8_t *from,
156
162
  uint8_t *to, RSA *rsa, int padding);
157
163
 
158
164
  /* RSA_private_decrypt decrypts |flen| bytes from |from| with the public key in
159
- * |rsa| and writes the plaintext to |to|. The |to| buffer must have at
160
- * least |RSA_size| bytes of space. It returns the number of bytes written, or
161
- * -1 on error. The |padding| argument must be one of the |RSA_*_PADDING|
162
- * values. If in doubt, |RSA_PKCS1_PADDING| is the most common but
163
- * |RSA_PKCS1_OAEP_PADDING| is the most secure.
165
+ * |rsa| and writes the plaintext to |to|. The |to| buffer must have at least
166
+ * |RSA_size| bytes of space. It returns the number of bytes written, or -1 on
167
+ * error. The |padding| argument must be one of the |RSA_*_PADDING| values. If
168
+ * in doubt, use |RSA_PKCS1_OAEP_PADDING| for new protocols. Passing
169
+ * |RSA_PKCS1_PADDING| into this function is deprecated and insecure. See
170
+ * |RSA_decrypt|.
164
171
  *
165
172
  * WARNING: this function is dangerous because it breaks the usual return value
166
173
  * convention. Use |RSA_decrypt| instead. */
167
174
  OPENSSL_EXPORT int RSA_private_decrypt(size_t flen, const uint8_t *from,
168
175
  uint8_t *to, RSA *rsa, int padding);
169
176
 
170
- /* RSA_message_index_PKCS1_type_2 performs the first step of a PKCS #1 padding
171
- * check for decryption. If the |from_len| bytes pointed to at |from| are a
172
- * valid PKCS #1 message, it returns one and sets |*out_index| to the start of
173
- * the unpadded message. The unpadded message is a suffix of the input and has
174
- * length |from_len - *out_index|. Otherwise, it returns zero and sets
175
- * |*out_index| to zero. This function runs in time independent of the input
176
- * data and is intended to be used directly to avoid Bleichenbacher's attack.
177
- *
178
- * WARNING: This function behaves differently from the usual OpenSSL convention
179
- * in that it does NOT put an error on the queue in the error case. */
180
- OPENSSL_EXPORT int RSA_message_index_PKCS1_type_2(const uint8_t *from,
181
- size_t from_len,
182
- size_t *out_index);
183
-
184
177
 
185
178
  /* Signing / Verification */
186
179
 
187
- /* RSA_sign signs |in_len| bytes of digest from |in| with |rsa| and writes, at
188
- * most, |RSA_size(rsa)| bytes to |out|. On successful return, the actual
189
- * number of bytes written is written to |*out_len|.
180
+ /* RSA_sign signs |in_len| bytes of digest from |in| with |rsa| using
181
+ * RSASSA-PKCS1-v1_5. It writes, at most, |RSA_size(rsa)| bytes to |out|. On
182
+ * successful return, the actual number of bytes written is written to
183
+ * |*out_len|.
190
184
  *
191
185
  * The |hash_nid| argument identifies the hash function used to calculate |in|
192
186
  * and is embedded in the resulting signature. For example, it might be
@@ -204,13 +198,14 @@ OPENSSL_EXPORT int RSA_sign(int hash_nid, const uint8_t *in,
204
198
  * It returns 1 on success or zero on error.
205
199
  *
206
200
  * The |padding| argument must be one of the |RSA_*_PADDING| values. If in
207
- * doubt, |RSA_PKCS1_PADDING| is the most common. */
201
+ * doubt, |RSA_PKCS1_PADDING| is the most common but |RSA_PKCS1_PSS_PADDING|
202
+ * (via the |EVP_PKEY| interface) is preferred for new protocols. */
208
203
  OPENSSL_EXPORT int RSA_sign_raw(RSA *rsa, size_t *out_len, uint8_t *out,
209
204
  size_t max_out, const uint8_t *in,
210
205
  size_t in_len, int padding);
211
206
 
212
- /* RSA_verify verifies that |sig_len| bytes from |sig| are a valid, PKCS#1
213
- * signature of |msg_len| bytes at |msg| by |rsa|.
207
+ /* RSA_verify verifies that |sig_len| bytes from |sig| are a valid,
208
+ * RSASSA-PKCS1-v1_5 signature of |msg_len| bytes at |msg| by |rsa|.
214
209
  *
215
210
  * The |hash_nid| argument identifies the hash function used to calculate |in|
216
211
  * and is embedded in the resulting signature in order to prevent hash
@@ -231,7 +226,8 @@ OPENSSL_EXPORT int RSA_verify(int hash_nid, const uint8_t *msg, size_t msg_len,
231
226
  * It returns 1 on success or zero on error.
232
227
  *
233
228
  * The |padding| argument must be one of the |RSA_*_PADDING| values. If in
234
- * doubt, |RSA_PKCS1_PADDING| is the most common. */
229
+ * doubt, |RSA_PKCS1_PADDING| is the most common but |RSA_PKCS1_PSS_PADDING|
230
+ * (via the |EVP_PKEY| interface) is preferred for new protocols. */
235
231
  OPENSSL_EXPORT int RSA_verify_raw(RSA *rsa, size_t *out_len, uint8_t *out,
236
232
  size_t max_out, const uint8_t *in,
237
233
  size_t in_len, int padding);
@@ -240,7 +236,9 @@ OPENSSL_EXPORT int RSA_verify_raw(RSA *rsa, size_t *out_len, uint8_t *out,
240
236
  * |rsa| and writes the encrypted data to |to|. The |to| buffer must have at
241
237
  * least |RSA_size| bytes of space. It returns the number of bytes written, or
242
238
  * -1 on error. The |padding| argument must be one of the |RSA_*_PADDING|
243
- * values. If in doubt, |RSA_PKCS1_PADDING| is the most common.
239
+ * values. If in doubt, |RSA_PKCS1_PADDING| is the most common but
240
+ * |RSA_PKCS1_PSS_PADDING| (via the |EVP_PKEY| interface) is preferred for new
241
+ * protocols.
244
242
  *
245
243
  * WARNING: this function is dangerous because it breaks the usual return value
246
244
  * convention. Use |RSA_sign_raw| instead. */
@@ -251,7 +249,9 @@ OPENSSL_EXPORT int RSA_private_encrypt(size_t flen, const uint8_t *from,
251
249
  * public key in |rsa| and writes the plaintext to |to|. The |to| buffer must
252
250
  * have at least |RSA_size| bytes of space. It returns the number of bytes
253
251
  * written, or -1 on error. The |padding| argument must be one of the
254
- * |RSA_*_PADDING| values. If in doubt, |RSA_PKCS1_PADDING| is the most common.
252
+ * |RSA_*_PADDING| values. If in doubt, |RSA_PKCS1_PADDING| is the most common
253
+ * but |RSA_PKCS1_PSS_PADDING| (via the |EVP_PKEY| interface) is preferred for
254
+ * new protocols.
255
255
  *
256
256
  * WARNING: this function is dangerous because it breaks the usual return value
257
257
  * convention. Use |RSA_verify_raw| instead. */
@@ -441,10 +441,10 @@ OPENSSL_EXPORT RSA *RSA_generate_key(int bits, unsigned long e, void *callback,
441
441
 
442
442
  /* d2i_RSAPublicKey parses an ASN.1, DER-encoded, RSA public key from |len|
443
443
  * bytes at |*inp|. If |out| is not NULL then, on exit, a pointer to the result
444
- * is in |*out|. If |*out| is already non-NULL on entry then the result is
445
- * written directly into |*out|, otherwise a fresh |RSA| is allocated. On
446
- * successful exit, |*inp| is advanced past the DER structure. It returns the
447
- * result or NULL on error. */
444
+ * is in |*out|. Note that, even if |*out| is already non-NULL on entry, it
445
+ * will not be written to. Rather, a fresh |RSA| is allocated and the previous
446
+ * one is freed. On successful exit, |*inp| is advanced past the DER structure.
447
+ * It returns the result or NULL on error. */
448
448
  OPENSSL_EXPORT RSA *d2i_RSAPublicKey(RSA **out, const uint8_t **inp, long len);
449
449
 
450
450
  /* i2d_RSAPublicKey marshals |in| to an ASN.1, DER structure. If |outp| is not
@@ -455,10 +455,10 @@ OPENSSL_EXPORT int i2d_RSAPublicKey(const RSA *in, uint8_t **outp);
455
455
 
456
456
  /* d2i_RSAPrivateKey parses an ASN.1, DER-encoded, RSA private key from |len|
457
457
  * bytes at |*inp|. If |out| is not NULL then, on exit, a pointer to the result
458
- * is in |*out|. If |*out| is already non-NULL on entry then the result is
459
- * written directly into |*out|, otherwise a fresh |RSA| is allocated. On
460
- * successful exit, |*inp| is advanced past the DER structure. It returns the
461
- * result or NULL on error. */
458
+ * is in |*out|. Note that, even if |*out| is already non-NULL on entry, it
459
+ * will not be written to. Rather, a fresh |RSA| is allocated and the previous
460
+ * one is freed. On successful exit, |*inp| is advanced past the DER structure.
461
+ * It returns the result or NULL on error. */
462
462
  OPENSSL_EXPORT RSA *d2i_RSAPrivateKey(RSA **out, const uint8_t **inp, long len);
463
463
 
464
464
  /* i2d_RSAPrivateKey marshals |in| to an ASN.1, DER structure. If |outp| is not
@@ -1061,6 +1061,9 @@ OPENSSL_EXPORT int SSL_CIPHER_is_block_cipher(const SSL_CIPHER *cipher);
1061
1061
  /* SSL_CIPHER_is_ECDSA returns one if |cipher| uses ECDSA. */
1062
1062
  OPENSSL_EXPORT int SSL_CIPHER_is_ECDSA(const SSL_CIPHER *cipher);
1063
1063
 
1064
+ /* SSL_CIPHER_is_ECDHE returns one if |cipher| uses ECDHE. */
1065
+ OPENSSL_EXPORT int SSL_CIPHER_is_ECDHE(const SSL_CIPHER *cipher);
1066
+
1064
1067
  /* SSL_CIPHER_get_min_version returns the minimum protocol version required
1065
1068
  * for |cipher|. */
1066
1069
  OPENSSL_EXPORT uint16_t SSL_CIPHER_get_min_version(const SSL_CIPHER *cipher);
@@ -2356,8 +2359,8 @@ OPENSSL_EXPORT void (*SSL_CTX_get_channel_id_cb(SSL_CTX *ctx))(
2356
2359
  *
2357
2360
  * See RFC 5764. */
2358
2361
 
2359
- /* An SRTP_PROTECTION_PROFILE is an SRTP profile for use with the use_srtp
2360
- * extension. */
2362
+ /* srtp_protection_profile_st (aka |SRTP_PROTECTION_PROFILE|) is an SRTP
2363
+ * profile for use with the use_srtp extension. */
2361
2364
  struct srtp_protection_profile_st {
2362
2365
  const char *name;
2363
2366
  unsigned long id;
@@ -2571,7 +2574,7 @@ OPENSSL_EXPORT int SSL_CTX_get_ex_new_index(long argl, void *argp,
2571
2574
  CRYPTO_EX_free *free_func);
2572
2575
 
2573
2576
 
2574
- /* Obscure functions. */
2577
+ /* Low-level record-layer state. */
2575
2578
 
2576
2579
  /* SSL_get_rc4_state sets |*read_key| and |*write_key| to the RC4 states for
2577
2580
  * the read and write directions. It returns one on success or zero if |ssl|
@@ -2589,6 +2592,28 @@ OPENSSL_EXPORT int SSL_get_ivs(const SSL *ssl, const uint8_t **out_read_iv,
2589
2592
  const uint8_t **out_write_iv,
2590
2593
  size_t *out_iv_len);
2591
2594
 
2595
+ /* SSL_get_key_block_len returns the length of |ssl|'s key block. */
2596
+ OPENSSL_EXPORT size_t SSL_get_key_block_len(const SSL *ssl);
2597
+
2598
+ /* SSL_generate_key_block generates |out_len| bytes of key material for |ssl|'s
2599
+ * current connection state. */
2600
+ OPENSSL_EXPORT int SSL_generate_key_block(const SSL *ssl, uint8_t *out,
2601
+ size_t out_len);
2602
+
2603
+ /* SSL_get_read_sequence returns, in TLS, the expected sequence number of the
2604
+ * next incoming record in the current epoch. In DTLS, it returns the maximum
2605
+ * sequence number received in the current epoch and includes the epoch number
2606
+ * in the two most significant bytes. */
2607
+ OPENSSL_EXPORT uint64_t SSL_get_read_sequence(const SSL *ssl);
2608
+
2609
+ /* SSL_get_write_sequence returns the sequence number of the next outgoing
2610
+ * record in the current epoch. In DTLS, it includes the epoch number in the
2611
+ * two most significant bytes. */
2612
+ OPENSSL_EXPORT uint64_t SSL_get_write_sequence(const SSL *ssl);
2613
+
2614
+
2615
+ /* Obscure functions. */
2616
+
2592
2617
  /* SSL_get_structure_sizes returns the sizes of the SSL, SSL_CTX and
2593
2618
  * SSL_SESSION structures so that a test can ensure that outside code agrees on
2594
2619
  * these values. */
@@ -2693,15 +2718,17 @@ OPENSSL_EXPORT void SSL_set_max_cert_list(SSL *ssl, size_t max_cert_list);
2693
2718
 
2694
2719
  /* SSL_CTX_set_max_send_fragment sets the maximum length, in bytes, of records
2695
2720
  * sent by |ctx|. Beyond this length, handshake messages and application data
2696
- * will be split into multiple records. */
2697
- OPENSSL_EXPORT void SSL_CTX_set_max_send_fragment(SSL_CTX *ctx,
2698
- size_t max_send_fragment);
2721
+ * will be split into multiple records. It returns one on success or zero on
2722
+ * error. */
2723
+ OPENSSL_EXPORT int SSL_CTX_set_max_send_fragment(SSL_CTX *ctx,
2724
+ size_t max_send_fragment);
2699
2725
 
2700
- /* SSL_set_max_send_fragment sets the maximum length, in bytes, of records
2701
- * sent by |ssl|. Beyond this length, handshake messages and application data
2702
- * will be split into multiple records. */
2703
- OPENSSL_EXPORT void SSL_set_max_send_fragment(SSL *ssl,
2704
- size_t max_send_fragment);
2726
+ /* SSL_set_max_send_fragment sets the maximum length, in bytes, of records sent
2727
+ * by |ssl|. Beyond this length, handshake messages and application data will
2728
+ * be split into multiple records. It returns one on success or zero on
2729
+ * error. */
2730
+ OPENSSL_EXPORT int SSL_set_max_send_fragment(SSL *ssl,
2731
+ size_t max_send_fragment);
2705
2732
 
2706
2733
  /* ssl_early_callback_ctx is passed to certain callbacks that are called very
2707
2734
  * early on during the server handshake. At this point, much of the SSL* hasn't
@@ -2857,6 +2884,30 @@ OPENSSL_EXPORT int SSL_get_shutdown(const SSL *ssl);
2857
2884
  * |TLSEXT_hash_none|. */
2858
2885
  OPENSSL_EXPORT uint8_t SSL_get_server_key_exchange_hash(const SSL *ssl);
2859
2886
 
2887
+ /* SSL_get_client_random writes up to |max_out| bytes of the most recent
2888
+ * handshake's client_random to |out| and returns the number of bytes written.
2889
+ * If |max_out| is zero, it returns the size of the client_random. */
2890
+ OPENSSL_EXPORT size_t SSL_get_client_random(const SSL *ssl, uint8_t *out,
2891
+ size_t max_out);
2892
+
2893
+ /* SSL_get_server_random writes up to |max_out| bytes of the most recent
2894
+ * handshake's server_random to |out| and returns the number of bytes written.
2895
+ * If |max_out| is zero, it returns the size of the server_random. */
2896
+ OPENSSL_EXPORT size_t SSL_get_server_random(const SSL *ssl, uint8_t *out,
2897
+ size_t max_out);
2898
+
2899
+ /* SSL_get_pending_cipher returns the cipher suite for the current handshake or
2900
+ * NULL if one has not been negotiated yet or there is no pending handshake. */
2901
+ OPENSSL_EXPORT const SSL_CIPHER *SSL_get_pending_cipher(const SSL *ssl);
2902
+
2903
+ /* SSL_CTX_set_retain_only_sha256_of_client_certs, on a server, sets whether
2904
+ * only the SHA-256 hash of peer's certificate should be saved in memory and in
2905
+ * the session. This can save memory, ticket size and session cache space. If
2906
+ * enabled, |SSL_get_peer_certificate| will return NULL after the handshake
2907
+ * completes. See the |peer_sha256| field of |SSL_SESSION| for the hash. */
2908
+ OPENSSL_EXPORT void SSL_CTX_set_retain_only_sha256_of_client_certs(SSL_CTX *ctx,
2909
+ int enable);
2910
+
2860
2911
 
2861
2912
  /* Deprecated functions. */
2862
2913
 
@@ -3324,6 +3375,12 @@ struct ssl_cipher_st {
3324
3375
  uint32_t algorithm_prf;
3325
3376
  };
3326
3377
 
3378
+ typedef struct ssl_ecdh_method_st SSL_ECDH_METHOD;
3379
+ typedef struct ssl_ecdh_ctx_st {
3380
+ const SSL_ECDH_METHOD *method;
3381
+ void *data;
3382
+ } SSL_ECDH_CTX;
3383
+
3327
3384
  #define SSL_MAX_SSL_SESSION_ID_LENGTH 32
3328
3385
  #define SSL_MAX_SID_CTX_LENGTH 32
3329
3386
  #define SSL_MAX_MASTER_KEY_LENGTH 48
@@ -3454,6 +3511,8 @@ struct ssl_cipher_preference_list_st {
3454
3511
  uint8_t *in_group_flags;
3455
3512
  };
3456
3513
 
3514
+ /* ssl_ctx_st (aka |SSL_CTX|) contains configuration common to several SSL
3515
+ * connections. */
3457
3516
  struct ssl_ctx_st {
3458
3517
  const SSL_PROTOCOL_METHOD *method;
3459
3518
 
@@ -3618,7 +3677,7 @@ struct ssl_ctx_st {
3618
3677
 
3619
3678
 
3620
3679
  /* retain_only_sha256_of_client_certs is true if we should compute the SHA256
3621
- * hash of the peer's certifiate and then discard it to save memory and
3680
+ * hash of the peer's certificate and then discard it to save memory and
3622
3681
  * session space. Only effective on the server side. */
3623
3682
  char retain_only_sha256_of_client_certs;
3624
3683
 
@@ -3697,6 +3756,11 @@ struct ssl_ctx_st {
3697
3756
  * means that we'll accept Channel IDs from clients. For a client, means that
3698
3757
  * we'll advertise support. */
3699
3758
  unsigned tlsext_channel_id_enabled:1;
3759
+
3760
+ /* extra_certs is a dummy value included for compatibility.
3761
+ * TODO(agl): remove once node.js no longer references this. */
3762
+ STACK_OF(X509)* extra_certs;
3763
+ int freelist_max_len;
3700
3764
  };
3701
3765
 
3702
3766
  struct ssl_st {
@@ -3715,10 +3779,6 @@ struct ssl_st {
3715
3779
  * TLS). */
3716
3780
  const SSL_PROTOCOL_METHOD *method;
3717
3781
 
3718
- /* enc_method is the method table corresponding to the current protocol
3719
- * version. */
3720
- const SSL3_ENC_METHOD *enc_method;
3721
-
3722
3782
  /* There are 2 BIO's even though they are normally both the same. This is so
3723
3783
  * data can be read and written to different handlers */
3724
3784
 
@@ -3766,9 +3826,6 @@ struct ssl_st {
3766
3826
  struct ssl_cipher_preference_list_st *cipher_list;
3767
3827
  STACK_OF(SSL_CIPHER) *cipher_list_by_id;
3768
3828
 
3769
- SSL_AEAD_CTX *aead_read_ctx;
3770
- SSL_AEAD_CTX *aead_write_ctx;
3771
-
3772
3829
  /* session info */
3773
3830
 
3774
3831
  /* client cert? */
@@ -3827,15 +3884,6 @@ struct ssl_st {
3827
3884
 
3828
3885
  SSL_CTX *initial_ctx; /* initial ctx, used to store sessions */
3829
3886
 
3830
- /* Next protocol negotiation. For the client, this is the protocol that we
3831
- * sent in NextProtocol and is set when handling ServerHello extensions.
3832
- *
3833
- * For a server, this is the client's selected_protocol from NextProtocol and
3834
- * is set when handling the NextProtocol message, before the Finished
3835
- * message. */
3836
- uint8_t *next_proto_negotiated;
3837
- size_t next_proto_negotiated_len;
3838
-
3839
3887
  /* srtp_profiles is the list of configured SRTP protection profiles for
3840
3888
  * DTLS-SRTP. */
3841
3889
  STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles;
@@ -3891,6 +3939,9 @@ struct ssl_st {
3891
3939
  * means that we'll accept Channel IDs from clients. For a client, means that
3892
3940
  * we'll advertise support. */
3893
3941
  unsigned tlsext_channel_id_enabled:1;
3942
+
3943
+ /* TODO(agl): remove once node.js not longer references this. */
3944
+ int tlsext_status_type;
3894
3945
  };
3895
3946
 
3896
3947
  typedef struct ssl3_record_st {
@@ -3971,16 +4022,25 @@ typedef struct ssl3_state_st {
3971
4022
  * received. */
3972
4023
  uint8_t warning_alert_count;
3973
4024
 
4025
+ /* aead_read_ctx is the current read cipher state. */
4026
+ SSL_AEAD_CTX *aead_read_ctx;
4027
+
4028
+ /* aead_write_ctx is the current write cipher state. */
4029
+ SSL_AEAD_CTX *aead_write_ctx;
4030
+
4031
+ /* enc_method is the method table corresponding to the current protocol
4032
+ * version. */
4033
+ const SSL3_ENC_METHOD *enc_method;
4034
+
3974
4035
  /* State pertaining to the pending handshake.
3975
4036
  *
3976
4037
  * TODO(davidben): State is current spread all over the place. Move
3977
4038
  * pending handshake state here so it can be managed separately from
3978
4039
  * established connection state in case of renegotiations. */
3979
4040
  struct {
3980
- /* actually only need to be 16+20 for SSLv3 and 12 for TLS */
3981
- uint8_t finish_md[EVP_MAX_MD_SIZE * 2];
4041
+ uint8_t finish_md[EVP_MAX_MD_SIZE];
3982
4042
  int finish_md_len;
3983
- uint8_t peer_finish_md[EVP_MAX_MD_SIZE * 2];
4043
+ uint8_t peer_finish_md[EVP_MAX_MD_SIZE];
3984
4044
  int peer_finish_md_len;
3985
4045
 
3986
4046
  unsigned long message_size;
@@ -3988,9 +4048,6 @@ typedef struct ssl3_state_st {
3988
4048
 
3989
4049
  /* used to hold the new cipher we are going to use */
3990
4050
  const SSL_CIPHER *new_cipher;
3991
- DH *dh;
3992
-
3993
- EC_KEY *ecdh; /* holds short lived ECDH key */
3994
4051
 
3995
4052
  /* used when SSL_ST_FLUSH_DATA is entered */
3996
4053
  int next_state;
@@ -4040,13 +4097,12 @@ typedef struct ssl3_state_st {
4040
4097
  uint8_t *certificate_types;
4041
4098
  size_t num_certificate_types;
4042
4099
 
4043
- int key_block_length;
4044
4100
  uint8_t *key_block;
4101
+ uint8_t key_block_length;
4045
4102
 
4046
- const EVP_AEAD *new_aead;
4047
4103
  uint8_t new_mac_secret_len;
4104
+ uint8_t new_key_len;
4048
4105
  uint8_t new_fixed_iv_len;
4049
- uint8_t new_variable_iv_len;
4050
4106
 
4051
4107
  /* Server-only: cert_request is true if a client certificate was
4052
4108
  * requested. */
@@ -4091,11 +4147,12 @@ typedef struct ssl3_state_st {
4091
4147
  * |TLSEXT_hash_none|. */
4092
4148
  uint8_t server_key_exchange_hash;
4093
4149
 
4094
- /* peer_dh_tmp, on a client, is the server's DHE public key. */
4095
- DH *peer_dh_tmp;
4150
+ /* ecdh_ctx is the current ECDH instance. */
4151
+ SSL_ECDH_CTX ecdh_ctx;
4096
4152
 
4097
- /* peer_ecdh_tmp, on a client, is the server's ECDHE public key. */
4098
- EC_KEY *peer_ecdh_tmp;
4153
+ /* peer_key is the peer's ECDH key. */
4154
+ uint8_t *peer_key;
4155
+ uint16_t peer_key_len;
4099
4156
  } tmp;
4100
4157
 
4101
4158
  /* Connection binding to prevent renegotiation attacks */
@@ -4108,6 +4165,15 @@ typedef struct ssl3_state_st {
4108
4165
  /* Set if we saw the Next Protocol Negotiation extension from our peer. */
4109
4166
  int next_proto_neg_seen;
4110
4167
 
4168
+ /* Next protocol negotiation. For the client, this is the protocol that we
4169
+ * sent in NextProtocol and is set when handling ServerHello extensions.
4170
+ *
4171
+ * For a server, this is the client's selected_protocol from NextProtocol and
4172
+ * is set when handling the NextProtocol message, before the Finished
4173
+ * message. */
4174
+ uint8_t *next_proto_negotiated;
4175
+ size_t next_proto_negotiated_len;
4176
+
4111
4177
  /* ALPN information
4112
4178
  * (we are in the process of transitioning from NPN to ALPN.) */
4113
4179
 
@@ -4145,6 +4211,14 @@ OPENSSL_EXPORT int SSL_set_session_ticket_ext_cb(SSL *s, void *cb, void *arg);
4145
4211
  OPENSSL_EXPORT int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method);
4146
4212
 
4147
4213
 
4214
+ /* Nodejs compatibility section (hidden).
4215
+ *
4216
+ * These defines exist for node.js, with the hope that we can eliminate the
4217
+ * need for them over time. */
4218
+ #define SSLerr(function, reason) \
4219
+ ERR_put_error(ERR_LIB_SSL, 0, reason, __FILE__, __LINE__)
4220
+
4221
+
4148
4222
  /* Preprocessor compatibility section (hidden).
4149
4223
  *
4150
4224
  * Historically, a number of APIs were implemented in OpenSSL as macros and