grpc 1.9.1 → 1.10.0.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 (637) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +2654 -953
  3. data/etc/roots.pem +282 -683
  4. data/include/grpc/compression.h +9 -26
  5. data/include/grpc/grpc.h +10 -24
  6. data/include/grpc/grpc_security.h +7 -1
  7. data/include/grpc/impl/codegen/compression_types.h +5 -62
  8. data/include/grpc/impl/codegen/grpc_types.h +10 -6
  9. data/include/grpc/module.modulemap +1 -10
  10. data/include/grpc/support/alloc.h +3 -2
  11. data/include/grpc/support/log.h +1 -2
  12. data/{src/core/lib/gpr/thd_internal.h → include/grpc/support/thd_id.h} +23 -9
  13. data/src/boringssl/err_data.c +550 -496
  14. data/src/core/ext/census/grpc_context.cc +2 -1
  15. data/src/core/ext/filters/client_channel/backup_poller.cc +5 -4
  16. data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -7
  17. data/src/core/ext/filters/client_channel/client_channel.cc +162 -172
  18. data/src/core/ext/filters/client_channel/client_channel_factory.cc +4 -2
  19. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +10 -10
  20. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +18 -14
  21. data/src/core/ext/filters/client_channel/http_proxy.cc +3 -1
  22. data/src/core/ext/filters/client_channel/lb_policy.cc +21 -105
  23. data/src/core/ext/filters/client_channel/lb_policy.h +166 -170
  24. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +41 -36
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1452 -1459
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -2
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +7 -8
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -27
  30. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +279 -304
  31. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +358 -330
  32. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +30 -41
  33. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +7 -14
  34. data/src/core/ext/filters/client_channel/lb_policy_factory.cc +8 -21
  35. data/src/core/ext/filters/client_channel/lb_policy_factory.h +23 -27
  36. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +58 -33
  37. data/src/core/ext/filters/client_channel/lb_policy_registry.h +25 -12
  38. data/src/core/ext/filters/client_channel/parse_address.cc +10 -8
  39. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -2
  40. data/src/core/ext/filters/client_channel/resolver.cc +6 -52
  41. data/src/core/ext/filters/client_channel/resolver.h +98 -55
  42. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +266 -237
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +31 -27
  45. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +244 -207
  46. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +161 -148
  47. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +47 -31
  48. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +126 -126
  49. data/src/core/ext/filters/client_channel/resolver_factory.h +33 -32
  50. data/src/core/ext/filters/client_channel/resolver_registry.cc +110 -90
  51. data/src/core/ext/filters/client_channel/resolver_registry.h +49 -36
  52. data/src/core/ext/filters/client_channel/retry_throttle.cc +29 -22
  53. data/src/core/ext/filters/client_channel/subchannel.cc +173 -173
  54. data/src/core/ext/filters/client_channel/subchannel.h +38 -45
  55. data/src/core/ext/filters/client_channel/subchannel_index.cc +44 -40
  56. data/src/core/ext/filters/client_channel/uri_parser.cc +3 -3
  57. data/src/core/ext/filters/deadline/deadline_filter.cc +27 -18
  58. data/src/core/ext/filters/http/client/http_client_filter.cc +26 -23
  59. data/src/core/ext/filters/http/http_filters_plugin.cc +3 -2
  60. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +78 -110
  61. data/src/core/ext/filters/http/server/http_server_filter.cc +29 -26
  62. data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +9 -11
  63. data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +2 -1
  64. data/src/core/ext/filters/max_age/max_age_filter.cc +14 -14
  65. data/src/core/ext/filters/message_size/message_size_filter.cc +20 -18
  66. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -4
  67. data/src/core/ext/filters/workarounds/workaround_utils.cc +4 -4
  68. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  69. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -10
  70. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +4 -4
  71. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +11 -12
  72. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +16 -13
  73. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +36 -9
  74. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -0
  75. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +17 -14
  76. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -145
  77. data/src/core/ext/transport/chttp2/transport/flow_control.cc +16 -14
  78. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -7
  79. data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -33
  80. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +27 -25
  81. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -12
  82. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +16 -15
  83. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
  84. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +11 -11
  85. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +23 -22
  86. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +35 -35
  87. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +10 -7
  88. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -2
  89. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  90. data/src/core/ext/transport/chttp2/transport/internal.h +1 -1
  91. data/src/core/ext/transport/chttp2/transport/parsing.cc +35 -39
  92. data/src/core/ext/transport/chttp2/transport/stream_map.cc +8 -7
  93. data/src/core/ext/transport/chttp2/transport/varint.cc +5 -5
  94. data/src/core/ext/transport/chttp2/transport/writing.cc +18 -18
  95. data/src/core/ext/transport/inproc/inproc_transport.cc +43 -23
  96. data/src/core/lib/{gpr → avl}/avl.cc +61 -57
  97. data/{include/grpc/support → src/core/lib/avl}/avl.h +25 -35
  98. data/src/core/lib/backoff/backoff.cc +6 -5
  99. data/src/core/lib/channel/channel_args.cc +23 -109
  100. data/src/core/lib/channel/channel_args.h +5 -31
  101. data/src/core/lib/channel/channel_stack.cc +11 -8
  102. data/src/core/lib/channel/channel_stack_builder.cc +10 -7
  103. data/src/core/lib/channel/connected_channel.cc +18 -17
  104. data/src/core/lib/channel/handshaker.cc +8 -8
  105. data/src/core/lib/channel/handshaker_registry.cc +3 -2
  106. data/src/core/lib/compression/algorithm_metadata.h +13 -6
  107. data/src/core/lib/compression/compression.cc +72 -183
  108. data/src/core/lib/compression/compression_internal.cc +274 -0
  109. data/src/core/lib/compression/compression_internal.h +86 -0
  110. data/src/core/lib/compression/message_compress.cc +15 -15
  111. data/src/core/lib/compression/message_compress.h +4 -3
  112. data/src/core/lib/compression/stream_compression_gzip.cc +8 -8
  113. data/src/core/lib/compression/stream_compression_identity.cc +1 -1
  114. data/src/core/lib/debug/stats.cc +10 -8
  115. data/src/core/lib/debug/stats_data.cc +2 -1
  116. data/src/core/lib/debug/trace.cc +3 -3
  117. data/src/core/lib/gpr/alloc.cc +7 -11
  118. data/src/core/lib/gpr/arena.cc +34 -12
  119. data/src/core/lib/gpr/atm.cc +2 -1
  120. data/src/core/lib/gpr/cpu_linux.cc +3 -3
  121. data/src/core/lib/gpr/cpu_posix.cc +2 -1
  122. data/src/core/lib/gpr/env.h +1 -1
  123. data/src/core/lib/gpr/env_linux.cc +1 -1
  124. data/src/core/lib/gpr/env_windows.cc +4 -4
  125. data/src/core/lib/gpr/fork.cc +16 -2
  126. data/src/core/lib/gpr/host_port.cc +5 -4
  127. data/{include/grpc/support → src/core/lib/gpr}/host_port.h +5 -13
  128. data/src/core/lib/gpr/log.cc +5 -4
  129. data/src/core/lib/gpr/log_linux.cc +1 -1
  130. data/src/core/lib/gpr/mpscq.cc +1 -0
  131. data/src/core/lib/gpr/murmur_hash.cc +4 -4
  132. data/src/core/lib/gpr/string.cc +19 -16
  133. data/src/core/lib/gpr/string_posix.cc +3 -3
  134. data/src/core/lib/gpr/sync_posix.cc +5 -9
  135. data/src/core/lib/gpr/thd.cc +3 -3
  136. data/{include/grpc/support → src/core/lib/gpr}/thd.h +20 -28
  137. data/src/core/lib/gpr/thd_posix.cc +6 -4
  138. data/src/core/lib/gpr/thd_windows.cc +3 -1
  139. data/src/core/lib/gpr/time.cc +6 -4
  140. data/src/core/lib/gpr/time_posix.cc +2 -2
  141. data/{include/grpc/support → src/core/lib/gpr}/tls.h +6 -6
  142. data/{include/grpc/support → src/core/lib/gpr}/tls_gcc.h +3 -3
  143. data/{include/grpc/support → src/core/lib/gpr}/tls_msvc.h +3 -3
  144. data/src/core/lib/gpr/tls_pthread.cc +1 -1
  145. data/{include/grpc/support → src/core/lib/gpr}/tls_pthread.h +3 -3
  146. data/{include/grpc/support → src/core/lib/gpr}/useful.h +3 -3
  147. data/src/core/lib/{gpr++ → gprpp}/abstract.h +3 -3
  148. data/src/core/lib/{gpr++ → gprpp}/atomic.h +5 -5
  149. data/src/core/lib/{gpr++ → gprpp}/atomic_with_atm.h +3 -3
  150. data/src/core/lib/{gpr++ → gprpp}/atomic_with_std.h +3 -3
  151. data/src/core/lib/{gpr++ → gprpp}/debug_location.h +3 -3
  152. data/src/core/lib/{gpr++ → gprpp}/inlined_vector.h +44 -22
  153. data/src/core/lib/{gpr++ → gprpp}/manual_constructor.h +2 -2
  154. data/src/core/lib/{gpr++ → gprpp}/memory.h +14 -5
  155. data/src/core/lib/{gpr++ → gprpp}/orphanable.h +39 -14
  156. data/src/core/lib/{gpr++ → gprpp}/ref_counted.h +42 -10
  157. data/src/core/lib/{gpr++ → gprpp}/ref_counted_ptr.h +18 -8
  158. data/src/core/lib/http/format_request.cc +3 -3
  159. data/src/core/lib/http/httpcli.cc +6 -7
  160. data/src/core/lib/http/httpcli_security_connector.cc +10 -10
  161. data/src/core/lib/http/parser.cc +16 -12
  162. data/src/core/lib/iomgr/call_combiner.cc +12 -13
  163. data/src/core/lib/iomgr/closure.h +4 -6
  164. data/src/core/lib/iomgr/combiner.cc +10 -21
  165. data/src/core/lib/iomgr/error.cc +50 -55
  166. data/src/core/lib/iomgr/ev_epoll1_linux.cc +41 -52
  167. data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -28
  168. data/src/core/lib/iomgr/ev_epollsig_linux.cc +23 -30
  169. data/src/core/lib/iomgr/ev_poll_posix.cc +52 -46
  170. data/src/core/lib/iomgr/ev_posix.cc +47 -6
  171. data/src/core/lib/iomgr/exec_ctx.cc +10 -10
  172. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  173. data/src/core/lib/iomgr/executor.cc +16 -13
  174. data/src/core/lib/iomgr/fork_posix.cc +1 -3
  175. data/src/core/lib/iomgr/gethostname_host_name_max.cc +1 -1
  176. data/src/core/lib/iomgr/iocp_windows.cc +1 -2
  177. data/src/core/lib/iomgr/iomgr.cc +2 -2
  178. data/src/core/lib/iomgr/iomgr_uv.cc +2 -0
  179. data/src/core/lib/iomgr/iomgr_uv.h +1 -1
  180. data/src/core/lib/iomgr/is_epollexclusive_available.cc +5 -4
  181. data/src/core/lib/iomgr/load_file.cc +3 -3
  182. data/src/core/lib/iomgr/pollset_windows.cc +1 -1
  183. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -9
  184. data/src/core/lib/iomgr/resolve_address_uv.cc +2 -2
  185. data/src/core/lib/iomgr/resolve_address_windows.cc +3 -2
  186. data/src/core/lib/iomgr/resource_quota.cc +36 -34
  187. data/src/core/lib/iomgr/sockaddr_utils.cc +39 -23
  188. data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
  189. data/src/core/lib/iomgr/socket_mutator.cc +7 -7
  190. data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -4
  191. data/src/core/lib/iomgr/socket_utils_linux.cc +3 -2
  192. data/src/core/lib/iomgr/tcp_client_posix.cc +7 -6
  193. data/src/core/lib/iomgr/tcp_client_windows.cc +0 -1
  194. data/src/core/lib/iomgr/tcp_posix.cc +47 -55
  195. data/src/core/lib/iomgr/tcp_server_posix.cc +12 -10
  196. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -5
  197. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -3
  198. data/src/core/lib/iomgr/tcp_windows.cc +1 -1
  199. data/src/core/lib/iomgr/timer_generic.cc +16 -14
  200. data/src/core/lib/iomgr/timer_heap.cc +8 -7
  201. data/src/core/lib/iomgr/timer_manager.cc +4 -3
  202. data/src/core/lib/iomgr/udp_server.cc +24 -16
  203. data/src/core/lib/iomgr/unix_sockets_posix.cc +15 -10
  204. data/src/core/lib/iomgr/wakeup_fd_cv.cc +6 -5
  205. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +1 -2
  206. data/src/core/lib/json/json.cc +1 -1
  207. data/src/core/lib/json/json_reader.cc +8 -6
  208. data/src/core/lib/json/json_string.cc +19 -18
  209. data/src/core/lib/json/json_writer.cc +10 -8
  210. data/src/core/lib/profiling/basic_timers.cc +1 -1
  211. data/src/core/lib/profiling/timers.h +3 -20
  212. data/src/core/lib/security/context/security_context.cc +16 -14
  213. data/src/core/lib/security/credentials/composite/composite_credentials.cc +17 -14
  214. data/src/core/lib/security/credentials/credentials.cc +9 -8
  215. data/src/core/lib/security/credentials/credentials.h +1 -1
  216. data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
  217. data/src/core/lib/security/credentials/fake/fake_credentials.cc +12 -13
  218. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -4
  219. data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -3
  220. data/src/core/lib/security/credentials/jwt/json_token.cc +4 -3
  221. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -7
  222. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +21 -18
  223. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +23 -18
  224. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +11 -7
  225. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +22 -21
  226. data/src/core/lib/security/{transport → security_connector}/security_connector.cc +46 -43
  227. data/src/core/lib/security/{transport → security_connector}/security_connector.h +3 -3
  228. data/src/core/lib/security/transport/client_auth_filter.cc +32 -34
  229. data/src/core/lib/security/transport/lb_targets_info.cc +7 -5
  230. data/src/core/lib/security/transport/secure_endpoint.cc +21 -21
  231. data/src/core/lib/security/transport/security_handshaker.cc +19 -18
  232. data/src/core/lib/security/transport/security_handshaker.h +1 -1
  233. data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
  234. data/src/core/lib/slice/b64.cc +19 -16
  235. data/src/core/lib/slice/percent_encoding.cc +5 -5
  236. data/src/core/lib/slice/slice.cc +35 -33
  237. data/src/core/lib/slice/slice_buffer.cc +16 -14
  238. data/src/core/lib/slice/slice_hash_table.cc +3 -2
  239. data/src/core/lib/slice/slice_intern.cc +21 -25
  240. data/src/core/lib/slice/slice_string_helpers.cc +45 -9
  241. data/src/core/lib/slice/slice_string_helpers.h +6 -0
  242. data/src/core/lib/surface/byte_buffer.cc +2 -2
  243. data/src/core/lib/surface/byte_buffer_reader.cc +6 -3
  244. data/src/core/lib/surface/call.cc +171 -260
  245. data/src/core/lib/surface/call_test_only.h +1 -13
  246. data/src/core/lib/surface/channel.cc +20 -43
  247. data/src/core/lib/surface/channel_init.cc +7 -7
  248. data/src/core/lib/surface/channel_ping.cc +2 -2
  249. data/src/core/lib/surface/completion_queue.cc +69 -75
  250. data/src/core/lib/surface/init.cc +4 -5
  251. data/src/core/lib/surface/init_secure.cc +1 -1
  252. data/src/core/lib/surface/lame_client.cc +1 -1
  253. data/src/core/lib/surface/server.cc +64 -59
  254. data/src/core/lib/surface/version.cc +2 -2
  255. data/src/core/lib/transport/bdp_estimator.cc +6 -5
  256. data/src/core/lib/transport/byte_stream.cc +23 -14
  257. data/src/core/lib/transport/byte_stream.h +1 -1
  258. data/src/core/lib/transport/connectivity_state.cc +9 -13
  259. data/src/core/lib/transport/error_utils.cc +10 -7
  260. data/src/core/lib/transport/metadata.cc +27 -26
  261. data/src/core/lib/transport/metadata.h +1 -1
  262. data/src/core/lib/transport/pid_controller.cc +2 -1
  263. data/src/core/lib/transport/service_config.cc +5 -5
  264. data/src/core/lib/transport/static_metadata.cc +225 -222
  265. data/src/core/lib/transport/static_metadata.h +77 -76
  266. data/src/core/lib/transport/timeout_encoding.cc +3 -2
  267. data/src/core/lib/transport/transport.cc +6 -5
  268. data/src/core/lib/transport/transport_op_string.cc +0 -1
  269. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
  270. data/src/core/tsi/alts_transport_security.cc +61 -0
  271. data/src/core/tsi/{gts_transport_security.h → alts_transport_security.h} +16 -8
  272. data/src/core/tsi/fake_transport_security.cc +59 -43
  273. data/src/core/tsi/ssl_transport_security.cc +122 -107
  274. data/src/core/tsi/transport_security.cc +3 -3
  275. data/src/core/tsi/transport_security_adapter.cc +16 -10
  276. data/src/ruby/bin/apis/pubsub_demo.rb +1 -1
  277. data/src/ruby/ext/grpc/rb_channel.c +3 -4
  278. data/src/ruby/ext/grpc/rb_compression_options.c +13 -3
  279. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -76
  280. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +8 -120
  281. data/src/ruby/ext/grpc/rb_server.c +52 -28
  282. data/src/ruby/lib/grpc/generic/rpc_server.rb +7 -4
  283. data/src/ruby/lib/grpc/version.rb +1 -1
  284. data/src/ruby/pb/test/client.rb +1 -1
  285. data/src/ruby/pb/test/server.rb +1 -1
  286. data/src/ruby/spec/client_server_spec.rb +4 -2
  287. data/src/ruby/spec/generic/active_call_spec.rb +2 -1
  288. data/src/ruby/spec/generic/client_stub_spec.rb +32 -8
  289. data/src/ruby/spec/server_spec.rb +26 -7
  290. data/third_party/boringssl/crypto/asn1/a_bitstr.c +7 -2
  291. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +15 -0
  292. data/third_party/boringssl/crypto/asn1/a_gentm.c +1 -1
  293. data/third_party/boringssl/crypto/asn1/a_print.c +0 -28
  294. data/third_party/boringssl/crypto/asn1/a_strnid.c +3 -0
  295. data/third_party/boringssl/crypto/asn1/a_time.c +17 -9
  296. data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -1
  297. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -49
  298. data/third_party/boringssl/crypto/asn1/asn1_locl.h +1 -1
  299. data/third_party/boringssl/crypto/asn1/tasn_dec.c +9 -9
  300. data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -6
  301. data/third_party/boringssl/crypto/asn1/time_support.c +5 -5
  302. data/third_party/boringssl/crypto/base64/base64.c +65 -43
  303. data/third_party/boringssl/crypto/bio/bio.c +134 -110
  304. data/third_party/boringssl/crypto/bio/bio_mem.c +9 -9
  305. data/third_party/boringssl/crypto/bio/connect.c +17 -17
  306. data/third_party/boringssl/crypto/bio/fd.c +2 -1
  307. data/third_party/boringssl/crypto/bio/file.c +14 -14
  308. data/third_party/boringssl/crypto/bio/hexdump.c +15 -16
  309. data/third_party/boringssl/crypto/bio/internal.h +14 -14
  310. data/third_party/boringssl/crypto/bio/pair.c +45 -45
  311. data/third_party/boringssl/crypto/bio/printf.c +6 -10
  312. data/third_party/boringssl/crypto/{bn → bn_extra}/bn_asn1.c +9 -9
  313. data/third_party/boringssl/crypto/{bn → bn_extra}/convert.c +18 -223
  314. data/third_party/boringssl/crypto/buf/buf.c +20 -44
  315. data/third_party/boringssl/crypto/bytestring/ber.c +35 -35
  316. data/third_party/boringssl/crypto/bytestring/cbb.c +24 -24
  317. data/third_party/boringssl/crypto/bytestring/cbs.c +33 -37
  318. data/third_party/boringssl/crypto/bytestring/internal.h +38 -38
  319. data/third_party/boringssl/crypto/chacha/chacha.c +7 -7
  320. data/third_party/boringssl/crypto/{asn1/t_bitst.c → cipher_extra/cipher_extra.c} +49 -38
  321. data/third_party/boringssl/crypto/{cipher → cipher_extra}/derive_key.c +0 -2
  322. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +281 -0
  323. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +867 -0
  324. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +326 -0
  325. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_null.c +0 -1
  326. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc2.c +22 -10
  327. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc4.c +0 -0
  328. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_ssl3.c +120 -64
  329. data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_tls.c +220 -141
  330. data/third_party/boringssl/crypto/{asn1/x_bignum.c → cipher_extra/internal.h} +61 -86
  331. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +482 -0
  332. data/third_party/boringssl/crypto/cmac/cmac.c +20 -20
  333. data/third_party/boringssl/crypto/conf/conf.c +32 -20
  334. data/third_party/boringssl/crypto/conf/internal.h +3 -3
  335. data/third_party/boringssl/crypto/cpu-aarch64-linux.c +5 -5
  336. data/third_party/boringssl/crypto/cpu-arm-linux.c +44 -41
  337. data/third_party/boringssl/crypto/cpu-intel.c +68 -43
  338. data/third_party/boringssl/crypto/cpu-ppc64le.c +5 -7
  339. data/third_party/boringssl/crypto/crypto.c +54 -32
  340. data/third_party/boringssl/crypto/curve25519/curve25519.c +269 -269
  341. data/third_party/boringssl/crypto/curve25519/internal.h +28 -8
  342. data/third_party/boringssl/crypto/curve25519/spake25519.c +180 -106
  343. data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +9 -9
  344. data/third_party/boringssl/crypto/dh/check.c +33 -34
  345. data/third_party/boringssl/crypto/dh/dh.c +72 -36
  346. data/third_party/boringssl/crypto/dh/dh_asn1.c +1 -1
  347. data/third_party/boringssl/crypto/dh/params.c +1 -161
  348. data/third_party/boringssl/crypto/digest_extra/digest_extra.c +240 -0
  349. data/third_party/boringssl/crypto/dsa/dsa.c +127 -87
  350. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +1 -1
  351. data/third_party/boringssl/crypto/{ec → ec_extra}/ec_asn1.c +83 -70
  352. data/third_party/boringssl/crypto/ecdh/ecdh.c +1 -1
  353. data/third_party/boringssl/crypto/{ecdsa → ecdsa_extra}/ecdsa_asn1.c +86 -31
  354. data/third_party/boringssl/crypto/engine/engine.c +6 -6
  355. data/third_party/boringssl/crypto/err/err.c +197 -106
  356. data/third_party/boringssl/crypto/err/internal.h +58 -0
  357. data/third_party/boringssl/crypto/evp/digestsign.c +86 -14
  358. data/third_party/boringssl/crypto/evp/evp.c +6 -11
  359. data/third_party/boringssl/crypto/evp/evp_asn1.c +17 -17
  360. data/third_party/boringssl/crypto/evp/evp_ctx.c +15 -11
  361. data/third_party/boringssl/crypto/evp/internal.h +66 -51
  362. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +11 -11
  363. data/third_party/boringssl/crypto/evp/p_ec.c +10 -8
  364. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +11 -12
  365. data/third_party/boringssl/crypto/evp/p_ed25519.c +71 -0
  366. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +190 -0
  367. data/third_party/boringssl/crypto/evp/p_rsa.c +50 -95
  368. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +28 -18
  369. data/third_party/boringssl/crypto/evp/pbkdf.c +49 -56
  370. data/third_party/boringssl/crypto/evp/print.c +5 -36
  371. data/third_party/boringssl/crypto/evp/scrypt.c +209 -0
  372. data/third_party/boringssl/crypto/ex_data.c +15 -45
  373. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +100 -0
  374. data/third_party/boringssl/crypto/fipsmodule/bcm.c +679 -0
  375. data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/internal.h +40 -27
  376. data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/rsaz_exp.h +0 -0
  377. data/third_party/boringssl/crypto/{cipher → fipsmodule/cipher}/internal.h +34 -67
  378. data/third_party/boringssl/crypto/fipsmodule/delocate.h +88 -0
  379. data/third_party/boringssl/crypto/{des → fipsmodule/des}/internal.h +18 -4
  380. data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/internal.h +18 -18
  381. data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/md32_common.h +58 -64
  382. data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/internal.h +58 -52
  383. data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64-table.h +11 -11
  384. data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64.h +32 -32
  385. data/third_party/boringssl/crypto/{rand/internal.h → fipsmodule/is_fips.c} +10 -15
  386. data/third_party/boringssl/crypto/{modes → fipsmodule/modes}/internal.h +112 -119
  387. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +92 -0
  388. data/third_party/boringssl/crypto/{rsa → fipsmodule/rsa}/internal.h +36 -49
  389. data/third_party/boringssl/crypto/hkdf/hkdf.c +6 -6
  390. data/third_party/boringssl/crypto/internal.h +301 -233
  391. data/third_party/boringssl/crypto/lhash/lhash.c +26 -45
  392. data/third_party/boringssl/crypto/mem.c +76 -33
  393. data/third_party/boringssl/crypto/obj/obj.c +44 -28
  394. data/third_party/boringssl/crypto/obj/obj_dat.h +102 -34
  395. data/third_party/boringssl/crypto/obj/obj_xref.c +6 -6
  396. data/third_party/boringssl/crypto/pem/pem_info.c +3 -5
  397. data/third_party/boringssl/crypto/pem/pem_lib.c +1 -6
  398. data/third_party/boringssl/crypto/pem/pem_pk8.c +1 -0
  399. data/third_party/boringssl/crypto/pem/pem_pkey.c +1 -1
  400. data/third_party/boringssl/crypto/pem/pem_xaux.c +0 -2
  401. data/third_party/boringssl/crypto/pkcs7/internal.h +49 -0
  402. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +166 -0
  403. data/third_party/boringssl/crypto/{x509/pkcs7.c → pkcs7/pkcs7_x509.c} +27 -147
  404. data/third_party/boringssl/crypto/pkcs8/internal.h +34 -16
  405. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +120 -39
  406. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +144 -857
  407. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +789 -0
  408. data/third_party/boringssl/crypto/poly1305/internal.h +4 -3
  409. data/third_party/boringssl/crypto/poly1305/poly1305.c +14 -14
  410. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +11 -11
  411. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +41 -41
  412. data/third_party/boringssl/crypto/pool/internal.h +2 -2
  413. data/third_party/boringssl/crypto/pool/pool.c +15 -15
  414. data/third_party/boringssl/crypto/{rand → rand_extra}/deterministic.c +7 -7
  415. data/third_party/boringssl/crypto/rand_extra/forkunsafe.c +46 -0
  416. data/third_party/boringssl/crypto/{rand → rand_extra}/fuchsia.c +7 -7
  417. data/third_party/boringssl/crypto/rand_extra/rand_extra.c +70 -0
  418. data/third_party/boringssl/crypto/{rand → rand_extra}/windows.c +5 -5
  419. data/third_party/boringssl/crypto/refcount_c11.c +2 -2
  420. data/third_party/boringssl/crypto/refcount_lock.c +1 -1
  421. data/third_party/boringssl/crypto/{rsa → rsa_extra}/rsa_asn1.c +12 -120
  422. data/third_party/boringssl/crypto/stack/stack.c +13 -13
  423. data/third_party/boringssl/crypto/thread_none.c +1 -1
  424. data/third_party/boringssl/crypto/thread_pthread.c +1 -1
  425. data/third_party/boringssl/crypto/thread_win.c +40 -40
  426. data/third_party/boringssl/crypto/x509/a_sign.c +5 -12
  427. data/third_party/boringssl/crypto/x509/a_verify.c +6 -18
  428. data/third_party/boringssl/crypto/x509/algorithm.c +22 -6
  429. data/third_party/boringssl/crypto/x509/asn1_gen.c +30 -7
  430. data/third_party/boringssl/crypto/x509/by_dir.c +2 -2
  431. data/third_party/boringssl/crypto/x509/by_file.c +2 -2
  432. data/third_party/boringssl/crypto/x509/rsa_pss.c +5 -5
  433. data/third_party/boringssl/crypto/x509/t_x509.c +2 -1
  434. data/third_party/boringssl/crypto/x509/x509_def.c +5 -0
  435. data/third_party/boringssl/crypto/x509/x509_lu.c +35 -4
  436. data/third_party/boringssl/crypto/x509/x509_set.c +10 -0
  437. data/third_party/boringssl/crypto/x509/x509_vfy.c +20 -17
  438. data/third_party/boringssl/crypto/x509/x_name.c +13 -16
  439. data/third_party/boringssl/crypto/x509/x_x509.c +3 -3
  440. data/third_party/boringssl/crypto/x509/x_x509a.c +0 -7
  441. data/third_party/boringssl/crypto/x509v3/ext_dat.h +8 -0
  442. data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
  443. data/third_party/boringssl/crypto/x509v3/pcy_lib.c +0 -9
  444. data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -1
  445. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +25 -15
  446. data/third_party/boringssl/crypto/x509v3/v3_alt.c +21 -11
  447. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +9 -3
  448. data/third_party/boringssl/crypto/x509v3/v3_info.c +22 -14
  449. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +27 -11
  450. data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -33
  451. data/third_party/boringssl/crypto/x509v3/v3_utl.c +4 -4
  452. data/third_party/boringssl/include/openssl/aead.h +280 -191
  453. data/third_party/boringssl/include/openssl/aes.h +50 -50
  454. data/third_party/boringssl/include/openssl/arm_arch.h +12 -12
  455. data/third_party/boringssl/include/openssl/asn1.h +14 -77
  456. data/third_party/boringssl/include/openssl/asn1t.h +11 -15
  457. data/third_party/boringssl/include/openssl/base.h +78 -51
  458. data/third_party/boringssl/include/openssl/base64.h +68 -68
  459. data/third_party/boringssl/include/openssl/bio.h +472 -406
  460. data/third_party/boringssl/include/openssl/blowfish.h +1 -1
  461. data/third_party/boringssl/include/openssl/bn.h +454 -435
  462. data/third_party/boringssl/include/openssl/buf.h +27 -27
  463. data/third_party/boringssl/include/openssl/bytestring.h +282 -267
  464. data/third_party/boringssl/include/openssl/cast.h +2 -2
  465. data/third_party/boringssl/include/openssl/chacha.h +5 -5
  466. data/third_party/boringssl/include/openssl/cipher.h +209 -200
  467. data/third_party/boringssl/include/openssl/cmac.h +27 -27
  468. data/third_party/boringssl/include/openssl/conf.h +49 -46
  469. data/third_party/boringssl/include/openssl/cpu.h +60 -45
  470. data/third_party/boringssl/include/openssl/crypto.h +59 -35
  471. data/third_party/boringssl/include/openssl/curve25519.h +97 -92
  472. data/third_party/boringssl/include/openssl/des.h +25 -25
  473. data/third_party/boringssl/include/openssl/dh.h +98 -97
  474. data/third_party/boringssl/include/openssl/digest.h +143 -114
  475. data/third_party/boringssl/include/openssl/dsa.h +217 -202
  476. data/third_party/boringssl/include/openssl/ec.h +132 -131
  477. data/third_party/boringssl/include/openssl/ec_key.h +132 -128
  478. data/third_party/boringssl/include/openssl/ecdh.h +9 -9
  479. data/third_party/boringssl/include/openssl/ecdsa.h +66 -66
  480. data/third_party/boringssl/include/openssl/engine.h +38 -38
  481. data/third_party/boringssl/include/openssl/err.h +189 -219
  482. data/third_party/boringssl/include/openssl/evp.h +473 -397
  483. data/third_party/boringssl/include/openssl/ex_data.h +46 -56
  484. data/third_party/boringssl/include/openssl/hkdf.h +17 -17
  485. data/third_party/boringssl/include/openssl/hmac.h +55 -43
  486. data/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
  487. data/third_party/boringssl/include/openssl/lhash.h +67 -67
  488. data/third_party/boringssl/include/openssl/lhash_macros.h +4 -4
  489. data/third_party/boringssl/include/openssl/md4.h +14 -14
  490. data/third_party/boringssl/include/openssl/md5.h +14 -14
  491. data/third_party/boringssl/include/openssl/mem.h +39 -33
  492. data/third_party/boringssl/include/openssl/nid.h +43 -0
  493. data/third_party/boringssl/include/openssl/obj.h +93 -87
  494. data/third_party/boringssl/include/openssl/opensslconf.h +8 -1
  495. data/third_party/boringssl/include/openssl/pem.h +2 -122
  496. data/third_party/boringssl/include/openssl/pkcs7.h +68 -2
  497. data/third_party/boringssl/include/openssl/pkcs8.h +81 -66
  498. data/third_party/boringssl/include/openssl/poly1305.h +11 -11
  499. data/third_party/boringssl/include/openssl/pool.h +29 -25
  500. data/third_party/boringssl/include/openssl/rand.h +48 -45
  501. data/third_party/boringssl/include/openssl/rc4.h +9 -9
  502. data/third_party/boringssl/include/openssl/ripemd.h +13 -13
  503. data/third_party/boringssl/include/openssl/rsa.h +371 -340
  504. data/third_party/boringssl/include/openssl/sha.h +71 -71
  505. data/third_party/boringssl/include/openssl/span.h +191 -0
  506. data/third_party/boringssl/include/openssl/ssl.h +2639 -2519
  507. data/third_party/boringssl/include/openssl/ssl3.h +39 -122
  508. data/third_party/boringssl/include/openssl/stack.h +355 -164
  509. data/third_party/boringssl/include/openssl/thread.h +43 -43
  510. data/third_party/boringssl/include/openssl/tls1.h +60 -63
  511. data/third_party/boringssl/include/openssl/type_check.h +10 -14
  512. data/third_party/boringssl/include/openssl/x509.h +41 -116
  513. data/third_party/boringssl/include/openssl/x509_vfy.h +17 -25
  514. data/third_party/boringssl/include/openssl/x509v3.h +27 -21
  515. data/third_party/boringssl/ssl/{bio_ssl.c → bio_ssl.cc} +9 -5
  516. data/third_party/boringssl/ssl/{custom_extensions.c → custom_extensions.cc} +19 -12
  517. data/third_party/boringssl/ssl/{d1_both.c → d1_both.cc} +224 -193
  518. data/third_party/boringssl/ssl/{d1_lib.c → d1_lib.cc} +86 -79
  519. data/third_party/boringssl/ssl/{d1_pkt.c → d1_pkt.cc} +55 -87
  520. data/third_party/boringssl/ssl/{d1_srtp.c → d1_srtp.cc} +12 -16
  521. data/third_party/boringssl/ssl/{dtls_method.c → dtls_method.cc} +33 -50
  522. data/third_party/boringssl/ssl/{dtls_record.c → dtls_record.cc} +76 -64
  523. data/third_party/boringssl/ssl/handshake.cc +547 -0
  524. data/third_party/boringssl/ssl/handshake_client.cc +1828 -0
  525. data/third_party/boringssl/ssl/handshake_server.cc +1672 -0
  526. data/third_party/boringssl/ssl/internal.h +2027 -1280
  527. data/third_party/boringssl/ssl/s3_both.cc +603 -0
  528. data/third_party/boringssl/ssl/{s3_lib.c → s3_lib.cc} +22 -10
  529. data/third_party/boringssl/ssl/{s3_pkt.c → s3_pkt.cc} +171 -75
  530. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +415 -0
  531. data/third_party/boringssl/ssl/{ssl_asn1.c → ssl_asn1.cc} +257 -261
  532. data/third_party/boringssl/ssl/{ssl_buffer.c → ssl_buffer.cc} +81 -97
  533. data/third_party/boringssl/ssl/{ssl_cert.c → ssl_cert.cc} +304 -414
  534. data/third_party/boringssl/ssl/{ssl_cipher.c → ssl_cipher.cc} +427 -505
  535. data/third_party/boringssl/ssl/{ssl_file.c → ssl_file.cc} +24 -16
  536. data/third_party/boringssl/ssl/ssl_key_share.cc +245 -0
  537. data/third_party/boringssl/ssl/{ssl_lib.c → ssl_lib.cc} +665 -828
  538. data/third_party/boringssl/ssl/ssl_privkey.cc +518 -0
  539. data/third_party/boringssl/ssl/{ssl_session.c → ssl_session.cc} +596 -471
  540. data/third_party/boringssl/ssl/{ssl_stat.c → ssl_stat.cc} +5 -224
  541. data/third_party/boringssl/ssl/{ssl_transcript.c → ssl_transcript.cc} +117 -140
  542. data/third_party/boringssl/ssl/ssl_versions.cc +439 -0
  543. data/third_party/boringssl/ssl/{ssl_x509.c → ssl_x509.cc} +751 -267
  544. data/third_party/boringssl/ssl/{t1_enc.c → t1_enc.cc} +120 -161
  545. data/third_party/boringssl/ssl/{t1_lib.c → t1_lib.cc} +859 -966
  546. data/third_party/boringssl/ssl/{tls13_both.c → tls13_both.cc} +202 -284
  547. data/third_party/boringssl/ssl/tls13_client.cc +842 -0
  548. data/third_party/boringssl/ssl/{tls13_enc.c → tls13_enc.cc} +108 -90
  549. data/third_party/boringssl/ssl/tls13_server.cc +967 -0
  550. data/third_party/boringssl/ssl/{tls_method.c → tls_method.cc} +94 -73
  551. data/third_party/boringssl/ssl/tls_record.cc +675 -0
  552. metadata +117 -168
  553. data/include/grpc/support/cmdline.h +0 -88
  554. data/include/grpc/support/subprocess.h +0 -44
  555. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -29
  556. data/src/core/ext/filters/client_channel/resolver_factory.cc +0 -40
  557. data/src/core/lib/gpr/cmdline.cc +0 -330
  558. data/src/core/lib/gpr/subprocess_posix.cc +0 -99
  559. data/src/core/lib/gpr/subprocess_windows.cc +0 -126
  560. data/src/core/lib/surface/alarm.cc +0 -137
  561. data/src/core/lib/surface/alarm_internal.h +0 -40
  562. data/src/core/tsi/gts_transport_security.cc +0 -40
  563. data/third_party/boringssl/crypto/aes/aes.c +0 -1142
  564. data/third_party/boringssl/crypto/aes/internal.h +0 -87
  565. data/third_party/boringssl/crypto/aes/key_wrap.c +0 -138
  566. data/third_party/boringssl/crypto/aes/mode_wrappers.c +0 -112
  567. data/third_party/boringssl/crypto/asn1/x_long.c +0 -200
  568. data/third_party/boringssl/crypto/bn/add.c +0 -377
  569. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -532
  570. data/third_party/boringssl/crypto/bn/bn.c +0 -365
  571. data/third_party/boringssl/crypto/bn/cmp.c +0 -239
  572. data/third_party/boringssl/crypto/bn/ctx.c +0 -313
  573. data/third_party/boringssl/crypto/bn/div.c +0 -728
  574. data/third_party/boringssl/crypto/bn/exponentiation.c +0 -1240
  575. data/third_party/boringssl/crypto/bn/gcd.c +0 -635
  576. data/third_party/boringssl/crypto/bn/generic.c +0 -707
  577. data/third_party/boringssl/crypto/bn/kronecker.c +0 -176
  578. data/third_party/boringssl/crypto/bn/montgomery.c +0 -409
  579. data/third_party/boringssl/crypto/bn/montgomery_inv.c +0 -207
  580. data/third_party/boringssl/crypto/bn/mul.c +0 -871
  581. data/third_party/boringssl/crypto/bn/prime.c +0 -861
  582. data/third_party/boringssl/crypto/bn/random.c +0 -343
  583. data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -254
  584. data/third_party/boringssl/crypto/bn/shift.c +0 -307
  585. data/third_party/boringssl/crypto/bn/sqrt.c +0 -506
  586. data/third_party/boringssl/crypto/cipher/aead.c +0 -156
  587. data/third_party/boringssl/crypto/cipher/cipher.c +0 -657
  588. data/third_party/boringssl/crypto/cipher/e_aes.c +0 -1771
  589. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +0 -276
  590. data/third_party/boringssl/crypto/cipher/e_des.c +0 -205
  591. data/third_party/boringssl/crypto/cipher/tls_cbc.c +0 -482
  592. data/third_party/boringssl/crypto/des/des.c +0 -771
  593. data/third_party/boringssl/crypto/digest/digest.c +0 -251
  594. data/third_party/boringssl/crypto/digest/digests.c +0 -358
  595. data/third_party/boringssl/crypto/ec/ec.c +0 -847
  596. data/third_party/boringssl/crypto/ec/ec_key.c +0 -479
  597. data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -303
  598. data/third_party/boringssl/crypto/ec/oct.c +0 -416
  599. data/third_party/boringssl/crypto/ec/p224-64.c +0 -1143
  600. data/third_party/boringssl/crypto/ec/p256-64.c +0 -1701
  601. data/third_party/boringssl/crypto/ec/p256-x86_64.c +0 -561
  602. data/third_party/boringssl/crypto/ec/simple.c +0 -1118
  603. data/third_party/boringssl/crypto/ec/util-64.c +0 -109
  604. data/third_party/boringssl/crypto/ec/wnaf.c +0 -458
  605. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +0 -479
  606. data/third_party/boringssl/crypto/hmac/hmac.c +0 -215
  607. data/third_party/boringssl/crypto/md4/md4.c +0 -236
  608. data/third_party/boringssl/crypto/md5/md5.c +0 -285
  609. data/third_party/boringssl/crypto/modes/cbc.c +0 -212
  610. data/third_party/boringssl/crypto/modes/cfb.c +0 -230
  611. data/third_party/boringssl/crypto/modes/ctr.c +0 -219
  612. data/third_party/boringssl/crypto/modes/gcm.c +0 -1071
  613. data/third_party/boringssl/crypto/modes/ofb.c +0 -95
  614. data/third_party/boringssl/crypto/modes/polyval.c +0 -94
  615. data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +0 -85
  616. data/third_party/boringssl/crypto/rand/rand.c +0 -244
  617. data/third_party/boringssl/crypto/rand/urandom.c +0 -335
  618. data/third_party/boringssl/crypto/rsa/blinding.c +0 -265
  619. data/third_party/boringssl/crypto/rsa/padding.c +0 -708
  620. data/third_party/boringssl/crypto/rsa/rsa.c +0 -830
  621. data/third_party/boringssl/crypto/rsa/rsa_impl.c +0 -1100
  622. data/third_party/boringssl/crypto/sha/sha1-altivec.c +0 -346
  623. data/third_party/boringssl/crypto/sha/sha1.c +0 -355
  624. data/third_party/boringssl/crypto/sha/sha256.c +0 -329
  625. data/third_party/boringssl/crypto/sha/sha512.c +0 -609
  626. data/third_party/boringssl/crypto/x509/x509type.c +0 -126
  627. data/third_party/boringssl/include/openssl/stack_macros.h +0 -3987
  628. data/third_party/boringssl/ssl/handshake_client.c +0 -1883
  629. data/third_party/boringssl/ssl/handshake_server.c +0 -1950
  630. data/third_party/boringssl/ssl/s3_both.c +0 -895
  631. data/third_party/boringssl/ssl/ssl_aead_ctx.c +0 -335
  632. data/third_party/boringssl/ssl/ssl_ecdh.c +0 -465
  633. data/third_party/boringssl/ssl/ssl_privkey.c +0 -683
  634. data/third_party/boringssl/ssl/ssl_privkey_cc.cc +0 -76
  635. data/third_party/boringssl/ssl/tls13_client.c +0 -712
  636. data/third_party/boringssl/ssl/tls13_server.c +0 -680
  637. data/third_party/boringssl/ssl/tls_record.c +0 -556
@@ -1,4 +1,4 @@
1
- /* Copyright (c) 2015, Google Inc.
1
+ /* Copyright (c) 2017, Google Inc.
2
2
  *
3
3
  * Permission to use, copy, modify, and/or distribute this software for any
4
4
  * purpose with or without fee is hereby granted, provided that the above
@@ -12,21 +12,16 @@
12
12
  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13
13
  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
14
 
15
- #ifndef OPENSSL_HEADER_CRYPTO_RAND_INTERNAL_H
16
- #define OPENSSL_HEADER_CRYPTO_RAND_INTERNAL_H
17
-
18
- #if defined(__cplusplus)
19
- extern "C" {
20
- #endif
15
+ #include <openssl/crypto.h>
21
16
 
22
17
 
23
- /* CRYPTO_sysrand fills |len| bytes at |buf| with entropy from the operating
24
- * system. */
25
- void CRYPTO_sysrand(uint8_t *buf, size_t len);
18
+ // This file exists in order to give the fipsmodule target, in non-FIPS mode,
19
+ // something to compile.
26
20
 
27
-
28
- #if defined(__cplusplus)
29
- } /* extern C */
21
+ int FIPS_mode(void) {
22
+ #if defined(BORINGSSL_FIPS) && !defined(OPENSSL_ASAN)
23
+ return 1;
24
+ #else
25
+ return 0;
30
26
  #endif
31
-
32
- #endif /* OPENSSL_HEADER_CRYPTO_RAND_INTERNAL_H */
27
+ }
@@ -53,15 +53,13 @@
53
53
 
54
54
  #include <string.h>
55
55
 
56
- #include "../internal.h"
56
+ #include "../../internal.h"
57
57
 
58
58
  #if defined(__cplusplus)
59
59
  extern "C" {
60
60
  #endif
61
61
 
62
62
 
63
- #define asm __asm__
64
-
65
63
  #define STRICT_ALIGNMENT 1
66
64
  #if defined(OPENSSL_X86_64) || defined(OPENSSL_X86) || defined(OPENSSL_AARCH64)
67
65
  #undef STRICT_ALIGNMENT
@@ -111,38 +109,28 @@ static inline void PUTU32(void *out, uint32_t v) {
111
109
  OPENSSL_memcpy(out, &v, sizeof(v));
112
110
  }
113
111
 
114
- static inline uint32_t GETU32_aligned(const void *in) {
115
- const char *alias = (const char *) in;
116
- return CRYPTO_bswap4(*((const uint32_t *) alias));
117
- }
118
-
119
- static inline void PUTU32_aligned(void *in, uint32_t v) {
120
- char *alias = (char *) in;
121
- *((uint32_t *) alias) = CRYPTO_bswap4(v);
122
- }
123
-
124
- /* block128_f is the type of a 128-bit, block cipher. */
112
+ // block128_f is the type of a 128-bit, block cipher.
125
113
  typedef void (*block128_f)(const uint8_t in[16], uint8_t out[16],
126
114
  const void *key);
127
115
 
128
- /* GCM definitions */
116
+ // GCM definitions
129
117
  typedef struct { uint64_t hi,lo; } u128;
130
118
 
131
- /* gmult_func multiplies |Xi| by the GCM key and writes the result back to
132
- * |Xi|. */
119
+ // gmult_func multiplies |Xi| by the GCM key and writes the result back to
120
+ // |Xi|.
133
121
  typedef void (*gmult_func)(uint64_t Xi[2], const u128 Htable[16]);
134
122
 
135
- /* ghash_func repeatedly multiplies |Xi| by the GCM key and adds in blocks from
136
- * |inp|. The result is written back to |Xi| and the |len| argument must be a
137
- * multiple of 16. */
123
+ // ghash_func repeatedly multiplies |Xi| by the GCM key and adds in blocks from
124
+ // |inp|. The result is written back to |Xi| and the |len| argument must be a
125
+ // multiple of 16.
138
126
  typedef void (*ghash_func)(uint64_t Xi[2], const u128 Htable[16],
139
127
  const uint8_t *inp, size_t len);
140
128
 
141
- /* This differs from upstream's |gcm128_context| in that it does not have the
142
- * |key| pointer, in order to make it |memcpy|-friendly. Rather the key is
143
- * passed into each call that needs it. */
129
+ // This differs from upstream's |gcm128_context| in that it does not have the
130
+ // |key| pointer, in order to make it |memcpy|-friendly. Rather the key is
131
+ // passed into each call that needs it.
144
132
  struct gcm128_context {
145
- /* Following 6 names follow names in GCM specification */
133
+ // Following 6 names follow names in GCM specification
146
134
  union {
147
135
  uint64_t u[2];
148
136
  uint32_t d[4];
@@ -150,8 +138,8 @@ struct gcm128_context {
150
138
  size_t t[16 / sizeof(size_t)];
151
139
  } Yi, EKi, EK0, len, Xi;
152
140
 
153
- /* Note that the order of |Xi|, |H| and |Htable| is fixed by the MOVBE-based,
154
- * x86-64, GHASH assembly. */
141
+ // Note that the order of |Xi|, |H| and |Htable| is fixed by the MOVBE-based,
142
+ // x86-64, GHASH assembly.
155
143
  u128 H;
156
144
  u128 Htable[16];
157
145
  gmult_func gmult;
@@ -159,36 +147,40 @@ struct gcm128_context {
159
147
 
160
148
  unsigned int mres, ares;
161
149
  block128_f block;
150
+
151
+ // use_aesni_gcm_crypt is true if this context should use the assembly
152
+ // functions |aesni_gcm_encrypt| and |aesni_gcm_decrypt| to process data.
153
+ unsigned use_aesni_gcm_crypt:1;
162
154
  };
163
155
 
164
156
  #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64)
165
- /* crypto_gcm_clmul_enabled returns one if the CLMUL implementation of GCM is
166
- * used. */
157
+ // crypto_gcm_clmul_enabled returns one if the CLMUL implementation of GCM is
158
+ // used.
167
159
  int crypto_gcm_clmul_enabled(void);
168
160
  #endif
169
161
 
170
162
 
171
- /* CTR. */
163
+ // CTR.
172
164
 
173
- /* ctr128_f is the type of a function that performs CTR-mode encryption. */
165
+ // ctr128_f is the type of a function that performs CTR-mode encryption.
174
166
  typedef void (*ctr128_f)(const uint8_t *in, uint8_t *out, size_t blocks,
175
167
  const void *key, const uint8_t ivec[16]);
176
168
 
177
- /* CRYPTO_ctr128_encrypt encrypts (or decrypts, it's the same in CTR mode)
178
- * |len| bytes from |in| to |out| using |block| in counter mode. There's no
179
- * requirement that |len| be a multiple of any value and any partial blocks are
180
- * stored in |ecount_buf| and |*num|, which must be zeroed before the initial
181
- * call. The counter is a 128-bit, big-endian value in |ivec| and is
182
- * incremented by this function. */
169
+ // CRYPTO_ctr128_encrypt encrypts (or decrypts, it's the same in CTR mode)
170
+ // |len| bytes from |in| to |out| using |block| in counter mode. There's no
171
+ // requirement that |len| be a multiple of any value and any partial blocks are
172
+ // stored in |ecount_buf| and |*num|, which must be zeroed before the initial
173
+ // call. The counter is a 128-bit, big-endian value in |ivec| and is
174
+ // incremented by this function.
183
175
  void CRYPTO_ctr128_encrypt(const uint8_t *in, uint8_t *out, size_t len,
184
176
  const void *key, uint8_t ivec[16],
185
177
  uint8_t ecount_buf[16], unsigned *num,
186
178
  block128_f block);
187
179
 
188
- /* CRYPTO_ctr128_encrypt_ctr32 acts like |CRYPTO_ctr128_encrypt| but takes
189
- * |ctr|, a function that performs CTR mode but only deals with the lower 32
190
- * bits of the counter. This is useful when |ctr| can be an optimised
191
- * function. */
180
+ // CRYPTO_ctr128_encrypt_ctr32 acts like |CRYPTO_ctr128_encrypt| but takes
181
+ // |ctr|, a function that performs CTR mode but only deals with the lower 32
182
+ // bits of the counter. This is useful when |ctr| can be an optimised
183
+ // function.
192
184
  void CRYPTO_ctr128_encrypt_ctr32(const uint8_t *in, uint8_t *out, size_t len,
193
185
  const void *key, uint8_t ivec[16],
194
186
  uint8_t ecount_buf[16], unsigned *num,
@@ -201,136 +193,137 @@ void aesni_ctr32_encrypt_blocks(const uint8_t *in, uint8_t *out, size_t blocks,
201
193
  #endif
202
194
 
203
195
 
204
- /* GCM.
205
- *
206
- * This API differs from the upstream API slightly. The |GCM128_CONTEXT| does
207
- * not have a |key| pointer that points to the key as upstream's version does.
208
- * Instead, every function takes a |key| parameter. This way |GCM128_CONTEXT|
209
- * can be safely copied. */
196
+ // GCM.
197
+ //
198
+ // This API differs from the upstream API slightly. The |GCM128_CONTEXT| does
199
+ // not have a |key| pointer that points to the key as upstream's version does.
200
+ // Instead, every function takes a |key| parameter. This way |GCM128_CONTEXT|
201
+ // can be safely copied.
210
202
 
211
203
  typedef struct gcm128_context GCM128_CONTEXT;
212
204
 
213
- /* CRYPTO_ghash_init writes a precomputed table of powers of |gcm_key| to
214
- * |out_table| and sets |*out_mult| and |*out_hash| to (potentially hardware
215
- * accelerated) functions for performing operations in the GHASH field. */
205
+ // CRYPTO_ghash_init writes a precomputed table of powers of |gcm_key| to
206
+ // |out_table| and sets |*out_mult| and |*out_hash| to (potentially hardware
207
+ // accelerated) functions for performing operations in the GHASH field. If the
208
+ // AVX implementation was used |*out_is_avx| will be true.
216
209
  void CRYPTO_ghash_init(gmult_func *out_mult, ghash_func *out_hash,
217
- u128 *out_key, u128 out_table[16],
210
+ u128 *out_key, u128 out_table[16], int *out_is_avx,
218
211
  const uint8_t *gcm_key);
219
212
 
220
- /* CRYPTO_gcm128_init initialises |ctx| to use |block| (typically AES) with
221
- * the given key. */
213
+ // CRYPTO_gcm128_init initialises |ctx| to use |block| (typically AES) with
214
+ // the given key. |is_aesni_encrypt| is one if |block| is |aesni_encrypt|.
222
215
  OPENSSL_EXPORT void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, const void *key,
223
- block128_f block);
216
+ block128_f block, int is_aesni_encrypt);
224
217
 
225
- /* CRYPTO_gcm128_setiv sets the IV (nonce) for |ctx|. The |key| must be the
226
- * same key that was passed to |CRYPTO_gcm128_init|. */
218
+ // CRYPTO_gcm128_setiv sets the IV (nonce) for |ctx|. The |key| must be the
219
+ // same key that was passed to |CRYPTO_gcm128_init|.
227
220
  OPENSSL_EXPORT void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const void *key,
228
221
  const uint8_t *iv, size_t iv_len);
229
222
 
230
- /* CRYPTO_gcm128_aad sets the authenticated data for an instance of GCM.
231
- * This must be called before and data is encrypted. It returns one on success
232
- * and zero otherwise. */
223
+ // CRYPTO_gcm128_aad sets the authenticated data for an instance of GCM.
224
+ // This must be called before and data is encrypted. It returns one on success
225
+ // and zero otherwise.
233
226
  OPENSSL_EXPORT int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const uint8_t *aad,
234
227
  size_t len);
235
228
 
236
- /* CRYPTO_gcm128_encrypt encrypts |len| bytes from |in| to |out|. The |key|
237
- * must be the same key that was passed to |CRYPTO_gcm128_init|. It returns one
238
- * on success and zero otherwise. */
229
+ // CRYPTO_gcm128_encrypt encrypts |len| bytes from |in| to |out|. The |key|
230
+ // must be the same key that was passed to |CRYPTO_gcm128_init|. It returns one
231
+ // on success and zero otherwise.
239
232
  OPENSSL_EXPORT int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, const void *key,
240
233
  const uint8_t *in, uint8_t *out,
241
234
  size_t len);
242
235
 
243
- /* CRYPTO_gcm128_decrypt decrypts |len| bytes from |in| to |out|. The |key|
244
- * must be the same key that was passed to |CRYPTO_gcm128_init|. It returns one
245
- * on success and zero otherwise. */
236
+ // CRYPTO_gcm128_decrypt decrypts |len| bytes from |in| to |out|. The |key|
237
+ // must be the same key that was passed to |CRYPTO_gcm128_init|. It returns one
238
+ // on success and zero otherwise.
246
239
  OPENSSL_EXPORT int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, const void *key,
247
240
  const uint8_t *in, uint8_t *out,
248
241
  size_t len);
249
242
 
250
- /* CRYPTO_gcm128_encrypt_ctr32 encrypts |len| bytes from |in| to |out| using
251
- * a CTR function that only handles the bottom 32 bits of the nonce, like
252
- * |CRYPTO_ctr128_encrypt_ctr32|. The |key| must be the same key that was
253
- * passed to |CRYPTO_gcm128_init|. It returns one on success and zero
254
- * otherwise. */
243
+ // CRYPTO_gcm128_encrypt_ctr32 encrypts |len| bytes from |in| to |out| using
244
+ // a CTR function that only handles the bottom 32 bits of the nonce, like
245
+ // |CRYPTO_ctr128_encrypt_ctr32|. The |key| must be the same key that was
246
+ // passed to |CRYPTO_gcm128_init|. It returns one on success and zero
247
+ // otherwise.
255
248
  OPENSSL_EXPORT int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx,
256
249
  const void *key,
257
250
  const uint8_t *in, uint8_t *out,
258
251
  size_t len, ctr128_f stream);
259
252
 
260
- /* CRYPTO_gcm128_decrypt_ctr32 decrypts |len| bytes from |in| to |out| using
261
- * a CTR function that only handles the bottom 32 bits of the nonce, like
262
- * |CRYPTO_ctr128_encrypt_ctr32|. The |key| must be the same key that was
263
- * passed to |CRYPTO_gcm128_init|. It returns one on success and zero
264
- * otherwise. */
253
+ // CRYPTO_gcm128_decrypt_ctr32 decrypts |len| bytes from |in| to |out| using
254
+ // a CTR function that only handles the bottom 32 bits of the nonce, like
255
+ // |CRYPTO_ctr128_encrypt_ctr32|. The |key| must be the same key that was
256
+ // passed to |CRYPTO_gcm128_init|. It returns one on success and zero
257
+ // otherwise.
265
258
  OPENSSL_EXPORT int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx,
266
259
  const void *key,
267
260
  const uint8_t *in, uint8_t *out,
268
261
  size_t len, ctr128_f stream);
269
262
 
270
- /* CRYPTO_gcm128_finish calculates the authenticator and compares it against
271
- * |len| bytes of |tag|. It returns one on success and zero otherwise. */
263
+ // CRYPTO_gcm128_finish calculates the authenticator and compares it against
264
+ // |len| bytes of |tag|. It returns one on success and zero otherwise.
272
265
  OPENSSL_EXPORT int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const uint8_t *tag,
273
266
  size_t len);
274
267
 
275
- /* CRYPTO_gcm128_tag calculates the authenticator and copies it into |tag|.
276
- * The minimum of |len| and 16 bytes are copied into |tag|. */
268
+ // CRYPTO_gcm128_tag calculates the authenticator and copies it into |tag|.
269
+ // The minimum of |len| and 16 bytes are copied into |tag|.
277
270
  OPENSSL_EXPORT void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, uint8_t *tag,
278
271
  size_t len);
279
272
 
280
273
 
281
- /* CBC. */
274
+ // CBC.
282
275
 
283
- /* cbc128_f is the type of a function that performs CBC-mode encryption. */
276
+ // cbc128_f is the type of a function that performs CBC-mode encryption.
284
277
  typedef void (*cbc128_f)(const uint8_t *in, uint8_t *out, size_t len,
285
278
  const void *key, uint8_t ivec[16], int enc);
286
279
 
287
- /* CRYPTO_cbc128_encrypt encrypts |len| bytes from |in| to |out| using the
288
- * given IV and block cipher in CBC mode. The input need not be a multiple of
289
- * 128 bits long, but the output will round up to the nearest 128 bit multiple,
290
- * zero padding the input if needed. The IV will be updated on return. */
280
+ // CRYPTO_cbc128_encrypt encrypts |len| bytes from |in| to |out| using the
281
+ // given IV and block cipher in CBC mode. The input need not be a multiple of
282
+ // 128 bits long, but the output will round up to the nearest 128 bit multiple,
283
+ // zero padding the input if needed. The IV will be updated on return.
291
284
  void CRYPTO_cbc128_encrypt(const uint8_t *in, uint8_t *out, size_t len,
292
285
  const void *key, uint8_t ivec[16], block128_f block);
293
286
 
294
- /* CRYPTO_cbc128_decrypt decrypts |len| bytes from |in| to |out| using the
295
- * given IV and block cipher in CBC mode. If |len| is not a multiple of 128
296
- * bits then only that many bytes will be written, but a multiple of 128 bits
297
- * is always read from |in|. The IV will be updated on return. */
287
+ // CRYPTO_cbc128_decrypt decrypts |len| bytes from |in| to |out| using the
288
+ // given IV and block cipher in CBC mode. If |len| is not a multiple of 128
289
+ // bits then only that many bytes will be written, but a multiple of 128 bits
290
+ // is always read from |in|. The IV will be updated on return.
298
291
  void CRYPTO_cbc128_decrypt(const uint8_t *in, uint8_t *out, size_t len,
299
292
  const void *key, uint8_t ivec[16], block128_f block);
300
293
 
301
294
 
302
- /* OFB. */
295
+ // OFB.
303
296
 
304
- /* CRYPTO_ofb128_encrypt encrypts (or decrypts, it's the same with OFB mode)
305
- * |len| bytes from |in| to |out| using |block| in OFB mode. There's no
306
- * requirement that |len| be a multiple of any value and any partial blocks are
307
- * stored in |ivec| and |*num|, the latter must be zero before the initial
308
- * call. */
297
+ // CRYPTO_ofb128_encrypt encrypts (or decrypts, it's the same with OFB mode)
298
+ // |len| bytes from |in| to |out| using |block| in OFB mode. There's no
299
+ // requirement that |len| be a multiple of any value and any partial blocks are
300
+ // stored in |ivec| and |*num|, the latter must be zero before the initial
301
+ // call.
309
302
  void CRYPTO_ofb128_encrypt(const uint8_t *in, uint8_t *out,
310
303
  size_t len, const void *key, uint8_t ivec[16],
311
304
  unsigned *num, block128_f block);
312
305
 
313
306
 
314
- /* CFB. */
307
+ // CFB.
315
308
 
316
- /* CRYPTO_cfb128_encrypt encrypts (or decrypts, if |enc| is zero) |len| bytes
317
- * from |in| to |out| using |block| in CFB mode. There's no requirement that
318
- * |len| be a multiple of any value and any partial blocks are stored in |ivec|
319
- * and |*num|, the latter must be zero before the initial call. */
309
+ // CRYPTO_cfb128_encrypt encrypts (or decrypts, if |enc| is zero) |len| bytes
310
+ // from |in| to |out| using |block| in CFB mode. There's no requirement that
311
+ // |len| be a multiple of any value and any partial blocks are stored in |ivec|
312
+ // and |*num|, the latter must be zero before the initial call.
320
313
  void CRYPTO_cfb128_encrypt(const uint8_t *in, uint8_t *out, size_t len,
321
314
  const void *key, uint8_t ivec[16], unsigned *num,
322
315
  int enc, block128_f block);
323
316
 
324
- /* CRYPTO_cfb128_8_encrypt encrypts (or decrypts, if |enc| is zero) |len| bytes
325
- * from |in| to |out| using |block| in CFB-8 mode. Prior to the first call
326
- * |num| should be set to zero. */
317
+ // CRYPTO_cfb128_8_encrypt encrypts (or decrypts, if |enc| is zero) |len| bytes
318
+ // from |in| to |out| using |block| in CFB-8 mode. Prior to the first call
319
+ // |num| should be set to zero.
327
320
  void CRYPTO_cfb128_8_encrypt(const uint8_t *in, uint8_t *out, size_t len,
328
321
  const void *key, uint8_t ivec[16], unsigned *num,
329
322
  int enc, block128_f block);
330
323
 
331
- /* CRYPTO_cfb128_1_encrypt encrypts (or decrypts, if |enc| is zero) |len| bytes
332
- * from |in| to |out| using |block| in CFB-1 mode. Prior to the first call
333
- * |num| should be set to zero. */
324
+ // CRYPTO_cfb128_1_encrypt encrypts (or decrypts, if |enc| is zero) |len| bytes
325
+ // from |in| to |out| using |block| in CFB-1 mode. Prior to the first call
326
+ // |num| should be set to zero.
334
327
  void CRYPTO_cfb128_1_encrypt(const uint8_t *in, uint8_t *out, size_t bits,
335
328
  const void *key, uint8_t ivec[16], unsigned *num,
336
329
  int enc, block128_f block);
@@ -340,11 +333,11 @@ size_t CRYPTO_cts128_encrypt_block(const uint8_t *in, uint8_t *out, size_t len,
340
333
  block128_f block);
341
334
 
342
335
 
343
- /* POLYVAL.
344
- *
345
- * POLYVAL is a polynomial authenticator that operates over a field very
346
- * similar to the one that GHASH uses. See
347
- * https://tools.ietf.org/html/draft-irtf-cfrg-gcmsiv-02#section-3. */
336
+ // POLYVAL.
337
+ //
338
+ // POLYVAL is a polynomial authenticator that operates over a field very
339
+ // similar to the one that GHASH uses. See
340
+ // https://tools.ietf.org/html/draft-irtf-cfrg-gcmsiv-02#section-3.
348
341
 
349
342
  typedef union {
350
343
  uint64_t u[2];
@@ -352,8 +345,8 @@ typedef union {
352
345
  } polyval_block;
353
346
 
354
347
  struct polyval_ctx {
355
- /* Note that the order of |S|, |H| and |Htable| is fixed by the MOVBE-based,
356
- * x86-64, GHASH assembly. */
348
+ // Note that the order of |S|, |H| and |Htable| is fixed by the MOVBE-based,
349
+ // x86-64, GHASH assembly.
357
350
  polyval_block S;
358
351
  u128 H;
359
352
  u128 Htable[16];
@@ -361,21 +354,21 @@ struct polyval_ctx {
361
354
  ghash_func ghash;
362
355
  };
363
356
 
364
- /* CRYPTO_POLYVAL_init initialises |ctx| using |key|. */
357
+ // CRYPTO_POLYVAL_init initialises |ctx| using |key|.
365
358
  void CRYPTO_POLYVAL_init(struct polyval_ctx *ctx, const uint8_t key[16]);
366
359
 
367
- /* CRYPTO_POLYVAL_update_blocks updates the accumulator in |ctx| given the
368
- * blocks from |in|. Only a whole number of blocks can be processed so |in_len|
369
- * must be a multiple of 16. */
360
+ // CRYPTO_POLYVAL_update_blocks updates the accumulator in |ctx| given the
361
+ // blocks from |in|. Only a whole number of blocks can be processed so |in_len|
362
+ // must be a multiple of 16.
370
363
  void CRYPTO_POLYVAL_update_blocks(struct polyval_ctx *ctx, const uint8_t *in,
371
364
  size_t in_len);
372
365
 
373
- /* CRYPTO_POLYVAL_finish writes the accumulator from |ctx| to |out|. */
366
+ // CRYPTO_POLYVAL_finish writes the accumulator from |ctx| to |out|.
374
367
  void CRYPTO_POLYVAL_finish(const struct polyval_ctx *ctx, uint8_t out[16]);
375
368
 
376
369
 
377
370
  #if defined(__cplusplus)
378
- } /* extern C */
371
+ } // extern C
379
372
  #endif
380
373
 
381
- #endif /* OPENSSL_HEADER_MODES_INTERNAL_H */
374
+ #endif // OPENSSL_HEADER_MODES_INTERNAL_H
@@ -0,0 +1,92 @@
1
+ /* Copyright (c) 2015, Google Inc.
2
+ *
3
+ * Permission to use, copy, modify, and/or distribute this software for any
4
+ * purpose with or without fee is hereby granted, provided that the above
5
+ * copyright notice and this permission notice appear in all copies.
6
+ *
7
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
+
15
+ #ifndef OPENSSL_HEADER_CRYPTO_RAND_INTERNAL_H
16
+ #define OPENSSL_HEADER_CRYPTO_RAND_INTERNAL_H
17
+
18
+ #include <openssl/aes.h>
19
+
20
+ #include "../../internal.h"
21
+ #include "../modes/internal.h"
22
+
23
+ #if defined(__cplusplus)
24
+ extern "C" {
25
+ #endif
26
+
27
+
28
+ // RAND_bytes_with_additional_data samples from the RNG after mixing 32 bytes
29
+ // from |user_additional_data| in.
30
+ void RAND_bytes_with_additional_data(uint8_t *out, size_t out_len,
31
+ const uint8_t user_additional_data[32]);
32
+
33
+ // CRYPTO_sysrand fills |len| bytes at |buf| with entropy from the operating
34
+ // system.
35
+ void CRYPTO_sysrand(uint8_t *buf, size_t len);
36
+
37
+ // rand_fork_unsafe_buffering_enabled returns whether fork-unsafe buffering has
38
+ // been enabled via |RAND_enable_fork_unsafe_buffering|.
39
+ int rand_fork_unsafe_buffering_enabled(void);
40
+
41
+ // CTR_DRBG_STATE contains the state of a CTR_DRBG based on AES-256. See SP
42
+ // 800-90Ar1.
43
+ typedef struct {
44
+ AES_KEY ks;
45
+ block128_f block;
46
+ ctr128_f ctr;
47
+ union {
48
+ uint8_t bytes[16];
49
+ uint32_t words[4];
50
+ } counter;
51
+ uint64_t reseed_counter;
52
+ } CTR_DRBG_STATE;
53
+
54
+ // See SP 800-90Ar1, table 3.
55
+ #define CTR_DRBG_ENTROPY_LEN 48
56
+ #define CTR_DRBG_MAX_GENERATE_LENGTH 65536
57
+
58
+ // CTR_DRBG_init initialises |*drbg| given |CTR_DRBG_ENTROPY_LEN| bytes of
59
+ // entropy in |entropy| and, optionally, a personalization string up to
60
+ // |CTR_DRBG_ENTROPY_LEN| bytes in length. It returns one on success and zero
61
+ // on error.
62
+ OPENSSL_EXPORT int CTR_DRBG_init(CTR_DRBG_STATE *drbg,
63
+ const uint8_t entropy[CTR_DRBG_ENTROPY_LEN],
64
+ const uint8_t *personalization,
65
+ size_t personalization_len);
66
+
67
+ // CTR_DRBG_reseed reseeds |drbg| given |CTR_DRBG_ENTROPY_LEN| bytes of entropy
68
+ // in |entropy| and, optionally, up to |CTR_DRBG_ENTROPY_LEN| bytes of
69
+ // additional data. It returns one on success or zero on error.
70
+ OPENSSL_EXPORT int CTR_DRBG_reseed(CTR_DRBG_STATE *drbg,
71
+ const uint8_t entropy[CTR_DRBG_ENTROPY_LEN],
72
+ const uint8_t *additional_data,
73
+ size_t additional_data_len);
74
+
75
+ // CTR_DRBG_generate processes to up |CTR_DRBG_ENTROPY_LEN| bytes of additional
76
+ // data (if any) and then writes |out_len| random bytes to |out|, where
77
+ // |out_len| <= |CTR_DRBG_MAX_GENERATE_LENGTH|. It returns one on success or
78
+ // zero on error.
79
+ OPENSSL_EXPORT int CTR_DRBG_generate(CTR_DRBG_STATE *drbg, uint8_t *out,
80
+ size_t out_len,
81
+ const uint8_t *additional_data,
82
+ size_t additional_data_len);
83
+
84
+ // CTR_DRBG_clear zeroises the state of |drbg|.
85
+ OPENSSL_EXPORT void CTR_DRBG_clear(CTR_DRBG_STATE *drbg);
86
+
87
+
88
+ #if defined(__cplusplus)
89
+ } // extern C
90
+ #endif
91
+
92
+ #endif // OPENSSL_HEADER_CRYPTO_RAND_INTERNAL_H