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,561 +0,0 @@
1
- /* Copyright (c) 2014, Intel Corporation.
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
- /* Developers and authors:
16
- * Shay Gueron (1, 2), and Vlad Krasnov (1)
17
- * (1) Intel Corporation, Israel Development Center
18
- * (2) University of Haifa
19
- * Reference:
20
- * S.Gueron and V.Krasnov, "Fast Prime Field Elliptic Curve Cryptography with
21
- * 256 Bit Primes" */
22
-
23
- #include <openssl/ec.h>
24
-
25
- #include <assert.h>
26
- #include <stdint.h>
27
- #include <string.h>
28
-
29
- #include <openssl/bn.h>
30
- #include <openssl/crypto.h>
31
- #include <openssl/err.h>
32
-
33
- #include "../bn/internal.h"
34
- #include "../internal.h"
35
- #include "internal.h"
36
- #include "p256-x86_64.h"
37
-
38
-
39
- #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && \
40
- !defined(OPENSSL_SMALL)
41
-
42
- typedef P256_POINT_AFFINE PRECOMP256_ROW[64];
43
-
44
- /* One converted into the Montgomery domain */
45
- static const BN_ULONG ONE[P256_LIMBS] = {
46
- TOBN(0x00000000, 0x00000001), TOBN(0xffffffff, 0x00000000),
47
- TOBN(0xffffffff, 0xffffffff), TOBN(0x00000000, 0xfffffffe),
48
- };
49
-
50
- /* Precomputed tables for the default generator */
51
- #include "p256-x86_64-table.h"
52
-
53
- /* Recode window to a signed digit, see util-64.c for details */
54
- static unsigned booth_recode_w5(unsigned in) {
55
- unsigned s, d;
56
-
57
- s = ~((in >> 5) - 1);
58
- d = (1 << 6) - in - 1;
59
- d = (d & s) | (in & ~s);
60
- d = (d >> 1) + (d & 1);
61
-
62
- return (d << 1) + (s & 1);
63
- }
64
-
65
- static unsigned booth_recode_w7(unsigned in) {
66
- unsigned s, d;
67
-
68
- s = ~((in >> 7) - 1);
69
- d = (1 << 8) - in - 1;
70
- d = (d & s) | (in & ~s);
71
- d = (d >> 1) + (d & 1);
72
-
73
- return (d << 1) + (s & 1);
74
- }
75
-
76
- /* copy_conditional copies |src| to |dst| if |move| is one and leaves it as-is
77
- * if |move| is zero.
78
- *
79
- * WARNING: this breaks the usual convention of constant-time functions
80
- * returning masks. */
81
- static void copy_conditional(BN_ULONG dst[P256_LIMBS],
82
- const BN_ULONG src[P256_LIMBS], BN_ULONG move) {
83
- BN_ULONG mask1 = ((BN_ULONG)0) - move;
84
- BN_ULONG mask2 = ~mask1;
85
-
86
- dst[0] = (src[0] & mask1) ^ (dst[0] & mask2);
87
- dst[1] = (src[1] & mask1) ^ (dst[1] & mask2);
88
- dst[2] = (src[2] & mask1) ^ (dst[2] & mask2);
89
- dst[3] = (src[3] & mask1) ^ (dst[3] & mask2);
90
- if (P256_LIMBS == 8) {
91
- dst[4] = (src[4] & mask1) ^ (dst[4] & mask2);
92
- dst[5] = (src[5] & mask1) ^ (dst[5] & mask2);
93
- dst[6] = (src[6] & mask1) ^ (dst[6] & mask2);
94
- dst[7] = (src[7] & mask1) ^ (dst[7] & mask2);
95
- }
96
- }
97
-
98
- /* is_not_zero returns one iff in != 0 and zero otherwise.
99
- *
100
- * WARNING: this breaks the usual convention of constant-time functions
101
- * returning masks.
102
- *
103
- * (define-fun is_not_zero ((in (_ BitVec 64))) (_ BitVec 64)
104
- * (bvlshr (bvor in (bvsub #x0000000000000000 in)) #x000000000000003f)
105
- * )
106
- *
107
- * (declare-fun x () (_ BitVec 64))
108
- *
109
- * (assert (and (= x #x0000000000000000) (= (is_not_zero x) #x0000000000000001)))
110
- * (check-sat)
111
- *
112
- * (assert (and (not (= x #x0000000000000000)) (= (is_not_zero x) #x0000000000000000)))
113
- * (check-sat)
114
- * */
115
- static BN_ULONG is_not_zero(BN_ULONG in) {
116
- in |= (0 - in);
117
- in >>= BN_BITS2 - 1;
118
- return in;
119
- }
120
-
121
- /* ecp_nistz256_mod_inverse_mont sets |r| to (|in| * 2^-256)^-1 * 2^256 mod p.
122
- * That is, |r| is the modular inverse of |in| for input and output in the
123
- * Montgomery domain. */
124
- static void ecp_nistz256_mod_inverse_mont(BN_ULONG r[P256_LIMBS],
125
- const BN_ULONG in[P256_LIMBS]) {
126
- /* The poly is ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff
127
- ffffffff
128
- We use FLT and used poly-2 as exponent */
129
- BN_ULONG p2[P256_LIMBS];
130
- BN_ULONG p4[P256_LIMBS];
131
- BN_ULONG p8[P256_LIMBS];
132
- BN_ULONG p16[P256_LIMBS];
133
- BN_ULONG p32[P256_LIMBS];
134
- BN_ULONG res[P256_LIMBS];
135
- int i;
136
-
137
- ecp_nistz256_sqr_mont(res, in);
138
- ecp_nistz256_mul_mont(p2, res, in); /* 3*p */
139
-
140
- ecp_nistz256_sqr_mont(res, p2);
141
- ecp_nistz256_sqr_mont(res, res);
142
- ecp_nistz256_mul_mont(p4, res, p2); /* f*p */
143
-
144
- ecp_nistz256_sqr_mont(res, p4);
145
- ecp_nistz256_sqr_mont(res, res);
146
- ecp_nistz256_sqr_mont(res, res);
147
- ecp_nistz256_sqr_mont(res, res);
148
- ecp_nistz256_mul_mont(p8, res, p4); /* ff*p */
149
-
150
- ecp_nistz256_sqr_mont(res, p8);
151
- for (i = 0; i < 7; i++) {
152
- ecp_nistz256_sqr_mont(res, res);
153
- }
154
- ecp_nistz256_mul_mont(p16, res, p8); /* ffff*p */
155
-
156
- ecp_nistz256_sqr_mont(res, p16);
157
- for (i = 0; i < 15; i++) {
158
- ecp_nistz256_sqr_mont(res, res);
159
- }
160
- ecp_nistz256_mul_mont(p32, res, p16); /* ffffffff*p */
161
-
162
- ecp_nistz256_sqr_mont(res, p32);
163
- for (i = 0; i < 31; i++) {
164
- ecp_nistz256_sqr_mont(res, res);
165
- }
166
- ecp_nistz256_mul_mont(res, res, in);
167
-
168
- for (i = 0; i < 32 * 4; i++) {
169
- ecp_nistz256_sqr_mont(res, res);
170
- }
171
- ecp_nistz256_mul_mont(res, res, p32);
172
-
173
- for (i = 0; i < 32; i++) {
174
- ecp_nistz256_sqr_mont(res, res);
175
- }
176
- ecp_nistz256_mul_mont(res, res, p32);
177
-
178
- for (i = 0; i < 16; i++) {
179
- ecp_nistz256_sqr_mont(res, res);
180
- }
181
- ecp_nistz256_mul_mont(res, res, p16);
182
-
183
- for (i = 0; i < 8; i++) {
184
- ecp_nistz256_sqr_mont(res, res);
185
- }
186
- ecp_nistz256_mul_mont(res, res, p8);
187
-
188
- ecp_nistz256_sqr_mont(res, res);
189
- ecp_nistz256_sqr_mont(res, res);
190
- ecp_nistz256_sqr_mont(res, res);
191
- ecp_nistz256_sqr_mont(res, res);
192
- ecp_nistz256_mul_mont(res, res, p4);
193
-
194
- ecp_nistz256_sqr_mont(res, res);
195
- ecp_nistz256_sqr_mont(res, res);
196
- ecp_nistz256_mul_mont(res, res, p2);
197
-
198
- ecp_nistz256_sqr_mont(res, res);
199
- ecp_nistz256_sqr_mont(res, res);
200
- ecp_nistz256_mul_mont(r, res, in);
201
- }
202
-
203
- /* ecp_nistz256_bignum_to_field_elem copies the contents of |in| to |out| and
204
- * returns one if it fits. Otherwise it returns zero. */
205
- static int ecp_nistz256_bignum_to_field_elem(BN_ULONG out[P256_LIMBS],
206
- const BIGNUM *in) {
207
- if (in->top > P256_LIMBS) {
208
- return 0;
209
- }
210
-
211
- OPENSSL_memset(out, 0, sizeof(BN_ULONG) * P256_LIMBS);
212
- OPENSSL_memcpy(out, in->d, sizeof(BN_ULONG) * in->top);
213
- return 1;
214
- }
215
-
216
- /* r = p * p_scalar */
217
- static int ecp_nistz256_windowed_mul(const EC_GROUP *group, P256_POINT *r,
218
- const EC_POINT *p, const BIGNUM *p_scalar,
219
- BN_CTX *ctx) {
220
- assert(p != NULL);
221
- assert(p_scalar != NULL);
222
-
223
- static const unsigned kWindowSize = 5;
224
- static const unsigned kMask = (1 << (5 /* kWindowSize */ + 1)) - 1;
225
-
226
- /* A |P256_POINT| is (3 * 32) = 96 bytes, and the 64-byte alignment should
227
- * add no more than 63 bytes of overhead. Thus, |table| should require
228
- * ~1599 ((96 * 16) + 63) bytes of stack space. */
229
- alignas(64) P256_POINT table[16];
230
- uint8_t p_str[33];
231
-
232
-
233
- int ret = 0;
234
- BN_CTX *new_ctx = NULL;
235
- int ctx_started = 0;
236
-
237
- if (BN_num_bits(p_scalar) > 256 || BN_is_negative(p_scalar)) {
238
- if (ctx == NULL) {
239
- new_ctx = BN_CTX_new();
240
- if (new_ctx == NULL) {
241
- OPENSSL_PUT_ERROR(EC, ERR_R_MALLOC_FAILURE);
242
- goto err;
243
- }
244
- ctx = new_ctx;
245
- }
246
- BN_CTX_start(ctx);
247
- ctx_started = 1;
248
- BIGNUM *mod = BN_CTX_get(ctx);
249
- if (mod == NULL) {
250
- OPENSSL_PUT_ERROR(EC, ERR_R_MALLOC_FAILURE);
251
- goto err;
252
- }
253
- if (!BN_nnmod(mod, p_scalar, &group->order, ctx)) {
254
- OPENSSL_PUT_ERROR(EC, ERR_R_BN_LIB);
255
- goto err;
256
- }
257
- p_scalar = mod;
258
- }
259
-
260
- int j;
261
- for (j = 0; j < p_scalar->top * BN_BYTES; j += BN_BYTES) {
262
- BN_ULONG d = p_scalar->d[j / BN_BYTES];
263
-
264
- p_str[j + 0] = d & 0xff;
265
- p_str[j + 1] = (d >> 8) & 0xff;
266
- p_str[j + 2] = (d >> 16) & 0xff;
267
- p_str[j + 3] = (d >>= 24) & 0xff;
268
- if (BN_BYTES == 8) {
269
- d >>= 8;
270
- p_str[j + 4] = d & 0xff;
271
- p_str[j + 5] = (d >> 8) & 0xff;
272
- p_str[j + 6] = (d >> 16) & 0xff;
273
- p_str[j + 7] = (d >> 24) & 0xff;
274
- }
275
- }
276
-
277
- for (; j < 33; j++) {
278
- p_str[j] = 0;
279
- }
280
-
281
- /* table[0] is implicitly (0,0,0) (the point at infinity), therefore it is
282
- * not stored. All other values are actually stored with an offset of -1 in
283
- * table. */
284
- P256_POINT *row = table;
285
-
286
- if (!ecp_nistz256_bignum_to_field_elem(row[1 - 1].X, &p->X) ||
287
- !ecp_nistz256_bignum_to_field_elem(row[1 - 1].Y, &p->Y) ||
288
- !ecp_nistz256_bignum_to_field_elem(row[1 - 1].Z, &p->Z)) {
289
- OPENSSL_PUT_ERROR(EC, EC_R_COORDINATES_OUT_OF_RANGE);
290
- goto err;
291
- }
292
-
293
- ecp_nistz256_point_double(&row[2 - 1], &row[1 - 1]);
294
- ecp_nistz256_point_add(&row[3 - 1], &row[2 - 1], &row[1 - 1]);
295
- ecp_nistz256_point_double(&row[4 - 1], &row[2 - 1]);
296
- ecp_nistz256_point_double(&row[6 - 1], &row[3 - 1]);
297
- ecp_nistz256_point_double(&row[8 - 1], &row[4 - 1]);
298
- ecp_nistz256_point_double(&row[12 - 1], &row[6 - 1]);
299
- ecp_nistz256_point_add(&row[5 - 1], &row[4 - 1], &row[1 - 1]);
300
- ecp_nistz256_point_add(&row[7 - 1], &row[6 - 1], &row[1 - 1]);
301
- ecp_nistz256_point_add(&row[9 - 1], &row[8 - 1], &row[1 - 1]);
302
- ecp_nistz256_point_add(&row[13 - 1], &row[12 - 1], &row[1 - 1]);
303
- ecp_nistz256_point_double(&row[14 - 1], &row[7 - 1]);
304
- ecp_nistz256_point_double(&row[10 - 1], &row[5 - 1]);
305
- ecp_nistz256_point_add(&row[15 - 1], &row[14 - 1], &row[1 - 1]);
306
- ecp_nistz256_point_add(&row[11 - 1], &row[10 - 1], &row[1 - 1]);
307
- ecp_nistz256_point_double(&row[16 - 1], &row[8 - 1]);
308
-
309
- BN_ULONG tmp[P256_LIMBS];
310
- alignas(32) P256_POINT h;
311
- unsigned index = 255;
312
- unsigned wvalue = p_str[(index - 1) / 8];
313
- wvalue = (wvalue >> ((index - 1) % 8)) & kMask;
314
-
315
- ecp_nistz256_select_w5(r, table, booth_recode_w5(wvalue) >> 1);
316
-
317
- while (index >= 5) {
318
- if (index != 255) {
319
- unsigned off = (index - 1) / 8;
320
-
321
- wvalue = p_str[off] | p_str[off + 1] << 8;
322
- wvalue = (wvalue >> ((index - 1) % 8)) & kMask;
323
-
324
- wvalue = booth_recode_w5(wvalue);
325
-
326
- ecp_nistz256_select_w5(&h, table, wvalue >> 1);
327
-
328
- ecp_nistz256_neg(tmp, h.Y);
329
- copy_conditional(h.Y, tmp, (wvalue & 1));
330
-
331
- ecp_nistz256_point_add(r, r, &h);
332
- }
333
-
334
- index -= kWindowSize;
335
-
336
- ecp_nistz256_point_double(r, r);
337
- ecp_nistz256_point_double(r, r);
338
- ecp_nistz256_point_double(r, r);
339
- ecp_nistz256_point_double(r, r);
340
- ecp_nistz256_point_double(r, r);
341
- }
342
-
343
- /* Final window */
344
- wvalue = p_str[0];
345
- wvalue = (wvalue << 1) & kMask;
346
-
347
- wvalue = booth_recode_w5(wvalue);
348
-
349
- ecp_nistz256_select_w5(&h, table, wvalue >> 1);
350
-
351
- ecp_nistz256_neg(tmp, h.Y);
352
- copy_conditional(h.Y, tmp, wvalue & 1);
353
-
354
- ecp_nistz256_point_add(r, r, &h);
355
-
356
- ret = 1;
357
-
358
- err:
359
- if (ctx_started) {
360
- BN_CTX_end(ctx);
361
- }
362
- BN_CTX_free(new_ctx);
363
- return ret;
364
- }
365
-
366
- static int ecp_nistz256_points_mul(
367
- const EC_GROUP *group, EC_POINT *r, const BIGNUM *g_scalar,
368
- const EC_POINT *p_, const BIGNUM *p_scalar, BN_CTX *ctx) {
369
- assert((p_ != NULL) == (p_scalar != NULL));
370
-
371
- static const unsigned kWindowSize = 7;
372
- static const unsigned kMask = (1 << (7 /* kWindowSize */ + 1)) - 1;
373
-
374
- alignas(32) union {
375
- P256_POINT p;
376
- P256_POINT_AFFINE a;
377
- } t, p;
378
-
379
- int ret = 0;
380
- BN_CTX *new_ctx = NULL;
381
- int ctx_started = 0;
382
-
383
- if (g_scalar != NULL) {
384
- if (BN_num_bits(g_scalar) > 256 || BN_is_negative(g_scalar)) {
385
- if (ctx == NULL) {
386
- new_ctx = BN_CTX_new();
387
- if (new_ctx == NULL) {
388
- goto err;
389
- }
390
- ctx = new_ctx;
391
- }
392
- BN_CTX_start(ctx);
393
- ctx_started = 1;
394
- BIGNUM *tmp_scalar = BN_CTX_get(ctx);
395
- if (tmp_scalar == NULL) {
396
- goto err;
397
- }
398
-
399
- if (!BN_nnmod(tmp_scalar, g_scalar, &group->order, ctx)) {
400
- OPENSSL_PUT_ERROR(EC, ERR_R_BN_LIB);
401
- goto err;
402
- }
403
- g_scalar = tmp_scalar;
404
- }
405
-
406
- uint8_t p_str[33] = {0};
407
- int i;
408
- for (i = 0; i < g_scalar->top * BN_BYTES; i += BN_BYTES) {
409
- BN_ULONG d = g_scalar->d[i / BN_BYTES];
410
-
411
- p_str[i + 0] = d & 0xff;
412
- p_str[i + 1] = (d >> 8) & 0xff;
413
- p_str[i + 2] = (d >> 16) & 0xff;
414
- p_str[i + 3] = (d >>= 24) & 0xff;
415
- if (BN_BYTES == 8) {
416
- d >>= 8;
417
- p_str[i + 4] = d & 0xff;
418
- p_str[i + 5] = (d >> 8) & 0xff;
419
- p_str[i + 6] = (d >> 16) & 0xff;
420
- p_str[i + 7] = (d >> 24) & 0xff;
421
- }
422
- }
423
-
424
- for (; i < (int) sizeof(p_str); i++) {
425
- p_str[i] = 0;
426
- }
427
-
428
- /* First window */
429
- unsigned wvalue = (p_str[0] << 1) & kMask;
430
- unsigned index = kWindowSize;
431
-
432
- wvalue = booth_recode_w7(wvalue);
433
-
434
- const PRECOMP256_ROW *const precomputed_table =
435
- (const PRECOMP256_ROW *)ecp_nistz256_precomputed;
436
- ecp_nistz256_select_w7(&p.a, precomputed_table[0], wvalue >> 1);
437
-
438
- ecp_nistz256_neg(p.p.Z, p.p.Y);
439
- copy_conditional(p.p.Y, p.p.Z, wvalue & 1);
440
-
441
- /* Convert |p| from affine to Jacobian coordinates. We set Z to zero if |p|
442
- * is infinity and |ONE| otherwise. |p| was computed from the table, so it
443
- * is infinity iff |wvalue >> 1| is zero. */
444
- OPENSSL_memset(p.p.Z, 0, sizeof(p.p.Z));
445
- copy_conditional(p.p.Z, ONE, is_not_zero(wvalue >> 1));
446
-
447
- for (i = 1; i < 37; i++) {
448
- unsigned off = (index - 1) / 8;
449
- wvalue = p_str[off] | p_str[off + 1] << 8;
450
- wvalue = (wvalue >> ((index - 1) % 8)) & kMask;
451
- index += kWindowSize;
452
-
453
- wvalue = booth_recode_w7(wvalue);
454
-
455
- ecp_nistz256_select_w7(&t.a, precomputed_table[i], wvalue >> 1);
456
-
457
- ecp_nistz256_neg(t.p.Z, t.a.Y);
458
- copy_conditional(t.a.Y, t.p.Z, wvalue & 1);
459
-
460
- ecp_nistz256_point_add_affine(&p.p, &p.p, &t.a);
461
- }
462
- }
463
-
464
- const int p_is_infinity = g_scalar == NULL;
465
- if (p_scalar != NULL) {
466
- P256_POINT *out = &t.p;
467
- if (p_is_infinity) {
468
- out = &p.p;
469
- }
470
-
471
- if (!ecp_nistz256_windowed_mul(group, out, p_, p_scalar, ctx)) {
472
- goto err;
473
- }
474
-
475
- if (!p_is_infinity) {
476
- ecp_nistz256_point_add(&p.p, &p.p, out);
477
- }
478
- }
479
-
480
- /* Not constant-time, but we're only operating on the public output. */
481
- if (!bn_set_words(&r->X, p.p.X, P256_LIMBS) ||
482
- !bn_set_words(&r->Y, p.p.Y, P256_LIMBS) ||
483
- !bn_set_words(&r->Z, p.p.Z, P256_LIMBS)) {
484
- return 0;
485
- }
486
-
487
- ret = 1;
488
-
489
- err:
490
- if (ctx_started) {
491
- BN_CTX_end(ctx);
492
- }
493
- BN_CTX_free(new_ctx);
494
- return ret;
495
- }
496
-
497
- static int ecp_nistz256_get_affine(const EC_GROUP *group, const EC_POINT *point,
498
- BIGNUM *x, BIGNUM *y, BN_CTX *ctx) {
499
- BN_ULONG z_inv2[P256_LIMBS];
500
- BN_ULONG z_inv3[P256_LIMBS];
501
- BN_ULONG point_x[P256_LIMBS], point_y[P256_LIMBS], point_z[P256_LIMBS];
502
-
503
- if (EC_POINT_is_at_infinity(group, point)) {
504
- OPENSSL_PUT_ERROR(EC, EC_R_POINT_AT_INFINITY);
505
- return 0;
506
- }
507
-
508
- if (!ecp_nistz256_bignum_to_field_elem(point_x, &point->X) ||
509
- !ecp_nistz256_bignum_to_field_elem(point_y, &point->Y) ||
510
- !ecp_nistz256_bignum_to_field_elem(point_z, &point->Z)) {
511
- OPENSSL_PUT_ERROR(EC, EC_R_COORDINATES_OUT_OF_RANGE);
512
- return 0;
513
- }
514
-
515
- ecp_nistz256_mod_inverse_mont(z_inv3, point_z);
516
- ecp_nistz256_sqr_mont(z_inv2, z_inv3);
517
-
518
- /* Instead of using |ecp_nistz256_from_mont| to convert the |x| coordinate
519
- * and then calling |ecp_nistz256_from_mont| again to convert the |y|
520
- * coordinate below, convert the common factor |z_inv2| once now, saving one
521
- * reduction. */
522
- ecp_nistz256_from_mont(z_inv2, z_inv2);
523
-
524
- if (x != NULL) {
525
- BN_ULONG x_aff[P256_LIMBS];
526
- ecp_nistz256_mul_mont(x_aff, z_inv2, point_x);
527
- if (!bn_set_words(x, x_aff, P256_LIMBS)) {
528
- OPENSSL_PUT_ERROR(EC, ERR_R_MALLOC_FAILURE);
529
- return 0;
530
- }
531
- }
532
-
533
- if (y != NULL) {
534
- BN_ULONG y_aff[P256_LIMBS];
535
- ecp_nistz256_mul_mont(z_inv3, z_inv3, z_inv2);
536
- ecp_nistz256_mul_mont(y_aff, z_inv3, point_y);
537
- if (!bn_set_words(y, y_aff, P256_LIMBS)) {
538
- OPENSSL_PUT_ERROR(EC, ERR_R_MALLOC_FAILURE);
539
- return 0;
540
- }
541
- }
542
-
543
- return 1;
544
- }
545
-
546
-
547
- const EC_METHOD EC_GFp_nistz256_method = {
548
- ec_GFp_mont_group_init,
549
- ec_GFp_mont_group_finish,
550
- ec_GFp_mont_group_copy,
551
- ec_GFp_mont_group_set_curve,
552
- ecp_nistz256_get_affine,
553
- ecp_nistz256_points_mul,
554
- ec_GFp_mont_field_mul,
555
- ec_GFp_mont_field_sqr,
556
- ec_GFp_mont_field_encode,
557
- ec_GFp_mont_field_decode,
558
- };
559
-
560
- #endif /* !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && \
561
- !defined(OPENSSL_SMALL) */