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
@@ -24,28 +24,28 @@ extern "C" {
24
24
 
25
25
  typedef uint8_t poly1305_state[512];
26
26
 
27
- /* CRYPTO_poly1305_init sets up |state| so that it can be used to calculate an
28
- * authentication tag with the one-time key |key|. Note that |key| is a
29
- * one-time key and therefore there is no `reset' method because that would
30
- * enable several messages to be authenticated with the same key. */
27
+ // CRYPTO_poly1305_init sets up |state| so that it can be used to calculate an
28
+ // authentication tag with the one-time key |key|. Note that |key| is a
29
+ // one-time key and therefore there is no `reset' method because that would
30
+ // enable several messages to be authenticated with the same key.
31
31
  OPENSSL_EXPORT void CRYPTO_poly1305_init(poly1305_state* state,
32
32
  const uint8_t key[32]);
33
33
 
34
- /* CRYPTO_poly1305_update processes |in_len| bytes from |in|. It can be called
35
- * zero or more times after poly1305_init. */
34
+ // CRYPTO_poly1305_update processes |in_len| bytes from |in|. It can be called
35
+ // zero or more times after poly1305_init.
36
36
  OPENSSL_EXPORT void CRYPTO_poly1305_update(poly1305_state* state,
37
37
  const uint8_t* in,
38
38
  size_t in_len);
39
39
 
40
- /* CRYPTO_poly1305_finish completes the poly1305 calculation and writes a 16
41
- * byte authentication tag to |mac|. The |mac| address must be 16-byte
42
- * aligned. */
40
+ // CRYPTO_poly1305_finish completes the poly1305 calculation and writes a 16
41
+ // byte authentication tag to |mac|. The |mac| address must be 16-byte
42
+ // aligned.
43
43
  OPENSSL_EXPORT void CRYPTO_poly1305_finish(poly1305_state* state,
44
44
  uint8_t mac[16]);
45
45
 
46
46
 
47
47
  #if defined(__cplusplus)
48
- } /* extern C */
48
+ } // extern C
49
49
  #endif
50
50
 
51
- #endif /* OPENSSL_HEADER_POLY1305_H */
51
+ #endif // OPENSSL_HEADER_POLY1305_H
@@ -17,59 +17,63 @@
17
17
 
18
18
  #include <openssl/base.h>
19
19
 
20
+ #include <openssl/stack.h>
21
+
20
22
  #if defined(__cplusplus)
21
23
  extern "C" {
22
24
  #endif
23
25
 
24
26
 
25
- /* Buffers and buffer pools.
26
- *
27
- * |CRYPTO_BUFFER|s are simply reference-counted blobs. A |CRYPTO_BUFFER_POOL|
28
- * is an intern table for |CRYPTO_BUFFER|s. This allows for a single copy of a
29
- * given blob to be kept in memory and referenced from multiple places. */
27
+ // Buffers and buffer pools.
28
+ //
29
+ // |CRYPTO_BUFFER|s are simply reference-counted blobs. A |CRYPTO_BUFFER_POOL|
30
+ // is an intern table for |CRYPTO_BUFFER|s. This allows for a single copy of a
31
+ // given blob to be kept in memory and referenced from multiple places.
32
+
30
33
 
34
+ DEFINE_STACK_OF(CRYPTO_BUFFER)
31
35
 
32
- /* CRYPTO_BUFFER_POOL_new returns a freshly allocated |CRYPTO_BUFFER_POOL| or
33
- * NULL on error. */
36
+ // CRYPTO_BUFFER_POOL_new returns a freshly allocated |CRYPTO_BUFFER_POOL| or
37
+ // NULL on error.
34
38
  OPENSSL_EXPORT CRYPTO_BUFFER_POOL* CRYPTO_BUFFER_POOL_new(void);
35
39
 
36
- /* CRYPTO_BUFFER_POOL_free frees |pool|, which must be empty. */
40
+ // CRYPTO_BUFFER_POOL_free frees |pool|, which must be empty.
37
41
  OPENSSL_EXPORT void CRYPTO_BUFFER_POOL_free(CRYPTO_BUFFER_POOL *pool);
38
42
 
39
- /* CRYPTO_BUFFER_new returns a |CRYPTO_BUFFER| containing a copy of |data|, or
40
- * else NULL on error. If |pool| is not NULL then the returned value may be a
41
- * reference to a previously existing |CRYPTO_BUFFER| that contained the same
42
- * data. Otherwise, the returned, fresh |CRYPTO_BUFFER| will be added to the
43
- * pool. */
43
+ // CRYPTO_BUFFER_new returns a |CRYPTO_BUFFER| containing a copy of |data|, or
44
+ // else NULL on error. If |pool| is not NULL then the returned value may be a
45
+ // reference to a previously existing |CRYPTO_BUFFER| that contained the same
46
+ // data. Otherwise, the returned, fresh |CRYPTO_BUFFER| will be added to the
47
+ // pool.
44
48
  OPENSSL_EXPORT CRYPTO_BUFFER *CRYPTO_BUFFER_new(const uint8_t *data, size_t len,
45
49
  CRYPTO_BUFFER_POOL *pool);
46
50
 
47
- /* CRYPTO_BUFFER_new_from_CBS acts the same as |CRYPTO_BUFFER_new|. */
51
+ // CRYPTO_BUFFER_new_from_CBS acts the same as |CRYPTO_BUFFER_new|.
48
52
  OPENSSL_EXPORT CRYPTO_BUFFER *CRYPTO_BUFFER_new_from_CBS(
49
53
  CBS *cbs, CRYPTO_BUFFER_POOL *pool);
50
54
 
51
- /* CRYPTO_BUFFER_free decrements the reference count of |buf|. If there are no
52
- * other references, or if the only remaining reference is from a pool, then
53
- * |buf| will be freed. */
55
+ // CRYPTO_BUFFER_free decrements the reference count of |buf|. If there are no
56
+ // other references, or if the only remaining reference is from a pool, then
57
+ // |buf| will be freed.
54
58
  OPENSSL_EXPORT void CRYPTO_BUFFER_free(CRYPTO_BUFFER *buf);
55
59
 
56
- /* CRYPTO_BUFFER_up_ref increments the reference count of |buf| and returns
57
- * one. */
60
+ // CRYPTO_BUFFER_up_ref increments the reference count of |buf| and returns
61
+ // one.
58
62
  OPENSSL_EXPORT int CRYPTO_BUFFER_up_ref(CRYPTO_BUFFER *buf);
59
63
 
60
- /* CRYPTO_BUFFER_data returns a pointer to the data contained in |buf|. */
64
+ // CRYPTO_BUFFER_data returns a pointer to the data contained in |buf|.
61
65
  OPENSSL_EXPORT const uint8_t *CRYPTO_BUFFER_data(const CRYPTO_BUFFER *buf);
62
66
 
63
- /* CRYPTO_BUFFER_len returns the length, in bytes, of the data contained in
64
- * |buf|. */
67
+ // CRYPTO_BUFFER_len returns the length, in bytes, of the data contained in
68
+ // |buf|.
65
69
  OPENSSL_EXPORT size_t CRYPTO_BUFFER_len(const CRYPTO_BUFFER *buf);
66
70
 
67
- /* CRYPTO_BUFFER_init_CBS initialises |out| to point at the data from |buf|. */
71
+ // CRYPTO_BUFFER_init_CBS initialises |out| to point at the data from |buf|.
68
72
  OPENSSL_EXPORT void CRYPTO_BUFFER_init_CBS(const CRYPTO_BUFFER *buf, CBS *out);
69
73
 
70
74
 
71
75
  #if defined(__cplusplus)
72
- } /* extern C */
76
+ } // extern C
73
77
 
74
78
  extern "C++" {
75
79
 
@@ -80,7 +84,7 @@ BORINGSSL_MAKE_DELETER(CRYPTO_BUFFER, CRYPTO_BUFFER_free)
80
84
 
81
85
  } // namespace bssl
82
86
 
83
- } /* extern C++ */
87
+ } // extern C++
84
88
 
85
89
  #endif
86
90
 
@@ -22,83 +22,83 @@ extern "C" {
22
22
  #endif
23
23
 
24
24
 
25
- /* Random number generation. */
25
+ // Random number generation.
26
26
 
27
27
 
28
- /* RAND_bytes writes |len| bytes of random data to |buf| and returns one. */
28
+ // RAND_bytes writes |len| bytes of random data to |buf| and returns one.
29
29
  OPENSSL_EXPORT int RAND_bytes(uint8_t *buf, size_t len);
30
30
 
31
- /* RAND_cleanup frees any resources used by the RNG. This is not safe if other
32
- * threads might still be calling |RAND_bytes|. */
31
+ // RAND_cleanup frees any resources used by the RNG. This is not safe if other
32
+ // threads might still be calling |RAND_bytes|.
33
33
  OPENSSL_EXPORT void RAND_cleanup(void);
34
34
 
35
35
 
36
- /* Obscure functions. */
36
+ // Obscure functions.
37
37
 
38
38
  #if !defined(OPENSSL_WINDOWS)
39
- /* RAND_set_urandom_fd causes the module to use a copy of |fd| for system
40
- * randomness rather opening /dev/urandom internally. The caller retains
41
- * ownership of |fd| and is at liberty to close it at any time. This is useful
42
- * if, due to a sandbox, /dev/urandom isn't available. If used, it must be
43
- * called before the first call to |RAND_bytes|, and it is mutually exclusive
44
- * with |RAND_enable_fork_unsafe_buffering|.
45
- *
46
- * |RAND_set_urandom_fd| does not buffer any entropy, so it is safe to call
47
- * |fork| at any time after calling |RAND_set_urandom_fd|. */
39
+ // RAND_set_urandom_fd causes the module to use a copy of |fd| for system
40
+ // randomness rather opening /dev/urandom internally. The caller retains
41
+ // ownership of |fd| and is at liberty to close it at any time. This is useful
42
+ // if, due to a sandbox, /dev/urandom isn't available. If used, it must be
43
+ // called before the first call to |RAND_bytes|, and it is mutually exclusive
44
+ // with |RAND_enable_fork_unsafe_buffering|.
45
+ //
46
+ // |RAND_set_urandom_fd| does not buffer any entropy, so it is safe to call
47
+ // |fork| at any time after calling |RAND_set_urandom_fd|.
48
48
  OPENSSL_EXPORT void RAND_set_urandom_fd(int fd);
49
49
 
50
- /* RAND_enable_fork_unsafe_buffering enables efficient buffered reading of
51
- * /dev/urandom. It adds an overhead of a few KB of memory per thread. It must
52
- * be called before the first call to |RAND_bytes| and it is mutually exclusive
53
- * with calls to |RAND_set_urandom_fd|.
54
- *
55
- * If |fd| is non-negative then a copy of |fd| will be used rather than opening
56
- * /dev/urandom internally. Like |RAND_set_urandom_fd|, the caller retains
57
- * ownership of |fd|. If |fd| is negative then /dev/urandom will be opened and
58
- * any error from open(2) crashes the address space.
59
- *
60
- * It has an unusual name because the buffer is unsafe across calls to |fork|.
61
- * Hence, this function should never be called by libraries. */
50
+ // RAND_enable_fork_unsafe_buffering enables efficient buffered reading of
51
+ // /dev/urandom. It adds an overhead of a few KB of memory per thread. It must
52
+ // be called before the first call to |RAND_bytes| and it is mutually exclusive
53
+ // with calls to |RAND_set_urandom_fd|.
54
+ //
55
+ // If |fd| is non-negative then a copy of |fd| will be used rather than opening
56
+ // /dev/urandom internally. Like |RAND_set_urandom_fd|, the caller retains
57
+ // ownership of |fd|. If |fd| is negative then /dev/urandom will be opened and
58
+ // any error from open(2) crashes the address space.
59
+ //
60
+ // It has an unusual name because the buffer is unsafe across calls to |fork|.
61
+ // Hence, this function should never be called by libraries.
62
62
  OPENSSL_EXPORT void RAND_enable_fork_unsafe_buffering(int fd);
63
63
  #endif
64
64
 
65
65
  #if defined(BORINGSSL_UNSAFE_DETERMINISTIC_MODE)
66
- /* RAND_reset_for_fuzzing resets the fuzzer-only deterministic RNG. This
67
- * function is only defined in the fuzzer-only build configuration. */
66
+ // RAND_reset_for_fuzzing resets the fuzzer-only deterministic RNG. This
67
+ // function is only defined in the fuzzer-only build configuration.
68
68
  OPENSSL_EXPORT void RAND_reset_for_fuzzing(void);
69
69
  #endif
70
70
 
71
71
 
72
- /* Deprecated functions */
72
+ // Deprecated functions
73
73
 
74
- /* RAND_pseudo_bytes is a wrapper around |RAND_bytes|. */
74
+ // RAND_pseudo_bytes is a wrapper around |RAND_bytes|.
75
75
  OPENSSL_EXPORT int RAND_pseudo_bytes(uint8_t *buf, size_t len);
76
76
 
77
- /* RAND_seed reads a single byte of random data to ensure that any file
78
- * descriptors etc are opened. */
77
+ // RAND_seed reads a single byte of random data to ensure that any file
78
+ // descriptors etc are opened.
79
79
  OPENSSL_EXPORT void RAND_seed(const void *buf, int num);
80
80
 
81
- /* RAND_load_file returns a nonnegative number. */
81
+ // RAND_load_file returns a nonnegative number.
82
82
  OPENSSL_EXPORT int RAND_load_file(const char *path, long num);
83
83
 
84
- /* RAND_file_name returns NULL. */
84
+ // RAND_file_name returns NULL.
85
85
  OPENSSL_EXPORT const char *RAND_file_name(char *buf, size_t num);
86
86
 
87
- /* RAND_add does nothing. */
87
+ // RAND_add does nothing.
88
88
  OPENSSL_EXPORT void RAND_add(const void *buf, int num, double entropy);
89
89
 
90
- /* RAND_egd returns 255. */
90
+ // RAND_egd returns 255.
91
91
  OPENSSL_EXPORT int RAND_egd(const char *);
92
92
 
93
- /* RAND_poll returns one. */
93
+ // RAND_poll returns one.
94
94
  OPENSSL_EXPORT int RAND_poll(void);
95
95
 
96
- /* RAND_status returns one. */
96
+ // RAND_status returns one.
97
97
  OPENSSL_EXPORT int RAND_status(void);
98
98
 
99
- /* rand_meth_st is typedefed to |RAND_METHOD| in base.h. It isn't used; it
100
- * exists only to be the return type of |RAND_SSLeay|. It's
101
- * external so that variables of this type can be initialized. */
99
+ // rand_meth_st is typedefed to |RAND_METHOD| in base.h. It isn't used; it
100
+ // exists only to be the return type of |RAND_SSLeay|. It's
101
+ // external so that variables of this type can be initialized.
102
102
  struct rand_meth_st {
103
103
  void (*seed) (const void *buf, int num);
104
104
  int (*bytes) (uint8_t *buf, size_t num);
@@ -108,15 +108,18 @@ struct rand_meth_st {
108
108
  int (*status) (void);
109
109
  };
110
110
 
111
- /* RAND_SSLeay returns a pointer to a dummy |RAND_METHOD|. */
111
+ // RAND_SSLeay returns a pointer to a dummy |RAND_METHOD|.
112
112
  OPENSSL_EXPORT RAND_METHOD *RAND_SSLeay(void);
113
113
 
114
- /* RAND_set_rand_method does nothing. */
114
+ // RAND_get_rand_method returns |RAND_SSLeay()|.
115
+ OPENSSL_EXPORT const RAND_METHOD *RAND_get_rand_method(void);
116
+
117
+ // RAND_set_rand_method does nothing.
115
118
  OPENSSL_EXPORT void RAND_set_rand_method(const RAND_METHOD *);
116
119
 
117
120
 
118
121
  #if defined(__cplusplus)
119
- } /* extern C */
122
+ } // extern C
120
123
  #endif
121
124
 
122
- #endif /* OPENSSL_HEADER_RAND_H */
125
+ #endif // OPENSSL_HEADER_RAND_H
@@ -64,7 +64,7 @@ extern "C" {
64
64
  #endif
65
65
 
66
66
 
67
- /* RC4. */
67
+ // RC4.
68
68
 
69
69
 
70
70
  struct rc4_key_st {
@@ -72,25 +72,25 @@ struct rc4_key_st {
72
72
  uint32_t data[256];
73
73
  } /* RC4_KEY */;
74
74
 
75
- /* RC4_set_key performs an RC4 key schedule and initialises |rc4key| with |len|
76
- * bytes of key material from |key|. */
75
+ // RC4_set_key performs an RC4 key schedule and initialises |rc4key| with |len|
76
+ // bytes of key material from |key|.
77
77
  OPENSSL_EXPORT void RC4_set_key(RC4_KEY *rc4key, unsigned len,
78
78
  const uint8_t *key);
79
79
 
80
- /* RC4 encrypts (or decrypts, it's the same with RC4) |len| bytes from |in| to
81
- * |out|. */
80
+ // RC4 encrypts (or decrypts, it's the same with RC4) |len| bytes from |in| to
81
+ // |out|.
82
82
  OPENSSL_EXPORT void RC4(RC4_KEY *key, size_t len, const uint8_t *in,
83
83
  uint8_t *out);
84
84
 
85
85
 
86
- /* Deprecated functions. */
86
+ // Deprecated functions.
87
87
 
88
- /* RC4_options returns the string "rc4(ptr,int)". */
88
+ // RC4_options returns the string "rc4(ptr,int)".
89
89
  OPENSSL_EXPORT const char *RC4_options(void);
90
90
 
91
91
 
92
92
  #if defined(__cplusplus)
93
- } /* extern C */
93
+ } // extern C
94
94
  #endif
95
95
 
96
- #endif /* OPENSSL_HEADER_RC4_H */
96
+ #endif // OPENSSL_HEADER_RC4_H
@@ -75,33 +75,33 @@ struct RIPEMD160state_st {
75
75
  unsigned num;
76
76
  };
77
77
 
78
- /* RIPEMD160_Init initialises |ctx| and returns one. */
78
+ // RIPEMD160_Init initialises |ctx| and returns one.
79
79
  OPENSSL_EXPORT int RIPEMD160_Init(RIPEMD160_CTX *ctx);
80
80
 
81
- /* RIPEMD160_Update adds |len| bytes from |data| to |ctx| and returns one. */
81
+ // RIPEMD160_Update adds |len| bytes from |data| to |ctx| and returns one.
82
82
  OPENSSL_EXPORT int RIPEMD160_Update(RIPEMD160_CTX *ctx, const void *data,
83
83
  size_t len);
84
84
 
85
- /* RIPEMD160_Final adds the final padding to |ctx| and writes the resulting
86
- * digest to |md|, which must have at least |RIPEMD160_DIGEST_LENGTH| bytes of
87
- * space. It returns one. */
85
+ // RIPEMD160_Final adds the final padding to |ctx| and writes the resulting
86
+ // digest to |md|, which must have at least |RIPEMD160_DIGEST_LENGTH| bytes of
87
+ // space. It returns one.
88
88
  OPENSSL_EXPORT int RIPEMD160_Final(uint8_t *md, RIPEMD160_CTX *ctx);
89
89
 
90
- /* RIPEMD160 writes the digest of |len| bytes from |data| to |out| and returns
91
- * |out|. There must be at least |RIPEMD160_DIGEST_LENGTH| bytes of space in
92
- * |out|. */
90
+ // RIPEMD160 writes the digest of |len| bytes from |data| to |out| and returns
91
+ // |out|. There must be at least |RIPEMD160_DIGEST_LENGTH| bytes of space in
92
+ // |out|.
93
93
  OPENSSL_EXPORT uint8_t *RIPEMD160(const uint8_t *data, size_t len,
94
94
  uint8_t *out);
95
95
 
96
- /* RIPEMD160_Transform is a low-level function that performs a single,
97
- * RIPEMD160 block transformation using the state from |ctx| and 64 bytes from
98
- * |block|. */
96
+ // RIPEMD160_Transform is a low-level function that performs a single,
97
+ // RIPEMD160 block transformation using the state from |ctx| and 64 bytes from
98
+ // |block|.
99
99
  OPENSSL_EXPORT void RIPEMD160_Transform(RIPEMD160_CTX *ctx,
100
100
  const uint8_t *block);
101
101
 
102
102
 
103
103
  #if defined(__cplusplus)
104
- } /* extern C */
104
+ } // extern C
105
105
  #endif
106
106
 
107
- #endif /* OPENSSL_HEADER_RIPEMD_H */
107
+ #endif // OPENSSL_HEADER_RIPEMD_H
@@ -68,462 +68,522 @@ extern "C" {
68
68
  #endif
69
69
 
70
70
 
71
- /* rsa.h contains functions for handling encryption and signature using RSA. */
71
+ // rsa.h contains functions for handling encryption and signature using RSA.
72
72
 
73
73
 
74
- /* Allocation and destruction. */
74
+ // Allocation and destruction.
75
75
 
76
- /* RSA_new returns a new, empty RSA object or NULL on error. */
76
+ // RSA_new returns a new, empty RSA object or NULL on error.
77
77
  OPENSSL_EXPORT RSA *RSA_new(void);
78
78
 
79
- /* RSA_new_method acts the same as |RSA_new| but takes an explicit |ENGINE|. */
79
+ // RSA_new_method acts the same as |RSA_new| but takes an explicit |ENGINE|.
80
80
  OPENSSL_EXPORT RSA *RSA_new_method(const ENGINE *engine);
81
81
 
82
- /* RSA_free decrements the reference count of |rsa| and frees it if the
83
- * reference count drops to zero. */
82
+ // RSA_free decrements the reference count of |rsa| and frees it if the
83
+ // reference count drops to zero.
84
84
  OPENSSL_EXPORT void RSA_free(RSA *rsa);
85
85
 
86
- /* RSA_up_ref increments the reference count of |rsa| and returns one. */
86
+ // RSA_up_ref increments the reference count of |rsa| and returns one.
87
87
  OPENSSL_EXPORT int RSA_up_ref(RSA *rsa);
88
88
 
89
89
 
90
- /* Properties. */
90
+ // Properties.
91
91
 
92
- /* RSA_get0_key sets |*out_n|, |*out_e|, and |*out_d|, if non-NULL, to |rsa|'s
93
- * modulus, public exponent, and private exponent, respectively. If |rsa| is a
94
- * public key, the private exponent will be set to NULL. */
92
+ // RSA_get0_key sets |*out_n|, |*out_e|, and |*out_d|, if non-NULL, to |rsa|'s
93
+ // modulus, public exponent, and private exponent, respectively. If |rsa| is a
94
+ // public key, the private exponent will be set to NULL.
95
95
  OPENSSL_EXPORT void RSA_get0_key(const RSA *rsa, const BIGNUM **out_n,
96
96
  const BIGNUM **out_e, const BIGNUM **out_d);
97
97
 
98
- /* RSA_get0_factors sets |*out_p| and |*out_q|, if non-NULL, to |rsa|'s prime
99
- * factors. If |rsa| is a public key, they will be set to NULL. If |rsa| is a
100
- * multi-prime key, only the first two prime factors will be reported. */
98
+ // RSA_get0_factors sets |*out_p| and |*out_q|, if non-NULL, to |rsa|'s prime
99
+ // factors. If |rsa| is a public key, they will be set to NULL.
101
100
  OPENSSL_EXPORT void RSA_get0_factors(const RSA *rsa, const BIGNUM **out_p,
102
101
  const BIGNUM **out_q);
103
102
 
104
- /* RSA_get0_crt_params sets |*out_dmp1|, |*out_dmq1|, and |*out_iqmp|, if
105
- * non-NULL, to |rsa|'s CRT parameters. These are d (mod p-1), d (mod q-1) and
106
- * q^-1 (mod p), respectively. If |rsa| is a public key, each parameter will be
107
- * set to NULL. If |rsa| is a multi-prime key, only the CRT parameters for the
108
- * first two primes will be reported. */
103
+ // RSA_get0_crt_params sets |*out_dmp1|, |*out_dmq1|, and |*out_iqmp|, if
104
+ // non-NULL, to |rsa|'s CRT parameters. These are d (mod p-1), d (mod q-1) and
105
+ // q^-1 (mod p), respectively. If |rsa| is a public key, each parameter will be
106
+ // set to NULL.
109
107
  OPENSSL_EXPORT void RSA_get0_crt_params(const RSA *rsa, const BIGNUM **out_dmp1,
110
108
  const BIGNUM **out_dmq1,
111
109
  const BIGNUM **out_iqmp);
112
110
 
113
-
114
- /* Key generation. */
115
-
116
- /* RSA_generate_key_ex generates a new RSA key where the modulus has size
117
- * |bits| and the public exponent is |e|. If unsure, |RSA_F4| is a good value
118
- * for |e|. If |cb| is not NULL then it is called during the key generation
119
- * process. In addition to the calls documented for |BN_generate_prime_ex|, it
120
- * is called with event=2 when the n'th prime is rejected as unsuitable and
121
- * with event=3 when a suitable value for |p| is found.
122
- *
123
- * It returns one on success or zero on error. */
111
+ // RSA_set0_key sets |rsa|'s modulus, public exponent, and private exponent to
112
+ // |n|, |e|, and |d| respectively, if non-NULL. On success, it takes ownership
113
+ // of each argument and returns one. Otherwise, it returns zero.
114
+ //
115
+ // |d| may be NULL, but |n| and |e| must either be non-NULL or already
116
+ // configured on |rsa|.
117
+ OPENSSL_EXPORT int RSA_set0_key(RSA *rsa, BIGNUM *n, BIGNUM *e, BIGNUM *d);
118
+
119
+ // RSA_set0_factors sets |rsa|'s prime factors to |p| and |q|, if non-NULL, and
120
+ // takes ownership of them. On success, it takes ownership of each argument and
121
+ // returns one. Otherwise, it returns zero.
122
+ //
123
+ // Each argument must either be non-NULL or already configured on |rsa|.
124
+ OPENSSL_EXPORT int RSA_set0_factors(RSA *rsa, BIGNUM *p, BIGNUM *q);
125
+
126
+ // RSA_set0_crt_params sets |rsa|'s CRT parameters to |dmp1|, |dmq1|, and
127
+ // |iqmp|, if non-NULL, and takes ownership of them. On success, it takes
128
+ // ownership of its parameters and returns one. Otherwise, it returns zero.
129
+ //
130
+ // Each argument must either be non-NULL or already configured on |rsa|.
131
+ OPENSSL_EXPORT int RSA_set0_crt_params(RSA *rsa, BIGNUM *dmp1, BIGNUM *dmq1,
132
+ BIGNUM *iqmp);
133
+
134
+
135
+ // Key generation.
136
+
137
+ // RSA_generate_key_ex generates a new RSA key where the modulus has size
138
+ // |bits| and the public exponent is |e|. If unsure, |RSA_F4| is a good value
139
+ // for |e|. If |cb| is not NULL then it is called during the key generation
140
+ // process. In addition to the calls documented for |BN_generate_prime_ex|, it
141
+ // is called with event=2 when the n'th prime is rejected as unsuitable and
142
+ // with event=3 when a suitable value for |p| is found.
143
+ //
144
+ // It returns one on success or zero on error.
124
145
  OPENSSL_EXPORT int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e,
125
146
  BN_GENCB *cb);
126
147
 
127
- /* RSA_generate_multi_prime_key acts like |RSA_generate_key_ex| but can
128
- * generate an RSA private key with more than two primes. */
129
- OPENSSL_EXPORT int RSA_generate_multi_prime_key(RSA *rsa, int bits,
130
- int num_primes, BIGNUM *e,
131
- BN_GENCB *cb);
148
+ // RSA_generate_key_fips behaves like |RSA_generate_key_ex| but performs
149
+ // additional checks for FIPS compliance. The public exponent is always 65537
150
+ // and |bits| must be either 2048 or 3072.
151
+ OPENSSL_EXPORT int RSA_generate_key_fips(RSA *rsa, int bits, BN_GENCB *cb);
132
152
 
133
153
 
134
- /* Encryption / Decryption */
154
+ // Encryption / Decryption
135
155
 
136
- /* Padding types for encryption. */
156
+ // Padding types for encryption.
137
157
  #define RSA_PKCS1_PADDING 1
138
158
  #define RSA_NO_PADDING 3
139
159
  #define RSA_PKCS1_OAEP_PADDING 4
140
- /* RSA_PKCS1_PSS_PADDING can only be used via the EVP interface. */
160
+ // RSA_PKCS1_PSS_PADDING can only be used via the EVP interface.
141
161
  #define RSA_PKCS1_PSS_PADDING 6
142
162
 
143
- /* RSA_encrypt encrypts |in_len| bytes from |in| to the public key from |rsa|
144
- * and writes, at most, |max_out| bytes of encrypted data to |out|. The
145
- * |max_out| argument must be, at least, |RSA_size| in order to ensure success.
146
- *
147
- * It returns 1 on success or zero on error.
148
- *
149
- * The |padding| argument must be one of the |RSA_*_PADDING| values. If in
150
- * doubt, use |RSA_PKCS1_OAEP_PADDING| for new protocols but
151
- * |RSA_PKCS1_PADDING| is most common. */
163
+ // RSA_encrypt encrypts |in_len| bytes from |in| to the public key from |rsa|
164
+ // and writes, at most, |max_out| bytes of encrypted data to |out|. The
165
+ // |max_out| argument must be, at least, |RSA_size| in order to ensure success.
166
+ //
167
+ // It returns 1 on success or zero on error.
168
+ //
169
+ // The |padding| argument must be one of the |RSA_*_PADDING| values. If in
170
+ // doubt, use |RSA_PKCS1_OAEP_PADDING| for new protocols but
171
+ // |RSA_PKCS1_PADDING| is most common.
152
172
  OPENSSL_EXPORT int RSA_encrypt(RSA *rsa, size_t *out_len, uint8_t *out,
153
173
  size_t max_out, const uint8_t *in, size_t in_len,
154
174
  int padding);
155
175
 
156
- /* RSA_decrypt decrypts |in_len| bytes from |in| with the private key from
157
- * |rsa| and writes, at most, |max_out| bytes of plaintext to |out|. The
158
- * |max_out| argument must be, at least, |RSA_size| in order to ensure success.
159
- *
160
- * It returns 1 on success or zero on error.
161
- *
162
- * The |padding| argument must be one of the |RSA_*_PADDING| values. If in
163
- * doubt, use |RSA_PKCS1_OAEP_PADDING| for new protocols.
164
- *
165
- * Passing |RSA_PKCS1_PADDING| into this function is deprecated and insecure. If
166
- * implementing a protocol using RSAES-PKCS1-V1_5, use |RSA_NO_PADDING| and then
167
- * check padding in constant-time combined with a swap to a random session key
168
- * or other mitigation. See "Chosen Ciphertext Attacks Against Protocols Based
169
- * on the RSA Encryption Standard PKCS #1", Daniel Bleichenbacher, Advances in
170
- * Cryptology (Crypto '98). */
176
+ // RSA_decrypt decrypts |in_len| bytes from |in| with the private key from
177
+ // |rsa| and writes, at most, |max_out| bytes of plaintext to |out|. The
178
+ // |max_out| argument must be, at least, |RSA_size| in order to ensure success.
179
+ //
180
+ // It returns 1 on success or zero on error.
181
+ //
182
+ // The |padding| argument must be one of the |RSA_*_PADDING| values. If in
183
+ // doubt, use |RSA_PKCS1_OAEP_PADDING| for new protocols.
184
+ //
185
+ // Passing |RSA_PKCS1_PADDING| into this function is deprecated and insecure. If
186
+ // implementing a protocol using RSAES-PKCS1-V1_5, use |RSA_NO_PADDING| and then
187
+ // check padding in constant-time combined with a swap to a random session key
188
+ // or other mitigation. See "Chosen Ciphertext Attacks Against Protocols Based
189
+ // on the RSA Encryption Standard PKCS #1", Daniel Bleichenbacher, Advances in
190
+ // Cryptology (Crypto '98).
171
191
  OPENSSL_EXPORT int RSA_decrypt(RSA *rsa, size_t *out_len, uint8_t *out,
172
192
  size_t max_out, const uint8_t *in, size_t in_len,
173
193
  int padding);
174
194
 
175
- /* RSA_public_encrypt encrypts |flen| bytes from |from| to the public key in
176
- * |rsa| and writes the encrypted data to |to|. The |to| buffer must have at
177
- * least |RSA_size| bytes of space. It returns the number of bytes written, or
178
- * -1 on error. The |padding| argument must be one of the |RSA_*_PADDING|
179
- * values. If in doubt, use |RSA_PKCS1_OAEP_PADDING| for new protocols but
180
- * |RSA_PKCS1_PADDING| is most common.
181
- *
182
- * WARNING: this function is dangerous because it breaks the usual return value
183
- * convention. Use |RSA_encrypt| instead. */
195
+ // RSA_public_encrypt encrypts |flen| bytes from |from| to the public key in
196
+ // |rsa| and writes the encrypted data to |to|. The |to| buffer must have at
197
+ // least |RSA_size| bytes of space. It returns the number of bytes written, or
198
+ // -1 on error. The |padding| argument must be one of the |RSA_*_PADDING|
199
+ // values. If in doubt, use |RSA_PKCS1_OAEP_PADDING| for new protocols but
200
+ // |RSA_PKCS1_PADDING| is most common.
201
+ //
202
+ // WARNING: this function is dangerous because it breaks the usual return value
203
+ // convention. Use |RSA_encrypt| instead.
184
204
  OPENSSL_EXPORT int RSA_public_encrypt(size_t flen, const uint8_t *from,
185
205
  uint8_t *to, RSA *rsa, int padding);
186
206
 
187
- /* RSA_private_decrypt decrypts |flen| bytes from |from| with the public key in
188
- * |rsa| and writes the plaintext to |to|. The |to| buffer must have at least
189
- * |RSA_size| bytes of space. It returns the number of bytes written, or -1 on
190
- * error. The |padding| argument must be one of the |RSA_*_PADDING| values. If
191
- * in doubt, use |RSA_PKCS1_OAEP_PADDING| for new protocols. Passing
192
- * |RSA_PKCS1_PADDING| into this function is deprecated and insecure. See
193
- * |RSA_decrypt|.
194
- *
195
- * WARNING: this function is dangerous because it breaks the usual return value
196
- * convention. Use |RSA_decrypt| instead. */
207
+ // RSA_private_decrypt decrypts |flen| bytes from |from| with the public key in
208
+ // |rsa| and writes the plaintext to |to|. The |to| buffer must have at least
209
+ // |RSA_size| bytes of space. It returns the number of bytes written, or -1 on
210
+ // error. The |padding| argument must be one of the |RSA_*_PADDING| values. If
211
+ // in doubt, use |RSA_PKCS1_OAEP_PADDING| for new protocols. Passing
212
+ // |RSA_PKCS1_PADDING| into this function is deprecated and insecure. See
213
+ // |RSA_decrypt|.
214
+ //
215
+ // WARNING: this function is dangerous because it breaks the usual return value
216
+ // convention. Use |RSA_decrypt| instead.
197
217
  OPENSSL_EXPORT int RSA_private_decrypt(size_t flen, const uint8_t *from,
198
218
  uint8_t *to, RSA *rsa, int padding);
199
219
 
200
220
 
201
- /* Signing / Verification */
221
+ // Signing / Verification
202
222
 
203
- /* RSA_sign signs |in_len| bytes of digest from |in| with |rsa| using
204
- * RSASSA-PKCS1-v1_5. It writes, at most, |RSA_size(rsa)| bytes to |out|. On
205
- * successful return, the actual number of bytes written is written to
206
- * |*out_len|.
207
- *
208
- * The |hash_nid| argument identifies the hash function used to calculate |in|
209
- * and is embedded in the resulting signature. For example, it might be
210
- * |NID_sha256|.
211
- *
212
- * It returns 1 on success and zero on error. */
223
+ // RSA_sign signs |in_len| bytes of digest from |in| with |rsa| using
224
+ // RSASSA-PKCS1-v1_5. It writes, at most, |RSA_size(rsa)| bytes to |out|. On
225
+ // successful return, the actual number of bytes written is written to
226
+ // |*out_len|.
227
+ //
228
+ // The |hash_nid| argument identifies the hash function used to calculate |in|
229
+ // and is embedded in the resulting signature. For example, it might be
230
+ // |NID_sha256|.
231
+ //
232
+ // It returns 1 on success and zero on error.
213
233
  OPENSSL_EXPORT int RSA_sign(int hash_nid, const uint8_t *in,
214
234
  unsigned int in_len, uint8_t *out,
215
235
  unsigned int *out_len, RSA *rsa);
216
236
 
217
- /* RSA_sign_raw signs |in_len| bytes from |in| with the public key from |rsa|
218
- * and writes, at most, |max_out| bytes of signature data to |out|. The
219
- * |max_out| argument must be, at least, |RSA_size| in order to ensure success.
220
- *
221
- * It returns 1 on success or zero on error.
222
- *
223
- * The |padding| argument must be one of the |RSA_*_PADDING| values. If in
224
- * doubt, |RSA_PKCS1_PADDING| is the most common but |RSA_PKCS1_PSS_PADDING|
225
- * (via the |EVP_PKEY| interface) is preferred for new protocols. */
237
+ // RSA_sign_pss_mgf1 signs |in_len| bytes from |in| with the public key from
238
+ // |rsa| using RSASSA-PSS with MGF1 as the mask generation function. It writes,
239
+ // at most, |max_out| bytes of signature data to |out|. The |max_out| argument
240
+ // must be, at least, |RSA_size| in order to ensure success. It returns 1 on
241
+ // success or zero on error.
242
+ //
243
+ // The |md| and |mgf1_md| arguments identify the hash used to calculate |msg|
244
+ // and the MGF1 hash, respectively. If |mgf1_md| is NULL, |md| is
245
+ // used.
246
+ //
247
+ // |salt_len| specifies the expected salt length in bytes. If |salt_len| is -1,
248
+ // then the salt length is the same as the hash length. If -2, then the salt
249
+ // length is maximal given the size of |rsa|. If unsure, use -1.
250
+ OPENSSL_EXPORT int RSA_sign_pss_mgf1(RSA *rsa, size_t *out_len, uint8_t *out,
251
+ size_t max_out, const uint8_t *in,
252
+ size_t in_len, const EVP_MD *md,
253
+ const EVP_MD *mgf1_md, int salt_len);
254
+
255
+ // RSA_sign_raw signs |in_len| bytes from |in| with the public key from |rsa|
256
+ // and writes, at most, |max_out| bytes of signature data to |out|. The
257
+ // |max_out| argument must be, at least, |RSA_size| in order to ensure success.
258
+ //
259
+ // It returns 1 on success or zero on error.
260
+ //
261
+ // The |padding| argument must be one of the |RSA_*_PADDING| values. If in
262
+ // doubt, |RSA_PKCS1_PADDING| is the most common but |RSA_PKCS1_PSS_PADDING|
263
+ // (via the |EVP_PKEY| interface) is preferred for new protocols.
226
264
  OPENSSL_EXPORT int RSA_sign_raw(RSA *rsa, size_t *out_len, uint8_t *out,
227
265
  size_t max_out, const uint8_t *in,
228
266
  size_t in_len, int padding);
229
267
 
230
- /* RSA_verify verifies that |sig_len| bytes from |sig| are a valid,
231
- * RSASSA-PKCS1-v1_5 signature of |msg_len| bytes at |msg| by |rsa|.
232
- *
233
- * The |hash_nid| argument identifies the hash function used to calculate |in|
234
- * and is embedded in the resulting signature in order to prevent hash
235
- * confusion attacks. For example, it might be |NID_sha256|.
236
- *
237
- * It returns one if the signature is valid and zero otherwise.
238
- *
239
- * WARNING: this differs from the original, OpenSSL function which additionally
240
- * returned -1 on error. */
268
+ // RSA_verify verifies that |sig_len| bytes from |sig| are a valid,
269
+ // RSASSA-PKCS1-v1_5 signature of |msg_len| bytes at |msg| by |rsa|.
270
+ //
271
+ // The |hash_nid| argument identifies the hash function used to calculate |msg|
272
+ // and is embedded in the resulting signature in order to prevent hash
273
+ // confusion attacks. For example, it might be |NID_sha256|.
274
+ //
275
+ // It returns one if the signature is valid and zero otherwise.
276
+ //
277
+ // WARNING: this differs from the original, OpenSSL function which additionally
278
+ // returned -1 on error.
241
279
  OPENSSL_EXPORT int RSA_verify(int hash_nid, const uint8_t *msg, size_t msg_len,
242
280
  const uint8_t *sig, size_t sig_len, RSA *rsa);
243
281
 
244
- /* RSA_verify_raw verifies |in_len| bytes of signature from |in| using the
245
- * public key from |rsa| and writes, at most, |max_out| bytes of plaintext to
246
- * |out|. The |max_out| argument must be, at least, |RSA_size| in order to
247
- * ensure success.
248
- *
249
- * It returns 1 on success or zero on error.
250
- *
251
- * The |padding| argument must be one of the |RSA_*_PADDING| values. If in
252
- * doubt, |RSA_PKCS1_PADDING| is the most common but |RSA_PKCS1_PSS_PADDING|
253
- * (via the |EVP_PKEY| interface) is preferred for new protocols. */
282
+ // RSA_verify_pss_mgf1 verifies that |sig_len| bytes from |sig| are a valid,
283
+ // RSASSA-PSS signature of |msg_len| bytes at |msg| by |rsa|. It returns one if
284
+ // the signature is valid and zero otherwise. MGF1 is used as the mask
285
+ // generation function.
286
+ //
287
+ // The |md| and |mgf1_md| arguments identify the hash used to calculate |msg|
288
+ // and the MGF1 hash, respectively. If |mgf1_md| is NULL, |md| is
289
+ // used. |salt_len| specifies the expected salt length in bytes.
290
+ //
291
+ // If |salt_len| is -1, then the salt length is the same as the hash length. If
292
+ // -2, then the salt length is recovered and all values accepted. If unsure, use
293
+ // -1.
294
+ OPENSSL_EXPORT int RSA_verify_pss_mgf1(RSA *rsa, const uint8_t *msg,
295
+ size_t msg_len, const EVP_MD *md,
296
+ const EVP_MD *mgf1_md, int salt_len,
297
+ const uint8_t *sig, size_t sig_len);
298
+
299
+ // RSA_verify_raw verifies |in_len| bytes of signature from |in| using the
300
+ // public key from |rsa| and writes, at most, |max_out| bytes of plaintext to
301
+ // |out|. The |max_out| argument must be, at least, |RSA_size| in order to
302
+ // ensure success.
303
+ //
304
+ // It returns 1 on success or zero on error.
305
+ //
306
+ // The |padding| argument must be one of the |RSA_*_PADDING| values. If in
307
+ // doubt, |RSA_PKCS1_PADDING| is the most common but |RSA_PKCS1_PSS_PADDING|
308
+ // (via the |EVP_PKEY| interface) is preferred for new protocols.
254
309
  OPENSSL_EXPORT int RSA_verify_raw(RSA *rsa, size_t *out_len, uint8_t *out,
255
310
  size_t max_out, const uint8_t *in,
256
311
  size_t in_len, int padding);
257
312
 
258
- /* RSA_private_encrypt encrypts |flen| bytes from |from| with the private key in
259
- * |rsa| and writes the encrypted data to |to|. The |to| buffer must have at
260
- * least |RSA_size| bytes of space. It returns the number of bytes written, or
261
- * -1 on error. The |padding| argument must be one of the |RSA_*_PADDING|
262
- * values. If in doubt, |RSA_PKCS1_PADDING| is the most common but
263
- * |RSA_PKCS1_PSS_PADDING| (via the |EVP_PKEY| interface) is preferred for new
264
- * protocols.
265
- *
266
- * WARNING: this function is dangerous because it breaks the usual return value
267
- * convention. Use |RSA_sign_raw| instead. */
313
+ // RSA_private_encrypt encrypts |flen| bytes from |from| with the private key in
314
+ // |rsa| and writes the encrypted data to |to|. The |to| buffer must have at
315
+ // least |RSA_size| bytes of space. It returns the number of bytes written, or
316
+ // -1 on error. The |padding| argument must be one of the |RSA_*_PADDING|
317
+ // values. If in doubt, |RSA_PKCS1_PADDING| is the most common but
318
+ // |RSA_PKCS1_PSS_PADDING| (via the |EVP_PKEY| interface) is preferred for new
319
+ // protocols.
320
+ //
321
+ // WARNING: this function is dangerous because it breaks the usual return value
322
+ // convention. Use |RSA_sign_raw| instead.
268
323
  OPENSSL_EXPORT int RSA_private_encrypt(size_t flen, const uint8_t *from,
269
324
  uint8_t *to, RSA *rsa, int padding);
270
325
 
271
- /* RSA_public_decrypt verifies |flen| bytes of signature from |from| using the
272
- * public key in |rsa| and writes the plaintext to |to|. The |to| buffer must
273
- * have at least |RSA_size| bytes of space. It returns the number of bytes
274
- * written, or -1 on error. The |padding| argument must be one of the
275
- * |RSA_*_PADDING| values. If in doubt, |RSA_PKCS1_PADDING| is the most common
276
- * but |RSA_PKCS1_PSS_PADDING| (via the |EVP_PKEY| interface) is preferred for
277
- * new protocols.
278
- *
279
- * WARNING: this function is dangerous because it breaks the usual return value
280
- * convention. Use |RSA_verify_raw| instead. */
326
+ // RSA_public_decrypt verifies |flen| bytes of signature from |from| using the
327
+ // public key in |rsa| and writes the plaintext to |to|. The |to| buffer must
328
+ // have at least |RSA_size| bytes of space. It returns the number of bytes
329
+ // written, or -1 on error. The |padding| argument must be one of the
330
+ // |RSA_*_PADDING| values. If in doubt, |RSA_PKCS1_PADDING| is the most common
331
+ // but |RSA_PKCS1_PSS_PADDING| (via the |EVP_PKEY| interface) is preferred for
332
+ // new protocols.
333
+ //
334
+ // WARNING: this function is dangerous because it breaks the usual return value
335
+ // convention. Use |RSA_verify_raw| instead.
281
336
  OPENSSL_EXPORT int RSA_public_decrypt(size_t flen, const uint8_t *from,
282
337
  uint8_t *to, RSA *rsa, int padding);
283
338
 
284
339
 
285
- /* Utility functions. */
340
+ // Utility functions.
286
341
 
287
- /* RSA_size returns the number of bytes in the modulus, which is also the size
288
- * of a signature or encrypted value using |rsa|. */
342
+ // RSA_size returns the number of bytes in the modulus, which is also the size
343
+ // of a signature or encrypted value using |rsa|.
289
344
  OPENSSL_EXPORT unsigned RSA_size(const RSA *rsa);
290
345
 
291
- /* RSA_is_opaque returns one if |rsa| is opaque and doesn't expose its key
292
- * material. Otherwise it returns zero. */
346
+ // RSA_is_opaque returns one if |rsa| is opaque and doesn't expose its key
347
+ // material. Otherwise it returns zero.
293
348
  OPENSSL_EXPORT int RSA_is_opaque(const RSA *rsa);
294
349
 
295
- /* RSA_supports_digest returns one if |rsa| supports signing digests
296
- * of type |md|. Otherwise it returns zero. */
297
- OPENSSL_EXPORT int RSA_supports_digest(const RSA *rsa, const EVP_MD *md);
298
-
299
- /* RSAPublicKey_dup allocates a fresh |RSA| and copies the public key from
300
- * |rsa| into it. It returns the fresh |RSA| object, or NULL on error. */
350
+ // RSAPublicKey_dup allocates a fresh |RSA| and copies the public key from
351
+ // |rsa| into it. It returns the fresh |RSA| object, or NULL on error.
301
352
  OPENSSL_EXPORT RSA *RSAPublicKey_dup(const RSA *rsa);
302
353
 
303
- /* RSAPrivateKey_dup allocates a fresh |RSA| and copies the private key from
304
- * |rsa| into it. It returns the fresh |RSA| object, or NULL on error. */
354
+ // RSAPrivateKey_dup allocates a fresh |RSA| and copies the private key from
355
+ // |rsa| into it. It returns the fresh |RSA| object, or NULL on error.
305
356
  OPENSSL_EXPORT RSA *RSAPrivateKey_dup(const RSA *rsa);
306
357
 
307
- /* RSA_check_key performs basic validatity tests on |rsa|. It returns one if
308
- * they pass and zero otherwise. Opaque keys and public keys always pass. If it
309
- * returns zero then a more detailed error is available on the error queue. */
358
+ // RSA_check_key performs basic validity tests on |rsa|. It returns one if
359
+ // they pass and zero otherwise. Opaque keys and public keys always pass. If it
360
+ // returns zero then a more detailed error is available on the error queue.
310
361
  OPENSSL_EXPORT int RSA_check_key(const RSA *rsa);
311
362
 
312
- /* RSA_recover_crt_params uses |rsa->n|, |rsa->d| and |rsa->e| in order to
313
- * calculate the two primes used and thus the precomputed, CRT values. These
314
- * values are set in the |p|, |q|, |dmp1|, |dmq1| and |iqmp| members of |rsa|,
315
- * which must be |NULL| on entry. It returns one on success and zero
316
- * otherwise. */
317
- OPENSSL_EXPORT int RSA_recover_crt_params(RSA *rsa);
318
-
319
- /* RSA_verify_PKCS1_PSS_mgf1 verifies that |EM| is a correct PSS padding of
320
- * |mHash|, where |mHash| is a digest produced by |Hash|. |EM| must point to
321
- * exactly |RSA_size(rsa)| bytes of data. The |mgf1Hash| argument specifies the
322
- * hash function for generating the mask. If NULL, |Hash| is used. The |sLen|
323
- * argument specifies the expected salt length in bytes. If |sLen| is -1 then
324
- * the salt length is the same as the hash length. If -2, then the salt length
325
- * is recovered and all values accepted.
326
- *
327
- * If unsure, use -1.
328
- *
329
- * It returns one on success or zero on error. */
363
+ // RSA_check_fips performs public key validity tests on |key|. It returns one
364
+ // if they pass and zero otherwise. Opaque keys always fail.
365
+ OPENSSL_EXPORT int RSA_check_fips(RSA *key);
366
+
367
+ // RSA_verify_PKCS1_PSS_mgf1 verifies that |EM| is a correct PSS padding of
368
+ // |mHash|, where |mHash| is a digest produced by |Hash|. |EM| must point to
369
+ // exactly |RSA_size(rsa)| bytes of data. The |mgf1Hash| argument specifies the
370
+ // hash function for generating the mask. If NULL, |Hash| is used. The |sLen|
371
+ // argument specifies the expected salt length in bytes. If |sLen| is -1 then
372
+ // the salt length is the same as the hash length. If -2, then the salt length
373
+ // is recovered and all values accepted.
374
+ //
375
+ // If unsure, use -1.
376
+ //
377
+ // It returns one on success or zero on error.
378
+ //
379
+ // This function implements only the low-level padding logic. Use
380
+ // |RSA_verify_pss_mgf1| instead.
330
381
  OPENSSL_EXPORT int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const uint8_t *mHash,
331
382
  const EVP_MD *Hash,
332
383
  const EVP_MD *mgf1Hash,
333
384
  const uint8_t *EM, int sLen);
334
385
 
335
- /* RSA_padding_add_PKCS1_PSS_mgf1 writes a PSS padding of |mHash| to |EM|,
336
- * where |mHash| is a digest produced by |Hash|. |RSA_size(rsa)| bytes of
337
- * output will be written to |EM|. The |mgf1Hash| argument specifies the hash
338
- * function for generating the mask. If NULL, |Hash| is used. The |sLen|
339
- * argument specifies the expected salt length in bytes. If |sLen| is -1 then
340
- * the salt length is the same as the hash length. If -2, then the salt length
341
- * is maximal given the space in |EM|.
342
- *
343
- * It returns one on success or zero on error. */
386
+ // RSA_padding_add_PKCS1_PSS_mgf1 writes a PSS padding of |mHash| to |EM|,
387
+ // where |mHash| is a digest produced by |Hash|. |RSA_size(rsa)| bytes of
388
+ // output will be written to |EM|. The |mgf1Hash| argument specifies the hash
389
+ // function for generating the mask. If NULL, |Hash| is used. The |sLen|
390
+ // argument specifies the expected salt length in bytes. If |sLen| is -1 then
391
+ // the salt length is the same as the hash length. If -2, then the salt length
392
+ // is maximal given the space in |EM|.
393
+ //
394
+ // It returns one on success or zero on error.
395
+ //
396
+ // This function implements only the low-level padding logic. Use
397
+ // |RSA_sign_pss_mgf1| instead.
344
398
  OPENSSL_EXPORT int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, uint8_t *EM,
345
399
  const uint8_t *mHash,
346
400
  const EVP_MD *Hash,
347
401
  const EVP_MD *mgf1Hash,
348
402
  int sLen);
349
403
 
350
- /* RSA_padding_add_PKCS1_OAEP_mgf1 writes an OAEP padding of |from| to |to|
351
- * with the given parameters and hash functions. If |md| is NULL then SHA-1 is
352
- * used. If |mgf1md| is NULL then the value of |md| is used (which means SHA-1
353
- * if that, in turn, is NULL).
354
- *
355
- * It returns one on success or zero on error. */
404
+ // RSA_padding_add_PKCS1_OAEP_mgf1 writes an OAEP padding of |from| to |to|
405
+ // with the given parameters and hash functions. If |md| is NULL then SHA-1 is
406
+ // used. If |mgf1md| is NULL then the value of |md| is used (which means SHA-1
407
+ // if that, in turn, is NULL).
408
+ //
409
+ // It returns one on success or zero on error.
356
410
  OPENSSL_EXPORT int RSA_padding_add_PKCS1_OAEP_mgf1(
357
- uint8_t *to, unsigned to_len, const uint8_t *from, unsigned from_len,
358
- const uint8_t *param, unsigned param_len, const EVP_MD *md,
411
+ uint8_t *to, size_t to_len, const uint8_t *from, size_t from_len,
412
+ const uint8_t *param, size_t param_len, const EVP_MD *md,
359
413
  const EVP_MD *mgf1md);
360
414
 
361
- /* RSA_add_pkcs1_prefix builds a version of |msg| prefixed with the DigestInfo
362
- * header for the given hash function and sets |out_msg| to point to it. On
363
- * successful return, |*out_msg| may be allocated memory and, if so,
364
- * |*is_alloced| will be 1. */
415
+ // RSA_add_pkcs1_prefix builds a version of |msg| prefixed with the DigestInfo
416
+ // header for the given hash function and sets |out_msg| to point to it. On
417
+ // successful return, if |*is_alloced| is one, the caller must release
418
+ // |*out_msg| with |OPENSSL_free|.
365
419
  OPENSSL_EXPORT int RSA_add_pkcs1_prefix(uint8_t **out_msg, size_t *out_msg_len,
366
420
  int *is_alloced, int hash_nid,
367
421
  const uint8_t *msg, size_t msg_len);
368
422
 
369
423
 
370
- /* ASN.1 functions. */
424
+ // ASN.1 functions.
371
425
 
372
- /* RSA_parse_public_key parses a DER-encoded RSAPublicKey structure (RFC 3447)
373
- * from |cbs| and advances |cbs|. It returns a newly-allocated |RSA| or NULL on
374
- * error. */
426
+ // RSA_parse_public_key parses a DER-encoded RSAPublicKey structure (RFC 3447)
427
+ // from |cbs| and advances |cbs|. It returns a newly-allocated |RSA| or NULL on
428
+ // error.
375
429
  OPENSSL_EXPORT RSA *RSA_parse_public_key(CBS *cbs);
376
430
 
377
- /* RSA_parse_public_key_buggy behaves like |RSA_parse_public_key|, but it
378
- * tolerates some invalid encodings. Do not use this function. */
431
+ // RSA_parse_public_key_buggy behaves like |RSA_parse_public_key|, but it
432
+ // tolerates some invalid encodings. Do not use this function.
379
433
  OPENSSL_EXPORT RSA *RSA_parse_public_key_buggy(CBS *cbs);
380
434
 
381
- /* RSA_public_key_from_bytes parses |in| as a DER-encoded RSAPublicKey structure
382
- * (RFC 3447). It returns a newly-allocated |RSA| or NULL on error. */
435
+ // RSA_public_key_from_bytes parses |in| as a DER-encoded RSAPublicKey structure
436
+ // (RFC 3447). It returns a newly-allocated |RSA| or NULL on error.
383
437
  OPENSSL_EXPORT RSA *RSA_public_key_from_bytes(const uint8_t *in, size_t in_len);
384
438
 
385
- /* RSA_marshal_public_key marshals |rsa| as a DER-encoded RSAPublicKey structure
386
- * (RFC 3447) and appends the result to |cbb|. It returns one on success and
387
- * zero on failure. */
439
+ // RSA_marshal_public_key marshals |rsa| as a DER-encoded RSAPublicKey structure
440
+ // (RFC 3447) and appends the result to |cbb|. It returns one on success and
441
+ // zero on failure.
388
442
  OPENSSL_EXPORT int RSA_marshal_public_key(CBB *cbb, const RSA *rsa);
389
443
 
390
- /* RSA_public_key_to_bytes marshals |rsa| as a DER-encoded RSAPublicKey
391
- * structure (RFC 3447) and, on success, sets |*out_bytes| to a newly allocated
392
- * buffer containing the result and returns one. Otherwise, it returns zero. The
393
- * result should be freed with |OPENSSL_free|. */
444
+ // RSA_public_key_to_bytes marshals |rsa| as a DER-encoded RSAPublicKey
445
+ // structure (RFC 3447) and, on success, sets |*out_bytes| to a newly allocated
446
+ // buffer containing the result and returns one. Otherwise, it returns zero. The
447
+ // result should be freed with |OPENSSL_free|.
394
448
  OPENSSL_EXPORT int RSA_public_key_to_bytes(uint8_t **out_bytes, size_t *out_len,
395
449
  const RSA *rsa);
396
450
 
397
- /* RSA_parse_private_key parses a DER-encoded RSAPrivateKey structure (RFC 3447)
398
- * from |cbs| and advances |cbs|. It returns a newly-allocated |RSA| or NULL on
399
- * error. */
451
+ // RSA_parse_private_key parses a DER-encoded RSAPrivateKey structure (RFC 3447)
452
+ // from |cbs| and advances |cbs|. It returns a newly-allocated |RSA| or NULL on
453
+ // error.
400
454
  OPENSSL_EXPORT RSA *RSA_parse_private_key(CBS *cbs);
401
455
 
402
- /* RSA_private_key_from_bytes parses |in| as a DER-encoded RSAPrivateKey
403
- * structure (RFC 3447). It returns a newly-allocated |RSA| or NULL on error. */
456
+ // RSA_private_key_from_bytes parses |in| as a DER-encoded RSAPrivateKey
457
+ // structure (RFC 3447). It returns a newly-allocated |RSA| or NULL on error.
404
458
  OPENSSL_EXPORT RSA *RSA_private_key_from_bytes(const uint8_t *in,
405
459
  size_t in_len);
406
460
 
407
- /* RSA_marshal_private_key marshals |rsa| as a DER-encoded RSAPrivateKey
408
- * structure (RFC 3447) and appends the result to |cbb|. It returns one on
409
- * success and zero on failure. */
461
+ // RSA_marshal_private_key marshals |rsa| as a DER-encoded RSAPrivateKey
462
+ // structure (RFC 3447) and appends the result to |cbb|. It returns one on
463
+ // success and zero on failure.
410
464
  OPENSSL_EXPORT int RSA_marshal_private_key(CBB *cbb, const RSA *rsa);
411
465
 
412
- /* RSA_private_key_to_bytes marshals |rsa| as a DER-encoded RSAPrivateKey
413
- * structure (RFC 3447) and, on success, sets |*out_bytes| to a newly allocated
414
- * buffer containing the result and returns one. Otherwise, it returns zero. The
415
- * result should be freed with |OPENSSL_free|. */
466
+ // RSA_private_key_to_bytes marshals |rsa| as a DER-encoded RSAPrivateKey
467
+ // structure (RFC 3447) and, on success, sets |*out_bytes| to a newly allocated
468
+ // buffer containing the result and returns one. Otherwise, it returns zero. The
469
+ // result should be freed with |OPENSSL_free|.
416
470
  OPENSSL_EXPORT int RSA_private_key_to_bytes(uint8_t **out_bytes,
417
471
  size_t *out_len, const RSA *rsa);
418
472
 
419
473
 
420
- /* ex_data functions.
421
- *
422
- * See |ex_data.h| for details. */
474
+ // ex_data functions.
475
+ //
476
+ // See |ex_data.h| for details.
423
477
 
424
478
  OPENSSL_EXPORT int RSA_get_ex_new_index(long argl, void *argp,
425
479
  CRYPTO_EX_unused *unused,
426
- CRYPTO_EX_dup *dup_func,
480
+ CRYPTO_EX_dup *dup_unused,
427
481
  CRYPTO_EX_free *free_func);
428
- OPENSSL_EXPORT int RSA_set_ex_data(RSA *r, int idx, void *arg);
429
- OPENSSL_EXPORT void *RSA_get_ex_data(const RSA *r, int idx);
482
+ OPENSSL_EXPORT int RSA_set_ex_data(RSA *rsa, int idx, void *arg);
483
+ OPENSSL_EXPORT void *RSA_get_ex_data(const RSA *rsa, int idx);
430
484
 
431
485
 
432
- /* Flags. */
486
+ // Flags.
433
487
 
434
- /* RSA_FLAG_OPAQUE specifies that this RSA_METHOD does not expose its key
435
- * material. This may be set if, for instance, it is wrapping some other crypto
436
- * API, like a platform key store. */
488
+ // RSA_FLAG_OPAQUE specifies that this RSA_METHOD does not expose its key
489
+ // material. This may be set if, for instance, it is wrapping some other crypto
490
+ // API, like a platform key store.
437
491
  #define RSA_FLAG_OPAQUE 1
438
492
 
439
- /* Deprecated and ignored. */
493
+ // Deprecated and ignored.
440
494
  #define RSA_FLAG_CACHE_PUBLIC 2
441
495
 
442
- /* Deprecated and ignored. */
496
+ // Deprecated and ignored.
443
497
  #define RSA_FLAG_CACHE_PRIVATE 4
444
498
 
445
- /* RSA_FLAG_NO_BLINDING disables blinding of private operations, which is a
446
- * dangerous thing to do. It is deprecated and should not be used. It will
447
- * be ignored whenever possible.
448
- *
449
- * This flag must be used if a key without the public exponent |e| is used for
450
- * private key operations; avoid using such keys whenever possible. */
499
+ // RSA_FLAG_NO_BLINDING disables blinding of private operations, which is a
500
+ // dangerous thing to do. It is deprecated and should not be used. It will
501
+ // be ignored whenever possible.
502
+ //
503
+ // This flag must be used if a key without the public exponent |e| is used for
504
+ // private key operations; avoid using such keys whenever possible.
451
505
  #define RSA_FLAG_NO_BLINDING 8
452
506
 
453
- /* RSA_FLAG_EXT_PKEY is deprecated and ignored. */
507
+ // RSA_FLAG_EXT_PKEY is deprecated and ignored.
454
508
  #define RSA_FLAG_EXT_PKEY 0x20
455
509
 
456
- /* RSA_FLAG_SIGN_VER causes the |sign| and |verify| functions of |rsa_meth_st|
457
- * to be called when set. */
510
+ // RSA_FLAG_SIGN_VER causes the |sign| and |verify| functions of |rsa_meth_st|
511
+ // to be called when set.
458
512
  #define RSA_FLAG_SIGN_VER 0x40
459
513
 
460
514
 
461
- /* RSA public exponent values. */
515
+ // RSA public exponent values.
462
516
 
463
517
  #define RSA_3 0x3
464
518
  #define RSA_F4 0x10001
465
519
 
466
520
 
467
- /* Deprecated functions. */
521
+ // Deprecated functions.
468
522
 
469
- /* RSA_blinding_on returns one. */
523
+ // RSA_blinding_on returns one.
470
524
  OPENSSL_EXPORT int RSA_blinding_on(RSA *rsa, BN_CTX *ctx);
471
525
 
472
- /* RSA_generate_key behaves like |RSA_generate_key_ex|, which is what you
473
- * should use instead. It returns NULL on error, or a newly-allocated |RSA| on
474
- * success. This function is provided for compatibility only. The |callback|
475
- * and |cb_arg| parameters must be NULL. */
526
+ // RSA_generate_key behaves like |RSA_generate_key_ex|, which is what you
527
+ // should use instead. It returns NULL on error, or a newly-allocated |RSA| on
528
+ // success. This function is provided for compatibility only. The |callback|
529
+ // and |cb_arg| parameters must be NULL.
476
530
  OPENSSL_EXPORT RSA *RSA_generate_key(int bits, unsigned long e, void *callback,
477
531
  void *cb_arg);
478
532
 
479
- /* d2i_RSAPublicKey parses an ASN.1, DER-encoded, RSA public key from |len|
480
- * bytes at |*inp|. If |out| is not NULL then, on exit, a pointer to the result
481
- * is in |*out|. Note that, even if |*out| is already non-NULL on entry, it
482
- * will not be written to. Rather, a fresh |RSA| is allocated and the previous
483
- * one is freed. On successful exit, |*inp| is advanced past the DER structure.
484
- * It returns the result or NULL on error. */
533
+ // d2i_RSAPublicKey parses an ASN.1, DER-encoded, RSA public key from |len|
534
+ // bytes at |*inp|. If |out| is not NULL then, on exit, a pointer to the result
535
+ // is in |*out|. Note that, even if |*out| is already non-NULL on entry, it
536
+ // will not be written to. Rather, a fresh |RSA| is allocated and the previous
537
+ // one is freed. On successful exit, |*inp| is advanced past the DER structure.
538
+ // It returns the result or NULL on error.
485
539
  OPENSSL_EXPORT RSA *d2i_RSAPublicKey(RSA **out, const uint8_t **inp, long len);
486
540
 
487
- /* i2d_RSAPublicKey marshals |in| to an ASN.1, DER structure. If |outp| is not
488
- * NULL then the result is written to |*outp| and |*outp| is advanced just past
489
- * the output. It returns the number of bytes in the result, whether written or
490
- * not, or a negative value on error. */
541
+ // i2d_RSAPublicKey marshals |in| to an ASN.1, DER structure. If |outp| is not
542
+ // NULL then the result is written to |*outp| and |*outp| is advanced just past
543
+ // the output. It returns the number of bytes in the result, whether written or
544
+ // not, or a negative value on error.
491
545
  OPENSSL_EXPORT int i2d_RSAPublicKey(const RSA *in, uint8_t **outp);
492
546
 
493
- /* d2i_RSAPrivateKey parses an ASN.1, DER-encoded, RSA private key from |len|
494
- * bytes at |*inp|. If |out| is not NULL then, on exit, a pointer to the result
495
- * is in |*out|. Note that, even if |*out| is already non-NULL on entry, it
496
- * will not be written to. Rather, a fresh |RSA| is allocated and the previous
497
- * one is freed. On successful exit, |*inp| is advanced past the DER structure.
498
- * It returns the result or NULL on error. */
547
+ // d2i_RSAPrivateKey parses an ASN.1, DER-encoded, RSA private key from |len|
548
+ // bytes at |*inp|. If |out| is not NULL then, on exit, a pointer to the result
549
+ // is in |*out|. Note that, even if |*out| is already non-NULL on entry, it
550
+ // will not be written to. Rather, a fresh |RSA| is allocated and the previous
551
+ // one is freed. On successful exit, |*inp| is advanced past the DER structure.
552
+ // It returns the result or NULL on error.
499
553
  OPENSSL_EXPORT RSA *d2i_RSAPrivateKey(RSA **out, const uint8_t **inp, long len);
500
554
 
501
- /* i2d_RSAPrivateKey marshals |in| to an ASN.1, DER structure. If |outp| is not
502
- * NULL then the result is written to |*outp| and |*outp| is advanced just past
503
- * the output. It returns the number of bytes in the result, whether written or
504
- * not, or a negative value on error. */
555
+ // i2d_RSAPrivateKey marshals |in| to an ASN.1, DER structure. If |outp| is not
556
+ // NULL then the result is written to |*outp| and |*outp| is advanced just past
557
+ // the output. It returns the number of bytes in the result, whether written or
558
+ // not, or a negative value on error.
505
559
  OPENSSL_EXPORT int i2d_RSAPrivateKey(const RSA *in, uint8_t **outp);
506
560
 
507
- /* RSA_padding_add_PKCS1_PSS acts like |RSA_padding_add_PKCS1_PSS_mgf1| but the
508
- * |mgf1Hash| parameter of the latter is implicitly set to |Hash|. */
561
+ // RSA_padding_add_PKCS1_PSS acts like |RSA_padding_add_PKCS1_PSS_mgf1| but the
562
+ // |mgf1Hash| parameter of the latter is implicitly set to |Hash|.
563
+ //
564
+ // This function implements only the low-level padding logic. Use
565
+ // |RSA_sign_pss_mgf1| instead.
509
566
  OPENSSL_EXPORT int RSA_padding_add_PKCS1_PSS(RSA *rsa, uint8_t *EM,
510
567
  const uint8_t *mHash,
511
568
  const EVP_MD *Hash, int sLen);
512
569
 
513
- /* RSA_verify_PKCS1_PSS acts like |RSA_verify_PKCS1_PSS_mgf1| but the
514
- * |mgf1Hash| parameter of the latter is implicitly set to |Hash|. */
570
+ // RSA_verify_PKCS1_PSS acts like |RSA_verify_PKCS1_PSS_mgf1| but the
571
+ // |mgf1Hash| parameter of the latter is implicitly set to |Hash|.
572
+ //
573
+ // This function implements only the low-level padding logic. Use
574
+ // |RSA_verify_pss_mgf1| instead.
515
575
  OPENSSL_EXPORT int RSA_verify_PKCS1_PSS(RSA *rsa, const uint8_t *mHash,
516
576
  const EVP_MD *Hash, const uint8_t *EM,
517
577
  int sLen);
518
578
 
519
- /* RSA_padding_add_PKCS1_OAEP acts like |RSA_padding_add_PKCS1_OAEP_mgf1| but
520
- * the |md| and |mgf1md| parameters of the latter are implicitly set to NULL,
521
- * which means SHA-1. */
522
- OPENSSL_EXPORT int RSA_padding_add_PKCS1_OAEP(uint8_t *to, unsigned to_len,
579
+ // RSA_padding_add_PKCS1_OAEP acts like |RSA_padding_add_PKCS1_OAEP_mgf1| but
580
+ // the |md| and |mgf1md| parameters of the latter are implicitly set to NULL,
581
+ // which means SHA-1.
582
+ OPENSSL_EXPORT int RSA_padding_add_PKCS1_OAEP(uint8_t *to, size_t to_len,
523
583
  const uint8_t *from,
524
- unsigned from_len,
584
+ size_t from_len,
525
585
  const uint8_t *param,
526
- unsigned param_len);
586
+ size_t param_len);
527
587
 
528
588
 
529
589
  struct rsa_meth_st {
@@ -534,66 +594,38 @@ struct rsa_meth_st {
534
594
  int (*init)(RSA *rsa);
535
595
  int (*finish)(RSA *rsa);
536
596
 
537
- /* size returns the size of the RSA modulus in bytes. */
597
+ // size returns the size of the RSA modulus in bytes.
538
598
  size_t (*size)(const RSA *rsa);
539
599
 
540
600
  int (*sign)(int type, const uint8_t *m, unsigned int m_length,
541
601
  uint8_t *sigret, unsigned int *siglen, const RSA *rsa);
542
602
 
543
- /* Ignored. Set this to NULL. */
544
- int (*verify)(int dtype, const uint8_t *m, unsigned int m_length,
545
- const uint8_t *sigbuf, unsigned int siglen, const RSA *rsa);
546
-
547
-
548
- /* These functions mirror the |RSA_*| functions of the same name. */
549
- int (*encrypt)(RSA *rsa, size_t *out_len, uint8_t *out, size_t max_out,
550
- const uint8_t *in, size_t in_len, int padding);
603
+ // These functions mirror the |RSA_*| functions of the same name.
551
604
  int (*sign_raw)(RSA *rsa, size_t *out_len, uint8_t *out, size_t max_out,
552
605
  const uint8_t *in, size_t in_len, int padding);
553
-
554
606
  int (*decrypt)(RSA *rsa, size_t *out_len, uint8_t *out, size_t max_out,
555
607
  const uint8_t *in, size_t in_len, int padding);
556
- /* Ignored. Set this to NULL. */
557
- int (*verify_raw)(RSA *rsa, size_t *out_len, uint8_t *out, size_t max_out,
558
- const uint8_t *in, size_t in_len, int padding);
559
-
560
- /* private_transform takes a big-endian integer from |in|, calculates the
561
- * d'th power of it, modulo the RSA modulus and writes the result as a
562
- * big-endian integer to |out|. Both |in| and |out| are |len| bytes long and
563
- * |len| is always equal to |RSA_size(rsa)|. If the result of the transform
564
- * can be represented in fewer than |len| bytes, then |out| must be zero
565
- * padded on the left.
566
- *
567
- * It returns one on success and zero otherwise.
568
- *
569
- * RSA decrypt and sign operations will call this, thus an ENGINE might wish
570
- * to override it in order to avoid having to implement the padding
571
- * functionality demanded by those, higher level, operations. */
608
+
609
+ // private_transform takes a big-endian integer from |in|, calculates the
610
+ // d'th power of it, modulo the RSA modulus and writes the result as a
611
+ // big-endian integer to |out|. Both |in| and |out| are |len| bytes long and
612
+ // |len| is always equal to |RSA_size(rsa)|. If the result of the transform
613
+ // can be represented in fewer than |len| bytes, then |out| must be zero
614
+ // padded on the left.
615
+ //
616
+ // It returns one on success and zero otherwise.
617
+ //
618
+ // RSA decrypt and sign operations will call this, thus an ENGINE might wish
619
+ // to override it in order to avoid having to implement the padding
620
+ // functionality demanded by those, higher level, operations.
572
621
  int (*private_transform)(RSA *rsa, uint8_t *out, const uint8_t *in,
573
622
  size_t len);
574
623
 
575
- /* mod_exp is deprecated and ignored. Set it to NULL. */
576
- int (*mod_exp)(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx);
577
-
578
- /* bn_mod_exp is deprecated and ignored. Set it to NULL. */
579
- int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
580
- const BIGNUM *m, BN_CTX *ctx,
581
- const BN_MONT_CTX *mont);
582
-
583
624
  int flags;
584
-
585
- int (*keygen)(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
586
-
587
- int (*multi_prime_keygen)(RSA *rsa, int bits, int num_primes, BIGNUM *e,
588
- BN_GENCB *cb);
589
-
590
- /* supports_digest returns one if |rsa| supports digests of type
591
- * |md|. If null, it is assumed that all digests are supported. */
592
- int (*supports_digest)(const RSA *rsa, const EVP_MD *md);
593
625
  };
594
626
 
595
627
 
596
- /* Private functions. */
628
+ // Private functions.
597
629
 
598
630
  typedef struct bn_blinding_st BN_BLINDING;
599
631
 
@@ -609,35 +641,33 @@ struct rsa_st {
609
641
  BIGNUM *dmq1;
610
642
  BIGNUM *iqmp;
611
643
 
612
- STACK_OF(RSA_additional_prime) *additional_primes;
613
-
614
- /* be careful using this if the RSA structure is shared */
644
+ // be careful using this if the RSA structure is shared
615
645
  CRYPTO_EX_DATA ex_data;
616
646
  CRYPTO_refcount_t references;
617
647
  int flags;
618
648
 
619
649
  CRYPTO_MUTEX lock;
620
650
 
621
- /* Used to cache montgomery values. The creation of these values is protected
622
- * by |lock|. */
651
+ // Used to cache montgomery values. The creation of these values is protected
652
+ // by |lock|.
623
653
  BN_MONT_CTX *mont_n;
624
654
  BN_MONT_CTX *mont_p;
625
655
  BN_MONT_CTX *mont_q;
626
656
 
627
- /* num_blindings contains the size of the |blindings| and |blindings_inuse|
628
- * arrays. This member and the |blindings_inuse| array are protected by
629
- * |lock|. */
657
+ // num_blindings contains the size of the |blindings| and |blindings_inuse|
658
+ // arrays. This member and the |blindings_inuse| array are protected by
659
+ // |lock|.
630
660
  unsigned num_blindings;
631
- /* blindings is an array of BN_BLINDING structures that can be reserved by a
632
- * thread by locking |lock| and changing the corresponding element in
633
- * |blindings_inuse| from 0 to 1. */
661
+ // blindings is an array of BN_BLINDING structures that can be reserved by a
662
+ // thread by locking |lock| and changing the corresponding element in
663
+ // |blindings_inuse| from 0 to 1.
634
664
  BN_BLINDING **blindings;
635
665
  unsigned char *blindings_inuse;
636
666
  };
637
667
 
638
668
 
639
669
  #if defined(__cplusplus)
640
- } /* extern C */
670
+ } // extern C
641
671
 
642
672
  extern "C++" {
643
673
 
@@ -647,7 +677,7 @@ BORINGSSL_MAKE_DELETER(RSA, RSA_free)
647
677
 
648
678
  } // namespace bssl
649
679
 
650
- } /* extern C++ */
680
+ } // extern C++
651
681
 
652
682
  #endif
653
683
 
@@ -697,5 +727,6 @@ BORINGSSL_MAKE_DELETER(RSA, RSA_free)
697
727
  #define RSA_R_UNKNOWN_PADDING_TYPE 143
698
728
  #define RSA_R_VALUE_MISSING 144
699
729
  #define RSA_R_WRONG_SIGNATURE_LENGTH 145
730
+ #define RSA_R_PUBLIC_KEY_VALIDATION_FAILED 146
700
731
 
701
- #endif /* OPENSSL_HEADER_RSA_H */
732
+ #endif // OPENSSL_HEADER_RSA_H