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
@@ -22,19 +22,17 @@
22
22
 
23
23
 
24
24
  #if !defined(PPC_FEATURE2_HAS_VCRYPTO)
25
- /* PPC_FEATURE2_HAS_VCRYPTO was taken from section 4.1.2.3 of the “OpenPOWER
26
- * ABI for Linux Supplement”. */
25
+ // PPC_FEATURE2_HAS_VCRYPTO was taken from section 4.1.2.3 of the “OpenPOWER
26
+ // ABI for Linux Supplement”.
27
27
  #define PPC_FEATURE2_HAS_VCRYPTO 0x02000000
28
28
  #endif
29
29
 
30
- static unsigned long g_ppc64le_hwcap2 = 0;
31
-
32
30
  void OPENSSL_cpuid_setup(void) {
33
- g_ppc64le_hwcap2 = getauxval(AT_HWCAP2);
31
+ OPENSSL_ppc64le_hwcap2 = getauxval(AT_HWCAP2);
34
32
  }
35
33
 
36
34
  int CRYPTO_is_PPC64LE_vcrypto_capable(void) {
37
- return (g_ppc64le_hwcap2 & PPC_FEATURE2_HAS_VCRYPTO) != 0;
35
+ return (OPENSSL_ppc64le_hwcap2 & PPC_FEATURE2_HAS_VCRYPTO) != 0;
38
36
  }
39
37
 
40
- #endif /* OPENSSL_PPC64LE */
38
+ #endif // OPENSSL_PPC64LE
@@ -23,14 +23,14 @@
23
23
  (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
24
24
  defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) || \
25
25
  defined(OPENSSL_PPC64LE))
26
- /* x86, x86_64, the ARMs and ppc64le need to record the result of a
27
- * cpuid/getauxval call for the asm to work correctly, unless compiled without
28
- * asm code. */
26
+ // x86, x86_64, the ARMs and ppc64le need to record the result of a
27
+ // cpuid/getauxval call for the asm to work correctly, unless compiled without
28
+ // asm code.
29
29
  #define NEED_CPUID
30
30
 
31
31
  #else
32
32
 
33
- /* Otherwise, don't emit a static initialiser. */
33
+ // Otherwise, don't emit a static initialiser.
34
34
 
35
35
  #if !defined(BORINGSSL_NO_STATIC_INITIALIZER)
36
36
  #define BORINGSSL_NO_STATIC_INITIALIZER
@@ -40,23 +40,29 @@
40
40
  OPENSSL_ARM || OPENSSL_AARCH64) */
41
41
 
42
42
 
43
- /* The capability variables are defined in this file in order to work around a
44
- * linker bug. When linking with a .a, if no symbols in a .o are referenced
45
- * then the .o is discarded, even if it has constructor functions.
46
- *
47
- * This still means that any binaries that don't include some functionality
48
- * that tests the capability values will still skip the constructor but, so
49
- * far, the init constructor function only sets the capability variables. */
43
+ // The capability variables are defined in this file in order to work around a
44
+ // linker bug. When linking with a .a, if no symbols in a .o are referenced
45
+ // then the .o is discarded, even if it has constructor functions.
46
+ //
47
+ // This still means that any binaries that don't include some functionality
48
+ // that tests the capability values will still skip the constructor but, so
49
+ // far, the init constructor function only sets the capability variables.
50
50
 
51
51
  #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64)
52
- /* This value must be explicitly initialised to zero in order to work around a
53
- * bug in libtool or the linker on OS X.
54
- *
55
- * If not initialised then it becomes a "common symbol". When put into an
56
- * archive, linking on OS X will fail to resolve common symbols. By
57
- * initialising it to zero, it becomes a "data symbol", which isn't so
58
- * affected. */
52
+
53
+ // This value must be explicitly initialised to zero in order to work around a
54
+ // bug in libtool or the linker on OS X.
55
+ //
56
+ // If not initialised then it becomes a "common symbol". When put into an
57
+ // archive, linking on OS X will fail to resolve common symbols. By
58
+ // initialising it to zero, it becomes a "data symbol", which isn't so
59
+ // affected.
59
60
  uint32_t OPENSSL_ia32cap_P[4] = {0};
61
+
62
+ #elif defined(OPENSSL_PPC64LE)
63
+
64
+ unsigned long OPENSSL_ppc64le_hwcap2 = 0;
65
+
60
66
  #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
61
67
 
62
68
  #include <openssl/arm_arch.h>
@@ -67,16 +73,16 @@ uint32_t OPENSSL_armcap_P =
67
73
  #if defined(OPENSSL_STATIC_ARMCAP_NEON) || defined(__ARM_NEON__)
68
74
  ARMV7_NEON |
69
75
  #endif
70
- #if defined(OPENSSL_STATIC_ARMCAP_AES)
76
+ #if defined(OPENSSL_STATIC_ARMCAP_AES) || defined(__ARM_FEATURE_CRYPTO)
71
77
  ARMV8_AES |
72
78
  #endif
73
- #if defined(OPENSSL_STATIC_ARMCAP_SHA1)
79
+ #if defined(OPENSSL_STATIC_ARMCAP_SHA1) || defined(__ARM_FEATURE_CRYPTO)
74
80
  ARMV8_SHA1 |
75
81
  #endif
76
- #if defined(OPENSSL_STATIC_ARMCAP_SHA256)
82
+ #if defined(OPENSSL_STATIC_ARMCAP_SHA256) || defined(__ARM_FEATURE_CRYPTO)
77
83
  ARMV8_SHA256 |
78
84
  #endif
79
- #if defined(OPENSSL_STATIC_ARMCAP_PMULL)
85
+ #if defined(OPENSSL_STATIC_ARMCAP_PMULL) || defined(__ARM_FEATURE_CRYPTO)
80
86
  ARMV8_PMULL |
81
87
  #endif
82
88
  0;
@@ -87,6 +93,11 @@ uint32_t OPENSSL_armcap_P = 0;
87
93
 
88
94
  #endif
89
95
 
96
+ #if defined(BORINGSSL_FIPS)
97
+ // In FIPS mode, the power-on self-test function calls |CRYPTO_library_init|
98
+ // because we have to ensure that CPUID detection occurs first.
99
+ #define BORINGSSL_NO_STATIC_INITIALIZER
100
+ #endif
90
101
 
91
102
  #if defined(OPENSSL_WINDOWS) && !defined(BORINGSSL_NO_STATIC_INITIALIZER)
92
103
  #define OPENSSL_CDECL __cdecl
@@ -96,7 +107,7 @@ uint32_t OPENSSL_armcap_P = 0;
96
107
 
97
108
  #if defined(BORINGSSL_NO_STATIC_INITIALIZER)
98
109
  static CRYPTO_once_t once = CRYPTO_ONCE_INIT;
99
- #elif defined(OPENSSL_WINDOWS)
110
+ #elif defined(_MSC_VER)
100
111
  #pragma section(".CRT$XCU", read)
101
112
  static void __cdecl do_library_init(void);
102
113
  __declspec(allocate(".CRT$XCU")) void(*library_init_constructor)(void) =
@@ -105,21 +116,21 @@ __declspec(allocate(".CRT$XCU")) void(*library_init_constructor)(void) =
105
116
  static void do_library_init(void) __attribute__ ((constructor));
106
117
  #endif
107
118
 
108
- /* do_library_init is the actual initialization function. If
109
- * BORINGSSL_NO_STATIC_INITIALIZER isn't defined, this is set as a static
110
- * initializer. Otherwise, it is called by CRYPTO_library_init. */
119
+ // do_library_init is the actual initialization function. If
120
+ // BORINGSSL_NO_STATIC_INITIALIZER isn't defined, this is set as a static
121
+ // initializer. Otherwise, it is called by CRYPTO_library_init.
111
122
  static void OPENSSL_CDECL do_library_init(void) {
112
- /* WARNING: this function may only configure the capability variables. See the
113
- * note above about the linker bug. */
123
+ // WARNING: this function may only configure the capability variables. See the
124
+ // note above about the linker bug.
114
125
  #if defined(NEED_CPUID)
115
126
  OPENSSL_cpuid_setup();
116
127
  #endif
117
128
  }
118
129
 
119
130
  void CRYPTO_library_init(void) {
120
- /* TODO(davidben): It would be tidier if this build knob could be replaced
121
- * with an internal lazy-init mechanism that would handle things correctly
122
- * in-library. https://crbug.com/542879 */
131
+ // TODO(davidben): It would be tidier if this build knob could be replaced
132
+ // with an internal lazy-init mechanism that would handle things correctly
133
+ // in-library. https://crbug.com/542879
123
134
  #if defined(BORINGSSL_NO_STATIC_INITIALIZER)
124
135
  CRYPTO_once(&once, do_library_init);
125
136
  #endif
@@ -145,10 +156,18 @@ const char *SSLeay_version(int unused) {
145
156
  return "BoringSSL";
146
157
  }
147
158
 
159
+ const char *OpenSSL_version(int unused) {
160
+ return "BoringSSL";
161
+ }
162
+
148
163
  unsigned long SSLeay(void) {
149
164
  return OPENSSL_VERSION_NUMBER;
150
165
  }
151
166
 
167
+ unsigned long OpenSSL_version_num(void) {
168
+ return OPENSSL_VERSION_NUMBER;
169
+ }
170
+
152
171
  int CRYPTO_malloc_init(void) {
153
172
  return 1;
154
173
  }
@@ -161,4 +180,7 @@ int ENGINE_register_all_complete(void) {
161
180
 
162
181
  void OPENSSL_load_builtin_modules(void) {}
163
182
 
164
- int FIPS_mode(void) { return 0; }
183
+ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) {
184
+ CRYPTO_library_init();
185
+ return 1;
186
+ }
@@ -12,12 +12,12 @@
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
- /* This code is mostly taken from the ref10 version of Ed25519 in SUPERCOP
16
- * 20141124 (http://bench.cr.yp.to/supercop.html). That code is released as
17
- * public domain but this file has the ISC license just to keep licencing
18
- * simple.
19
- *
20
- * The field functions are shared by Ed25519 and X25519 where possible. */
15
+ // This code is mostly taken from the ref10 version of Ed25519 in SUPERCOP
16
+ // 20141124 (http://bench.cr.yp.to/supercop.html). That code is released as
17
+ // public domain but this file has the ISC license just to keep licencing
18
+ // simple.
19
+ //
20
+ // The field functions are shared by Ed25519 and X25519 where possible.
21
21
 
22
22
  #include <openssl/curve25519.h>
23
23
 
@@ -55,7 +55,7 @@ static uint64_t load_4(const uint8_t *in) {
55
55
  }
56
56
 
57
57
  static void fe_frombytes(fe h, const uint8_t *s) {
58
- /* Ignores top bit of h. */
58
+ // Ignores top bit of h.
59
59
  int64_t h0 = load_4(s);
60
60
  int64_t h1 = load_3(s + 4) << 6;
61
61
  int64_t h2 = load_3(s + 7) << 5;
@@ -101,28 +101,28 @@ static void fe_frombytes(fe h, const uint8_t *s) {
101
101
  h[9] = h9;
102
102
  }
103
103
 
104
- /* Preconditions:
105
- * |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
106
- *
107
- * Write p=2^255-19; q=floor(h/p).
108
- * Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))).
109
- *
110
- * Proof:
111
- * Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4.
112
- * Also have |h-2^230 h9|<2^231 so |19 2^(-255)(h-2^230 h9)|<1/4.
113
- *
114
- * Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9).
115
- * Then 0<y<1.
116
- *
117
- * Write r=h-pq.
118
- * Have 0<=r<=p-1=2^255-20.
119
- * Thus 0<=r+19(2^-255)r<r+19(2^-255)2^255<=2^255-1.
120
- *
121
- * Write x=r+19(2^-255)r+y.
122
- * Then 0<x<2^255 so floor(2^(-255)x) = 0 so floor(q+2^(-255)x) = q.
123
- *
124
- * Have q+2^(-255)x = 2^(-255)(h + 19 2^(-25) h9 + 2^(-1))
125
- * so floor(2^(-255)(h + 19 2^(-25) h9 + 2^(-1))) = q. */
104
+ // Preconditions:
105
+ // |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
106
+ //
107
+ // Write p=2^255-19; q=floor(h/p).
108
+ // Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))).
109
+ //
110
+ // Proof:
111
+ // Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4.
112
+ // Also have |h-2^230 h9|<2^231 so |19 2^(-255)(h-2^230 h9)|<1/4.
113
+ //
114
+ // Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9).
115
+ // Then 0<y<1.
116
+ //
117
+ // Write r=h-pq.
118
+ // Have 0<=r<=p-1=2^255-20.
119
+ // Thus 0<=r+19(2^-255)r<r+19(2^-255)2^255<=2^255-1.
120
+ //
121
+ // Write x=r+19(2^-255)r+y.
122
+ // Then 0<x<2^255 so floor(2^(-255)x) = 0 so floor(q+2^(-255)x) = q.
123
+ //
124
+ // Have q+2^(-255)x = 2^(-255)(h + 19 2^(-25) h9 + 2^(-1))
125
+ // so floor(2^(-255)(h + 19 2^(-25) h9 + 2^(-1))) = q.
126
126
  static void fe_tobytes(uint8_t *s, const fe h) {
127
127
  int32_t h0 = h[0];
128
128
  int32_t h1 = h[1];
@@ -148,9 +148,9 @@ static void fe_tobytes(uint8_t *s, const fe h) {
148
148
  q = (h8 + q) >> 26;
149
149
  q = (h9 + q) >> 25;
150
150
 
151
- /* Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. */
151
+ // Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20.
152
152
  h0 += 19 * q;
153
- /* Goal: Output h-2^255 q, which is between 0 and 2^255-20. */
153
+ // Goal: Output h-2^255 q, which is between 0 and 2^255-20.
154
154
 
155
155
  h1 += h0 >> 26; h0 &= kBottom26Bits;
156
156
  h2 += h1 >> 25; h1 &= kBottom25Bits;
@@ -162,12 +162,12 @@ static void fe_tobytes(uint8_t *s, const fe h) {
162
162
  h8 += h7 >> 25; h7 &= kBottom25Bits;
163
163
  h9 += h8 >> 26; h8 &= kBottom26Bits;
164
164
  h9 &= kBottom25Bits;
165
- /* h10 = carry9 */
165
+ // h10 = carry9
166
166
 
167
- /* Goal: Output h0+...+2^255 h10-2^255 q, which is between 0 and 2^255-20.
168
- * Have h0+...+2^230 h9 between 0 and 2^255-1;
169
- * evidently 2^255 h10-2^255 q = 0.
170
- * Goal: Output h0+...+2^230 h9. */
167
+ // Goal: Output h0+...+2^255 h10-2^255 q, which is between 0 and 2^255-20.
168
+ // Have h0+...+2^230 h9 between 0 and 2^255-1;
169
+ // evidently 2^255 h10-2^255 q = 0.
170
+ // Goal: Output h0+...+2^230 h9.
171
171
 
172
172
  s[0] = h0 >> 0;
173
173
  s[1] = h0 >> 8;
@@ -203,29 +203,29 @@ static void fe_tobytes(uint8_t *s, const fe h) {
203
203
  s[31] = h9 >> 18;
204
204
  }
205
205
 
206
- /* h = f */
206
+ // h = f
207
207
  static void fe_copy(fe h, const fe f) {
208
208
  OPENSSL_memmove(h, f, sizeof(int32_t) * 10);
209
209
  }
210
210
 
211
- /* h = 0 */
211
+ // h = 0
212
212
  static void fe_0(fe h) { OPENSSL_memset(h, 0, sizeof(int32_t) * 10); }
213
213
 
214
- /* h = 1 */
214
+ // h = 1
215
215
  static void fe_1(fe h) {
216
216
  OPENSSL_memset(h, 0, sizeof(int32_t) * 10);
217
217
  h[0] = 1;
218
218
  }
219
219
 
220
- /* h = f + g
221
- * Can overlap h with f or g.
222
- *
223
- * Preconditions:
224
- * |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
225
- * |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
226
- *
227
- * Postconditions:
228
- * |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. */
220
+ // h = f + g
221
+ // Can overlap h with f or g.
222
+ //
223
+ // Preconditions:
224
+ // |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
225
+ // |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
226
+ //
227
+ // Postconditions:
228
+ // |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
229
229
  static void fe_add(fe h, const fe f, const fe g) {
230
230
  unsigned i;
231
231
  for (i = 0; i < 10; i++) {
@@ -233,15 +233,15 @@ static void fe_add(fe h, const fe f, const fe g) {
233
233
  }
234
234
  }
235
235
 
236
- /* h = f - g
237
- * Can overlap h with f or g.
238
- *
239
- * Preconditions:
240
- * |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
241
- * |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
242
- *
243
- * Postconditions:
244
- * |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. */
236
+ // h = f - g
237
+ // Can overlap h with f or g.
238
+ //
239
+ // Preconditions:
240
+ // |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
241
+ // |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
242
+ //
243
+ // Postconditions:
244
+ // |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
245
245
  static void fe_sub(fe h, const fe f, const fe g) {
246
246
  unsigned i;
247
247
  for (i = 0; i < 10; i++) {
@@ -249,33 +249,33 @@ static void fe_sub(fe h, const fe f, const fe g) {
249
249
  }
250
250
  }
251
251
 
252
- /* h = f * g
253
- * Can overlap h with f or g.
254
- *
255
- * Preconditions:
256
- * |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.
257
- * |g| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.
258
- *
259
- * Postconditions:
260
- * |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.
261
- *
262
- * Notes on implementation strategy:
263
- *
264
- * Using schoolbook multiplication.
265
- * Karatsuba would save a little in some cost models.
266
- *
267
- * Most multiplications by 2 and 19 are 32-bit precomputations;
268
- * cheaper than 64-bit postcomputations.
269
- *
270
- * There is one remaining multiplication by 19 in the carry chain;
271
- * one *19 precomputation can be merged into this,
272
- * but the resulting data flow is considerably less clean.
273
- *
274
- * There are 12 carries below.
275
- * 10 of them are 2-way parallelizable and vectorizable.
276
- * Can get away with 11 carries, but then data flow is much deeper.
277
- *
278
- * With tighter constraints on inputs can squeeze carries into int32. */
252
+ // h = f * g
253
+ // Can overlap h with f or g.
254
+ //
255
+ // Preconditions:
256
+ // |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.
257
+ // |g| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.
258
+ //
259
+ // Postconditions:
260
+ // |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.
261
+ //
262
+ // Notes on implementation strategy:
263
+ //
264
+ // Using schoolbook multiplication.
265
+ // Karatsuba would save a little in some cost models.
266
+ //
267
+ // Most multiplications by 2 and 19 are 32-bit precomputations;
268
+ // cheaper than 64-bit postcomputations.
269
+ //
270
+ // There is one remaining multiplication by 19 in the carry chain;
271
+ // one *19 precomputation can be merged into this,
272
+ // but the resulting data flow is considerably less clean.
273
+ //
274
+ // There are 12 carries below.
275
+ // 10 of them are 2-way parallelizable and vectorizable.
276
+ // Can get away with 11 carries, but then data flow is much deeper.
277
+ //
278
+ // With tighter constraints on inputs can squeeze carries into int32.
279
279
  static void fe_mul(fe h, const fe f, const fe g) {
280
280
  int32_t f0 = f[0];
281
281
  int32_t f1 = f[1];
@@ -297,8 +297,8 @@ static void fe_mul(fe h, const fe f, const fe g) {
297
297
  int32_t g7 = g[7];
298
298
  int32_t g8 = g[8];
299
299
  int32_t g9 = g[9];
300
- int32_t g1_19 = 19 * g1; /* 1.959375*2^29 */
301
- int32_t g2_19 = 19 * g2; /* 1.959375*2^30; still ok */
300
+ int32_t g1_19 = 19 * g1; // 1.959375*2^29
301
+ int32_t g2_19 = 19 * g2; // 1.959375*2^30; still ok
302
302
  int32_t g3_19 = 19 * g3;
303
303
  int32_t g4_19 = 19 * g4;
304
304
  int32_t g5_19 = 19 * g5;
@@ -432,53 +432,53 @@ static void fe_mul(fe h, const fe f, const fe g) {
432
432
  int64_t carry8;
433
433
  int64_t carry9;
434
434
 
435
- /* |h0| <= (1.65*1.65*2^52*(1+19+19+19+19)+1.65*1.65*2^50*(38+38+38+38+38))
436
- * i.e. |h0| <= 1.4*2^60; narrower ranges for h2, h4, h6, h8
437
- * |h1| <= (1.65*1.65*2^51*(1+1+19+19+19+19+19+19+19+19))
438
- * i.e. |h1| <= 1.7*2^59; narrower ranges for h3, h5, h7, h9 */
435
+ // |h0| <= (1.65*1.65*2^52*(1+19+19+19+19)+1.65*1.65*2^50*(38+38+38+38+38))
436
+ // i.e. |h0| <= 1.4*2^60; narrower ranges for h2, h4, h6, h8
437
+ // |h1| <= (1.65*1.65*2^51*(1+1+19+19+19+19+19+19+19+19))
438
+ // i.e. |h1| <= 1.7*2^59; narrower ranges for h3, h5, h7, h9
439
439
 
440
440
  carry0 = h0 + (1 << 25); h1 += carry0 >> 26; h0 -= carry0 & kTop38Bits;
441
441
  carry4 = h4 + (1 << 25); h5 += carry4 >> 26; h4 -= carry4 & kTop38Bits;
442
- /* |h0| <= 2^25 */
443
- /* |h4| <= 2^25 */
444
- /* |h1| <= 1.71*2^59 */
445
- /* |h5| <= 1.71*2^59 */
442
+ // |h0| <= 2^25
443
+ // |h4| <= 2^25
444
+ // |h1| <= 1.71*2^59
445
+ // |h5| <= 1.71*2^59
446
446
 
447
447
  carry1 = h1 + (1 << 24); h2 += carry1 >> 25; h1 -= carry1 & kTop39Bits;
448
448
  carry5 = h5 + (1 << 24); h6 += carry5 >> 25; h5 -= carry5 & kTop39Bits;
449
- /* |h1| <= 2^24; from now on fits into int32 */
450
- /* |h5| <= 2^24; from now on fits into int32 */
451
- /* |h2| <= 1.41*2^60 */
452
- /* |h6| <= 1.41*2^60 */
449
+ // |h1| <= 2^24; from now on fits into int32
450
+ // |h5| <= 2^24; from now on fits into int32
451
+ // |h2| <= 1.41*2^60
452
+ // |h6| <= 1.41*2^60
453
453
 
454
454
  carry2 = h2 + (1 << 25); h3 += carry2 >> 26; h2 -= carry2 & kTop38Bits;
455
455
  carry6 = h6 + (1 << 25); h7 += carry6 >> 26; h6 -= carry6 & kTop38Bits;
456
- /* |h2| <= 2^25; from now on fits into int32 unchanged */
457
- /* |h6| <= 2^25; from now on fits into int32 unchanged */
458
- /* |h3| <= 1.71*2^59 */
459
- /* |h7| <= 1.71*2^59 */
456
+ // |h2| <= 2^25; from now on fits into int32 unchanged
457
+ // |h6| <= 2^25; from now on fits into int32 unchanged
458
+ // |h3| <= 1.71*2^59
459
+ // |h7| <= 1.71*2^59
460
460
 
461
461
  carry3 = h3 + (1 << 24); h4 += carry3 >> 25; h3 -= carry3 & kTop39Bits;
462
462
  carry7 = h7 + (1 << 24); h8 += carry7 >> 25; h7 -= carry7 & kTop39Bits;
463
- /* |h3| <= 2^24; from now on fits into int32 unchanged */
464
- /* |h7| <= 2^24; from now on fits into int32 unchanged */
465
- /* |h4| <= 1.72*2^34 */
466
- /* |h8| <= 1.41*2^60 */
463
+ // |h3| <= 2^24; from now on fits into int32 unchanged
464
+ // |h7| <= 2^24; from now on fits into int32 unchanged
465
+ // |h4| <= 1.72*2^34
466
+ // |h8| <= 1.41*2^60
467
467
 
468
468
  carry4 = h4 + (1 << 25); h5 += carry4 >> 26; h4 -= carry4 & kTop38Bits;
469
469
  carry8 = h8 + (1 << 25); h9 += carry8 >> 26; h8 -= carry8 & kTop38Bits;
470
- /* |h4| <= 2^25; from now on fits into int32 unchanged */
471
- /* |h8| <= 2^25; from now on fits into int32 unchanged */
472
- /* |h5| <= 1.01*2^24 */
473
- /* |h9| <= 1.71*2^59 */
470
+ // |h4| <= 2^25; from now on fits into int32 unchanged
471
+ // |h8| <= 2^25; from now on fits into int32 unchanged
472
+ // |h5| <= 1.01*2^24
473
+ // |h9| <= 1.71*2^59
474
474
 
475
475
  carry9 = h9 + (1 << 24); h0 += (carry9 >> 25) * 19; h9 -= carry9 & kTop39Bits;
476
- /* |h9| <= 2^24; from now on fits into int32 unchanged */
477
- /* |h0| <= 1.1*2^39 */
476
+ // |h9| <= 2^24; from now on fits into int32 unchanged
477
+ // |h0| <= 1.1*2^39
478
478
 
479
479
  carry0 = h0 + (1 << 25); h1 += carry0 >> 26; h0 -= carry0 & kTop38Bits;
480
- /* |h0| <= 2^25; from now on fits into int32 unchanged */
481
- /* |h1| <= 1.01*2^24 */
480
+ // |h0| <= 2^25; from now on fits into int32 unchanged
481
+ // |h1| <= 1.01*2^24
482
482
 
483
483
  h[0] = h0;
484
484
  h[1] = h1;
@@ -492,16 +492,16 @@ static void fe_mul(fe h, const fe f, const fe g) {
492
492
  h[9] = h9;
493
493
  }
494
494
 
495
- /* h = f * f
496
- * Can overlap h with f.
497
- *
498
- * Preconditions:
499
- * |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.
500
- *
501
- * Postconditions:
502
- * |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.
503
- *
504
- * See fe_mul.c for discussion of implementation strategy. */
495
+ // h = f * f
496
+ // Can overlap h with f.
497
+ //
498
+ // Preconditions:
499
+ // |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.
500
+ //
501
+ // Postconditions:
502
+ // |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.
503
+ //
504
+ // See fe_mul.c for discussion of implementation strategy.
505
505
  static void fe_sq(fe h, const fe f) {
506
506
  int32_t f0 = f[0];
507
507
  int32_t f1 = f[1];
@@ -521,11 +521,11 @@ static void fe_sq(fe h, const fe f) {
521
521
  int32_t f5_2 = 2 * f5;
522
522
  int32_t f6_2 = 2 * f6;
523
523
  int32_t f7_2 = 2 * f7;
524
- int32_t f5_38 = 38 * f5; /* 1.959375*2^30 */
525
- int32_t f6_19 = 19 * f6; /* 1.959375*2^30 */
526
- int32_t f7_38 = 38 * f7; /* 1.959375*2^30 */
527
- int32_t f8_19 = 19 * f8; /* 1.959375*2^30 */
528
- int32_t f9_38 = 38 * f9; /* 1.959375*2^30 */
524
+ int32_t f5_38 = 38 * f5; // 1.959375*2^30
525
+ int32_t f6_19 = 19 * f6; // 1.959375*2^30
526
+ int32_t f7_38 = 38 * f7; // 1.959375*2^30
527
+ int32_t f8_19 = 19 * f8; // 1.959375*2^30
528
+ int32_t f9_38 = 38 * f9; // 1.959375*2^30
529
529
  int64_t f0f0 = f0 * (int64_t) f0;
530
530
  int64_t f0f1_2 = f0_2 * (int64_t) f1;
531
531
  int64_t f0f2_2 = f0_2 * (int64_t) f2;
@@ -691,13 +691,13 @@ static void fe_invert(fe out, const fe z) {
691
691
  fe_mul(out, t1, t0);
692
692
  }
693
693
 
694
- /* h = -f
695
- *
696
- * Preconditions:
697
- * |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
698
- *
699
- * Postconditions:
700
- * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. */
694
+ // h = -f
695
+ //
696
+ // Preconditions:
697
+ // |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
698
+ //
699
+ // Postconditions:
700
+ // |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
701
701
  static void fe_neg(fe h, const fe f) {
702
702
  unsigned i;
703
703
  for (i = 0; i < 10; i++) {
@@ -705,10 +705,10 @@ static void fe_neg(fe h, const fe f) {
705
705
  }
706
706
  }
707
707
 
708
- /* Replace (f,g) with (g,g) if b == 1;
709
- * replace (f,g) with (f,g) if b == 0.
710
- *
711
- * Preconditions: b in {0,1}. */
708
+ // Replace (f,g) with (g,g) if b == 1;
709
+ // replace (f,g) with (f,g) if b == 0.
710
+ //
711
+ // Preconditions: b in {0,1}.
712
712
  static void fe_cmov(fe f, const fe g, unsigned b) {
713
713
  b = 0-b;
714
714
  unsigned i;
@@ -719,11 +719,11 @@ static void fe_cmov(fe f, const fe g, unsigned b) {
719
719
  }
720
720
  }
721
721
 
722
- /* return 0 if f == 0
723
- * return 1 if f != 0
724
- *
725
- * Preconditions:
726
- * |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. */
722
+ // return 0 if f == 0
723
+ // return 1 if f != 0
724
+ //
725
+ // Preconditions:
726
+ // |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
727
727
  static int fe_isnonzero(const fe f) {
728
728
  uint8_t s[32];
729
729
  fe_tobytes(s, f);
@@ -732,27 +732,27 @@ static int fe_isnonzero(const fe f) {
732
732
  return CRYPTO_memcmp(s, zero, sizeof(zero)) != 0;
733
733
  }
734
734
 
735
- /* return 1 if f is in {1,3,5,...,q-2}
736
- * return 0 if f is in {0,2,4,...,q-1}
737
- *
738
- * Preconditions:
739
- * |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. */
735
+ // return 1 if f is in {1,3,5,...,q-2}
736
+ // return 0 if f is in {0,2,4,...,q-1}
737
+ //
738
+ // Preconditions:
739
+ // |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
740
740
  static int fe_isnegative(const fe f) {
741
741
  uint8_t s[32];
742
742
  fe_tobytes(s, f);
743
743
  return s[0] & 1;
744
744
  }
745
745
 
746
- /* h = 2 * f * f
747
- * Can overlap h with f.
748
- *
749
- * Preconditions:
750
- * |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.
751
- *
752
- * Postconditions:
753
- * |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.
754
- *
755
- * See fe_mul.c for discussion of implementation strategy. */
746
+ // h = 2 * f * f
747
+ // Can overlap h with f.
748
+ //
749
+ // Preconditions:
750
+ // |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.
751
+ //
752
+ // Postconditions:
753
+ // |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.
754
+ //
755
+ // See fe_mul.c for discussion of implementation strategy.
756
756
  static void fe_sq2(fe h, const fe f) {
757
757
  int32_t f0 = f[0];
758
758
  int32_t f1 = f[1];
@@ -772,11 +772,11 @@ static void fe_sq2(fe h, const fe f) {
772
772
  int32_t f5_2 = 2 * f5;
773
773
  int32_t f6_2 = 2 * f6;
774
774
  int32_t f7_2 = 2 * f7;
775
- int32_t f5_38 = 38 * f5; /* 1.959375*2^30 */
776
- int32_t f6_19 = 19 * f6; /* 1.959375*2^30 */
777
- int32_t f7_38 = 38 * f7; /* 1.959375*2^30 */
778
- int32_t f8_19 = 19 * f8; /* 1.959375*2^30 */
779
- int32_t f9_38 = 38 * f9; /* 1.959375*2^30 */
775
+ int32_t f5_38 = 38 * f5; // 1.959375*2^30
776
+ int32_t f6_19 = 19 * f6; // 1.959375*2^30
777
+ int32_t f7_38 = 38 * f7; // 1.959375*2^30
778
+ int32_t f8_19 = 19 * f8; // 1.959375*2^30
779
+ int32_t f9_38 = 38 * f9; // 1.959375*2^30
780
780
  int64_t f0f0 = f0 * (int64_t) f0;
781
781
  int64_t f0f1_2 = f0_2 * (int64_t) f1;
782
782
  int64_t f0f2_2 = f0_2 * (int64_t) f2;
@@ -993,24 +993,24 @@ int x25519_ge_frombytes_vartime(ge_p3 *h, const uint8_t *s) {
993
993
  fe_1(h->Z);
994
994
  fe_sq(u, h->Y);
995
995
  fe_mul(v, u, d);
996
- fe_sub(u, u, h->Z); /* u = y^2-1 */
997
- fe_add(v, v, h->Z); /* v = dy^2+1 */
996
+ fe_sub(u, u, h->Z); // u = y^2-1
997
+ fe_add(v, v, h->Z); // v = dy^2+1
998
998
 
999
999
  fe_sq(v3, v);
1000
- fe_mul(v3, v3, v); /* v3 = v^3 */
1000
+ fe_mul(v3, v3, v); // v3 = v^3
1001
1001
  fe_sq(h->X, v3);
1002
1002
  fe_mul(h->X, h->X, v);
1003
- fe_mul(h->X, h->X, u); /* x = uv^7 */
1003
+ fe_mul(h->X, h->X, u); // x = uv^7
1004
1004
 
1005
- fe_pow22523(h->X, h->X); /* x = (uv^7)^((q-5)/8) */
1005
+ fe_pow22523(h->X, h->X); // x = (uv^7)^((q-5)/8)
1006
1006
  fe_mul(h->X, h->X, v3);
1007
- fe_mul(h->X, h->X, u); /* x = uv^3(uv^7)^((q-5)/8) */
1007
+ fe_mul(h->X, h->X, u); // x = uv^3(uv^7)^((q-5)/8)
1008
1008
 
1009
1009
  fe_sq(vxx, h->X);
1010
1010
  fe_mul(vxx, vxx, v);
1011
- fe_sub(check, vxx, u); /* vx^2-u */
1011
+ fe_sub(check, vxx, u); // vx^2-u
1012
1012
  if (fe_isnonzero(check)) {
1013
- fe_add(check, vxx, u); /* vx^2+u */
1013
+ fe_add(check, vxx, u); // vx^2+u
1014
1014
  if (fe_isnonzero(check)) {
1015
1015
  return -1;
1016
1016
  }
@@ -1051,7 +1051,7 @@ static void ge_precomp_0(ge_precomp *h) {
1051
1051
  fe_0(h->xy2d);
1052
1052
  }
1053
1053
 
1054
- /* r = p */
1054
+ // r = p
1055
1055
  static void ge_p3_to_p2(ge_p2 *r, const ge_p3 *p) {
1056
1056
  fe_copy(r->X, p->X);
1057
1057
  fe_copy(r->Y, p->Y);
@@ -1061,7 +1061,7 @@ static void ge_p3_to_p2(ge_p2 *r, const ge_p3 *p) {
1061
1061
  static const fe d2 = {-21827239, -5839606, -30745221, 13898782, 229458,
1062
1062
  15978800, -12551817, -6495438, 29715968, 9444199};
1063
1063
 
1064
- /* r = p */
1064
+ // r = p
1065
1065
  void x25519_ge_p3_to_cached(ge_cached *r, const ge_p3 *p) {
1066
1066
  fe_add(r->YplusX, p->Y, p->X);
1067
1067
  fe_sub(r->YminusX, p->Y, p->X);
@@ -1069,14 +1069,14 @@ void x25519_ge_p3_to_cached(ge_cached *r, const ge_p3 *p) {
1069
1069
  fe_mul(r->T2d, p->T, d2);
1070
1070
  }
1071
1071
 
1072
- /* r = p */
1072
+ // r = p
1073
1073
  void x25519_ge_p1p1_to_p2(ge_p2 *r, const ge_p1p1 *p) {
1074
1074
  fe_mul(r->X, p->X, p->T);
1075
1075
  fe_mul(r->Y, p->Y, p->Z);
1076
1076
  fe_mul(r->Z, p->Z, p->T);
1077
1077
  }
1078
1078
 
1079
- /* r = p */
1079
+ // r = p
1080
1080
  void x25519_ge_p1p1_to_p3(ge_p3 *r, const ge_p1p1 *p) {
1081
1081
  fe_mul(r->X, p->X, p->T);
1082
1082
  fe_mul(r->Y, p->Y, p->Z);
@@ -1084,14 +1084,14 @@ void x25519_ge_p1p1_to_p3(ge_p3 *r, const ge_p1p1 *p) {
1084
1084
  fe_mul(r->T, p->X, p->Y);
1085
1085
  }
1086
1086
 
1087
- /* r = p */
1087
+ // r = p
1088
1088
  static void ge_p1p1_to_cached(ge_cached *r, const ge_p1p1 *p) {
1089
1089
  ge_p3 t;
1090
1090
  x25519_ge_p1p1_to_p3(&t, p);
1091
1091
  x25519_ge_p3_to_cached(r, &t);
1092
1092
  }
1093
1093
 
1094
- /* r = 2 * p */
1094
+ // r = 2 * p
1095
1095
  static void ge_p2_dbl(ge_p1p1 *r, const ge_p2 *p) {
1096
1096
  fe t0;
1097
1097
 
@@ -1106,14 +1106,14 @@ static void ge_p2_dbl(ge_p1p1 *r, const ge_p2 *p) {
1106
1106
  fe_sub(r->T, r->T, r->Z);
1107
1107
  }
1108
1108
 
1109
- /* r = 2 * p */
1109
+ // r = 2 * p
1110
1110
  static void ge_p3_dbl(ge_p1p1 *r, const ge_p3 *p) {
1111
1111
  ge_p2 q;
1112
1112
  ge_p3_to_p2(&q, p);
1113
1113
  ge_p2_dbl(r, &q);
1114
1114
  }
1115
1115
 
1116
- /* r = p + q */
1116
+ // r = p + q
1117
1117
  static void ge_madd(ge_p1p1 *r, const ge_p3 *p, const ge_precomp *q) {
1118
1118
  fe t0;
1119
1119
 
@@ -1129,7 +1129,7 @@ static void ge_madd(ge_p1p1 *r, const ge_p3 *p, const ge_precomp *q) {
1129
1129
  fe_sub(r->T, t0, r->T);
1130
1130
  }
1131
1131
 
1132
- /* r = p - q */
1132
+ // r = p - q
1133
1133
  static void ge_msub(ge_p1p1 *r, const ge_p3 *p, const ge_precomp *q) {
1134
1134
  fe t0;
1135
1135
 
@@ -1145,7 +1145,7 @@ static void ge_msub(ge_p1p1 *r, const ge_p3 *p, const ge_precomp *q) {
1145
1145
  fe_add(r->T, t0, r->T);
1146
1146
  }
1147
1147
 
1148
- /* r = p + q */
1148
+ // r = p + q
1149
1149
  void x25519_ge_add(ge_p1p1 *r, const ge_p3 *p, const ge_cached *q) {
1150
1150
  fe t0;
1151
1151
 
@@ -1162,7 +1162,7 @@ void x25519_ge_add(ge_p1p1 *r, const ge_p3 *p, const ge_cached *q) {
1162
1162
  fe_sub(r->T, t0, r->T);
1163
1163
  }
1164
1164
 
1165
- /* r = p - q */
1165
+ // r = p - q
1166
1166
  void x25519_ge_sub(ge_p1p1 *r, const ge_p3 *p, const ge_cached *q) {
1167
1167
  fe t0;
1168
1168
 
@@ -1182,10 +1182,10 @@ void x25519_ge_sub(ge_p1p1 *r, const ge_p3 *p, const ge_cached *q) {
1182
1182
  static uint8_t equal(signed char b, signed char c) {
1183
1183
  uint8_t ub = b;
1184
1184
  uint8_t uc = c;
1185
- uint8_t x = ub ^ uc; /* 0: yes; 1..255: no */
1186
- uint32_t y = x; /* 0: yes; 1..255: no */
1187
- y -= 1; /* 4294967295: yes; 0..254: no */
1188
- y >>= 31; /* 1: yes; 0: no */
1185
+ uint8_t x = ub ^ uc; // 0: yes; 1..255: no
1186
+ uint32_t y = x; // 0: yes; 1..255: no
1187
+ y -= 1; // 4294967295: yes; 0..254: no
1188
+ y >>= 31; // 1: yes; 0: no
1189
1189
  return y;
1190
1190
  }
1191
1191
 
@@ -1197,8 +1197,8 @@ static void cmov(ge_precomp *t, const ge_precomp *u, uint8_t b) {
1197
1197
 
1198
1198
  void x25519_ge_scalarmult_small_precomp(
1199
1199
  ge_p3 *h, const uint8_t a[32], const uint8_t precomp_table[15 * 2 * 32]) {
1200
- /* precomp_table is first expanded into matching |ge_precomp|
1201
- * elements. */
1200
+ // precomp_table is first expanded into matching |ge_precomp|
1201
+ // elements.
1202
1202
  ge_precomp multiples[15];
1203
1203
 
1204
1204
  unsigned i;
@@ -1215,9 +1215,9 @@ void x25519_ge_scalarmult_small_precomp(
1215
1215
  fe_mul(out->xy2d, out->xy2d, d2);
1216
1216
  }
1217
1217
 
1218
- /* See the comment above |k25519SmallPrecomp| about the structure of the
1219
- * precomputed elements. This loop does 64 additions and 64 doublings to
1220
- * calculate the result. */
1218
+ // See the comment above |k25519SmallPrecomp| about the structure of the
1219
+ // precomputed elements. This loop does 64 additions and 64 doublings to
1220
+ // calculate the result.
1221
1221
  ge_p3_0(h);
1222
1222
 
1223
1223
  for (i = 63; i < 64; i--) {
@@ -1249,14 +1249,14 @@ void x25519_ge_scalarmult_small_precomp(
1249
1249
 
1250
1250
  #if defined(OPENSSL_SMALL)
1251
1251
 
1252
- /* This block of code replaces the standard base-point table with a much smaller
1253
- * one. The standard table is 30,720 bytes while this one is just 960.
1254
- *
1255
- * This table contains 15 pairs of group elements, (x, y), where each field
1256
- * element is serialised with |fe_tobytes|. If |i| is the index of the group
1257
- * element then consider i+1 as a four-bit number: (i₀, i₁, i₂, i₃) (where i₀
1258
- * is the most significant bit). The value of the group element is then:
1259
- * (i₀×2^192 + i₁×2^128 + i₂×2^64 + i₃)G, where G is the generator. */
1252
+ // This block of code replaces the standard base-point table with a much smaller
1253
+ // one. The standard table is 30,720 bytes while this one is just 960.
1254
+ //
1255
+ // This table contains 15 pairs of group elements, (x, y), where each field
1256
+ // element is serialised with |fe_tobytes|. If |i| is the index of the group
1257
+ // element then consider i+1 as a four-bit number: (i₀, i₁, i₂, i₃) (where i₀
1258
+ // is the most significant bit). The value of the group element is then:
1259
+ // (i₀×2^192 + i₁×2^128 + i₂×2^64 + i₃)G, where G is the generator.
1260
1260
  static const uint8_t k25519SmallPrecomp[15 * 2 * 32] = {
1261
1261
  0x1a, 0xd5, 0x25, 0x8f, 0x60, 0x2d, 0x56, 0xc9, 0xb2, 0xa7, 0x25, 0x95,
1262
1262
  0x60, 0xc7, 0x2c, 0x69, 0x5c, 0xdc, 0xd6, 0xfd, 0x31, 0xe2, 0xa4, 0xc0,
@@ -1346,7 +1346,7 @@ void x25519_ge_scalarmult_base(ge_p3 *h, const uint8_t a[32]) {
1346
1346
 
1347
1347
  #else
1348
1348
 
1349
- /* k25519Precomp[i][j] = (j+1)*256^i*B */
1349
+ // k25519Precomp[i][j] = (j+1)*256^i*B
1350
1350
  static const ge_precomp k25519Precomp[32][8] = {
1351
1351
  {
1352
1352
  {
@@ -3464,7 +3464,7 @@ static const ge_precomp k25519Precomp[32][8] = {
3464
3464
 
3465
3465
  static uint8_t negative(signed char b) {
3466
3466
  uint32_t x = b;
3467
- x >>= 31; /* 1: yes; 0: no */
3467
+ x >>= 31; // 1: yes; 0: no
3468
3468
  return x;
3469
3469
  }
3470
3470
 
@@ -3488,12 +3488,12 @@ static void table_select(ge_precomp *t, int pos, signed char b) {
3488
3488
  cmov(t, &minust, bnegative);
3489
3489
  }
3490
3490
 
3491
- /* h = a * B
3492
- * where a = a[0]+256*a[1]+...+256^31 a[31]
3493
- * B is the Ed25519 base point (x,4/5) with x positive.
3494
- *
3495
- * Preconditions:
3496
- * a[31] <= 127 */
3491
+ // h = a * B
3492
+ // where a = a[0]+256*a[1]+...+256^31 a[31]
3493
+ // B is the Ed25519 base point (x,4/5) with x positive.
3494
+ //
3495
+ // Preconditions:
3496
+ // a[31] <= 127
3497
3497
  void x25519_ge_scalarmult_base(ge_p3 *h, const uint8_t *a) {
3498
3498
  signed char e[64];
3499
3499
  signed char carry;
@@ -3506,8 +3506,8 @@ void x25519_ge_scalarmult_base(ge_p3 *h, const uint8_t *a) {
3506
3506
  e[2 * i + 0] = (a[i] >> 0) & 15;
3507
3507
  e[2 * i + 1] = (a[i] >> 4) & 15;
3508
3508
  }
3509
- /* each e[i] is between 0 and 15 */
3510
- /* e[63] is between 0 and 7 */
3509
+ // each e[i] is between 0 and 15
3510
+ // e[63] is between 0 and 7
3511
3511
 
3512
3512
  carry = 0;
3513
3513
  for (i = 0; i < 63; ++i) {
@@ -3517,7 +3517,7 @@ void x25519_ge_scalarmult_base(ge_p3 *h, const uint8_t *a) {
3517
3517
  e[i] -= carry << 4;
3518
3518
  }
3519
3519
  e[63] += carry;
3520
- /* each e[i] is between -8 and 8 */
3520
+ // each e[i] is between -8 and 8
3521
3521
 
3522
3522
  ge_p3_0(h);
3523
3523
  for (i = 1; i < 64; i += 2) {
@@ -3551,8 +3551,8 @@ static void cmov_cached(ge_cached *t, ge_cached *u, uint8_t b) {
3551
3551
  fe_cmov(t->T2d, u->T2d, b);
3552
3552
  }
3553
3553
 
3554
- /* r = scalar * A.
3555
- * where a = a[0]+256*a[1]+...+256^31 a[31]. */
3554
+ // r = scalar * A.
3555
+ // where a = a[0]+256*a[1]+...+256^31 a[31].
3556
3556
  void x25519_ge_scalarmult(ge_p2 *r, const uint8_t *scalar, const ge_p3 *A) {
3557
3557
  ge_p2 Ai_p2[8];
3558
3558
  ge_cached Ai[16];
@@ -3706,15 +3706,15 @@ static const ge_precomp Bi[8] = {
3706
3706
  },
3707
3707
  };
3708
3708
 
3709
- /* r = a * A + b * B
3710
- * where a = a[0]+256*a[1]+...+256^31 a[31].
3711
- * and b = b[0]+256*b[1]+...+256^31 b[31].
3712
- * B is the Ed25519 base point (x,4/5) with x positive. */
3709
+ // r = a * A + b * B
3710
+ // where a = a[0]+256*a[1]+...+256^31 a[31].
3711
+ // and b = b[0]+256*b[1]+...+256^31 b[31].
3712
+ // B is the Ed25519 base point (x,4/5) with x positive.
3713
3713
  static void ge_double_scalarmult_vartime(ge_p2 *r, const uint8_t *a,
3714
3714
  const ge_p3 *A, const uint8_t *b) {
3715
3715
  signed char aslide[256];
3716
3716
  signed char bslide[256];
3717
- ge_cached Ai[8]; /* A,3A,5A,7A,9A,11A,13A,15A */
3717
+ ge_cached Ai[8]; // A,3A,5A,7A,9A,11A,13A,15A
3718
3718
  ge_p1p1 t;
3719
3719
  ge_p3 u;
3720
3720
  ge_p3 A2;
@@ -3779,16 +3779,16 @@ static void ge_double_scalarmult_vartime(ge_p2 *r, const uint8_t *a,
3779
3779
  }
3780
3780
  }
3781
3781
 
3782
- /* The set of scalars is \Z/l
3783
- * where l = 2^252 + 27742317777372353535851937790883648493. */
3782
+ // The set of scalars is \Z/l
3783
+ // where l = 2^252 + 27742317777372353535851937790883648493.
3784
3784
 
3785
- /* Input:
3786
- * s[0]+256*s[1]+...+256^63*s[63] = s
3787
- *
3788
- * Output:
3789
- * s[0]+256*s[1]+...+256^31*s[31] = s mod l
3790
- * where l = 2^252 + 27742317777372353535851937790883648493.
3791
- * Overwrites s in place. */
3785
+ // Input:
3786
+ // s[0]+256*s[1]+...+256^63*s[63] = s
3787
+ //
3788
+ // Output:
3789
+ // s[0]+256*s[1]+...+256^31*s[31] = s mod l
3790
+ // where l = 2^252 + 27742317777372353535851937790883648493.
3791
+ // Overwrites s in place.
3792
3792
  void x25519_sc_reduce(uint8_t *s) {
3793
3793
  int64_t s0 = 2097151 & load_3(s);
3794
3794
  int64_t s1 = 2097151 & (load_4(s + 2) >> 5);
@@ -4122,14 +4122,14 @@ void x25519_sc_reduce(uint8_t *s) {
4122
4122
  s[31] = s11 >> 17;
4123
4123
  }
4124
4124
 
4125
- /* Input:
4126
- * a[0]+256*a[1]+...+256^31*a[31] = a
4127
- * b[0]+256*b[1]+...+256^31*b[31] = b
4128
- * c[0]+256*c[1]+...+256^31*c[31] = c
4129
- *
4130
- * Output:
4131
- * s[0]+256*s[1]+...+256^31*s[31] = (ab+c) mod l
4132
- * where l = 2^252 + 27742317777372353535851937790883648493. */
4125
+ // Input:
4126
+ // a[0]+256*a[1]+...+256^31*a[31] = a
4127
+ // b[0]+256*b[1]+...+256^31*b[31] = b
4128
+ // c[0]+256*c[1]+...+256^31*c[31] = c
4129
+ //
4130
+ // Output:
4131
+ // s[0]+256*s[1]+...+256^31*s[31] = (ab+c) mod l
4132
+ // where l = 2^252 + 27742317777372353535851937790883648493.
4133
4133
  static void sc_muladd(uint8_t *s, const uint8_t *a, const uint8_t *b,
4134
4134
  const uint8_t *c) {
4135
4135
  int64_t a0 = 2097151 & load_3(a);
@@ -4716,10 +4716,10 @@ static void x25519_scalar_mult(uint8_t out[32], const uint8_t scalar[32],
4716
4716
 
4717
4717
  #else
4718
4718
 
4719
- /* Replace (f,g) with (g,f) if b == 1;
4720
- * replace (f,g) with (f,g) if b == 0.
4721
- *
4722
- * Preconditions: b in {0,1}. */
4719
+ // Replace (f,g) with (g,f) if b == 1;
4720
+ // replace (f,g) with (f,g) if b == 0.
4721
+ //
4722
+ // Preconditions: b in {0,1}.
4723
4723
  static void fe_cswap(fe f, fe g, unsigned int b) {
4724
4724
  b = 0-b;
4725
4725
  unsigned i;
@@ -4731,14 +4731,14 @@ static void fe_cswap(fe f, fe g, unsigned int b) {
4731
4731
  }
4732
4732
  }
4733
4733
 
4734
- /* h = f * 121666
4735
- * Can overlap h with f.
4736
- *
4737
- * Preconditions:
4738
- * |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
4739
- *
4740
- * Postconditions:
4741
- * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. */
4734
+ // h = f * 121666
4735
+ // Can overlap h with f.
4736
+ //
4737
+ // Preconditions:
4738
+ // |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
4739
+ //
4740
+ // Postconditions:
4741
+ // |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
4742
4742
  static void fe_mul121666(fe h, fe f) {
4743
4743
  int32_t f0 = f[0];
4744
4744
  int32_t f1 = f[1];
@@ -4858,25 +4858,25 @@ static void x25519_scalar_mult(uint8_t out[32], const uint8_t scalar[32],
4858
4858
  x25519_scalar_mult_generic(out, scalar, point);
4859
4859
  }
4860
4860
 
4861
- #endif /* BORINGSSL_X25519_X86_64 */
4861
+ #endif // BORINGSSL_X25519_X86_64
4862
4862
 
4863
4863
 
4864
4864
  void X25519_keypair(uint8_t out_public_value[32], uint8_t out_private_key[32]) {
4865
4865
  RAND_bytes(out_private_key, 32);
4866
4866
 
4867
- /* All X25519 implementations should decode scalars correctly (see
4868
- * https://tools.ietf.org/html/rfc7748#section-5). However, if an
4869
- * implementation doesn't then it might interoperate with random keys a
4870
- * fraction of the time because they'll, randomly, happen to be correctly
4871
- * formed.
4872
- *
4873
- * Thus we do the opposite of the masking here to make sure that our private
4874
- * keys are never correctly masked and so, hopefully, any incorrect
4875
- * implementations are deterministically broken.
4876
- *
4877
- * This does not affect security because, although we're throwing away
4878
- * entropy, a valid implementation of scalarmult should throw away the exact
4879
- * same bits anyway. */
4867
+ // All X25519 implementations should decode scalars correctly (see
4868
+ // https://tools.ietf.org/html/rfc7748#section-5). However, if an
4869
+ // implementation doesn't then it might interoperate with random keys a
4870
+ // fraction of the time because they'll, randomly, happen to be correctly
4871
+ // formed.
4872
+ //
4873
+ // Thus we do the opposite of the masking here to make sure that our private
4874
+ // keys are never correctly masked and so, hopefully, any incorrect
4875
+ // implementations are deterministically broken.
4876
+ //
4877
+ // This does not affect security because, although we're throwing away
4878
+ // entropy, a valid implementation of scalarmult should throw away the exact
4879
+ // same bits anyway.
4880
4880
  out_private_key[0] |= 7;
4881
4881
  out_private_key[31] &= 63;
4882
4882
  out_private_key[31] |= 128;
@@ -4888,15 +4888,15 @@ int X25519(uint8_t out_shared_key[32], const uint8_t private_key[32],
4888
4888
  const uint8_t peer_public_value[32]) {
4889
4889
  static const uint8_t kZeros[32] = {0};
4890
4890
  x25519_scalar_mult(out_shared_key, private_key, peer_public_value);
4891
- /* The all-zero output results when the input is a point of small order. */
4891
+ // The all-zero output results when the input is a point of small order.
4892
4892
  return CRYPTO_memcmp(kZeros, out_shared_key, 32) != 0;
4893
4893
  }
4894
4894
 
4895
4895
  #if defined(BORINGSSL_X25519_X86_64)
4896
4896
 
4897
- /* When |BORINGSSL_X25519_X86_64| is set, base point multiplication is done with
4898
- * the Montgomery ladder because it's faster. Otherwise it's done using the
4899
- * Ed25519 tables. */
4897
+ // When |BORINGSSL_X25519_X86_64| is set, base point multiplication is done with
4898
+ // the Montgomery ladder because it's faster. Otherwise it's done using the
4899
+ // Ed25519 tables.
4900
4900
 
4901
4901
  void X25519_public_from_private(uint8_t out_public_value[32],
4902
4902
  const uint8_t private_key[32]) {
@@ -4925,8 +4925,8 @@ void X25519_public_from_private(uint8_t out_public_value[32],
4925
4925
  ge_p3 A;
4926
4926
  x25519_ge_scalarmult_base(&A, e);
4927
4927
 
4928
- /* We only need the u-coordinate of the curve25519 point. The map is
4929
- * u=(y+1)/(1-y). Since y=Y/Z, this gives u=(Z+Y)/(Z-Y). */
4928
+ // We only need the u-coordinate of the curve25519 point. The map is
4929
+ // u=(y+1)/(1-y). Since y=Y/Z, this gives u=(Z+Y)/(Z-Y).
4930
4930
  fe zplusy, zminusy, zminusy_inv;
4931
4931
  fe_add(zplusy, A.Z, A.Y);
4932
4932
  fe_sub(zminusy, A.Z, A.Y);
@@ -4935,4 +4935,4 @@ void X25519_public_from_private(uint8_t out_public_value[32],
4935
4935
  fe_tobytes(out_public_value, zplusy);
4936
4936
  }
4937
4937
 
4938
- #endif /* BORINGSSL_X25519_X86_64 */
4938
+ #endif // BORINGSSL_X25519_X86_64