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,7 @@
1
- /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
2
- * project 2004. */
1
+ /*
2
+ * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project
3
+ * 2004.
4
+ */
3
5
  /* ====================================================================
4
6
  * Copyright (c) 2004 The OpenSSL Project. All rights reserved.
5
7
  *
@@ -8,7 +10,7 @@
8
10
  * are met:
9
11
  *
10
12
  * 1. Redistributions of source code must retain the above copyright
11
- * notice, this list of conditions and the following disclaimer.
13
+ * notice, this list of conditions and the following disclaimer.
12
14
  *
13
15
  * 2. Redistributions in binary form must reproduce the above copyright
14
16
  * notice, this list of conditions and the following disclaimer in
@@ -64,609 +66,571 @@
64
66
 
65
67
  #include "vpm_int.h"
66
68
 
67
-
68
69
  /* X509_VERIFY_PARAM functions */
69
70
 
70
71
  #define SET_HOST 0
71
72
  #define ADD_HOST 1
72
73
 
73
- static char *str_copy(char *s) { return OPENSSL_strdup(s); }
74
- static void str_free(char *s) { OPENSSL_free(s); }
74
+ static char *str_copy(char *s)
75
+ {
76
+ return OPENSSL_strdup(s);
77
+ }
78
+
79
+ static void str_free(char *s)
80
+ {
81
+ OPENSSL_free(s);
82
+ }
75
83
 
76
84
  #define string_stack_free(sk) sk_OPENSSL_STRING_pop_free(sk, str_free)
77
85
 
78
86
  static int int_x509_param_set_hosts(X509_VERIFY_PARAM_ID *id, int mode,
79
- const char *name, size_t namelen)
80
- {
81
- char *copy;
82
-
83
- /*
84
- * Refuse names with embedded NUL bytes.
85
- * XXX: Do we need to push an error onto the error stack?
86
- */
87
- if (name && memchr(name, '\0', namelen))
88
- return 0;
89
-
90
- if (mode == SET_HOST && id->hosts)
91
- {
92
- string_stack_free(id->hosts);
93
- id->hosts = NULL;
94
- }
95
- if (name == NULL || namelen == 0)
96
- return 1;
97
-
98
- copy = BUF_strndup(name, namelen);
99
- if (copy == NULL)
100
- return 0;
101
-
102
- if (id->hosts == NULL &&
103
- (id->hosts = sk_OPENSSL_STRING_new_null()) == NULL)
104
- {
105
- OPENSSL_free(copy);
106
- return 0;
107
- }
108
-
109
- if (!sk_OPENSSL_STRING_push(id->hosts, copy))
110
- {
111
- OPENSSL_free(copy);
112
- if (sk_OPENSSL_STRING_num(id->hosts) == 0)
113
- {
114
- sk_OPENSSL_STRING_free(id->hosts);
115
- id->hosts = NULL;
116
- }
117
- return 0;
118
- }
119
-
120
- return 1;
121
- }
87
+ const char *name, size_t namelen)
88
+ {
89
+ char *copy;
90
+
91
+ /*
92
+ * Refuse names with embedded NUL bytes.
93
+ * XXX: Do we need to push an error onto the error stack?
94
+ */
95
+ if (name && memchr(name, '\0', namelen))
96
+ return 0;
97
+
98
+ if (mode == SET_HOST && id->hosts) {
99
+ string_stack_free(id->hosts);
100
+ id->hosts = NULL;
101
+ }
102
+ if (name == NULL || namelen == 0)
103
+ return 1;
104
+
105
+ copy = BUF_strndup(name, namelen);
106
+ if (copy == NULL)
107
+ return 0;
108
+
109
+ if (id->hosts == NULL &&
110
+ (id->hosts = sk_OPENSSL_STRING_new_null()) == NULL) {
111
+ OPENSSL_free(copy);
112
+ return 0;
113
+ }
114
+
115
+ if (!sk_OPENSSL_STRING_push(id->hosts, copy)) {
116
+ OPENSSL_free(copy);
117
+ if (sk_OPENSSL_STRING_num(id->hosts) == 0) {
118
+ sk_OPENSSL_STRING_free(id->hosts);
119
+ id->hosts = NULL;
120
+ }
121
+ return 0;
122
+ }
123
+
124
+ return 1;
125
+ }
122
126
 
123
127
  static void x509_verify_param_zero(X509_VERIFY_PARAM *param)
124
- {
125
- X509_VERIFY_PARAM_ID *paramid;
126
- if (!param)
127
- return;
128
- param->name = NULL;
129
- param->purpose = 0;
130
- param->trust = 0;
131
- /*param->inh_flags = X509_VP_FLAG_DEFAULT;*/
132
- param->inh_flags = 0;
133
- param->flags = 0;
134
- param->depth = -1;
135
- if (param->policies)
136
- {
137
- sk_ASN1_OBJECT_pop_free(param->policies, ASN1_OBJECT_free);
138
- param->policies = NULL;
139
- }
140
- paramid = param->id;
141
- if (paramid->hosts)
142
- {
143
- string_stack_free(paramid->hosts);
144
- paramid->hosts = NULL;
145
- }
146
- if (paramid->peername)
147
- {
148
- OPENSSL_free(paramid->peername);
149
- paramid->peername = NULL;
150
- }
151
- if (paramid->email)
152
- {
153
- OPENSSL_free(paramid->email);
154
- paramid->email = NULL;
155
- paramid->emaillen = 0;
156
- }
157
- if (paramid->ip)
158
- {
159
- OPENSSL_free(paramid->ip);
160
- paramid->ip = NULL;
161
- paramid->iplen = 0;
162
- }
163
-
164
- }
128
+ {
129
+ X509_VERIFY_PARAM_ID *paramid;
130
+ if (!param)
131
+ return;
132
+ param->name = NULL;
133
+ param->purpose = 0;
134
+ param->trust = 0;
135
+ /*
136
+ * param->inh_flags = X509_VP_FLAG_DEFAULT;
137
+ */
138
+ param->inh_flags = 0;
139
+ param->flags = 0;
140
+ param->depth = -1;
141
+ if (param->policies) {
142
+ sk_ASN1_OBJECT_pop_free(param->policies, ASN1_OBJECT_free);
143
+ param->policies = NULL;
144
+ }
145
+ paramid = param->id;
146
+ if (paramid->hosts) {
147
+ string_stack_free(paramid->hosts);
148
+ paramid->hosts = NULL;
149
+ }
150
+ if (paramid->peername) {
151
+ OPENSSL_free(paramid->peername);
152
+ paramid->peername = NULL;
153
+ }
154
+ if (paramid->email) {
155
+ OPENSSL_free(paramid->email);
156
+ paramid->email = NULL;
157
+ paramid->emaillen = 0;
158
+ }
159
+ if (paramid->ip) {
160
+ OPENSSL_free(paramid->ip);
161
+ paramid->ip = NULL;
162
+ paramid->iplen = 0;
163
+ }
164
+
165
+ }
165
166
 
166
167
  X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void)
167
- {
168
- X509_VERIFY_PARAM *param;
169
- X509_VERIFY_PARAM_ID *paramid;
170
- param = OPENSSL_malloc(sizeof(X509_VERIFY_PARAM));
171
- if (!param)
172
- return NULL;
173
- paramid = OPENSSL_malloc(sizeof(X509_VERIFY_PARAM_ID));
174
- if (!paramid)
175
- {
176
- OPENSSL_free(param);
177
- return NULL;
178
- }
179
- memset(param, 0, sizeof(X509_VERIFY_PARAM));
180
- memset(paramid, 0, sizeof(X509_VERIFY_PARAM_ID));
181
- param->id = paramid;
182
- x509_verify_param_zero(param);
183
- return param;
184
- }
168
+ {
169
+ X509_VERIFY_PARAM *param;
170
+ X509_VERIFY_PARAM_ID *paramid;
171
+ param = OPENSSL_malloc(sizeof(X509_VERIFY_PARAM));
172
+ if (!param)
173
+ return NULL;
174
+ paramid = OPENSSL_malloc(sizeof(X509_VERIFY_PARAM_ID));
175
+ if (!paramid) {
176
+ OPENSSL_free(param);
177
+ return NULL;
178
+ }
179
+ memset(param, 0, sizeof(X509_VERIFY_PARAM));
180
+ memset(paramid, 0, sizeof(X509_VERIFY_PARAM_ID));
181
+ param->id = paramid;
182
+ x509_verify_param_zero(param);
183
+ return param;
184
+ }
185
185
 
186
186
  void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param)
187
- {
188
- if (param == NULL)
189
- return;
190
- x509_verify_param_zero(param);
191
- OPENSSL_free(param->id);
192
- OPENSSL_free(param);
193
- }
194
-
195
- /* This function determines how parameters are "inherited" from one structure
196
- * to another. There are several different ways this can happen.
197
- *
198
- * 1. If a child structure needs to have its values initialized from a parent
199
- * they are simply copied across. For example SSL_CTX copied to SSL.
200
- * 2. If the structure should take on values only if they are currently unset.
201
- * For example the values in an SSL structure will take appropriate value
202
- * for SSL servers or clients but only if the application has not set new
203
- * ones.
204
- *
205
- * The "inh_flags" field determines how this function behaves.
206
- *
207
- * Normally any values which are set in the default are not copied from the
208
- * destination and verify flags are ORed together.
209
- *
210
- * If X509_VP_FLAG_DEFAULT is set then anything set in the source is copied
211
- * to the destination. Effectively the values in "to" become default values
212
- * which will be used only if nothing new is set in "from".
213
- *
214
- * If X509_VP_FLAG_OVERWRITE is set then all value are copied across whether
215
- * they are set or not. Flags is still Ored though.
216
- *
217
- * If X509_VP_FLAG_RESET_FLAGS is set then the flags value is copied instead
218
- * of ORed.
219
- *
220
- * If X509_VP_FLAG_LOCKED is set then no values are copied.
221
- *
222
- * If X509_VP_FLAG_ONCE is set then the current inh_flags setting is zeroed
223
- * after the next call.
187
+ {
188
+ if (param == NULL)
189
+ return;
190
+ x509_verify_param_zero(param);
191
+ OPENSSL_free(param->id);
192
+ OPENSSL_free(param);
193
+ }
194
+
195
+ /*
196
+ * This function determines how parameters are "inherited" from one structure
197
+ * to another. There are several different ways this can happen. 1. If a
198
+ * child structure needs to have its values initialized from a parent they are
199
+ * simply copied across. For example SSL_CTX copied to SSL. 2. If the
200
+ * structure should take on values only if they are currently unset. For
201
+ * example the values in an SSL structure will take appropriate value for SSL
202
+ * servers or clients but only if the application has not set new ones. The
203
+ * "inh_flags" field determines how this function behaves. Normally any
204
+ * values which are set in the default are not copied from the destination and
205
+ * verify flags are ORed together. If X509_VP_FLAG_DEFAULT is set then
206
+ * anything set in the source is copied to the destination. Effectively the
207
+ * values in "to" become default values which will be used only if nothing new
208
+ * is set in "from". If X509_VP_FLAG_OVERWRITE is set then all value are
209
+ * copied across whether they are set or not. Flags is still Ored though. If
210
+ * X509_VP_FLAG_RESET_FLAGS is set then the flags value is copied instead of
211
+ * ORed. If X509_VP_FLAG_LOCKED is set then no values are copied. If
212
+ * X509_VP_FLAG_ONCE is set then the current inh_flags setting is zeroed after
213
+ * the next call.
224
214
  */
225
215
 
226
216
  /* Macro to test if a field should be copied from src to dest */
227
217
 
228
218
  #define test_x509_verify_param_copy(field, def) \
229
- (to_overwrite || \
230
- ((src->field != def) && (to_default || (dest->field == def))))
219
+ (to_overwrite || \
220
+ ((src->field != def) && (to_default || (dest->field == def))))
231
221
 
232
222
  /* As above but for ID fields */
233
223
 
234
224
  #define test_x509_verify_param_copy_id(idf, def) \
235
- test_x509_verify_param_copy(id->idf, def)
225
+ test_x509_verify_param_copy(id->idf, def)
236
226
 
237
227
  /* Macro to test and copy a field if necessary */
238
228
 
239
229
  #define x509_verify_param_copy(field, def) \
240
- if (test_x509_verify_param_copy(field, def)) \
241
- dest->field = src->field
242
-
230
+ if (test_x509_verify_param_copy(field, def)) \
231
+ dest->field = src->field
243
232
 
244
233
  int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *dest,
245
- const X509_VERIFY_PARAM *src)
246
- {
247
- unsigned long inh_flags;
248
- int to_default, to_overwrite;
249
- X509_VERIFY_PARAM_ID *id;
250
- if (!src)
251
- return 1;
252
- id = src->id;
253
- inh_flags = dest->inh_flags | src->inh_flags;
254
-
255
- if (inh_flags & X509_VP_FLAG_ONCE)
256
- dest->inh_flags = 0;
257
-
258
- if (inh_flags & X509_VP_FLAG_LOCKED)
259
- return 1;
260
-
261
- if (inh_flags & X509_VP_FLAG_DEFAULT)
262
- to_default = 1;
263
- else
264
- to_default = 0;
265
-
266
- if (inh_flags & X509_VP_FLAG_OVERWRITE)
267
- to_overwrite = 1;
268
- else
269
- to_overwrite = 0;
270
-
271
- x509_verify_param_copy(purpose, 0);
272
- x509_verify_param_copy(trust, 0);
273
- x509_verify_param_copy(depth, -1);
274
-
275
- /* If overwrite or check time not set, copy across */
276
-
277
- if (to_overwrite || !(dest->flags & X509_V_FLAG_USE_CHECK_TIME))
278
- {
279
- dest->check_time = src->check_time;
280
- dest->flags &= ~X509_V_FLAG_USE_CHECK_TIME;
281
- /* Don't need to copy flag: that is done below */
282
- }
283
-
284
- if (inh_flags & X509_VP_FLAG_RESET_FLAGS)
285
- dest->flags = 0;
286
-
287
- dest->flags |= src->flags;
288
-
289
- if (test_x509_verify_param_copy(policies, NULL))
290
- {
291
- if (!X509_VERIFY_PARAM_set1_policies(dest, src->policies))
292
- return 0;
293
- }
294
-
295
- /* Copy the host flags if and only if we're copying the host list */
296
- if (test_x509_verify_param_copy_id(hosts, NULL))
297
- {
298
- if (dest->id->hosts)
299
- {
300
- string_stack_free(dest->id->hosts);
301
- dest->id->hosts = NULL;
302
- }
303
- if (id->hosts)
304
- {
305
- dest->id->hosts =
306
- sk_OPENSSL_STRING_deep_copy(id->hosts,
307
- str_copy, str_free);
308
- if (dest->id->hosts == NULL)
309
- return 0;
310
- dest->id->hostflags = id->hostflags;
311
- }
312
- }
313
-
314
- if (test_x509_verify_param_copy_id(email, NULL))
315
- {
316
- if (!X509_VERIFY_PARAM_set1_email(dest, id->email, id->emaillen))
317
- return 0;
318
- }
319
-
320
- if (test_x509_verify_param_copy_id(ip, NULL))
321
- {
322
- if (!X509_VERIFY_PARAM_set1_ip(dest, id->ip, id->iplen))
323
- return 0;
324
- }
325
-
326
- return 1;
327
- }
234
+ const X509_VERIFY_PARAM *src)
235
+ {
236
+ unsigned long inh_flags;
237
+ int to_default, to_overwrite;
238
+ X509_VERIFY_PARAM_ID *id;
239
+ if (!src)
240
+ return 1;
241
+ id = src->id;
242
+ inh_flags = dest->inh_flags | src->inh_flags;
243
+
244
+ if (inh_flags & X509_VP_FLAG_ONCE)
245
+ dest->inh_flags = 0;
246
+
247
+ if (inh_flags & X509_VP_FLAG_LOCKED)
248
+ return 1;
249
+
250
+ if (inh_flags & X509_VP_FLAG_DEFAULT)
251
+ to_default = 1;
252
+ else
253
+ to_default = 0;
254
+
255
+ if (inh_flags & X509_VP_FLAG_OVERWRITE)
256
+ to_overwrite = 1;
257
+ else
258
+ to_overwrite = 0;
259
+
260
+ x509_verify_param_copy(purpose, 0);
261
+ x509_verify_param_copy(trust, 0);
262
+ x509_verify_param_copy(depth, -1);
263
+
264
+ /* If overwrite or check time not set, copy across */
265
+
266
+ if (to_overwrite || !(dest->flags & X509_V_FLAG_USE_CHECK_TIME)) {
267
+ dest->check_time = src->check_time;
268
+ dest->flags &= ~X509_V_FLAG_USE_CHECK_TIME;
269
+ /* Don't need to copy flag: that is done below */
270
+ }
271
+
272
+ if (inh_flags & X509_VP_FLAG_RESET_FLAGS)
273
+ dest->flags = 0;
274
+
275
+ dest->flags |= src->flags;
276
+
277
+ if (test_x509_verify_param_copy(policies, NULL)) {
278
+ if (!X509_VERIFY_PARAM_set1_policies(dest, src->policies))
279
+ return 0;
280
+ }
281
+
282
+ /* Copy the host flags if and only if we're copying the host list */
283
+ if (test_x509_verify_param_copy_id(hosts, NULL)) {
284
+ if (dest->id->hosts) {
285
+ string_stack_free(dest->id->hosts);
286
+ dest->id->hosts = NULL;
287
+ }
288
+ if (id->hosts) {
289
+ dest->id->hosts =
290
+ sk_OPENSSL_STRING_deep_copy(id->hosts, str_copy, str_free);
291
+ if (dest->id->hosts == NULL)
292
+ return 0;
293
+ dest->id->hostflags = id->hostflags;
294
+ }
295
+ }
296
+
297
+ if (test_x509_verify_param_copy_id(email, NULL)) {
298
+ if (!X509_VERIFY_PARAM_set1_email(dest, id->email, id->emaillen))
299
+ return 0;
300
+ }
301
+
302
+ if (test_x509_verify_param_copy_id(ip, NULL)) {
303
+ if (!X509_VERIFY_PARAM_set1_ip(dest, id->ip, id->iplen))
304
+ return 0;
305
+ }
306
+
307
+ return 1;
308
+ }
328
309
 
329
310
  int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to,
330
- const X509_VERIFY_PARAM *from)
331
- {
332
- unsigned long save_flags = to->inh_flags;
333
- int ret;
334
- to->inh_flags |= X509_VP_FLAG_DEFAULT;
335
- ret = X509_VERIFY_PARAM_inherit(to, from);
336
- to->inh_flags = save_flags;
337
- return ret;
338
- }
311
+ const X509_VERIFY_PARAM *from)
312
+ {
313
+ unsigned long save_flags = to->inh_flags;
314
+ int ret;
315
+ to->inh_flags |= X509_VP_FLAG_DEFAULT;
316
+ ret = X509_VERIFY_PARAM_inherit(to, from);
317
+ to->inh_flags = save_flags;
318
+ return ret;
319
+ }
339
320
 
340
321
  static int int_x509_param_set1(char **pdest, size_t *pdestlen,
341
- const char *src, size_t srclen)
342
- {
343
- void *tmp;
344
- if (src)
345
- {
346
- if (srclen == 0)
347
- {
348
- tmp = BUF_strdup(src);
349
- srclen = strlen(src);
350
- }
351
- else
352
- tmp = BUF_memdup(src, srclen);
353
- if (!tmp)
354
- return 0;
355
- }
356
- else
357
- {
358
- tmp = NULL;
359
- srclen = 0;
360
- }
361
- if (*pdest)
362
- OPENSSL_free(*pdest);
363
- *pdest = tmp;
364
- if (pdestlen)
365
- *pdestlen = srclen;
366
- return 1;
367
- }
322
+ const char *src, size_t srclen)
323
+ {
324
+ void *tmp;
325
+ if (src) {
326
+ if (srclen == 0) {
327
+ tmp = BUF_strdup(src);
328
+ srclen = strlen(src);
329
+ } else
330
+ tmp = BUF_memdup(src, srclen);
331
+ if (!tmp)
332
+ return 0;
333
+ } else {
334
+ tmp = NULL;
335
+ srclen = 0;
336
+ }
337
+ if (*pdest)
338
+ OPENSSL_free(*pdest);
339
+ *pdest = tmp;
340
+ if (pdestlen)
341
+ *pdestlen = srclen;
342
+ return 1;
343
+ }
368
344
 
369
345
  int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name)
370
- {
371
- if (param->name)
372
- OPENSSL_free(param->name);
373
- param->name = BUF_strdup(name);
374
- if (param->name)
375
- return 1;
376
- return 0;
377
- }
346
+ {
347
+ if (param->name)
348
+ OPENSSL_free(param->name);
349
+ param->name = BUF_strdup(name);
350
+ if (param->name)
351
+ return 1;
352
+ return 0;
353
+ }
378
354
 
379
355
  int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, unsigned long flags)
380
- {
381
- param->flags |= flags;
382
- if (flags & X509_V_FLAG_POLICY_MASK)
383
- param->flags |= X509_V_FLAG_POLICY_CHECK;
384
- return 1;
385
- }
386
-
387
- int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, unsigned long flags)
388
- {
389
- param->flags &= ~flags;
390
- return 1;
391
- }
356
+ {
357
+ param->flags |= flags;
358
+ if (flags & X509_V_FLAG_POLICY_MASK)
359
+ param->flags |= X509_V_FLAG_POLICY_CHECK;
360
+ return 1;
361
+ }
362
+
363
+ int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param,
364
+ unsigned long flags)
365
+ {
366
+ param->flags &= ~flags;
367
+ return 1;
368
+ }
392
369
 
393
370
  unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *param)
394
- {
395
- return param->flags;
396
- }
371
+ {
372
+ return param->flags;
373
+ }
397
374
 
398
375
  int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose)
399
- {
400
- return X509_PURPOSE_set(&param->purpose, purpose);
401
- }
376
+ {
377
+ return X509_PURPOSE_set(&param->purpose, purpose);
378
+ }
402
379
 
403
380
  int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust)
404
- {
405
- return X509_TRUST_set(&param->trust, trust);
406
- }
381
+ {
382
+ return X509_TRUST_set(&param->trust, trust);
383
+ }
407
384
 
408
385
  void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth)
409
- {
410
- param->depth = depth;
411
- }
386
+ {
387
+ param->depth = depth;
388
+ }
412
389
 
413
390
  void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t)
414
- {
415
- param->check_time = t;
416
- param->flags |= X509_V_FLAG_USE_CHECK_TIME;
417
- }
418
-
419
- int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, ASN1_OBJECT *policy)
420
- {
421
- if (!param->policies)
422
- {
423
- param->policies = sk_ASN1_OBJECT_new_null();
424
- if (!param->policies)
425
- return 0;
426
- }
427
- if (!sk_ASN1_OBJECT_push(param->policies, policy))
428
- return 0;
429
- return 1;
430
- }
431
-
432
- int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param,
433
- STACK_OF(ASN1_OBJECT) *policies)
434
- {
435
- size_t i;
436
- ASN1_OBJECT *oid, *doid;
437
- if (!param)
438
- return 0;
439
- if (param->policies)
440
- sk_ASN1_OBJECT_pop_free(param->policies, ASN1_OBJECT_free);
441
-
442
- if (!policies)
443
- {
444
- param->policies = NULL;
445
- return 1;
446
- }
447
-
448
- param->policies = sk_ASN1_OBJECT_new_null();
449
- if (!param->policies)
450
- return 0;
451
-
452
- for (i = 0; i < sk_ASN1_OBJECT_num(policies); i++)
453
- {
454
- oid = sk_ASN1_OBJECT_value(policies, i);
455
- doid = OBJ_dup(oid);
456
- if (!doid)
457
- return 0;
458
- if (!sk_ASN1_OBJECT_push(param->policies, doid))
459
- {
460
- ASN1_OBJECT_free(doid);
461
- return 0;
462
- }
463
- }
464
- param->flags |= X509_V_FLAG_POLICY_CHECK;
465
- return 1;
466
- }
391
+ {
392
+ param->check_time = t;
393
+ param->flags |= X509_V_FLAG_USE_CHECK_TIME;
394
+ }
395
+
396
+ int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param,
397
+ ASN1_OBJECT *policy)
398
+ {
399
+ if (!param->policies) {
400
+ param->policies = sk_ASN1_OBJECT_new_null();
401
+ if (!param->policies)
402
+ return 0;
403
+ }
404
+ if (!sk_ASN1_OBJECT_push(param->policies, policy))
405
+ return 0;
406
+ return 1;
407
+ }
408
+
409
+ int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param,
410
+ STACK_OF(ASN1_OBJECT) *policies)
411
+ {
412
+ size_t i;
413
+ ASN1_OBJECT *oid, *doid;
414
+ if (!param)
415
+ return 0;
416
+ if (param->policies)
417
+ sk_ASN1_OBJECT_pop_free(param->policies, ASN1_OBJECT_free);
418
+
419
+ if (!policies) {
420
+ param->policies = NULL;
421
+ return 1;
422
+ }
423
+
424
+ param->policies = sk_ASN1_OBJECT_new_null();
425
+ if (!param->policies)
426
+ return 0;
427
+
428
+ for (i = 0; i < sk_ASN1_OBJECT_num(policies); i++) {
429
+ oid = sk_ASN1_OBJECT_value(policies, i);
430
+ doid = OBJ_dup(oid);
431
+ if (!doid)
432
+ return 0;
433
+ if (!sk_ASN1_OBJECT_push(param->policies, doid)) {
434
+ ASN1_OBJECT_free(doid);
435
+ return 0;
436
+ }
437
+ }
438
+ param->flags |= X509_V_FLAG_POLICY_CHECK;
439
+ return 1;
440
+ }
467
441
 
468
442
  int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param,
469
- const char *name, size_t namelen)
470
- {
471
- return int_x509_param_set_hosts(param->id, SET_HOST, name, namelen);
472
- }
443
+ const char *name, size_t namelen)
444
+ {
445
+ return int_x509_param_set_hosts(param->id, SET_HOST, name, namelen);
446
+ }
473
447
 
474
448
  int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param,
475
- const char *name, size_t namelen)
476
- {
477
- return int_x509_param_set_hosts(param->id, ADD_HOST, name, namelen);
478
- }
449
+ const char *name, size_t namelen)
450
+ {
451
+ return int_x509_param_set_hosts(param->id, ADD_HOST, name, namelen);
452
+ }
479
453
 
480
454
  void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param,
481
- unsigned int flags)
482
- {
483
- param->id->hostflags = flags;
484
- }
455
+ unsigned int flags)
456
+ {
457
+ param->id->hostflags = flags;
458
+ }
485
459
 
486
460
  char *X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *param)
487
- {
488
- return param->id->peername;
489
- }
461
+ {
462
+ return param->id->peername;
463
+ }
490
464
 
491
465
  int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param,
492
- const char *email, size_t emaillen)
493
- {
494
- return int_x509_param_set1(&param->id->email, &param->id->emaillen,
495
- email, emaillen);
496
- }
466
+ const char *email, size_t emaillen)
467
+ {
468
+ return int_x509_param_set1(&param->id->email, &param->id->emaillen,
469
+ email, emaillen);
470
+ }
497
471
 
498
472
  int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param,
499
- const unsigned char *ip, size_t iplen)
500
- {
501
- if (iplen != 0 && iplen != 4 && iplen != 16)
502
- return 0;
503
- return int_x509_param_set1((char **)&param->id->ip, &param->id->iplen,
504
- (char *)ip, iplen);
505
- }
473
+ const unsigned char *ip, size_t iplen)
474
+ {
475
+ if (iplen != 0 && iplen != 4 && iplen != 16)
476
+ return 0;
477
+ return int_x509_param_set1((char **)&param->id->ip, &param->id->iplen,
478
+ (char *)ip, iplen);
479
+ }
506
480
 
507
481
  int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, const char *ipasc)
508
- {
509
- unsigned char ipout[16];
510
- size_t iplen;
482
+ {
483
+ unsigned char ipout[16];
484
+ size_t iplen;
511
485
 
512
- iplen = (size_t) a2i_ipadd(ipout, ipasc);
513
- if (iplen == 0)
514
- return 0;
515
- return X509_VERIFY_PARAM_set1_ip(param, ipout, iplen);
516
- }
486
+ iplen = (size_t)a2i_ipadd(ipout, ipasc);
487
+ if (iplen == 0)
488
+ return 0;
489
+ return X509_VERIFY_PARAM_set1_ip(param, ipout, iplen);
490
+ }
517
491
 
518
492
  int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param)
519
- {
520
- return param->depth;
521
- }
493
+ {
494
+ return param->depth;
495
+ }
522
496
 
523
497
  const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param)
524
- {
525
- return param->name;
526
- }
498
+ {
499
+ return param->name;
500
+ }
527
501
 
528
- static const X509_VERIFY_PARAM_ID _empty_id = {NULL, 0U, NULL, NULL, 0, NULL, 0};
502
+ static const X509_VERIFY_PARAM_ID _empty_id =
503
+ { NULL, 0U, NULL, NULL, 0, NULL, 0 };
529
504
 
530
505
  #define vpm_empty_id (X509_VERIFY_PARAM_ID *)&_empty_id
531
506
 
532
- /* Default verify parameters: these are used for various
533
- * applications and can be overridden by the user specified table.
534
- * NB: the 'name' field *must* be in alphabetical order because it
535
- * will be searched using OBJ_search.
507
+ /*
508
+ * Default verify parameters: these are used for various applications and can
509
+ * be overridden by the user specified table. NB: the 'name' field *must* be
510
+ * in alphabetical order because it will be searched using OBJ_search.
536
511
  */
537
512
 
538
513
  static const X509_VERIFY_PARAM default_table[] = {
539
- {
540
- (char *) "default", /* X509 default parameters */
541
- 0, /* Check time */
542
- 0, /* internal flags */
543
- 0, /* flags */
544
- 0, /* purpose */
545
- 0, /* trust */
546
- 100, /* depth */
547
- NULL, /* policies */
548
- vpm_empty_id
549
- },
550
- {
551
- (char *) "pkcs7", /* S/MIME sign parameters */
552
- 0, /* Check time */
553
- 0, /* internal flags */
554
- 0, /* flags */
555
- X509_PURPOSE_SMIME_SIGN, /* purpose */
556
- X509_TRUST_EMAIL, /* trust */
557
- -1, /* depth */
558
- NULL, /* policies */
559
- vpm_empty_id
560
- },
561
- {
562
- (char *) "smime_sign", /* S/MIME sign parameters */
563
- 0, /* Check time */
564
- 0, /* internal flags */
565
- 0, /* flags */
566
- X509_PURPOSE_SMIME_SIGN, /* purpose */
567
- X509_TRUST_EMAIL, /* trust */
568
- -1, /* depth */
569
- NULL, /* policies */
570
- vpm_empty_id
571
- },
572
- {
573
- (char *) "ssl_client", /* SSL/TLS client parameters */
574
- 0, /* Check time */
575
- 0, /* internal flags */
576
- 0, /* flags */
577
- X509_PURPOSE_SSL_CLIENT, /* purpose */
578
- X509_TRUST_SSL_CLIENT, /* trust */
579
- -1, /* depth */
580
- NULL, /* policies */
581
- vpm_empty_id
582
- },
583
- {
584
- (char *) "ssl_server", /* SSL/TLS server parameters */
585
- 0, /* Check time */
586
- 0, /* internal flags */
587
- 0, /* flags */
588
- X509_PURPOSE_SSL_SERVER, /* purpose */
589
- X509_TRUST_SSL_SERVER, /* trust */
590
- -1, /* depth */
591
- NULL, /* policies */
592
- vpm_empty_id
593
- }};
514
+ {
515
+ (char *)"default", /* X509 default parameters */
516
+ 0, /* Check time */
517
+ 0, /* internal flags */
518
+ 0, /* flags */
519
+ 0, /* purpose */
520
+ 0, /* trust */
521
+ 100, /* depth */
522
+ NULL, /* policies */
523
+ vpm_empty_id},
524
+ {
525
+ (char *)"pkcs7", /* S/MIME sign parameters */
526
+ 0, /* Check time */
527
+ 0, /* internal flags */
528
+ 0, /* flags */
529
+ X509_PURPOSE_SMIME_SIGN, /* purpose */
530
+ X509_TRUST_EMAIL, /* trust */
531
+ -1, /* depth */
532
+ NULL, /* policies */
533
+ vpm_empty_id},
534
+ {
535
+ (char *)"smime_sign", /* S/MIME sign parameters */
536
+ 0, /* Check time */
537
+ 0, /* internal flags */
538
+ 0, /* flags */
539
+ X509_PURPOSE_SMIME_SIGN, /* purpose */
540
+ X509_TRUST_EMAIL, /* trust */
541
+ -1, /* depth */
542
+ NULL, /* policies */
543
+ vpm_empty_id},
544
+ {
545
+ (char *)"ssl_client", /* SSL/TLS client parameters */
546
+ 0, /* Check time */
547
+ 0, /* internal flags */
548
+ 0, /* flags */
549
+ X509_PURPOSE_SSL_CLIENT, /* purpose */
550
+ X509_TRUST_SSL_CLIENT, /* trust */
551
+ -1, /* depth */
552
+ NULL, /* policies */
553
+ vpm_empty_id},
554
+ {
555
+ (char *)"ssl_server", /* SSL/TLS server parameters */
556
+ 0, /* Check time */
557
+ 0, /* internal flags */
558
+ 0, /* flags */
559
+ X509_PURPOSE_SSL_SERVER, /* purpose */
560
+ X509_TRUST_SSL_SERVER, /* trust */
561
+ -1, /* depth */
562
+ NULL, /* policies */
563
+ vpm_empty_id}
564
+ };
594
565
 
595
566
  static STACK_OF(X509_VERIFY_PARAM) *param_table = NULL;
596
567
 
597
- static int param_cmp(const X509_VERIFY_PARAM **a,
598
- const X509_VERIFY_PARAM **b)
599
- {
600
- return strcmp((*a)->name, (*b)->name);
601
- }
568
+ static int param_cmp(const X509_VERIFY_PARAM **a, const X509_VERIFY_PARAM **b)
569
+ {
570
+ return strcmp((*a)->name, (*b)->name);
571
+ }
602
572
 
603
573
  int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param)
604
- {
605
- X509_VERIFY_PARAM *ptmp;
606
- if (!param_table)
607
- {
608
- param_table = sk_X509_VERIFY_PARAM_new(param_cmp);
609
- if (!param_table)
610
- return 0;
611
- }
612
- else
613
- {
614
- size_t idx;
615
-
616
- if (sk_X509_VERIFY_PARAM_find(param_table, &idx, param))
617
- {
618
- ptmp = sk_X509_VERIFY_PARAM_value(param_table, idx);
619
- X509_VERIFY_PARAM_free(ptmp);
620
- (void)sk_X509_VERIFY_PARAM_delete(param_table, idx);
621
- }
622
- }
623
- if (!sk_X509_VERIFY_PARAM_push(param_table, param))
624
- return 0;
625
- return 1;
626
- }
574
+ {
575
+ X509_VERIFY_PARAM *ptmp;
576
+ if (!param_table) {
577
+ param_table = sk_X509_VERIFY_PARAM_new(param_cmp);
578
+ if (!param_table)
579
+ return 0;
580
+ } else {
581
+ size_t idx;
582
+
583
+ if (sk_X509_VERIFY_PARAM_find(param_table, &idx, param)) {
584
+ ptmp = sk_X509_VERIFY_PARAM_value(param_table, idx);
585
+ X509_VERIFY_PARAM_free(ptmp);
586
+ (void)sk_X509_VERIFY_PARAM_delete(param_table, idx);
587
+ }
588
+ }
589
+ if (!sk_X509_VERIFY_PARAM_push(param_table, param))
590
+ return 0;
591
+ return 1;
592
+ }
627
593
 
628
594
  int X509_VERIFY_PARAM_get_count(void)
629
- {
630
- int num = sizeof(default_table)/sizeof(X509_VERIFY_PARAM);
631
- if (param_table)
632
- num += sk_X509_VERIFY_PARAM_num(param_table);
633
- return num;
634
- }
595
+ {
596
+ int num = sizeof(default_table) / sizeof(X509_VERIFY_PARAM);
597
+ if (param_table)
598
+ num += sk_X509_VERIFY_PARAM_num(param_table);
599
+ return num;
600
+ }
635
601
 
636
602
  const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id)
637
- {
638
- int num = sizeof(default_table)/sizeof(X509_VERIFY_PARAM);
639
- if (id < num)
640
- return default_table + id;
641
- return sk_X509_VERIFY_PARAM_value(param_table, id - num);
642
- }
603
+ {
604
+ int num = sizeof(default_table) / sizeof(X509_VERIFY_PARAM);
605
+ if (id < num)
606
+ return default_table + id;
607
+ return sk_X509_VERIFY_PARAM_value(param_table, id - num);
608
+ }
643
609
 
644
610
  const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name)
645
- {
646
- X509_VERIFY_PARAM pm;
647
- unsigned i, limit;
648
-
649
- pm.name = (char *)name;
650
- if (param_table)
651
- {
652
- size_t idx;
653
- if (sk_X509_VERIFY_PARAM_find(param_table, &idx, &pm))
654
- return sk_X509_VERIFY_PARAM_value(param_table, idx);
655
- }
656
-
657
- limit = sizeof(default_table)/sizeof(X509_VERIFY_PARAM);
658
- for (i = 0; i < limit; i++) {
659
- if (strcmp(default_table[i].name, name) == 0) {
660
- return &default_table[i];
661
- }
662
- }
663
- return NULL;
664
- }
611
+ {
612
+ X509_VERIFY_PARAM pm;
613
+ unsigned i, limit;
614
+
615
+ pm.name = (char *)name;
616
+ if (param_table) {
617
+ size_t idx;
618
+ if (sk_X509_VERIFY_PARAM_find(param_table, &idx, &pm))
619
+ return sk_X509_VERIFY_PARAM_value(param_table, idx);
620
+ }
621
+
622
+ limit = sizeof(default_table) / sizeof(X509_VERIFY_PARAM);
623
+ for (i = 0; i < limit; i++) {
624
+ if (strcmp(default_table[i].name, name) == 0) {
625
+ return &default_table[i];
626
+ }
627
+ }
628
+ return NULL;
629
+ }
665
630
 
666
631
  void X509_VERIFY_PARAM_table_cleanup(void)
667
- {
668
- if (param_table)
669
- sk_X509_VERIFY_PARAM_pop_free(param_table,
670
- X509_VERIFY_PARAM_free);
671
- param_table = NULL;
672
- }
632
+ {
633
+ if (param_table)
634
+ sk_X509_VERIFY_PARAM_pop_free(param_table, X509_VERIFY_PARAM_free);
635
+ param_table = NULL;
636
+ }