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
@@ -85,6 +85,9 @@ extern "C" {
85
85
  #define V_ASN1_ANY -4 /* used in ASN1 template code */
86
86
 
87
87
  #define V_ASN1_NEG 0x100 /* negative flag */
88
+ /* No supported universal tags may exceed this value, to avoid ambiguity with
89
+ * V_ASN1_NEG. */
90
+ #define V_ASN1_MAX_UNIVERSAL 0xff
88
91
 
89
92
  #define V_ASN1_UNDEF -1
90
93
  #define V_ASN1_EOC 0
@@ -1126,43 +1129,42 @@ OPENSSL_EXPORT int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix, asn1_ps_f
1126
1129
  #define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 147
1127
1130
  #define ASN1_R_INVALID_UTF8STRING 148
1128
1131
  #define ASN1_R_LIST_ERROR 149
1129
- #define ASN1_R_MALLOC_FAILURE 150
1130
- #define ASN1_R_MISSING_ASN1_EOS 151
1131
- #define ASN1_R_MISSING_EOC 152
1132
- #define ASN1_R_MISSING_SECOND_NUMBER 153
1133
- #define ASN1_R_MISSING_VALUE 154
1134
- #define ASN1_R_MSTRING_NOT_UNIVERSAL 155
1135
- #define ASN1_R_MSTRING_WRONG_TAG 156
1136
- #define ASN1_R_NESTED_ASN1_ERROR 157
1137
- #define ASN1_R_NESTED_ASN1_STRING 158
1138
- #define ASN1_R_NON_HEX_CHARACTERS 159
1139
- #define ASN1_R_NOT_ASCII_FORMAT 160
1140
- #define ASN1_R_NOT_ENOUGH_DATA 161
1141
- #define ASN1_R_NO_MATCHING_CHOICE_TYPE 162
1142
- #define ASN1_R_NULL_IS_WRONG_LENGTH 163
1143
- #define ASN1_R_OBJECT_NOT_ASCII_FORMAT 164
1144
- #define ASN1_R_ODD_NUMBER_OF_CHARS 165
1145
- #define ASN1_R_SECOND_NUMBER_TOO_LARGE 166
1146
- #define ASN1_R_SEQUENCE_LENGTH_MISMATCH 167
1147
- #define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 168
1148
- #define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 169
1149
- #define ASN1_R_SHORT_LINE 170
1150
- #define ASN1_R_STREAMING_NOT_SUPPORTED 171
1151
- #define ASN1_R_STRING_TOO_LONG 172
1152
- #define ASN1_R_STRING_TOO_SHORT 173
1153
- #define ASN1_R_TAG_VALUE_TOO_HIGH 174
1154
- #define ASN1_R_TIME_NOT_ASCII_FORMAT 175
1155
- #define ASN1_R_TOO_LONG 176
1156
- #define ASN1_R_TYPE_NOT_CONSTRUCTED 177
1157
- #define ASN1_R_TYPE_NOT_PRIMITIVE 178
1158
- #define ASN1_R_UNEXPECTED_EOC 179
1159
- #define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 180
1160
- #define ASN1_R_UNKNOWN_FORMAT 181
1161
- #define ASN1_R_UNKNOWN_TAG 182
1162
- #define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 183
1163
- #define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 184
1164
- #define ASN1_R_UNSUPPORTED_TYPE 185
1165
- #define ASN1_R_WRONG_TAG 186
1166
- #define ASN1_R_WRONG_TYPE 187
1132
+ #define ASN1_R_MISSING_ASN1_EOS 150
1133
+ #define ASN1_R_MISSING_EOC 151
1134
+ #define ASN1_R_MISSING_SECOND_NUMBER 152
1135
+ #define ASN1_R_MISSING_VALUE 153
1136
+ #define ASN1_R_MSTRING_NOT_UNIVERSAL 154
1137
+ #define ASN1_R_MSTRING_WRONG_TAG 155
1138
+ #define ASN1_R_NESTED_ASN1_ERROR 156
1139
+ #define ASN1_R_NESTED_ASN1_STRING 157
1140
+ #define ASN1_R_NON_HEX_CHARACTERS 158
1141
+ #define ASN1_R_NOT_ASCII_FORMAT 159
1142
+ #define ASN1_R_NOT_ENOUGH_DATA 160
1143
+ #define ASN1_R_NO_MATCHING_CHOICE_TYPE 161
1144
+ #define ASN1_R_NULL_IS_WRONG_LENGTH 162
1145
+ #define ASN1_R_OBJECT_NOT_ASCII_FORMAT 163
1146
+ #define ASN1_R_ODD_NUMBER_OF_CHARS 164
1147
+ #define ASN1_R_SECOND_NUMBER_TOO_LARGE 165
1148
+ #define ASN1_R_SEQUENCE_LENGTH_MISMATCH 166
1149
+ #define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 167
1150
+ #define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 168
1151
+ #define ASN1_R_SHORT_LINE 169
1152
+ #define ASN1_R_STREAMING_NOT_SUPPORTED 170
1153
+ #define ASN1_R_STRING_TOO_LONG 171
1154
+ #define ASN1_R_STRING_TOO_SHORT 172
1155
+ #define ASN1_R_TAG_VALUE_TOO_HIGH 173
1156
+ #define ASN1_R_TIME_NOT_ASCII_FORMAT 174
1157
+ #define ASN1_R_TOO_LONG 175
1158
+ #define ASN1_R_TYPE_NOT_CONSTRUCTED 176
1159
+ #define ASN1_R_TYPE_NOT_PRIMITIVE 177
1160
+ #define ASN1_R_UNEXPECTED_EOC 178
1161
+ #define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 179
1162
+ #define ASN1_R_UNKNOWN_FORMAT 180
1163
+ #define ASN1_R_UNKNOWN_TAG 181
1164
+ #define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 182
1165
+ #define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 183
1166
+ #define ASN1_R_UNSUPPORTED_TYPE 184
1167
+ #define ASN1_R_WRONG_TAG 185
1168
+ #define ASN1_R_WRONG_TYPE 186
1167
1169
 
1168
1170
  #endif
@@ -108,7 +108,7 @@ extern "C" {
108
108
  #endif
109
109
 
110
110
  #define OPENSSL_IS_BORINGSSL
111
- #define BORINGSSL_201510
111
+ #define BORINGSSL_201512
112
112
  #define OPENSSL_VERSION_NUMBER 0x10002000
113
113
  #define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER
114
114
 
@@ -138,6 +138,15 @@ extern "C" {
138
138
 
139
139
  #endif /* defined(BORINGSSL_SHARED_LIBRARY) */
140
140
 
141
+
142
+ #if defined(__GNUC__)
143
+ #define OPENSSL_PRINTF_FORMAT_FUNC(string_index, first_to_check) \
144
+ __attribute__((format(printf, string_index, first_to_check)))
145
+ #else
146
+ #define OPENSSL_PRINTF_FORMAT_FUNC(string_index, first_to_check)
147
+ #endif
148
+
149
+
141
150
  /* CRYPTO_THREADID is a dummy value. */
142
151
  typedef int CRYPTO_THREADID;
143
152
 
@@ -308,18 +308,12 @@ OPENSSL_EXPORT BIO *BIO_find_type(BIO *bio, int type);
308
308
  OPENSSL_EXPORT void BIO_copy_next_retry(BIO *bio);
309
309
 
310
310
 
311
- /* Printf functions.
312
- *
313
- * These functions are versions of printf functions that output to a BIO rather
314
- * than a FILE. */
315
- #ifdef __GNUC__
316
- #define __bio_h__attr__ __attribute__
317
- #else
318
- #define __bio_h__attr__(x)
319
- #endif
311
+ /* Printf functions. */
312
+
313
+ /* BIO_printf behaves like |printf| but outputs to |bio| rather than a |FILE|.
314
+ * It returns the number of bytes written or a negative number on error. */
320
315
  OPENSSL_EXPORT int BIO_printf(BIO *bio, const char *format, ...)
321
- __bio_h__attr__((__format__(__printf__, 2, 3)));
322
- #undef __bio_h__attr__
316
+ OPENSSL_PRINTF_FORMAT_FUNC(2, 3);
323
317
 
324
318
 
325
319
  /* Utility functions. */
@@ -717,6 +711,11 @@ OPENSSL_EXPORT int BIO_zero_copy_get_write_buf_done(BIO* bio,
717
711
  #define BIO_CTRL_GET_CALLBACK 15 /* opt - set callback function */
718
712
  #define BIO_CTRL_SET_FILENAME 30 /* BIO_s_file special */
719
713
 
714
+ /* These are never used, but exist to allow code to compile more easily. */
715
+ #define BIO_CTRL_DUP 100
716
+ #define BIO_CTRL_PUSH 101
717
+ #define BIO_CTRL_POP 102
718
+
720
719
 
721
720
  /* Android compatibility section.
722
721
  *
@@ -253,6 +253,9 @@ OPENSSL_EXPORT size_t BN_bn2bin(const BIGNUM *in, uint8_t *out);
253
253
  * returns 0. Otherwise, it returns 1. */
254
254
  OPENSSL_EXPORT int BN_bn2bin_padded(uint8_t *out, size_t len, const BIGNUM *in);
255
255
 
256
+ /* BN_bn2cbb_padded behaves like |BN_bn2bin_padded| but writes to a |CBB|. */
257
+ OPENSSL_EXPORT int BN_bn2cbb_padded(CBB *out, size_t len, const BIGNUM *in);
258
+
256
259
  /* BN_bn2hex returns an allocated string that contains a NUL-terminated, hex
257
260
  * representation of |bn|. If |bn| is negative, the first char in the resulting
258
261
  * string will be '-'. Returns NULL on allocation failure. */
@@ -300,17 +303,17 @@ OPENSSL_EXPORT BN_ULONG BN_get_word(const BIGNUM *bn);
300
303
 
301
304
  /* ASN.1 functions. */
302
305
 
303
- /* BN_cbs2unsigned parses a non-negative DER INTEGER from |cbs| writes the
304
- * result to |ret|. It returns one on success and zero on failure. */
305
- OPENSSL_EXPORT int BN_cbs2unsigned(CBS *cbs, BIGNUM *ret);
306
+ /* BN_parse_asn1_unsigned parses a non-negative DER INTEGER from |cbs| writes
307
+ * the result to |ret|. It returns one on success and zero on failure. */
308
+ OPENSSL_EXPORT int BN_parse_asn1_unsigned(CBS *cbs, BIGNUM *ret);
306
309
 
307
- /* BN_cbs2unsigned_buggy acts like |BN_cbs2unsigned| but tolerates some invalid
308
- * encodings. Do not use this function. */
309
- OPENSSL_EXPORT int BN_cbs2unsigned_buggy(CBS *cbs, BIGNUM *ret);
310
+ /* BN_parse_asn1_unsigned_buggy acts like |BN_parse_asn1_unsigned| but tolerates
311
+ * some invalid encodings. Do not use this function. */
312
+ OPENSSL_EXPORT int BN_parse_asn1_unsigned_buggy(CBS *cbs, BIGNUM *ret);
310
313
 
311
- /* BN_bn2cbb marshals |bn| as a non-negative DER INTEGER and appends the result
312
- * to |cbb|. It returns one on success and zero on failure. */
313
- OPENSSL_EXPORT int BN_bn2cbb(CBB *cbb, const BIGNUM *bn);
314
+ /* BN_marshal_asn1 marshals |bn| as a non-negative DER INTEGER and appends the
315
+ * result to |cbb|. It returns one on success and zero on failure. */
316
+ OPENSSL_EXPORT int BN_marshal_asn1(CBB *cbb, const BIGNUM *bn);
314
317
 
315
318
 
316
319
  /* Internal functions.
@@ -67,7 +67,7 @@ extern "C" {
67
67
  /* Memory and string functions, see also mem.h. */
68
68
 
69
69
 
70
- /* BUF_MEM is a generic buffer object used by OpenSSL. */
70
+ /* buf_mem_st (aka |BUF_MEM|) is a generic buffer object used by OpenSSL. */
71
71
  struct buf_mem_st {
72
72
  size_t length; /* current number of bytes */
73
73
  char *data;
@@ -130,7 +130,18 @@ OPENSSL_EXPORT int CBS_get_u24_length_prefixed(CBS *cbs, CBS *out);
130
130
  #define CBS_ASN1_ENUMERATED 0xa
131
131
  #define CBS_ASN1_SEQUENCE (0x10 | CBS_ASN1_CONSTRUCTED)
132
132
  #define CBS_ASN1_SET (0x11 | CBS_ASN1_CONSTRUCTED)
133
+ #define CBS_ASN1_NUMERICSTRING 0x12
134
+ #define CBS_ASN1_PRINTABLESTRING 0x13
135
+ #define CBS_ASN1_T16STRING 0x14
136
+ #define CBS_ASN1_VIDEOTEXSTRING 0x15
137
+ #define CBS_ASN1_IA5STRING 0x16
138
+ #define CBS_ASN1_UTCTIME 0x17
133
139
  #define CBS_ASN1_GENERALIZEDTIME 0x18
140
+ #define CBS_ASN1_GRAPHICSTRING 0x19
141
+ #define CBS_ASN1_VISIBLESTRING 0x1a
142
+ #define CBS_ASN1_GENERALSTRING 0x1b
143
+ #define CBS_ASN1_UNIVERSALSTRING 0x1c
144
+ #define CBS_ASN1_BMPSTRING 0x1e
134
145
 
135
146
  #define CBS_ASN1_CONSTRUCTED 0x20
136
147
  #define CBS_ASN1_CONTEXT_SPECIFIC 0x80
@@ -292,6 +303,13 @@ OPENSSL_EXPORT int CBB_finish(CBB *cbb, uint8_t **out_data, size_t *out_len);
292
303
  * on error. */
293
304
  OPENSSL_EXPORT int CBB_flush(CBB *cbb);
294
305
 
306
+ /* CBB_data returns a pointer to the bytes written to |cbb|. It does not flush
307
+ * |cbb|. The pointer is valid until the next operation to |cbb|.
308
+ *
309
+ * To avoid unfinalized length prefixes, it is a fatal error to call this on a
310
+ * CBB with any active children. */
311
+ OPENSSL_EXPORT const uint8_t *CBB_data(const CBB *cbb);
312
+
295
313
  /* CBB_len returns the number of bytes written to |cbb|. It does not flush
296
314
  * |cbb|.
297
315
  *
@@ -331,6 +349,17 @@ OPENSSL_EXPORT int CBB_add_bytes(CBB *cbb, const uint8_t *data, size_t len);
331
349
  * otherwise. */
332
350
  OPENSSL_EXPORT int CBB_add_space(CBB *cbb, uint8_t **out_data, size_t len);
333
351
 
352
+ /* CBB_reserve ensures |cbb| has room for |len| additional bytes and sets
353
+ * |*out_data| to point to the beginning of that space. It returns one on
354
+ * success and zero otherwise. The caller may write up to |len| bytes to
355
+ * |*out_data| and call |CBB_did_write| to complete the write. |*out_data| is
356
+ * valid until the next operation on |cbb| or an ancestor |CBB|. */
357
+ OPENSSL_EXPORT int CBB_reserve(CBB *cbb, uint8_t **out_data, size_t len);
358
+
359
+ /* CBB_did_write advances |cbb| by |len| bytes, assuming the space has been
360
+ * written to by the caller. It returns one on success and zero on error. */
361
+ OPENSSL_EXPORT int CBB_did_write(CBB *cbb, size_t len);
362
+
334
363
  /* CBB_add_u8 appends an 8-bit number from |value| to |cbb|. It returns one on
335
364
  * success and zero otherwise. */
336
365
  OPENSSL_EXPORT int CBB_add_u8(CBB *cbb, uint8_t value);
@@ -131,6 +131,31 @@ int CONF_parse_list(const char *list, char sep, int remove_whitespace,
131
131
  int (*list_cb)(const char *elem, int len, void *usr),
132
132
  void *arg);
133
133
 
134
+
135
+ /* Deprecated functions */
136
+
137
+ /* These defines do nothing but are provided to make old code easier to
138
+ * compile. */
139
+ #define CONF_MFLAGS_DEFAULT_SECTION 0
140
+ #define CONF_MFLAGS_IGNORE_MISSING_FILE 0
141
+
142
+ typedef struct conf_must_be_null_st CONF_MUST_BE_NULL;
143
+
144
+ /* CONF_modules_load_file returns one. |filename| was originally a string, with
145
+ * NULL indicating the default. BoringSSL does not support configuration files,
146
+ * so this stub emulates the "default" no-op file but intentionally breaks
147
+ * compilation of consumers actively attempting to use this subsystem. */
148
+ OPENSSL_EXPORT int CONF_modules_load_file(CONF_MUST_BE_NULL *filename,
149
+ const char *appname,
150
+ unsigned long flags);
151
+
152
+ /* CONF_modules_free does nothing. */
153
+ OPENSSL_EXPORT void CONF_modules_free(void);
154
+
155
+ /* OPENSSL_config does nothing. */
156
+ OPENSSL_EXPORT void OPENSSL_config(CONF_MUST_BE_NULL *config_name);
157
+
158
+
134
159
  #if defined(__cplusplus)
135
160
  } /* extern C */
136
161
  #endif
@@ -42,7 +42,9 @@ OPENSSL_EXPORT void CRYPTO_library_init(void);
42
42
 
43
43
  /* Deprecated functions. */
44
44
 
45
- #define OPENSSL_VERSION_TEXT "BoringSSL"
45
+ /* OPENSSL_VERSION_TEXT contains a string the identifies the version of
46
+ * “OpenSSL”. node.js requires a version number in this text. */
47
+ #define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2 (compatible; BoringSSL)"
46
48
 
47
49
  #define SSLEAY_VERSION 0
48
50
 
@@ -60,6 +62,9 @@ OPENSSL_EXPORT int CRYPTO_malloc_init(void);
60
62
  /* ENGINE_load_builtin_engines does nothing. */
61
63
  OPENSSL_EXPORT void ENGINE_load_builtin_engines(void);
62
64
 
65
+ /* OPENSSL_load_builtin_modules does nothing. */
66
+ OPENSSL_EXPORT void OPENSSL_load_builtin_modules(void);
67
+
63
68
 
64
69
  #if defined(__cplusplus)
65
70
  } /* extern C */
@@ -24,8 +24,7 @@ extern "C" {
24
24
 
25
25
  /* Curve25519.
26
26
  *
27
- * Curve25519 is an elliptic curve. See
28
- * https://tools.ietf.org/html/draft-irtf-cfrg-curves-11. */
27
+ * Curve25519 is an elliptic curve. See https://tools.ietf.org/html/rfc7748. */
29
28
 
30
29
 
31
30
  /* X25519.
@@ -33,7 +32,7 @@ extern "C" {
33
32
  * Curve25519 is an elliptic curve. The same name is also sometimes used for
34
33
  * the Diffie-Hellman primitive built from it but “X25519” is a more precise
35
34
  * name for that, which is the one used here. See http://cr.yp.to/ecdh.html and
36
- * https://tools.ietf.org/html/draft-irtf-cfrg-curves-11. */
35
+ * https://tools.ietf.org/html/rfc7748. */
37
36
 
38
37
  /* X25519_keypair sets |out_public_value| and |out_private_key| to a freshly
39
38
  * generated, public–private key pair. */
@@ -61,6 +60,10 @@ OPENSSL_EXPORT void X25519_public_from_private(uint8_t out_public_value[32],
61
60
  * Ed25519 is a signature scheme using a twisted-Edwards curve that is
62
61
  * birationally equivalent to curve25519. */
63
62
 
63
+ #define ED25519_PRIVATE_KEY_LEN 64
64
+ #define ED25519_PUBLIC_KEY_LEN 32
65
+ #define ED25519_SIGNATURE_LEN 64
66
+
64
67
  /* ED25519_keypair sets |out_public_key| and |out_private_key| to a freshly
65
68
  * generated, public–private key pair. */
66
69
  OPENSSL_EXPORT void ED25519_keypair(uint8_t out_public_key[32],
@@ -156,8 +156,9 @@ OPENSSL_EXPORT unsigned DH_num_bits(const DH *dh);
156
156
  * Note: these checks may be quite computationally expensive. */
157
157
  OPENSSL_EXPORT int DH_check(const DH *dh, int *out_flags);
158
158
 
159
- #define DH_CHECK_PUBKEY_TOO_SMALL 1
160
- #define DH_CHECK_PUBKEY_TOO_LARGE 2
159
+ #define DH_CHECK_PUBKEY_TOO_SMALL 0x1
160
+ #define DH_CHECK_PUBKEY_TOO_LARGE 0x2
161
+ #define DH_CHECK_PUBKEY_INVALID 0x4
161
162
 
162
163
  /* DH_check_pub_key checks the suitability of |pub_key| as a public key for the
163
164
  * DH group in |dh| and sets |DH_CHECK_PUBKEY_*| flags in |*out_flags| if it
@@ -177,7 +178,10 @@ OPENSSL_EXPORT DH *DHparams_dup(const DH *dh);
177
178
  * structure from |len| bytes at |*inp|. If |ret| is not NULL then, on exit, a
178
179
  * pointer to the result is in |*ret|. If |*ret| is already non-NULL on entry
179
180
  * then the result is written directly into |*ret|, otherwise a fresh |DH| is
180
- * allocated. On successful exit, |*inp| is advanced past the DER structure. It
181
+ * allocated. However, one should not depend on writing into |*ret| because
182
+ * this behaviour is likely to change in the future.
183
+ *
184
+ * On successful exit, |*inp| is advanced past the DER structure. It
181
185
  * returns the result or NULL on error. */
182
186
  OPENSSL_EXPORT DH *d2i_DHparams(DH **ret, const unsigned char **inp, long len);
183
187
 
@@ -128,7 +128,7 @@ OPENSSL_EXPORT int DSA_generate_key(DSA *dsa);
128
128
 
129
129
  /* Signatures. */
130
130
 
131
- /* DSA_SIG contains a DSA signature as a pair of integers. */
131
+ /* DSA_SIG_st (aka |DSA_SIG|) contains a DSA signature as a pair of integers. */
132
132
  typedef struct DSA_SIG_st {
133
133
  BIGNUM *r, *s;
134
134
  } DSA_SIG;
@@ -218,62 +218,41 @@ OPENSSL_EXPORT int DSA_size(const DSA *dsa);
218
218
 
219
219
  /* ASN.1 encoding. */
220
220
 
221
- /* d2i_DSA_SIG parses an ASN.1, DER-encoded, DSA signature from |len| bytes at
222
- * |*inp|. If |out_sig| is not NULL then, on exit, a pointer to the result is
223
- * in |*out_sig|. If |*out_sig| is already non-NULL on entry then the result is
224
- * written directly into |*out_sig|, otherwise a fresh |DSA_SIG| is allocated.
225
- * On successful exit, |*inp| is advanced past the DER structure. It returns
226
- * the result or NULL on error. */
227
- OPENSSL_EXPORT DSA_SIG *d2i_DSA_SIG(DSA_SIG **out_sig, const uint8_t **inp,
228
- long len);
221
+ /* DSA_SIG_parse parses a DER-encoded DSA-Sig-Value structure from |cbs| and
222
+ * advances |cbs|. It returns a newly-allocated |DSA_SIG| or NULL on error. */
223
+ OPENSSL_EXPORT DSA_SIG *DSA_SIG_parse(CBS *cbs);
229
224
 
230
- /* i2d_DSA_SIG marshals |in| to an ASN.1, DER structure. If |outp| is not NULL
231
- * then the result is written to |*outp| and |*outp| is advanced just past the
232
- * output. It returns the number of bytes in the result, whether written or not,
233
- * or a negative value on error. */
234
- OPENSSL_EXPORT int i2d_DSA_SIG(const DSA_SIG *in, uint8_t **outp);
225
+ /* DSA_SIG_marshal marshals |sig| as a DER-encoded DSA-Sig-Value and appends the
226
+ * result to |cbb|. It returns one on success and zero on error. */
227
+ OPENSSL_EXPORT int DSA_SIG_marshal(CBB *cbb, const DSA_SIG *sig);
235
228
 
236
- /* d2i_DSAPublicKey parses an ASN.1, DER-encoded, DSA public key from |len|
237
- * bytes at |*inp|. If |out| is not NULL then, on exit, a pointer to the result
238
- * is in |*out|. If |*out| is already non-NULL on entry then the result is
239
- * written directly into |*out|, otherwise a fresh |DSA| is allocated. On
240
- * successful exit, |*inp| is advanced past the DER structure. It returns the
241
- * result or NULL on error. */
242
- OPENSSL_EXPORT DSA *d2i_DSAPublicKey(DSA **out, const uint8_t **inp, long len);
229
+ /* DSA_parse_public_key parses a DER-encoded DSA public key from |cbs| and
230
+ * advances |cbs|. It returns a newly-allocated |DSA| or NULL on error. */
231
+ OPENSSL_EXPORT DSA *DSA_parse_public_key(CBS *cbs);
243
232
 
244
- /* i2d_DSAPublicKey marshals a public key from |in| to an ASN.1, DER structure.
245
- * If |outp| is not NULL then the result is written to |*outp| and |*outp| is
246
- * advanced just past the output. It returns the number of bytes in the result,
247
- * whether written or not, or a negative value on error. */
248
- OPENSSL_EXPORT int i2d_DSAPublicKey(const DSA *in, unsigned char **outp);
233
+ /* DSA_marshal_public_key marshals |dsa| as a DER-encoded DSA public key and
234
+ * appends the result to |cbb|. It returns one on success and zero on
235
+ * failure. */
236
+ OPENSSL_EXPORT int DSA_marshal_public_key(CBB *cbb, const DSA *dsa);
249
237
 
250
- /* d2i_DSAPrivateKey parses an ASN.1, DER-encoded, DSA private key from |len|
251
- * bytes at |*inp|. If |out| is not NULL then, on exit, a pointer to the result
252
- * is in |*out|. If |*out| is already non-NULL on entry then the result is
253
- * written directly into |*out|, otherwise a fresh |DSA| is allocated. On
254
- * successful exit, |*inp| is advanced past the DER structure. It returns the
255
- * result or NULL on error. */
256
- OPENSSL_EXPORT DSA *d2i_DSAPrivateKey(DSA **out, const uint8_t **inp, long len);
238
+ /* DSA_parse_private_key parses a DER-encoded DSA private key from |cbs| and
239
+ * advances |cbs|. It returns a newly-allocated |DSA| or NULL on error. */
240
+ OPENSSL_EXPORT DSA *DSA_parse_private_key(CBS *cbs);
257
241
 
258
- /* i2d_DSAPrivateKey marshals a private key from |in| to an ASN.1, DER structure.
259
- * If |outp| is not NULL then the result is written to |*outp| and |*outp| is
260
- * advanced just past the output. It returns the number of bytes in the result,
261
- * whether written or not, or a negative value on error. */
262
- OPENSSL_EXPORT int i2d_DSAPrivateKey(const DSA *in, unsigned char **outp);
242
+ /* DSA_marshal_private_key marshals |dsa| as a DER-encoded DSA private key and
243
+ * appends the result to |cbb|. It returns one on success and zero on
244
+ * failure. */
245
+ OPENSSL_EXPORT int DSA_marshal_private_key(CBB *cbb, const DSA *dsa);
263
246
 
264
- /* d2i_DSAparams parses ASN.1, DER-encoded, DSA parameters from |len| bytes at
265
- * |*inp|. If |out| is not NULL then, on exit, a pointer to the result is in
266
- * |*out|. If |*out| is already non-NULL on entry then the result is written
267
- * directly into |*out|, otherwise a fresh |DSA| is allocated. On successful
268
- * exit, |*inp| is advanced past the DER structure. It returns the result or
269
- * NULL on error. */
270
- OPENSSL_EXPORT DSA *d2i_DSAparams(DSA **out, const uint8_t **inp, long len);
247
+ /* DSA_parse_parameters parses a DER-encoded Dss-Parms structure (RFC 3279)
248
+ * from |cbs| and advances |cbs|. It returns a newly-allocated |DSA| or NULL on
249
+ * error. */
250
+ OPENSSL_EXPORT DSA *DSA_parse_parameters(CBS *cbs);
271
251
 
272
- /* i2d_DSAparams marshals DSA parameters from |in| to an ASN.1, DER structure.
273
- * If |outp| is not NULL then the result is written to |*outp| and |*outp| is
274
- * advanced just past the output. It returns the number of bytes in the result,
275
- * whether written or not, or a negative value on error. */
276
- OPENSSL_EXPORT int i2d_DSAparams(const DSA *in, unsigned char **outp);
252
+ /* DSA_marshal_parameters marshals |dsa| as a DER-encoded Dss-Parms structure
253
+ * (RFC 3447) and appends the result to |cbb|. It returns one on success and
254
+ * zero on failure. */
255
+ OPENSSL_EXPORT int DSA_marshal_parameters(CBB *cbb, const DSA *dsa);
277
256
 
278
257
 
279
258
  /* Precomputation. */
@@ -309,9 +288,84 @@ OPENSSL_EXPORT int DSA_set_ex_data(DSA *d, int idx, void *arg);
309
288
  OPENSSL_EXPORT void *DSA_get_ex_data(const DSA *d, int idx);
310
289
 
311
290
 
291
+ /* Deprecated functions. */
292
+
293
+ /* d2i_DSA_SIG parses an ASN.1, DER-encoded, DSA signature from |len| bytes at
294
+ * |*inp|. If |out_sig| is not NULL then, on exit, a pointer to the result is
295
+ * in |*out_sig|. Note that, even if |*out_sig| is already non-NULL on entry, it
296
+ * will not be written to. Rather, a fresh |DSA_SIG| is allocated and the
297
+ * previous one is freed. On successful exit, |*inp| is advanced past the DER
298
+ * structure. It returns the result or NULL on error.
299
+ *
300
+ * Use |DSA_SIG_parse| instead. */
301
+ OPENSSL_EXPORT DSA_SIG *d2i_DSA_SIG(DSA_SIG **out_sig, const uint8_t **inp,
302
+ long len);
303
+
304
+ /* i2d_DSA_SIG marshals |in| to an ASN.1, DER structure. If |outp| is not NULL
305
+ * then the result is written to |*outp| and |*outp| is advanced just past the
306
+ * output. It returns the number of bytes in the result, whether written or not,
307
+ * or a negative value on error.
308
+ *
309
+ * Use |DSA_SIG_marshal| instead. */
310
+ OPENSSL_EXPORT int i2d_DSA_SIG(const DSA_SIG *in, uint8_t **outp);
311
+
312
+ /* d2i_DSAPublicKey parses an ASN.1, DER-encoded, DSA public key from |len|
313
+ * bytes at |*inp|. If |out| is not NULL then, on exit, a pointer to the result
314
+ * is in |*out|. Note that, even if |*ou| is already non-NULL on entry, it will
315
+ * not be written to. Rather, a fresh |DSA| is allocated and the previous one is
316
+ * freed. On successful exit, |*inp| is advanced past the DER structure. It
317
+ * returns the result or NULL on error.
318
+ *
319
+ * Use |DSA_parse_public_key| instead. */
320
+ OPENSSL_EXPORT DSA *d2i_DSAPublicKey(DSA **out, const uint8_t **inp, long len);
321
+
322
+ /* i2d_DSAPublicKey marshals a public key from |in| to an ASN.1, DER structure.
323
+ * If |outp| is not NULL then the result is written to |*outp| and |*outp| is
324
+ * advanced just past the output. It returns the number of bytes in the result,
325
+ * whether written or not, or a negative value on error.
326
+ *
327
+ * Use |DSA_marshal_public_key| instead. */
328
+ OPENSSL_EXPORT int i2d_DSAPublicKey(const DSA *in, uint8_t **outp);
329
+
330
+ /* d2i_DSAPrivateKey parses an ASN.1, DER-encoded, DSA private key from |len|
331
+ * bytes at |*inp|. If |out| is not NULL then, on exit, a pointer to the result
332
+ * is in |*out|. Note that, even if |*out| is already non-NULL on entry, it will
333
+ * not be written to. Rather, a fresh |DSA| is allocated and the previous one is
334
+ * freed. On successful exit, |*inp| is advanced past the DER structure. It
335
+ * returns the result or NULL on error.
336
+ *
337
+ * Use |DSA_parse_private_key| instead. */
338
+ OPENSSL_EXPORT DSA *d2i_DSAPrivateKey(DSA **out, const uint8_t **inp, long len);
339
+
340
+ /* i2d_DSAPrivateKey marshals a private key from |in| to an ASN.1, DER structure.
341
+ * If |outp| is not NULL then the result is written to |*outp| and |*outp| is
342
+ * advanced just past the output. It returns the number of bytes in the result,
343
+ * whether written or not, or a negative value on error.
344
+ *
345
+ * Use |DSA_marshal_private_key| instead. */
346
+ OPENSSL_EXPORT int i2d_DSAPrivateKey(const DSA *in, uint8_t **outp);
347
+
348
+ /* d2i_DSAparams parses ASN.1, DER-encoded, DSA parameters from |len| bytes at
349
+ * |*inp|. If |out| is not NULL then, on exit, a pointer to the result is in
350
+ * |*out|. Note that, even if |*out| is already non-NULL on entry, it will not
351
+ * be written to. Rather, a fresh |DSA| is allocated and the previous one is
352
+ * freed. On successful exit, |*inp| is advanced past the DER structure. It
353
+ * returns the result or NULL on error.
354
+ *
355
+ * Use |DSA_parse_parameters| instead. */
356
+ OPENSSL_EXPORT DSA *d2i_DSAparams(DSA **out, const uint8_t **inp, long len);
357
+
358
+ /* i2d_DSAparams marshals DSA parameters from |in| to an ASN.1, DER structure.
359
+ * If |outp| is not NULL then the result is written to |*outp| and |*outp| is
360
+ * advanced just past the output. It returns the number of bytes in the result,
361
+ * whether written or not, or a negative value on error.
362
+ *
363
+ * Use |DSA_marshal_parameters| instead. */
364
+ OPENSSL_EXPORT int i2d_DSAparams(const DSA *in, uint8_t **outp);
365
+
366
+
312
367
  struct dsa_st {
313
368
  long version;
314
- int write_params;
315
369
  BIGNUM *p;
316
370
  BIGNUM *q; /* == 20 */
317
371
  BIGNUM *g;
@@ -339,5 +393,8 @@ struct dsa_st {
339
393
  #define DSA_R_MISSING_PARAMETERS 101
340
394
  #define DSA_R_MODULUS_TOO_LARGE 102
341
395
  #define DSA_R_NEED_NEW_SETUP_VALUES 103
396
+ #define DSA_R_BAD_VERSION 104
397
+ #define DSA_R_DECODE_ERROR 105
398
+ #define DSA_R_ENCODE_ERROR 106
342
399
 
343
400
  #endif /* OPENSSL_HEADER_DSA_H */