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
@@ -67,424 +67,408 @@
67
67
  #include <openssl/x509.h>
68
68
  #include <openssl/x509v3.h>
69
69
 
70
-
71
70
  int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b)
72
- {
73
- int i;
74
- X509_CINF *ai,*bi;
75
-
76
- ai=a->cert_info;
77
- bi=b->cert_info;
78
- i=M_ASN1_INTEGER_cmp(ai->serialNumber,bi->serialNumber);
79
- if (i) return(i);
80
- return(X509_NAME_cmp(ai->issuer,bi->issuer));
81
- }
71
+ {
72
+ int i;
73
+ X509_CINF *ai, *bi;
74
+
75
+ ai = a->cert_info;
76
+ bi = b->cert_info;
77
+ i = M_ASN1_INTEGER_cmp(ai->serialNumber, bi->serialNumber);
78
+ if (i)
79
+ return (i);
80
+ return (X509_NAME_cmp(ai->issuer, bi->issuer));
81
+ }
82
82
 
83
83
  unsigned long X509_issuer_and_serial_hash(X509 *a)
84
- {
85
- unsigned long ret=0;
86
- EVP_MD_CTX ctx;
87
- unsigned char md[16];
88
- char *f;
89
-
90
- EVP_MD_CTX_init(&ctx);
91
- f=X509_NAME_oneline(a->cert_info->issuer,NULL,0);
92
- if (!EVP_DigestInit_ex(&ctx, EVP_md5(), NULL))
93
- goto err;
94
- if (!EVP_DigestUpdate(&ctx,(unsigned char *)f,strlen(f)))
95
- goto err;
96
- OPENSSL_free(f);
97
- if(!EVP_DigestUpdate(&ctx,(unsigned char *)a->cert_info->serialNumber->data,
98
- (unsigned long)a->cert_info->serialNumber->length))
99
- goto err;
100
- if (!EVP_DigestFinal_ex(&ctx,&(md[0]),NULL))
101
- goto err;
102
- ret=( ((unsigned long)md[0] )|((unsigned long)md[1]<<8L)|
103
- ((unsigned long)md[2]<<16L)|((unsigned long)md[3]<<24L)
104
- )&0xffffffffL;
105
- err:
106
- EVP_MD_CTX_cleanup(&ctx);
107
- return(ret);
108
- }
109
-
84
+ {
85
+ unsigned long ret = 0;
86
+ EVP_MD_CTX ctx;
87
+ unsigned char md[16];
88
+ char *f;
89
+
90
+ EVP_MD_CTX_init(&ctx);
91
+ f = X509_NAME_oneline(a->cert_info->issuer, NULL, 0);
92
+ if (!EVP_DigestInit_ex(&ctx, EVP_md5(), NULL))
93
+ goto err;
94
+ if (!EVP_DigestUpdate(&ctx, (unsigned char *)f, strlen(f)))
95
+ goto err;
96
+ OPENSSL_free(f);
97
+ if (!EVP_DigestUpdate
98
+ (&ctx, (unsigned char *)a->cert_info->serialNumber->data,
99
+ (unsigned long)a->cert_info->serialNumber->length))
100
+ goto err;
101
+ if (!EVP_DigestFinal_ex(&ctx, &(md[0]), NULL))
102
+ goto err;
103
+ ret = (((unsigned long)md[0]) | ((unsigned long)md[1] << 8L) |
104
+ ((unsigned long)md[2] << 16L) | ((unsigned long)md[3] << 24L)
105
+ ) & 0xffffffffL;
106
+ err:
107
+ EVP_MD_CTX_cleanup(&ctx);
108
+ return (ret);
109
+ }
110
+
110
111
  int X509_issuer_name_cmp(const X509 *a, const X509 *b)
111
- {
112
- return(X509_NAME_cmp(a->cert_info->issuer,b->cert_info->issuer));
113
- }
112
+ {
113
+ return (X509_NAME_cmp(a->cert_info->issuer, b->cert_info->issuer));
114
+ }
114
115
 
115
116
  int X509_subject_name_cmp(const X509 *a, const X509 *b)
116
- {
117
- return(X509_NAME_cmp(a->cert_info->subject,b->cert_info->subject));
118
- }
117
+ {
118
+ return (X509_NAME_cmp(a->cert_info->subject, b->cert_info->subject));
119
+ }
119
120
 
120
121
  int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b)
121
- {
122
- return(X509_NAME_cmp(a->crl->issuer,b->crl->issuer));
123
- }
122
+ {
123
+ return (X509_NAME_cmp(a->crl->issuer, b->crl->issuer));
124
+ }
124
125
 
125
126
  int X509_CRL_match(const X509_CRL *a, const X509_CRL *b)
126
- {
127
- return memcmp(a->sha1_hash, b->sha1_hash, 20);
128
- }
127
+ {
128
+ return memcmp(a->sha1_hash, b->sha1_hash, 20);
129
+ }
129
130
 
130
131
  X509_NAME *X509_get_issuer_name(X509 *a)
131
- {
132
- return(a->cert_info->issuer);
133
- }
132
+ {
133
+ return (a->cert_info->issuer);
134
+ }
134
135
 
135
136
  unsigned long X509_issuer_name_hash(X509 *x)
136
- {
137
- return(X509_NAME_hash(x->cert_info->issuer));
138
- }
137
+ {
138
+ return (X509_NAME_hash(x->cert_info->issuer));
139
+ }
139
140
 
140
141
  unsigned long X509_issuer_name_hash_old(X509 *x)
141
- {
142
- return(X509_NAME_hash_old(x->cert_info->issuer));
143
- }
142
+ {
143
+ return (X509_NAME_hash_old(x->cert_info->issuer));
144
+ }
144
145
 
145
146
  X509_NAME *X509_get_subject_name(X509 *a)
146
- {
147
- return(a->cert_info->subject);
148
- }
147
+ {
148
+ return (a->cert_info->subject);
149
+ }
149
150
 
150
151
  ASN1_INTEGER *X509_get_serialNumber(X509 *a)
151
- {
152
- return(a->cert_info->serialNumber);
153
- }
152
+ {
153
+ return (a->cert_info->serialNumber);
154
+ }
154
155
 
155
156
  unsigned long X509_subject_name_hash(X509 *x)
156
- {
157
- return(X509_NAME_hash(x->cert_info->subject));
158
- }
157
+ {
158
+ return (X509_NAME_hash(x->cert_info->subject));
159
+ }
159
160
 
160
161
  unsigned long X509_subject_name_hash_old(X509 *x)
161
- {
162
- return(X509_NAME_hash_old(x->cert_info->subject));
163
- }
164
-
165
- /* Compare two certificates: they must be identical for
166
- * this to work. NB: Although "cmp" operations are generally
167
- * prototyped to take "const" arguments (eg. for use in
168
- * STACKs), the way X509 handling is - these operations may
169
- * involve ensuring the hashes are up-to-date and ensuring
170
- * certain cert information is cached. So this is the point
171
- * where the "depth-first" constification tree has to halt
172
- * with an evil cast.
162
+ {
163
+ return (X509_NAME_hash_old(x->cert_info->subject));
164
+ }
165
+
166
+ /*
167
+ * Compare two certificates: they must be identical for this to work. NB:
168
+ * Although "cmp" operations are generally prototyped to take "const"
169
+ * arguments (eg. for use in STACKs), the way X509 handling is - these
170
+ * operations may involve ensuring the hashes are up-to-date and ensuring
171
+ * certain cert information is cached. So this is the point where the
172
+ * "depth-first" constification tree has to halt with an evil cast.
173
173
  */
174
174
  int X509_cmp(const X509 *a, const X509 *b)
175
175
  {
176
- int rv;
177
- /* ensure hash is valid */
178
- X509_check_purpose((X509 *)a, -1, 0);
179
- X509_check_purpose((X509 *)b, -1, 0);
180
-
181
- rv = memcmp(a->sha1_hash, b->sha1_hash, SHA_DIGEST_LENGTH);
182
- if (rv)
183
- return rv;
184
- /* Check for match against stored encoding too */
185
- if (!a->cert_info->enc.modified && !b->cert_info->enc.modified)
186
- {
187
- rv = (int)(a->cert_info->enc.len - b->cert_info->enc.len);
188
- if (rv)
189
- return rv;
190
- return memcmp(a->cert_info->enc.enc, b->cert_info->enc.enc,
191
- a->cert_info->enc.len);
192
- }
193
- return rv;
176
+ int rv;
177
+ /* ensure hash is valid */
178
+ X509_check_purpose((X509 *)a, -1, 0);
179
+ X509_check_purpose((X509 *)b, -1, 0);
180
+
181
+ rv = memcmp(a->sha1_hash, b->sha1_hash, SHA_DIGEST_LENGTH);
182
+ if (rv)
183
+ return rv;
184
+ /* Check for match against stored encoding too */
185
+ if (!a->cert_info->enc.modified && !b->cert_info->enc.modified) {
186
+ rv = (int)(a->cert_info->enc.len - b->cert_info->enc.len);
187
+ if (rv)
188
+ return rv;
189
+ return memcmp(a->cert_info->enc.enc, b->cert_info->enc.enc,
190
+ a->cert_info->enc.len);
191
+ }
192
+ return rv;
194
193
  }
195
194
 
196
-
197
195
  int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b)
198
- {
199
- int ret;
196
+ {
197
+ int ret;
200
198
 
201
- /* Ensure canonical encoding is present and up to date */
199
+ /* Ensure canonical encoding is present and up to date */
202
200
 
203
- if (!a->canon_enc || a->modified)
204
- {
205
- ret = i2d_X509_NAME((X509_NAME *)a, NULL);
206
- if (ret < 0)
207
- return -2;
208
- }
201
+ if (!a->canon_enc || a->modified) {
202
+ ret = i2d_X509_NAME((X509_NAME *)a, NULL);
203
+ if (ret < 0)
204
+ return -2;
205
+ }
209
206
 
210
- if (!b->canon_enc || b->modified)
211
- {
212
- ret = i2d_X509_NAME((X509_NAME *)b, NULL);
213
- if (ret < 0)
214
- return -2;
215
- }
207
+ if (!b->canon_enc || b->modified) {
208
+ ret = i2d_X509_NAME((X509_NAME *)b, NULL);
209
+ if (ret < 0)
210
+ return -2;
211
+ }
216
212
 
217
- ret = a->canon_enclen - b->canon_enclen;
213
+ ret = a->canon_enclen - b->canon_enclen;
218
214
 
219
- if (ret)
220
- return ret;
215
+ if (ret)
216
+ return ret;
221
217
 
222
- return memcmp(a->canon_enc, b->canon_enc, a->canon_enclen);
218
+ return memcmp(a->canon_enc, b->canon_enc, a->canon_enclen);
223
219
 
224
- }
220
+ }
225
221
 
226
222
  unsigned long X509_NAME_hash(X509_NAME *x)
227
- {
228
- unsigned long ret=0;
229
- unsigned char md[SHA_DIGEST_LENGTH];
230
-
231
- /* Make sure X509_NAME structure contains valid cached encoding */
232
- i2d_X509_NAME(x,NULL);
233
- if (!EVP_Digest(x->canon_enc, x->canon_enclen, md, NULL, EVP_sha1(),
234
- NULL))
235
- return 0;
236
-
237
- ret=( ((unsigned long)md[0] )|((unsigned long)md[1]<<8L)|
238
- ((unsigned long)md[2]<<16L)|((unsigned long)md[3]<<24L)
239
- )&0xffffffffL;
240
- return(ret);
241
- }
242
-
223
+ {
224
+ unsigned long ret = 0;
225
+ unsigned char md[SHA_DIGEST_LENGTH];
226
+
227
+ /* Make sure X509_NAME structure contains valid cached encoding */
228
+ i2d_X509_NAME(x, NULL);
229
+ if (!EVP_Digest(x->canon_enc, x->canon_enclen, md, NULL, EVP_sha1(),
230
+ NULL))
231
+ return 0;
232
+
233
+ ret = (((unsigned long)md[0]) | ((unsigned long)md[1] << 8L) |
234
+ ((unsigned long)md[2] << 16L) | ((unsigned long)md[3] << 24L)
235
+ ) & 0xffffffffL;
236
+ return (ret);
237
+ }
243
238
 
244
- /* I now DER encode the name and hash it. Since I cache the DER encoding,
245
- * this is reasonably efficient. */
239
+ /*
240
+ * I now DER encode the name and hash it. Since I cache the DER encoding,
241
+ * this is reasonably efficient.
242
+ */
246
243
 
247
244
  unsigned long X509_NAME_hash_old(X509_NAME *x)
248
- {
249
- EVP_MD_CTX md_ctx;
250
- unsigned long ret=0;
251
- unsigned char md[16];
252
-
253
- /* Make sure X509_NAME structure contains valid cached encoding */
254
- i2d_X509_NAME(x,NULL);
255
- EVP_MD_CTX_init(&md_ctx);
256
- /* EVP_MD_CTX_set_flags(&md_ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); */
257
- if (EVP_DigestInit_ex(&md_ctx, EVP_md5(), NULL)
258
- && EVP_DigestUpdate(&md_ctx, x->bytes->data, x->bytes->length)
259
- && EVP_DigestFinal_ex(&md_ctx,md,NULL))
260
- ret=(((unsigned long)md[0] )|((unsigned long)md[1]<<8L)|
261
- ((unsigned long)md[2]<<16L)|((unsigned long)md[3]<<24L)
262
- )&0xffffffffL;
263
- EVP_MD_CTX_cleanup(&md_ctx);
264
-
265
- return(ret);
266
- }
245
+ {
246
+ EVP_MD_CTX md_ctx;
247
+ unsigned long ret = 0;
248
+ unsigned char md[16];
249
+
250
+ /* Make sure X509_NAME structure contains valid cached encoding */
251
+ i2d_X509_NAME(x, NULL);
252
+ EVP_MD_CTX_init(&md_ctx);
253
+ /* EVP_MD_CTX_set_flags(&md_ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); */
254
+ if (EVP_DigestInit_ex(&md_ctx, EVP_md5(), NULL)
255
+ && EVP_DigestUpdate(&md_ctx, x->bytes->data, x->bytes->length)
256
+ && EVP_DigestFinal_ex(&md_ctx, md, NULL))
257
+ ret = (((unsigned long)md[0]) | ((unsigned long)md[1] << 8L) |
258
+ ((unsigned long)md[2] << 16L) | ((unsigned long)md[3] << 24L)
259
+ ) & 0xffffffffL;
260
+ EVP_MD_CTX_cleanup(&md_ctx);
261
+
262
+ return (ret);
263
+ }
267
264
 
268
265
  /* Search a stack of X509 for a match */
269
266
  X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, X509_NAME *name,
270
- ASN1_INTEGER *serial)
271
- {
272
- size_t i;
273
- X509_CINF cinf;
274
- X509 x,*x509=NULL;
275
-
276
- if(!sk) return NULL;
277
-
278
- x.cert_info= &cinf;
279
- cinf.serialNumber=serial;
280
- cinf.issuer=name;
281
-
282
- for (i=0; i<sk_X509_num(sk); i++)
283
- {
284
- x509=sk_X509_value(sk,i);
285
- if (X509_issuer_and_serial_cmp(x509,&x) == 0)
286
- return(x509);
287
- }
288
- return(NULL);
289
- }
267
+ ASN1_INTEGER *serial)
268
+ {
269
+ size_t i;
270
+ X509_CINF cinf;
271
+ X509 x, *x509 = NULL;
272
+
273
+ if (!sk)
274
+ return NULL;
275
+
276
+ x.cert_info = &cinf;
277
+ cinf.serialNumber = serial;
278
+ cinf.issuer = name;
279
+
280
+ for (i = 0; i < sk_X509_num(sk); i++) {
281
+ x509 = sk_X509_value(sk, i);
282
+ if (X509_issuer_and_serial_cmp(x509, &x) == 0)
283
+ return (x509);
284
+ }
285
+ return (NULL);
286
+ }
290
287
 
291
288
  X509 *X509_find_by_subject(STACK_OF(X509) *sk, X509_NAME *name)
292
- {
293
- X509 *x509;
294
- size_t i;
295
-
296
- for (i=0; i<sk_X509_num(sk); i++)
297
- {
298
- x509=sk_X509_value(sk,i);
299
- if (X509_NAME_cmp(X509_get_subject_name(x509),name) == 0)
300
- return(x509);
301
- }
302
- return(NULL);
303
- }
289
+ {
290
+ X509 *x509;
291
+ size_t i;
292
+
293
+ for (i = 0; i < sk_X509_num(sk); i++) {
294
+ x509 = sk_X509_value(sk, i);
295
+ if (X509_NAME_cmp(X509_get_subject_name(x509), name) == 0)
296
+ return (x509);
297
+ }
298
+ return (NULL);
299
+ }
304
300
 
305
301
  EVP_PKEY *X509_get_pubkey(X509 *x)
306
- {
307
- if ((x == NULL) || (x->cert_info == NULL))
308
- return(NULL);
309
- return(X509_PUBKEY_get(x->cert_info->key));
310
- }
302
+ {
303
+ if ((x == NULL) || (x->cert_info == NULL))
304
+ return (NULL);
305
+ return (X509_PUBKEY_get(x->cert_info->key));
306
+ }
311
307
 
312
308
  ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x)
313
- {
314
- if(!x) return NULL;
315
- return x->cert_info->key->public_key;
316
- }
317
-
309
+ {
310
+ if (!x)
311
+ return NULL;
312
+ return x->cert_info->key->public_key;
313
+ }
318
314
 
319
315
  int X509_check_private_key(X509 *x, EVP_PKEY *k)
320
- {
321
- EVP_PKEY *xk;
322
- int ret;
323
-
324
- xk=X509_get_pubkey(x);
325
-
326
- if (xk)
327
- ret = EVP_PKEY_cmp(xk, k);
328
- else
329
- ret = -2;
330
-
331
- switch (ret)
332
- {
333
- case 1:
334
- break;
335
- case 0:
336
- OPENSSL_PUT_ERROR(X509, X509_R_KEY_VALUES_MISMATCH);
337
- break;
338
- case -1:
339
- OPENSSL_PUT_ERROR(X509, X509_R_KEY_TYPE_MISMATCH);
340
- break;
341
- case -2:
342
- OPENSSL_PUT_ERROR(X509, X509_R_UNKNOWN_KEY_TYPE);
343
- }
344
- if (xk)
345
- EVP_PKEY_free(xk);
346
- if (ret > 0)
347
- return 1;
348
- return 0;
349
- }
350
-
351
- /* Check a suite B algorithm is permitted: pass in a public key and
352
- * the NID of its signature (or 0 if no signature). The pflags is
353
- * a pointer to a flags field which must contain the suite B verification
354
- * flags.
355
- */
316
+ {
317
+ EVP_PKEY *xk;
318
+ int ret;
319
+
320
+ xk = X509_get_pubkey(x);
321
+
322
+ if (xk)
323
+ ret = EVP_PKEY_cmp(xk, k);
324
+ else
325
+ ret = -2;
326
+
327
+ switch (ret) {
328
+ case 1:
329
+ break;
330
+ case 0:
331
+ OPENSSL_PUT_ERROR(X509, X509_R_KEY_VALUES_MISMATCH);
332
+ break;
333
+ case -1:
334
+ OPENSSL_PUT_ERROR(X509, X509_R_KEY_TYPE_MISMATCH);
335
+ break;
336
+ case -2:
337
+ OPENSSL_PUT_ERROR(X509, X509_R_UNKNOWN_KEY_TYPE);
338
+ }
339
+ if (xk)
340
+ EVP_PKEY_free(xk);
341
+ if (ret > 0)
342
+ return 1;
343
+ return 0;
344
+ }
356
345
 
346
+ /*
347
+ * Check a suite B algorithm is permitted: pass in a public key and the NID
348
+ * of its signature (or 0 if no signature). The pflags is a pointer to a
349
+ * flags field which must contain the suite B verification flags.
350
+ */
357
351
 
358
352
  static int check_suite_b(EVP_PKEY *pkey, int sign_nid, unsigned long *pflags)
359
- {
360
- const EC_GROUP *grp = NULL;
361
- int curve_nid;
362
- if (pkey && pkey->type == EVP_PKEY_EC)
363
- grp = EC_KEY_get0_group(pkey->pkey.ec);
364
- if (!grp)
365
- return X509_V_ERR_SUITE_B_INVALID_ALGORITHM;
366
- curve_nid = EC_GROUP_get_curve_name(grp);
367
- /* Check curve is consistent with LOS */
368
- if (curve_nid == NID_secp384r1) /* P-384 */
369
- {
370
- /* Check signature algorithm is consistent with
371
- * curve.
372
- */
373
- if (sign_nid != -1 && sign_nid != NID_ecdsa_with_SHA384)
374
- return X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM;
375
- if (!(*pflags & X509_V_FLAG_SUITEB_192_LOS))
376
- return X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED;
377
- /* If we encounter P-384 we cannot use P-256 later */
378
- *pflags &= ~X509_V_FLAG_SUITEB_128_LOS_ONLY;
379
- }
380
- else if (curve_nid == NID_X9_62_prime256v1) /* P-256 */
381
- {
382
- if (sign_nid != -1 && sign_nid != NID_ecdsa_with_SHA256)
383
- return X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM;
384
- if (!(*pflags & X509_V_FLAG_SUITEB_128_LOS_ONLY))
385
- return X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED;
386
- }
387
- else
388
- return X509_V_ERR_SUITE_B_INVALID_CURVE;
389
-
390
- return X509_V_OK;
391
- }
353
+ {
354
+ const EC_GROUP *grp = NULL;
355
+ int curve_nid;
356
+ if (pkey && pkey->type == EVP_PKEY_EC)
357
+ grp = EC_KEY_get0_group(pkey->pkey.ec);
358
+ if (!grp)
359
+ return X509_V_ERR_SUITE_B_INVALID_ALGORITHM;
360
+ curve_nid = EC_GROUP_get_curve_name(grp);
361
+ /* Check curve is consistent with LOS */
362
+ if (curve_nid == NID_secp384r1) { /* P-384 */
363
+ /*
364
+ * Check signature algorithm is consistent with curve.
365
+ */
366
+ if (sign_nid != -1 && sign_nid != NID_ecdsa_with_SHA384)
367
+ return X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM;
368
+ if (!(*pflags & X509_V_FLAG_SUITEB_192_LOS))
369
+ return X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED;
370
+ /* If we encounter P-384 we cannot use P-256 later */
371
+ *pflags &= ~X509_V_FLAG_SUITEB_128_LOS_ONLY;
372
+ } else if (curve_nid == NID_X9_62_prime256v1) { /* P-256 */
373
+ if (sign_nid != -1 && sign_nid != NID_ecdsa_with_SHA256)
374
+ return X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM;
375
+ if (!(*pflags & X509_V_FLAG_SUITEB_128_LOS_ONLY))
376
+ return X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED;
377
+ } else
378
+ return X509_V_ERR_SUITE_B_INVALID_CURVE;
379
+
380
+ return X509_V_OK;
381
+ }
392
382
 
393
383
  int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain,
394
- unsigned long flags)
395
- {
396
- int rv, sign_nid;
397
- size_t i;
398
- EVP_PKEY *pk = NULL;
399
- unsigned long tflags;
400
- if (!(flags & X509_V_FLAG_SUITEB_128_LOS))
401
- return X509_V_OK;
402
- tflags = flags;
403
- /* If no EE certificate passed in must be first in chain */
404
- if (x == NULL)
405
- {
406
- x = sk_X509_value(chain, 0);
407
- i = 1;
408
- }
409
- else
410
- i = 0;
411
-
412
- if (X509_get_version(x) != 2)
413
- {
414
- rv = X509_V_ERR_SUITE_B_INVALID_VERSION;
415
- /* Correct error depth */
416
- i = 0;
417
- goto end;
418
- }
419
-
420
- pk = X509_get_pubkey(x);
421
- /* Check EE key only */
422
- rv = check_suite_b(pk, -1, &tflags);
423
- if (rv != X509_V_OK)
424
- {
425
- /* Correct error depth */
426
- i = 0;
427
- goto end;
428
- }
429
- for(; i < sk_X509_num(chain); i++)
430
- {
431
- sign_nid = X509_get_signature_nid(x);
432
- x = sk_X509_value(chain, i);
433
- if (X509_get_version(x) != 2)
434
- {
435
- rv = X509_V_ERR_SUITE_B_INVALID_VERSION;
436
- goto end;
437
- }
438
- EVP_PKEY_free(pk);
439
- pk = X509_get_pubkey(x);
440
- rv = check_suite_b(pk, sign_nid, &tflags);
441
- if (rv != X509_V_OK)
442
- goto end;
443
- }
444
-
445
- /* Final check: root CA signature */
446
- rv = check_suite_b(pk, X509_get_signature_nid(x), &tflags);
447
- end:
448
- if (pk)
449
- EVP_PKEY_free(pk);
450
- if (rv != X509_V_OK)
451
- {
452
- /* Invalid signature or LOS errors are for previous cert */
453
- if ((rv == X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM
454
- || rv == X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED) && i)
455
- i--;
456
- /* If we have LOS error and flags changed then we are signing
457
- * P-384 with P-256. Use more meaninggul error.
458
- */
459
- if (rv == X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED && flags != tflags)
460
- rv = X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256;
461
- if (perror_depth)
462
- *perror_depth = i;
463
- }
464
- return rv;
465
- }
384
+ unsigned long flags)
385
+ {
386
+ int rv, sign_nid;
387
+ size_t i;
388
+ EVP_PKEY *pk = NULL;
389
+ unsigned long tflags;
390
+ if (!(flags & X509_V_FLAG_SUITEB_128_LOS))
391
+ return X509_V_OK;
392
+ tflags = flags;
393
+ /* If no EE certificate passed in must be first in chain */
394
+ if (x == NULL) {
395
+ x = sk_X509_value(chain, 0);
396
+ i = 1;
397
+ } else
398
+ i = 0;
399
+
400
+ if (X509_get_version(x) != 2) {
401
+ rv = X509_V_ERR_SUITE_B_INVALID_VERSION;
402
+ /* Correct error depth */
403
+ i = 0;
404
+ goto end;
405
+ }
406
+
407
+ pk = X509_get_pubkey(x);
408
+ /* Check EE key only */
409
+ rv = check_suite_b(pk, -1, &tflags);
410
+ if (rv != X509_V_OK) {
411
+ /* Correct error depth */
412
+ i = 0;
413
+ goto end;
414
+ }
415
+ for (; i < sk_X509_num(chain); i++) {
416
+ sign_nid = X509_get_signature_nid(x);
417
+ x = sk_X509_value(chain, i);
418
+ if (X509_get_version(x) != 2) {
419
+ rv = X509_V_ERR_SUITE_B_INVALID_VERSION;
420
+ goto end;
421
+ }
422
+ EVP_PKEY_free(pk);
423
+ pk = X509_get_pubkey(x);
424
+ rv = check_suite_b(pk, sign_nid, &tflags);
425
+ if (rv != X509_V_OK)
426
+ goto end;
427
+ }
428
+
429
+ /* Final check: root CA signature */
430
+ rv = check_suite_b(pk, X509_get_signature_nid(x), &tflags);
431
+ end:
432
+ if (pk)
433
+ EVP_PKEY_free(pk);
434
+ if (rv != X509_V_OK) {
435
+ /* Invalid signature or LOS errors are for previous cert */
436
+ if ((rv == X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM
437
+ || rv == X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED) && i)
438
+ i--;
439
+ /*
440
+ * If we have LOS error and flags changed then we are signing P-384
441
+ * with P-256. Use more meaninggul error.
442
+ */
443
+ if (rv == X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED && flags != tflags)
444
+ rv = X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256;
445
+ if (perror_depth)
446
+ *perror_depth = i;
447
+ }
448
+ return rv;
449
+ }
466
450
 
467
451
  int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags)
468
- {
469
- int sign_nid;
470
- if (!(flags & X509_V_FLAG_SUITEB_128_LOS))
471
- return X509_V_OK;
472
- sign_nid = OBJ_obj2nid(crl->crl->sig_alg->algorithm);
473
- return check_suite_b(pk, sign_nid, &flags);
474
- }
475
-
476
- /* Not strictly speaking an "up_ref" as a STACK doesn't have a reference
477
- * count but it has the same effect by duping the STACK and upping the ref
478
- * of each X509 structure.
452
+ {
453
+ int sign_nid;
454
+ if (!(flags & X509_V_FLAG_SUITEB_128_LOS))
455
+ return X509_V_OK;
456
+ sign_nid = OBJ_obj2nid(crl->crl->sig_alg->algorithm);
457
+ return check_suite_b(pk, sign_nid, &flags);
458
+ }
459
+
460
+ /*
461
+ * Not strictly speaking an "up_ref" as a STACK doesn't have a reference
462
+ * count but it has the same effect by duping the STACK and upping the ref of
463
+ * each X509 structure.
479
464
  */
480
465
  STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain)
481
- {
482
- STACK_OF(X509) *ret;
483
- size_t i;
484
- ret = sk_X509_dup(chain);
485
- for (i = 0; i < sk_X509_num(ret); i++)
486
- {
487
- X509_up_ref(sk_X509_value(ret, i));
488
- }
489
- return ret;
490
- }
466
+ {
467
+ STACK_OF(X509) *ret;
468
+ size_t i;
469
+ ret = sk_X509_dup(chain);
470
+ for (i = 0; i < sk_X509_num(ret); i++) {
471
+ X509_up_ref(sk_X509_value(ret, i));
472
+ }
473
+ return ret;
474
+ }