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
@@ -1,5 +1,6 @@
1
1
  /* v3_ncons.c */
2
- /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
2
+ /*
3
+ * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3
4
  * project.
4
5
  */
5
6
  /* ====================================================================
@@ -10,7 +11,7 @@
10
11
  * are met:
11
12
  *
12
13
  * 1. Redistributions of source code must retain the above copyright
13
- * notice, this list of conditions and the following disclaimer.
14
+ * notice, this list of conditions and the following disclaimer.
14
15
  *
15
16
  * 2. Redistributions in binary form must reproduce the above copyright
16
17
  * notice, this list of conditions and the following disclaimer in
@@ -54,7 +55,6 @@
54
55
  * (eay@cryptsoft.com). This product includes software written by Tim
55
56
  * Hudson (tjh@cryptsoft.com). */
56
57
 
57
-
58
58
  #include <stdio.h>
59
59
  #include <string.h>
60
60
 
@@ -65,14 +65,14 @@
65
65
  #include <openssl/obj.h>
66
66
  #include <openssl/x509v3.h>
67
67
 
68
-
69
68
  static void *v2i_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method,
70
- X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
71
- static int i2r_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method,
72
- void *a, BIO *bp, int ind);
69
+ X509V3_CTX *ctx,
70
+ STACK_OF(CONF_VALUE) *nval);
71
+ static int i2r_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method, void *a,
72
+ BIO *bp, int ind);
73
73
  static int do_i2r_name_constraints(const X509V3_EXT_METHOD *method,
74
- STACK_OF(GENERAL_SUBTREE) *trees,
75
- BIO *bp, int ind, const char *name);
74
+ STACK_OF(GENERAL_SUBTREE) *trees, BIO *bp,
75
+ int ind, const char *name);
76
76
  static int print_nc_ipadd(BIO *bp, ASN1_OCTET_STRING *ip);
77
77
 
78
78
  static int nc_match(GENERAL_NAME *gen, NAME_CONSTRAINTS *nc);
@@ -83,428 +83,400 @@ static int nc_email(ASN1_IA5STRING *sub, ASN1_IA5STRING *eml);
83
83
  static int nc_uri(ASN1_IA5STRING *uri, ASN1_IA5STRING *base);
84
84
 
85
85
  const X509V3_EXT_METHOD v3_name_constraints = {
86
- NID_name_constraints, 0,
87
- ASN1_ITEM_ref(NAME_CONSTRAINTS),
88
- 0,0,0,0,
89
- 0,0,
90
- 0, v2i_NAME_CONSTRAINTS,
91
- i2r_NAME_CONSTRAINTS,0,
92
- NULL
86
+ NID_name_constraints, 0,
87
+ ASN1_ITEM_ref(NAME_CONSTRAINTS),
88
+ 0, 0, 0, 0,
89
+ 0, 0,
90
+ 0, v2i_NAME_CONSTRAINTS,
91
+ i2r_NAME_CONSTRAINTS, 0,
92
+ NULL
93
93
  };
94
94
 
95
95
  ASN1_SEQUENCE(GENERAL_SUBTREE) = {
96
- ASN1_SIMPLE(GENERAL_SUBTREE, base, GENERAL_NAME),
97
- ASN1_IMP_OPT(GENERAL_SUBTREE, minimum, ASN1_INTEGER, 0),
98
- ASN1_IMP_OPT(GENERAL_SUBTREE, maximum, ASN1_INTEGER, 1)
96
+ ASN1_SIMPLE(GENERAL_SUBTREE, base, GENERAL_NAME),
97
+ ASN1_IMP_OPT(GENERAL_SUBTREE, minimum, ASN1_INTEGER, 0),
98
+ ASN1_IMP_OPT(GENERAL_SUBTREE, maximum, ASN1_INTEGER, 1)
99
99
  } ASN1_SEQUENCE_END(GENERAL_SUBTREE)
100
100
 
101
101
  ASN1_SEQUENCE(NAME_CONSTRAINTS) = {
102
- ASN1_IMP_SEQUENCE_OF_OPT(NAME_CONSTRAINTS, permittedSubtrees,
103
- GENERAL_SUBTREE, 0),
104
- ASN1_IMP_SEQUENCE_OF_OPT(NAME_CONSTRAINTS, excludedSubtrees,
105
- GENERAL_SUBTREE, 1),
102
+ ASN1_IMP_SEQUENCE_OF_OPT(NAME_CONSTRAINTS, permittedSubtrees,
103
+ GENERAL_SUBTREE, 0),
104
+ ASN1_IMP_SEQUENCE_OF_OPT(NAME_CONSTRAINTS, excludedSubtrees,
105
+ GENERAL_SUBTREE, 1),
106
106
  } ASN1_SEQUENCE_END(NAME_CONSTRAINTS)
107
-
107
+
108
108
 
109
109
  IMPLEMENT_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE)
110
110
  IMPLEMENT_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS)
111
111
 
112
112
  static void *v2i_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method,
113
- X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval)
114
- {
115
- size_t i;
116
- CONF_VALUE tval, *val;
117
- STACK_OF(GENERAL_SUBTREE) **ptree = NULL;
118
- NAME_CONSTRAINTS *ncons = NULL;
119
- GENERAL_SUBTREE *sub = NULL;
120
- ncons = NAME_CONSTRAINTS_new();
121
- if (!ncons)
122
- goto memerr;
123
- for(i = 0; i < sk_CONF_VALUE_num(nval); i++)
124
- {
125
- val = sk_CONF_VALUE_value(nval, i);
126
- if (!strncmp(val->name, "permitted", 9) && val->name[9])
127
- {
128
- ptree = &ncons->permittedSubtrees;
129
- tval.name = val->name + 10;
130
- }
131
- else if (!strncmp(val->name, "excluded", 8) && val->name[8])
132
- {
133
- ptree = &ncons->excludedSubtrees;
134
- tval.name = val->name + 9;
135
- }
136
- else
137
- {
138
- OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_SYNTAX);
139
- goto err;
140
- }
141
- tval.value = val->value;
142
- sub = GENERAL_SUBTREE_new();
143
- if (!v2i_GENERAL_NAME_ex(sub->base, method, ctx, &tval, 1))
144
- goto err;
145
- if (!*ptree)
146
- *ptree = sk_GENERAL_SUBTREE_new_null();
147
- if (!*ptree || !sk_GENERAL_SUBTREE_push(*ptree, sub))
148
- goto memerr;
149
- sub = NULL;
150
- }
151
-
152
- return ncons;
153
-
154
- memerr:
155
- OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
156
- err:
157
- if (ncons)
158
- NAME_CONSTRAINTS_free(ncons);
159
- if (sub)
160
- GENERAL_SUBTREE_free(sub);
161
-
162
- return NULL;
163
- }
164
-
165
-
166
-
113
+ X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval)
114
+ {
115
+ size_t i;
116
+ CONF_VALUE tval, *val;
117
+ STACK_OF(GENERAL_SUBTREE) **ptree = NULL;
118
+ NAME_CONSTRAINTS *ncons = NULL;
119
+ GENERAL_SUBTREE *sub = NULL;
120
+ ncons = NAME_CONSTRAINTS_new();
121
+ if (!ncons)
122
+ goto memerr;
123
+ for (i = 0; i < sk_CONF_VALUE_num(nval); i++) {
124
+ val = sk_CONF_VALUE_value(nval, i);
125
+ if (!strncmp(val->name, "permitted", 9) && val->name[9]) {
126
+ ptree = &ncons->permittedSubtrees;
127
+ tval.name = val->name + 10;
128
+ } else if (!strncmp(val->name, "excluded", 8) && val->name[8]) {
129
+ ptree = &ncons->excludedSubtrees;
130
+ tval.name = val->name + 9;
131
+ } else {
132
+ OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_SYNTAX);
133
+ goto err;
134
+ }
135
+ tval.value = val->value;
136
+ sub = GENERAL_SUBTREE_new();
137
+ if (!v2i_GENERAL_NAME_ex(sub->base, method, ctx, &tval, 1))
138
+ goto err;
139
+ if (!*ptree)
140
+ *ptree = sk_GENERAL_SUBTREE_new_null();
141
+ if (!*ptree || !sk_GENERAL_SUBTREE_push(*ptree, sub))
142
+ goto memerr;
143
+ sub = NULL;
144
+ }
145
+
146
+ return ncons;
147
+
148
+ memerr:
149
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
150
+ err:
151
+ if (ncons)
152
+ NAME_CONSTRAINTS_free(ncons);
153
+ if (sub)
154
+ GENERAL_SUBTREE_free(sub);
155
+
156
+ return NULL;
157
+ }
167
158
 
168
159
  static int i2r_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method, void *a,
169
- BIO *bp, int ind)
170
- {
171
- NAME_CONSTRAINTS *ncons = a;
172
- do_i2r_name_constraints(method, ncons->permittedSubtrees,
173
- bp, ind, "Permitted");
174
- do_i2r_name_constraints(method, ncons->excludedSubtrees,
175
- bp, ind, "Excluded");
176
- return 1;
177
- }
160
+ BIO *bp, int ind)
161
+ {
162
+ NAME_CONSTRAINTS *ncons = a;
163
+ do_i2r_name_constraints(method, ncons->permittedSubtrees,
164
+ bp, ind, "Permitted");
165
+ do_i2r_name_constraints(method, ncons->excludedSubtrees,
166
+ bp, ind, "Excluded");
167
+ return 1;
168
+ }
178
169
 
179
170
  static int do_i2r_name_constraints(const X509V3_EXT_METHOD *method,
180
- STACK_OF(GENERAL_SUBTREE) *trees,
181
- BIO *bp, int ind, const char *name)
182
- {
183
- GENERAL_SUBTREE *tree;
184
- size_t i;
185
- if (sk_GENERAL_SUBTREE_num(trees) > 0)
186
- BIO_printf(bp, "%*s%s:\n", ind, "", name);
187
- for(i = 0; i < sk_GENERAL_SUBTREE_num(trees); i++)
188
- {
189
- tree = sk_GENERAL_SUBTREE_value(trees, i);
190
- BIO_printf(bp, "%*s", ind + 2, "");
191
- if (tree->base->type == GEN_IPADD)
192
- print_nc_ipadd(bp, tree->base->d.ip);
193
- else
194
- GENERAL_NAME_print(bp, tree->base);
195
- BIO_puts(bp, "\n");
196
- }
197
- return 1;
198
- }
171
+ STACK_OF(GENERAL_SUBTREE) *trees,
172
+ BIO *bp, int ind, const char *name)
173
+ {
174
+ GENERAL_SUBTREE *tree;
175
+ size_t i;
176
+ if (sk_GENERAL_SUBTREE_num(trees) > 0)
177
+ BIO_printf(bp, "%*s%s:\n", ind, "", name);
178
+ for (i = 0; i < sk_GENERAL_SUBTREE_num(trees); i++) {
179
+ tree = sk_GENERAL_SUBTREE_value(trees, i);
180
+ BIO_printf(bp, "%*s", ind + 2, "");
181
+ if (tree->base->type == GEN_IPADD)
182
+ print_nc_ipadd(bp, tree->base->d.ip);
183
+ else
184
+ GENERAL_NAME_print(bp, tree->base);
185
+ BIO_puts(bp, "\n");
186
+ }
187
+ return 1;
188
+ }
199
189
 
200
190
  static int print_nc_ipadd(BIO *bp, ASN1_OCTET_STRING *ip)
201
- {
202
- int i, len;
203
- unsigned char *p;
204
- p = ip->data;
205
- len = ip->length;
206
- BIO_puts(bp, "IP:");
207
- if(len == 8)
208
- {
209
- BIO_printf(bp, "%d.%d.%d.%d/%d.%d.%d.%d",
210
- p[0], p[1], p[2], p[3],
211
- p[4], p[5], p[6], p[7]);
212
- }
213
- else if(len == 32)
214
- {
215
- for (i = 0; i < 16; i++)
216
- {
217
- BIO_printf(bp, "%X", p[0] << 8 | p[1]);
218
- p += 2;
219
- if (i == 7)
220
- BIO_puts(bp, "/");
221
- else if (i != 15)
222
- BIO_puts(bp, ":");
223
- }
224
- }
225
- else
226
- BIO_printf(bp, "IP Address:<invalid>");
227
- return 1;
228
- }
229
-
230
- /* Check a certificate conforms to a specified set of constraints.
231
- * Return values:
232
- * X509_V_OK: All constraints obeyed.
233
- * X509_V_ERR_PERMITTED_VIOLATION: Permitted subtree violation.
234
- * X509_V_ERR_EXCLUDED_VIOLATION: Excluded subtree violation.
235
- * X509_V_ERR_SUBTREE_MINMAX: Min or max values present and matching type.
236
- * X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE: Unsupported constraint type.
237
- * X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX: bad unsupported constraint syntax.
238
- * X509_V_ERR_UNSUPPORTED_NAME_SYNTAX: bad or unsupported syntax of name
239
-
191
+ {
192
+ int i, len;
193
+ unsigned char *p;
194
+ p = ip->data;
195
+ len = ip->length;
196
+ BIO_puts(bp, "IP:");
197
+ if (len == 8) {
198
+ BIO_printf(bp, "%d.%d.%d.%d/%d.%d.%d.%d",
199
+ p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7]);
200
+ } else if (len == 32) {
201
+ for (i = 0; i < 16; i++) {
202
+ BIO_printf(bp, "%X", p[0] << 8 | p[1]);
203
+ p += 2;
204
+ if (i == 7)
205
+ BIO_puts(bp, "/");
206
+ else if (i != 15)
207
+ BIO_puts(bp, ":");
208
+ }
209
+ } else
210
+ BIO_printf(bp, "IP Address:<invalid>");
211
+ return 1;
212
+ }
213
+
214
+ /*
215
+ * Check a certificate conforms to a specified set of constraints. Return
216
+ * values: X509_V_OK: All constraints obeyed.
217
+ * X509_V_ERR_PERMITTED_VIOLATION: Permitted subtree violation.
218
+ * X509_V_ERR_EXCLUDED_VIOLATION: Excluded subtree violation.
219
+ * X509_V_ERR_SUBTREE_MINMAX: Min or max values present and matching type.
220
+ * X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE: Unsupported constraint type.
221
+ * X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX: bad unsupported constraint
222
+ * syntax. X509_V_ERR_UNSUPPORTED_NAME_SYNTAX: bad or unsupported syntax of
223
+ * name
224
+ *
240
225
  */
241
226
 
242
227
  int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc)
243
- {
244
- int r, i;
245
- size_t j;
246
- X509_NAME *nm;
228
+ {
229
+ int r, i;
230
+ size_t j;
231
+ X509_NAME *nm;
247
232
 
248
- nm = X509_get_subject_name(x);
233
+ nm = X509_get_subject_name(x);
249
234
 
250
- if (X509_NAME_entry_count(nm) > 0)
251
- {
252
- GENERAL_NAME gntmp;
253
- gntmp.type = GEN_DIRNAME;
254
- gntmp.d.directoryName = nm;
235
+ if (X509_NAME_entry_count(nm) > 0) {
236
+ GENERAL_NAME gntmp;
237
+ gntmp.type = GEN_DIRNAME;
238
+ gntmp.d.directoryName = nm;
255
239
 
256
- r = nc_match(&gntmp, nc);
240
+ r = nc_match(&gntmp, nc);
257
241
 
258
- if (r != X509_V_OK)
259
- return r;
242
+ if (r != X509_V_OK)
243
+ return r;
260
244
 
261
- gntmp.type = GEN_EMAIL;
245
+ gntmp.type = GEN_EMAIL;
262
246
 
247
+ /* Process any email address attributes in subject name */
263
248
 
264
- /* Process any email address attributes in subject name */
249
+ for (i = -1;;) {
250
+ X509_NAME_ENTRY *ne;
251
+ i = X509_NAME_get_index_by_NID(nm, NID_pkcs9_emailAddress, i);
252
+ if (i == -1)
253
+ break;
254
+ ne = X509_NAME_get_entry(nm, i);
255
+ gntmp.d.rfc822Name = X509_NAME_ENTRY_get_data(ne);
256
+ if (gntmp.d.rfc822Name->type != V_ASN1_IA5STRING)
257
+ return X509_V_ERR_UNSUPPORTED_NAME_SYNTAX;
265
258
 
266
- for (i = -1;;)
267
- {
268
- X509_NAME_ENTRY *ne;
269
- i = X509_NAME_get_index_by_NID(nm,
270
- NID_pkcs9_emailAddress,
271
- i);
272
- if (i == -1)
273
- break;
274
- ne = X509_NAME_get_entry(nm, i);
275
- gntmp.d.rfc822Name = X509_NAME_ENTRY_get_data(ne);
276
- if (gntmp.d.rfc822Name->type != V_ASN1_IA5STRING)
277
- return X509_V_ERR_UNSUPPORTED_NAME_SYNTAX;
259
+ r = nc_match(&gntmp, nc);
278
260
 
279
- r = nc_match(&gntmp, nc);
261
+ if (r != X509_V_OK)
262
+ return r;
263
+ }
280
264
 
281
- if (r != X509_V_OK)
282
- return r;
283
- }
284
-
285
- }
265
+ }
286
266
 
287
- for (j = 0; j < sk_GENERAL_NAME_num(x->altname); j++)
288
- {
289
- GENERAL_NAME *gen = sk_GENERAL_NAME_value(x->altname, j);
290
- r = nc_match(gen, nc);
291
- if (r != X509_V_OK)
292
- return r;
293
- }
267
+ for (j = 0; j < sk_GENERAL_NAME_num(x->altname); j++) {
268
+ GENERAL_NAME *gen = sk_GENERAL_NAME_value(x->altname, j);
269
+ r = nc_match(gen, nc);
270
+ if (r != X509_V_OK)
271
+ return r;
272
+ }
294
273
 
295
- return X509_V_OK;
274
+ return X509_V_OK;
296
275
 
297
- }
276
+ }
298
277
 
299
278
  static int nc_match(GENERAL_NAME *gen, NAME_CONSTRAINTS *nc)
300
- {
301
- GENERAL_SUBTREE *sub;
302
- int r, match = 0;
303
- size_t i;
304
-
305
- /* Permitted subtrees: if any subtrees exist of matching the type
306
- * at least one subtree must match.
307
- */
308
-
309
- for (i = 0; i < sk_GENERAL_SUBTREE_num(nc->permittedSubtrees); i++)
310
- {
311
- sub = sk_GENERAL_SUBTREE_value(nc->permittedSubtrees, i);
312
- if (gen->type != sub->base->type)
313
- continue;
314
- if (sub->minimum || sub->maximum)
315
- return X509_V_ERR_SUBTREE_MINMAX;
316
- /* If we already have a match don't bother trying any more */
317
- if (match == 2)
318
- continue;
319
- if (match == 0)
320
- match = 1;
321
- r = nc_match_single(gen, sub->base);
322
- if (r == X509_V_OK)
323
- match = 2;
324
- else if (r != X509_V_ERR_PERMITTED_VIOLATION)
325
- return r;
326
- }
327
-
328
- if (match == 1)
329
- return X509_V_ERR_PERMITTED_VIOLATION;
330
-
331
- /* Excluded subtrees: must not match any of these */
332
-
333
- for (i = 0; i < sk_GENERAL_SUBTREE_num(nc->excludedSubtrees); i++)
334
- {
335
- sub = sk_GENERAL_SUBTREE_value(nc->excludedSubtrees, i);
336
- if (gen->type != sub->base->type)
337
- continue;
338
- if (sub->minimum || sub->maximum)
339
- return X509_V_ERR_SUBTREE_MINMAX;
340
-
341
- r = nc_match_single(gen, sub->base);
342
- if (r == X509_V_OK)
343
- return X509_V_ERR_EXCLUDED_VIOLATION;
344
- else if (r != X509_V_ERR_PERMITTED_VIOLATION)
345
- return r;
346
-
347
- }
348
-
349
- return X509_V_OK;
350
-
351
- }
279
+ {
280
+ GENERAL_SUBTREE *sub;
281
+ int r, match = 0;
282
+ size_t i;
283
+
284
+ /*
285
+ * Permitted subtrees: if any subtrees exist of matching the type at
286
+ * least one subtree must match.
287
+ */
288
+
289
+ for (i = 0; i < sk_GENERAL_SUBTREE_num(nc->permittedSubtrees); i++) {
290
+ sub = sk_GENERAL_SUBTREE_value(nc->permittedSubtrees, i);
291
+ if (gen->type != sub->base->type)
292
+ continue;
293
+ if (sub->minimum || sub->maximum)
294
+ return X509_V_ERR_SUBTREE_MINMAX;
295
+ /* If we already have a match don't bother trying any more */
296
+ if (match == 2)
297
+ continue;
298
+ if (match == 0)
299
+ match = 1;
300
+ r = nc_match_single(gen, sub->base);
301
+ if (r == X509_V_OK)
302
+ match = 2;
303
+ else if (r != X509_V_ERR_PERMITTED_VIOLATION)
304
+ return r;
305
+ }
306
+
307
+ if (match == 1)
308
+ return X509_V_ERR_PERMITTED_VIOLATION;
309
+
310
+ /* Excluded subtrees: must not match any of these */
311
+
312
+ for (i = 0; i < sk_GENERAL_SUBTREE_num(nc->excludedSubtrees); i++) {
313
+ sub = sk_GENERAL_SUBTREE_value(nc->excludedSubtrees, i);
314
+ if (gen->type != sub->base->type)
315
+ continue;
316
+ if (sub->minimum || sub->maximum)
317
+ return X509_V_ERR_SUBTREE_MINMAX;
318
+
319
+ r = nc_match_single(gen, sub->base);
320
+ if (r == X509_V_OK)
321
+ return X509_V_ERR_EXCLUDED_VIOLATION;
322
+ else if (r != X509_V_ERR_PERMITTED_VIOLATION)
323
+ return r;
324
+
325
+ }
326
+
327
+ return X509_V_OK;
328
+
329
+ }
352
330
 
353
331
  static int nc_match_single(GENERAL_NAME *gen, GENERAL_NAME *base)
354
- {
355
- switch(base->type)
356
- {
357
- case GEN_DIRNAME:
358
- return nc_dn(gen->d.directoryName, base->d.directoryName);
332
+ {
333
+ switch (base->type) {
334
+ case GEN_DIRNAME:
335
+ return nc_dn(gen->d.directoryName, base->d.directoryName);
359
336
 
360
- case GEN_DNS:
361
- return nc_dns(gen->d.dNSName, base->d.dNSName);
337
+ case GEN_DNS:
338
+ return nc_dns(gen->d.dNSName, base->d.dNSName);
362
339
 
363
- case GEN_EMAIL:
364
- return nc_email(gen->d.rfc822Name, base->d.rfc822Name);
340
+ case GEN_EMAIL:
341
+ return nc_email(gen->d.rfc822Name, base->d.rfc822Name);
365
342
 
366
- case GEN_URI:
367
- return nc_uri(gen->d.uniformResourceIdentifier,
368
- base->d.uniformResourceIdentifier);
343
+ case GEN_URI:
344
+ return nc_uri(gen->d.uniformResourceIdentifier,
345
+ base->d.uniformResourceIdentifier);
369
346
 
370
- default:
371
- return X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE;
372
- }
347
+ default:
348
+ return X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE;
349
+ }
373
350
 
374
- }
351
+ }
375
352
 
376
- /* directoryName name constraint matching.
377
- * The canonical encoding of X509_NAME makes this comparison easy. It is
378
- * matched if the subtree is a subset of the name.
353
+ /*
354
+ * directoryName name constraint matching. The canonical encoding of
355
+ * X509_NAME makes this comparison easy. It is matched if the subtree is a
356
+ * subset of the name.
379
357
  */
380
358
 
381
359
  static int nc_dn(X509_NAME *nm, X509_NAME *base)
382
- {
383
- /* Ensure canonical encodings are up to date. */
384
- if (nm->modified && i2d_X509_NAME(nm, NULL) < 0)
385
- return X509_V_ERR_OUT_OF_MEM;
386
- if (base->modified && i2d_X509_NAME(base, NULL) < 0)
387
- return X509_V_ERR_OUT_OF_MEM;
388
- if (base->canon_enclen > nm->canon_enclen)
389
- return X509_V_ERR_PERMITTED_VIOLATION;
390
- if (memcmp(base->canon_enc, nm->canon_enc, base->canon_enclen))
391
- return X509_V_ERR_PERMITTED_VIOLATION;
392
- return X509_V_OK;
393
- }
360
+ {
361
+ /* Ensure canonical encodings are up to date. */
362
+ if (nm->modified && i2d_X509_NAME(nm, NULL) < 0)
363
+ return X509_V_ERR_OUT_OF_MEM;
364
+ if (base->modified && i2d_X509_NAME(base, NULL) < 0)
365
+ return X509_V_ERR_OUT_OF_MEM;
366
+ if (base->canon_enclen > nm->canon_enclen)
367
+ return X509_V_ERR_PERMITTED_VIOLATION;
368
+ if (memcmp(base->canon_enc, nm->canon_enc, base->canon_enclen))
369
+ return X509_V_ERR_PERMITTED_VIOLATION;
370
+ return X509_V_OK;
371
+ }
394
372
 
395
373
  static int nc_dns(ASN1_IA5STRING *dns, ASN1_IA5STRING *base)
396
- {
397
- char *baseptr = (char *)base->data;
398
- char *dnsptr = (char *)dns->data;
399
- /* Empty matches everything */
400
- if (!*baseptr)
401
- return X509_V_OK;
402
- /* Otherwise can add zero or more components on the left so
403
- * compare RHS and if dns is longer and expect '.' as preceding
404
- * character.
405
- */
406
- if (dns->length > base->length)
407
- {
408
- dnsptr += dns->length - base->length;
409
- if (*baseptr != '.' && dnsptr[-1] != '.')
410
- return X509_V_ERR_PERMITTED_VIOLATION;
411
- }
412
-
413
- if (OPENSSL_strcasecmp(baseptr, dnsptr))
414
- return X509_V_ERR_PERMITTED_VIOLATION;
415
-
416
- return X509_V_OK;
417
-
418
- }
374
+ {
375
+ char *baseptr = (char *)base->data;
376
+ char *dnsptr = (char *)dns->data;
377
+ /* Empty matches everything */
378
+ if (!*baseptr)
379
+ return X509_V_OK;
380
+ /*
381
+ * Otherwise can add zero or more components on the left so compare RHS
382
+ * and if dns is longer and expect '.' as preceding character.
383
+ */
384
+ if (dns->length > base->length) {
385
+ dnsptr += dns->length - base->length;
386
+ if (*baseptr != '.' && dnsptr[-1] != '.')
387
+ return X509_V_ERR_PERMITTED_VIOLATION;
388
+ }
389
+
390
+ if (OPENSSL_strcasecmp(baseptr, dnsptr))
391
+ return X509_V_ERR_PERMITTED_VIOLATION;
392
+
393
+ return X509_V_OK;
394
+
395
+ }
419
396
 
420
397
  static int nc_email(ASN1_IA5STRING *eml, ASN1_IA5STRING *base)
421
- {
422
- const char *baseptr = (char *)base->data;
423
- const char *emlptr = (char *)eml->data;
424
-
425
- const char *baseat = strchr(baseptr, '@');
426
- const char *emlat = strchr(emlptr, '@');
427
- if (!emlat)
428
- return X509_V_ERR_UNSUPPORTED_NAME_SYNTAX;
429
- /* Special case: inital '.' is RHS match */
430
- if (!baseat && (*baseptr == '.'))
431
- {
432
- if (eml->length > base->length)
433
- {
434
- emlptr += eml->length - base->length;
435
- if (!OPENSSL_strcasecmp(baseptr, emlptr))
436
- return X509_V_OK;
437
- }
438
- return X509_V_ERR_PERMITTED_VIOLATION;
439
- }
440
-
441
- /* If we have anything before '@' match local part */
442
-
443
- if (baseat)
444
- {
445
- if (baseat != baseptr)
446
- {
447
- if ((baseat - baseptr) != (emlat - emlptr))
448
- return X509_V_ERR_PERMITTED_VIOLATION;
449
- /* Case sensitive match of local part */
450
- if (strncmp(baseptr, emlptr, emlat - emlptr))
451
- return X509_V_ERR_PERMITTED_VIOLATION;
452
- }
453
- /* Position base after '@' */
454
- baseptr = baseat + 1;
455
- }
456
- emlptr = emlat + 1;
457
- /* Just have hostname left to match: case insensitive */
458
- if (OPENSSL_strcasecmp(baseptr, emlptr))
459
- return X509_V_ERR_PERMITTED_VIOLATION;
460
-
461
- return X509_V_OK;
462
-
463
- }
398
+ {
399
+ const char *baseptr = (char *)base->data;
400
+ const char *emlptr = (char *)eml->data;
401
+
402
+ const char *baseat = strchr(baseptr, '@');
403
+ const char *emlat = strchr(emlptr, '@');
404
+ if (!emlat)
405
+ return X509_V_ERR_UNSUPPORTED_NAME_SYNTAX;
406
+ /* Special case: inital '.' is RHS match */
407
+ if (!baseat && (*baseptr == '.')) {
408
+ if (eml->length > base->length) {
409
+ emlptr += eml->length - base->length;
410
+ if (!OPENSSL_strcasecmp(baseptr, emlptr))
411
+ return X509_V_OK;
412
+ }
413
+ return X509_V_ERR_PERMITTED_VIOLATION;
414
+ }
415
+
416
+ /* If we have anything before '@' match local part */
417
+
418
+ if (baseat) {
419
+ if (baseat != baseptr) {
420
+ if ((baseat - baseptr) != (emlat - emlptr))
421
+ return X509_V_ERR_PERMITTED_VIOLATION;
422
+ /* Case sensitive match of local part */
423
+ if (strncmp(baseptr, emlptr, emlat - emlptr))
424
+ return X509_V_ERR_PERMITTED_VIOLATION;
425
+ }
426
+ /* Position base after '@' */
427
+ baseptr = baseat + 1;
428
+ }
429
+ emlptr = emlat + 1;
430
+ /* Just have hostname left to match: case insensitive */
431
+ if (OPENSSL_strcasecmp(baseptr, emlptr))
432
+ return X509_V_ERR_PERMITTED_VIOLATION;
433
+
434
+ return X509_V_OK;
435
+
436
+ }
464
437
 
465
438
  static int nc_uri(ASN1_IA5STRING *uri, ASN1_IA5STRING *base)
466
- {
467
- const char *baseptr = (char *)base->data;
468
- const char *hostptr = (char *)uri->data;
469
- const char *p = strchr(hostptr, ':');
470
- int hostlen;
471
- /* Check for foo:// and skip past it */
472
- if (!p || (p[1] != '/') || (p[2] != '/'))
473
- return X509_V_ERR_UNSUPPORTED_NAME_SYNTAX;
474
- hostptr = p + 3;
475
-
476
- /* Determine length of hostname part of URI */
477
-
478
- /* Look for a port indicator as end of hostname first */
479
-
480
- p = strchr(hostptr, ':');
481
- /* Otherwise look for trailing slash */
482
- if (!p)
483
- p = strchr(hostptr, '/');
484
-
485
- if (!p)
486
- hostlen = strlen(hostptr);
487
- else
488
- hostlen = p - hostptr;
489
-
490
- if (hostlen == 0)
491
- return X509_V_ERR_UNSUPPORTED_NAME_SYNTAX;
492
-
493
- /* Special case: inital '.' is RHS match */
494
- if (*baseptr == '.')
495
- {
496
- if (hostlen > base->length)
497
- {
498
- p = hostptr + hostlen - base->length;
499
- if (!OPENSSL_strncasecmp(p, baseptr, base->length))
500
- return X509_V_OK;
501
- }
502
- return X509_V_ERR_PERMITTED_VIOLATION;
503
- }
504
-
505
- if ((base->length != (int)hostlen) || OPENSSL_strncasecmp(hostptr, baseptr, hostlen))
506
- return X509_V_ERR_PERMITTED_VIOLATION;
507
-
508
- return X509_V_OK;
509
-
510
- }
439
+ {
440
+ const char *baseptr = (char *)base->data;
441
+ const char *hostptr = (char *)uri->data;
442
+ const char *p = strchr(hostptr, ':');
443
+ int hostlen;
444
+ /* Check for foo:// and skip past it */
445
+ if (!p || (p[1] != '/') || (p[2] != '/'))
446
+ return X509_V_ERR_UNSUPPORTED_NAME_SYNTAX;
447
+ hostptr = p + 3;
448
+
449
+ /* Determine length of hostname part of URI */
450
+
451
+ /* Look for a port indicator as end of hostname first */
452
+
453
+ p = strchr(hostptr, ':');
454
+ /* Otherwise look for trailing slash */
455
+ if (!p)
456
+ p = strchr(hostptr, '/');
457
+
458
+ if (!p)
459
+ hostlen = strlen(hostptr);
460
+ else
461
+ hostlen = p - hostptr;
462
+
463
+ if (hostlen == 0)
464
+ return X509_V_ERR_UNSUPPORTED_NAME_SYNTAX;
465
+
466
+ /* Special case: inital '.' is RHS match */
467
+ if (*baseptr == '.') {
468
+ if (hostlen > base->length) {
469
+ p = hostptr + hostlen - base->length;
470
+ if (!OPENSSL_strncasecmp(p, baseptr, base->length))
471
+ return X509_V_OK;
472
+ }
473
+ return X509_V_ERR_PERMITTED_VIOLATION;
474
+ }
475
+
476
+ if ((base->length != (int)hostlen)
477
+ || OPENSSL_strncasecmp(hostptr, baseptr, hostlen))
478
+ return X509_V_ERR_PERMITTED_VIOLATION;
479
+
480
+ return X509_V_OK;
481
+
482
+ }