grpc 1.0.1 → 1.1.2

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 (705) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +3696 -867
  3. data/etc/roots.pem +39 -111
  4. data/include/grpc/byte_buffer.h +64 -1
  5. data/include/grpc/census.h +40 -96
  6. data/include/grpc/compression.h +2 -1
  7. data/include/grpc/grpc.h +42 -7
  8. data/include/grpc/grpc_posix.h +8 -5
  9. data/include/grpc/impl/codegen/atm.h +3 -0
  10. data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
  11. data/include/grpc/impl/codegen/atm_gcc_sync.h +8 -0
  12. data/include/grpc/impl/codegen/atm_windows.h +4 -0
  13. data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -4
  14. data/include/grpc/impl/codegen/compression_types.h +1 -1
  15. data/include/grpc/impl/codegen/connectivity_state.h +2 -0
  16. data/include/grpc/impl/codegen/exec_ctx_fwd.h +41 -0
  17. data/include/grpc/impl/codegen/gpr_slice.h +84 -0
  18. data/include/grpc/impl/codegen/{alloc.h → gpr_types.h} +30 -29
  19. data/include/grpc/impl/codegen/grpc_types.h +91 -9
  20. data/include/grpc/impl/codegen/port_platform.h +25 -92
  21. data/include/grpc/impl/codegen/slice.h +54 -97
  22. data/include/grpc/impl/codegen/sync.h +0 -253
  23. data/include/grpc/module.modulemap +0 -2
  24. data/include/grpc/slice.h +132 -0
  25. data/include/grpc/{impl/codegen/slice_buffer.h → slice_buffer.h} +22 -39
  26. data/include/grpc/support/alloc.h +40 -1
  27. data/include/grpc/support/log.h +80 -1
  28. data/include/grpc/support/log_windows.h +2 -0
  29. data/include/grpc/support/string_util.h +1 -1
  30. data/include/grpc/support/sync.h +252 -0
  31. data/include/grpc/support/time.h +67 -1
  32. data/src/boringssl/err_data.c +639 -627
  33. data/src/core/ext/census/base_resources.c +71 -0
  34. data/src/core/ext/census/base_resources.h +39 -0
  35. data/src/core/ext/census/gen/census.pb.c +26 -29
  36. data/src/core/ext/census/gen/census.pb.h +68 -67
  37. data/src/core/ext/census/gen/trace_context.pb.c +81 -0
  38. data/src/core/ext/census/gen/trace_context.pb.h +99 -0
  39. data/src/core/ext/census/grpc_filter.c +22 -16
  40. data/src/core/ext/census/grpc_plugin.c +2 -1
  41. data/src/core/ext/census/initialize.c +16 -4
  42. data/src/core/ext/census/mlog.h +1 -1
  43. data/src/core/ext/census/placeholders.c +0 -45
  44. data/src/core/ext/census/resource.c +312 -0
  45. data/src/core/ext/census/resource.h +63 -0
  46. data/src/core/ext/census/trace_context.c +86 -0
  47. data/src/core/ext/census/trace_context.h +68 -0
  48. data/src/core/ext/census/tracing.c +8 -2
  49. data/src/core/ext/{client_config → client_channel}/channel_connectivity.c +8 -4
  50. data/src/core/ext/client_channel/client_channel.c +1218 -0
  51. data/src/core/ext/{client_config → client_channel}/client_channel.h +8 -11
  52. data/src/core/ext/{client_config → client_channel}/client_channel_factory.c +33 -3
  53. data/src/core/ext/{client_config → client_channel}/client_channel_factory.h +15 -8
  54. data/src/core/ext/{client_config/client_config_plugin.c → client_channel/client_channel_plugin.c} +16 -15
  55. data/src/core/ext/{client_config → client_channel}/connector.c +1 -1
  56. data/src/core/ext/{client_config → client_channel}/connector.h +5 -8
  57. data/{include/grpc/support/slice_buffer.h → src/core/ext/client_channel/default_initial_connect_string.c} +4 -5
  58. data/src/core/ext/client_channel/http_connect_handshaker.c +399 -0
  59. data/src/core/ext/client_channel/http_connect_handshaker.h +52 -0
  60. data/src/core/ext/{client_config → client_channel}/initial_connect_string.c +6 -7
  61. data/src/core/ext/{client_config → client_channel}/initial_connect_string.h +10 -10
  62. data/src/core/ext/{client_config → client_channel}/lb_policy.c +11 -11
  63. data/src/core/ext/{client_config → client_channel}/lb_policy.h +68 -27
  64. data/src/core/ext/client_channel/lb_policy_factory.c +163 -0
  65. data/src/core/ext/{client_config → client_channel}/lb_policy_factory.h +64 -9
  66. data/src/core/ext/{client_config → client_channel}/lb_policy_registry.c +6 -4
  67. data/src/core/ext/{client_config → client_channel}/lb_policy_registry.h +4 -4
  68. data/src/core/ext/{client_config → client_channel}/parse_address.c +21 -14
  69. data/src/core/ext/{client_config → client_channel}/parse_address.h +8 -10
  70. data/src/core/ext/{client_config → client_channel}/resolver.c +3 -4
  71. data/src/core/ext/{client_config → client_channel}/resolver.h +11 -15
  72. data/src/core/ext/{client_config → client_channel}/resolver_factory.c +4 -3
  73. data/src/core/ext/{client_config → client_channel}/resolver_factory.h +13 -11
  74. data/src/core/ext/{client_config → client_channel}/resolver_registry.c +54 -34
  75. data/src/core/ext/{client_config → client_channel}/resolver_registry.h +21 -8
  76. data/src/core/ext/{client_config → client_channel}/subchannel.c +208 -119
  77. data/src/core/ext/{client_config → client_channel}/subchannel.h +21 -11
  78. data/src/core/ext/{client_config → client_channel}/subchannel_index.c +6 -17
  79. data/src/core/ext/{client_config → client_channel}/subchannel_index.h +7 -7
  80. data/src/core/ext/{client_config → client_channel}/uri_parser.c +21 -28
  81. data/src/core/ext/{client_config → client_channel}/uri_parser.h +3 -3
  82. data/src/core/ext/lb_policy/grpclb/grpclb.c +1406 -0
  83. data/src/core/ext/lb_policy/grpclb/grpclb.h +44 -0
  84. data/src/core/ext/lb_policy/grpclb/load_balancer_api.c +117 -37
  85. data/src/core/ext/lb_policy/grpclb/load_balancer_api.h +31 -12
  86. data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +6 -36
  87. data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +22 -42
  88. data/src/core/ext/lb_policy/pick_first/pick_first.c +64 -46
  89. data/src/core/ext/lb_policy/round_robin/round_robin.c +324 -160
  90. data/src/core/ext/load_reporting/load_reporting.c +7 -56
  91. data/src/core/ext/load_reporting/load_reporting.h +41 -28
  92. data/src/core/ext/load_reporting/load_reporting_filter.c +132 -42
  93. data/src/core/ext/load_reporting/load_reporting_filter.h +1 -0
  94. data/src/core/ext/resolver/dns/native/dns_resolver.c +88 -80
  95. data/src/core/ext/resolver/sockaddr/sockaddr_resolver.c +57 -102
  96. data/src/core/ext/transport/chttp2/alpn/alpn.c +1 -1
  97. data/src/core/ext/transport/chttp2/client/chttp2_connector.c +253 -0
  98. data/src/core/{lib/iomgr/ev_poll_and_epoll_posix.h → ext/transport/chttp2/client/chttp2_connector.h} +5 -5
  99. data/src/core/ext/transport/chttp2/client/insecure/channel_create.c +31 -160
  100. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c +5 -5
  101. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c +44 -243
  102. data/src/core/ext/transport/chttp2/server/chttp2_server.c +342 -0
  103. data/src/core/ext/transport/chttp2/server/chttp2_server.h +47 -0
  104. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c +11 -124
  105. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c +20 -9
  106. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +28 -236
  107. data/src/core/ext/transport/chttp2/transport/bin_decoder.c +31 -27
  108. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +5 -4
  109. data/src/core/ext/transport/chttp2/transport/bin_encoder.c +25 -22
  110. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +8 -7
  111. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +0 -3
  112. data/src/core/ext/transport/chttp2/transport/chttp2_transport.c +1345 -1521
  113. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -1
  114. data/src/core/ext/transport/chttp2/transport/frame.h +3 -5
  115. data/src/core/ext/transport/chttp2/transport/frame_data.c +50 -47
  116. data/src/core/ext/transport/chttp2/transport/frame_data.h +8 -9
  117. data/src/core/ext/transport/chttp2/transport/frame_goaway.c +19 -21
  118. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +9 -8
  119. data/src/core/ext/transport/chttp2/transport/frame_ping.c +13 -12
  120. data/src/core/ext/transport/chttp2/transport/frame_ping.h +6 -6
  121. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.c +31 -19
  122. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +8 -7
  123. data/src/core/ext/transport/chttp2/transport/frame_settings.c +22 -25
  124. data/src/core/ext/transport/chttp2/transport/frame_settings.h +9 -8
  125. data/src/core/ext/transport/chttp2/transport/frame_window_update.c +26 -18
  126. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
  127. data/src/core/ext/transport/chttp2/transport/hpack_encoder.c +68 -58
  128. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -5
  129. data/src/core/ext/transport/chttp2/transport/hpack_parser.c +327 -214
  130. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +14 -9
  131. data/src/core/ext/transport/chttp2/transport/hpack_table.c +24 -19
  132. data/src/core/ext/transport/chttp2/transport/hpack_table.h +9 -6
  133. data/src/core/ext/transport/chttp2/transport/incoming_metadata.c +2 -2
  134. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +1 -1
  135. data/src/core/ext/transport/chttp2/transport/internal.h +284 -436
  136. data/src/core/ext/transport/chttp2/transport/parsing.c +355 -590
  137. data/src/core/ext/transport/chttp2/transport/stream_lists.c +36 -309
  138. data/src/core/ext/transport/chttp2/transport/stream_map.c +13 -34
  139. data/src/core/ext/transport/chttp2/transport/stream_map.h +3 -4
  140. data/src/core/ext/transport/chttp2/transport/writing.c +174 -286
  141. data/src/core/lib/channel/channel_args.c +70 -13
  142. data/src/core/lib/channel/channel_args.h +28 -2
  143. data/src/core/lib/channel/channel_stack.c +77 -28
  144. data/src/core/lib/channel/channel_stack.h +61 -23
  145. data/src/core/lib/channel/channel_stack_builder.c +33 -25
  146. data/src/core/lib/channel/channel_stack_builder.h +17 -8
  147. data/src/core/lib/channel/compress_filter.c +52 -36
  148. data/src/core/lib/channel/connected_channel.c +20 -12
  149. data/src/core/lib/channel/connected_channel.h +2 -1
  150. data/src/core/lib/channel/context.h +13 -1
  151. data/src/core/lib/channel/deadline_filter.c +344 -0
  152. data/src/core/lib/channel/deadline_filter.h +99 -0
  153. data/src/core/lib/channel/handshaker.c +240 -0
  154. data/src/core/lib/channel/handshaker.h +164 -0
  155. data/src/core/lib/{security/credentials/google_default/credentials_windows.c → channel/handshaker_factory.c} +16 -23
  156. data/src/core/lib/channel/handshaker_factory.h +66 -0
  157. data/src/core/lib/channel/handshaker_registry.c +113 -0
  158. data/src/core/{ext/client_config/client_config.h → lib/channel/handshaker_registry.h} +26 -16
  159. data/src/core/lib/channel/http_client_filter.c +248 -46
  160. data/src/core/lib/channel/http_client_filter.h +3 -0
  161. data/src/core/lib/channel/http_server_filter.c +136 -24
  162. data/src/core/lib/channel/message_size_filter.c +261 -0
  163. data/src/core/lib/channel/message_size_filter.h +39 -0
  164. data/src/core/lib/compression/message_compress.c +43 -37
  165. data/src/core/lib/compression/message_compress.h +7 -5
  166. data/src/core/lib/http/format_request.c +26 -11
  167. data/src/core/lib/http/format_request.h +7 -5
  168. data/src/core/lib/http/httpcli.c +45 -27
  169. data/src/core/lib/http/httpcli.h +4 -4
  170. data/src/core/lib/http/httpcli_security_connector.c +56 -46
  171. data/src/core/lib/http/parser.c +17 -14
  172. data/src/core/lib/http/parser.h +4 -2
  173. data/src/core/lib/iomgr/closure.c +49 -7
  174. data/src/core/lib/iomgr/closure.h +56 -14
  175. data/src/core/lib/iomgr/combiner.c +422 -0
  176. data/src/core/lib/iomgr/combiner.h +64 -0
  177. data/src/core/lib/iomgr/endpoint.c +8 -2
  178. data/src/core/lib/iomgr/endpoint.h +17 -7
  179. data/src/core/lib/iomgr/endpoint_pair.h +3 -2
  180. data/src/core/lib/iomgr/endpoint_pair_posix.c +9 -8
  181. data/src/core/{ext/client_config/lb_policy_factory.c → lib/iomgr/endpoint_pair_uv.c} +18 -13
  182. data/src/core/lib/iomgr/endpoint_pair_windows.c +7 -6
  183. data/src/core/lib/iomgr/error.c +72 -6
  184. data/src/core/lib/iomgr/error.h +30 -3
  185. data/src/core/lib/iomgr/ev_epoll_linux.c +500 -382
  186. data/src/core/lib/iomgr/ev_epoll_linux.h +3 -2
  187. data/src/core/lib/iomgr/ev_poll_posix.c +317 -30
  188. data/src/core/lib/iomgr/ev_poll_posix.h +1 -0
  189. data/src/core/lib/iomgr/ev_posix.c +26 -5
  190. data/src/core/lib/iomgr/ev_posix.h +12 -1
  191. data/src/core/lib/iomgr/exec_ctx.c +27 -94
  192. data/src/core/lib/iomgr/exec_ctx.h +19 -22
  193. data/src/core/lib/iomgr/executor.c +29 -8
  194. data/src/core/lib/iomgr/executor.h +2 -4
  195. data/src/core/lib/iomgr/iocp_windows.c +3 -4
  196. data/src/core/lib/iomgr/iomgr.c +14 -10
  197. data/src/core/lib/iomgr/iomgr.h +6 -2
  198. data/src/core/lib/iomgr/iomgr_posix.c +2 -2
  199. data/src/core/lib/iomgr/iomgr_uv.c +49 -0
  200. data/src/core/lib/iomgr/iomgr_windows.c +2 -2
  201. data/src/core/lib/iomgr/load_file.c +3 -3
  202. data/src/core/lib/iomgr/load_file.h +2 -2
  203. data/src/core/lib/iomgr/network_status_tracker.c +1 -1
  204. data/src/core/lib/iomgr/pollset_set_uv.c +62 -0
  205. data/src/core/lib/iomgr/pollset_set_windows.c +3 -3
  206. data/src/core/lib/iomgr/pollset_uv.c +142 -0
  207. data/src/core/lib/iomgr/pollset_uv.h +42 -0
  208. data/src/core/lib/iomgr/pollset_windows.c +5 -6
  209. data/src/core/lib/iomgr/port.h +129 -0
  210. data/src/core/lib/iomgr/resolve_address.h +2 -1
  211. data/src/core/lib/iomgr/resolve_address_posix.c +14 -13
  212. data/src/core/lib/iomgr/resolve_address_uv.c +233 -0
  213. data/src/core/lib/iomgr/resolve_address_windows.c +14 -12
  214. data/src/core/lib/iomgr/resource_quota.c +832 -0
  215. data/src/core/lib/iomgr/resource_quota.h +159 -0
  216. data/src/core/lib/iomgr/sockaddr.h +10 -2
  217. data/src/core/lib/iomgr/sockaddr_utils.c +63 -36
  218. data/src/core/lib/iomgr/sockaddr_utils.h +14 -14
  219. data/src/core/lib/iomgr/socket_mutator.c +98 -0
  220. data/src/core/lib/iomgr/socket_mutator.h +80 -0
  221. data/src/core/lib/iomgr/socket_utils.h +42 -0
  222. data/src/core/lib/iomgr/socket_utils_common_posix.c +28 -13
  223. data/src/core/lib/iomgr/socket_utils_linux.c +11 -5
  224. data/src/core/lib/iomgr/socket_utils_posix.c +10 -7
  225. data/src/core/lib/iomgr/socket_utils_posix.h +11 -4
  226. data/src/core/lib/iomgr/socket_utils_uv.c +49 -0
  227. data/src/core/lib/iomgr/socket_utils_windows.c +52 -0
  228. data/src/core/lib/iomgr/socket_windows.c +14 -6
  229. data/src/core/lib/iomgr/socket_windows.h +1 -0
  230. data/src/core/lib/iomgr/tcp_client.h +8 -2
  231. data/src/core/lib/iomgr/tcp_client_posix.c +131 -82
  232. data/src/core/lib/iomgr/tcp_client_posix.h +45 -0
  233. data/src/core/lib/iomgr/tcp_client_uv.c +190 -0
  234. data/src/core/lib/iomgr/tcp_client_windows.c +54 -30
  235. data/src/core/lib/iomgr/tcp_posix.c +135 -56
  236. data/src/core/lib/iomgr/tcp_posix.h +2 -2
  237. data/src/core/lib/iomgr/tcp_server.h +14 -6
  238. data/src/core/lib/iomgr/tcp_server_posix.c +154 -118
  239. data/src/core/lib/iomgr/tcp_server_uv.c +388 -0
  240. data/src/core/lib/iomgr/tcp_server_windows.c +127 -100
  241. data/src/core/lib/iomgr/tcp_uv.c +367 -0
  242. data/src/core/lib/iomgr/tcp_uv.h +59 -0
  243. data/src/core/lib/iomgr/tcp_windows.c +65 -48
  244. data/src/core/lib/iomgr/tcp_windows.h +3 -1
  245. data/src/core/lib/iomgr/timer.h +21 -21
  246. data/src/core/lib/iomgr/{timer.c → timer_generic.c} +15 -10
  247. data/src/core/lib/iomgr/timer_generic.h +49 -0
  248. data/src/core/lib/iomgr/timer_heap.c +6 -0
  249. data/src/core/lib/iomgr/timer_uv.c +99 -0
  250. data/src/core/lib/iomgr/timer_uv.h +47 -0
  251. data/src/core/lib/iomgr/udp_server.c +116 -98
  252. data/src/core/lib/iomgr/udp_server.h +5 -3
  253. data/src/core/lib/iomgr/unix_sockets_posix.c +14 -6
  254. data/src/core/lib/iomgr/unix_sockets_posix.h +6 -5
  255. data/src/core/lib/iomgr/unix_sockets_posix_noop.c +4 -4
  256. data/src/core/lib/iomgr/wakeup_fd_cv.c +118 -0
  257. data/src/core/lib/iomgr/wakeup_fd_cv.h +80 -0
  258. data/src/core/lib/iomgr/wakeup_fd_eventfd.c +3 -3
  259. data/src/core/lib/iomgr/wakeup_fd_nospecial.c +3 -3
  260. data/src/core/lib/iomgr/wakeup_fd_pipe.c +12 -6
  261. data/src/core/lib/iomgr/wakeup_fd_posix.c +34 -5
  262. data/src/core/lib/iomgr/wakeup_fd_posix.h +5 -0
  263. data/src/core/lib/iomgr/workqueue.h +12 -20
  264. data/src/core/{ext/client_config/client_config.c → lib/iomgr/workqueue_uv.c} +24 -33
  265. data/{include/grpc/support/slice.h → src/core/lib/iomgr/workqueue_uv.h} +4 -6
  266. data/src/core/lib/iomgr/workqueue_windows.c +9 -8
  267. data/src/core/lib/json/json.c +3 -3
  268. data/src/core/lib/json/json.h +11 -11
  269. data/src/core/lib/json/json_reader.c +9 -5
  270. data/src/core/lib/profiling/basic_timers.c +10 -1
  271. data/src/core/lib/profiling/timers.h +2 -0
  272. data/src/core/lib/security/context/security_context.c +13 -3
  273. data/src/core/lib/security/context/security_context.h +20 -0
  274. data/src/core/lib/security/credentials/composite/composite_credentials.c +28 -14
  275. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  276. data/src/core/lib/security/credentials/credentials.c +48 -19
  277. data/src/core/lib/security/credentials/credentials.h +36 -19
  278. data/src/core/lib/security/credentials/credentials_metadata.c +11 -8
  279. data/src/core/lib/security/credentials/fake/fake_credentials.c +15 -11
  280. data/src/core/lib/security/credentials/google_default/{credentials_posix.c → credentials_generic.c} +7 -14
  281. data/src/core/lib/security/credentials/google_default/google_default_credentials.c +33 -21
  282. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +14 -0
  283. data/src/core/lib/security/credentials/iam/iam_credentials.c +3 -2
  284. data/src/core/lib/security/credentials/jwt/json_token.c +1 -0
  285. data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
  286. data/src/core/lib/security/credentials/jwt/jwt_credentials.c +54 -19
  287. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -1
  288. data/src/core/lib/security/credentials/jwt/jwt_verifier.c +129 -79
  289. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +9 -6
  290. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.c +63 -28
  291. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  292. data/src/core/lib/security/credentials/plugin/plugin_credentials.c +32 -11
  293. data/src/core/lib/security/credentials/ssl/ssl_credentials.c +13 -9
  294. data/src/core/lib/security/transport/client_auth_filter.c +33 -27
  295. data/src/core/lib/security/transport/secure_endpoint.c +93 -68
  296. data/src/core/lib/security/transport/secure_endpoint.h +2 -2
  297. data/src/core/lib/security/transport/security_connector.c +133 -168
  298. data/src/core/lib/security/transport/security_connector.h +31 -46
  299. data/src/core/lib/security/transport/security_handshaker.c +501 -0
  300. data/src/core/lib/security/transport/{handshake.h → security_handshaker.h} +10 -10
  301. data/src/core/lib/security/transport/server_auth_filter.c +50 -38
  302. data/src/core/lib/security/util/b64.c +11 -8
  303. data/src/core/lib/security/util/b64.h +5 -4
  304. data/src/core/lib/slice/percent_encoding.c +182 -0
  305. data/src/core/lib/slice/percent_encoding.h +78 -0
  306. data/src/core/lib/{support → slice}/slice.c +81 -50
  307. data/src/core/lib/{support → slice}/slice_buffer.c +78 -60
  308. data/src/core/lib/slice/slice_internal.h +49 -0
  309. data/src/core/lib/slice/slice_string_helpers.c +90 -0
  310. data/src/core/lib/{iomgr/workqueue_posix.h → slice/slice_string_helpers.h} +18 -18
  311. data/src/core/lib/support/backoff.c +24 -13
  312. data/src/core/lib/support/backoff.h +5 -2
  313. data/src/core/lib/support/env.h +0 -2
  314. data/src/core/lib/support/log.c +5 -4
  315. data/src/core/lib/support/log_linux.c +0 -1
  316. data/src/core/lib/support/log_posix.c +1 -1
  317. data/src/core/lib/support/mpscq.c +83 -0
  318. data/src/core/lib/support/mpscq.h +65 -0
  319. data/src/core/lib/support/string.c +58 -49
  320. data/src/core/lib/support/string.h +11 -8
  321. data/src/core/lib/support/subprocess_posix.c +5 -2
  322. data/src/core/lib/support/thd.c +1 -1
  323. data/src/core/lib/support/time.c +43 -79
  324. data/src/core/lib/support/time_posix.c +1 -1
  325. data/src/core/lib/support/tmpfile.h +0 -2
  326. data/src/core/lib/surface/alarm.c +4 -1
  327. data/src/core/lib/surface/byte_buffer.c +17 -11
  328. data/src/core/lib/surface/byte_buffer_reader.c +23 -15
  329. data/src/core/lib/surface/call.c +294 -276
  330. data/src/core/lib/surface/call.h +24 -9
  331. data/src/core/lib/surface/call_log_batch.c +5 -3
  332. data/src/core/lib/surface/channel.c +127 -111
  333. data/src/core/lib/surface/channel.h +14 -5
  334. data/src/core/lib/surface/channel_init.c +1 -1
  335. data/src/core/lib/surface/channel_init.h +10 -1
  336. data/src/core/lib/surface/channel_ping.c +7 -6
  337. data/src/core/lib/surface/completion_queue.c +154 -18
  338. data/src/core/lib/surface/completion_queue.h +5 -0
  339. data/src/core/lib/surface/init.c +40 -6
  340. data/src/core/lib/surface/init.h +1 -0
  341. data/src/core/lib/surface/init_secure.c +5 -2
  342. data/src/core/lib/surface/lame_client.c +28 -18
  343. data/src/core/lib/surface/server.c +134 -87
  344. data/src/core/lib/surface/server.h +8 -0
  345. data/src/core/lib/surface/validate_metadata.c +1 -1
  346. data/src/core/lib/surface/version.c +3 -1
  347. data/src/core/lib/transport/byte_stream.c +7 -4
  348. data/src/core/lib/transport/byte_stream.h +6 -10
  349. data/src/core/lib/transport/connectivity_state.c +21 -12
  350. data/src/core/lib/transport/connectivity_state.h +4 -1
  351. data/src/core/lib/transport/mdstr_hash_table.c +118 -0
  352. data/src/core/lib/transport/mdstr_hash_table.h +77 -0
  353. data/src/core/lib/transport/metadata.c +83 -60
  354. data/src/core/lib/transport/metadata.h +41 -23
  355. data/src/core/lib/transport/metadata_batch.c +17 -11
  356. data/src/core/lib/transport/metadata_batch.h +20 -6
  357. data/src/core/lib/transport/pid_controller.c +57 -0
  358. data/src/core/lib/transport/pid_controller.h +64 -0
  359. data/src/core/lib/transport/service_config.c +251 -0
  360. data/src/core/lib/transport/service_config.h +71 -0
  361. data/src/core/lib/transport/static_metadata.c +18 -16
  362. data/src/core/lib/transport/static_metadata.h +113 -107
  363. data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.c +3 -3
  364. data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.h +7 -7
  365. data/src/core/lib/transport/transport.c +84 -23
  366. data/src/core/lib/transport/transport.h +53 -8
  367. data/src/core/lib/transport/transport_impl.h +3 -0
  368. data/src/core/lib/transport/transport_op_string.c +92 -20
  369. data/src/core/lib/tsi/ssl_transport_security.c +3 -1
  370. data/src/core/plugin_registry/grpc_plugin_registry.c +8 -4
  371. data/src/ruby/ext/grpc/extconf.rb +0 -1
  372. data/src/ruby/ext/grpc/rb_byte_buffer.c +8 -7
  373. data/src/ruby/ext/grpc/rb_call.c +15 -5
  374. data/src/ruby/ext/grpc/rb_channel.c +1 -1
  375. data/src/ruby/ext/grpc/rb_compression_options.c +466 -0
  376. data/src/{core/ext/client_config/default_initial_connect_string.c → ruby/ext/grpc/rb_compression_options.h} +10 -5
  377. data/src/ruby/ext/grpc/rb_grpc.c +3 -1
  378. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +198 -190
  379. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +306 -294
  380. data/src/ruby/ext/grpc/rb_server.c +18 -12
  381. data/src/ruby/lib/grpc/errors.rb +154 -2
  382. data/src/ruby/lib/grpc/generic/active_call.rb +144 -63
  383. data/src/ruby/lib/grpc/generic/bidi_call.rb +18 -2
  384. data/src/ruby/lib/grpc/generic/client_stub.rb +7 -5
  385. data/src/ruby/lib/grpc/generic/rpc_desc.rb +39 -13
  386. data/src/ruby/lib/grpc/generic/rpc_server.rb +51 -24
  387. data/src/ruby/lib/grpc/generic/service.rb +3 -2
  388. data/src/ruby/lib/grpc/version.rb +1 -1
  389. data/src/ruby/pb/grpc/health/checker.rb +3 -1
  390. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +7 -0
  391. data/src/ruby/pb/test/client.rb +307 -7
  392. data/src/ruby/pb/test/server.rb +26 -1
  393. data/src/ruby/spec/compression_options_spec.rb +164 -0
  394. data/src/ruby/spec/error_sanity_spec.rb +64 -0
  395. data/src/ruby/spec/generic/active_call_spec.rb +290 -12
  396. data/src/ruby/spec/generic/client_stub_spec.rb +91 -41
  397. data/src/ruby/spec/generic/rpc_desc_spec.rb +36 -16
  398. data/src/ruby/spec/generic/rpc_server_pool_spec.rb +22 -28
  399. data/src/ruby/spec/generic/rpc_server_spec.rb +6 -6
  400. data/src/ruby/spec/pb/health/checker_spec.rb +27 -19
  401. data/src/ruby/spec/spec_helper.rb +2 -0
  402. data/third_party/boringssl/crypto/aes/aes.c +12 -12
  403. data/third_party/boringssl/crypto/aes/mode_wrappers.c +6 -2
  404. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +28 -13
  405. data/third_party/boringssl/crypto/asn1/a_gentm.c +2 -0
  406. data/third_party/boringssl/crypto/asn1/a_object.c +7 -3
  407. data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
  408. data/third_party/boringssl/crypto/asn1/a_time.c +0 -11
  409. data/third_party/boringssl/crypto/asn1/a_type.c +0 -2
  410. data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -30
  411. data/third_party/boringssl/crypto/asn1/asn1_lib.c +56 -76
  412. data/third_party/boringssl/crypto/asn1/asn1_locl.h +0 -10
  413. data/third_party/boringssl/crypto/asn1/asn1_par.c +0 -322
  414. data/third_party/boringssl/crypto/asn1/f_enum.c +1 -108
  415. data/third_party/boringssl/crypto/asn1/f_int.c +1 -106
  416. data/third_party/boringssl/crypto/asn1/f_string.c +1 -106
  417. data/third_party/boringssl/crypto/asn1/tasn_dec.c +10 -14
  418. data/third_party/boringssl/crypto/asn1/tasn_enc.c +17 -11
  419. data/third_party/boringssl/crypto/asn1/tasn_typ.c +29 -42
  420. data/third_party/boringssl/crypto/asn1/tasn_utl.c +1 -1
  421. data/third_party/boringssl/crypto/base64/base64.c +249 -285
  422. data/third_party/boringssl/crypto/bio/bio.c +13 -23
  423. data/third_party/boringssl/crypto/bio/bio_mem.c +3 -2
  424. data/third_party/boringssl/crypto/bio/connect.c +12 -3
  425. data/third_party/boringssl/crypto/bio/fd.c +22 -15
  426. data/third_party/boringssl/crypto/bio/file.c +2 -38
  427. data/third_party/boringssl/crypto/bio/hexdump.c +1 -2
  428. data/third_party/boringssl/crypto/bio/internal.h +3 -0
  429. data/third_party/boringssl/crypto/bio/pair.c +1 -1
  430. data/third_party/boringssl/crypto/bio/socket.c +10 -2
  431. data/third_party/boringssl/crypto/bio/socket_helper.c +2 -2
  432. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -8
  433. data/third_party/boringssl/crypto/bn/bn.c +38 -0
  434. data/third_party/boringssl/crypto/bn/cmp.c +25 -0
  435. data/third_party/boringssl/crypto/bn/convert.c +73 -76
  436. data/third_party/boringssl/crypto/bn/div.c +136 -70
  437. data/third_party/boringssl/crypto/bn/exponentiation.c +86 -381
  438. data/third_party/boringssl/crypto/bn/gcd.c +213 -296
  439. data/third_party/boringssl/crypto/bn/generic.c +0 -80
  440. data/third_party/boringssl/crypto/bn/internal.h +15 -3
  441. data/third_party/boringssl/crypto/bn/montgomery.c +57 -207
  442. data/third_party/boringssl/crypto/bn/montgomery_inv.c +160 -0
  443. data/third_party/boringssl/crypto/bn/mul.c +2 -1
  444. data/third_party/boringssl/crypto/bn/prime.c +24 -8
  445. data/third_party/boringssl/crypto/bn/random.c +47 -33
  446. data/third_party/boringssl/crypto/bn/sqrt.c +4 -5
  447. data/third_party/boringssl/crypto/buf/buf.c +25 -21
  448. data/third_party/boringssl/crypto/bytestring/ber.c +1 -0
  449. data/third_party/boringssl/crypto/bytestring/cbb.c +50 -22
  450. data/third_party/boringssl/crypto/bytestring/cbs.c +28 -4
  451. data/third_party/boringssl/crypto/chacha/{chacha_generic.c → chacha.c} +56 -29
  452. data/third_party/boringssl/crypto/cipher/aead.c +11 -22
  453. data/third_party/boringssl/crypto/cipher/cipher.c +2 -2
  454. data/third_party/boringssl/crypto/cipher/e_aes.c +53 -103
  455. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +2 -8
  456. data/third_party/boringssl/crypto/cipher/e_des.c +3 -5
  457. data/third_party/boringssl/crypto/cipher/e_null.c +1 -1
  458. data/third_party/boringssl/crypto/cipher/e_rc2.c +1 -1
  459. data/third_party/boringssl/crypto/cipher/e_rc4.c +1 -1
  460. data/third_party/boringssl/crypto/cipher/e_ssl3.c +3 -63
  461. data/third_party/boringssl/crypto/cipher/e_tls.c +12 -83
  462. data/third_party/boringssl/crypto/cipher/internal.h +8 -10
  463. data/third_party/boringssl/crypto/cipher/tls_cbc.c +69 -40
  464. data/third_party/boringssl/crypto/conf/conf.c +2 -1
  465. data/third_party/boringssl/crypto/cpu-aarch64-linux.c +61 -0
  466. data/third_party/boringssl/crypto/cpu-arm-linux.c +360 -0
  467. data/third_party/boringssl/crypto/cpu-arm.c +0 -161
  468. data/third_party/boringssl/crypto/cpu-intel.c +5 -3
  469. data/third_party/boringssl/{ssl/test/scoped_types.h → crypto/cpu-ppc64le.c} +21 -9
  470. data/third_party/boringssl/crypto/crypto.c +29 -7
  471. data/third_party/boringssl/crypto/curve25519/curve25519.c +284 -242
  472. data/third_party/boringssl/crypto/curve25519/internal.h +64 -0
  473. data/third_party/boringssl/crypto/curve25519/spake25519.c +464 -0
  474. data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +21 -0
  475. data/third_party/boringssl/crypto/dh/check.c +22 -6
  476. data/third_party/boringssl/crypto/dh/dh.c +45 -21
  477. data/third_party/boringssl/crypto/dh/dh_asn1.c +96 -20
  478. data/third_party/boringssl/crypto/dh/params.c +30 -78
  479. data/third_party/boringssl/crypto/digest/digest.c +3 -3
  480. data/third_party/boringssl/crypto/dsa/dsa.c +59 -29
  481. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +4 -0
  482. data/third_party/boringssl/crypto/ec/ec.c +84 -140
  483. data/third_party/boringssl/crypto/ec/ec_asn1.c +82 -52
  484. data/third_party/boringssl/crypto/ec/ec_key.c +15 -15
  485. data/third_party/boringssl/crypto/ec/ec_montgomery.c +87 -50
  486. data/third_party/boringssl/crypto/ec/internal.h +12 -36
  487. data/third_party/boringssl/crypto/ec/oct.c +11 -11
  488. data/third_party/boringssl/crypto/ec/p224-64.c +59 -116
  489. data/third_party/boringssl/crypto/ec/p256-64.c +88 -163
  490. data/third_party/boringssl/crypto/ec/p256-x86_64.c +46 -58
  491. data/third_party/boringssl/crypto/ec/simple.c +81 -201
  492. data/third_party/boringssl/crypto/ec/util-64.c +0 -74
  493. data/third_party/boringssl/crypto/ecdh/ecdh.c +7 -1
  494. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +28 -46
  495. data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +1 -0
  496. data/third_party/boringssl/crypto/engine/engine.c +1 -1
  497. data/third_party/boringssl/crypto/err/err.c +3 -3
  498. data/third_party/boringssl/crypto/evp/evp.c +14 -59
  499. data/third_party/boringssl/crypto/evp/evp_asn1.c +144 -87
  500. data/third_party/boringssl/crypto/evp/evp_ctx.c +7 -7
  501. data/third_party/boringssl/crypto/evp/internal.h +4 -46
  502. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +8 -157
  503. data/third_party/boringssl/crypto/evp/p_ec.c +1 -1
  504. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +22 -170
  505. data/third_party/boringssl/crypto/evp/p_rsa.c +1 -1
  506. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +10 -548
  507. data/third_party/boringssl/crypto/evp/print.c +520 -0
  508. data/third_party/boringssl/crypto/ex_data.c +4 -6
  509. data/third_party/boringssl/crypto/hkdf/hkdf.c +38 -17
  510. data/third_party/boringssl/crypto/hmac/hmac.c +6 -6
  511. data/third_party/boringssl/crypto/internal.h +57 -77
  512. data/third_party/boringssl/crypto/lhash/lhash.c +6 -10
  513. data/third_party/boringssl/crypto/md4/md4.c +9 -0
  514. data/third_party/boringssl/crypto/mem.c +19 -19
  515. data/third_party/boringssl/crypto/modes/cfb.c +5 -6
  516. data/third_party/boringssl/crypto/modes/ctr.c +10 -18
  517. data/third_party/boringssl/crypto/modes/gcm.c +100 -66
  518. data/third_party/boringssl/crypto/modes/internal.h +15 -27
  519. data/third_party/boringssl/crypto/modes/ofb.c +9 -22
  520. data/third_party/boringssl/crypto/newhope/error_correction.c +131 -0
  521. data/third_party/boringssl/crypto/newhope/internal.h +71 -0
  522. data/third_party/boringssl/crypto/newhope/newhope.c +174 -0
  523. data/third_party/boringssl/crypto/newhope/ntt.c +148 -0
  524. data/third_party/boringssl/crypto/newhope/poly.c +183 -0
  525. data/third_party/boringssl/crypto/newhope/precomp.c +306 -0
  526. data/third_party/boringssl/crypto/newhope/reduce.c +42 -0
  527. data/third_party/boringssl/crypto/obj/obj.c +111 -135
  528. data/third_party/boringssl/crypto/obj/obj_dat.h +4 -10
  529. data/third_party/boringssl/crypto/pem/pem_lib.c +6 -43
  530. data/third_party/boringssl/crypto/pem/pem_pkey.c +10 -19
  531. data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +1 -0
  532. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +2 -1
  533. data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +2 -2
  534. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +95 -87
  535. data/third_party/boringssl/crypto/{test/test_util.h → poly1305/internal.h} +15 -10
  536. data/third_party/boringssl/crypto/poly1305/poly1305.c +8 -15
  537. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +1 -0
  538. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +3 -3
  539. data/third_party/boringssl/crypto/rand/deterministic.c +47 -0
  540. data/third_party/boringssl/crypto/rand/rand.c +4 -1
  541. data/third_party/boringssl/crypto/rand/urandom.c +5 -7
  542. data/third_party/boringssl/crypto/rand/windows.c +5 -8
  543. data/third_party/boringssl/crypto/rc4/rc4.c +24 -209
  544. data/third_party/boringssl/crypto/refcount_lock.c +2 -2
  545. data/third_party/boringssl/crypto/rsa/blinding.c +74 -232
  546. data/third_party/boringssl/crypto/rsa/internal.h +5 -13
  547. data/third_party/boringssl/crypto/rsa/padding.c +64 -63
  548. data/third_party/boringssl/crypto/rsa/rsa.c +50 -28
  549. data/third_party/boringssl/crypto/rsa/rsa_asn1.c +8 -16
  550. data/third_party/boringssl/crypto/rsa/rsa_impl.c +134 -122
  551. data/third_party/boringssl/crypto/sha/sha256.c +2 -2
  552. data/third_party/boringssl/crypto/sha/sha512.c +7 -7
  553. data/third_party/boringssl/crypto/stack/stack.c +13 -22
  554. data/third_party/boringssl/crypto/thread.c +21 -12
  555. data/third_party/boringssl/crypto/thread_none.c +6 -2
  556. data/third_party/boringssl/crypto/thread_pthread.c +16 -7
  557. data/third_party/boringssl/crypto/thread_win.c +38 -85
  558. data/third_party/boringssl/crypto/x509/a_sign.c +3 -3
  559. data/third_party/boringssl/crypto/x509/a_strex.c +1 -1
  560. data/third_party/boringssl/crypto/x509/a_verify.c +2 -2
  561. data/third_party/boringssl/crypto/{evp → x509}/algorithm.c +37 -53
  562. data/third_party/boringssl/crypto/x509/asn1_gen.c +1 -2
  563. data/third_party/boringssl/crypto/x509/by_dir.c +6 -6
  564. data/third_party/boringssl/crypto/x509/internal.h +66 -0
  565. data/third_party/boringssl/crypto/x509/rsa_pss.c +385 -0
  566. data/third_party/boringssl/crypto/x509/t_x509.c +10 -12
  567. data/third_party/boringssl/crypto/x509/x509.c +5 -0
  568. data/third_party/boringssl/crypto/x509/x509_att.c +9 -3
  569. data/third_party/boringssl/crypto/x509/x509_lu.c +34 -44
  570. data/third_party/boringssl/crypto/x509/x509_obj.c +19 -2
  571. data/third_party/boringssl/crypto/x509/x509_r2x.c +9 -5
  572. data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
  573. data/third_party/boringssl/crypto/x509/x509_txt.c +5 -0
  574. data/third_party/boringssl/crypto/x509/x509_vfy.c +63 -32
  575. data/third_party/boringssl/crypto/x509/x509_vpm.c +29 -18
  576. data/third_party/boringssl/crypto/x509/x509cset.c +2 -1
  577. data/third_party/boringssl/crypto/x509/x_crl.c +2 -2
  578. data/third_party/boringssl/crypto/x509/x_name.c +14 -17
  579. data/third_party/boringssl/crypto/x509/x_pubkey.c +10 -7
  580. data/third_party/boringssl/crypto/x509/x_x509.c +67 -6
  581. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -2
  582. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +2 -1
  583. data/third_party/boringssl/crypto/x509v3/v3_conf.c +4 -3
  584. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +5 -0
  585. data/third_party/boringssl/crypto/x509v3/v3_prn.c +0 -3
  586. data/third_party/boringssl/crypto/x509v3/v3_purp.c +2 -2
  587. data/third_party/boringssl/crypto/x509v3/v3_utl.c +2 -1
  588. data/third_party/boringssl/include/openssl/aead.h +72 -73
  589. data/third_party/boringssl/include/openssl/arm_arch.h +0 -6
  590. data/third_party/boringssl/include/openssl/asn1.h +103 -235
  591. data/third_party/boringssl/include/openssl/asn1_mac.h +17 -74
  592. data/third_party/boringssl/include/openssl/asn1t.h +1 -11
  593. data/third_party/boringssl/include/openssl/base.h +145 -3
  594. data/third_party/boringssl/include/openssl/base64.h +20 -17
  595. data/third_party/boringssl/include/openssl/bio.h +59 -34
  596. data/third_party/boringssl/include/openssl/bn.h +118 -51
  597. data/third_party/boringssl/include/openssl/buf.h +15 -0
  598. data/third_party/boringssl/include/openssl/bytestring.h +52 -4
  599. data/third_party/boringssl/include/openssl/chacha.h +2 -2
  600. data/third_party/boringssl/include/openssl/cipher.h +18 -1
  601. data/third_party/boringssl/include/openssl/cmac.h +11 -0
  602. data/third_party/boringssl/include/openssl/conf.h +13 -2
  603. data/third_party/boringssl/include/openssl/cpu.h +20 -23
  604. data/third_party/boringssl/include/openssl/crypto.h +22 -1
  605. data/third_party/boringssl/include/openssl/curve25519.h +96 -4
  606. data/third_party/boringssl/include/openssl/dh.h +71 -16
  607. data/third_party/boringssl/include/openssl/digest.h +38 -11
  608. data/third_party/boringssl/include/openssl/dsa.h +40 -4
  609. data/third_party/boringssl/include/openssl/ec.h +44 -18
  610. data/third_party/boringssl/include/openssl/ec_key.h +27 -6
  611. data/third_party/boringssl/include/openssl/ecdsa.h +11 -0
  612. data/third_party/boringssl/include/openssl/engine.h +11 -0
  613. data/third_party/boringssl/include/openssl/evp.h +52 -88
  614. data/third_party/boringssl/include/openssl/hkdf.h +24 -4
  615. data/third_party/boringssl/include/openssl/hmac.h +20 -6
  616. data/third_party/boringssl/include/openssl/md4.h +4 -0
  617. data/third_party/boringssl/include/openssl/mem.h +19 -0
  618. data/third_party/boringssl/include/openssl/newhope.h +158 -0
  619. data/third_party/boringssl/include/openssl/nid.h +4166 -0
  620. data/third_party/boringssl/include/openssl/obj.h +31 -3
  621. data/third_party/boringssl/include/openssl/obj_mac.h +17 -4143
  622. data/third_party/boringssl/include/openssl/{opensslfeatures.h → opensslconf.h} +3 -3
  623. data/third_party/boringssl/include/openssl/pem.h +5 -0
  624. data/third_party/boringssl/include/openssl/pkcs8.h +12 -0
  625. data/third_party/boringssl/include/openssl/rand.h +6 -0
  626. data/third_party/boringssl/include/openssl/rc4.h +6 -0
  627. data/third_party/boringssl/{crypto/dh/internal.h → include/openssl/ripemd.h} +38 -11
  628. data/third_party/boringssl/include/openssl/rsa.h +127 -65
  629. data/third_party/boringssl/include/openssl/sha.h +14 -10
  630. data/third_party/boringssl/include/openssl/ssl.h +561 -275
  631. data/third_party/boringssl/include/openssl/ssl3.h +18 -25
  632. data/third_party/boringssl/include/openssl/stack.h +2 -4
  633. data/third_party/boringssl/include/openssl/stack_macros.h +321 -353
  634. data/third_party/boringssl/include/openssl/thread.h +31 -13
  635. data/third_party/boringssl/include/openssl/time_support.h +1 -0
  636. data/third_party/boringssl/include/openssl/tls1.h +37 -33
  637. data/third_party/boringssl/include/openssl/x509.h +69 -26
  638. data/third_party/boringssl/include/openssl/x509_vfy.h +12 -10
  639. data/third_party/boringssl/include/openssl/x509v3.h +23 -2
  640. data/third_party/boringssl/ssl/custom_extensions.c +3 -5
  641. data/third_party/boringssl/ssl/d1_both.c +463 -499
  642. data/third_party/boringssl/ssl/d1_lib.c +38 -109
  643. data/third_party/boringssl/ssl/d1_pkt.c +173 -334
  644. data/third_party/boringssl/ssl/d1_srtp.c +20 -18
  645. data/third_party/boringssl/ssl/{d1_meth.c → dtls_method.c} +88 -15
  646. data/third_party/boringssl/ssl/dtls_record.c +27 -26
  647. data/third_party/boringssl/ssl/{s3_clnt.c → handshake_client.c} +816 -904
  648. data/third_party/boringssl/ssl/handshake_server.c +1932 -0
  649. data/third_party/boringssl/ssl/internal.h +712 -439
  650. data/third_party/boringssl/ssl/s3_both.c +445 -257
  651. data/third_party/boringssl/ssl/s3_enc.c +53 -36
  652. data/third_party/boringssl/ssl/s3_lib.c +23 -268
  653. data/third_party/boringssl/ssl/s3_pkt.c +168 -364
  654. data/third_party/boringssl/ssl/ssl_aead_ctx.c +46 -17
  655. data/third_party/boringssl/ssl/ssl_asn1.c +56 -26
  656. data/third_party/boringssl/ssl/ssl_buffer.c +16 -24
  657. data/third_party/boringssl/ssl/ssl_cert.c +324 -49
  658. data/third_party/boringssl/ssl/ssl_cipher.c +205 -150
  659. data/third_party/boringssl/ssl/ssl_ecdh.c +287 -51
  660. data/third_party/boringssl/ssl/ssl_file.c +21 -68
  661. data/third_party/boringssl/ssl/ssl_lib.c +881 -510
  662. data/third_party/boringssl/ssl/ssl_rsa.c +404 -34
  663. data/third_party/boringssl/ssl/ssl_session.c +324 -103
  664. data/third_party/boringssl/ssl/ssl_stat.c +6 -88
  665. data/third_party/boringssl/ssl/t1_enc.c +23 -39
  666. data/third_party/boringssl/ssl/t1_lib.c +1120 -622
  667. data/third_party/boringssl/ssl/tls13_both.c +440 -0
  668. data/third_party/boringssl/ssl/tls13_client.c +682 -0
  669. data/third_party/boringssl/ssl/tls13_enc.c +391 -0
  670. data/third_party/boringssl/ssl/tls13_server.c +672 -0
  671. data/third_party/boringssl/ssl/{s3_meth.c → tls_method.c} +100 -21
  672. data/third_party/boringssl/ssl/tls_record.c +159 -77
  673. data/third_party/nanopb/pb.h +60 -28
  674. data/third_party/nanopb/pb_decode.c +120 -92
  675. data/third_party/nanopb/pb_decode.h +3 -3
  676. data/third_party/nanopb/pb_encode.c +73 -67
  677. data/third_party/nanopb/pb_encode.h +4 -4
  678. metadata +155 -89
  679. data/include/grpc/impl/codegen/byte_buffer.h +0 -122
  680. data/include/grpc/impl/codegen/log.h +0 -118
  681. data/include/grpc/impl/codegen/time.h +0 -130
  682. data/src/core/ext/client_config/client_channel.c +0 -593
  683. data/src/core/ext/client_config/subchannel_call_holder.c +0 -272
  684. data/src/core/ext/client_config/subchannel_call_holder.h +0 -99
  685. data/src/core/lib/iomgr/ev_poll_and_epoll_posix.c +0 -2046
  686. data/src/core/lib/iomgr/workqueue_posix.c +0 -151
  687. data/src/core/lib/security/transport/handshake.c +0 -368
  688. data/third_party/boringssl/crypto/asn1/a_bytes.c +0 -308
  689. data/third_party/boringssl/crypto/asn1/bio_asn1.c +0 -477
  690. data/third_party/boringssl/crypto/asn1/bio_ndef.c +0 -251
  691. data/third_party/boringssl/crypto/asn1/t_pkey.c +0 -110
  692. data/third_party/boringssl/crypto/asn1/tasn_prn.c +0 -596
  693. data/third_party/boringssl/crypto/chacha/chacha_vec.c +0 -328
  694. data/third_party/boringssl/crypto/directory.h +0 -66
  695. data/third_party/boringssl/crypto/directory_posix.c +0 -108
  696. data/third_party/boringssl/crypto/directory_win.c +0 -144
  697. data/third_party/boringssl/crypto/test/scoped_types.h +0 -140
  698. data/third_party/boringssl/include/openssl/pqueue.h +0 -146
  699. data/third_party/boringssl/ssl/d1_clnt.c +0 -561
  700. data/third_party/boringssl/ssl/d1_srvr.c +0 -476
  701. data/third_party/boringssl/ssl/pqueue/pqueue.c +0 -197
  702. data/third_party/boringssl/ssl/s3_srvr.c +0 -2272
  703. data/third_party/boringssl/ssl/test/async_bio.h +0 -45
  704. data/third_party/boringssl/ssl/test/packeted_bio.h +0 -44
  705. data/third_party/boringssl/ssl/test/test_config.h +0 -110
@@ -67,14 +67,15 @@ extern "C" {
67
67
 
68
68
 
69
69
  #if defined(OPENSSL_NO_THREADS)
70
- typedef struct crypto_mutex_st {} CRYPTO_MUTEX;
70
+ typedef struct crypto_mutex_st {
71
+ char padding; /* Empty structs have different sizes in C and C++. */
72
+ } CRYPTO_MUTEX;
71
73
  #elif defined(OPENSSL_WINDOWS)
72
74
  /* CRYPTO_MUTEX can appear in public header files so we really don't want to
73
75
  * pull in windows.h. It's statically asserted that this structure is large
74
- * enough to contain a Windows CRITICAL_SECTION by thread_win.c. */
76
+ * enough to contain a Windows SRWLOCK by thread_win.c. */
75
77
  typedef union crypto_mutex_st {
76
- double alignment;
77
- uint8_t padding[4*sizeof(void*) + 2*sizeof(int)];
78
+ void *handle;
78
79
  } CRYPTO_MUTEX;
79
80
  #elif defined(__MACH__) && defined(__APPLE__)
80
81
  typedef pthread_rwlock_t CRYPTO_MUTEX;
@@ -100,7 +101,11 @@ typedef union crypto_mutex_st {
100
101
  typedef uint32_t CRYPTO_refcount_t;
101
102
 
102
103
 
103
- /* Deprecated functions */
104
+ /* Deprecated functions.
105
+ *
106
+ * Historically, OpenSSL required callers to provide locking callbacks.
107
+ * BoringSSL is thread-safe by default, but some old code calls these functions
108
+ * and so no-op implementations are provided. */
104
109
 
105
110
  /* These defines do nothing but are provided to make old code easier to
106
111
  * compile. */
@@ -122,6 +127,11 @@ OPENSSL_EXPORT void CRYPTO_set_locking_callback(
122
127
  OPENSSL_EXPORT void CRYPTO_set_add_lock_callback(int (*func)(
123
128
  int *num, int amount, int lock_num, const char *file, int line));
124
129
 
130
+ /* CRYPTO_get_locking_callback returns NULL. */
131
+ OPENSSL_EXPORT void (*CRYPTO_get_locking_callback(void))(int mode, int lock_num,
132
+ const char *file,
133
+ int line);
134
+
125
135
  /* CRYPTO_get_lock_name returns a fixed, dummy string. */
126
136
  OPENSSL_EXPORT const char *CRYPTO_get_lock_name(int lock_num);
127
137
 
@@ -139,14 +149,7 @@ OPENSSL_EXPORT void CRYPTO_THREADID_set_pointer(CRYPTO_THREADID *id, void *ptr);
139
149
  /* CRYPTO_THREADID_current does nothing. */
140
150
  OPENSSL_EXPORT void CRYPTO_THREADID_current(CRYPTO_THREADID *id);
141
151
 
142
-
143
- /* Private functions.
144
- *
145
- * Some old code calls these functions and so no-op implementations are
146
- * provided.
147
- *
148
- * TODO(fork): cleanup callers and remove. */
149
-
152
+ /* CRYPTO_set_id_callback does nothing. */
150
153
  OPENSSL_EXPORT void CRYPTO_set_id_callback(unsigned long (*func)(void));
151
154
 
152
155
  typedef struct {
@@ -154,17 +157,32 @@ typedef struct {
154
157
  struct CRYPTO_dynlock_value *data;
155
158
  } CRYPTO_dynlock;
156
159
 
160
+ /* CRYPTO_set_dynlock_create_callback does nothing. */
157
161
  OPENSSL_EXPORT void CRYPTO_set_dynlock_create_callback(
158
162
  struct CRYPTO_dynlock_value *(*dyn_create_function)(const char *file,
159
163
  int line));
160
164
 
165
+ /* CRYPTO_set_dynlock_lock_callback does nothing. */
161
166
  OPENSSL_EXPORT void CRYPTO_set_dynlock_lock_callback(void (*dyn_lock_function)(
162
167
  int mode, struct CRYPTO_dynlock_value *l, const char *file, int line));
163
168
 
169
+ /* CRYPTO_set_dynlock_destroy_callback does nothing. */
164
170
  OPENSSL_EXPORT void CRYPTO_set_dynlock_destroy_callback(
165
171
  void (*dyn_destroy_function)(struct CRYPTO_dynlock_value *l,
166
172
  const char *file, int line));
167
173
 
174
+ /* CRYPTO_get_dynlock_create_callback returns NULL. */
175
+ OPENSSL_EXPORT struct CRYPTO_dynlock_value *(
176
+ *CRYPTO_get_dynlock_create_callback(void))(const char *file, int line);
177
+
178
+ /* CRYPTO_get_dynlock_lock_callback returns NULL. */
179
+ OPENSSL_EXPORT void (*CRYPTO_get_dynlock_lock_callback(void))(
180
+ int mode, struct CRYPTO_dynlock_value *l, const char *file, int line);
181
+
182
+ /* CRYPTO_get_dynlock_destroy_callback returns NULL. */
183
+ OPENSSL_EXPORT void (*CRYPTO_get_dynlock_destroy_callback(void))(
184
+ struct CRYPTO_dynlock_value *l, const char *file, int line);
185
+
168
186
 
169
187
  #if defined(__cplusplus)
170
188
  } /* extern C */
@@ -60,6 +60,7 @@
60
60
 
61
61
  #include <openssl/base.h>
62
62
 
63
+ #include <time.h>
63
64
 
64
65
  #if defined(__cplusplus)
65
66
  extern "C" {
@@ -157,8 +157,7 @@ extern "C" {
157
157
  #endif
158
158
 
159
159
 
160
- #define TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES 0
161
-
160
+ #define TLS1_AD_END_OF_EARLY_DATA 1
162
161
  #define TLS1_AD_DECRYPTION_FAILED 21
163
162
  #define TLS1_AD_RECORD_OVERFLOW 22
164
163
  #define TLS1_AD_UNKNOWN_CA 48 /* fatal */
@@ -171,6 +170,7 @@ extern "C" {
171
170
  #define TLS1_AD_INTERNAL_ERROR 80 /* fatal */
172
171
  #define TLS1_AD_USER_CANCELLED 90
173
172
  #define TLS1_AD_NO_RENEGOTIATION 100
173
+ #define TLS1_AD_MISSING_EXTENSION 109
174
174
  /* codes 110-114 are from RFC3546 */
175
175
  #define TLS1_AD_UNSUPPORTED_EXTENSION 110
176
176
  #define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111
@@ -179,39 +179,19 @@ extern "C" {
179
179
  #define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114
180
180
  #define TLS1_AD_UNKNOWN_PSK_IDENTITY 115 /* fatal */
181
181
 
182
- /* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */
182
+ /* ExtensionType values from RFC6066 */
183
183
  #define TLSEXT_TYPE_server_name 0
184
- #define TLSEXT_TYPE_max_fragment_length 1
185
- #define TLSEXT_TYPE_client_certificate_url 2
186
- #define TLSEXT_TYPE_trusted_ca_keys 3
187
- #define TLSEXT_TYPE_truncated_hmac 4
188
184
  #define TLSEXT_TYPE_status_request 5
189
- /* ExtensionType values from RFC4681 */
190
- #define TLSEXT_TYPE_user_mapping 6
191
-
192
- /* ExtensionType values from RFC5878 */
193
- #define TLSEXT_TYPE_client_authz 7
194
- #define TLSEXT_TYPE_server_authz 8
195
-
196
- /* ExtensionType values from RFC6091 */
197
- #define TLSEXT_TYPE_cert_type 9
198
185
 
199
186
  /* ExtensionType values from RFC4492 */
200
- #define TLSEXT_TYPE_elliptic_curves 10
201
187
  #define TLSEXT_TYPE_ec_point_formats 11
202
188
 
203
- /* ExtensionType value from RFC5054 */
204
- #define TLSEXT_TYPE_srp 12
205
-
206
189
  /* ExtensionType values from RFC5246 */
207
190
  #define TLSEXT_TYPE_signature_algorithms 13
208
191
 
209
192
  /* ExtensionType value from RFC5764 */
210
193
  #define TLSEXT_TYPE_srtp 14
211
194
 
212
- /* ExtensionType value from RFC5620 */
213
- #define TLSEXT_TYPE_heartbeat 15
214
-
215
195
  /* ExtensionType value from RFC7301 */
216
196
  #define TLSEXT_TYPE_application_layer_protocol_negotiation 16
217
197
 
@@ -224,6 +204,14 @@ extern "C" {
224
204
  /* ExtensionType value from RFC4507 */
225
205
  #define TLSEXT_TYPE_session_ticket 35
226
206
 
207
+ /* ExtensionType values from draft-ietf-tls-tls13-13 */
208
+ #define TLSEXT_TYPE_supported_groups 10
209
+ #define TLSEXT_TYPE_key_share 40
210
+ #define TLSEXT_TYPE_pre_shared_key 41
211
+ #define TLSEXT_TYPE_early_data 42
212
+ #define TLSEXT_TYPE_supported_versions 43
213
+ #define TLSEXT_TYPE_cookie 44
214
+
227
215
  /* ExtensionType value from RFC5746 */
228
216
  #define TLSEXT_TYPE_renegotiate 0xff01
229
217
 
@@ -242,7 +230,6 @@ extern "C" {
242
230
  /* ECPointFormat values from RFC 4492 */
243
231
  #define TLSEXT_ECPOINTFORMAT_uncompressed 0
244
232
  #define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1
245
- #define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2
246
233
 
247
234
  /* Signature and hash algorithms from RFC 5246 */
248
235
 
@@ -259,15 +246,6 @@ extern "C" {
259
246
  #define TLSEXT_hash_sha384 5
260
247
  #define TLSEXT_hash_sha512 6
261
248
 
262
- /* Flag set for unrecognised algorithms */
263
- #define TLSEXT_nid_unknown 0x1000000
264
-
265
- /* ECC curves */
266
-
267
- #define TLSEXT_curve_P_256 23
268
- #define TLSEXT_curve_P_384 24
269
-
270
-
271
249
  #define TLSEXT_MAXLEN_host_name 255
272
250
 
273
251
  /* PSK ciphersuites from 4279 */
@@ -430,15 +408,26 @@ extern "C" {
430
408
  #define TLS1_CK_ECDHE_RSA_CHACHA20_POLY1305_OLD 0x0300CC13
431
409
  #define TLS1_CK_ECDHE_ECDSA_CHACHA20_POLY1305_OLD 0x0300CC14
432
410
 
411
+ /* ChaCha20-Poly1305 cipher suites from RFC 7905. */
433
412
  #define TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 0x0300CCA8
434
413
  #define TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 0x0300CCA9
435
414
  #define TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 0x0300CCAC
436
415
 
416
+ /* PSK ciphersuites from mattsson-tls-ecdhe-psk-aead */
417
+ #define TLS1_CK_ECDHE_PSK_WITH_AES_128_GCM_SHA256 0x0300D001
418
+ #define TLS1_CK_ECDHE_PSK_WITH_AES_256_GCM_SHA384 0x0300D002
419
+
437
420
  /* TODO(davidben): Remove this. Historically, the CK names for CHACHA20_POLY1305
438
421
  * were missing 'WITH' and 'SHA256'. */
439
422
  #define TLS1_CK_ECDHE_RSA_CHACHA20_POLY1305 \
440
423
  TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
441
424
 
425
+ /* CECPQ1 ciphersuites. These are specific to BoringSSL and not standard. */
426
+ #define TLS1_CK_CECPQ1_RSA_WITH_CHACHA20_POLY1305_SHA256 0x030016B7
427
+ #define TLS1_CK_CECPQ1_ECDSA_WITH_CHACHA20_POLY1305_SHA256 0x030016B8
428
+ #define TLS1_CK_CECPQ1_RSA_WITH_AES_256_GCM_SHA384 0x030016B9
429
+ #define TLS1_CK_CECPQ1_ECDSA_WITH_AES_256_GCM_SHA384 0x030016BA
430
+
442
431
  /* XXX
443
432
  * Inconsistency alert:
444
433
  * The OpenSSL names of ciphers with ephemeral DH here include the string
@@ -619,6 +608,21 @@ extern "C" {
619
608
  #define TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 \
620
609
  TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
621
610
 
611
+ /* PSK ciphersuites from mattsson-tls-ecdhe-psk-aead */
612
+ #define TLS1_TXT_ECDHE_PSK_WITH_AES_128_GCM_SHA256 "ECDHE-PSK-AES128-GCM-SHA256"
613
+ #define TLS1_TXT_ECDHE_PSK_WITH_AES_256_GCM_SHA384 "ECDHE-PSK-AES256-GCM-SHA384"
614
+
615
+ /* CECPQ1 ciphersuites. These are specific to BoringSSL and not standard. */
616
+ #define TLS1_TXT_CECPQ1_RSA_WITH_CHACHA20_POLY1305_SHA256 \
617
+ "CECPQ1-RSA-CHACHA20-POLY1305-SHA256"
618
+ #define TLS1_TXT_CECPQ1_ECDSA_WITH_CHACHA20_POLY1305_SHA256 \
619
+ "CECPQ1-ECDSA-CHACHA20-POLY1305-SHA256"
620
+ #define TLS1_TXT_CECPQ1_RSA_WITH_AES_256_GCM_SHA384 \
621
+ "CECPQ1-RSA-AES256-GCM-SHA384"
622
+ #define TLS1_TXT_CECPQ1_ECDSA_WITH_AES_256_GCM_SHA384 \
623
+ "CECPQ1-ECDSA-AES256-GCM-SHA384"
624
+
625
+
622
626
  #define TLS_CT_RSA_SIGN 1
623
627
  #define TLS_CT_DSS_SIGN 2
624
628
  #define TLS_CT_RSA_FIXED_DH 3
@@ -76,6 +76,7 @@
76
76
  #include <openssl/ecdsa.h>
77
77
  #include <openssl/ec.h>
78
78
  #include <openssl/evp.h>
79
+ #include <openssl/obj.h>
79
80
  #include <openssl/rsa.h>
80
81
  #include <openssl/sha.h>
81
82
  #include <openssl/stack.h>
@@ -242,7 +243,6 @@ struct x509_st
242
243
  X509_CINF *cert_info;
243
244
  X509_ALGOR *sig_alg;
244
245
  ASN1_BIT_STRING *signature;
245
- int valid;
246
246
  CRYPTO_refcount_t references;
247
247
  char *name;
248
248
  CRYPTO_EX_DATA ex_data;
@@ -781,9 +781,8 @@ DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX)
781
781
 
782
782
  DECLARE_ASN1_FUNCTIONS(X509_CERT_PAIR)
783
783
 
784
- /* X509_up_ref adds one to the reference count of |x| and returns
785
- * |x|. */
786
- OPENSSL_EXPORT X509 *X509_up_ref(X509 *x);
784
+ /* X509_up_ref adds one to the reference count of |x| and returns one. */
785
+ OPENSSL_EXPORT int X509_up_ref(X509 *x);
787
786
 
788
787
  OPENSSL_EXPORT int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused,
789
788
  CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
@@ -858,6 +857,7 @@ OPENSSL_EXPORT int X509_set_pubkey(X509 *x, EVP_PKEY *pkey);
858
857
  OPENSSL_EXPORT EVP_PKEY * X509_get_pubkey(X509 *x);
859
858
  OPENSSL_EXPORT ASN1_BIT_STRING * X509_get0_pubkey_bitstr(const X509 *x);
860
859
  OPENSSL_EXPORT int X509_certificate_type(X509 *x,EVP_PKEY *pubkey /* optional */);
860
+ OPENSSL_EXPORT STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x);
861
861
 
862
862
  OPENSSL_EXPORT int X509_REQ_set_version(X509_REQ *x,long version);
863
863
  OPENSSL_EXPORT int X509_REQ_set_subject_name(X509_REQ *req,X509_NAME *name);
@@ -893,7 +893,7 @@ OPENSSL_EXPORT int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name);
893
893
  OPENSSL_EXPORT int X509_CRL_set_lastUpdate(X509_CRL *x, const ASN1_TIME *tm);
894
894
  OPENSSL_EXPORT int X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm);
895
895
  OPENSSL_EXPORT int X509_CRL_sort(X509_CRL *crl);
896
- OPENSSL_EXPORT void X509_CRL_up_ref(X509_CRL *crl);
896
+ OPENSSL_EXPORT int X509_CRL_up_ref(X509_CRL *crl);
897
897
 
898
898
  OPENSSL_EXPORT int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial);
899
899
  OPENSSL_EXPORT int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm);
@@ -1153,6 +1153,17 @@ OPENSSL_EXPORT int X509_TRUST_get_flags(X509_TRUST *xp);
1153
1153
  OPENSSL_EXPORT char *X509_TRUST_get0_name(X509_TRUST *xp);
1154
1154
  OPENSSL_EXPORT int X509_TRUST_get_trust(X509_TRUST *xp);
1155
1155
 
1156
+
1157
+ typedef struct rsa_pss_params_st {
1158
+ X509_ALGOR *hashAlgorithm;
1159
+ X509_ALGOR *maskGenAlgorithm;
1160
+ ASN1_INTEGER *saltLength;
1161
+ ASN1_INTEGER *trailerField;
1162
+ } RSA_PSS_PARAMS;
1163
+
1164
+ DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS)
1165
+
1166
+
1156
1167
  /* PKCS7_get_certificates parses a PKCS#7, SignedData structure from |cbs| and
1157
1168
  * appends the included certificates to |out_certs|. It returns one on success
1158
1169
  * and zero on error. */
@@ -1213,6 +1224,39 @@ OPENSSL_EXPORT int PKCS7_get_PEM_CRLs(STACK_OF(X509_CRL) *out_crls,
1213
1224
 
1214
1225
  #ifdef __cplusplus
1215
1226
  }
1227
+
1228
+ extern "C++" {
1229
+
1230
+ namespace bssl {
1231
+
1232
+ BORINGSSL_MAKE_STACK_DELETER(X509, X509_free)
1233
+ BORINGSSL_MAKE_STACK_DELETER(X509_CRL, X509_CRL_free)
1234
+ BORINGSSL_MAKE_STACK_DELETER(X509_EXTENSION, X509_EXTENSION_free)
1235
+ BORINGSSL_MAKE_STACK_DELETER(X509_NAME, X509_NAME_free)
1236
+
1237
+ BORINGSSL_MAKE_DELETER(NETSCAPE_SPKI, NETSCAPE_SPKI_free)
1238
+ BORINGSSL_MAKE_DELETER(X509, X509_free)
1239
+ BORINGSSL_MAKE_DELETER(X509_ALGOR, X509_ALGOR_free)
1240
+ BORINGSSL_MAKE_DELETER(X509_CRL, X509_CRL_free)
1241
+ BORINGSSL_MAKE_DELETER(X509_CRL_METHOD, X509_CRL_METHOD_free)
1242
+ BORINGSSL_MAKE_DELETER(X509_EXTENSION, X509_EXTENSION_free)
1243
+ BORINGSSL_MAKE_DELETER(X509_INFO, X509_INFO_free)
1244
+ BORINGSSL_MAKE_DELETER(X509_LOOKUP, X509_LOOKUP_free)
1245
+ BORINGSSL_MAKE_DELETER(X509_NAME, X509_NAME_free)
1246
+ BORINGSSL_MAKE_DELETER(X509_NAME_ENTRY, X509_NAME_ENTRY_free)
1247
+ BORINGSSL_MAKE_DELETER(X509_PKEY, X509_PKEY_free)
1248
+ BORINGSSL_MAKE_DELETER(X509_POLICY_TREE, X509_policy_tree_free)
1249
+ BORINGSSL_MAKE_DELETER(X509_REQ, X509_REQ_free)
1250
+ BORINGSSL_MAKE_DELETER(X509_REVOKED, X509_REVOKED_free)
1251
+ BORINGSSL_MAKE_DELETER(X509_SIG, X509_SIG_free)
1252
+ BORINGSSL_MAKE_DELETER(X509_STORE, X509_STORE_free)
1253
+ BORINGSSL_MAKE_DELETER(X509_STORE_CTX, X509_STORE_CTX_free)
1254
+ BORINGSSL_MAKE_DELETER(X509_VERIFY_PARAM, X509_VERIFY_PARAM_free)
1255
+
1256
+ } // namespace bssl
1257
+
1258
+ } /* extern C++ */
1259
+
1216
1260
  #endif
1217
1261
 
1218
1262
  #define X509_R_AKID_MISMATCH 100
@@ -1227,30 +1271,29 @@ OPENSSL_EXPORT int PKCS7_get_PEM_CRLs(STACK_OF(X509_CRL) *out_crls,
1227
1271
  #define X509_R_INVALID_BIT_STRING_BITS_LEFT 109
1228
1272
  #define X509_R_INVALID_DIRECTORY 110
1229
1273
  #define X509_R_INVALID_FIELD_NAME 111
1230
- #define X509_R_INVALID_TRUST 112
1231
- #define X509_R_ISSUER_MISMATCH 113
1232
- #define X509_R_KEY_TYPE_MISMATCH 114
1233
- #define X509_R_KEY_VALUES_MISMATCH 115
1234
- #define X509_R_LOADING_CERT_DIR 116
1235
- #define X509_R_LOADING_DEFAULTS 117
1236
- #define X509_R_METHOD_NOT_SUPPORTED 118
1274
+ #define X509_R_INVALID_PSS_PARAMETERS 112
1275
+ #define X509_R_INVALID_TRUST 113
1276
+ #define X509_R_ISSUER_MISMATCH 114
1277
+ #define X509_R_KEY_TYPE_MISMATCH 115
1278
+ #define X509_R_KEY_VALUES_MISMATCH 116
1279
+ #define X509_R_LOADING_CERT_DIR 117
1280
+ #define X509_R_LOADING_DEFAULTS 118
1237
1281
  #define X509_R_NEWER_CRL_NOT_NEWER 119
1238
1282
  #define X509_R_NOT_PKCS7_SIGNED_DATA 120
1239
1283
  #define X509_R_NO_CERTIFICATES_INCLUDED 121
1240
1284
  #define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 122
1241
- #define X509_R_NO_CRL_NUMBER 123
1242
- #define X509_R_PUBLIC_KEY_DECODE_ERROR 124
1243
- #define X509_R_PUBLIC_KEY_ENCODE_ERROR 125
1244
- #define X509_R_SHOULD_RETRY 126
1245
- #define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 127
1246
- #define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 128
1247
- #define X509_R_UNKNOWN_KEY_TYPE 129
1248
- #define X509_R_UNKNOWN_NID 130
1249
- #define X509_R_UNKNOWN_PURPOSE_ID 131
1250
- #define X509_R_UNKNOWN_TRUST_ID 132
1251
- #define X509_R_UNSUPPORTED_ALGORITHM 133
1252
- #define X509_R_WRONG_LOOKUP_TYPE 134
1253
- #define X509_R_WRONG_TYPE 135
1254
- #define X509_R_NO_CRLS_INCLUDED 136
1285
+ #define X509_R_NO_CRLS_INCLUDED 123
1286
+ #define X509_R_NO_CRL_NUMBER 124
1287
+ #define X509_R_PUBLIC_KEY_DECODE_ERROR 125
1288
+ #define X509_R_PUBLIC_KEY_ENCODE_ERROR 126
1289
+ #define X509_R_SHOULD_RETRY 127
1290
+ #define X509_R_UNKNOWN_KEY_TYPE 128
1291
+ #define X509_R_UNKNOWN_NID 129
1292
+ #define X509_R_UNKNOWN_PURPOSE_ID 130
1293
+ #define X509_R_UNKNOWN_TRUST_ID 131
1294
+ #define X509_R_UNSUPPORTED_ALGORITHM 132
1295
+ #define X509_R_WRONG_LOOKUP_TYPE 133
1296
+ #define X509_R_WRONG_TYPE 134
1297
+ #define X509_R_NAME_TOO_LONG 135
1255
1298
 
1256
1299
  #endif
@@ -109,8 +109,10 @@ The X509_STORE then calls a function to actually verify the
109
109
  certificate chain.
110
110
  */
111
111
 
112
+ /* The following are legacy constants that should not be used. */
112
113
  #define X509_LU_RETRY -1
113
114
  #define X509_LU_FAIL 0
115
+
114
116
  #define X509_LU_X509 1
115
117
  #define X509_LU_CRL 2
116
118
  #define X509_LU_PKEY 3
@@ -127,8 +129,6 @@ typedef struct x509_object_st
127
129
  } data;
128
130
  } X509_OBJECT;
129
131
 
130
- typedef struct x509_lookup_st X509_LOOKUP;
131
-
132
132
  DECLARE_STACK_OF(X509_LOOKUP)
133
133
  DECLARE_STACK_OF(X509_OBJECT)
134
134
 
@@ -160,7 +160,7 @@ typedef struct X509_VERIFY_PARAM_ID_st X509_VERIFY_PARAM_ID;
160
160
  * parameters used can be customized
161
161
  */
162
162
 
163
- typedef struct X509_VERIFY_PARAM_st
163
+ struct X509_VERIFY_PARAM_st
164
164
  {
165
165
  char *name;
166
166
  time_t check_time; /* Time to use */
@@ -171,7 +171,7 @@ typedef struct X509_VERIFY_PARAM_st
171
171
  int depth; /* Verify depth */
172
172
  STACK_OF(ASN1_OBJECT) *policies; /* Permissible policies */
173
173
  X509_VERIFY_PARAM_ID *id; /* opaque ID data */
174
- } X509_VERIFY_PARAM;
174
+ };
175
175
 
176
176
  DECLARE_STACK_OF(X509_VERIFY_PARAM)
177
177
 
@@ -228,7 +228,6 @@ struct x509_lookup_st
228
228
  struct x509_store_ctx_st /* X509_STORE_CTX */
229
229
  {
230
230
  X509_STORE *ctx;
231
- int current_method; /* used when looking up certs */
232
231
 
233
232
  /* The following are set by the caller */
234
233
  X509 *cert; /* The cert to check */
@@ -292,7 +291,7 @@ OPENSSL_EXPORT void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
292
291
  X509_LOOKUP_ctrl((x),X509_L_ADD_DIR,(name),(long)(type),NULL)
293
292
 
294
293
  #define X509_V_OK 0
295
- /* illegal error (for uninitialized values, to avoid X509_V_OK): 1 */
294
+ #define X509_V_ERR_UNSPECIFIED 1
296
295
 
297
296
  #define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2
298
297
  #define X509_V_ERR_UNABLE_TO_GET_CRL 3
@@ -347,6 +346,7 @@ OPENSSL_EXPORT void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
347
346
  #define X509_V_ERR_PERMITTED_VIOLATION 47
348
347
  #define X509_V_ERR_EXCLUDED_VIOLATION 48
349
348
  #define X509_V_ERR_SUBTREE_MINMAX 49
349
+ #define X509_V_ERR_APPLICATION_VERIFICATION 50
350
350
  #define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51
351
351
  #define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52
352
352
  #define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53
@@ -365,8 +365,10 @@ OPENSSL_EXPORT void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
365
365
  #define X509_V_ERR_EMAIL_MISMATCH 63
366
366
  #define X509_V_ERR_IP_ADDRESS_MISMATCH 64
367
367
 
368
- /* The application is not happy */
369
- #define X509_V_ERR_APPLICATION_VERIFICATION 50
368
+ /* Caller error */
369
+ #define X509_V_ERR_INVALID_CALL 65
370
+ /* Issuer lookup error */
371
+ #define X509_V_ERR_STORE_LOOKUP 66
370
372
 
371
373
  /* Certificate verify flags */
372
374
 
@@ -433,9 +435,10 @@ OPENSSL_EXPORT int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, int type
433
435
  X509_NAME *name);
434
436
  OPENSSL_EXPORT X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h,int type,X509_NAME *name);
435
437
  OPENSSL_EXPORT X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, X509_OBJECT *x);
436
- OPENSSL_EXPORT void X509_OBJECT_up_ref_count(X509_OBJECT *a);
438
+ OPENSSL_EXPORT int X509_OBJECT_up_ref_count(X509_OBJECT *a);
437
439
  OPENSSL_EXPORT void X509_OBJECT_free_contents(X509_OBJECT *a);
438
440
  OPENSSL_EXPORT X509_STORE *X509_STORE_new(void );
441
+ OPENSSL_EXPORT int X509_STORE_up_ref(X509_STORE *store);
439
442
  OPENSSL_EXPORT void X509_STORE_free(X509_STORE *v);
440
443
 
441
444
  OPENSSL_EXPORT STACK_OF(X509)* X509_STORE_get1_certs(X509_STORE_CTX *st, X509_NAME *nm);
@@ -613,4 +616,3 @@ OPENSSL_EXPORT const X509_POLICY_NODE *
613
616
  }
614
617
  #endif
615
618
  #endif
616
-