awesome-grpc-that-works 0.12.2 → 0.14.0.dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (724) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/Makefile +5783 -22121
  4. data/include/grpc/byte_buffer.h +2 -83
  5. data/include/grpc/census.h +173 -121
  6. data/include/grpc/compression.h +14 -38
  7. data/include/grpc/grpc.h +85 -434
  8. data/include/grpc/grpc_security.h +76 -46
  9. data/include/grpc/grpc_zookeeper.h +1 -1
  10. data/include/grpc/impl/codegen/alloc.h +74 -0
  11. data/include/grpc/impl/codegen/atm.h +92 -0
  12. data/include/grpc/impl/codegen/atm_gcc_atomic.h +72 -0
  13. data/include/grpc/impl/codegen/atm_gcc_sync.h +87 -0
  14. data/include/grpc/impl/codegen/atm_win32.h +125 -0
  15. data/include/grpc/impl/codegen/byte_buffer.h +121 -0
  16. data/include/grpc/impl/codegen/compression_types.h +73 -0
  17. data/include/grpc/impl/codegen/connectivity_state.h +59 -0
  18. data/include/grpc/impl/codegen/grpc_types.h +378 -0
  19. data/include/grpc/impl/codegen/log.h +110 -0
  20. data/include/grpc/impl/codegen/port_platform.h +370 -0
  21. data/include/grpc/impl/codegen/propagation_bits.h +67 -0
  22. data/include/grpc/impl/codegen/slice.h +182 -0
  23. data/include/grpc/impl/codegen/slice_buffer.h +105 -0
  24. data/include/grpc/impl/codegen/status.h +163 -0
  25. data/include/grpc/impl/codegen/sync.h +316 -0
  26. data/include/grpc/impl/codegen/sync_generic.h +55 -0
  27. data/{src/core/census/context.h → include/grpc/impl/codegen/sync_posix.h} +11 -11
  28. data/include/grpc/impl/codegen/sync_win32.h +49 -0
  29. data/include/grpc/impl/codegen/time.h +130 -0
  30. data/include/grpc/status.h +2 -126
  31. data/include/grpc/support/alloc.h +2 -35
  32. data/include/grpc/support/atm.h +2 -55
  33. data/include/grpc/support/atm_gcc_atomic.h +5 -38
  34. data/include/grpc/support/atm_gcc_sync.h +2 -50
  35. data/include/grpc/support/atm_win32.h +2 -88
  36. data/include/grpc/support/avl.h +10 -9
  37. data/include/grpc/support/cmdline.h +15 -13
  38. data/include/grpc/support/cpu.h +5 -3
  39. data/include/grpc/support/histogram.h +23 -20
  40. data/include/grpc/support/host_port.h +5 -3
  41. data/include/grpc/support/log.h +2 -71
  42. data/include/grpc/support/log_win32.h +2 -2
  43. data/include/grpc/support/port_platform.h +2 -319
  44. data/include/grpc/support/slice.h +2 -145
  45. data/include/grpc/support/slice_buffer.h +2 -65
  46. data/include/grpc/support/string_util.h +3 -3
  47. data/include/grpc/support/subprocess.h +8 -6
  48. data/include/grpc/support/sync.h +2 -278
  49. data/include/grpc/support/sync_generic.h +2 -18
  50. data/include/grpc/support/sync_posix.h +2 -10
  51. data/include/grpc/support/sync_win32.h +2 -12
  52. data/include/grpc/support/thd.h +11 -11
  53. data/include/grpc/support/time.h +2 -91
  54. data/include/grpc/support/tls.h +1 -1
  55. data/include/grpc/support/tls_gcc.h +1 -1
  56. data/include/grpc/support/tls_msvc.h +1 -1
  57. data/include/grpc/support/tls_pthread.h +2 -2
  58. data/include/grpc/support/useful.h +3 -1
  59. data/src/boringssl/err_data.c +1252 -0
  60. data/src/core/census/context.c +471 -8
  61. data/src/core/census/grpc_filter.c +5 -5
  62. data/src/core/census/initialize.c +4 -7
  63. data/src/core/census/mlog.c +600 -0
  64. data/src/core/census/mlog.h +95 -0
  65. data/src/core/census/operation.c +2 -2
  66. data/src/core/census/placeholders.c +109 -0
  67. data/src/core/census/rpc_metric_id.h +6 -6
  68. data/src/core/census/tracing.c +1 -1
  69. data/src/core/channel/channel_args.c +71 -9
  70. data/src/core/channel/channel_args.h +7 -1
  71. data/src/core/channel/channel_stack.c +1 -1
  72. data/src/core/channel/client_channel.c +33 -30
  73. data/src/core/channel/client_uchannel.c +3 -3
  74. data/src/core/channel/compress_filter.c +8 -8
  75. data/src/core/channel/http_client_filter.c +4 -4
  76. data/src/core/channel/http_server_filter.c +11 -11
  77. data/src/core/channel/subchannel_call_holder.c +11 -11
  78. data/src/core/client_config/connector.c +3 -2
  79. data/src/core/client_config/connector.h +2 -2
  80. data/src/core/client_config/lb_policies/load_balancer_api.c +163 -0
  81. data/src/core/client_config/lb_policies/load_balancer_api.h +85 -0
  82. data/src/core/client_config/lb_policies/pick_first.c +57 -40
  83. data/src/core/client_config/lb_policies/round_robin.c +14 -15
  84. data/src/core/client_config/lb_policy.c +3 -3
  85. data/src/core/client_config/lb_policy.h +3 -2
  86. data/src/core/client_config/resolvers/dns_resolver.c +3 -3
  87. data/src/core/client_config/resolvers/sockaddr_resolver.c +5 -5
  88. data/src/core/client_config/subchannel.c +84 -39
  89. data/src/core/client_config/subchannel.h +15 -6
  90. data/src/core/client_config/subchannel_index.c +261 -0
  91. data/src/core/client_config/subchannel_index.h +77 -0
  92. data/src/core/compression/{algorithm.c → compression_algorithm.c} +3 -3
  93. data/src/core/httpcli/format_request.c +1 -1
  94. data/src/core/httpcli/httpcli.c +18 -16
  95. data/src/core/httpcli/httpcli.h +3 -2
  96. data/src/core/httpcli/httpcli_security_connector.c +9 -10
  97. data/src/core/httpcli/parser.c +7 -7
  98. data/src/core/httpcli/parser.h +1 -1
  99. data/src/core/iomgr/closure.c +7 -7
  100. data/src/core/iomgr/closure.h +6 -5
  101. data/src/core/iomgr/exec_ctx.c +12 -8
  102. data/src/core/iomgr/exec_ctx.h +12 -5
  103. data/src/core/iomgr/executor.c +4 -4
  104. data/src/core/iomgr/executor.h +2 -2
  105. data/src/core/iomgr/fd_posix.c +32 -19
  106. data/src/core/iomgr/fd_posix.h +7 -4
  107. data/src/core/iomgr/iocp_windows.c +7 -9
  108. data/src/core/iomgr/iomgr.c +2 -2
  109. data/src/core/iomgr/pollset.h +9 -10
  110. data/src/core/iomgr/pollset_multipoller_with_epoll.c +71 -5
  111. data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +9 -5
  112. data/src/core/iomgr/pollset_posix.c +44 -49
  113. data/src/core/iomgr/pollset_posix.h +14 -8
  114. data/src/core/iomgr/pollset_set.h +3 -9
  115. data/src/core/iomgr/pollset_set_posix.c +23 -3
  116. data/src/core/iomgr/pollset_set_posix.h +2 -18
  117. data/src/core/iomgr/pollset_set_windows.c +3 -3
  118. data/src/core/iomgr/pollset_set_windows.h +2 -2
  119. data/src/core/iomgr/pollset_windows.c +29 -37
  120. data/src/core/iomgr/pollset_windows.h +1 -5
  121. data/src/core/iomgr/resolve_address_posix.c +2 -2
  122. data/src/core/iomgr/resolve_address_windows.c +2 -2
  123. data/src/core/iomgr/sockaddr_utils.c +6 -6
  124. data/src/core/iomgr/sockaddr_win32.h +1 -6
  125. data/src/core/iomgr/tcp_client_posix.c +14 -12
  126. data/src/core/iomgr/tcp_client_windows.c +4 -4
  127. data/src/core/iomgr/tcp_posix.c +18 -10
  128. data/src/core/iomgr/tcp_posix.h +7 -1
  129. data/src/core/iomgr/tcp_server.h +40 -20
  130. data/src/core/iomgr/tcp_server_posix.c +106 -49
  131. data/src/core/iomgr/tcp_server_windows.c +98 -49
  132. data/src/core/iomgr/tcp_windows.c +11 -15
  133. data/src/core/iomgr/timer.c +10 -11
  134. data/src/core/iomgr/timer.h +22 -2
  135. data/src/core/iomgr/timer_heap.c +10 -10
  136. data/src/core/iomgr/timer_heap.h +2 -2
  137. data/src/core/iomgr/udp_server.c +7 -16
  138. data/src/core/iomgr/udp_server.h +2 -9
  139. data/src/core/iomgr/workqueue.h +2 -4
  140. data/src/core/iomgr/workqueue_posix.c +4 -3
  141. data/src/core/iomgr/workqueue_posix.h +3 -1
  142. data/src/core/json/json_reader.c +11 -12
  143. data/src/core/json/json_reader.h +4 -4
  144. data/src/core/json/json_string.c +19 -19
  145. data/src/core/json/json_writer.c +7 -9
  146. data/src/core/profiling/basic_timers.c +1 -1
  147. data/src/core/proto/grpc/lb/v0/load_balancer.pb.c +119 -0
  148. data/src/core/proto/grpc/lb/v0/load_balancer.pb.h +182 -0
  149. data/src/core/security/{base64.c → b64.c} +10 -10
  150. data/src/core/security/{base64.h → b64.h} +1 -1
  151. data/src/core/security/client_auth_filter.c +4 -5
  152. data/src/core/security/credentials.c +17 -10
  153. data/src/core/security/credentials.h +3 -3
  154. data/src/core/security/google_default_credentials.c +27 -22
  155. data/src/core/security/handshake.c +21 -12
  156. data/src/core/security/handshake.h +2 -1
  157. data/src/core/security/json_token.c +14 -8
  158. data/src/core/security/jwt_verifier.c +4 -3
  159. data/src/core/security/secure_endpoint.c +16 -16
  160. data/src/core/security/security_connector.c +131 -81
  161. data/src/core/security/security_connector.h +47 -27
  162. data/src/core/security/security_context.c +8 -3
  163. data/src/core/security/server_auth_filter.c +5 -5
  164. data/src/core/security/server_secure_chttp2.c +36 -37
  165. data/src/core/statistics/census_interface.h +2 -2
  166. data/src/core/statistics/census_rpc_stats.h +3 -3
  167. data/src/core/support/alloc.c +1 -1
  168. data/src/core/support/avl.c +2 -2
  169. data/src/core/support/cpu_posix.c +2 -2
  170. data/src/core/support/env_linux.c +28 -1
  171. data/src/core/support/env_win32.c +15 -7
  172. data/src/core/support/histogram.c +5 -5
  173. data/src/core/support/{file.c → load_file.c} +2 -2
  174. data/src/core/support/{file.h → load_file.h} +4 -12
  175. data/src/core/support/log_posix.c +1 -1
  176. data/src/core/support/log_win32.c +4 -3
  177. data/src/core/support/murmur_hash.c +11 -11
  178. data/src/core/support/murmur_hash.h +1 -1
  179. data/src/core/support/slice.c +11 -11
  180. data/src/core/support/slice_buffer.c +6 -6
  181. data/src/core/support/stack_lockfree.c +20 -10
  182. data/src/core/support/string.c +15 -15
  183. data/src/core/support/string.h +5 -5
  184. data/src/core/support/string_win32.c +5 -5
  185. data/src/core/support/subprocess_windows.c +141 -0
  186. data/src/core/support/sync.c +4 -4
  187. data/src/core/support/sync_posix.c +2 -2
  188. data/src/core/support/sync_win32.c +10 -5
  189. data/src/core/support/time.c +29 -29
  190. data/src/core/support/time_posix.c +15 -6
  191. data/src/core/support/time_precise.c +2 -2
  192. data/src/core/support/time_win32.c +18 -9
  193. data/src/core/support/tls_pthread.c +1 -1
  194. data/src/core/support/tmpfile.h +55 -0
  195. data/src/core/support/{file_posix.c → tmpfile_posix.c} +2 -2
  196. data/src/core/support/{file_win32.c → tmpfile_win32.c} +2 -2
  197. data/src/core/support/wrap_memcpy.c +53 -0
  198. data/src/core/surface/alarm.c +84 -0
  199. data/src/core/surface/byte_buffer_reader.c +1 -1
  200. data/src/core/surface/call.c +175 -116
  201. data/src/core/surface/call.h +2 -2
  202. data/src/core/surface/call_test_only.h +2 -2
  203. data/src/core/surface/channel.c +9 -9
  204. data/src/core/surface/channel.h +1 -1
  205. data/src/core/surface/channel_connectivity.c +3 -3
  206. data/src/core/surface/channel_create.c +4 -4
  207. data/src/core/surface/channel_ping.c +2 -2
  208. data/src/core/surface/completion_queue.c +84 -53
  209. data/src/core/surface/completion_queue.h +1 -1
  210. data/src/core/surface/init.c +11 -5
  211. data/src/core/surface/lame_client.c +2 -3
  212. data/src/core/surface/secure_channel_create.c +9 -10
  213. data/src/core/surface/server.c +30 -30
  214. data/src/core/surface/server_chttp2.c +8 -8
  215. data/src/core/surface/server_create.c +1 -4
  216. data/src/core/surface/validate_metadata.c +4 -4
  217. data/src/core/surface/version.c +2 -2
  218. data/src/core/transport/byte_stream.c +8 -6
  219. data/src/core/transport/byte_stream.h +6 -5
  220. data/src/core/transport/chttp2/bin_encoder.c +29 -29
  221. data/src/core/transport/chttp2/frame_data.c +29 -26
  222. data/src/core/transport/chttp2/frame_data.h +6 -6
  223. data/src/core/transport/chttp2/frame_goaway.c +30 -30
  224. data/src/core/transport/chttp2/frame_goaway.h +6 -6
  225. data/src/core/transport/chttp2/frame_ping.c +6 -6
  226. data/src/core/transport/chttp2/frame_ping.h +5 -5
  227. data/src/core/transport/chttp2/frame_rst_stream.c +18 -19
  228. data/src/core/transport/chttp2/frame_rst_stream.h +4 -4
  229. data/src/core/transport/chttp2/frame_settings.c +30 -30
  230. data/src/core/transport/chttp2/frame_settings.h +13 -13
  231. data/src/core/transport/chttp2/frame_window_update.c +17 -18
  232. data/src/core/transport/chttp2/frame_window_update.h +5 -7
  233. data/src/core/transport/chttp2/hpack_encoder.c +69 -73
  234. data/src/core/transport/chttp2/hpack_encoder.h +16 -16
  235. data/src/core/transport/chttp2/hpack_parser.c +167 -167
  236. data/src/core/transport/chttp2/hpack_parser.h +16 -16
  237. data/src/core/transport/chttp2/hpack_table.c +13 -13
  238. data/src/core/transport/chttp2/hpack_table.h +11 -11
  239. data/src/core/transport/chttp2/internal.h +103 -87
  240. data/src/core/transport/chttp2/parsing.c +25 -25
  241. data/src/core/transport/chttp2/stream_lists.c +38 -1
  242. data/src/core/transport/chttp2/stream_map.c +13 -14
  243. data/src/core/transport/chttp2/stream_map.h +6 -7
  244. data/src/core/transport/chttp2/timeout_encoding.c +19 -16
  245. data/src/core/transport/chttp2/varint.c +8 -9
  246. data/src/core/transport/chttp2/varint.h +7 -8
  247. data/src/core/transport/chttp2/writing.c +25 -22
  248. data/src/core/transport/chttp2_transport.c +147 -100
  249. data/src/core/transport/connectivity_state.c +6 -6
  250. data/src/core/transport/metadata.c +18 -18
  251. data/src/core/transport/metadata.h +5 -5
  252. data/src/core/transport/static_metadata.c +32 -33
  253. data/src/core/transport/static_metadata.h +8 -8
  254. data/src/core/transport/transport.c +6 -5
  255. data/src/core/transport/transport.h +17 -1
  256. data/src/core/tsi/fake_transport_security.c +7 -7
  257. data/src/core/tsi/ssl_transport_security.c +6 -4
  258. data/src/core/{iomgr/timer_internal.h → tsi/ssl_types.h} +19 -25
  259. data/src/ruby/ext/grpc/extconf.rb +52 -14
  260. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -1
  261. data/src/ruby/ext/grpc/rb_call.c +7 -3
  262. data/src/ruby/ext/grpc/rb_call_credentials.c +4 -0
  263. data/src/ruby/ext/grpc/rb_channel.c +4 -2
  264. data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
  265. data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -1
  266. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -1
  267. data/src/ruby/ext/grpc/rb_event_thread.c +5 -0
  268. data/src/ruby/ext/grpc/rb_grpc.c +28 -19
  269. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +562 -0
  270. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +846 -0
  271. data/src/ruby/ext/grpc/rb_loader.c +72 -0
  272. data/src/ruby/ext/grpc/rb_loader.h +40 -0
  273. data/src/ruby/ext/grpc/rb_server.c +3 -1
  274. data/src/ruby/ext/grpc/rb_server_credentials.c +4 -2
  275. data/src/ruby/lib/grpc/core/time_consts.rb +2 -2
  276. data/src/ruby/lib/grpc/errors.rb +2 -2
  277. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  278. data/src/ruby/lib/grpc/generic/rpc_desc.rb +1 -1
  279. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  280. data/src/ruby/lib/grpc/grpc.rb +34 -0
  281. data/src/ruby/lib/grpc/version.rb +1 -1
  282. data/src/ruby/pb/README.md +2 -2
  283. data/src/ruby/pb/generate_proto_ruby.sh +2 -2
  284. data/src/ruby/pb/grpc/health/checker.rb +11 -11
  285. data/src/ruby/pb/grpc/health/v1/health.rb +28 -0
  286. data/src/ruby/pb/grpc/health/{v1alpha → v1}/health_services.rb +4 -4
  287. data/src/ruby/spec/client_server_spec.rb +2 -1
  288. data/src/ruby/spec/pb/health/checker_spec.rb +23 -37
  289. data/third_party/boringssl/crypto/aes/aes.c +1142 -0
  290. data/third_party/boringssl/crypto/aes/internal.h +87 -0
  291. data/third_party/boringssl/crypto/aes/mode_wrappers.c +108 -0
  292. data/third_party/boringssl/crypto/asn1/a_bitstr.c +255 -0
  293. data/third_party/boringssl/crypto/asn1/a_bool.c +112 -0
  294. data/third_party/boringssl/crypto/asn1/a_bytes.c +317 -0
  295. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +286 -0
  296. data/third_party/boringssl/crypto/asn1/a_dup.c +103 -0
  297. data/third_party/boringssl/crypto/asn1/a_enum.c +183 -0
  298. data/third_party/boringssl/crypto/asn1/a_gentm.c +255 -0
  299. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +154 -0
  300. data/third_party/boringssl/crypto/asn1/a_int.c +456 -0
  301. data/third_party/boringssl/crypto/asn1/a_mbstr.c +390 -0
  302. data/third_party/boringssl/crypto/asn1/a_object.c +412 -0
  303. data/third_party/boringssl/crypto/asn1/a_octet.c +70 -0
  304. data/third_party/boringssl/crypto/asn1/a_print.c +119 -0
  305. data/third_party/boringssl/crypto/asn1/a_strnid.c +286 -0
  306. data/third_party/boringssl/crypto/asn1/a_time.c +221 -0
  307. data/third_party/boringssl/crypto/asn1/a_type.c +160 -0
  308. data/third_party/boringssl/crypto/asn1/a_utctm.c +342 -0
  309. data/third_party/boringssl/crypto/asn1/a_utf8.c +210 -0
  310. data/third_party/boringssl/crypto/asn1/asn1_lib.c +510 -0
  311. data/third_party/boringssl/crypto/asn1/asn1_locl.h +73 -0
  312. data/third_party/boringssl/crypto/asn1/asn1_par.c +444 -0
  313. data/third_party/boringssl/crypto/asn1/asn_pack.c +104 -0
  314. data/third_party/boringssl/crypto/asn1/bio_asn1.c +496 -0
  315. data/third_party/boringssl/crypto/asn1/bio_ndef.c +254 -0
  316. data/third_party/boringssl/crypto/asn1/f_enum.c +206 -0
  317. data/third_party/boringssl/crypto/asn1/f_int.c +210 -0
  318. data/third_party/boringssl/crypto/asn1/f_string.c +204 -0
  319. data/third_party/boringssl/crypto/asn1/t_bitst.c +102 -0
  320. data/third_party/boringssl/crypto/asn1/t_pkey.c +112 -0
  321. data/third_party/boringssl/crypto/asn1/tasn_dec.c +1342 -0
  322. data/third_party/boringssl/crypto/asn1/tasn_enc.c +695 -0
  323. data/third_party/boringssl/crypto/asn1/tasn_fre.c +264 -0
  324. data/third_party/boringssl/crypto/asn1/tasn_new.c +398 -0
  325. data/third_party/boringssl/crypto/asn1/tasn_prn.c +642 -0
  326. data/third_party/boringssl/crypto/asn1/tasn_typ.c +137 -0
  327. data/third_party/boringssl/crypto/asn1/tasn_utl.c +266 -0
  328. data/third_party/boringssl/crypto/asn1/x_bignum.c +143 -0
  329. data/third_party/boringssl/crypto/asn1/x_long.c +182 -0
  330. data/third_party/boringssl/crypto/base64/base64.c +478 -0
  331. data/third_party/boringssl/crypto/bio/bio.c +608 -0
  332. data/third_party/boringssl/crypto/bio/bio_mem.c +327 -0
  333. data/third_party/boringssl/crypto/bio/buffer.c +496 -0
  334. data/third_party/boringssl/crypto/bio/connect.c +544 -0
  335. data/third_party/boringssl/crypto/bio/fd.c +270 -0
  336. data/third_party/boringssl/crypto/bio/file.c +349 -0
  337. data/third_party/boringssl/crypto/bio/hexdump.c +192 -0
  338. data/third_party/boringssl/crypto/bio/internal.h +108 -0
  339. data/third_party/boringssl/crypto/bio/pair.c +803 -0
  340. data/third_party/boringssl/crypto/bio/printf.c +119 -0
  341. data/third_party/boringssl/crypto/bio/socket.c +195 -0
  342. data/third_party/boringssl/crypto/bio/socket_helper.c +113 -0
  343. data/third_party/boringssl/crypto/bn/add.c +377 -0
  344. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +599 -0
  345. data/third_party/boringssl/crypto/bn/bn.c +341 -0
  346. data/third_party/boringssl/crypto/bn/bn_asn1.c +93 -0
  347. data/third_party/boringssl/crypto/bn/cmp.c +200 -0
  348. data/third_party/boringssl/crypto/bn/convert.c +597 -0
  349. data/third_party/boringssl/crypto/bn/ctx.c +311 -0
  350. data/third_party/boringssl/crypto/bn/div.c +625 -0
  351. data/third_party/boringssl/crypto/bn/exponentiation.c +1544 -0
  352. data/third_party/boringssl/crypto/bn/gcd.c +711 -0
  353. data/third_party/boringssl/crypto/bn/generic.c +1019 -0
  354. data/third_party/boringssl/crypto/bn/internal.h +294 -0
  355. data/third_party/boringssl/crypto/bn/kronecker.c +175 -0
  356. data/third_party/boringssl/crypto/bn/montgomery.c +561 -0
  357. data/third_party/boringssl/crypto/bn/mul.c +888 -0
  358. data/third_party/boringssl/crypto/bn/prime.c +845 -0
  359. data/third_party/boringssl/crypto/bn/random.c +326 -0
  360. data/third_party/boringssl/crypto/bn/rsaz_exp.c +326 -0
  361. data/third_party/boringssl/crypto/bn/rsaz_exp.h +56 -0
  362. data/third_party/boringssl/crypto/bn/shift.c +299 -0
  363. data/third_party/boringssl/crypto/bn/sqrt.c +505 -0
  364. data/third_party/boringssl/crypto/buf/buf.c +235 -0
  365. data/third_party/boringssl/crypto/bytestring/ber.c +221 -0
  366. data/third_party/boringssl/crypto/bytestring/cbb.c +411 -0
  367. data/third_party/boringssl/crypto/bytestring/cbs.c +415 -0
  368. data/third_party/boringssl/crypto/bytestring/internal.h +46 -0
  369. data/third_party/boringssl/crypto/chacha/chacha_generic.c +140 -0
  370. data/third_party/boringssl/crypto/chacha/chacha_vec.c +323 -0
  371. data/third_party/boringssl/crypto/cipher/aead.c +167 -0
  372. data/third_party/boringssl/crypto/cipher/cipher.c +652 -0
  373. data/third_party/boringssl/crypto/cipher/derive_key.c +154 -0
  374. data/third_party/boringssl/crypto/cipher/e_aes.c +1767 -0
  375. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +311 -0
  376. data/third_party/boringssl/crypto/cipher/e_des.c +207 -0
  377. data/third_party/boringssl/crypto/cipher/e_null.c +85 -0
  378. data/third_party/boringssl/crypto/cipher/e_rc2.c +443 -0
  379. data/third_party/boringssl/crypto/cipher/e_rc4.c +87 -0
  380. data/third_party/boringssl/crypto/cipher/e_ssl3.c +463 -0
  381. data/third_party/boringssl/crypto/cipher/e_tls.c +673 -0
  382. data/third_party/boringssl/crypto/cipher/internal.h +164 -0
  383. data/third_party/boringssl/crypto/cipher/tls_cbc.c +495 -0
  384. data/third_party/boringssl/crypto/cmac/cmac.c +239 -0
  385. data/third_party/boringssl/crypto/conf/conf.c +778 -0
  386. data/third_party/boringssl/crypto/conf/conf_def.h +127 -0
  387. data/third_party/boringssl/crypto/conf/internal.h +31 -0
  388. data/third_party/boringssl/crypto/cpu-arm.c +199 -0
  389. data/third_party/boringssl/crypto/cpu-intel.c +261 -0
  390. data/third_party/boringssl/crypto/crypto.c +140 -0
  391. data/third_party/boringssl/crypto/curve25519/curve25519.c +4897 -0
  392. data/third_party/boringssl/crypto/des/des.c +771 -0
  393. data/third_party/boringssl/crypto/des/internal.h +212 -0
  394. data/third_party/boringssl/crypto/dh/check.c +180 -0
  395. data/third_party/boringssl/crypto/dh/dh.c +463 -0
  396. data/third_party/boringssl/crypto/dh/dh_asn1.c +84 -0
  397. data/third_party/boringssl/crypto/dh/internal.h +80 -0
  398. data/third_party/boringssl/crypto/dh/params.c +301 -0
  399. data/third_party/boringssl/crypto/digest/digest.c +248 -0
  400. data/third_party/boringssl/crypto/digest/digests.c +321 -0
  401. data/third_party/boringssl/crypto/digest/internal.h +112 -0
  402. data/third_party/boringssl/crypto/digest/md32_common.h +322 -0
  403. data/third_party/boringssl/crypto/directory.h +66 -0
  404. data/third_party/boringssl/crypto/directory_posix.c +108 -0
  405. data/third_party/boringssl/crypto/directory_win.c +144 -0
  406. data/third_party/boringssl/crypto/dsa/dsa.c +908 -0
  407. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +150 -0
  408. data/third_party/boringssl/crypto/dsa/internal.h +78 -0
  409. data/third_party/boringssl/crypto/ec/ec.c +889 -0
  410. data/third_party/boringssl/crypto/ec/ec_asn1.c +586 -0
  411. data/third_party/boringssl/crypto/ec/ec_key.c +482 -0
  412. data/third_party/boringssl/crypto/ec/ec_montgomery.c +280 -0
  413. data/third_party/boringssl/crypto/ec/internal.h +318 -0
  414. data/third_party/boringssl/crypto/ec/oct.c +416 -0
  415. data/third_party/boringssl/crypto/ec/p224-64.c +1305 -0
  416. data/third_party/boringssl/crypto/ec/p256-64.c +1878 -0
  417. data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +9548 -0
  418. data/third_party/boringssl/crypto/ec/p256-x86_64.c +596 -0
  419. data/third_party/boringssl/crypto/ec/simple.c +1313 -0
  420. data/third_party/boringssl/crypto/ec/util-64.c +183 -0
  421. data/third_party/boringssl/crypto/ec/wnaf.c +449 -0
  422. data/third_party/boringssl/crypto/ecdh/ecdh.c +153 -0
  423. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +496 -0
  424. data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +240 -0
  425. data/third_party/boringssl/crypto/engine/engine.c +96 -0
  426. data/third_party/boringssl/crypto/err/err.c +756 -0
  427. data/third_party/boringssl/crypto/evp/algorithm.c +153 -0
  428. data/third_party/boringssl/crypto/evp/digestsign.c +159 -0
  429. data/third_party/boringssl/crypto/evp/evp.c +411 -0
  430. data/third_party/boringssl/crypto/evp/evp_asn1.c +179 -0
  431. data/third_party/boringssl/crypto/evp/evp_ctx.c +477 -0
  432. data/third_party/boringssl/crypto/evp/internal.h +278 -0
  433. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +588 -0
  434. data/third_party/boringssl/crypto/evp/p_ec.c +283 -0
  435. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +562 -0
  436. data/third_party/boringssl/crypto/evp/p_rsa.c +596 -0
  437. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +737 -0
  438. data/third_party/boringssl/crypto/evp/pbkdf.c +151 -0
  439. data/third_party/boringssl/crypto/evp/sign.c +151 -0
  440. data/third_party/boringssl/crypto/ex_data.c +294 -0
  441. data/third_party/boringssl/crypto/hkdf/hkdf.c +89 -0
  442. data/third_party/boringssl/crypto/hmac/hmac.c +213 -0
  443. data/third_party/boringssl/crypto/internal.h +532 -0
  444. data/third_party/boringssl/crypto/lhash/lhash.c +346 -0
  445. data/third_party/boringssl/crypto/md4/md4.c +225 -0
  446. data/third_party/boringssl/crypto/md5/md5.c +275 -0
  447. data/third_party/boringssl/crypto/mem.c +200 -0
  448. data/third_party/boringssl/crypto/modes/cbc.c +216 -0
  449. data/third_party/boringssl/crypto/modes/cfb.c +231 -0
  450. data/third_party/boringssl/crypto/modes/ctr.c +226 -0
  451. data/third_party/boringssl/crypto/modes/gcm.c +1252 -0
  452. data/third_party/boringssl/crypto/modes/internal.h +370 -0
  453. data/third_party/boringssl/crypto/modes/ofb.c +108 -0
  454. data/third_party/boringssl/crypto/obj/obj.c +664 -0
  455. data/third_party/boringssl/crypto/obj/obj_dat.h +5257 -0
  456. data/third_party/boringssl/crypto/obj/obj_xref.c +124 -0
  457. data/third_party/boringssl/crypto/obj/obj_xref.h +96 -0
  458. data/third_party/boringssl/crypto/pem/pem_all.c +281 -0
  459. data/third_party/boringssl/crypto/pem/pem_info.c +404 -0
  460. data/third_party/boringssl/crypto/pem/pem_lib.c +835 -0
  461. data/third_party/boringssl/crypto/pem/pem_oth.c +89 -0
  462. data/third_party/boringssl/crypto/pem/pem_pk8.c +244 -0
  463. data/third_party/boringssl/crypto/pem/pem_pkey.c +312 -0
  464. data/third_party/boringssl/crypto/pem/pem_x509.c +65 -0
  465. data/third_party/boringssl/crypto/pem/pem_xaux.c +66 -0
  466. data/third_party/boringssl/crypto/pkcs8/internal.h +83 -0
  467. data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +150 -0
  468. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +440 -0
  469. data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +85 -0
  470. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +1217 -0
  471. data/third_party/boringssl/crypto/poly1305/poly1305.c +331 -0
  472. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +301 -0
  473. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +892 -0
  474. data/third_party/boringssl/crypto/rand/internal.h +32 -0
  475. data/third_party/boringssl/crypto/rand/rand.c +239 -0
  476. data/third_party/boringssl/crypto/rand/urandom.c +223 -0
  477. data/third_party/boringssl/crypto/rand/windows.c +56 -0
  478. data/third_party/boringssl/crypto/rc4/rc4.c +283 -0
  479. data/third_party/boringssl/crypto/refcount_c11.c +67 -0
  480. data/third_party/boringssl/crypto/refcount_lock.c +53 -0
  481. data/third_party/boringssl/crypto/rsa/blinding.c +462 -0
  482. data/third_party/boringssl/crypto/rsa/internal.h +164 -0
  483. data/third_party/boringssl/crypto/rsa/padding.c +711 -0
  484. data/third_party/boringssl/crypto/rsa/rsa.c +808 -0
  485. data/third_party/boringssl/crypto/rsa/rsa_asn1.c +473 -0
  486. data/third_party/boringssl/crypto/rsa/rsa_impl.c +1138 -0
  487. data/third_party/boringssl/crypto/sha/sha1.c +337 -0
  488. data/third_party/boringssl/crypto/sha/sha256.c +327 -0
  489. data/third_party/boringssl/crypto/sha/sha512.c +607 -0
  490. data/third_party/boringssl/crypto/stack/stack.c +386 -0
  491. data/third_party/boringssl/crypto/test/scoped_types.h +137 -0
  492. data/third_party/boringssl/crypto/test/test_util.h +35 -0
  493. data/third_party/boringssl/crypto/thread.c +101 -0
  494. data/third_party/boringssl/crypto/thread_none.c +55 -0
  495. data/third_party/boringssl/crypto/thread_pthread.c +167 -0
  496. data/third_party/boringssl/crypto/thread_win.c +282 -0
  497. data/third_party/boringssl/crypto/time_support.c +212 -0
  498. data/third_party/boringssl/crypto/x509/a_digest.c +97 -0
  499. data/third_party/boringssl/crypto/x509/a_sign.c +136 -0
  500. data/third_party/boringssl/crypto/x509/a_strex.c +564 -0
  501. data/third_party/boringssl/crypto/x509/a_verify.c +133 -0
  502. data/third_party/boringssl/crypto/x509/asn1_gen.c +873 -0
  503. data/third_party/boringssl/crypto/x509/by_dir.c +491 -0
  504. data/third_party/boringssl/crypto/x509/by_file.c +295 -0
  505. data/third_party/boringssl/crypto/x509/charmap.h +15 -0
  506. data/third_party/boringssl/crypto/x509/i2d_pr.c +84 -0
  507. data/third_party/boringssl/crypto/x509/pkcs7.c +353 -0
  508. data/third_party/boringssl/crypto/x509/t_crl.c +129 -0
  509. data/third_party/boringssl/crypto/x509/t_req.c +246 -0
  510. data/third_party/boringssl/crypto/x509/t_x509.c +500 -0
  511. data/third_party/boringssl/crypto/x509/t_x509a.c +109 -0
  512. data/third_party/boringssl/crypto/x509/vpm_int.h +70 -0
  513. data/third_party/boringssl/crypto/x509/x509.c +152 -0
  514. data/third_party/boringssl/crypto/x509/x509_att.c +353 -0
  515. data/third_party/boringssl/crypto/x509/x509_cmp.c +490 -0
  516. data/third_party/boringssl/crypto/x509/x509_d2.c +105 -0
  517. data/third_party/boringssl/crypto/x509/x509_def.c +88 -0
  518. data/third_party/boringssl/crypto/x509/x509_ext.c +206 -0
  519. data/third_party/boringssl/crypto/x509/x509_lu.c +738 -0
  520. data/third_party/boringssl/crypto/x509/x509_obj.c +191 -0
  521. data/third_party/boringssl/crypto/x509/x509_r2x.c +113 -0
  522. data/third_party/boringssl/crypto/x509/x509_req.c +315 -0
  523. data/third_party/boringssl/crypto/x509/x509_set.c +154 -0
  524. data/third_party/boringssl/crypto/x509/x509_trs.c +304 -0
  525. data/third_party/boringssl/crypto/x509/x509_txt.c +209 -0
  526. data/third_party/boringssl/crypto/x509/x509_v3.c +271 -0
  527. data/third_party/boringssl/crypto/x509/x509_vfy.c +2456 -0
  528. data/third_party/boringssl/crypto/x509/x509_vpm.c +672 -0
  529. data/third_party/boringssl/crypto/x509/x509cset.c +172 -0
  530. data/third_party/boringssl/crypto/x509/x509name.c +381 -0
  531. data/third_party/boringssl/crypto/x509/x509rset.c +80 -0
  532. data/third_party/boringssl/crypto/x509/x509spki.c +135 -0
  533. data/third_party/boringssl/crypto/x509/x509type.c +128 -0
  534. data/third_party/boringssl/crypto/x509/x_algor.c +154 -0
  535. data/third_party/boringssl/crypto/x509/x_all.c +547 -0
  536. data/third_party/boringssl/crypto/x509/x_attrib.c +117 -0
  537. data/third_party/boringssl/crypto/x509/x_crl.c +560 -0
  538. data/third_party/boringssl/crypto/x509/x_exten.c +75 -0
  539. data/third_party/boringssl/crypto/x509/x_info.c +95 -0
  540. data/third_party/boringssl/crypto/x509/x_name.c +538 -0
  541. data/third_party/boringssl/crypto/x509/x_pkey.c +100 -0
  542. data/third_party/boringssl/crypto/x509/x_pubkey.c +384 -0
  543. data/third_party/boringssl/crypto/x509/x_req.c +112 -0
  544. data/third_party/boringssl/crypto/x509/x_sig.c +69 -0
  545. data/third_party/boringssl/crypto/x509/x_spki.c +78 -0
  546. data/third_party/boringssl/crypto/x509/x_val.c +69 -0
  547. data/third_party/boringssl/crypto/x509/x_x509.c +227 -0
  548. data/third_party/boringssl/crypto/x509/x_x509a.c +197 -0
  549. data/third_party/boringssl/crypto/x509v3/ext_dat.h +129 -0
  550. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +299 -0
  551. data/third_party/boringssl/crypto/x509v3/pcy_data.c +137 -0
  552. data/third_party/boringssl/crypto/x509v3/pcy_int.h +212 -0
  553. data/third_party/boringssl/crypto/x509v3/pcy_lib.c +165 -0
  554. data/third_party/boringssl/crypto/x509v3/pcy_map.c +133 -0
  555. data/third_party/boringssl/crypto/x509v3/pcy_node.c +197 -0
  556. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +876 -0
  557. data/third_party/boringssl/crypto/x509v3/v3_akey.c +212 -0
  558. data/third_party/boringssl/crypto/x509v3/v3_akeya.c +71 -0
  559. data/third_party/boringssl/crypto/x509v3/v3_alt.c +622 -0
  560. data/third_party/boringssl/crypto/x509v3/v3_bcons.c +126 -0
  561. data/third_party/boringssl/crypto/x509v3/v3_bitst.c +141 -0
  562. data/third_party/boringssl/crypto/x509v3/v3_conf.c +459 -0
  563. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +475 -0
  564. data/third_party/boringssl/crypto/x509v3/v3_crld.c +616 -0
  565. data/third_party/boringssl/crypto/x509v3/v3_enum.c +98 -0
  566. data/third_party/boringssl/crypto/x509v3/v3_extku.c +145 -0
  567. data/third_party/boringssl/crypto/x509v3/v3_genn.c +252 -0
  568. data/third_party/boringssl/crypto/x509v3/v3_ia5.c +117 -0
  569. data/third_party/boringssl/crypto/x509v3/v3_info.c +200 -0
  570. data/third_party/boringssl/crypto/x509v3/v3_int.c +87 -0
  571. data/third_party/boringssl/crypto/x509v3/v3_lib.c +335 -0
  572. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +510 -0
  573. data/third_party/boringssl/crypto/x509v3/v3_pci.c +335 -0
  574. data/third_party/boringssl/crypto/x509v3/v3_pcia.c +56 -0
  575. data/third_party/boringssl/crypto/x509v3/v3_pcons.c +142 -0
  576. data/third_party/boringssl/crypto/x509v3/v3_pku.c +109 -0
  577. data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +156 -0
  578. data/third_party/boringssl/crypto/x509v3/v3_prn.c +207 -0
  579. data/third_party/boringssl/crypto/x509v3/v3_purp.c +805 -0
  580. data/third_party/boringssl/crypto/x509v3/v3_skey.c +148 -0
  581. data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +266 -0
  582. data/third_party/boringssl/crypto/x509v3/v3_utl.c +1322 -0
  583. data/third_party/boringssl/include/openssl/aead.h +346 -0
  584. data/third_party/boringssl/include/openssl/aes.h +158 -0
  585. data/third_party/boringssl/include/openssl/arm_arch.h +127 -0
  586. data/third_party/boringssl/include/openssl/asn1.h +1168 -0
  587. data/third_party/boringssl/include/openssl/asn1_mac.h +75 -0
  588. data/third_party/boringssl/include/openssl/asn1t.h +906 -0
  589. data/third_party/boringssl/include/openssl/base.h +261 -0
  590. data/third_party/boringssl/include/openssl/base64.h +184 -0
  591. data/third_party/boringssl/include/openssl/bio.h +902 -0
  592. data/third_party/boringssl/include/openssl/blowfish.h +93 -0
  593. data/third_party/boringssl/include/openssl/bn.h +885 -0
  594. data/third_party/boringssl/include/openssl/buf.h +118 -0
  595. data/third_party/boringssl/include/openssl/buffer.h +18 -0
  596. data/third_party/boringssl/include/openssl/bytestring.h +360 -0
  597. data/third_party/boringssl/include/openssl/cast.h +96 -0
  598. data/third_party/boringssl/include/openssl/chacha.h +37 -0
  599. data/third_party/boringssl/include/openssl/cipher.h +571 -0
  600. data/third_party/boringssl/include/openssl/cmac.h +76 -0
  601. data/third_party/boringssl/include/openssl/conf.h +145 -0
  602. data/third_party/boringssl/include/openssl/cpu.h +184 -0
  603. data/third_party/boringssl/include/openssl/crypto.h +68 -0
  604. data/third_party/boringssl/include/openssl/curve25519.h +88 -0
  605. data/third_party/boringssl/include/openssl/des.h +177 -0
  606. data/third_party/boringssl/include/openssl/dh.h +238 -0
  607. data/third_party/boringssl/include/openssl/digest.h +258 -0
  608. data/third_party/boringssl/include/openssl/dsa.h +343 -0
  609. data/third_party/boringssl/include/openssl/dtls1.h +16 -0
  610. data/third_party/boringssl/include/openssl/ec.h +355 -0
  611. data/third_party/boringssl/include/openssl/ec_key.h +280 -0
  612. data/third_party/boringssl/include/openssl/ecdh.h +102 -0
  613. data/third_party/boringssl/include/openssl/ecdsa.h +206 -0
  614. data/third_party/boringssl/include/openssl/engine.h +98 -0
  615. data/third_party/boringssl/include/openssl/err.h +487 -0
  616. data/third_party/boringssl/include/openssl/evp.h +750 -0
  617. data/third_party/boringssl/include/openssl/ex_data.h +213 -0
  618. data/third_party/boringssl/include/openssl/hkdf.h +44 -0
  619. data/third_party/boringssl/include/openssl/hmac.h +160 -0
  620. data/third_party/boringssl/include/openssl/lhash.h +192 -0
  621. data/third_party/boringssl/include/openssl/lhash_macros.h +132 -0
  622. data/third_party/boringssl/include/openssl/md4.h +102 -0
  623. data/third_party/boringssl/include/openssl/md5.h +107 -0
  624. data/third_party/boringssl/include/openssl/mem.h +140 -0
  625. data/third_party/boringssl/include/openssl/obj.h +198 -0
  626. data/third_party/boringssl/include/openssl/obj_mac.h +4140 -0
  627. data/third_party/boringssl/include/openssl/objects.h +18 -0
  628. data/third_party/boringssl/include/openssl/opensslfeatures.h +60 -0
  629. data/third_party/boringssl/include/openssl/opensslv.h +18 -0
  630. data/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  631. data/third_party/boringssl/include/openssl/pem.h +521 -0
  632. data/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  633. data/third_party/boringssl/include/openssl/pkcs7.h +16 -0
  634. data/third_party/boringssl/include/openssl/pkcs8.h +220 -0
  635. data/third_party/boringssl/include/openssl/poly1305.h +51 -0
  636. data/third_party/boringssl/include/openssl/pqueue.h +146 -0
  637. data/third_party/boringssl/include/openssl/rand.h +113 -0
  638. data/third_party/boringssl/include/openssl/rc4.h +90 -0
  639. data/third_party/boringssl/include/openssl/rsa.h +637 -0
  640. data/third_party/boringssl/include/openssl/safestack.h +16 -0
  641. data/third_party/boringssl/include/openssl/sha.h +256 -0
  642. data/third_party/boringssl/include/openssl/srtp.h +18 -0
  643. data/third_party/boringssl/include/openssl/ssl.h +4466 -0
  644. data/third_party/boringssl/include/openssl/ssl3.h +441 -0
  645. data/third_party/boringssl/include/openssl/stack.h +298 -0
  646. data/third_party/boringssl/include/openssl/stack_macros.h +4190 -0
  647. data/third_party/boringssl/include/openssl/thread.h +173 -0
  648. data/third_party/boringssl/include/openssl/time_support.h +90 -0
  649. data/third_party/boringssl/include/openssl/tls1.h +653 -0
  650. data/third_party/boringssl/include/openssl/type_check.h +91 -0
  651. data/third_party/boringssl/include/openssl/x509.h +1258 -0
  652. data/third_party/boringssl/include/openssl/x509_vfy.h +611 -0
  653. data/third_party/boringssl/include/openssl/x509v3.h +798 -0
  654. data/third_party/boringssl/ssl/custom_extensions.c +257 -0
  655. data/third_party/boringssl/ssl/d1_both.c +880 -0
  656. data/third_party/boringssl/ssl/d1_clnt.c +566 -0
  657. data/third_party/boringssl/ssl/d1_lib.c +340 -0
  658. data/third_party/boringssl/ssl/d1_meth.c +130 -0
  659. data/third_party/boringssl/ssl/d1_pkt.c +578 -0
  660. data/third_party/boringssl/ssl/d1_srtp.c +234 -0
  661. data/third_party/boringssl/ssl/d1_srvr.c +485 -0
  662. data/third_party/boringssl/ssl/dtls_record.c +308 -0
  663. data/third_party/boringssl/ssl/internal.h +1276 -0
  664. data/third_party/boringssl/ssl/pqueue/pqueue.c +197 -0
  665. data/third_party/boringssl/ssl/s3_both.c +571 -0
  666. data/third_party/boringssl/ssl/s3_clnt.c +2241 -0
  667. data/third_party/boringssl/ssl/s3_enc.c +494 -0
  668. data/third_party/boringssl/ssl/s3_lib.c +587 -0
  669. data/third_party/boringssl/ssl/s3_meth.c +166 -0
  670. data/third_party/boringssl/ssl/s3_pkt.c +732 -0
  671. data/third_party/boringssl/ssl/s3_srvr.c +2536 -0
  672. data/third_party/boringssl/ssl/ssl_aead_ctx.c +300 -0
  673. data/third_party/boringssl/ssl/ssl_asn1.c +718 -0
  674. data/third_party/boringssl/ssl/ssl_buffer.c +319 -0
  675. data/third_party/boringssl/ssl/ssl_cert.c +539 -0
  676. data/third_party/boringssl/ssl/ssl_cipher.c +2003 -0
  677. data/third_party/boringssl/ssl/ssl_file.c +633 -0
  678. data/third_party/boringssl/ssl/ssl_lib.c +2653 -0
  679. data/third_party/boringssl/ssl/ssl_rsa.c +423 -0
  680. data/third_party/boringssl/ssl/ssl_session.c +764 -0
  681. data/third_party/boringssl/ssl/ssl_stat.c +591 -0
  682. data/third_party/boringssl/ssl/t1_enc.c +708 -0
  683. data/third_party/boringssl/ssl/t1_lib.c +2905 -0
  684. data/third_party/boringssl/ssl/test/async_bio.h +45 -0
  685. data/third_party/boringssl/ssl/test/packeted_bio.h +44 -0
  686. data/third_party/boringssl/ssl/test/scoped_types.h +28 -0
  687. data/third_party/boringssl/ssl/test/test_config.h +108 -0
  688. data/third_party/boringssl/ssl/tls_record.c +342 -0
  689. data/third_party/nanopb/pb.h +547 -0
  690. data/third_party/nanopb/pb_common.c +97 -0
  691. data/third_party/nanopb/pb_common.h +42 -0
  692. data/third_party/nanopb/pb_decode.c +1319 -0
  693. data/third_party/nanopb/pb_decode.h +149 -0
  694. data/third_party/nanopb/pb_encode.c +690 -0
  695. data/third_party/nanopb/pb_encode.h +154 -0
  696. data/third_party/zlib/adler32.c +179 -0
  697. data/third_party/zlib/compress.c +80 -0
  698. data/third_party/zlib/crc32.c +425 -0
  699. data/third_party/zlib/crc32.h +441 -0
  700. data/third_party/zlib/deflate.c +1967 -0
  701. data/third_party/zlib/deflate.h +346 -0
  702. data/third_party/zlib/gzclose.c +25 -0
  703. data/third_party/zlib/gzguts.h +209 -0
  704. data/third_party/zlib/gzlib.c +634 -0
  705. data/third_party/zlib/gzread.c +594 -0
  706. data/third_party/zlib/gzwrite.c +577 -0
  707. data/third_party/zlib/infback.c +640 -0
  708. data/third_party/zlib/inffast.c +340 -0
  709. data/third_party/zlib/inffast.h +11 -0
  710. data/third_party/zlib/inffixed.h +94 -0
  711. data/third_party/zlib/inflate.c +1512 -0
  712. data/third_party/zlib/inflate.h +122 -0
  713. data/third_party/zlib/inftrees.c +306 -0
  714. data/third_party/zlib/inftrees.h +62 -0
  715. data/third_party/zlib/trees.c +1226 -0
  716. data/third_party/zlib/trees.h +128 -0
  717. data/third_party/zlib/uncompr.c +59 -0
  718. data/third_party/zlib/zconf.h +511 -0
  719. data/third_party/zlib/zlib.h +1768 -0
  720. data/third_party/zlib/zutil.c +324 -0
  721. data/third_party/zlib/zutil.h +253 -0
  722. metadata +504 -20
  723. data/Rakefile +0 -63
  724. data/src/ruby/pb/grpc/health/v1alpha/health.rb +0 -29
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -41,6 +41,7 @@
41
41
  void grpc_do_security_handshake(grpc_exec_ctx *exec_ctx,
42
42
  tsi_handshaker *handshaker,
43
43
  grpc_security_connector *connector,
44
+ bool is_client_side,
44
45
  grpc_endpoint *nonsecure_endpoint,
45
46
  grpc_security_handshake_done_cb cb,
46
47
  void *user_data);
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -39,7 +39,7 @@
39
39
  #include <grpc/support/log.h>
40
40
  #include <grpc/support/string_util.h>
41
41
 
42
- #include "src/core/security/base64.h"
42
+ #include "src/core/security/b64.h"
43
43
  #include "src/core/support/string.h"
44
44
 
45
45
  #include <openssl/bio.h>
@@ -49,7 +49,13 @@
49
49
  /* --- Constants. --- */
50
50
 
51
51
  /* 1 hour max. */
52
- const gpr_timespec grpc_max_auth_token_lifetime = {3600, 0, GPR_TIMESPAN};
52
+ gpr_timespec grpc_max_auth_token_lifetime() {
53
+ gpr_timespec out;
54
+ out.tv_sec = 3600;
55
+ out.tv_nsec = 0;
56
+ out.clock_type = GPR_TIMESPAN;
57
+ return out;
58
+ }
53
59
 
54
60
  #define GRPC_JWT_RSA_SHA256_ALGORITHM "RS256"
55
61
  #define GRPC_JWT_TYPE "JWT"
@@ -211,12 +217,12 @@ static char *encoded_jwt_claim(const grpc_auth_json_key *json_key,
211
217
  gpr_timespec expiration = gpr_time_add(now, token_lifetime);
212
218
  char now_str[GPR_LTOA_MIN_BUFSIZE];
213
219
  char expiration_str[GPR_LTOA_MIN_BUFSIZE];
214
- if (gpr_time_cmp(token_lifetime, grpc_max_auth_token_lifetime) > 0) {
220
+ if (gpr_time_cmp(token_lifetime, grpc_max_auth_token_lifetime()) > 0) {
215
221
  gpr_log(GPR_INFO, "Cropping token lifetime to maximum allowed value.");
216
- expiration = gpr_time_add(now, grpc_max_auth_token_lifetime);
222
+ expiration = gpr_time_add(now, grpc_max_auth_token_lifetime());
217
223
  }
218
- gpr_int64toa(now.tv_sec, now_str);
219
- gpr_int64toa(expiration.tv_sec, expiration_str);
224
+ int64_ttoa(now.tv_sec, now_str);
225
+ int64_ttoa(expiration.tv_sec, expiration_str);
220
226
 
221
227
  child =
222
228
  create_child(NULL, json, "iss", json_key->client_email, GRPC_JSON_STRING);
@@ -251,7 +257,7 @@ static char *dot_concat_and_free_strings(char *str1, char *str2) {
251
257
  memcpy(current, str2, str2_len);
252
258
  current += str2_len;
253
259
  GPR_ASSERT(current >= result);
254
- GPR_ASSERT((gpr_uintptr)(current - result) == result_len);
260
+ GPR_ASSERT((uintptr_t)(current - result) == result_len);
255
261
  *current = '\0';
256
262
  gpr_free(str1);
257
263
  gpr_free(str2);
@@ -37,7 +37,8 @@
37
37
  #include <string.h>
38
38
 
39
39
  #include "src/core/httpcli/httpcli.h"
40
- #include "src/core/security/base64.h"
40
+ #include "src/core/security/b64.h"
41
+ #include "src/core/tsi/ssl_types.h"
41
42
 
42
43
  #include <grpc/support/alloc.h>
43
44
  #include <grpc/support/log.h>
@@ -442,8 +443,8 @@ static BIGNUM *bignum_from_base64(const char *b64) {
442
443
  gpr_log(GPR_ERROR, "Invalid base64 for big num.");
443
444
  return NULL;
444
445
  }
445
- result =
446
- BN_bin2bn(GPR_SLICE_START_PTR(bin), (int)GPR_SLICE_LENGTH(bin), NULL);
446
+ result = BN_bin2bn(GPR_SLICE_START_PTR(bin),
447
+ TSI_SIZE_AS_SIZE(GPR_SLICE_LENGTH(bin)), NULL);
447
448
  gpr_slice_unref(bin);
448
449
  return result;
449
450
  }
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -117,8 +117,8 @@ static void secure_endpoint_unref(grpc_exec_ctx *exec_ctx,
117
117
  static void secure_endpoint_ref(secure_endpoint *ep) { gpr_ref(&ep->ref); }
118
118
  #endif
119
119
 
120
- static void flush_read_staging_buffer(secure_endpoint *ep, gpr_uint8 **cur,
121
- gpr_uint8 **end) {
120
+ static void flush_read_staging_buffer(secure_endpoint *ep, uint8_t **cur,
121
+ uint8_t **end) {
122
122
  gpr_slice_buffer_add(ep->read_buffer, ep->read_staging_buffer);
123
123
  ep->read_staging_buffer = gpr_slice_malloc(STAGING_BUFFER_SIZE);
124
124
  *cur = GPR_SLICE_START_PTR(ep->read_staging_buffer);
@@ -126,7 +126,7 @@ static void flush_read_staging_buffer(secure_endpoint *ep, gpr_uint8 **cur,
126
126
  }
127
127
 
128
128
  static void call_read_cb(grpc_exec_ctx *exec_ctx, secure_endpoint *ep,
129
- int success) {
129
+ bool success) {
130
130
  if (grpc_trace_secure_endpoint) {
131
131
  size_t i;
132
132
  for (i = 0; i < ep->read_buffer->count; i++) {
@@ -137,17 +137,17 @@ static void call_read_cb(grpc_exec_ctx *exec_ctx, secure_endpoint *ep,
137
137
  }
138
138
  }
139
139
  ep->read_buffer = NULL;
140
- grpc_exec_ctx_enqueue(exec_ctx, ep->read_cb, success);
140
+ grpc_exec_ctx_enqueue(exec_ctx, ep->read_cb, success, NULL);
141
141
  SECURE_ENDPOINT_UNREF(exec_ctx, ep, "read");
142
142
  }
143
143
 
144
- static void on_read(grpc_exec_ctx *exec_ctx, void *user_data, int success) {
144
+ static void on_read(grpc_exec_ctx *exec_ctx, void *user_data, bool success) {
145
145
  unsigned i;
146
- gpr_uint8 keep_looping = 0;
146
+ uint8_t keep_looping = 0;
147
147
  tsi_result result = TSI_OK;
148
148
  secure_endpoint *ep = (secure_endpoint *)user_data;
149
- gpr_uint8 *cur = GPR_SLICE_START_PTR(ep->read_staging_buffer);
150
- gpr_uint8 *end = GPR_SLICE_END_PTR(ep->read_staging_buffer);
149
+ uint8_t *cur = GPR_SLICE_START_PTR(ep->read_staging_buffer);
150
+ uint8_t *end = GPR_SLICE_END_PTR(ep->read_staging_buffer);
151
151
 
152
152
  if (!success) {
153
153
  gpr_slice_buffer_reset_and_unref(ep->read_buffer);
@@ -158,7 +158,7 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *user_data, int success) {
158
158
  /* TODO(yangg) check error, maybe bail out early */
159
159
  for (i = 0; i < ep->source_buffer.count; i++) {
160
160
  gpr_slice encrypted = ep->source_buffer.slices[i];
161
- gpr_uint8 *message_bytes = GPR_SLICE_START_PTR(encrypted);
161
+ uint8_t *message_bytes = GPR_SLICE_START_PTR(encrypted);
162
162
  size_t message_size = GPR_SLICE_LENGTH(encrypted);
163
163
 
164
164
  while (message_size > 0 || keep_looping) {
@@ -234,8 +234,8 @@ static void endpoint_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep,
234
234
  &ep->on_read);
235
235
  }
236
236
 
237
- static void flush_write_staging_buffer(secure_endpoint *ep, gpr_uint8 **cur,
238
- gpr_uint8 **end) {
237
+ static void flush_write_staging_buffer(secure_endpoint *ep, uint8_t **cur,
238
+ uint8_t **end) {
239
239
  gpr_slice_buffer_add(&ep->output_buffer, ep->write_staging_buffer);
240
240
  ep->write_staging_buffer = gpr_slice_malloc(STAGING_BUFFER_SIZE);
241
241
  *cur = GPR_SLICE_START_PTR(ep->write_staging_buffer);
@@ -247,8 +247,8 @@ static void endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep,
247
247
  unsigned i;
248
248
  tsi_result result = TSI_OK;
249
249
  secure_endpoint *ep = (secure_endpoint *)secure_ep;
250
- gpr_uint8 *cur = GPR_SLICE_START_PTR(ep->write_staging_buffer);
251
- gpr_uint8 *end = GPR_SLICE_END_PTR(ep->write_staging_buffer);
250
+ uint8_t *cur = GPR_SLICE_START_PTR(ep->write_staging_buffer);
251
+ uint8_t *end = GPR_SLICE_END_PTR(ep->write_staging_buffer);
252
252
 
253
253
  gpr_slice_buffer_reset_and_unref(&ep->output_buffer);
254
254
 
@@ -263,7 +263,7 @@ static void endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep,
263
263
 
264
264
  for (i = 0; i < slices->count; i++) {
265
265
  gpr_slice plain = slices->slices[i];
266
- gpr_uint8 *message_bytes = GPR_SLICE_START_PTR(plain);
266
+ uint8_t *message_bytes = GPR_SLICE_START_PTR(plain);
267
267
  size_t message_size = GPR_SLICE_LENGTH(plain);
268
268
  while (message_size > 0) {
269
269
  size_t protected_buffer_size_to_send = (size_t)(end - cur);
@@ -315,7 +315,7 @@ static void endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep,
315
315
  if (result != TSI_OK) {
316
316
  /* TODO(yangg) do different things according to the error type? */
317
317
  gpr_slice_buffer_reset_and_unref(&ep->output_buffer);
318
- grpc_exec_ctx_enqueue(exec_ctx, cb, 0);
318
+ grpc_exec_ctx_enqueue(exec_ctx, cb, false, NULL);
319
319
  return;
320
320
  }
321
321
 
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *
3
- * Copyright 2015, Google Inc.
3
+ * Copyright 2015-2016, Google Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -33,22 +33,23 @@
33
33
 
34
34
  #include "src/core/security/security_connector.h"
35
35
 
36
+ #include <stdbool.h>
36
37
  #include <string.h>
37
38
 
39
+ #include <grpc/support/alloc.h>
40
+ #include <grpc/support/host_port.h>
41
+ #include <grpc/support/log.h>
42
+ #include <grpc/support/slice_buffer.h>
43
+ #include <grpc/support/string_util.h>
44
+
38
45
  #include "src/core/security/credentials.h"
39
46
  #include "src/core/security/handshake.h"
40
47
  #include "src/core/security/secure_endpoint.h"
41
48
  #include "src/core/security/security_context.h"
42
49
  #include "src/core/support/env.h"
43
- #include "src/core/support/file.h"
50
+ #include "src/core/support/load_file.h"
44
51
  #include "src/core/support/string.h"
45
52
  #include "src/core/transport/chttp2/alpn.h"
46
-
47
- #include <grpc/support/alloc.h>
48
- #include <grpc/support/host_port.h>
49
- #include <grpc/support/log.h>
50
- #include <grpc/support/slice_buffer.h>
51
- #include <grpc/support/string_util.h>
52
53
  #include "src/core/tsi/fake_transport_security.h"
53
54
  #include "src/core/tsi/ssl_transport_security.h"
54
55
 
@@ -61,6 +62,14 @@ static const char *installed_roots_path =
61
62
  INSTALL_PREFIX "/share/grpc/roots.pem";
62
63
  #endif
63
64
 
65
+ /* -- Overridden default roots. -- */
66
+
67
+ static grpc_ssl_roots_override_callback ssl_roots_override_cb = NULL;
68
+
69
+ void grpc_set_ssl_roots_override_callback(grpc_ssl_roots_override_callback cb) {
70
+ ssl_roots_override_cb = cb;
71
+ }
72
+
64
73
  /* -- Cipher suites. -- */
65
74
 
66
75
  /* Defines the cipher suites that we accept by default. All these cipher suites
@@ -102,31 +111,39 @@ const tsi_peer_property *tsi_peer_get_property_by_name(const tsi_peer *peer,
102
111
  return NULL;
103
112
  }
104
113
 
105
- void grpc_security_connector_shutdown(grpc_exec_ctx *exec_ctx,
106
- grpc_security_connector *connector) {
114
+ void grpc_server_security_connector_shutdown(
115
+ grpc_exec_ctx *exec_ctx, grpc_server_security_connector *connector) {
107
116
  grpc_security_connector_handshake_list *tmp;
108
- if (!connector->is_client_side) {
109
- gpr_mu_lock(&connector->mu);
110
- while (connector->handshaking_handshakes) {
111
- tmp = connector->handshaking_handshakes;
112
- grpc_security_handshake_shutdown(
113
- exec_ctx, connector->handshaking_handshakes->handshake);
114
- connector->handshaking_handshakes = tmp->next;
115
- gpr_free(tmp);
116
- }
117
- gpr_mu_unlock(&connector->mu);
117
+ gpr_mu_lock(&connector->mu);
118
+ while (connector->handshaking_handshakes) {
119
+ tmp = connector->handshaking_handshakes;
120
+ grpc_security_handshake_shutdown(
121
+ exec_ctx, connector->handshaking_handshakes->handshake);
122
+ connector->handshaking_handshakes = tmp->next;
123
+ gpr_free(tmp);
124
+ }
125
+ gpr_mu_unlock(&connector->mu);
126
+ }
127
+
128
+ void grpc_channel_security_connector_do_handshake(
129
+ grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *sc,
130
+ grpc_endpoint *nonsecure_endpoint, grpc_security_handshake_done_cb cb,
131
+ void *user_data) {
132
+ if (sc == NULL || nonsecure_endpoint == NULL) {
133
+ cb(exec_ctx, user_data, GRPC_SECURITY_ERROR, NULL, NULL);
134
+ } else {
135
+ sc->do_handshake(exec_ctx, sc, nonsecure_endpoint, cb, user_data);
118
136
  }
119
137
  }
120
138
 
121
- void grpc_security_connector_do_handshake(grpc_exec_ctx *exec_ctx,
122
- grpc_security_connector *sc,
123
- grpc_endpoint *nonsecure_endpoint,
124
- grpc_security_handshake_done_cb cb,
125
- void *user_data) {
139
+ void grpc_server_security_connector_do_handshake(
140
+ grpc_exec_ctx *exec_ctx, grpc_server_security_connector *sc,
141
+ grpc_tcp_server_acceptor *acceptor, grpc_endpoint *nonsecure_endpoint,
142
+ grpc_security_handshake_done_cb cb, void *user_data) {
126
143
  if (sc == NULL || nonsecure_endpoint == NULL) {
127
144
  cb(exec_ctx, user_data, GRPC_SECURITY_ERROR, NULL, NULL);
128
145
  } else {
129
- sc->vtable->do_handshake(exec_ctx, sc, nonsecure_endpoint, cb, user_data);
146
+ sc->do_handshake(exec_ctx, sc, acceptor, nonsecure_endpoint, cb, user_data);
130
147
  }
131
148
  }
132
149
 
@@ -194,12 +211,17 @@ static void *connector_pointer_arg_copy(void *p) {
194
211
  return GRPC_SECURITY_CONNECTOR_REF(p, "connector_pointer_arg");
195
212
  }
196
213
 
214
+ static int connector_pointer_cmp(void *a, void *b) { return GPR_ICMP(a, b); }
215
+
216
+ static const grpc_arg_pointer_vtable connector_pointer_vtable = {
217
+ connector_pointer_arg_copy, connector_pointer_arg_destroy,
218
+ connector_pointer_cmp};
219
+
197
220
  grpc_arg grpc_security_connector_to_arg(grpc_security_connector *sc) {
198
221
  grpc_arg result;
199
222
  result.type = GRPC_ARG_POINTER;
200
223
  result.key = GRPC_SECURITY_CONNECTOR_ARG;
201
- result.value.pointer.destroy = connector_pointer_arg_destroy;
202
- result.value.pointer.copy = connector_pointer_arg_copy;
224
+ result.value.pointer.vtable = &connector_pointer_vtable;
203
225
  result.value.pointer.p = sc;
204
226
  return result;
205
227
  }
@@ -235,7 +257,8 @@ static void fake_channel_destroy(grpc_security_connector *sc) {
235
257
  }
236
258
 
237
259
  static void fake_server_destroy(grpc_security_connector *sc) {
238
- gpr_mu_destroy(&sc->mu);
260
+ grpc_server_security_connector *c = (grpc_server_security_connector *)sc;
261
+ gpr_mu_destroy(&c->mu);
239
262
  gpr_free(sc);
240
263
  }
241
264
 
@@ -285,50 +308,52 @@ static void fake_channel_check_call_host(grpc_exec_ctx *exec_ctx,
285
308
  }
286
309
 
287
310
  static void fake_channel_do_handshake(grpc_exec_ctx *exec_ctx,
288
- grpc_security_connector *sc,
311
+ grpc_channel_security_connector *sc,
289
312
  grpc_endpoint *nonsecure_endpoint,
290
313
  grpc_security_handshake_done_cb cb,
291
314
  void *user_data) {
292
- grpc_do_security_handshake(exec_ctx, tsi_create_fake_handshaker(1), sc,
293
- nonsecure_endpoint, cb, user_data);
315
+ grpc_do_security_handshake(exec_ctx, tsi_create_fake_handshaker(1), &sc->base,
316
+ true, nonsecure_endpoint, cb, user_data);
294
317
  }
295
318
 
296
319
  static void fake_server_do_handshake(grpc_exec_ctx *exec_ctx,
297
- grpc_security_connector *sc,
320
+ grpc_server_security_connector *sc,
321
+ grpc_tcp_server_acceptor *acceptor,
298
322
  grpc_endpoint *nonsecure_endpoint,
299
323
  grpc_security_handshake_done_cb cb,
300
324
  void *user_data) {
301
- grpc_do_security_handshake(exec_ctx, tsi_create_fake_handshaker(0), sc,
302
- nonsecure_endpoint, cb, user_data);
325
+ grpc_do_security_handshake(exec_ctx, tsi_create_fake_handshaker(0), &sc->base,
326
+ false, nonsecure_endpoint, cb, user_data);
303
327
  }
304
328
 
305
329
  static grpc_security_connector_vtable fake_channel_vtable = {
306
- fake_channel_destroy, fake_channel_do_handshake, fake_check_peer};
330
+ fake_channel_destroy, fake_check_peer};
307
331
 
308
- static grpc_security_connector_vtable fake_server_vtable = {
309
- fake_server_destroy, fake_server_do_handshake, fake_check_peer};
332
+ static grpc_security_connector_vtable fake_server_vtable = {fake_server_destroy,
333
+ fake_check_peer};
310
334
 
311
335
  grpc_channel_security_connector *grpc_fake_channel_security_connector_create(
312
336
  grpc_call_credentials *request_metadata_creds) {
313
337
  grpc_channel_security_connector *c = gpr_malloc(sizeof(*c));
314
338
  memset(c, 0, sizeof(*c));
315
339
  gpr_ref_init(&c->base.refcount, 1);
316
- c->base.is_client_side = 1;
317
340
  c->base.url_scheme = GRPC_FAKE_SECURITY_URL_SCHEME;
318
341
  c->base.vtable = &fake_channel_vtable;
319
- c->request_metadata_creds =
320
- grpc_call_credentials_ref(request_metadata_creds);
342
+ c->request_metadata_creds = grpc_call_credentials_ref(request_metadata_creds);
321
343
  c->check_call_host = fake_channel_check_call_host;
344
+ c->do_handshake = fake_channel_do_handshake;
322
345
  return c;
323
346
  }
324
347
 
325
- grpc_security_connector *grpc_fake_server_security_connector_create(void) {
326
- grpc_security_connector *c = gpr_malloc(sizeof(grpc_security_connector));
327
- memset(c, 0, sizeof(grpc_security_connector));
328
- gpr_ref_init(&c->refcount, 1);
329
- c->is_client_side = 0;
330
- c->vtable = &fake_server_vtable;
331
- c->url_scheme = GRPC_FAKE_SECURITY_URL_SCHEME;
348
+ grpc_server_security_connector *grpc_fake_server_security_connector_create(
349
+ void) {
350
+ grpc_server_security_connector *c =
351
+ gpr_malloc(sizeof(grpc_server_security_connector));
352
+ memset(c, 0, sizeof(*c));
353
+ gpr_ref_init(&c->base.refcount, 1);
354
+ c->base.vtable = &fake_server_vtable;
355
+ c->base.url_scheme = GRPC_FAKE_SECURITY_URL_SCHEME;
356
+ c->do_handshake = fake_server_do_handshake;
332
357
  gpr_mu_init(&c->mu);
333
358
  return c;
334
359
  }
@@ -343,7 +368,7 @@ typedef struct {
343
368
  } grpc_ssl_channel_security_connector;
344
369
 
345
370
  typedef struct {
346
- grpc_security_connector base;
371
+ grpc_server_security_connector base;
347
372
  tsi_ssl_handshaker_factory *handshaker_factory;
348
373
  } grpc_ssl_server_security_connector;
349
374
 
@@ -366,12 +391,12 @@ static void ssl_server_destroy(grpc_security_connector *sc) {
366
391
  if (c->handshaker_factory != NULL) {
367
392
  tsi_ssl_handshaker_factory_destroy(c->handshaker_factory);
368
393
  }
369
- gpr_mu_destroy(&sc->mu);
394
+ gpr_mu_destroy(&c->base.mu);
370
395
  gpr_free(sc);
371
396
  }
372
397
 
373
398
  static grpc_security_status ssl_create_handshaker(
374
- tsi_ssl_handshaker_factory *handshaker_factory, int is_client,
399
+ tsi_ssl_handshaker_factory *handshaker_factory, bool is_client,
375
400
  const char *peer_name, tsi_handshaker **handshaker) {
376
401
  tsi_result result = TSI_OK;
377
402
  if (handshaker_factory == NULL) return GRPC_SECURITY_ERROR;
@@ -386,7 +411,7 @@ static grpc_security_status ssl_create_handshaker(
386
411
  }
387
412
 
388
413
  static void ssl_channel_do_handshake(grpc_exec_ctx *exec_ctx,
389
- grpc_security_connector *sc,
414
+ grpc_channel_security_connector *sc,
390
415
  grpc_endpoint *nonsecure_endpoint,
391
416
  grpc_security_handshake_done_cb cb,
392
417
  void *user_data) {
@@ -394,20 +419,21 @@ static void ssl_channel_do_handshake(grpc_exec_ctx *exec_ctx,
394
419
  (grpc_ssl_channel_security_connector *)sc;
395
420
  tsi_handshaker *handshaker;
396
421
  grpc_security_status status = ssl_create_handshaker(
397
- c->handshaker_factory, 1,
422
+ c->handshaker_factory, true,
398
423
  c->overridden_target_name != NULL ? c->overridden_target_name
399
424
  : c->target_name,
400
425
  &handshaker);
401
426
  if (status != GRPC_SECURITY_OK) {
402
427
  cb(exec_ctx, user_data, status, NULL, NULL);
403
428
  } else {
404
- grpc_do_security_handshake(exec_ctx, handshaker, sc, nonsecure_endpoint, cb,
405
- user_data);
429
+ grpc_do_security_handshake(exec_ctx, handshaker, &sc->base, true,
430
+ nonsecure_endpoint, cb, user_data);
406
431
  }
407
432
  }
408
433
 
409
434
  static void ssl_server_do_handshake(grpc_exec_ctx *exec_ctx,
410
- grpc_security_connector *sc,
435
+ grpc_server_security_connector *sc,
436
+ grpc_tcp_server_acceptor *acceptor,
411
437
  grpc_endpoint *nonsecure_endpoint,
412
438
  grpc_security_handshake_done_cb cb,
413
439
  void *user_data) {
@@ -415,12 +441,12 @@ static void ssl_server_do_handshake(grpc_exec_ctx *exec_ctx,
415
441
  (grpc_ssl_server_security_connector *)sc;
416
442
  tsi_handshaker *handshaker;
417
443
  grpc_security_status status =
418
- ssl_create_handshaker(c->handshaker_factory, 0, NULL, &handshaker);
444
+ ssl_create_handshaker(c->handshaker_factory, false, NULL, &handshaker);
419
445
  if (status != GRPC_SECURITY_OK) {
420
446
  cb(exec_ctx, user_data, status, NULL, NULL);
421
447
  } else {
422
- grpc_do_security_handshake(exec_ctx, handshaker, sc, nonsecure_endpoint, cb,
423
- user_data);
448
+ grpc_do_security_handshake(exec_ctx, handshaker, &sc->base, false,
449
+ nonsecure_endpoint, cb, user_data);
424
450
  }
425
451
  }
426
452
 
@@ -500,9 +526,10 @@ static grpc_security_status ssl_check_peer(grpc_security_connector *sc,
500
526
  return GRPC_SECURITY_OK;
501
527
  }
502
528
 
503
- static void ssl_channel_check_peer(
504
- grpc_exec_ctx *exec_ctx, grpc_security_connector *sc, tsi_peer peer,
505
- grpc_security_peer_check_cb cb, void *user_data) {
529
+ static void ssl_channel_check_peer(grpc_exec_ctx *exec_ctx,
530
+ grpc_security_connector *sc, tsi_peer peer,
531
+ grpc_security_peer_check_cb cb,
532
+ void *user_data) {
506
533
  grpc_ssl_channel_security_connector *c =
507
534
  (grpc_ssl_channel_security_connector *)sc;
508
535
  grpc_security_status status;
@@ -516,9 +543,10 @@ static void ssl_channel_check_peer(
516
543
  tsi_peer_destruct(&peer);
517
544
  }
518
545
 
519
- static void ssl_server_check_peer(
520
- grpc_exec_ctx *exec_ctx, grpc_security_connector *sc, tsi_peer peer,
521
- grpc_security_peer_check_cb cb, void *user_data) {
546
+ static void ssl_server_check_peer(grpc_exec_ctx *exec_ctx,
547
+ grpc_security_connector *sc, tsi_peer peer,
548
+ grpc_security_peer_check_cb cb,
549
+ void *user_data) {
522
550
  grpc_auth_context *auth_context = NULL;
523
551
  grpc_security_status status = ssl_check_peer(sc, NULL, &peer, &auth_context);
524
552
  tsi_peer_destruct(&peer);
@@ -589,28 +617,49 @@ static void ssl_channel_check_call_host(grpc_exec_ctx *exec_ctx,
589
617
  }
590
618
 
591
619
  static grpc_security_connector_vtable ssl_channel_vtable = {
592
- ssl_channel_destroy, ssl_channel_do_handshake, ssl_channel_check_peer};
620
+ ssl_channel_destroy, ssl_channel_check_peer};
593
621
 
594
622
  static grpc_security_connector_vtable ssl_server_vtable = {
595
- ssl_server_destroy, ssl_server_do_handshake, ssl_server_check_peer};
623
+ ssl_server_destroy, ssl_server_check_peer};
596
624
 
597
- static gpr_slice default_pem_root_certs;
625
+ static gpr_slice compute_default_pem_root_certs_once(void) {
626
+ gpr_slice result = gpr_empty_slice();
598
627
 
599
- static void init_default_pem_root_certs(void) {
600
628
  /* First try to load the roots from the environment. */
601
629
  char *default_root_certs_path =
602
630
  gpr_getenv(GRPC_DEFAULT_SSL_ROOTS_FILE_PATH_ENV_VAR);
603
- if (default_root_certs_path == NULL) {
604
- default_pem_root_certs = gpr_empty_slice();
605
- } else {
606
- default_pem_root_certs = gpr_load_file(default_root_certs_path, 0, NULL);
631
+ if (default_root_certs_path != NULL) {
632
+ result = gpr_load_file(default_root_certs_path, 0, NULL);
607
633
  gpr_free(default_root_certs_path);
608
634
  }
609
635
 
636
+ /* Try overridden roots if needed. */
637
+ grpc_ssl_roots_override_result ovrd_res = GRPC_SSL_ROOTS_OVERRIDE_FAIL;
638
+ if (GPR_SLICE_IS_EMPTY(result) && ssl_roots_override_cb != NULL) {
639
+ char *pem_root_certs = NULL;
640
+ ovrd_res = ssl_roots_override_cb(&pem_root_certs);
641
+ if (ovrd_res == GRPC_SSL_ROOTS_OVERRIDE_OK) {
642
+ GPR_ASSERT(pem_root_certs != NULL);
643
+ result = gpr_slice_new(pem_root_certs, strlen(pem_root_certs), gpr_free);
644
+ }
645
+ }
646
+
610
647
  /* Fall back to installed certs if needed. */
611
- if (GPR_SLICE_IS_EMPTY(default_pem_root_certs)) {
612
- default_pem_root_certs = gpr_load_file(installed_roots_path, 0, NULL);
648
+ if (GPR_SLICE_IS_EMPTY(result) &&
649
+ ovrd_res != GRPC_SSL_ROOTS_OVERRIDE_FAIL_PERMANENTLY) {
650
+ result = gpr_load_file(installed_roots_path, 0, NULL);
613
651
  }
652
+ return result;
653
+ }
654
+
655
+ static gpr_slice default_pem_root_certs;
656
+
657
+ static void init_default_pem_root_certs(void) {
658
+ default_pem_root_certs = compute_default_pem_root_certs_once();
659
+ }
660
+
661
+ gpr_slice grpc_get_default_ssl_roots_for_testing(void) {
662
+ return compute_default_pem_root_certs_once();
614
663
  }
615
664
 
616
665
  size_t grpc_get_default_ssl_roots(const unsigned char **pem_root_certs) {
@@ -665,11 +714,11 @@ grpc_security_status grpc_ssl_channel_security_connector_create(
665
714
 
666
715
  gpr_ref_init(&c->base.base.refcount, 1);
667
716
  c->base.base.vtable = &ssl_channel_vtable;
668
- c->base.base.is_client_side = 1;
669
717
  c->base.base.url_scheme = GRPC_SSL_URL_SCHEME;
670
718
  c->base.request_metadata_creds =
671
719
  grpc_call_credentials_ref(request_metadata_creds);
672
720
  c->base.check_call_host = ssl_channel_check_call_host;
721
+ c->base.do_handshake = ssl_channel_do_handshake;
673
722
  gpr_split_host_port(target_name, &c->target_name, &port);
674
723
  gpr_free(port);
675
724
  if (overridden_target_name != NULL) {
@@ -700,7 +749,7 @@ error:
700
749
  }
701
750
 
702
751
  grpc_security_status grpc_ssl_server_security_connector_create(
703
- const grpc_ssl_server_config *config, grpc_security_connector **sc) {
752
+ const grpc_ssl_server_config *config, grpc_server_security_connector **sc) {
704
753
  size_t num_alpn_protocols = grpc_chttp2_num_alpn_versions();
705
754
  const unsigned char **alpn_protocol_strings =
706
755
  gpr_malloc(sizeof(const char *) * num_alpn_protocols);
@@ -724,9 +773,9 @@ grpc_security_status grpc_ssl_server_security_connector_create(
724
773
  c = gpr_malloc(sizeof(grpc_ssl_server_security_connector));
725
774
  memset(c, 0, sizeof(grpc_ssl_server_security_connector));
726
775
 
727
- gpr_ref_init(&c->base.refcount, 1);
728
- c->base.url_scheme = GRPC_SSL_URL_SCHEME;
729
- c->base.vtable = &ssl_server_vtable;
776
+ gpr_ref_init(&c->base.base.refcount, 1);
777
+ c->base.base.url_scheme = GRPC_SSL_URL_SCHEME;
778
+ c->base.base.vtable = &ssl_server_vtable;
730
779
  result = tsi_create_ssl_server_handshaker_factory(
731
780
  (const unsigned char **)config->pem_private_keys,
732
781
  config->pem_private_keys_sizes,
@@ -739,11 +788,12 @@ grpc_security_status grpc_ssl_server_security_connector_create(
739
788
  if (result != TSI_OK) {
740
789
  gpr_log(GPR_ERROR, "Handshaker factory creation failed with %s.",
741
790
  tsi_result_to_string(result));
742
- ssl_server_destroy(&c->base);
791
+ ssl_server_destroy(&c->base.base);
743
792
  *sc = NULL;
744
793
  goto error;
745
794
  }
746
795
  gpr_mu_init(&c->base.mu);
796
+ c->base.do_handshake = ssl_server_do_handshake;
747
797
  *sc = &c->base;
748
798
  gpr_free((void *)alpn_protocol_strings);
749
799
  gpr_free(alpn_protocol_string_lengths);