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
@@ -90,4 +90,4 @@ OPENSSL_EXPORT void BF_cbc_encrypt(const uint8_t *in, uint8_t *out, long length,
90
90
  }
91
91
  #endif
92
92
 
93
- #endif /* OPENSSL_HEADER_BLOWFISH_H */
93
+ #endif // OPENSSL_HEADER_BLOWFISH_H
@@ -126,25 +126,25 @@
126
126
  #include <openssl/base.h>
127
127
  #include <openssl/thread.h>
128
128
 
129
- #include <inttypes.h> /* for PRIu64 and friends */
130
- #include <stdio.h> /* for FILE* */
129
+ #include <inttypes.h> // for PRIu64 and friends
130
+ #include <stdio.h> // for FILE*
131
131
 
132
132
  #if defined(__cplusplus)
133
133
  extern "C" {
134
134
  #endif
135
135
 
136
136
 
137
- /* BN provides support for working with arbitrary sized integers. For example,
138
- * although the largest integer supported by the compiler might be 64 bits, BN
139
- * will allow you to work with numbers until you run out of memory. */
137
+ // BN provides support for working with arbitrary sized integers. For example,
138
+ // although the largest integer supported by the compiler might be 64 bits, BN
139
+ // will allow you to work with numbers until you run out of memory.
140
140
 
141
141
 
142
- /* BN_ULONG is the native word size when working with big integers.
143
- *
144
- * Note: on some platforms, inttypes.h does not define print format macros in
145
- * C++ unless |__STDC_FORMAT_MACROS| defined. As this is a public header, bn.h
146
- * does not define |__STDC_FORMAT_MACROS| itself. C++ source files which use the
147
- * FMT macros must define it externally. */
142
+ // BN_ULONG is the native word size when working with big integers.
143
+ //
144
+ // Note: on some platforms, inttypes.h does not define print format macros in
145
+ // C++ unless |__STDC_FORMAT_MACROS| defined. As this is a public header, bn.h
146
+ // does not define |__STDC_FORMAT_MACROS| itself. C++ source files which use the
147
+ // FMT macros must define it externally.
148
148
  #if defined(OPENSSL_64_BIT)
149
149
  #define BN_ULONG uint64_t
150
150
  #define BN_BITS2 64
@@ -164,699 +164,703 @@ extern "C" {
164
164
  #endif
165
165
 
166
166
 
167
- /* Allocation and freeing. */
167
+ // Allocation and freeing.
168
168
 
169
- /* BN_new creates a new, allocated BIGNUM and initialises it. */
169
+ // BN_new creates a new, allocated BIGNUM and initialises it.
170
170
  OPENSSL_EXPORT BIGNUM *BN_new(void);
171
171
 
172
- /* BN_init initialises a stack allocated |BIGNUM|. */
172
+ // BN_init initialises a stack allocated |BIGNUM|.
173
173
  OPENSSL_EXPORT void BN_init(BIGNUM *bn);
174
174
 
175
- /* BN_free frees the data referenced by |bn| and, if |bn| was originally
176
- * allocated on the heap, frees |bn| also. */
175
+ // BN_free frees the data referenced by |bn| and, if |bn| was originally
176
+ // allocated on the heap, frees |bn| also.
177
177
  OPENSSL_EXPORT void BN_free(BIGNUM *bn);
178
178
 
179
- /* BN_clear_free erases and frees the data referenced by |bn| and, if |bn| was
180
- * originally allocated on the heap, frees |bn| also. */
179
+ // BN_clear_free erases and frees the data referenced by |bn| and, if |bn| was
180
+ // originally allocated on the heap, frees |bn| also.
181
181
  OPENSSL_EXPORT void BN_clear_free(BIGNUM *bn);
182
182
 
183
- /* BN_dup allocates a new BIGNUM and sets it equal to |src|. It returns the
184
- * allocated BIGNUM on success or NULL otherwise. */
183
+ // BN_dup allocates a new BIGNUM and sets it equal to |src|. It returns the
184
+ // allocated BIGNUM on success or NULL otherwise.
185
185
  OPENSSL_EXPORT BIGNUM *BN_dup(const BIGNUM *src);
186
186
 
187
- /* BN_copy sets |dest| equal to |src| and returns |dest| or NULL on allocation
188
- * failure. */
187
+ // BN_copy sets |dest| equal to |src| and returns |dest| or NULL on allocation
188
+ // failure.
189
189
  OPENSSL_EXPORT BIGNUM *BN_copy(BIGNUM *dest, const BIGNUM *src);
190
190
 
191
- /* BN_clear sets |bn| to zero and erases the old data. */
191
+ // BN_clear sets |bn| to zero and erases the old data.
192
192
  OPENSSL_EXPORT void BN_clear(BIGNUM *bn);
193
193
 
194
- /* BN_value_one returns a static BIGNUM with value 1. */
194
+ // BN_value_one returns a static BIGNUM with value 1.
195
195
  OPENSSL_EXPORT const BIGNUM *BN_value_one(void);
196
196
 
197
197
 
198
- /* Basic functions. */
198
+ // Basic functions.
199
199
 
200
- /* BN_num_bits returns the minimum number of bits needed to represent the
201
- * absolute value of |bn|. */
200
+ // BN_num_bits returns the minimum number of bits needed to represent the
201
+ // absolute value of |bn|.
202
202
  OPENSSL_EXPORT unsigned BN_num_bits(const BIGNUM *bn);
203
203
 
204
- /* BN_num_bytes returns the minimum number of bytes needed to represent the
205
- * absolute value of |bn|. */
204
+ // BN_num_bytes returns the minimum number of bytes needed to represent the
205
+ // absolute value of |bn|.
206
206
  OPENSSL_EXPORT unsigned BN_num_bytes(const BIGNUM *bn);
207
207
 
208
- /* BN_zero sets |bn| to zero. */
208
+ // BN_zero sets |bn| to zero.
209
209
  OPENSSL_EXPORT void BN_zero(BIGNUM *bn);
210
210
 
211
- /* BN_one sets |bn| to one. It returns one on success or zero on allocation
212
- * failure. */
211
+ // BN_one sets |bn| to one. It returns one on success or zero on allocation
212
+ // failure.
213
213
  OPENSSL_EXPORT int BN_one(BIGNUM *bn);
214
214
 
215
- /* BN_set_word sets |bn| to |value|. It returns one on success or zero on
216
- * allocation failure. */
215
+ // BN_set_word sets |bn| to |value|. It returns one on success or zero on
216
+ // allocation failure.
217
217
  OPENSSL_EXPORT int BN_set_word(BIGNUM *bn, BN_ULONG value);
218
218
 
219
- /* BN_set_u64 sets |bn| to |value|. It returns one on success or zero on
220
- * allocation failure. */
219
+ // BN_set_u64 sets |bn| to |value|. It returns one on success or zero on
220
+ // allocation failure.
221
221
  OPENSSL_EXPORT int BN_set_u64(BIGNUM *bn, uint64_t value);
222
222
 
223
- /* BN_set_negative sets the sign of |bn|. */
223
+ // BN_set_negative sets the sign of |bn|.
224
224
  OPENSSL_EXPORT void BN_set_negative(BIGNUM *bn, int sign);
225
225
 
226
- /* BN_is_negative returns one if |bn| is negative and zero otherwise. */
226
+ // BN_is_negative returns one if |bn| is negative and zero otherwise.
227
227
  OPENSSL_EXPORT int BN_is_negative(const BIGNUM *bn);
228
228
 
229
229
 
230
- /* Conversion functions. */
230
+ // Conversion functions.
231
231
 
232
- /* BN_bin2bn sets |*ret| to the value of |len| bytes from |in|, interpreted as
233
- * a big-endian number, and returns |ret|. If |ret| is NULL then a fresh
234
- * |BIGNUM| is allocated and returned. It returns NULL on allocation
235
- * failure. */
232
+ // BN_bin2bn sets |*ret| to the value of |len| bytes from |in|, interpreted as
233
+ // a big-endian number, and returns |ret|. If |ret| is NULL then a fresh
234
+ // |BIGNUM| is allocated and returned. It returns NULL on allocation
235
+ // failure.
236
236
  OPENSSL_EXPORT BIGNUM *BN_bin2bn(const uint8_t *in, size_t len, BIGNUM *ret);
237
237
 
238
- /* BN_bn2bin serialises the absolute value of |in| to |out| as a big-endian
239
- * integer, which must have |BN_num_bytes| of space available. It returns the
240
- * number of bytes written. */
238
+ // BN_bn2bin serialises the absolute value of |in| to |out| as a big-endian
239
+ // integer, which must have |BN_num_bytes| of space available. It returns the
240
+ // number of bytes written.
241
241
  OPENSSL_EXPORT size_t BN_bn2bin(const BIGNUM *in, uint8_t *out);
242
242
 
243
- /* BN_le2bn sets |*ret| to the value of |len| bytes from |in|, interpreted as
244
- * a little-endian number, and returns |ret|. If |ret| is NULL then a fresh
245
- * |BIGNUM| is allocated and returned. It returns NULL on allocation
246
- * failure. */
243
+ // BN_le2bn sets |*ret| to the value of |len| bytes from |in|, interpreted as
244
+ // a little-endian number, and returns |ret|. If |ret| is NULL then a fresh
245
+ // |BIGNUM| is allocated and returned. It returns NULL on allocation
246
+ // failure.
247
247
  OPENSSL_EXPORT BIGNUM *BN_le2bn(const uint8_t *in, size_t len, BIGNUM *ret);
248
248
 
249
- /* BN_bn2le_padded serialises the absolute value of |in| to |out| as a
250
- * little-endian integer, which must have |len| of space available, padding
251
- * out the remainder of out with zeros. If |len| is smaller than |BN_num_bytes|,
252
- * the function fails and returns 0. Otherwise, it returns 1. */
249
+ // BN_bn2le_padded serialises the absolute value of |in| to |out| as a
250
+ // little-endian integer, which must have |len| of space available, padding
251
+ // out the remainder of out with zeros. If |len| is smaller than |BN_num_bytes|,
252
+ // the function fails and returns 0. Otherwise, it returns 1.
253
253
  OPENSSL_EXPORT int BN_bn2le_padded(uint8_t *out, size_t len, const BIGNUM *in);
254
254
 
255
- /* BN_bn2bin_padded serialises the absolute value of |in| to |out| as a
256
- * big-endian integer. The integer is padded with leading zeros up to size
257
- * |len|. If |len| is smaller than |BN_num_bytes|, the function fails and
258
- * returns 0. Otherwise, it returns 1. */
255
+ // BN_bn2bin_padded serialises the absolute value of |in| to |out| as a
256
+ // big-endian integer. The integer is padded with leading zeros up to size
257
+ // |len|. If |len| is smaller than |BN_num_bytes|, the function fails and
258
+ // returns 0. Otherwise, it returns 1.
259
259
  OPENSSL_EXPORT int BN_bn2bin_padded(uint8_t *out, size_t len, const BIGNUM *in);
260
260
 
261
- /* BN_bn2cbb_padded behaves like |BN_bn2bin_padded| but writes to a |CBB|. */
261
+ // BN_bn2cbb_padded behaves like |BN_bn2bin_padded| but writes to a |CBB|.
262
262
  OPENSSL_EXPORT int BN_bn2cbb_padded(CBB *out, size_t len, const BIGNUM *in);
263
263
 
264
- /* BN_bn2hex returns an allocated string that contains a NUL-terminated, hex
265
- * representation of |bn|. If |bn| is negative, the first char in the resulting
266
- * string will be '-'. Returns NULL on allocation failure. */
264
+ // BN_bn2hex returns an allocated string that contains a NUL-terminated, hex
265
+ // representation of |bn|. If |bn| is negative, the first char in the resulting
266
+ // string will be '-'. Returns NULL on allocation failure.
267
267
  OPENSSL_EXPORT char *BN_bn2hex(const BIGNUM *bn);
268
268
 
269
- /* BN_hex2bn parses the leading hex number from |in|, which may be proceeded by
270
- * a '-' to indicate a negative number and may contain trailing, non-hex data.
271
- * If |outp| is not NULL, it constructs a BIGNUM equal to the hex number and
272
- * stores it in |*outp|. If |*outp| is NULL then it allocates a new BIGNUM and
273
- * updates |*outp|. It returns the number of bytes of |in| processed or zero on
274
- * error. */
269
+ // BN_hex2bn parses the leading hex number from |in|, which may be proceeded by
270
+ // a '-' to indicate a negative number and may contain trailing, non-hex data.
271
+ // If |outp| is not NULL, it constructs a BIGNUM equal to the hex number and
272
+ // stores it in |*outp|. If |*outp| is NULL then it allocates a new BIGNUM and
273
+ // updates |*outp|. It returns the number of bytes of |in| processed or zero on
274
+ // error.
275
275
  OPENSSL_EXPORT int BN_hex2bn(BIGNUM **outp, const char *in);
276
276
 
277
- /* BN_bn2dec returns an allocated string that contains a NUL-terminated,
278
- * decimal representation of |bn|. If |bn| is negative, the first char in the
279
- * resulting string will be '-'. Returns NULL on allocation failure. */
277
+ // BN_bn2dec returns an allocated string that contains a NUL-terminated,
278
+ // decimal representation of |bn|. If |bn| is negative, the first char in the
279
+ // resulting string will be '-'. Returns NULL on allocation failure.
280
280
  OPENSSL_EXPORT char *BN_bn2dec(const BIGNUM *a);
281
281
 
282
- /* BN_dec2bn parses the leading decimal number from |in|, which may be
283
- * proceeded by a '-' to indicate a negative number and may contain trailing,
284
- * non-decimal data. If |outp| is not NULL, it constructs a BIGNUM equal to the
285
- * decimal number and stores it in |*outp|. If |*outp| is NULL then it
286
- * allocates a new BIGNUM and updates |*outp|. It returns the number of bytes
287
- * of |in| processed or zero on error. */
282
+ // BN_dec2bn parses the leading decimal number from |in|, which may be
283
+ // proceeded by a '-' to indicate a negative number and may contain trailing,
284
+ // non-decimal data. If |outp| is not NULL, it constructs a BIGNUM equal to the
285
+ // decimal number and stores it in |*outp|. If |*outp| is NULL then it
286
+ // allocates a new BIGNUM and updates |*outp|. It returns the number of bytes
287
+ // of |in| processed or zero on error.
288
288
  OPENSSL_EXPORT int BN_dec2bn(BIGNUM **outp, const char *in);
289
289
 
290
- /* BN_asc2bn acts like |BN_dec2bn| or |BN_hex2bn| depending on whether |in|
291
- * begins with "0X" or "0x" (indicating hex) or not (indicating decimal). A
292
- * leading '-' is still permitted and comes before the optional 0X/0x. It
293
- * returns one on success or zero on error. */
290
+ // BN_asc2bn acts like |BN_dec2bn| or |BN_hex2bn| depending on whether |in|
291
+ // begins with "0X" or "0x" (indicating hex) or not (indicating decimal). A
292
+ // leading '-' is still permitted and comes before the optional 0X/0x. It
293
+ // returns one on success or zero on error.
294
294
  OPENSSL_EXPORT int BN_asc2bn(BIGNUM **outp, const char *in);
295
295
 
296
- /* BN_print writes a hex encoding of |a| to |bio|. It returns one on success
297
- * and zero on error. */
296
+ // BN_print writes a hex encoding of |a| to |bio|. It returns one on success
297
+ // and zero on error.
298
298
  OPENSSL_EXPORT int BN_print(BIO *bio, const BIGNUM *a);
299
299
 
300
- /* BN_print_fp acts like |BIO_print|, but wraps |fp| in a |BIO| first. */
300
+ // BN_print_fp acts like |BIO_print|, but wraps |fp| in a |BIO| first.
301
301
  OPENSSL_EXPORT int BN_print_fp(FILE *fp, const BIGNUM *a);
302
302
 
303
- /* BN_get_word returns the absolute value of |bn| as a single word. If |bn| is
304
- * too large to be represented as a single word, the maximum possible value
305
- * will be returned. */
303
+ // BN_get_word returns the absolute value of |bn| as a single word. If |bn| is
304
+ // too large to be represented as a single word, the maximum possible value
305
+ // will be returned.
306
306
  OPENSSL_EXPORT BN_ULONG BN_get_word(const BIGNUM *bn);
307
307
 
308
- /* BN_get_u64 sets |*out| to the absolute value of |bn| as a |uint64_t| and
309
- * returns one. If |bn| is too large to be represented as a |uint64_t|, it
310
- * returns zero. */
308
+ // BN_get_u64 sets |*out| to the absolute value of |bn| as a |uint64_t| and
309
+ // returns one. If |bn| is too large to be represented as a |uint64_t|, it
310
+ // returns zero.
311
311
  OPENSSL_EXPORT int BN_get_u64(const BIGNUM *bn, uint64_t *out);
312
312
 
313
313
 
314
- /* ASN.1 functions. */
314
+ // ASN.1 functions.
315
315
 
316
- /* BN_parse_asn1_unsigned parses a non-negative DER INTEGER from |cbs| writes
317
- * the result to |ret|. It returns one on success and zero on failure. */
316
+ // BN_parse_asn1_unsigned parses a non-negative DER INTEGER from |cbs| writes
317
+ // the result to |ret|. It returns one on success and zero on failure.
318
318
  OPENSSL_EXPORT int BN_parse_asn1_unsigned(CBS *cbs, BIGNUM *ret);
319
319
 
320
- /* BN_parse_asn1_unsigned_buggy acts like |BN_parse_asn1_unsigned| but tolerates
321
- * some invalid encodings. Do not use this function. */
320
+ // BN_parse_asn1_unsigned_buggy acts like |BN_parse_asn1_unsigned| but tolerates
321
+ // some invalid encodings. Do not use this function.
322
322
  OPENSSL_EXPORT int BN_parse_asn1_unsigned_buggy(CBS *cbs, BIGNUM *ret);
323
323
 
324
- /* BN_marshal_asn1 marshals |bn| as a non-negative DER INTEGER and appends the
325
- * result to |cbb|. It returns one on success and zero on failure. */
324
+ // BN_marshal_asn1 marshals |bn| as a non-negative DER INTEGER and appends the
325
+ // result to |cbb|. It returns one on success and zero on failure.
326
326
  OPENSSL_EXPORT int BN_marshal_asn1(CBB *cbb, const BIGNUM *bn);
327
327
 
328
328
 
329
- /* Internal functions.
330
- *
331
- * These functions are useful for code that is doing low-level manipulations of
332
- * BIGNUM values. However, be sure that no other function in this file does
333
- * what you want before turning to these. */
334
-
335
- /* bn_correct_top decrements |bn->top| until |bn->d[top-1]| is non-zero or
336
- * until |top| is zero. If |bn| is zero, |bn->neg| is set to zero. */
337
- OPENSSL_EXPORT void bn_correct_top(BIGNUM *bn);
338
-
339
- /* bn_wexpand ensures that |bn| has at least |words| works of space without
340
- * altering its value. It returns |bn| on success or NULL on allocation
341
- * failure. */
342
- OPENSSL_EXPORT BIGNUM *bn_wexpand(BIGNUM *bn, size_t words);
343
-
344
-
345
- /* BIGNUM pools.
346
- *
347
- * Certain BIGNUM operations need to use many temporary variables and
348
- * allocating and freeing them can be quite slow. Thus such operations typically
349
- * take a |BN_CTX| parameter, which contains a pool of |BIGNUMs|. The |ctx|
350
- * argument to a public function may be NULL, in which case a local |BN_CTX|
351
- * will be created just for the lifetime of that call.
352
- *
353
- * A function must call |BN_CTX_start| first. Then, |BN_CTX_get| may be called
354
- * repeatedly to obtain temporary |BIGNUM|s. All |BN_CTX_get| calls must be made
355
- * before calling any other functions that use the |ctx| as an argument.
356
- *
357
- * Finally, |BN_CTX_end| must be called before returning from the function.
358
- * When |BN_CTX_end| is called, the |BIGNUM| pointers obtained from
359
- * |BN_CTX_get| become invalid. */
360
-
361
- /* BN_CTX_new returns a new, empty BN_CTX or NULL on allocation failure. */
329
+ // BIGNUM pools.
330
+ //
331
+ // Certain BIGNUM operations need to use many temporary variables and
332
+ // allocating and freeing them can be quite slow. Thus such operations typically
333
+ // take a |BN_CTX| parameter, which contains a pool of |BIGNUMs|. The |ctx|
334
+ // argument to a public function may be NULL, in which case a local |BN_CTX|
335
+ // will be created just for the lifetime of that call.
336
+ //
337
+ // A function must call |BN_CTX_start| first. Then, |BN_CTX_get| may be called
338
+ // repeatedly to obtain temporary |BIGNUM|s. All |BN_CTX_get| calls must be made
339
+ // before calling any other functions that use the |ctx| as an argument.
340
+ //
341
+ // Finally, |BN_CTX_end| must be called before returning from the function.
342
+ // When |BN_CTX_end| is called, the |BIGNUM| pointers obtained from
343
+ // |BN_CTX_get| become invalid.
344
+
345
+ // BN_CTX_new returns a new, empty BN_CTX or NULL on allocation failure.
362
346
  OPENSSL_EXPORT BN_CTX *BN_CTX_new(void);
363
347
 
364
- /* BN_CTX_free frees all BIGNUMs contained in |ctx| and then frees |ctx|
365
- * itself. */
348
+ // BN_CTX_free frees all BIGNUMs contained in |ctx| and then frees |ctx|
349
+ // itself.
366
350
  OPENSSL_EXPORT void BN_CTX_free(BN_CTX *ctx);
367
351
 
368
- /* BN_CTX_start "pushes" a new entry onto the |ctx| stack and allows future
369
- * calls to |BN_CTX_get|. */
352
+ // BN_CTX_start "pushes" a new entry onto the |ctx| stack and allows future
353
+ // calls to |BN_CTX_get|.
370
354
  OPENSSL_EXPORT void BN_CTX_start(BN_CTX *ctx);
371
355
 
372
- /* BN_CTX_get returns a new |BIGNUM|, or NULL on allocation failure. Once
373
- * |BN_CTX_get| has returned NULL, all future calls will also return NULL until
374
- * |BN_CTX_end| is called. */
356
+ // BN_CTX_get returns a new |BIGNUM|, or NULL on allocation failure. Once
357
+ // |BN_CTX_get| has returned NULL, all future calls will also return NULL until
358
+ // |BN_CTX_end| is called.
375
359
  OPENSSL_EXPORT BIGNUM *BN_CTX_get(BN_CTX *ctx);
376
360
 
377
- /* BN_CTX_end invalidates all |BIGNUM|s returned from |BN_CTX_get| since the
378
- * matching |BN_CTX_start| call. */
361
+ // BN_CTX_end invalidates all |BIGNUM|s returned from |BN_CTX_get| since the
362
+ // matching |BN_CTX_start| call.
379
363
  OPENSSL_EXPORT void BN_CTX_end(BN_CTX *ctx);
380
364
 
381
365
 
382
- /* Simple arithmetic */
366
+ // Simple arithmetic
383
367
 
384
- /* BN_add sets |r| = |a| + |b|, where |r| may be the same pointer as either |a|
385
- * or |b|. It returns one on success and zero on allocation failure. */
368
+ // BN_add sets |r| = |a| + |b|, where |r| may be the same pointer as either |a|
369
+ // or |b|. It returns one on success and zero on allocation failure.
386
370
  OPENSSL_EXPORT int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
387
371
 
388
- /* BN_uadd sets |r| = |a| + |b|, where |a| and |b| are non-negative and |r| may
389
- * be the same pointer as either |a| or |b|. It returns one on success and zero
390
- * on allocation failure. */
372
+ // BN_uadd sets |r| = |a| + |b|, where |a| and |b| are non-negative and |r| may
373
+ // be the same pointer as either |a| or |b|. It returns one on success and zero
374
+ // on allocation failure.
391
375
  OPENSSL_EXPORT int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
392
376
 
393
- /* BN_add_word adds |w| to |a|. It returns one on success and zero otherwise. */
377
+ // BN_add_word adds |w| to |a|. It returns one on success and zero otherwise.
394
378
  OPENSSL_EXPORT int BN_add_word(BIGNUM *a, BN_ULONG w);
395
379
 
396
- /* BN_sub sets |r| = |a| - |b|, where |r| may be the same pointer as either |a|
397
- * or |b|. It returns one on success and zero on allocation failure. */
380
+ // BN_sub sets |r| = |a| - |b|, where |r| may be the same pointer as either |a|
381
+ // or |b|. It returns one on success and zero on allocation failure.
398
382
  OPENSSL_EXPORT int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
399
383
 
400
- /* BN_usub sets |r| = |a| - |b|, where |a| and |b| are non-negative integers,
401
- * |b| < |a| and |r| may be the same pointer as either |a| or |b|. It returns
402
- * one on success and zero on allocation failure. */
384
+ // BN_usub sets |r| = |a| - |b|, where |a| and |b| are non-negative integers,
385
+ // |b| < |a| and |r| may be the same pointer as either |a| or |b|. It returns
386
+ // one on success and zero on allocation failure.
403
387
  OPENSSL_EXPORT int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
404
388
 
405
- /* BN_sub_word subtracts |w| from |a|. It returns one on success and zero on
406
- * allocation failure. */
389
+ // BN_sub_word subtracts |w| from |a|. It returns one on success and zero on
390
+ // allocation failure.
407
391
  OPENSSL_EXPORT int BN_sub_word(BIGNUM *a, BN_ULONG w);
408
392
 
409
- /* BN_mul sets |r| = |a| * |b|, where |r| may be the same pointer as |a| or
410
- * |b|. Returns one on success and zero otherwise. */
393
+ // BN_mul sets |r| = |a| * |b|, where |r| may be the same pointer as |a| or
394
+ // |b|. Returns one on success and zero otherwise.
411
395
  OPENSSL_EXPORT int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
412
396
  BN_CTX *ctx);
413
397
 
414
- /* BN_mul_word sets |bn| = |bn| * |w|. It returns one on success or zero on
415
- * allocation failure. */
398
+ // BN_mul_word sets |bn| = |bn| * |w|. It returns one on success or zero on
399
+ // allocation failure.
416
400
  OPENSSL_EXPORT int BN_mul_word(BIGNUM *bn, BN_ULONG w);
417
401
 
418
- /* BN_sqr sets |r| = |a|^2 (i.e. squares), where |r| may be the same pointer as
419
- * |a|. Returns one on success and zero otherwise. This is more efficient than
420
- * BN_mul(r, a, a, ctx). */
402
+ // BN_sqr sets |r| = |a|^2 (i.e. squares), where |r| may be the same pointer as
403
+ // |a|. Returns one on success and zero otherwise. This is more efficient than
404
+ // BN_mul(r, a, a, ctx).
421
405
  OPENSSL_EXPORT int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx);
422
406
 
423
- /* BN_div divides |numerator| by |divisor| and places the result in |quotient|
424
- * and the remainder in |rem|. Either of |quotient| or |rem| may be NULL, in
425
- * which case the respective value is not returned. The result is rounded
426
- * towards zero; thus if |numerator| is negative, the remainder will be zero or
427
- * negative. It returns one on success or zero on error. */
407
+ // BN_div divides |numerator| by |divisor| and places the result in |quotient|
408
+ // and the remainder in |rem|. Either of |quotient| or |rem| may be NULL, in
409
+ // which case the respective value is not returned. The result is rounded
410
+ // towards zero; thus if |numerator| is negative, the remainder will be zero or
411
+ // negative. It returns one on success or zero on error.
428
412
  OPENSSL_EXPORT int BN_div(BIGNUM *quotient, BIGNUM *rem,
429
413
  const BIGNUM *numerator, const BIGNUM *divisor,
430
414
  BN_CTX *ctx);
431
415
 
432
- /* BN_div_word sets |numerator| = |numerator|/|divisor| and returns the
433
- * remainder or (BN_ULONG)-1 on error. */
416
+ // BN_div_word sets |numerator| = |numerator|/|divisor| and returns the
417
+ // remainder or (BN_ULONG)-1 on error.
434
418
  OPENSSL_EXPORT BN_ULONG BN_div_word(BIGNUM *numerator, BN_ULONG divisor);
435
419
 
436
- /* BN_sqrt sets |*out_sqrt| (which may be the same |BIGNUM| as |in|) to the
437
- * square root of |in|, using |ctx|. It returns one on success or zero on
438
- * error. Negative numbers and non-square numbers will result in an error with
439
- * appropriate errors on the error queue. */
420
+ // BN_sqrt sets |*out_sqrt| (which may be the same |BIGNUM| as |in|) to the
421
+ // square root of |in|, using |ctx|. It returns one on success or zero on
422
+ // error. Negative numbers and non-square numbers will result in an error with
423
+ // appropriate errors on the error queue.
440
424
  OPENSSL_EXPORT int BN_sqrt(BIGNUM *out_sqrt, const BIGNUM *in, BN_CTX *ctx);
441
425
 
442
426
 
443
- /* Comparison functions */
427
+ // Comparison functions
444
428
 
445
- /* BN_cmp returns a value less than, equal to or greater than zero if |a| is
446
- * less than, equal to or greater than |b|, respectively. */
429
+ // BN_cmp returns a value less than, equal to or greater than zero if |a| is
430
+ // less than, equal to or greater than |b|, respectively.
447
431
  OPENSSL_EXPORT int BN_cmp(const BIGNUM *a, const BIGNUM *b);
448
432
 
449
- /* BN_cmp_word is like |BN_cmp| except it takes its second argument as a
450
- * |BN_ULONG| instead of a |BIGNUM|. */
433
+ // BN_cmp_word is like |BN_cmp| except it takes its second argument as a
434
+ // |BN_ULONG| instead of a |BIGNUM|.
451
435
  OPENSSL_EXPORT int BN_cmp_word(const BIGNUM *a, BN_ULONG b);
452
436
 
453
- /* BN_ucmp returns a value less than, equal to or greater than zero if the
454
- * absolute value of |a| is less than, equal to or greater than the absolute
455
- * value of |b|, respectively. */
437
+ // BN_ucmp returns a value less than, equal to or greater than zero if the
438
+ // absolute value of |a| is less than, equal to or greater than the absolute
439
+ // value of |b|, respectively.
456
440
  OPENSSL_EXPORT int BN_ucmp(const BIGNUM *a, const BIGNUM *b);
457
441
 
458
- /* BN_equal_consttime returns one if |a| is equal to |b|, and zero otherwise.
459
- * It takes an amount of time dependent on the sizes of |a| and |b|, but
460
- * independent of the contents (including the signs) of |a| and |b|. */
442
+ // BN_equal_consttime returns one if |a| is equal to |b|, and zero otherwise.
443
+ // It takes an amount of time dependent on the sizes of |a| and |b|, but
444
+ // independent of the contents (including the signs) of |a| and |b|.
461
445
  OPENSSL_EXPORT int BN_equal_consttime(const BIGNUM *a, const BIGNUM *b);
462
446
 
463
- /* BN_abs_is_word returns one if the absolute value of |bn| equals |w| and zero
464
- * otherwise. */
447
+ // BN_abs_is_word returns one if the absolute value of |bn| equals |w| and zero
448
+ // otherwise.
465
449
  OPENSSL_EXPORT int BN_abs_is_word(const BIGNUM *bn, BN_ULONG w);
466
450
 
467
- /* BN_is_zero returns one if |bn| is zero and zero otherwise. */
451
+ // BN_is_zero returns one if |bn| is zero and zero otherwise.
468
452
  OPENSSL_EXPORT int BN_is_zero(const BIGNUM *bn);
469
453
 
470
- /* BN_is_one returns one if |bn| equals one and zero otherwise. */
454
+ // BN_is_one returns one if |bn| equals one and zero otherwise.
471
455
  OPENSSL_EXPORT int BN_is_one(const BIGNUM *bn);
472
456
 
473
- /* BN_is_word returns one if |bn| is exactly |w| and zero otherwise. */
457
+ // BN_is_word returns one if |bn| is exactly |w| and zero otherwise.
474
458
  OPENSSL_EXPORT int BN_is_word(const BIGNUM *bn, BN_ULONG w);
475
459
 
476
- /* BN_is_odd returns one if |bn| is odd and zero otherwise. */
460
+ // BN_is_odd returns one if |bn| is odd and zero otherwise.
477
461
  OPENSSL_EXPORT int BN_is_odd(const BIGNUM *bn);
478
462
 
479
- /* BN_is_pow2 returns 1 if |a| is a power of two, and 0 otherwise. */
463
+ // BN_is_pow2 returns 1 if |a| is a power of two, and 0 otherwise.
480
464
  OPENSSL_EXPORT int BN_is_pow2(const BIGNUM *a);
481
465
 
482
- /* Bitwise operations. */
466
+ // Bitwise operations.
483
467
 
484
- /* BN_lshift sets |r| equal to |a| << n. The |a| and |r| arguments may be the
485
- * same |BIGNUM|. It returns one on success and zero on allocation failure. */
468
+ // BN_lshift sets |r| equal to |a| << n. The |a| and |r| arguments may be the
469
+ // same |BIGNUM|. It returns one on success and zero on allocation failure.
486
470
  OPENSSL_EXPORT int BN_lshift(BIGNUM *r, const BIGNUM *a, int n);
487
471
 
488
- /* BN_lshift1 sets |r| equal to |a| << 1, where |r| and |a| may be the same
489
- * pointer. It returns one on success and zero on allocation failure. */
472
+ // BN_lshift1 sets |r| equal to |a| << 1, where |r| and |a| may be the same
473
+ // pointer. It returns one on success and zero on allocation failure.
490
474
  OPENSSL_EXPORT int BN_lshift1(BIGNUM *r, const BIGNUM *a);
491
475
 
492
- /* BN_rshift sets |r| equal to |a| >> n, where |r| and |a| may be the same
493
- * pointer. It returns one on success and zero on allocation failure. */
476
+ // BN_rshift sets |r| equal to |a| >> n, where |r| and |a| may be the same
477
+ // pointer. It returns one on success and zero on allocation failure.
494
478
  OPENSSL_EXPORT int BN_rshift(BIGNUM *r, const BIGNUM *a, int n);
495
479
 
496
- /* BN_rshift1 sets |r| equal to |a| >> 1, where |r| and |a| may be the same
497
- * pointer. It returns one on success and zero on allocation failure. */
480
+ // BN_rshift1 sets |r| equal to |a| >> 1, where |r| and |a| may be the same
481
+ // pointer. It returns one on success and zero on allocation failure.
498
482
  OPENSSL_EXPORT int BN_rshift1(BIGNUM *r, const BIGNUM *a);
499
483
 
500
- /* BN_set_bit sets the |n|th, least-significant bit in |a|. For example, if |a|
501
- * is 2 then setting bit zero will make it 3. It returns one on success or zero
502
- * on allocation failure. */
484
+ // BN_set_bit sets the |n|th, least-significant bit in |a|. For example, if |a|
485
+ // is 2 then setting bit zero will make it 3. It returns one on success or zero
486
+ // on allocation failure.
503
487
  OPENSSL_EXPORT int BN_set_bit(BIGNUM *a, int n);
504
488
 
505
- /* BN_clear_bit clears the |n|th, least-significant bit in |a|. For example, if
506
- * |a| is 3, clearing bit zero will make it two. It returns one on success or
507
- * zero on allocation failure. */
489
+ // BN_clear_bit clears the |n|th, least-significant bit in |a|. For example, if
490
+ // |a| is 3, clearing bit zero will make it two. It returns one on success or
491
+ // zero on allocation failure.
508
492
  OPENSSL_EXPORT int BN_clear_bit(BIGNUM *a, int n);
509
493
 
510
- /* BN_is_bit_set returns the value of the |n|th, least-significant bit in |a|,
511
- * or zero if the bit doesn't exist. */
494
+ // BN_is_bit_set returns the value of the |n|th, least-significant bit in |a|,
495
+ // or zero if the bit doesn't exist.
512
496
  OPENSSL_EXPORT int BN_is_bit_set(const BIGNUM *a, int n);
513
497
 
514
- /* BN_mask_bits truncates |a| so that it is only |n| bits long. It returns one
515
- * on success or zero if |n| is greater than the length of |a| already. */
498
+ // BN_mask_bits truncates |a| so that it is only |n| bits long. It returns one
499
+ // on success or zero if |n| is greater than the length of |a| already.
516
500
  OPENSSL_EXPORT int BN_mask_bits(BIGNUM *a, int n);
517
501
 
518
502
 
519
- /* Modulo arithmetic. */
503
+ // Modulo arithmetic.
520
504
 
521
- /* BN_mod_word returns |a| mod |w| or (BN_ULONG)-1 on error. */
505
+ // BN_mod_word returns |a| mod |w| or (BN_ULONG)-1 on error.
522
506
  OPENSSL_EXPORT BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w);
523
507
 
524
- /* BN_mod_pow2 sets |r| = |a| mod 2^|e|. It returns 1 on success and
525
- * 0 on error. */
508
+ // BN_mod_pow2 sets |r| = |a| mod 2^|e|. It returns 1 on success and
509
+ // 0 on error.
526
510
  OPENSSL_EXPORT int BN_mod_pow2(BIGNUM *r, const BIGNUM *a, size_t e);
527
511
 
528
- /* BN_nnmod_pow2 sets |r| = |a| mod 2^|e| where |r| is always positive.
529
- * It returns 1 on success and 0 on error. */
512
+ // BN_nnmod_pow2 sets |r| = |a| mod 2^|e| where |r| is always positive.
513
+ // It returns 1 on success and 0 on error.
530
514
  OPENSSL_EXPORT int BN_nnmod_pow2(BIGNUM *r, const BIGNUM *a, size_t e);
531
515
 
532
- /* BN_mod is a helper macro that calls |BN_div| and discards the quotient. */
516
+ // BN_mod is a helper macro that calls |BN_div| and discards the quotient.
533
517
  #define BN_mod(rem, numerator, divisor, ctx) \
534
518
  BN_div(NULL, (rem), (numerator), (divisor), (ctx))
535
519
 
536
- /* BN_nnmod is a non-negative modulo function. It acts like |BN_mod|, but 0 <=
537
- * |rem| < |divisor| is always true. It returns one on success and zero on
538
- * error. */
520
+ // BN_nnmod is a non-negative modulo function. It acts like |BN_mod|, but 0 <=
521
+ // |rem| < |divisor| is always true. It returns one on success and zero on
522
+ // error.
539
523
  OPENSSL_EXPORT int BN_nnmod(BIGNUM *rem, const BIGNUM *numerator,
540
524
  const BIGNUM *divisor, BN_CTX *ctx);
541
525
 
542
- /* BN_mod_add sets |r| = |a| + |b| mod |m|. It returns one on success and zero
543
- * on error. */
526
+ // BN_mod_add sets |r| = |a| + |b| mod |m|. It returns one on success and zero
527
+ // on error.
544
528
  OPENSSL_EXPORT int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
545
529
  const BIGNUM *m, BN_CTX *ctx);
546
530
 
547
- /* BN_mod_add_quick acts like |BN_mod_add| but requires that |a| and |b| be
548
- * non-negative and less than |m|. */
531
+ // BN_mod_add_quick acts like |BN_mod_add| but requires that |a| and |b| be
532
+ // non-negative and less than |m|.
549
533
  OPENSSL_EXPORT int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
550
534
  const BIGNUM *m);
551
535
 
552
- /* BN_mod_sub sets |r| = |a| - |b| mod |m|. It returns one on success and zero
553
- * on error. */
536
+ // BN_mod_sub sets |r| = |a| - |b| mod |m|. It returns one on success and zero
537
+ // on error.
554
538
  OPENSSL_EXPORT int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
555
539
  const BIGNUM *m, BN_CTX *ctx);
556
540
 
557
- /* BN_mod_sub_quick acts like |BN_mod_sub| but requires that |a| and |b| be
558
- * non-negative and less than |m|. */
541
+ // BN_mod_sub_quick acts like |BN_mod_sub| but requires that |a| and |b| be
542
+ // non-negative and less than |m|.
559
543
  OPENSSL_EXPORT int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
560
544
  const BIGNUM *m);
561
545
 
562
- /* BN_mod_mul sets |r| = |a|*|b| mod |m|. It returns one on success and zero
563
- * on error. */
546
+ // BN_mod_mul sets |r| = |a|*|b| mod |m|. It returns one on success and zero
547
+ // on error.
564
548
  OPENSSL_EXPORT int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
565
549
  const BIGNUM *m, BN_CTX *ctx);
566
550
 
567
- /* BN_mod_sqr sets |r| = |a|^2 mod |m|. It returns one on success and zero
568
- * on error. */
551
+ // BN_mod_sqr sets |r| = |a|^2 mod |m|. It returns one on success and zero
552
+ // on error.
569
553
  OPENSSL_EXPORT int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m,
570
554
  BN_CTX *ctx);
571
555
 
572
- /* BN_mod_lshift sets |r| = (|a| << n) mod |m|, where |r| and |a| may be the
573
- * same pointer. It returns one on success and zero on error. */
556
+ // BN_mod_lshift sets |r| = (|a| << n) mod |m|, where |r| and |a| may be the
557
+ // same pointer. It returns one on success and zero on error.
574
558
  OPENSSL_EXPORT int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n,
575
559
  const BIGNUM *m, BN_CTX *ctx);
576
560
 
577
- /* BN_mod_lshift_quick acts like |BN_mod_lshift| but requires that |a| be
578
- * non-negative and less than |m|. */
561
+ // BN_mod_lshift_quick acts like |BN_mod_lshift| but requires that |a| be
562
+ // non-negative and less than |m|.
579
563
  OPENSSL_EXPORT int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n,
580
564
  const BIGNUM *m);
581
565
 
582
- /* BN_mod_lshift1 sets |r| = (|a| << 1) mod |m|, where |r| and |a| may be the
583
- * same pointer. It returns one on success and zero on error. */
566
+ // BN_mod_lshift1 sets |r| = (|a| << 1) mod |m|, where |r| and |a| may be the
567
+ // same pointer. It returns one on success and zero on error.
584
568
  OPENSSL_EXPORT int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m,
585
569
  BN_CTX *ctx);
586
570
 
587
- /* BN_mod_lshift1_quick acts like |BN_mod_lshift1| but requires that |a| be
588
- * non-negative and less than |m|. */
571
+ // BN_mod_lshift1_quick acts like |BN_mod_lshift1| but requires that |a| be
572
+ // non-negative and less than |m|.
589
573
  OPENSSL_EXPORT int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a,
590
574
  const BIGNUM *m);
591
575
 
592
- /* BN_mod_sqrt returns a newly-allocated |BIGNUM|, r, such that
593
- * r^2 == a (mod p). |p| must be a prime. It returns NULL on error or if |a| is
594
- * not a square mod |p|. In the latter case, it will add |BN_R_NOT_A_SQUARE| to
595
- * the error queue. */
576
+ // BN_mod_sqrt returns a newly-allocated |BIGNUM|, r, such that
577
+ // r^2 == a (mod p). |p| must be a prime. It returns NULL on error or if |a| is
578
+ // not a square mod |p|. In the latter case, it will add |BN_R_NOT_A_SQUARE| to
579
+ // the error queue.
596
580
  OPENSSL_EXPORT BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p,
597
581
  BN_CTX *ctx);
598
582
 
599
583
 
600
- /* Random and prime number generation. */
584
+ // Random and prime number generation.
601
585
 
602
- /* The following are values for the |top| parameter of |BN_rand|. */
586
+ // The following are values for the |top| parameter of |BN_rand|.
603
587
  #define BN_RAND_TOP_ANY (-1)
604
588
  #define BN_RAND_TOP_ONE 0
605
589
  #define BN_RAND_TOP_TWO 1
606
590
 
607
- /* The following are values for the |bottom| parameter of |BN_rand|. */
591
+ // The following are values for the |bottom| parameter of |BN_rand|.
608
592
  #define BN_RAND_BOTTOM_ANY 0
609
593
  #define BN_RAND_BOTTOM_ODD 1
610
594
 
611
- /* BN_rand sets |rnd| to a random number of length |bits|. It returns one on
612
- * success and zero otherwise.
613
- *
614
- * |top| must be one of the |BN_RAND_TOP_*| values. If |BN_RAND_TOP_ONE|, the
615
- * most-significant bit, if any, will be set. If |BN_RAND_TOP_TWO|, the two
616
- * most significant bits, if any, will be set. If |BN_RAND_TOP_ANY|, no extra
617
- * action will be taken and |BN_num_bits(rnd)| may not equal |bits| if the most
618
- * significant bits randomly ended up as zeros.
619
- *
620
- * |bottom| must be one of the |BN_RAND_BOTTOM_*| values. If
621
- * |BN_RAND_BOTTOM_ODD|, the least-significant bit, if any, will be set. If
622
- * |BN_RAND_BOTTOM_ANY|, no extra action will be taken. */
595
+ // BN_rand sets |rnd| to a random number of length |bits|. It returns one on
596
+ // success and zero otherwise.
597
+ //
598
+ // |top| must be one of the |BN_RAND_TOP_*| values. If |BN_RAND_TOP_ONE|, the
599
+ // most-significant bit, if any, will be set. If |BN_RAND_TOP_TWO|, the two
600
+ // most significant bits, if any, will be set. If |BN_RAND_TOP_ANY|, no extra
601
+ // action will be taken and |BN_num_bits(rnd)| may not equal |bits| if the most
602
+ // significant bits randomly ended up as zeros.
603
+ //
604
+ // |bottom| must be one of the |BN_RAND_BOTTOM_*| values. If
605
+ // |BN_RAND_BOTTOM_ODD|, the least-significant bit, if any, will be set. If
606
+ // |BN_RAND_BOTTOM_ANY|, no extra action will be taken.
623
607
  OPENSSL_EXPORT int BN_rand(BIGNUM *rnd, int bits, int top, int bottom);
624
608
 
625
- /* BN_pseudo_rand is an alias for |BN_rand|. */
609
+ // BN_pseudo_rand is an alias for |BN_rand|.
626
610
  OPENSSL_EXPORT int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom);
627
611
 
628
- /* BN_rand_range is equivalent to |BN_rand_range_ex| with |min_inclusive| set
629
- * to zero and |max_exclusive| set to |range|. */
612
+ // BN_rand_range is equivalent to |BN_rand_range_ex| with |min_inclusive| set
613
+ // to zero and |max_exclusive| set to |range|.
630
614
  OPENSSL_EXPORT int BN_rand_range(BIGNUM *rnd, const BIGNUM *range);
631
615
 
632
- /* BN_rand_range_ex sets |rnd| to a random value in
633
- * [min_inclusive..max_exclusive). It returns one on success and zero
634
- * otherwise. */
616
+ // BN_rand_range_ex sets |rnd| to a random value in
617
+ // [min_inclusive..max_exclusive). It returns one on success and zero
618
+ // otherwise.
635
619
  OPENSSL_EXPORT int BN_rand_range_ex(BIGNUM *r, BN_ULONG min_inclusive,
636
620
  const BIGNUM *max_exclusive);
637
621
 
638
- /* BN_pseudo_rand_range is an alias for BN_rand_range. */
622
+ // BN_pseudo_rand_range is an alias for BN_rand_range.
639
623
  OPENSSL_EXPORT int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range);
640
624
 
641
- /* BN_generate_dsa_nonce generates a random number 0 <= out < range. Unlike
642
- * BN_rand_range, it also includes the contents of |priv| and |message| in the
643
- * generation so that an RNG failure isn't fatal as long as |priv| remains
644
- * secret. This is intended for use in DSA and ECDSA where an RNG weakness
645
- * leads directly to private key exposure unless this function is used.
646
- * It returns one on success and zero on error. */
625
+ // BN_generate_dsa_nonce generates a random number 0 <= out < range. Unlike
626
+ // BN_rand_range, it also includes the contents of |priv| and |message| in the
627
+ // generation so that an RNG failure isn't fatal as long as |priv| remains
628
+ // secret. This is intended for use in DSA and ECDSA where an RNG weakness
629
+ // leads directly to private key exposure unless this function is used.
630
+ // It returns one on success and zero on error.
647
631
  OPENSSL_EXPORT int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range,
648
632
  const BIGNUM *priv,
649
633
  const uint8_t *message,
650
634
  size_t message_len, BN_CTX *ctx);
651
635
 
652
- /* BN_GENCB holds a callback function that is used by generation functions that
653
- * can take a very long time to complete. Use |BN_GENCB_set| to initialise a
654
- * |BN_GENCB| structure.
655
- *
656
- * The callback receives the address of that |BN_GENCB| structure as its last
657
- * argument and the user is free to put an arbitrary pointer in |arg|. The other
658
- * arguments are set as follows:
659
- * event=BN_GENCB_GENERATED, n=i: after generating the i'th possible prime
660
- * number.
661
- * event=BN_GENCB_PRIME_TEST, n=-1: when finished trial division primality
662
- * checks.
663
- * event=BN_GENCB_PRIME_TEST, n=i: when the i'th primality test has finished.
664
- *
665
- * The callback can return zero to abort the generation progress or one to
666
- * allow it to continue.
667
- *
668
- * When other code needs to call a BN generation function it will often take a
669
- * BN_GENCB argument and may call the function with other argument values. */
636
+ // BN_GENCB holds a callback function that is used by generation functions that
637
+ // can take a very long time to complete. Use |BN_GENCB_set| to initialise a
638
+ // |BN_GENCB| structure.
639
+ //
640
+ // The callback receives the address of that |BN_GENCB| structure as its last
641
+ // argument and the user is free to put an arbitrary pointer in |arg|. The other
642
+ // arguments are set as follows:
643
+ // event=BN_GENCB_GENERATED, n=i: after generating the i'th possible prime
644
+ // number.
645
+ // event=BN_GENCB_PRIME_TEST, n=-1: when finished trial division primality
646
+ // checks.
647
+ // event=BN_GENCB_PRIME_TEST, n=i: when the i'th primality test has finished.
648
+ //
649
+ // The callback can return zero to abort the generation progress or one to
650
+ // allow it to continue.
651
+ //
652
+ // When other code needs to call a BN generation function it will often take a
653
+ // BN_GENCB argument and may call the function with other argument values.
670
654
  #define BN_GENCB_GENERATED 0
671
655
  #define BN_GENCB_PRIME_TEST 1
672
656
 
673
657
  struct bn_gencb_st {
674
- void *arg; /* callback-specific data */
658
+ void *arg; // callback-specific data
675
659
  int (*callback)(int event, int n, struct bn_gencb_st *);
676
660
  };
677
661
 
678
- /* BN_GENCB_set configures |callback| to call |f| and sets |callout->arg| to
679
- * |arg|. */
662
+ // BN_GENCB_set configures |callback| to call |f| and sets |callout->arg| to
663
+ // |arg|.
680
664
  OPENSSL_EXPORT void BN_GENCB_set(BN_GENCB *callback,
681
665
  int (*f)(int event, int n,
682
666
  struct bn_gencb_st *),
683
667
  void *arg);
684
668
 
685
- /* BN_GENCB_call calls |callback|, if not NULL, and returns the return value of
686
- * the callback, or 1 if |callback| is NULL. */
669
+ // BN_GENCB_call calls |callback|, if not NULL, and returns the return value of
670
+ // the callback, or 1 if |callback| is NULL.
687
671
  OPENSSL_EXPORT int BN_GENCB_call(BN_GENCB *callback, int event, int n);
688
672
 
689
- /* BN_generate_prime_ex sets |ret| to a prime number of |bits| length. If safe
690
- * is non-zero then the prime will be such that (ret-1)/2 is also a prime.
691
- * (This is needed for Diffie-Hellman groups to ensure that the only subgroups
692
- * are of size 2 and (p-1)/2.).
693
- *
694
- * If |add| is not NULL, the prime will fulfill the condition |ret| % |add| ==
695
- * |rem| in order to suit a given generator. (If |rem| is NULL then |ret| %
696
- * |add| == 1.)
697
- *
698
- * If |cb| is not NULL, it will be called during processing to give an
699
- * indication of progress. See the comments for |BN_GENCB|. It returns one on
700
- * success and zero otherwise. */
673
+ // BN_generate_prime_ex sets |ret| to a prime number of |bits| length. If safe
674
+ // is non-zero then the prime will be such that (ret-1)/2 is also a prime.
675
+ // (This is needed for Diffie-Hellman groups to ensure that the only subgroups
676
+ // are of size 2 and (p-1)/2.).
677
+ //
678
+ // If |add| is not NULL, the prime will fulfill the condition |ret| % |add| ==
679
+ // |rem| in order to suit a given generator. (If |rem| is NULL then |ret| %
680
+ // |add| == 1.)
681
+ //
682
+ // If |cb| is not NULL, it will be called during processing to give an
683
+ // indication of progress. See the comments for |BN_GENCB|. It returns one on
684
+ // success and zero otherwise.
701
685
  OPENSSL_EXPORT int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe,
702
686
  const BIGNUM *add, const BIGNUM *rem,
703
687
  BN_GENCB *cb);
704
688
 
705
- /* BN_prime_checks is magic value that can be used as the |checks| argument to
706
- * the primality testing functions in order to automatically select a number of
707
- * Miller-Rabin checks that gives a false positive rate of ~2^{-80}. */
689
+ // BN_prime_checks is magic value that can be used as the |checks| argument to
690
+ // the primality testing functions in order to automatically select a number of
691
+ // Miller-Rabin checks that gives a false positive rate of ~2^{-80}.
708
692
  #define BN_prime_checks 0
709
693
 
710
- /* BN_primality_test sets |*is_probably_prime| to one if |candidate| is
711
- * probably a prime number by the Miller-Rabin test or zero if it's certainly
712
- * not.
713
- *
714
- * If |do_trial_division| is non-zero then |candidate| will be tested against a
715
- * list of small primes before Miller-Rabin tests. The probability of this
716
- * function returning a false positive is 2^{2*checks}. If |checks| is
717
- * |BN_prime_checks| then a value that results in approximately 2^{-80} false
718
- * positive probability is used. If |cb| is not NULL then it is called during
719
- * the checking process. See the comment above |BN_GENCB|.
720
- *
721
- * The function returns one on success and zero on error.
722
- *
723
- * (If you are unsure whether you want |do_trial_division|, don't set it.) */
694
+ // bn_primality_result_t enumerates the outcomes of primality-testing.
695
+ enum bn_primality_result_t {
696
+ bn_probably_prime,
697
+ bn_composite,
698
+ bn_non_prime_power_composite,
699
+ };
700
+
701
+ // BN_enhanced_miller_rabin_primality_test tests whether |w| is probably a prime
702
+ // number using the Enhanced Miller-Rabin Test (FIPS 186-4 C.3.2) with
703
+ // |iterations| iterations and returns the result in |out_result|. Enhanced
704
+ // Miller-Rabin tests primality for odd integers greater than 3, returning
705
+ // |bn_probably_prime| if the number is probably prime,
706
+ // |bn_non_prime_power_composite| if the number is a composite that is not the
707
+ // power of a single prime, and |bn_composite| otherwise. If |iterations| is
708
+ // |BN_prime_checks|, then a value that results in a false positive rate lower
709
+ // than the number-field sieve security level of |w| is used. It returns one on
710
+ // success and zero on failure. If |cb| is not NULL, then it is called during
711
+ // each iteration of the primality test.
712
+ int BN_enhanced_miller_rabin_primality_test(
713
+ enum bn_primality_result_t *out_result, const BIGNUM *w, int iterations,
714
+ BN_CTX *ctx, BN_GENCB *cb);
715
+
716
+ // BN_primality_test sets |*is_probably_prime| to one if |candidate| is
717
+ // probably a prime number by the Miller-Rabin test or zero if it's certainly
718
+ // not.
719
+ //
720
+ // If |do_trial_division| is non-zero then |candidate| will be tested against a
721
+ // list of small primes before Miller-Rabin tests. The probability of this
722
+ // function returning a false positive is 2^{2*checks}. If |checks| is
723
+ // |BN_prime_checks| then a value that results in a false positive rate lower
724
+ // than the number-field sieve security level of |candidate| is used. If |cb| is
725
+ // not NULL then it is called during the checking process. See the comment above
726
+ // |BN_GENCB|.
727
+ //
728
+ // The function returns one on success and zero on error.
729
+ //
730
+ // (If you are unsure whether you want |do_trial_division|, don't set it.)
724
731
  OPENSSL_EXPORT int BN_primality_test(int *is_probably_prime,
725
732
  const BIGNUM *candidate, int checks,
726
733
  BN_CTX *ctx, int do_trial_division,
727
734
  BN_GENCB *cb);
728
735
 
729
- /* BN_is_prime_fasttest_ex returns one if |candidate| is probably a prime
730
- * number by the Miller-Rabin test, zero if it's certainly not and -1 on error.
731
- *
732
- * If |do_trial_division| is non-zero then |candidate| will be tested against a
733
- * list of small primes before Miller-Rabin tests. The probability of this
734
- * function returning one when |candidate| is composite is 2^{2*checks}. If
735
- * |checks| is |BN_prime_checks| then a value that results in approximately
736
- * 2^{-80} false positive probability is used. If |cb| is not NULL then it is
737
- * called during the checking process. See the comment above |BN_GENCB|.
738
- *
739
- * WARNING: deprecated. Use |BN_primality_test|. */
736
+ // BN_is_prime_fasttest_ex returns one if |candidate| is probably a prime
737
+ // number by the Miller-Rabin test, zero if it's certainly not and -1 on error.
738
+ //
739
+ // If |do_trial_division| is non-zero then |candidate| will be tested against a
740
+ // list of small primes before Miller-Rabin tests. The probability of this
741
+ // function returning one when |candidate| is composite is 2^{2*checks}. If
742
+ // |checks| is |BN_prime_checks| then a value that results in a false positive
743
+ // rate lower than the number-field sieve security level of |candidate| is used.
744
+ // If |cb| is not NULL then it is called during the checking process. See the
745
+ // comment above |BN_GENCB|.
746
+ //
747
+ // WARNING: deprecated. Use |BN_primality_test|.
740
748
  OPENSSL_EXPORT int BN_is_prime_fasttest_ex(const BIGNUM *candidate, int checks,
741
749
  BN_CTX *ctx, int do_trial_division,
742
750
  BN_GENCB *cb);
743
751
 
744
- /* BN_is_prime_ex acts the same as |BN_is_prime_fasttest_ex| with
745
- * |do_trial_division| set to zero.
746
- *
747
- * WARNING: deprecated: Use |BN_primality_test|. */
752
+ // BN_is_prime_ex acts the same as |BN_is_prime_fasttest_ex| with
753
+ // |do_trial_division| set to zero.
754
+ //
755
+ // WARNING: deprecated: Use |BN_primality_test|.
748
756
  OPENSSL_EXPORT int BN_is_prime_ex(const BIGNUM *candidate, int checks,
749
757
  BN_CTX *ctx, BN_GENCB *cb);
750
758
 
751
759
 
752
- /* Number theory functions */
760
+ // Number theory functions
753
761
 
754
- /* BN_gcd sets |r| = gcd(|a|, |b|). It returns one on success and zero
755
- * otherwise. */
762
+ // BN_gcd sets |r| = gcd(|a|, |b|). It returns one on success and zero
763
+ // otherwise.
756
764
  OPENSSL_EXPORT int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
757
765
  BN_CTX *ctx);
758
766
 
759
- /* BN_mod_inverse sets |out| equal to |a|^-1, mod |n|. If |out| is NULL, a
760
- * fresh BIGNUM is allocated. It returns the result or NULL on error.
761
- *
762
- * If |n| is even then the operation is performed using an algorithm that avoids
763
- * some branches but which isn't constant-time. This function shouldn't be used
764
- * for secret values; use |BN_mod_inverse_blinded| instead. Or, if |n| is
765
- * guaranteed to be prime, use
766
- * |BN_mod_exp_mont_consttime(out, a, m_minus_2, m, ctx, m_mont)|, taking
767
- * advantage of Fermat's Little Theorem. */
767
+ // BN_mod_inverse sets |out| equal to |a|^-1, mod |n|. If |out| is NULL, a
768
+ // fresh BIGNUM is allocated. It returns the result or NULL on error.
769
+ //
770
+ // If |n| is even then the operation is performed using an algorithm that avoids
771
+ // some branches but which isn't constant-time. This function shouldn't be used
772
+ // for secret values; use |BN_mod_inverse_blinded| instead. Or, if |n| is
773
+ // guaranteed to be prime, use
774
+ // |BN_mod_exp_mont_consttime(out, a, m_minus_2, m, ctx, m_mont)|, taking
775
+ // advantage of Fermat's Little Theorem.
768
776
  OPENSSL_EXPORT BIGNUM *BN_mod_inverse(BIGNUM *out, const BIGNUM *a,
769
777
  const BIGNUM *n, BN_CTX *ctx);
770
778
 
771
- /* BN_mod_inverse_blinded sets |out| equal to |a|^-1, mod |n|, where |n| is the
772
- * Montgomery modulus for |mont|. |a| must be non-negative and must be less
773
- * than |n|. |n| must be greater than 1. |a| is blinded (masked by a random
774
- * value) to protect it against side-channel attacks. On failure, if the failure
775
- * was caused by |a| having no inverse mod |n| then |*out_no_inverse| will be
776
- * set to one; otherwise it will be set to zero. */
779
+ // BN_mod_inverse_blinded sets |out| equal to |a|^-1, mod |n|, where |n| is the
780
+ // Montgomery modulus for |mont|. |a| must be non-negative and must be less
781
+ // than |n|. |n| must be greater than 1. |a| is blinded (masked by a random
782
+ // value) to protect it against side-channel attacks. On failure, if the failure
783
+ // was caused by |a| having no inverse mod |n| then |*out_no_inverse| will be
784
+ // set to one; otherwise it will be set to zero.
777
785
  int BN_mod_inverse_blinded(BIGNUM *out, int *out_no_inverse, const BIGNUM *a,
778
786
  const BN_MONT_CTX *mont, BN_CTX *ctx);
779
787
 
780
- /* BN_mod_inverse_odd sets |out| equal to |a|^-1, mod |n|. |a| must be
781
- * non-negative and must be less than |n|. |n| must be odd. This function
782
- * shouldn't be used for secret values; use |BN_mod_inverse_blinded| instead.
783
- * Or, if |n| is guaranteed to be prime, use
784
- * |BN_mod_exp_mont_consttime(out, a, m_minus_2, m, ctx, m_mont)|, taking
785
- * advantage of Fermat's Little Theorem. It returns one on success or zero on
786
- * failure. On failure, if the failure was caused by |a| having no inverse mod
787
- * |n| then |*out_no_inverse| will be set to one; otherwise it will be set to
788
- * zero. */
788
+ // BN_mod_inverse_odd sets |out| equal to |a|^-1, mod |n|. |a| must be
789
+ // non-negative and must be less than |n|. |n| must be odd. This function
790
+ // shouldn't be used for secret values; use |BN_mod_inverse_blinded| instead.
791
+ // Or, if |n| is guaranteed to be prime, use
792
+ // |BN_mod_exp_mont_consttime(out, a, m_minus_2, m, ctx, m_mont)|, taking
793
+ // advantage of Fermat's Little Theorem. It returns one on success or zero on
794
+ // failure. On failure, if the failure was caused by |a| having no inverse mod
795
+ // |n| then |*out_no_inverse| will be set to one; otherwise it will be set to
796
+ // zero.
789
797
  int BN_mod_inverse_odd(BIGNUM *out, int *out_no_inverse, const BIGNUM *a,
790
798
  const BIGNUM *n, BN_CTX *ctx);
791
799
 
792
- /* BN_kronecker returns the Kronecker symbol of |a| and |b| (which is -1, 0 or
793
- * 1), or -2 on error. */
794
- OPENSSL_EXPORT int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
795
800
 
801
+ // Montgomery arithmetic.
796
802
 
797
- /* Montgomery arithmetic. */
803
+ // BN_MONT_CTX contains the precomputed values needed to work in a specific
804
+ // Montgomery domain.
798
805
 
799
- /* BN_MONT_CTX contains the precomputed values needed to work in a specific
800
- * Montgomery domain. */
801
-
802
- /* BN_MONT_CTX_new returns a fresh BN_MONT_CTX or NULL on allocation failure. */
806
+ // BN_MONT_CTX_new returns a fresh BN_MONT_CTX or NULL on allocation failure.
803
807
  OPENSSL_EXPORT BN_MONT_CTX *BN_MONT_CTX_new(void);
804
808
 
805
- /* BN_MONT_CTX_free frees memory associated with |mont|. */
809
+ // BN_MONT_CTX_free frees memory associated with |mont|.
806
810
  OPENSSL_EXPORT void BN_MONT_CTX_free(BN_MONT_CTX *mont);
807
811
 
808
- /* BN_MONT_CTX_copy sets |to| equal to |from|. It returns |to| on success or
809
- * NULL on error. */
812
+ // BN_MONT_CTX_copy sets |to| equal to |from|. It returns |to| on success or
813
+ // NULL on error.
810
814
  OPENSSL_EXPORT BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to,
811
815
  const BN_MONT_CTX *from);
812
816
 
813
- /* BN_MONT_CTX_set sets up a Montgomery context given the modulus, |mod|. It
814
- * returns one on success and zero on error. */
817
+ // BN_MONT_CTX_set sets up a Montgomery context given the modulus, |mod|. It
818
+ // returns one on success and zero on error.
815
819
  OPENSSL_EXPORT int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod,
816
820
  BN_CTX *ctx);
817
821
 
818
- /* BN_MONT_CTX_set_locked takes |lock| and checks whether |*pmont| is NULL. If
819
- * so, it creates a new |BN_MONT_CTX| and sets the modulus for it to |mod|. It
820
- * then stores it as |*pmont|. It returns one on success and zero on error.
821
- *
822
- * If |*pmont| is already non-NULL then it does nothing and returns one. */
822
+ // BN_MONT_CTX_set_locked takes |lock| and checks whether |*pmont| is NULL. If
823
+ // so, it creates a new |BN_MONT_CTX| and sets the modulus for it to |mod|. It
824
+ // then stores it as |*pmont|. It returns one on success and zero on error.
825
+ //
826
+ // If |*pmont| is already non-NULL then it does nothing and returns one.
823
827
  int BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_MUTEX *lock,
824
828
  const BIGNUM *mod, BN_CTX *bn_ctx);
825
829
 
826
- /* BN_to_montgomery sets |ret| equal to |a| in the Montgomery domain. |a| is
827
- * assumed to be in the range [0, n), where |n| is the Montgomery modulus. It
828
- * returns one on success or zero on error. */
830
+ // BN_to_montgomery sets |ret| equal to |a| in the Montgomery domain. |a| is
831
+ // assumed to be in the range [0, n), where |n| is the Montgomery modulus. It
832
+ // returns one on success or zero on error.
829
833
  OPENSSL_EXPORT int BN_to_montgomery(BIGNUM *ret, const BIGNUM *a,
830
834
  const BN_MONT_CTX *mont, BN_CTX *ctx);
831
835
 
832
- /* BN_from_montgomery sets |ret| equal to |a| * R^-1, i.e. translates values out
833
- * of the Montgomery domain. |a| is assumed to be in the range [0, n), where |n|
834
- * is the Montgomery modulus. It returns one on success or zero on error. */
836
+ // BN_from_montgomery sets |ret| equal to |a| * R^-1, i.e. translates values out
837
+ // of the Montgomery domain. |a| is assumed to be in the range [0, n), where |n|
838
+ // is the Montgomery modulus. It returns one on success or zero on error.
835
839
  OPENSSL_EXPORT int BN_from_montgomery(BIGNUM *ret, const BIGNUM *a,
836
840
  const BN_MONT_CTX *mont, BN_CTX *ctx);
837
841
 
838
- /* BN_mod_mul_montgomery set |r| equal to |a| * |b|, in the Montgomery domain.
839
- * Both |a| and |b| must already be in the Montgomery domain (by
840
- * |BN_to_montgomery|). In particular, |a| and |b| are assumed to be in the
841
- * range [0, n), where |n| is the Montgomery modulus. It returns one on success
842
- * or zero on error. */
842
+ // BN_mod_mul_montgomery set |r| equal to |a| * |b|, in the Montgomery domain.
843
+ // Both |a| and |b| must already be in the Montgomery domain (by
844
+ // |BN_to_montgomery|). In particular, |a| and |b| are assumed to be in the
845
+ // range [0, n), where |n| is the Montgomery modulus. It returns one on success
846
+ // or zero on error.
843
847
  OPENSSL_EXPORT int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a,
844
848
  const BIGNUM *b,
845
849
  const BN_MONT_CTX *mont, BN_CTX *ctx);
846
850
 
847
851
 
848
- /* Exponentiation. */
852
+ // Exponentiation.
849
853
 
850
- /* BN_exp sets |r| equal to |a|^{|p|}. It does so with a square-and-multiply
851
- * algorithm that leaks side-channel information. It returns one on success or
852
- * zero otherwise. */
854
+ // BN_exp sets |r| equal to |a|^{|p|}. It does so with a square-and-multiply
855
+ // algorithm that leaks side-channel information. It returns one on success or
856
+ // zero otherwise.
853
857
  OPENSSL_EXPORT int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
854
858
  BN_CTX *ctx);
855
859
 
856
- /* BN_mod_exp sets |r| equal to |a|^{|p|} mod |m|. It does so with the best
857
- * algorithm for the values provided. It returns one on success or zero
858
- * otherwise. The |BN_mod_exp_mont_consttime| variant must be used if the
859
- * exponent is secret. */
860
+ // BN_mod_exp sets |r| equal to |a|^{|p|} mod |m|. It does so with the best
861
+ // algorithm for the values provided. It returns one on success or zero
862
+ // otherwise. The |BN_mod_exp_mont_consttime| variant must be used if the
863
+ // exponent is secret.
860
864
  OPENSSL_EXPORT int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
861
865
  const BIGNUM *m, BN_CTX *ctx);
862
866
 
@@ -870,70 +874,71 @@ OPENSSL_EXPORT int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a,
870
874
  const BN_MONT_CTX *mont);
871
875
 
872
876
 
873
- /* Deprecated functions */
877
+ // Deprecated functions
874
878
 
875
- /* BN_bn2mpi serialises the value of |in| to |out|, using a format that consists
876
- * of the number's length in bytes represented as a 4-byte big-endian number,
877
- * and the number itself in big-endian format, where the most significant bit
878
- * signals a negative number. (The representation of numbers with the MSB set is
879
- * prefixed with null byte). |out| must have sufficient space available; to
880
- * find the needed amount of space, call the function with |out| set to NULL. */
879
+ // BN_bn2mpi serialises the value of |in| to |out|, using a format that consists
880
+ // of the number's length in bytes represented as a 4-byte big-endian number,
881
+ // and the number itself in big-endian format, where the most significant bit
882
+ // signals a negative number. (The representation of numbers with the MSB set is
883
+ // prefixed with null byte). |out| must have sufficient space available; to
884
+ // find the needed amount of space, call the function with |out| set to NULL.
881
885
  OPENSSL_EXPORT size_t BN_bn2mpi(const BIGNUM *in, uint8_t *out);
882
886
 
883
- /* BN_mpi2bn parses |len| bytes from |in| and returns the resulting value. The
884
- * bytes at |in| are expected to be in the format emitted by |BN_bn2mpi|.
885
- *
886
- * If |out| is NULL then a fresh |BIGNUM| is allocated and returned, otherwise
887
- * |out| is reused and returned. On error, NULL is returned and the error queue
888
- * is updated. */
887
+ // BN_mpi2bn parses |len| bytes from |in| and returns the resulting value. The
888
+ // bytes at |in| are expected to be in the format emitted by |BN_bn2mpi|.
889
+ //
890
+ // If |out| is NULL then a fresh |BIGNUM| is allocated and returned, otherwise
891
+ // |out| is reused and returned. On error, NULL is returned and the error queue
892
+ // is updated.
889
893
  OPENSSL_EXPORT BIGNUM *BN_mpi2bn(const uint8_t *in, size_t len, BIGNUM *out);
890
894
 
891
- /* BN_mod_exp_mont_word is like |BN_mod_exp_mont| except that the base |a| is
892
- * given as a |BN_ULONG| instead of a |BIGNUM *|. It returns one on success
893
- * or zero otherwise. */
895
+ // BN_mod_exp_mont_word is like |BN_mod_exp_mont| except that the base |a| is
896
+ // given as a |BN_ULONG| instead of a |BIGNUM *|. It returns one on success
897
+ // or zero otherwise.
894
898
  OPENSSL_EXPORT int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p,
895
899
  const BIGNUM *m, BN_CTX *ctx,
896
900
  const BN_MONT_CTX *mont);
897
901
 
898
- /* BN_mod_exp2_mont calculates (a1^p1) * (a2^p2) mod m. It returns 1 on success
899
- * or zero otherwise. */
902
+ // BN_mod_exp2_mont calculates (a1^p1) * (a2^p2) mod m. It returns 1 on success
903
+ // or zero otherwise.
900
904
  OPENSSL_EXPORT int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1,
901
905
  const BIGNUM *p1, const BIGNUM *a2,
902
906
  const BIGNUM *p2, const BIGNUM *m,
903
907
  BN_CTX *ctx, const BN_MONT_CTX *mont);
904
908
 
905
909
 
906
- /* Private functions */
910
+ // Private functions
907
911
 
908
912
  struct bignum_st {
909
913
  BN_ULONG *d; /* Pointer to an array of 'BN_BITS2' bit chunks in little-endian
910
914
  order. */
911
- int top; /* Index of last used element in |d|, plus one. */
912
- int dmax; /* Size of |d|, in words. */
913
- int neg; /* one if the number is negative */
914
- int flags; /* bitmask of BN_FLG_* values */
915
+ int top; // Index of last used element in |d|, plus one.
916
+ int dmax; // Size of |d|, in words.
917
+ int neg; // one if the number is negative
918
+ int flags; // bitmask of BN_FLG_* values
915
919
  };
916
920
 
917
921
  struct bn_mont_ctx_st {
918
- BIGNUM RR; /* used to convert to montgomery form */
919
- BIGNUM N; /* The modulus */
920
- BN_ULONG n0[2]; /* least significant words of (R*Ri-1)/N */
922
+ BIGNUM RR; // used to convert to montgomery form
923
+ BIGNUM N; // The modulus
924
+ BN_ULONG n0[2]; // least significant words of (R*Ri-1)/N
921
925
  };
922
926
 
923
927
  OPENSSL_EXPORT unsigned BN_num_bits_word(BN_ULONG l);
924
928
 
925
929
  #define BN_FLG_MALLOCED 0x01
926
930
  #define BN_FLG_STATIC_DATA 0x02
927
- /* |BN_FLG_CONSTTIME| has been removed and intentionally omitted so code relying
928
- * on it will not compile. Consumers outside BoringSSL should use the
929
- * higher-level cryptographic algorithms exposed by other modules. Consumers
930
- * within the library should call the appropriate timing-sensitive algorithm
931
- * directly. */
931
+ // |BN_FLG_CONSTTIME| has been removed and intentionally omitted so code relying
932
+ // on it will not compile. Consumers outside BoringSSL should use the
933
+ // higher-level cryptographic algorithms exposed by other modules. Consumers
934
+ // within the library should call the appropriate timing-sensitive algorithm
935
+ // directly.
932
936
 
933
937
 
934
938
  #if defined(__cplusplus)
935
- } /* extern C */
939
+ } // extern C
936
940
 
941
+ #if !defined(BORINGSSL_NO_CXX)
937
942
  extern "C++" {
938
943
 
939
944
  namespace bssl {
@@ -942,9 +947,22 @@ BORINGSSL_MAKE_DELETER(BIGNUM, BN_free)
942
947
  BORINGSSL_MAKE_DELETER(BN_CTX, BN_CTX_free)
943
948
  BORINGSSL_MAKE_DELETER(BN_MONT_CTX, BN_MONT_CTX_free)
944
949
 
950
+ class BN_CTXScope {
951
+ public:
952
+ BN_CTXScope(BN_CTX *ctx) : ctx_(ctx) { BN_CTX_start(ctx_); }
953
+ ~BN_CTXScope() { BN_CTX_end(ctx_); }
954
+
955
+ private:
956
+ BN_CTX *ctx_;
957
+
958
+ BN_CTXScope(BN_CTXScope &) = delete;
959
+ BN_CTXScope &operator=(BN_CTXScope &) = delete;
960
+ };
961
+
945
962
  } // namespace bssl
946
963
 
947
- } /* extern C++ */
964
+ } // extern C++
965
+ #endif
948
966
 
949
967
  #endif
950
968
 
@@ -967,5 +985,6 @@ BORINGSSL_MAKE_DELETER(BN_MONT_CTX, BN_MONT_CTX_free)
967
985
  #define BN_R_TOO_MANY_TEMPORARY_VARIABLES 116
968
986
  #define BN_R_BAD_ENCODING 117
969
987
  #define BN_R_ENCODE_ERROR 118
988
+ #define BN_R_INVALID_INPUT 119
970
989
 
971
- #endif /* OPENSSL_HEADER_BN_H */
990
+ #endif // OPENSSL_HEADER_BN_H