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
@@ -58,48 +58,49 @@
58
58
  #include <openssl/err.h>
59
59
  #include <openssl/x509.h>
60
60
 
61
-
62
61
  #ifndef OPENSSL_NO_STDIO
63
62
  int X509_STORE_set_default_paths(X509_STORE *ctx)
64
- {
65
- X509_LOOKUP *lookup;
63
+ {
64
+ X509_LOOKUP *lookup;
65
+
66
+ lookup = X509_STORE_add_lookup(ctx, X509_LOOKUP_file());
67
+ if (lookup == NULL)
68
+ return (0);
69
+ X509_LOOKUP_load_file(lookup, NULL, X509_FILETYPE_DEFAULT);
66
70
 
67
- lookup=X509_STORE_add_lookup(ctx,X509_LOOKUP_file());
68
- if (lookup == NULL) return(0);
69
- X509_LOOKUP_load_file(lookup,NULL,X509_FILETYPE_DEFAULT);
71
+ lookup = X509_STORE_add_lookup(ctx, X509_LOOKUP_hash_dir());
72
+ if (lookup == NULL)
73
+ return (0);
74
+ X509_LOOKUP_add_dir(lookup, NULL, X509_FILETYPE_DEFAULT);
70
75
 
71
- lookup=X509_STORE_add_lookup(ctx,X509_LOOKUP_hash_dir());
72
- if (lookup == NULL) return(0);
73
- X509_LOOKUP_add_dir(lookup,NULL,X509_FILETYPE_DEFAULT);
74
-
75
- /* clear any errors */
76
- ERR_clear_error();
76
+ /* clear any errors */
77
+ ERR_clear_error();
77
78
 
78
- return(1);
79
- }
79
+ return (1);
80
+ }
80
81
 
81
82
  int X509_STORE_load_locations(X509_STORE *ctx, const char *file,
82
- const char *path)
83
- {
84
- X509_LOOKUP *lookup;
83
+ const char *path)
84
+ {
85
+ X509_LOOKUP *lookup;
85
86
 
86
- if (file != NULL)
87
- {
88
- lookup=X509_STORE_add_lookup(ctx,X509_LOOKUP_file());
89
- if (lookup == NULL) return(0);
90
- if (X509_LOOKUP_load_file(lookup,file,X509_FILETYPE_PEM) != 1)
91
- return(0);
92
- }
93
- if (path != NULL)
94
- {
95
- lookup=X509_STORE_add_lookup(ctx,X509_LOOKUP_hash_dir());
96
- if (lookup == NULL) return(0);
97
- if (X509_LOOKUP_add_dir(lookup,path,X509_FILETYPE_PEM) != 1)
98
- return(0);
99
- }
100
- if ((path == NULL) && (file == NULL))
101
- return(0);
102
- return(1);
103
- }
87
+ if (file != NULL) {
88
+ lookup = X509_STORE_add_lookup(ctx, X509_LOOKUP_file());
89
+ if (lookup == NULL)
90
+ return (0);
91
+ if (X509_LOOKUP_load_file(lookup, file, X509_FILETYPE_PEM) != 1)
92
+ return (0);
93
+ }
94
+ if (path != NULL) {
95
+ lookup = X509_STORE_add_lookup(ctx, X509_LOOKUP_hash_dir());
96
+ if (lookup == NULL)
97
+ return (0);
98
+ if (X509_LOOKUP_add_dir(lookup, path, X509_FILETYPE_PEM) != 1)
99
+ return (0);
100
+ }
101
+ if ((path == NULL) && (file == NULL))
102
+ return (0);
103
+ return (1);
104
+ }
104
105
 
105
106
  #endif
@@ -57,32 +57,42 @@
57
57
 
58
58
  #include <openssl/x509.h>
59
59
 
60
-
61
60
  /* TODO(fork): cleanup */
62
61
 
63
62
  #define OPENSSLDIR "/etc/ssl"
64
- #define X509_CERT_AREA OPENSSLDIR
65
- #define X509_CERT_DIR OPENSSLDIR "/certs"
66
- #define X509_CERT_FILE OPENSSLDIR "/cert.pem"
67
- #define X509_PRIVATE_DIR OPENSSLDIR "/private"
63
+ #define X509_CERT_AREA OPENSSLDIR
64
+ #define X509_CERT_DIR OPENSSLDIR "/certs"
65
+ #define X509_CERT_FILE OPENSSLDIR "/cert.pem"
66
+ #define X509_PRIVATE_DIR OPENSSLDIR "/private"
68
67
  #define X509_CERT_DIR_EVP "SSL_CERT_DIR"
69
68
  #define X509_CERT_FILE_EVP "SSL_CERT_FILE"
70
69
 
71
70
  const char *X509_get_default_private_dir(void)
72
- { return(X509_PRIVATE_DIR); }
73
-
71
+ {
72
+ return (X509_PRIVATE_DIR);
73
+ }
74
+
74
75
  const char *X509_get_default_cert_area(void)
75
- { return(X509_CERT_AREA); }
76
+ {
77
+ return (X509_CERT_AREA);
78
+ }
76
79
 
77
80
  const char *X509_get_default_cert_dir(void)
78
- { return(X509_CERT_DIR); }
81
+ {
82
+ return (X509_CERT_DIR);
83
+ }
79
84
 
80
85
  const char *X509_get_default_cert_file(void)
81
- { return(X509_CERT_FILE); }
86
+ {
87
+ return (X509_CERT_FILE);
88
+ }
82
89
 
83
90
  const char *X509_get_default_cert_dir_env(void)
84
- { return(X509_CERT_DIR_EVP); }
91
+ {
92
+ return (X509_CERT_DIR_EVP);
93
+ }
85
94
 
86
95
  const char *X509_get_default_cert_file_env(void)
87
- { return(X509_CERT_FILE_EVP); }
88
-
96
+ {
97
+ return (X509_CERT_FILE_EVP);
98
+ }
@@ -62,145 +62,145 @@
62
62
  #include <openssl/x509.h>
63
63
  #include <openssl/x509v3.h>
64
64
 
65
-
66
65
  int X509_CRL_get_ext_count(X509_CRL *x)
67
- {
68
- return(X509v3_get_ext_count(x->crl->extensions));
69
- }
66
+ {
67
+ return (X509v3_get_ext_count(x->crl->extensions));
68
+ }
70
69
 
71
70
  int X509_CRL_get_ext_by_NID(X509_CRL *x, int nid, int lastpos)
72
- {
73
- return(X509v3_get_ext_by_NID(x->crl->extensions,nid,lastpos));
74
- }
71
+ {
72
+ return (X509v3_get_ext_by_NID(x->crl->extensions, nid, lastpos));
73
+ }
75
74
 
76
75
  int X509_CRL_get_ext_by_OBJ(X509_CRL *x, ASN1_OBJECT *obj, int lastpos)
77
- {
78
- return(X509v3_get_ext_by_OBJ(x->crl->extensions,obj,lastpos));
79
- }
76
+ {
77
+ return (X509v3_get_ext_by_OBJ(x->crl->extensions, obj, lastpos));
78
+ }
80
79
 
81
80
  int X509_CRL_get_ext_by_critical(X509_CRL *x, int crit, int lastpos)
82
- {
83
- return(X509v3_get_ext_by_critical(x->crl->extensions,crit,lastpos));
84
- }
81
+ {
82
+ return (X509v3_get_ext_by_critical(x->crl->extensions, crit, lastpos));
83
+ }
85
84
 
86
85
  X509_EXTENSION *X509_CRL_get_ext(X509_CRL *x, int loc)
87
- {
88
- return(X509v3_get_ext(x->crl->extensions,loc));
89
- }
86
+ {
87
+ return (X509v3_get_ext(x->crl->extensions, loc));
88
+ }
90
89
 
91
90
  X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc)
92
- {
93
- return(X509v3_delete_ext(x->crl->extensions,loc));
94
- }
91
+ {
92
+ return (X509v3_delete_ext(x->crl->extensions, loc));
93
+ }
95
94
 
96
95
  void *X509_CRL_get_ext_d2i(X509_CRL *x, int nid, int *crit, int *idx)
97
96
  {
98
- return X509V3_get_d2i(x->crl->extensions, nid, crit, idx);
97
+ return X509V3_get_d2i(x->crl->extensions, nid, crit, idx);
99
98
  }
100
99
 
101
100
  int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit,
102
- unsigned long flags)
101
+ unsigned long flags)
103
102
  {
104
- return X509V3_add1_i2d(&x->crl->extensions, nid, value, crit, flags);
103
+ return X509V3_add1_i2d(&x->crl->extensions, nid, value, crit, flags);
105
104
  }
106
105
 
107
106
  int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc)
108
- {
109
- return(X509v3_add_ext(&(x->crl->extensions),ex,loc) != NULL);
110
- }
107
+ {
108
+ return (X509v3_add_ext(&(x->crl->extensions), ex, loc) != NULL);
109
+ }
111
110
 
112
111
  int X509_get_ext_count(X509 *x)
113
- {
114
- return(X509v3_get_ext_count(x->cert_info->extensions));
115
- }
112
+ {
113
+ return (X509v3_get_ext_count(x->cert_info->extensions));
114
+ }
116
115
 
117
116
  int X509_get_ext_by_NID(X509 *x, int nid, int lastpos)
118
- {
119
- return(X509v3_get_ext_by_NID(x->cert_info->extensions,nid,lastpos));
120
- }
117
+ {
118
+ return (X509v3_get_ext_by_NID(x->cert_info->extensions, nid, lastpos));
119
+ }
121
120
 
122
121
  int X509_get_ext_by_OBJ(X509 *x, ASN1_OBJECT *obj, int lastpos)
123
- {
124
- return(X509v3_get_ext_by_OBJ(x->cert_info->extensions,obj,lastpos));
125
- }
122
+ {
123
+ return (X509v3_get_ext_by_OBJ(x->cert_info->extensions, obj, lastpos));
124
+ }
126
125
 
127
126
  int X509_get_ext_by_critical(X509 *x, int crit, int lastpos)
128
- {
129
- return(X509v3_get_ext_by_critical(x->cert_info->extensions,crit,lastpos));
130
- }
127
+ {
128
+ return (X509v3_get_ext_by_critical
129
+ (x->cert_info->extensions, crit, lastpos));
130
+ }
131
131
 
132
132
  X509_EXTENSION *X509_get_ext(X509 *x, int loc)
133
- {
134
- return(X509v3_get_ext(x->cert_info->extensions,loc));
135
- }
133
+ {
134
+ return (X509v3_get_ext(x->cert_info->extensions, loc));
135
+ }
136
136
 
137
137
  X509_EXTENSION *X509_delete_ext(X509 *x, int loc)
138
- {
139
- return(X509v3_delete_ext(x->cert_info->extensions,loc));
140
- }
138
+ {
139
+ return (X509v3_delete_ext(x->cert_info->extensions, loc));
140
+ }
141
141
 
142
142
  int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc)
143
- {
144
- return(X509v3_add_ext(&(x->cert_info->extensions),ex,loc) != NULL);
145
- }
143
+ {
144
+ return (X509v3_add_ext(&(x->cert_info->extensions), ex, loc) != NULL);
145
+ }
146
146
 
147
147
  void *X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx)
148
148
  {
149
- return X509V3_get_d2i(x->cert_info->extensions, nid, crit, idx);
149
+ return X509V3_get_d2i(x->cert_info->extensions, nid, crit, idx);
150
150
  }
151
151
 
152
152
  int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit,
153
- unsigned long flags)
153
+ unsigned long flags)
154
154
  {
155
- return X509V3_add1_i2d(&x->cert_info->extensions, nid, value, crit,
156
- flags);
155
+ return X509V3_add1_i2d(&x->cert_info->extensions, nid, value, crit,
156
+ flags);
157
157
  }
158
158
 
159
159
  int X509_REVOKED_get_ext_count(X509_REVOKED *x)
160
- {
161
- return(X509v3_get_ext_count(x->extensions));
162
- }
160
+ {
161
+ return (X509v3_get_ext_count(x->extensions));
162
+ }
163
163
 
164
164
  int X509_REVOKED_get_ext_by_NID(X509_REVOKED *x, int nid, int lastpos)
165
- {
166
- return(X509v3_get_ext_by_NID(x->extensions,nid,lastpos));
167
- }
165
+ {
166
+ return (X509v3_get_ext_by_NID(x->extensions, nid, lastpos));
167
+ }
168
168
 
169
169
  int X509_REVOKED_get_ext_by_OBJ(X509_REVOKED *x, ASN1_OBJECT *obj,
170
- int lastpos)
171
- {
172
- return(X509v3_get_ext_by_OBJ(x->extensions,obj,lastpos));
173
- }
170
+ int lastpos)
171
+ {
172
+ return (X509v3_get_ext_by_OBJ(x->extensions, obj, lastpos));
173
+ }
174
174
 
175
175
  int X509_REVOKED_get_ext_by_critical(X509_REVOKED *x, int crit, int lastpos)
176
- {
177
- return(X509v3_get_ext_by_critical(x->extensions,crit,lastpos));
178
- }
176
+ {
177
+ return (X509v3_get_ext_by_critical(x->extensions, crit, lastpos));
178
+ }
179
179
 
180
180
  X509_EXTENSION *X509_REVOKED_get_ext(X509_REVOKED *x, int loc)
181
- {
182
- return(X509v3_get_ext(x->extensions,loc));
183
- }
181
+ {
182
+ return (X509v3_get_ext(x->extensions, loc));
183
+ }
184
184
 
185
185
  X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc)
186
- {
187
- return(X509v3_delete_ext(x->extensions,loc));
188
- }
186
+ {
187
+ return (X509v3_delete_ext(x->extensions, loc));
188
+ }
189
189
 
190
190
  int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc)
191
- {
192
- return(X509v3_add_ext(&(x->extensions),ex,loc) != NULL);
193
- }
191
+ {
192
+ return (X509v3_add_ext(&(x->extensions), ex, loc) != NULL);
193
+ }
194
194
 
195
195
  void *X509_REVOKED_get_ext_d2i(X509_REVOKED *x, int nid, int *crit, int *idx)
196
196
  {
197
- return X509V3_get_d2i(x->extensions, nid, crit, idx);
197
+ return X509V3_get_d2i(x->extensions, nid, crit, idx);
198
198
  }
199
199
 
200
200
  int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit,
201
- unsigned long flags)
201
+ unsigned long flags)
202
202
  {
203
- return X509V3_add1_i2d(&x->extensions, nid, value, crit, flags);
203
+ return X509V3_add1_i2d(&x->extensions, nid, value, crit, flags);
204
204
  }
205
205
 
206
206
  IMPLEMENT_ASN1_SET_OF(X509_EXTENSION)
@@ -66,673 +66,635 @@
66
66
 
67
67
  #include "../internal.h"
68
68
 
69
-
70
69
  X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method)
71
- {
72
- X509_LOOKUP *ret;
73
-
74
- ret=(X509_LOOKUP *)OPENSSL_malloc(sizeof(X509_LOOKUP));
75
- if (ret == NULL) return NULL;
76
-
77
- ret->init=0;
78
- ret->skip=0;
79
- ret->method=method;
80
- ret->method_data=NULL;
81
- ret->store_ctx=NULL;
82
- if ((method->new_item != NULL) && !method->new_item(ret))
83
- {
84
- OPENSSL_free(ret);
85
- return NULL;
86
- }
87
- return ret;
88
- }
70
+ {
71
+ X509_LOOKUP *ret;
72
+
73
+ ret = (X509_LOOKUP *)OPENSSL_malloc(sizeof(X509_LOOKUP));
74
+ if (ret == NULL)
75
+ return NULL;
76
+
77
+ ret->init = 0;
78
+ ret->skip = 0;
79
+ ret->method = method;
80
+ ret->method_data = NULL;
81
+ ret->store_ctx = NULL;
82
+ if ((method->new_item != NULL) && !method->new_item(ret)) {
83
+ OPENSSL_free(ret);
84
+ return NULL;
85
+ }
86
+ return ret;
87
+ }
89
88
 
90
89
  void X509_LOOKUP_free(X509_LOOKUP *ctx)
91
- {
92
- if (ctx == NULL) return;
93
- if ( (ctx->method != NULL) &&
94
- (ctx->method->free != NULL))
95
- (*ctx->method->free)(ctx);
96
- OPENSSL_free(ctx);
97
- }
90
+ {
91
+ if (ctx == NULL)
92
+ return;
93
+ if ((ctx->method != NULL) && (ctx->method->free != NULL))
94
+ (*ctx->method->free) (ctx);
95
+ OPENSSL_free(ctx);
96
+ }
98
97
 
99
98
  int X509_LOOKUP_init(X509_LOOKUP *ctx)
100
- {
101
- if (ctx->method == NULL) return 0;
102
- if (ctx->method->init != NULL)
103
- return ctx->method->init(ctx);
104
- else
105
- return 1;
106
- }
99
+ {
100
+ if (ctx->method == NULL)
101
+ return 0;
102
+ if (ctx->method->init != NULL)
103
+ return ctx->method->init(ctx);
104
+ else
105
+ return 1;
106
+ }
107
107
 
108
108
  int X509_LOOKUP_shutdown(X509_LOOKUP *ctx)
109
- {
110
- if (ctx->method == NULL) return 0;
111
- if (ctx->method->shutdown != NULL)
112
- return ctx->method->shutdown(ctx);
113
- else
114
- return 1;
115
- }
109
+ {
110
+ if (ctx->method == NULL)
111
+ return 0;
112
+ if (ctx->method->shutdown != NULL)
113
+ return ctx->method->shutdown(ctx);
114
+ else
115
+ return 1;
116
+ }
116
117
 
117
118
  int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, long argl,
118
- char **ret)
119
- {
120
- if (ctx->method == NULL) return -1;
121
- if (ctx->method->ctrl != NULL)
122
- return ctx->method->ctrl(ctx,cmd,argc,argl,ret);
123
- else
124
- return 1;
125
- }
119
+ char **ret)
120
+ {
121
+ if (ctx->method == NULL)
122
+ return -1;
123
+ if (ctx->method->ctrl != NULL)
124
+ return ctx->method->ctrl(ctx, cmd, argc, argl, ret);
125
+ else
126
+ return 1;
127
+ }
126
128
 
127
129
  int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, int type, X509_NAME *name,
128
- X509_OBJECT *ret)
129
- {
130
- if ((ctx->method == NULL) || (ctx->method->get_by_subject == NULL))
131
- return X509_LU_FAIL;
132
- if (ctx->skip) return 0;
133
- return ctx->method->get_by_subject(ctx,type,name,ret);
134
- }
130
+ X509_OBJECT *ret)
131
+ {
132
+ if ((ctx->method == NULL) || (ctx->method->get_by_subject == NULL))
133
+ return X509_LU_FAIL;
134
+ if (ctx->skip)
135
+ return 0;
136
+ return ctx->method->get_by_subject(ctx, type, name, ret);
137
+ }
135
138
 
136
139
  int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, int type, X509_NAME *name,
137
- ASN1_INTEGER *serial, X509_OBJECT *ret)
138
- {
139
- if ((ctx->method == NULL) ||
140
- (ctx->method->get_by_issuer_serial == NULL))
141
- return X509_LU_FAIL;
142
- return ctx->method->get_by_issuer_serial(ctx,type,name,serial,ret);
143
- }
140
+ ASN1_INTEGER *serial, X509_OBJECT *ret)
141
+ {
142
+ if ((ctx->method == NULL) || (ctx->method->get_by_issuer_serial == NULL))
143
+ return X509_LU_FAIL;
144
+ return ctx->method->get_by_issuer_serial(ctx, type, name, serial, ret);
145
+ }
144
146
 
145
147
  int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, int type,
146
- unsigned char *bytes, int len, X509_OBJECT *ret)
147
- {
148
- if ((ctx->method == NULL) || (ctx->method->get_by_fingerprint == NULL))
149
- return X509_LU_FAIL;
150
- return ctx->method->get_by_fingerprint(ctx,type,bytes,len,ret);
151
- }
148
+ unsigned char *bytes, int len,
149
+ X509_OBJECT *ret)
150
+ {
151
+ if ((ctx->method == NULL) || (ctx->method->get_by_fingerprint == NULL))
152
+ return X509_LU_FAIL;
153
+ return ctx->method->get_by_fingerprint(ctx, type, bytes, len, ret);
154
+ }
152
155
 
153
156
  int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, int type, char *str, int len,
154
- X509_OBJECT *ret)
155
- {
156
- if ((ctx->method == NULL) || (ctx->method->get_by_alias == NULL))
157
- return X509_LU_FAIL;
158
- return ctx->method->get_by_alias(ctx,type,str,len,ret);
159
- }
160
-
161
-
157
+ X509_OBJECT *ret)
158
+ {
159
+ if ((ctx->method == NULL) || (ctx->method->get_by_alias == NULL))
160
+ return X509_LU_FAIL;
161
+ return ctx->method->get_by_alias(ctx, type, str, len, ret);
162
+ }
163
+
162
164
  static int x509_object_cmp(const X509_OBJECT **a, const X509_OBJECT **b)
163
- {
164
- int ret;
165
-
166
- ret=((*a)->type - (*b)->type);
167
- if (ret) return ret;
168
- switch ((*a)->type)
169
- {
170
- case X509_LU_X509:
171
- ret=X509_subject_name_cmp((*a)->data.x509,(*b)->data.x509);
172
- break;
173
- case X509_LU_CRL:
174
- ret=X509_CRL_cmp((*a)->data.crl,(*b)->data.crl);
175
- break;
176
- default:
177
- /* abort(); */
178
- return 0;
179
- }
180
- return ret;
181
- }
165
+ {
166
+ int ret;
167
+
168
+ ret = ((*a)->type - (*b)->type);
169
+ if (ret)
170
+ return ret;
171
+ switch ((*a)->type) {
172
+ case X509_LU_X509:
173
+ ret = X509_subject_name_cmp((*a)->data.x509, (*b)->data.x509);
174
+ break;
175
+ case X509_LU_CRL:
176
+ ret = X509_CRL_cmp((*a)->data.crl, (*b)->data.crl);
177
+ break;
178
+ default:
179
+ /* abort(); */
180
+ return 0;
181
+ }
182
+ return ret;
183
+ }
182
184
 
183
185
  X509_STORE *X509_STORE_new(void)
184
- {
185
- X509_STORE *ret;
186
-
187
- if ((ret=(X509_STORE *)OPENSSL_malloc(sizeof(X509_STORE))) == NULL)
188
- return NULL;
189
- memset(ret, 0, sizeof(*ret));
190
- CRYPTO_MUTEX_init(&ret->objs_lock);
191
- ret->objs = sk_X509_OBJECT_new(x509_object_cmp);
192
- if (ret->objs == NULL)
193
- goto err;
194
- ret->cache = 1;
195
- ret->get_cert_methods = sk_X509_LOOKUP_new_null();
196
- if (ret->get_cert_methods == NULL)
197
- goto err;
198
- ret->param = X509_VERIFY_PARAM_new();
199
- if (ret->param == NULL)
200
- goto err;
201
-
202
- ret->references = 1;
203
- return ret;
204
- err:
205
- if (ret)
206
- {
207
- CRYPTO_MUTEX_cleanup(&ret->objs_lock);
208
- if (ret->param)
209
- X509_VERIFY_PARAM_free(ret->param);
210
- if (ret->get_cert_methods)
211
- sk_X509_LOOKUP_free(ret->get_cert_methods);
212
- if (ret->objs)
213
- sk_X509_OBJECT_free(ret->objs);
214
- OPENSSL_free(ret);
215
- }
216
- return NULL;
217
- }
186
+ {
187
+ X509_STORE *ret;
188
+
189
+ if ((ret = (X509_STORE *)OPENSSL_malloc(sizeof(X509_STORE))) == NULL)
190
+ return NULL;
191
+ memset(ret, 0, sizeof(*ret));
192
+ CRYPTO_MUTEX_init(&ret->objs_lock);
193
+ ret->objs = sk_X509_OBJECT_new(x509_object_cmp);
194
+ if (ret->objs == NULL)
195
+ goto err;
196
+ ret->cache = 1;
197
+ ret->get_cert_methods = sk_X509_LOOKUP_new_null();
198
+ if (ret->get_cert_methods == NULL)
199
+ goto err;
200
+ ret->param = X509_VERIFY_PARAM_new();
201
+ if (ret->param == NULL)
202
+ goto err;
203
+
204
+ ret->references = 1;
205
+ return ret;
206
+ err:
207
+ if (ret) {
208
+ CRYPTO_MUTEX_cleanup(&ret->objs_lock);
209
+ if (ret->param)
210
+ X509_VERIFY_PARAM_free(ret->param);
211
+ if (ret->get_cert_methods)
212
+ sk_X509_LOOKUP_free(ret->get_cert_methods);
213
+ if (ret->objs)
214
+ sk_X509_OBJECT_free(ret->objs);
215
+ OPENSSL_free(ret);
216
+ }
217
+ return NULL;
218
+ }
218
219
 
219
220
  static void cleanup(X509_OBJECT *a)
220
- {
221
- if (a->type == X509_LU_X509)
222
- {
223
- X509_free(a->data.x509);
224
- }
225
- else if (a->type == X509_LU_CRL)
226
- {
227
- X509_CRL_free(a->data.crl);
228
- }
229
- else
230
- {
231
- /* abort(); */
232
- }
233
-
234
- OPENSSL_free(a);
235
- }
221
+ {
222
+ if (a == NULL) {
223
+ return;
224
+ }
225
+ if (a->type == X509_LU_X509) {
226
+ X509_free(a->data.x509);
227
+ } else if (a->type == X509_LU_CRL) {
228
+ X509_CRL_free(a->data.crl);
229
+ } else {
230
+ /* abort(); */
231
+ }
232
+
233
+ OPENSSL_free(a);
234
+ }
236
235
 
237
236
  void X509_STORE_free(X509_STORE *vfy)
238
- {
239
- size_t j;
240
- STACK_OF(X509_LOOKUP) *sk;
241
- X509_LOOKUP *lu;
242
-
243
- if (vfy == NULL)
244
- return;
245
-
246
- if (!CRYPTO_refcount_dec_and_test_zero(&vfy->references)) {
247
- return;
248
- }
249
-
250
- CRYPTO_MUTEX_cleanup(&vfy->objs_lock);
251
-
252
- sk=vfy->get_cert_methods;
253
- for (j=0; j<sk_X509_LOOKUP_num(sk); j++)
254
- {
255
- lu=sk_X509_LOOKUP_value(sk,j);
256
- X509_LOOKUP_shutdown(lu);
257
- X509_LOOKUP_free(lu);
258
- }
259
- sk_X509_LOOKUP_free(sk);
260
- sk_X509_OBJECT_pop_free(vfy->objs, cleanup);
261
-
262
- if (vfy->param)
263
- X509_VERIFY_PARAM_free(vfy->param);
264
- OPENSSL_free(vfy);
265
- }
237
+ {
238
+ size_t j;
239
+ STACK_OF(X509_LOOKUP) *sk;
240
+ X509_LOOKUP *lu;
241
+
242
+ if (vfy == NULL)
243
+ return;
244
+
245
+ if (!CRYPTO_refcount_dec_and_test_zero(&vfy->references)) {
246
+ return;
247
+ }
248
+
249
+ CRYPTO_MUTEX_cleanup(&vfy->objs_lock);
250
+
251
+ sk = vfy->get_cert_methods;
252
+ for (j = 0; j < sk_X509_LOOKUP_num(sk); j++) {
253
+ lu = sk_X509_LOOKUP_value(sk, j);
254
+ X509_LOOKUP_shutdown(lu);
255
+ X509_LOOKUP_free(lu);
256
+ }
257
+ sk_X509_LOOKUP_free(sk);
258
+ sk_X509_OBJECT_pop_free(vfy->objs, cleanup);
259
+
260
+ if (vfy->param)
261
+ X509_VERIFY_PARAM_free(vfy->param);
262
+ OPENSSL_free(vfy);
263
+ }
266
264
 
267
265
  X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m)
268
- {
269
- size_t i;
270
- STACK_OF(X509_LOOKUP) *sk;
271
- X509_LOOKUP *lu;
272
-
273
- sk=v->get_cert_methods;
274
- for (i=0; i<sk_X509_LOOKUP_num(sk); i++)
275
- {
276
- lu=sk_X509_LOOKUP_value(sk,i);
277
- if (m == lu->method)
278
- {
279
- return lu;
280
- }
281
- }
282
- /* a new one */
283
- lu=X509_LOOKUP_new(m);
284
- if (lu == NULL)
285
- return NULL;
286
- else
287
- {
288
- lu->store_ctx=v;
289
- if (sk_X509_LOOKUP_push(v->get_cert_methods,lu))
290
- return lu;
291
- else
292
- {
293
- X509_LOOKUP_free(lu);
294
- return NULL;
295
- }
296
- }
297
- }
266
+ {
267
+ size_t i;
268
+ STACK_OF(X509_LOOKUP) *sk;
269
+ X509_LOOKUP *lu;
270
+
271
+ sk = v->get_cert_methods;
272
+ for (i = 0; i < sk_X509_LOOKUP_num(sk); i++) {
273
+ lu = sk_X509_LOOKUP_value(sk, i);
274
+ if (m == lu->method) {
275
+ return lu;
276
+ }
277
+ }
278
+ /* a new one */
279
+ lu = X509_LOOKUP_new(m);
280
+ if (lu == NULL)
281
+ return NULL;
282
+ else {
283
+ lu->store_ctx = v;
284
+ if (sk_X509_LOOKUP_push(v->get_cert_methods, lu))
285
+ return lu;
286
+ else {
287
+ X509_LOOKUP_free(lu);
288
+ return NULL;
289
+ }
290
+ }
291
+ }
298
292
 
299
293
  int X509_STORE_get_by_subject(X509_STORE_CTX *vs, int type, X509_NAME *name,
300
- X509_OBJECT *ret)
301
- {
302
- X509_STORE *ctx=vs->ctx;
303
- X509_LOOKUP *lu;
304
- X509_OBJECT stmp,*tmp;
305
- int i,j;
306
-
307
- CRYPTO_MUTEX_lock_write(&ctx->objs_lock);
308
- tmp=X509_OBJECT_retrieve_by_subject(ctx->objs,type,name);
309
- CRYPTO_MUTEX_unlock(&ctx->objs_lock);
310
-
311
- if (tmp == NULL || type == X509_LU_CRL)
312
- {
313
- for (i=vs->current_method; i<(int)sk_X509_LOOKUP_num(ctx->get_cert_methods); i++)
314
- {
315
- lu=sk_X509_LOOKUP_value(ctx->get_cert_methods,i);
316
- j=X509_LOOKUP_by_subject(lu,type,name,&stmp);
317
- if (j < 0)
318
- {
319
- vs->current_method=j;
320
- return j;
321
- }
322
- else if (j)
323
- {
324
- tmp= &stmp;
325
- break;
326
- }
327
- }
328
- vs->current_method=0;
329
- if (tmp == NULL)
330
- return 0;
331
- }
332
-
333
- /* if (ret->data.ptr != NULL)
334
- X509_OBJECT_free_contents(ret); */
335
-
336
- ret->type=tmp->type;
337
- ret->data.ptr=tmp->data.ptr;
338
-
339
- X509_OBJECT_up_ref_count(ret);
340
-
341
- return 1;
342
- }
294
+ X509_OBJECT *ret)
295
+ {
296
+ X509_STORE *ctx = vs->ctx;
297
+ X509_LOOKUP *lu;
298
+ X509_OBJECT stmp, *tmp;
299
+ int i, j;
300
+
301
+ CRYPTO_MUTEX_lock_write(&ctx->objs_lock);
302
+ tmp = X509_OBJECT_retrieve_by_subject(ctx->objs, type, name);
303
+ CRYPTO_MUTEX_unlock(&ctx->objs_lock);
304
+
305
+ if (tmp == NULL || type == X509_LU_CRL) {
306
+ for (i = vs->current_method;
307
+ i < (int)sk_X509_LOOKUP_num(ctx->get_cert_methods); i++) {
308
+ lu = sk_X509_LOOKUP_value(ctx->get_cert_methods, i);
309
+ j = X509_LOOKUP_by_subject(lu, type, name, &stmp);
310
+ if (j < 0) {
311
+ vs->current_method = j;
312
+ return j;
313
+ } else if (j) {
314
+ tmp = &stmp;
315
+ break;
316
+ }
317
+ }
318
+ vs->current_method = 0;
319
+ if (tmp == NULL)
320
+ return 0;
321
+ }
322
+
323
+ /*
324
+ * if (ret->data.ptr != NULL) X509_OBJECT_free_contents(ret);
325
+ */
326
+
327
+ ret->type = tmp->type;
328
+ ret->data.ptr = tmp->data.ptr;
329
+
330
+ X509_OBJECT_up_ref_count(ret);
331
+
332
+ return 1;
333
+ }
343
334
 
344
335
  int X509_STORE_add_cert(X509_STORE *ctx, X509 *x)
345
- {
346
- X509_OBJECT *obj;
347
- int ret=1;
348
-
349
- if (x == NULL) return 0;
350
- obj=(X509_OBJECT *)OPENSSL_malloc(sizeof(X509_OBJECT));
351
- if (obj == NULL)
352
- {
353
- OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
354
- return 0;
355
- }
356
- obj->type=X509_LU_X509;
357
- obj->data.x509=x;
358
-
359
- CRYPTO_MUTEX_lock_write(&ctx->objs_lock);
360
-
361
- X509_OBJECT_up_ref_count(obj);
362
-
363
- if (X509_OBJECT_retrieve_match(ctx->objs, obj))
364
- {
365
- X509_OBJECT_free_contents(obj);
366
- OPENSSL_free(obj);
367
- OPENSSL_PUT_ERROR(X509, X509_R_CERT_ALREADY_IN_HASH_TABLE);
368
- ret=0;
369
- }
370
- else sk_X509_OBJECT_push(ctx->objs, obj);
371
-
372
- CRYPTO_MUTEX_unlock(&ctx->objs_lock);
373
-
374
- return ret;
375
- }
336
+ {
337
+ X509_OBJECT *obj;
338
+ int ret = 1;
339
+
340
+ if (x == NULL)
341
+ return 0;
342
+ obj = (X509_OBJECT *)OPENSSL_malloc(sizeof(X509_OBJECT));
343
+ if (obj == NULL) {
344
+ OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
345
+ return 0;
346
+ }
347
+ obj->type = X509_LU_X509;
348
+ obj->data.x509 = x;
349
+
350
+ CRYPTO_MUTEX_lock_write(&ctx->objs_lock);
351
+
352
+ X509_OBJECT_up_ref_count(obj);
353
+
354
+ if (X509_OBJECT_retrieve_match(ctx->objs, obj)) {
355
+ X509_OBJECT_free_contents(obj);
356
+ OPENSSL_free(obj);
357
+ OPENSSL_PUT_ERROR(X509, X509_R_CERT_ALREADY_IN_HASH_TABLE);
358
+ ret = 0;
359
+ } else
360
+ sk_X509_OBJECT_push(ctx->objs, obj);
361
+
362
+ CRYPTO_MUTEX_unlock(&ctx->objs_lock);
363
+
364
+ return ret;
365
+ }
376
366
 
377
367
  int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x)
378
- {
379
- X509_OBJECT *obj;
380
- int ret=1;
381
-
382
- if (x == NULL) return 0;
383
- obj=(X509_OBJECT *)OPENSSL_malloc(sizeof(X509_OBJECT));
384
- if (obj == NULL)
385
- {
386
- OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
387
- return 0;
388
- }
389
- obj->type=X509_LU_CRL;
390
- obj->data.crl=x;
391
-
392
- CRYPTO_MUTEX_lock_write(&ctx->objs_lock);
393
-
394
- X509_OBJECT_up_ref_count(obj);
395
-
396
- if (X509_OBJECT_retrieve_match(ctx->objs, obj))
397
- {
398
- X509_OBJECT_free_contents(obj);
399
- OPENSSL_free(obj);
400
- OPENSSL_PUT_ERROR(X509, X509_R_CERT_ALREADY_IN_HASH_TABLE);
401
- ret=0;
402
- }
403
- else sk_X509_OBJECT_push(ctx->objs, obj);
404
-
405
- CRYPTO_MUTEX_unlock(&ctx->objs_lock);
406
-
407
- return ret;
408
- }
368
+ {
369
+ X509_OBJECT *obj;
370
+ int ret = 1;
371
+
372
+ if (x == NULL)
373
+ return 0;
374
+ obj = (X509_OBJECT *)OPENSSL_malloc(sizeof(X509_OBJECT));
375
+ if (obj == NULL) {
376
+ OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
377
+ return 0;
378
+ }
379
+ obj->type = X509_LU_CRL;
380
+ obj->data.crl = x;
381
+
382
+ CRYPTO_MUTEX_lock_write(&ctx->objs_lock);
383
+
384
+ X509_OBJECT_up_ref_count(obj);
385
+
386
+ if (X509_OBJECT_retrieve_match(ctx->objs, obj)) {
387
+ X509_OBJECT_free_contents(obj);
388
+ OPENSSL_free(obj);
389
+ OPENSSL_PUT_ERROR(X509, X509_R_CERT_ALREADY_IN_HASH_TABLE);
390
+ ret = 0;
391
+ } else
392
+ sk_X509_OBJECT_push(ctx->objs, obj);
393
+
394
+ CRYPTO_MUTEX_unlock(&ctx->objs_lock);
395
+
396
+ return ret;
397
+ }
409
398
 
410
399
  void X509_OBJECT_up_ref_count(X509_OBJECT *a)
411
- {
412
- switch (a->type)
413
- {
414
- case X509_LU_X509:
415
- X509_up_ref(a->data.x509);
416
- break;
417
- case X509_LU_CRL:
418
- X509_CRL_up_ref(a->data.crl);
419
- break;
420
- }
421
- }
400
+ {
401
+ switch (a->type) {
402
+ case X509_LU_X509:
403
+ X509_up_ref(a->data.x509);
404
+ break;
405
+ case X509_LU_CRL:
406
+ X509_CRL_up_ref(a->data.crl);
407
+ break;
408
+ }
409
+ }
422
410
 
423
411
  void X509_OBJECT_free_contents(X509_OBJECT *a)
424
- {
425
- switch (a->type)
426
- {
427
- case X509_LU_X509:
428
- X509_free(a->data.x509);
429
- break;
430
- case X509_LU_CRL:
431
- X509_CRL_free(a->data.crl);
432
- break;
433
- }
434
- }
412
+ {
413
+ switch (a->type) {
414
+ case X509_LU_X509:
415
+ X509_free(a->data.x509);
416
+ break;
417
+ case X509_LU_CRL:
418
+ X509_CRL_free(a->data.crl);
419
+ break;
420
+ }
421
+ }
435
422
 
436
423
  static int x509_object_idx_cnt(STACK_OF(X509_OBJECT) *h, int type,
437
- X509_NAME *name, int *pnmatch)
438
- {
439
- X509_OBJECT stmp;
440
- X509 x509_s;
441
- X509_CINF cinf_s;
442
- X509_CRL crl_s;
443
- X509_CRL_INFO crl_info_s;
444
-
445
- stmp.type=type;
446
- switch (type)
447
- {
448
- case X509_LU_X509:
449
- stmp.data.x509= &x509_s;
450
- x509_s.cert_info= &cinf_s;
451
- cinf_s.subject=name;
452
- break;
453
- case X509_LU_CRL:
454
- stmp.data.crl= &crl_s;
455
- crl_s.crl= &crl_info_s;
456
- crl_info_s.issuer=name;
457
- break;
458
- default:
459
- /* abort(); */
460
- return -1;
461
- }
462
-
463
- size_t idx;
464
- if (!sk_X509_OBJECT_find(h, &idx, &stmp))
465
- return -1;
466
-
467
- if (pnmatch != NULL)
468
- {
469
- int tidx;
470
- const X509_OBJECT *tobj, *pstmp;
471
- *pnmatch = 1;
472
- pstmp = &stmp;
473
- for (tidx = idx + 1; tidx < (int)sk_X509_OBJECT_num(h); tidx++)
474
- {
475
- tobj = sk_X509_OBJECT_value(h, tidx);
476
- if (x509_object_cmp(&tobj, &pstmp))
477
- break;
478
- (*pnmatch)++;
479
- }
480
- }
481
-
482
- return idx;
483
- }
484
-
424
+ X509_NAME *name, int *pnmatch)
425
+ {
426
+ X509_OBJECT stmp;
427
+ X509 x509_s;
428
+ X509_CINF cinf_s;
429
+ X509_CRL crl_s;
430
+ X509_CRL_INFO crl_info_s;
431
+
432
+ stmp.type = type;
433
+ switch (type) {
434
+ case X509_LU_X509:
435
+ stmp.data.x509 = &x509_s;
436
+ x509_s.cert_info = &cinf_s;
437
+ cinf_s.subject = name;
438
+ break;
439
+ case X509_LU_CRL:
440
+ stmp.data.crl = &crl_s;
441
+ crl_s.crl = &crl_info_s;
442
+ crl_info_s.issuer = name;
443
+ break;
444
+ default:
445
+ /* abort(); */
446
+ return -1;
447
+ }
448
+
449
+ size_t idx;
450
+ if (!sk_X509_OBJECT_find(h, &idx, &stmp))
451
+ return -1;
452
+
453
+ if (pnmatch != NULL) {
454
+ int tidx;
455
+ const X509_OBJECT *tobj, *pstmp;
456
+ *pnmatch = 1;
457
+ pstmp = &stmp;
458
+ for (tidx = idx + 1; tidx < (int)sk_X509_OBJECT_num(h); tidx++) {
459
+ tobj = sk_X509_OBJECT_value(h, tidx);
460
+ if (x509_object_cmp(&tobj, &pstmp))
461
+ break;
462
+ (*pnmatch)++;
463
+ }
464
+ }
465
+
466
+ return idx;
467
+ }
485
468
 
486
469
  int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, int type,
487
- X509_NAME *name)
488
- {
489
- return x509_object_idx_cnt(h, type, name, NULL);
490
- }
491
-
492
- X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, int type,
493
- X509_NAME *name)
494
- {
495
- int idx;
496
- idx = X509_OBJECT_idx_by_subject(h, type, name);
497
- if (idx==-1) return NULL;
498
- return sk_X509_OBJECT_value(h, idx);
499
- }
500
-
501
- STACK_OF(X509)* X509_STORE_get1_certs(X509_STORE_CTX *ctx, X509_NAME *nm)
502
- {
503
- int i, idx, cnt;
504
- STACK_OF(X509) *sk;
505
- X509 *x;
506
- X509_OBJECT *obj;
507
- sk = sk_X509_new_null();
508
- if (sk == NULL)
509
- return NULL;
510
- CRYPTO_MUTEX_lock_write(&ctx->ctx->objs_lock);
511
- idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_X509, nm, &cnt);
512
- if (idx < 0)
513
- {
514
- /* Nothing found in cache: do lookup to possibly add new
515
- * objects to cache
516
- */
517
- X509_OBJECT xobj;
518
- CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
519
- if (!X509_STORE_get_by_subject(ctx, X509_LU_X509, nm, &xobj))
520
- {
521
- sk_X509_free(sk);
522
- return NULL;
523
- }
524
- X509_OBJECT_free_contents(&xobj);
525
- CRYPTO_MUTEX_lock_write(&ctx->ctx->objs_lock);
526
- idx = x509_object_idx_cnt(ctx->ctx->objs,X509_LU_X509,nm, &cnt);
527
- if (idx < 0)
528
- {
529
- CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
530
- sk_X509_free(sk);
531
- return NULL;
532
- }
533
- }
534
- for (i = 0; i < cnt; i++, idx++)
535
- {
536
- obj = sk_X509_OBJECT_value(ctx->ctx->objs, idx);
537
- x = obj->data.x509;
538
- if (!sk_X509_push(sk, X509_up_ref(x)))
539
- {
540
- CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
541
- X509_free(x);
542
- sk_X509_pop_free(sk, X509_free);
543
- return NULL;
544
- }
545
- }
546
- CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
547
- return sk;
548
-
549
- }
550
-
551
- STACK_OF(X509_CRL)* X509_STORE_get1_crls(X509_STORE_CTX *ctx, X509_NAME *nm)
552
- {
553
- int i, idx, cnt;
554
- STACK_OF(X509_CRL) *sk;
555
- X509_CRL *x;
556
- X509_OBJECT *obj, xobj;
557
- sk = sk_X509_CRL_new_null();
558
- if (sk == NULL)
559
- return NULL;
560
-
561
- /* Always do lookup to possibly add new CRLs to cache. */
562
- if (!X509_STORE_get_by_subject(ctx, X509_LU_CRL, nm, &xobj))
563
- {
564
- sk_X509_CRL_free(sk);
565
- return NULL;
566
- }
567
- X509_OBJECT_free_contents(&xobj);
568
- CRYPTO_MUTEX_lock_write(&ctx->ctx->objs_lock);
569
- idx = x509_object_idx_cnt(ctx->ctx->objs,X509_LU_CRL, nm, &cnt);
570
- if (idx < 0)
571
- {
572
- CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
573
- sk_X509_CRL_free(sk);
574
- return NULL;
575
- }
576
-
577
- for (i = 0; i < cnt; i++, idx++)
578
- {
579
- obj = sk_X509_OBJECT_value(ctx->ctx->objs, idx);
580
- x = obj->data.crl;
581
- X509_CRL_up_ref(x);
582
- if (!sk_X509_CRL_push(sk, x))
583
- {
584
- CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
585
- X509_CRL_free(x);
586
- sk_X509_CRL_pop_free(sk, X509_CRL_free);
587
- return NULL;
588
- }
589
- }
590
- CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
591
- return sk;
592
- }
593
-
594
- X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, X509_OBJECT *x)
595
- {
596
- size_t idx, i;
597
- X509_OBJECT *obj;
598
-
599
- if (!sk_X509_OBJECT_find(h, &idx, x)) {
600
- return NULL;
601
- }
602
- if ((x->type != X509_LU_X509) && (x->type != X509_LU_CRL))
603
- return sk_X509_OBJECT_value(h, idx);
604
- for (i = idx; i < sk_X509_OBJECT_num(h); i++)
605
- {
606
- obj = sk_X509_OBJECT_value(h, i);
607
- if (x509_object_cmp((const X509_OBJECT **)&obj, (const X509_OBJECT **)&x))
608
- return NULL;
609
- if (x->type == X509_LU_X509)
610
- {
611
- if (!X509_cmp(obj->data.x509, x->data.x509))
612
- return obj;
613
- }
614
- else if (x->type == X509_LU_CRL)
615
- {
616
- if (!X509_CRL_match(obj->data.crl, x->data.crl))
617
- return obj;
618
- }
619
- else
620
- return obj;
621
- }
622
- return NULL;
623
- }
624
-
625
-
626
- /* Try to get issuer certificate from store. Due to limitations
627
- * of the API this can only retrieve a single certificate matching
628
- * a given subject name. However it will fill the cache with all
629
- * matching certificates, so we can examine the cache for all
630
- * matches.
631
- *
632
- * Return values are:
633
- * 1 lookup successful.
634
- * 0 certificate not found.
635
- * -1 some other error.
470
+ X509_NAME *name)
471
+ {
472
+ return x509_object_idx_cnt(h, type, name, NULL);
473
+ }
474
+
475
+ X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h,
476
+ int type, X509_NAME *name)
477
+ {
478
+ int idx;
479
+ idx = X509_OBJECT_idx_by_subject(h, type, name);
480
+ if (idx == -1)
481
+ return NULL;
482
+ return sk_X509_OBJECT_value(h, idx);
483
+ }
484
+
485
+ STACK_OF (X509) * X509_STORE_get1_certs(X509_STORE_CTX *ctx, X509_NAME *nm)
486
+ {
487
+ int i, idx, cnt;
488
+ STACK_OF(X509) *sk;
489
+ X509 *x;
490
+ X509_OBJECT *obj;
491
+ sk = sk_X509_new_null();
492
+ if (sk == NULL)
493
+ return NULL;
494
+ CRYPTO_MUTEX_lock_write(&ctx->ctx->objs_lock);
495
+ idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_X509, nm, &cnt);
496
+ if (idx < 0) {
497
+ /*
498
+ * Nothing found in cache: do lookup to possibly add new objects to
499
+ * cache
500
+ */
501
+ X509_OBJECT xobj;
502
+ CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
503
+ if (!X509_STORE_get_by_subject(ctx, X509_LU_X509, nm, &xobj)) {
504
+ sk_X509_free(sk);
505
+ return NULL;
506
+ }
507
+ X509_OBJECT_free_contents(&xobj);
508
+ CRYPTO_MUTEX_lock_write(&ctx->ctx->objs_lock);
509
+ idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_X509, nm, &cnt);
510
+ if (idx < 0) {
511
+ CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
512
+ sk_X509_free(sk);
513
+ return NULL;
514
+ }
515
+ }
516
+ for (i = 0; i < cnt; i++, idx++) {
517
+ obj = sk_X509_OBJECT_value(ctx->ctx->objs, idx);
518
+ x = obj->data.x509;
519
+ if (!sk_X509_push(sk, X509_up_ref(x))) {
520
+ CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
521
+ X509_free(x);
522
+ sk_X509_pop_free(sk, X509_free);
523
+ return NULL;
524
+ }
525
+ }
526
+ CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
527
+ return sk;
528
+
529
+ }
530
+
531
+ STACK_OF (X509_CRL) * X509_STORE_get1_crls(X509_STORE_CTX *ctx, X509_NAME *nm)
532
+ {
533
+ int i, idx, cnt;
534
+ STACK_OF(X509_CRL) *sk;
535
+ X509_CRL *x;
536
+ X509_OBJECT *obj, xobj;
537
+ sk = sk_X509_CRL_new_null();
538
+ if (sk == NULL)
539
+ return NULL;
540
+
541
+ /* Always do lookup to possibly add new CRLs to cache. */
542
+ if (!X509_STORE_get_by_subject(ctx, X509_LU_CRL, nm, &xobj)) {
543
+ sk_X509_CRL_free(sk);
544
+ return NULL;
545
+ }
546
+ X509_OBJECT_free_contents(&xobj);
547
+ CRYPTO_MUTEX_lock_write(&ctx->ctx->objs_lock);
548
+ idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_CRL, nm, &cnt);
549
+ if (idx < 0) {
550
+ CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
551
+ sk_X509_CRL_free(sk);
552
+ return NULL;
553
+ }
554
+
555
+ for (i = 0; i < cnt; i++, idx++) {
556
+ obj = sk_X509_OBJECT_value(ctx->ctx->objs, idx);
557
+ x = obj->data.crl;
558
+ X509_CRL_up_ref(x);
559
+ if (!sk_X509_CRL_push(sk, x)) {
560
+ CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
561
+ X509_CRL_free(x);
562
+ sk_X509_CRL_pop_free(sk, X509_CRL_free);
563
+ return NULL;
564
+ }
565
+ }
566
+ CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
567
+ return sk;
568
+ }
569
+
570
+ X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h,
571
+ X509_OBJECT *x)
572
+ {
573
+ size_t idx, i;
574
+ X509_OBJECT *obj;
575
+
576
+ if (!sk_X509_OBJECT_find(h, &idx, x)) {
577
+ return NULL;
578
+ }
579
+ if ((x->type != X509_LU_X509) && (x->type != X509_LU_CRL))
580
+ return sk_X509_OBJECT_value(h, idx);
581
+ for (i = idx; i < sk_X509_OBJECT_num(h); i++) {
582
+ obj = sk_X509_OBJECT_value(h, i);
583
+ if (x509_object_cmp
584
+ ((const X509_OBJECT **)&obj, (const X509_OBJECT **)&x))
585
+ return NULL;
586
+ if (x->type == X509_LU_X509) {
587
+ if (!X509_cmp(obj->data.x509, x->data.x509))
588
+ return obj;
589
+ } else if (x->type == X509_LU_CRL) {
590
+ if (!X509_CRL_match(obj->data.crl, x->data.crl))
591
+ return obj;
592
+ } else
593
+ return obj;
594
+ }
595
+ return NULL;
596
+ }
597
+
598
+ /*
599
+ * Try to get issuer certificate from store. Due to limitations of the API
600
+ * this can only retrieve a single certificate matching a given subject name.
601
+ * However it will fill the cache with all matching certificates, so we can
602
+ * examine the cache for all matches. Return values are: 1 lookup
603
+ * successful. 0 certificate not found. -1 some other error.
636
604
  */
637
605
  int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x)
638
- {
639
- X509_NAME *xn;
640
- X509_OBJECT obj, *pobj;
641
- int ok, idx, ret;
642
- size_t i;
643
- xn=X509_get_issuer_name(x);
644
- ok=X509_STORE_get_by_subject(ctx,X509_LU_X509,xn,&obj);
645
- if (ok != X509_LU_X509)
646
- {
647
- if (ok == X509_LU_RETRY)
648
- {
649
- X509_OBJECT_free_contents(&obj);
650
- OPENSSL_PUT_ERROR(X509, X509_R_SHOULD_RETRY);
651
- return -1;
652
- }
653
- else if (ok != X509_LU_FAIL)
654
- {
655
- X509_OBJECT_free_contents(&obj);
656
- /* not good :-(, break anyway */
657
- return -1;
658
- }
659
- return 0;
660
- }
661
- /* If certificate matches all OK */
662
- if (ctx->check_issued(ctx, x, obj.data.x509))
663
- {
664
- *issuer = obj.data.x509;
665
- return 1;
666
- }
667
- X509_OBJECT_free_contents(&obj);
668
-
669
- /* Else find index of first cert accepted by 'check_issued' */
670
- ret = 0;
671
- CRYPTO_MUTEX_lock_write(&ctx->ctx->objs_lock);
672
- idx = X509_OBJECT_idx_by_subject(ctx->ctx->objs, X509_LU_X509, xn);
673
- if (idx != -1) /* should be true as we've had at least one match */
674
- {
675
- /* Look through all matching certs for suitable issuer */
676
- for (i = idx; i < sk_X509_OBJECT_num(ctx->ctx->objs); i++)
677
- {
678
- pobj = sk_X509_OBJECT_value(ctx->ctx->objs, i);
679
- /* See if we've run past the matches */
680
- if (pobj->type != X509_LU_X509)
681
- break;
682
- if (X509_NAME_cmp(xn, X509_get_subject_name(pobj->data.x509)))
683
- break;
684
- if (ctx->check_issued(ctx, x, pobj->data.x509))
685
- {
686
- *issuer = pobj->data.x509;
687
- X509_OBJECT_up_ref_count(pobj);
688
- ret = 1;
689
- break;
690
- }
691
- }
692
- }
693
- CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
694
- return ret;
695
- }
606
+ {
607
+ X509_NAME *xn;
608
+ X509_OBJECT obj, *pobj;
609
+ int ok, idx, ret;
610
+ size_t i;
611
+ xn = X509_get_issuer_name(x);
612
+ ok = X509_STORE_get_by_subject(ctx, X509_LU_X509, xn, &obj);
613
+ if (ok != X509_LU_X509) {
614
+ if (ok == X509_LU_RETRY) {
615
+ X509_OBJECT_free_contents(&obj);
616
+ OPENSSL_PUT_ERROR(X509, X509_R_SHOULD_RETRY);
617
+ return -1;
618
+ } else if (ok != X509_LU_FAIL) {
619
+ X509_OBJECT_free_contents(&obj);
620
+ /* not good :-(, break anyway */
621
+ return -1;
622
+ }
623
+ return 0;
624
+ }
625
+ /* If certificate matches all OK */
626
+ if (ctx->check_issued(ctx, x, obj.data.x509)) {
627
+ *issuer = obj.data.x509;
628
+ return 1;
629
+ }
630
+ X509_OBJECT_free_contents(&obj);
631
+
632
+ /* Else find index of first cert accepted by 'check_issued' */
633
+ ret = 0;
634
+ CRYPTO_MUTEX_lock_write(&ctx->ctx->objs_lock);
635
+ idx = X509_OBJECT_idx_by_subject(ctx->ctx->objs, X509_LU_X509, xn);
636
+ if (idx != -1) { /* should be true as we've had at least one
637
+ * match */
638
+ /* Look through all matching certs for suitable issuer */
639
+ for (i = idx; i < sk_X509_OBJECT_num(ctx->ctx->objs); i++) {
640
+ pobj = sk_X509_OBJECT_value(ctx->ctx->objs, i);
641
+ /* See if we've run past the matches */
642
+ if (pobj->type != X509_LU_X509)
643
+ break;
644
+ if (X509_NAME_cmp(xn, X509_get_subject_name(pobj->data.x509)))
645
+ break;
646
+ if (ctx->check_issued(ctx, x, pobj->data.x509)) {
647
+ *issuer = pobj->data.x509;
648
+ X509_OBJECT_up_ref_count(pobj);
649
+ ret = 1;
650
+ break;
651
+ }
652
+ }
653
+ }
654
+ CRYPTO_MUTEX_unlock(&ctx->ctx->objs_lock);
655
+ return ret;
656
+ }
696
657
 
697
658
  int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags)
698
- {
699
- return X509_VERIFY_PARAM_set_flags(ctx->param, flags);
700
- }
659
+ {
660
+ return X509_VERIFY_PARAM_set_flags(ctx->param, flags);
661
+ }
701
662
 
702
663
  int X509_STORE_set_depth(X509_STORE *ctx, int depth)
703
- {
704
- X509_VERIFY_PARAM_set_depth(ctx->param, depth);
705
- return 1;
706
- }
664
+ {
665
+ X509_VERIFY_PARAM_set_depth(ctx->param, depth);
666
+ return 1;
667
+ }
707
668
 
708
669
  int X509_STORE_set_purpose(X509_STORE *ctx, int purpose)
709
- {
710
- return X509_VERIFY_PARAM_set_purpose(ctx->param, purpose);
711
- }
670
+ {
671
+ return X509_VERIFY_PARAM_set_purpose(ctx->param, purpose);
672
+ }
712
673
 
713
674
  int X509_STORE_set_trust(X509_STORE *ctx, int trust)
714
- {
715
- return X509_VERIFY_PARAM_set_trust(ctx->param, trust);
716
- }
675
+ {
676
+ return X509_VERIFY_PARAM_set_trust(ctx->param, trust);
677
+ }
717
678
 
718
679
  int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *param)
719
- {
720
- return X509_VERIFY_PARAM_set1(ctx->param, param);
721
- }
680
+ {
681
+ return X509_VERIFY_PARAM_set1(ctx->param, param);
682
+ }
722
683
 
723
684
  void X509_STORE_set_verify_cb(X509_STORE *ctx,
724
- int (*verify_cb)(int, X509_STORE_CTX *))
725
- {
726
- ctx->verify_cb = verify_cb;
727
- }
685
+ int (*verify_cb) (int, X509_STORE_CTX *))
686
+ {
687
+ ctx->verify_cb = verify_cb;
688
+ }
728
689
 
729
690
  void X509_STORE_set_lookup_crls_cb(X509_STORE *ctx,
730
- STACK_OF(X509_CRL)* (*cb)(X509_STORE_CTX *ctx, X509_NAME *nm))
731
- {
732
- ctx->lookup_crls = cb;
733
- }
691
+ STACK_OF (X509_CRL) *
692
+ (*cb) (X509_STORE_CTX *ctx, X509_NAME *nm))
693
+ {
694
+ ctx->lookup_crls = cb;
695
+ }
734
696
 
735
697
  X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx)
736
- {
737
- return ctx->ctx;
738
- }
698
+ {
699
+ return ctx->ctx;
700
+ }