grpc 1.24.0 → 1.25.0

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 (505) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +306 -243
  3. data/etc/roots.pem +0 -100
  4. data/include/grpc/grpc_security.h +44 -18
  5. data/include/grpc/impl/codegen/grpc_types.h +15 -0
  6. data/include/grpc/impl/codegen/port_platform.h +27 -11
  7. data/include/grpc/impl/codegen/sync_generic.h +1 -1
  8. data/src/boringssl/err_data.c +695 -650
  9. data/src/core/ext/filters/client_channel/client_channel.cc +257 -179
  10. data/src/core/ext/filters/client_channel/client_channel.h +24 -0
  11. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +2 -3
  12. data/src/core/ext/filters/client_channel/client_channel_factory.h +1 -5
  13. data/src/core/ext/filters/client_channel/health/health_check_client.cc +18 -45
  14. data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -13
  15. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy.cc +2 -3
  17. data/src/core/ext/filters/client_channel/lb_policy.h +65 -55
  18. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -14
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +113 -36
  20. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -19
  21. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +36 -13
  22. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -10
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +814 -1589
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +2 -5
  25. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -6
  26. data/src/core/ext/filters/client_channel/resolver.cc +1 -2
  27. data/src/core/ext/filters/client_channel/resolver.h +8 -16
  28. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +25 -8
  29. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +46 -12
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +10 -17
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +7 -8
  32. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  33. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +111 -44
  34. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +22 -14
  35. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  36. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
  37. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -10
  38. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +27 -36
  39. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +7 -10
  40. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -16
  41. data/src/core/ext/filters/client_channel/resolver_factory.h +4 -8
  42. data/src/core/ext/filters/client_channel/resolver_registry.cc +1 -1
  43. data/src/core/ext/filters/client_channel/resolver_registry.h +1 -1
  44. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -10
  45. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +7 -8
  46. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +1 -1
  47. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
  48. data/src/core/ext/filters/client_channel/retry_throttle.h +1 -4
  49. data/src/core/ext/filters/client_channel/service_config.h +8 -8
  50. data/src/core/ext/filters/client_channel/subchannel.cc +53 -86
  51. data/src/core/ext/filters/client_channel/subchannel.h +7 -9
  52. data/src/core/ext/filters/client_channel/subchannel_interface.h +9 -13
  53. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -6
  54. data/src/core/ext/filters/client_channel/{lb_policy/xds/xds_load_balancer_api.cc → xds/xds_api.cc} +169 -52
  55. data/src/core/ext/filters/client_channel/xds/xds_api.h +171 -0
  56. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +450 -0
  57. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +99 -0
  58. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel.h +8 -6
  59. data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
  60. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel_secure.cc +28 -11
  61. data/src/core/ext/filters/client_channel/xds/xds_client.cc +1413 -0
  62. data/src/core/ext/filters/client_channel/xds/xds_client.h +221 -0
  63. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.cc +1 -5
  64. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.h +3 -4
  65. data/src/core/ext/filters/deadline/deadline_filter.cc +20 -20
  66. data/src/core/ext/filters/http/client/http_client_filter.cc +15 -15
  67. data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
  68. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +12 -12
  69. data/src/core/ext/filters/max_age/max_age_filter.cc +59 -50
  70. data/src/core/ext/filters/message_size/message_size_filter.cc +18 -18
  71. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -14
  72. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +233 -175
  73. data/src/core/ext/transport/chttp2/transport/flow_control.h +21 -24
  74. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +253 -163
  75. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +24 -12
  76. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -3
  77. data/src/core/ext/transport/chttp2/transport/internal.h +13 -15
  78. data/src/core/ext/transport/chttp2/transport/writing.cc +3 -0
  79. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -13
  80. data/src/core/lib/channel/channel_args.cc +16 -0
  81. data/src/core/lib/channel/channel_args.h +22 -0
  82. data/src/core/lib/channel/channelz.cc +5 -6
  83. data/src/core/lib/channel/channelz.h +1 -1
  84. data/src/core/lib/channel/connected_channel.cc +20 -20
  85. data/src/core/lib/channel/handshaker.h +3 -4
  86. data/src/core/lib/channel/handshaker_factory.h +1 -3
  87. data/src/core/lib/debug/trace.h +3 -2
  88. data/src/core/lib/gprpp/arena.cc +3 -3
  89. data/src/core/lib/gprpp/arena.h +2 -3
  90. data/src/core/lib/gprpp/inlined_vector.h +9 -0
  91. data/src/core/lib/gprpp/map.h +3 -501
  92. data/src/core/lib/gprpp/memory.h +45 -41
  93. data/src/core/lib/gprpp/mpscq.cc +108 -0
  94. data/src/core/lib/gprpp/mpscq.h +98 -0
  95. data/src/core/lib/gprpp/orphanable.h +6 -11
  96. data/src/core/lib/gprpp/ref_counted.h +25 -19
  97. data/src/core/lib/gprpp/set.h +33 -0
  98. data/src/core/lib/gprpp/thd.h +2 -4
  99. data/src/core/lib/http/httpcli.cc +1 -1
  100. data/src/core/lib/http/httpcli_security_connector.cc +15 -11
  101. data/src/core/lib/http/parser.cc +1 -1
  102. data/src/core/lib/iomgr/buffer_list.cc +4 -5
  103. data/src/core/lib/iomgr/buffer_list.h +5 -6
  104. data/src/core/lib/iomgr/call_combiner.cc +4 -5
  105. data/src/core/lib/iomgr/call_combiner.h +2 -2
  106. data/src/core/lib/iomgr/cfstream_handle.h +3 -5
  107. data/src/core/lib/iomgr/closure.h +8 -3
  108. data/src/core/lib/iomgr/combiner.cc +45 -82
  109. data/src/core/lib/iomgr/combiner.h +32 -8
  110. data/src/core/lib/iomgr/endpoint_cfstream.cc +5 -3
  111. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -15
  112. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -1
  113. data/src/core/lib/iomgr/exec_ctx.h +4 -3
  114. data/src/core/lib/iomgr/executor.cc +4 -2
  115. data/src/core/lib/iomgr/executor.h +3 -0
  116. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
  117. data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
  118. data/src/core/lib/iomgr/executor/threadpool.h +7 -11
  119. data/src/core/lib/iomgr/resource_quota.cc +55 -51
  120. data/src/core/lib/iomgr/resource_quota.h +13 -9
  121. data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
  122. data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
  123. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
  124. data/src/core/lib/iomgr/tcp_custom.cc +9 -7
  125. data/src/core/lib/iomgr/tcp_posix.cc +20 -16
  126. data/src/core/lib/iomgr/tcp_server.h +1 -4
  127. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
  128. data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
  129. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
  130. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  131. data/src/core/lib/iomgr/udp_server.cc +3 -2
  132. data/src/core/lib/iomgr/udp_server.h +6 -12
  133. data/src/core/lib/json/json.h +1 -1
  134. data/src/core/lib/json/json_string.cc +2 -2
  135. data/src/core/lib/profiling/basic_timers.cc +2 -2
  136. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
  137. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
  138. data/src/core/lib/security/credentials/credentials.h +4 -20
  139. data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
  140. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
  141. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
  142. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
  143. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
  144. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
  145. data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
  146. data/src/core/lib/security/security_connector/security_connector.cc +1 -0
  147. data/src/core/lib/security/security_connector/security_connector.h +19 -17
  148. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
  149. data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
  150. data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
  151. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
  152. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
  153. data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
  154. data/src/core/lib/security/transport/security_handshaker.cc +29 -13
  155. data/src/core/lib/security/transport/security_handshaker.h +4 -2
  156. data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
  157. data/src/core/lib/slice/slice.cc +2 -10
  158. data/src/core/lib/slice/slice_hash_table.h +4 -6
  159. data/src/core/lib/slice/slice_intern.cc +42 -39
  160. data/src/core/lib/slice/slice_internal.h +3 -3
  161. data/src/core/lib/slice/slice_utils.h +21 -4
  162. data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
  163. data/src/core/lib/surface/call.cc +3 -3
  164. data/src/core/lib/surface/channel.cc +7 -0
  165. data/src/core/lib/surface/completion_queue.cc +12 -11
  166. data/src/core/lib/surface/completion_queue.h +4 -2
  167. data/src/core/lib/surface/init.cc +1 -0
  168. data/src/core/lib/surface/lame_client.cc +33 -18
  169. data/src/core/lib/surface/server.cc +77 -76
  170. data/src/core/lib/surface/version.cc +1 -1
  171. data/src/core/lib/transport/byte_stream.h +3 -7
  172. data/src/core/lib/transport/connectivity_state.cc +112 -98
  173. data/src/core/lib/transport/connectivity_state.h +100 -50
  174. data/src/core/lib/transport/static_metadata.cc +276 -288
  175. data/src/core/lib/transport/static_metadata.h +73 -76
  176. data/src/core/lib/transport/status_conversion.cc +1 -1
  177. data/src/core/lib/transport/status_metadata.cc +1 -1
  178. data/src/core/lib/transport/transport.cc +2 -2
  179. data/src/core/lib/transport/transport.h +12 -4
  180. data/src/core/lib/transport/transport_op_string.cc +14 -11
  181. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  182. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
  183. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
  184. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
  185. data/src/core/tsi/fake_transport_security.cc +7 -5
  186. data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
  187. data/src/core/tsi/local_transport_security.cc +8 -6
  188. data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
  189. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
  190. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
  191. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
  192. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
  193. data/src/core/tsi/ssl_transport_security.cc +12 -12
  194. data/src/core/tsi/ssl_transport_security.h +2 -2
  195. data/src/core/tsi/transport_security_grpc.cc +7 -0
  196. data/src/core/tsi/transport_security_grpc.h +6 -0
  197. data/src/ruby/ext/grpc/extconf.rb +1 -0
  198. data/src/ruby/ext/grpc/rb_call.c +1 -1
  199. data/src/ruby/ext/grpc/rb_channel.c +1 -1
  200. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  201. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  202. data/src/ruby/lib/grpc/version.rb +1 -1
  203. data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
  204. data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
  205. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
  206. data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
  207. data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
  208. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
  209. data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
  210. data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
  211. data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
  212. data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
  213. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
  214. data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
  215. data/third_party/boringssl/crypto/base64/base64.c +2 -2
  216. data/third_party/boringssl/crypto/bio/bio.c +73 -9
  217. data/third_party/boringssl/crypto/bio/connect.c +4 -0
  218. data/third_party/boringssl/crypto/bio/fd.c +4 -0
  219. data/third_party/boringssl/crypto/bio/file.c +5 -2
  220. data/third_party/boringssl/crypto/bio/socket.c +4 -0
  221. data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
  222. data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
  223. data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
  224. data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
  225. data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
  226. data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
  227. data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
  228. data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
  229. data/third_party/boringssl/crypto/chacha/internal.h +45 -0
  230. data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
  231. data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
  232. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
  233. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
  234. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
  235. data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
  236. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
  237. data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
  238. data/third_party/boringssl/crypto/conf/conf.c +7 -0
  239. data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
  240. data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
  241. data/third_party/boringssl/crypto/cpu-intel.c +45 -51
  242. data/third_party/boringssl/crypto/crypto.c +39 -22
  243. data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
  244. data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
  245. data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
  246. data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
  247. data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
  248. data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
  249. data/third_party/boringssl/crypto/engine/engine.c +2 -1
  250. data/third_party/boringssl/crypto/err/err.c +2 -0
  251. data/third_party/boringssl/crypto/err/internal.h +2 -2
  252. data/third_party/boringssl/crypto/evp/evp.c +89 -8
  253. data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
  254. data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
  255. data/third_party/boringssl/crypto/evp/internal.h +18 -1
  256. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
  257. data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
  258. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
  259. data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
  260. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
  261. data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
  262. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
  263. data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
  264. data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
  265. data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
  266. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
  267. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
  268. data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
  269. data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
  270. data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
  271. data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
  272. data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
  273. data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
  274. data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
  275. data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
  276. data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
  277. data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
  278. data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
  279. data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
  280. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
  281. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
  282. data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
  283. data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
  284. data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
  285. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
  286. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
  287. data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
  288. data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
  289. data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
  290. data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
  291. data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
  292. data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
  293. data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
  294. data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
  295. data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
  296. data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
  297. data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
  298. data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
  299. data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
  300. data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
  301. data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
  302. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
  303. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
  304. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
  305. data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
  306. data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
  307. data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
  308. data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
  309. data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
  310. data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
  311. data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
  312. data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
  313. data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
  314. data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
  315. data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
  316. data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
  317. data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
  318. data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
  319. data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
  320. data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
  321. data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
  322. data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
  323. data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
  324. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
  325. data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
  326. data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
  327. data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
  328. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
  329. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
  330. data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
  331. data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
  332. data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
  333. data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
  334. data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
  335. data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
  336. data/third_party/boringssl/crypto/hrss/internal.h +62 -0
  337. data/third_party/boringssl/crypto/internal.h +95 -20
  338. data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
  339. data/third_party/boringssl/crypto/mem.c +39 -2
  340. data/third_party/boringssl/crypto/obj/obj.c +4 -4
  341. data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
  342. data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
  343. data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
  344. data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
  345. data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
  346. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
  347. data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
  348. data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
  349. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
  350. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
  351. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
  352. data/third_party/boringssl/crypto/pool/internal.h +1 -1
  353. data/third_party/boringssl/crypto/pool/pool.c +21 -0
  354. data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
  355. data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
  356. data/third_party/boringssl/crypto/refcount_lock.c +2 -2
  357. data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
  358. data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
  359. data/third_party/boringssl/crypto/stack/stack.c +83 -32
  360. data/third_party/boringssl/crypto/thread_none.c +2 -2
  361. data/third_party/boringssl/crypto/thread_pthread.c +2 -2
  362. data/third_party/boringssl/crypto/thread_win.c +38 -19
  363. data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
  364. data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
  365. data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
  366. data/third_party/boringssl/crypto/x509/by_file.c +12 -10
  367. data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
  368. data/third_party/boringssl/crypto/x509/t_req.c +1 -3
  369. data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
  370. data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
  371. data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
  372. data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
  373. data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
  374. data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
  375. data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
  376. data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
  377. data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
  378. data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
  379. data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
  380. data/third_party/boringssl/crypto/x509/x509name.c +2 -3
  381. data/third_party/boringssl/crypto/x509/x_all.c +109 -210
  382. data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
  383. data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
  384. data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
  385. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
  386. data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
  387. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
  388. data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
  389. data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
  390. data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
  391. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
  392. data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
  393. data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
  394. data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
  395. data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
  396. data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
  397. data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
  398. data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
  399. data/third_party/boringssl/include/openssl/aead.h +45 -19
  400. data/third_party/boringssl/include/openssl/aes.h +32 -7
  401. data/third_party/boringssl/include/openssl/asn1.h +7 -77
  402. data/third_party/boringssl/include/openssl/base.h +120 -6
  403. data/third_party/boringssl/include/openssl/base64.h +4 -1
  404. data/third_party/boringssl/include/openssl/bio.h +112 -81
  405. data/third_party/boringssl/include/openssl/blowfish.h +3 -3
  406. data/third_party/boringssl/include/openssl/bn.h +55 -29
  407. data/third_party/boringssl/include/openssl/buf.h +2 -2
  408. data/third_party/boringssl/include/openssl/bytestring.h +54 -32
  409. data/third_party/boringssl/include/openssl/cast.h +2 -2
  410. data/third_party/boringssl/include/openssl/cipher.h +46 -16
  411. data/third_party/boringssl/include/openssl/cmac.h +6 -2
  412. data/third_party/boringssl/include/openssl/conf.h +3 -6
  413. data/third_party/boringssl/include/openssl/cpu.h +25 -9
  414. data/third_party/boringssl/include/openssl/crypto.h +32 -10
  415. data/third_party/boringssl/include/openssl/curve25519.h +4 -4
  416. data/third_party/boringssl/include/openssl/dh.h +3 -2
  417. data/third_party/boringssl/include/openssl/digest.h +21 -7
  418. data/third_party/boringssl/include/openssl/dsa.h +8 -2
  419. data/third_party/boringssl/include/openssl/e_os2.h +18 -0
  420. data/third_party/boringssl/include/openssl/ec.h +25 -21
  421. data/third_party/boringssl/include/openssl/ec_key.h +36 -8
  422. data/third_party/boringssl/include/openssl/ecdh.h +17 -0
  423. data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
  424. data/third_party/boringssl/include/openssl/engine.h +4 -4
  425. data/third_party/boringssl/include/openssl/err.h +3 -0
  426. data/third_party/boringssl/include/openssl/evp.h +199 -42
  427. data/third_party/boringssl/include/openssl/hmac.h +4 -4
  428. data/third_party/boringssl/include/openssl/hrss.h +100 -0
  429. data/third_party/boringssl/include/openssl/lhash.h +131 -23
  430. data/third_party/boringssl/include/openssl/md4.h +6 -4
  431. data/third_party/boringssl/include/openssl/md5.h +6 -4
  432. data/third_party/boringssl/include/openssl/mem.h +6 -2
  433. data/third_party/boringssl/include/openssl/nid.h +3 -0
  434. data/third_party/boringssl/include/openssl/obj.h +3 -0
  435. data/third_party/boringssl/include/openssl/pem.h +102 -64
  436. data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
  437. data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
  438. data/third_party/boringssl/include/openssl/pool.h +13 -2
  439. data/third_party/boringssl/include/openssl/ripemd.h +5 -4
  440. data/third_party/boringssl/include/openssl/rsa.h +46 -15
  441. data/third_party/boringssl/include/openssl/sha.h +40 -28
  442. data/third_party/boringssl/include/openssl/siphash.h +37 -0
  443. data/third_party/boringssl/include/openssl/span.h +17 -9
  444. data/third_party/boringssl/include/openssl/ssl.h +766 -393
  445. data/third_party/boringssl/include/openssl/ssl3.h +4 -3
  446. data/third_party/boringssl/include/openssl/stack.h +134 -77
  447. data/third_party/boringssl/include/openssl/thread.h +1 -1
  448. data/third_party/boringssl/include/openssl/tls1.h +25 -9
  449. data/third_party/boringssl/include/openssl/type_check.h +14 -15
  450. data/third_party/boringssl/include/openssl/x509.h +28 -3
  451. data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
  452. data/third_party/boringssl/include/openssl/x509v3.h +17 -13
  453. data/third_party/boringssl/ssl/d1_both.cc +9 -18
  454. data/third_party/boringssl/ssl/d1_lib.cc +4 -3
  455. data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
  456. data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
  457. data/third_party/boringssl/ssl/dtls_method.cc +0 -1
  458. data/third_party/boringssl/ssl/dtls_record.cc +28 -28
  459. data/third_party/boringssl/ssl/handoff.cc +295 -91
  460. data/third_party/boringssl/ssl/handshake.cc +133 -72
  461. data/third_party/boringssl/ssl/handshake_client.cc +218 -189
  462. data/third_party/boringssl/ssl/handshake_server.cc +399 -272
  463. data/third_party/boringssl/ssl/internal.h +1413 -928
  464. data/third_party/boringssl/ssl/s3_both.cc +175 -36
  465. data/third_party/boringssl/ssl/s3_lib.cc +9 -13
  466. data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
  467. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
  468. data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
  469. data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
  470. data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
  471. data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
  472. data/third_party/boringssl/ssl/ssl_file.cc +2 -0
  473. data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
  474. data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
  475. data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
  476. data/third_party/boringssl/ssl/ssl_session.cc +230 -178
  477. data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
  478. data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
  479. data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
  480. data/third_party/boringssl/ssl/t1_enc.cc +5 -96
  481. data/third_party/boringssl/ssl/t1_lib.cc +931 -678
  482. data/third_party/boringssl/ssl/tls13_both.cc +251 -121
  483. data/third_party/boringssl/ssl/tls13_client.cc +129 -73
  484. data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
  485. data/third_party/boringssl/ssl/tls13_server.cc +259 -192
  486. data/third_party/boringssl/ssl/tls_method.cc +26 -21
  487. data/third_party/boringssl/ssl/tls_record.cc +42 -47
  488. data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
  489. data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
  490. data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
  491. data/third_party/boringssl/third_party/fiat/p256.c +238 -999
  492. data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
  493. data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
  494. data/third_party/upb/upb/port_def.inc +1 -1
  495. data/third_party/upb/upb/table.c +2 -1
  496. metadata +72 -44
  497. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
  498. data/src/core/lib/gpr/mpscq.cc +0 -117
  499. data/src/core/lib/gpr/mpscq.h +0 -88
  500. data/src/core/lib/gprpp/abstract.h +0 -47
  501. data/src/core/lib/gprpp/pair.h +0 -38
  502. data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
  503. data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
  504. data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
  505. data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
@@ -64,25 +64,24 @@ extern "C" {
64
64
  #endif
65
65
 
66
66
 
67
- // This header file contains some common macros for enforcing type checking.
68
- // Several, common OpenSSL structures (i.e. stack and lhash) operate on void
69
- // pointers, but we wish to have type checking when they are used with a
70
- // specific type.
67
+ #if defined(__cplusplus) || (defined(_MSC_VER) && !defined(__clang__))
68
+ // In C++ and non-clang MSVC, |static_assert| is a keyword.
69
+ #define OPENSSL_STATIC_ASSERT(cond, msg) static_assert(cond, msg)
70
+ #else
71
+ // C11 defines the |_Static_assert| keyword and the |static_assert| macro in
72
+ // assert.h. While the former is available at all versions in Clang and GCC, the
73
+ // later depends on libc and, in glibc, depends on being built in C11 mode. We
74
+ // do not require this, for now, so use |_Static_assert| directly.
75
+ #define OPENSSL_STATIC_ASSERT(cond, msg) _Static_assert(cond, msg)
76
+ #endif
71
77
 
72
78
  // CHECKED_CAST casts |p| from type |from| to type |to|.
79
+ //
80
+ // TODO(davidben): Although this macro is not public API and is unused in
81
+ // BoringSSL, wpa_supplicant uses it to define its own stacks. Remove this once
82
+ // wpa_supplicant has been fixed.
73
83
  #define CHECKED_CAST(to, from, p) ((to) (1 ? (p) : (from)0))
74
84
 
75
- // CHECKED_PTR_OF casts a given pointer to void* and statically checks that it
76
- // was a pointer to |type|.
77
- #define CHECKED_PTR_OF(type, p) CHECKED_CAST(void*, type*, (p))
78
-
79
- #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
80
- #define OPENSSL_COMPILE_ASSERT(cond, msg) _Static_assert(cond, #msg)
81
- #else
82
- #define OPENSSL_COMPILE_ASSERT(cond, msg) \
83
- typedef char OPENSSL_COMPILE_ASSERT_##msg[((cond) ? 1 : -1)] OPENSSL_UNUSED
84
- #endif
85
-
86
85
 
87
86
  #if defined(__cplusplus)
88
87
  } // extern C
@@ -531,6 +531,8 @@ extern "C" {
531
531
  #define X509_get_signature_type(x) EVP_PKEY_type(OBJ_obj2nid((x)->sig_alg->algorithm))
532
532
 
533
533
  #define X509_CRL_get_version(x) ASN1_INTEGER_get((x)->crl->version)
534
+ const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl);
535
+ const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl);
534
536
  #define X509_CRL_get_lastUpdate(x) ((x)->crl->lastUpdate)
535
537
  #define X509_CRL_get_nextUpdate(x) ((x)->crl->nextUpdate)
536
538
  #define X509_CRL_get_issuer(x) ((x)->crl->issuer)
@@ -671,6 +673,8 @@ OPENSSL_EXPORT int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey);
671
673
  OPENSSL_EXPORT EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a);
672
674
  OPENSSL_EXPORT int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey);
673
675
  OPENSSL_EXPORT EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a);
676
+ OPENSSL_EXPORT DH *d2i_DHparams_bio(BIO *bp, DH **dh);
677
+ OPENSSL_EXPORT int i2d_DHparams_bio(BIO *bp, const DH *dh);
674
678
 
675
679
  OPENSSL_EXPORT X509 *X509_dup(X509 *x509);
676
680
  OPENSSL_EXPORT X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa);
@@ -762,6 +766,8 @@ OPENSSL_EXPORT void *X509_get_ex_data(X509 *r, int idx);
762
766
  OPENSSL_EXPORT int i2d_X509_AUX(X509 *a,unsigned char **pp);
763
767
  OPENSSL_EXPORT X509 * d2i_X509_AUX(X509 **a,const unsigned char **pp,long length);
764
768
 
769
+ OPENSSL_EXPORT int i2d_re_X509_tbs(X509 *x, unsigned char **pp);
770
+
765
771
  OPENSSL_EXPORT void X509_get0_signature(const ASN1_BIT_STRING **psig,
766
772
  const X509_ALGOR **palg, const X509 *x);
767
773
  OPENSSL_EXPORT int X509_get_signature_nid(const X509 *x);
@@ -829,9 +835,15 @@ OPENSSL_EXPORT int X509_set_pubkey(X509 *x, EVP_PKEY *pkey);
829
835
  OPENSSL_EXPORT EVP_PKEY * X509_get_pubkey(X509 *x);
830
836
  OPENSSL_EXPORT ASN1_BIT_STRING * X509_get0_pubkey_bitstr(const X509 *x);
831
837
  OPENSSL_EXPORT STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x);
838
+ OPENSSL_EXPORT const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x);
832
839
 
833
840
  OPENSSL_EXPORT int X509_REQ_set_version(X509_REQ *x,long version);
834
841
  OPENSSL_EXPORT int X509_REQ_set_subject_name(X509_REQ *req,X509_NAME *name);
842
+ OPENSSL_EXPORT void X509_REQ_get0_signature(const X509_REQ *req,
843
+ const ASN1_BIT_STRING **psig,
844
+ const X509_ALGOR **palg);
845
+ OPENSSL_EXPORT int X509_REQ_get_signature_nid(const X509_REQ *req);
846
+ OPENSSL_EXPORT int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp);
835
847
  OPENSSL_EXPORT int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey);
836
848
  OPENSSL_EXPORT EVP_PKEY * X509_REQ_get_pubkey(X509_REQ *req);
837
849
  OPENSSL_EXPORT int X509_REQ_extension_nid(int nid);
@@ -866,7 +878,17 @@ OPENSSL_EXPORT int X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm);
866
878
  OPENSSL_EXPORT int X509_CRL_sort(X509_CRL *crl);
867
879
  OPENSSL_EXPORT int X509_CRL_up_ref(X509_CRL *crl);
868
880
 
881
+ OPENSSL_EXPORT void X509_CRL_get0_signature(const X509_CRL *crl,
882
+ const ASN1_BIT_STRING **psig,
883
+ const X509_ALGOR **palg);
884
+ OPENSSL_EXPORT int X509_CRL_get_signature_nid(const X509_CRL *crl);
885
+ OPENSSL_EXPORT int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp);
886
+
887
+ OPENSSL_EXPORT const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(
888
+ const X509_REVOKED *x);
869
889
  OPENSSL_EXPORT int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial);
890
+ OPENSSL_EXPORT const ASN1_TIME *X509_REVOKED_get0_revocationDate(
891
+ const X509_REVOKED *x);
870
892
  OPENSSL_EXPORT int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm);
871
893
 
872
894
  OPENSSL_EXPORT X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer,
@@ -874,7 +896,7 @@ OPENSSL_EXPORT X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer,
874
896
 
875
897
  OPENSSL_EXPORT int X509_REQ_check_private_key(X509_REQ *x509,EVP_PKEY *pkey);
876
898
 
877
- OPENSSL_EXPORT int X509_check_private_key(X509 *x509,EVP_PKEY *pkey);
899
+ OPENSSL_EXPORT int X509_check_private_key(X509 *x509, const EVP_PKEY *pkey);
878
900
  OPENSSL_EXPORT int X509_chain_check_suiteb(int *perror_depth,
879
901
  X509 *x, STACK_OF(X509) *chain,
880
902
  unsigned long flags);
@@ -1107,13 +1129,15 @@ DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS)
1107
1129
  #if !defined(BORINGSSL_NO_CXX)
1108
1130
  extern "C++" {
1109
1131
 
1110
- namespace bssl {
1132
+ BSSL_NAMESPACE_BEGIN
1111
1133
 
1112
1134
  BORINGSSL_MAKE_DELETER(NETSCAPE_SPKI, NETSCAPE_SPKI_free)
1113
1135
  BORINGSSL_MAKE_DELETER(RSA_PSS_PARAMS, RSA_PSS_PARAMS_free)
1114
1136
  BORINGSSL_MAKE_DELETER(X509, X509_free)
1137
+ BORINGSSL_MAKE_UP_REF(X509, X509_up_ref)
1115
1138
  BORINGSSL_MAKE_DELETER(X509_ALGOR, X509_ALGOR_free)
1116
1139
  BORINGSSL_MAKE_DELETER(X509_CRL, X509_CRL_free)
1140
+ BORINGSSL_MAKE_UP_REF(X509_CRL, X509_CRL_up_ref)
1117
1141
  BORINGSSL_MAKE_DELETER(X509_CRL_METHOD, X509_CRL_METHOD_free)
1118
1142
  BORINGSSL_MAKE_DELETER(X509_EXTENSION, X509_EXTENSION_free)
1119
1143
  BORINGSSL_MAKE_DELETER(X509_INFO, X509_INFO_free)
@@ -1134,7 +1158,7 @@ using ScopedX509_STORE_CTX =
1134
1158
  internal::StackAllocated<X509_STORE_CTX, void, X509_STORE_CTX_zero,
1135
1159
  X509_STORE_CTX_cleanup>;
1136
1160
 
1137
- } // namespace bssl
1161
+ BSSL_NAMESPACE_END
1138
1162
 
1139
1163
  } /* extern C++ */
1140
1164
  #endif /* !BORINGSSL_NO_CXX */
@@ -1176,5 +1200,6 @@ using ScopedX509_STORE_CTX =
1176
1200
  #define X509_R_WRONG_TYPE 134
1177
1201
  #define X509_R_NAME_TOO_LONG 135
1178
1202
  #define X509_R_INVALID_PARAMETER 136
1203
+ #define X509_R_SIGNATURE_ALGORITHM_MISMATCH 137
1179
1204
 
1180
1205
  #endif
@@ -158,6 +158,25 @@ struct X509_VERIFY_PARAM_st
158
158
 
159
159
  DEFINE_STACK_OF(X509_VERIFY_PARAM)
160
160
 
161
+ typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *);
162
+ typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *);
163
+ typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer,
164
+ X509_STORE_CTX *ctx, X509 *x);
165
+ typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx,
166
+ X509 *x, X509 *issuer);
167
+ typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx);
168
+ typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx,
169
+ X509_CRL **crl, X509 *x);
170
+ typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl);
171
+ typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx,
172
+ X509_CRL *crl, X509 *x);
173
+ typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx);
174
+ typedef STACK_OF(X509) *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx,
175
+ X509_NAME *nm);
176
+ typedef STACK_OF(X509_CRL) *(*X509_STORE_CTX_lookup_crls_fn)(X509_STORE_CTX *ctx,
177
+ X509_NAME *nm);
178
+ typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx);
179
+
161
180
  /* This is used to hold everything. It is used for all certificate
162
181
  * validation. Once we have a certificate chain, the 'verify'
163
182
  * function is then called to actually check the cert chain. */
@@ -175,26 +194,23 @@ struct x509_store_st
175
194
  X509_VERIFY_PARAM *param;
176
195
 
177
196
  /* Callbacks for various operations */
178
- int (*verify)(X509_STORE_CTX *ctx); /* called to verify a certificate */
179
- int (*verify_cb)(int ok,X509_STORE_CTX *ctx); /* error callback */
180
- int (*get_issuer)(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); /* get issuers cert from ctx */
181
- int (*check_issued)(X509_STORE_CTX *ctx, X509 *x, X509 *issuer); /* check issued */
182
- int (*check_revocation)(X509_STORE_CTX *ctx); /* Check revocation status of chain */
183
- int (*get_crl)(X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); /* retrieve CRL */
184
- int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl); /* Check CRL validity */
185
- int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); /* Check certificate against CRL */
186
- STACK_OF(X509) * (*lookup_certs)(X509_STORE_CTX *ctx, X509_NAME *nm);
187
- STACK_OF(X509_CRL) * (*lookup_crls)(X509_STORE_CTX *ctx, X509_NAME *nm);
188
- int (*cleanup)(X509_STORE_CTX *ctx);
197
+ X509_STORE_CTX_verify_fn verify; /* called to verify a certificate */
198
+ X509_STORE_CTX_verify_cb verify_cb; /* error callback */
199
+ X509_STORE_CTX_get_issuer_fn get_issuer; /* get issuers cert from ctx */
200
+ X509_STORE_CTX_check_issued_fn check_issued; /* check issued */
201
+ X509_STORE_CTX_check_revocation_fn check_revocation; /* Check revocation status of chain */
202
+ X509_STORE_CTX_get_crl_fn get_crl; /* retrieve CRL */
203
+ X509_STORE_CTX_check_crl_fn check_crl; /* Check CRL validity */
204
+ X509_STORE_CTX_cert_crl_fn cert_crl; /* Check certificate against CRL */
205
+ X509_STORE_CTX_lookup_certs_fn lookup_certs;
206
+ X509_STORE_CTX_lookup_crls_fn lookup_crls;
207
+ X509_STORE_CTX_cleanup_fn cleanup;
189
208
 
190
209
  CRYPTO_refcount_t references;
191
210
  } /* X509_STORE */;
192
211
 
193
212
  OPENSSL_EXPORT int X509_STORE_set_depth(X509_STORE *store, int depth);
194
213
 
195
- #define X509_STORE_set_verify_cb_func(ctx,func) ((ctx)->verify_cb=(func))
196
- #define X509_STORE_set_verify_func(ctx,func) ((ctx)->verify=(func))
197
-
198
214
  /* This is the functions plus an instance of the local variables. */
199
215
  struct x509_lookup_st
200
216
  {
@@ -222,18 +238,18 @@ struct x509_store_ctx_st /* X509_STORE_CTX */
222
238
  void *other_ctx; /* Other info for use with get_issuer() */
223
239
 
224
240
  /* Callbacks for various operations */
225
- int (*verify)(X509_STORE_CTX *ctx); /* called to verify a certificate */
226
- int (*verify_cb)(int ok,X509_STORE_CTX *ctx); /* error callback */
227
- int (*get_issuer)(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); /* get issuers cert from ctx */
228
- int (*check_issued)(X509_STORE_CTX *ctx, X509 *x, X509 *issuer); /* check issued */
229
- int (*check_revocation)(X509_STORE_CTX *ctx); /* Check revocation status of chain */
230
- int (*get_crl)(X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); /* retrieve CRL */
231
- int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl); /* Check CRL validity */
232
- int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); /* Check certificate against CRL */
233
- int (*check_policy)(X509_STORE_CTX *ctx);
234
- STACK_OF(X509) * (*lookup_certs)(X509_STORE_CTX *ctx, X509_NAME *nm);
235
- STACK_OF(X509_CRL) * (*lookup_crls)(X509_STORE_CTX *ctx, X509_NAME *nm);
236
- int (*cleanup)(X509_STORE_CTX *ctx);
241
+ X509_STORE_CTX_verify_fn verify; /* called to verify a certificate */
242
+ X509_STORE_CTX_verify_cb verify_cb; /* error callback */
243
+ X509_STORE_CTX_get_issuer_fn get_issuer; /* get issuers cert from ctx */
244
+ X509_STORE_CTX_check_issued_fn check_issued; /* check issued */
245
+ X509_STORE_CTX_check_revocation_fn check_revocation; /* Check revocation status of chain */
246
+ X509_STORE_CTX_get_crl_fn get_crl; /* retrieve CRL */
247
+ X509_STORE_CTX_check_crl_fn check_crl; /* Check CRL validity */
248
+ X509_STORE_CTX_cert_crl_fn cert_crl; /* Check certificate against CRL */
249
+ X509_STORE_CTX_check_policy_fn check_policy;
250
+ X509_STORE_CTX_lookup_certs_fn lookup_certs;
251
+ X509_STORE_CTX_lookup_crls_fn lookup_crls;
252
+ X509_STORE_CTX_cleanup_fn cleanup;
237
253
 
238
254
  /* The following is built up */
239
255
  int valid; /* if 0, rebuild chain */
@@ -354,6 +370,8 @@ OPENSSL_EXPORT void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
354
370
  /* Issuer lookup error */
355
371
  #define X509_V_ERR_STORE_LOOKUP 66
356
372
 
373
+ #define X509_V_ERR_NAME_CONSTRAINTS_WITHOUT_SANS 67
374
+
357
375
  /* Certificate verify flags */
358
376
 
359
377
  /* Send issuer+subject checks to verify_cb */
@@ -366,8 +384,8 @@ OPENSSL_EXPORT void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
366
384
  #define X509_V_FLAG_CRL_CHECK_ALL 0x8
367
385
  /* Ignore unhandled critical extensions */
368
386
  #define X509_V_FLAG_IGNORE_CRITICAL 0x10
369
- /* Disable workarounds for broken certificates */
370
- #define X509_V_FLAG_X509_STRICT 0x20
387
+ /* Does nothing as its functionality has been enabled by default. */
388
+ #define X509_V_FLAG_X509_STRICT 0x00
371
389
  /* Enable proxy certificate validation */
372
390
  #define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40
373
391
  /* Enable policy checking */
@@ -441,11 +459,58 @@ OPENSSL_EXPORT X509_VERIFY_PARAM *X509_STORE_get0_param(X509_STORE *ctx);
441
459
  OPENSSL_EXPORT void X509_STORE_set0_additional_untrusted(
442
460
  X509_STORE *ctx, STACK_OF(X509) *untrusted);
443
461
 
444
- OPENSSL_EXPORT void X509_STORE_set_verify_cb(X509_STORE *ctx,
445
- int (*verify_cb)(int, X509_STORE_CTX *));
462
+ OPENSSL_EXPORT void X509_STORE_set_verify(X509_STORE *ctx,
463
+ X509_STORE_CTX_verify_fn verify);
464
+ #define X509_STORE_set_verify_func(ctx, func) \
465
+ X509_STORE_set_verify((ctx), (func))
466
+ OPENSSL_EXPORT void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx,
467
+ X509_STORE_CTX_verify_fn verify);
468
+ OPENSSL_EXPORT X509_STORE_CTX_verify_fn X509_STORE_get_verify(X509_STORE *ctx);
469
+ OPENSSL_EXPORT void X509_STORE_set_verify_cb(
470
+ X509_STORE *ctx, X509_STORE_CTX_verify_cb verify_cb);
471
+ #define X509_STORE_set_verify_cb_func(ctx, func) \
472
+ X509_STORE_set_verify_cb((ctx), (func))
473
+ OPENSSL_EXPORT X509_STORE_CTX_verify_cb
474
+ X509_STORE_get_verify_cb(X509_STORE *ctx);
475
+ OPENSSL_EXPORT void X509_STORE_set_get_issuer(
476
+ X509_STORE *ctx, X509_STORE_CTX_get_issuer_fn get_issuer);
477
+ OPENSSL_EXPORT X509_STORE_CTX_get_issuer_fn
478
+ X509_STORE_get_get_issuer(X509_STORE *ctx);
479
+ OPENSSL_EXPORT void X509_STORE_set_check_issued(
480
+ X509_STORE *ctx, X509_STORE_CTX_check_issued_fn check_issued);
481
+ OPENSSL_EXPORT X509_STORE_CTX_check_issued_fn
482
+ X509_STORE_get_check_issued(X509_STORE *ctx);
483
+ OPENSSL_EXPORT void X509_STORE_set_check_revocation(
484
+ X509_STORE *ctx, X509_STORE_CTX_check_revocation_fn check_revocation);
485
+ OPENSSL_EXPORT X509_STORE_CTX_check_revocation_fn
486
+ X509_STORE_get_check_revocation(X509_STORE *ctx);
487
+ OPENSSL_EXPORT void X509_STORE_set_get_crl(X509_STORE *ctx,
488
+ X509_STORE_CTX_get_crl_fn get_crl);
489
+ OPENSSL_EXPORT X509_STORE_CTX_get_crl_fn
490
+ X509_STORE_get_get_crl(X509_STORE *ctx);
491
+ OPENSSL_EXPORT void X509_STORE_set_check_crl(
492
+ X509_STORE *ctx, X509_STORE_CTX_check_crl_fn check_crl);
493
+ OPENSSL_EXPORT X509_STORE_CTX_check_crl_fn
494
+ X509_STORE_get_check_crl(X509_STORE *ctx);
495
+ OPENSSL_EXPORT void X509_STORE_set_cert_crl(
496
+ X509_STORE *ctx, X509_STORE_CTX_cert_crl_fn cert_crl);
497
+ OPENSSL_EXPORT X509_STORE_CTX_cert_crl_fn
498
+ X509_STORE_get_cert_crl(X509_STORE *ctx);
499
+ OPENSSL_EXPORT void X509_STORE_set_lookup_certs(
500
+ X509_STORE *ctx, X509_STORE_CTX_lookup_certs_fn lookup_certs);
501
+ OPENSSL_EXPORT X509_STORE_CTX_lookup_certs_fn
502
+ X509_STORE_get_lookup_certs(X509_STORE *ctx);
503
+ OPENSSL_EXPORT void X509_STORE_set_lookup_crls(
504
+ X509_STORE *ctx, X509_STORE_CTX_lookup_crls_fn lookup_crls);
505
+ #define X509_STORE_set_lookup_crls_cb(ctx, func) \
506
+ X509_STORE_set_lookup_crls((ctx), (func))
507
+ OPENSSL_EXPORT X509_STORE_CTX_lookup_crls_fn
508
+ X509_STORE_get_lookup_crls(X509_STORE *ctx);
509
+ OPENSSL_EXPORT void X509_STORE_set_cleanup(X509_STORE *ctx,
510
+ X509_STORE_CTX_cleanup_fn cleanup);
511
+ OPENSSL_EXPORT X509_STORE_CTX_cleanup_fn
512
+ X509_STORE_get_cleanup(X509_STORE *ctx);
446
513
 
447
- OPENSSL_EXPORT void X509_STORE_set_lookup_crls_cb(X509_STORE *ctx,
448
- STACK_OF(X509_CRL)* (*cb)(X509_STORE_CTX *ctx, X509_NAME *nm));
449
514
 
450
515
  OPENSSL_EXPORT X509_STORE_CTX *X509_STORE_CTX_new(void);
451
516
 
@@ -459,6 +524,7 @@ OPENSSL_EXPORT void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X
459
524
  OPENSSL_EXPORT void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx);
460
525
 
461
526
  OPENSSL_EXPORT X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx);
527
+ OPENSSL_EXPORT X509 *X509_STORE_CTX_get0_cert(X509_STORE_CTX *ctx);
462
528
 
463
529
  OPENSSL_EXPORT X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m);
464
530
 
@@ -57,8 +57,8 @@
57
57
 
58
58
  #include <openssl/bio.h>
59
59
  #include <openssl/conf.h>
60
- #include <openssl/lhash.h>
61
60
  #include <openssl/x509.h>
61
+ #include <openssl/lhash.h>
62
62
 
63
63
  #ifdef __cplusplus
64
64
  extern "C" {
@@ -612,7 +612,11 @@ OPENSSL_EXPORT GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
612
612
  X509V3_CTX *ctx, CONF_VALUE *cnf, int is_nc);
613
613
  OPENSSL_EXPORT void X509V3_conf_free(CONF_VALUE *val);
614
614
 
615
+ // X509V3_EXT_conf_nid contains the only exposed instance of an LHASH in our
616
+ // public headers. The |conf| pointer must be NULL but cryptography.io wraps
617
+ // this function so we cannot, yet, replace the type with a dummy struct.
615
618
  OPENSSL_EXPORT X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, int ext_nid, char *value);
619
+
616
620
  OPENSSL_EXPORT X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, char *value);
617
621
  OPENSSL_EXPORT X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, char *name, char *value);
618
622
  OPENSSL_EXPORT int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, char *section, STACK_OF(X509_EXTENSION) **sk);
@@ -620,9 +624,6 @@ OPENSSL_EXPORT int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, char *secti
620
624
  OPENSSL_EXPORT int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_REQ *req);
621
625
  OPENSSL_EXPORT int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_CRL *crl);
622
626
 
623
- OPENSSL_EXPORT int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
624
- char *section, X509_CRL *crl);
625
-
626
627
  OPENSSL_EXPORT int X509V3_add_value_bool_nf(char *name, int asn1_bool,
627
628
  STACK_OF(CONF_VALUE) **extlist);
628
629
  OPENSSL_EXPORT int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool);
@@ -665,10 +666,6 @@ OPENSSL_EXPORT int X509V3_EXT_free(int nid, void *ext_data);
665
666
  OPENSSL_EXPORT X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
666
667
  OPENSSL_EXPORT int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, int crit, unsigned long flags);
667
668
 
668
- char *hex_to_string(const unsigned char *buffer, long len);
669
- unsigned char *string_to_hex(const char *str, long *len);
670
- int name_cmp(const char *name, const char *cmp);
671
-
672
669
  OPENSSL_EXPORT void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent,
673
670
  int ml);
674
671
  OPENSSL_EXPORT int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, int indent);
@@ -682,6 +679,11 @@ OPENSSL_EXPORT int X509_supported_extension(X509_EXTENSION *ex);
682
679
  OPENSSL_EXPORT int X509_PURPOSE_set(int *p, int purpose);
683
680
  OPENSSL_EXPORT int X509_check_issued(X509 *issuer, X509 *subject);
684
681
  OPENSSL_EXPORT int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid);
682
+
683
+ OPENSSL_EXPORT uint32_t X509_get_extension_flags(X509 *x);
684
+ OPENSSL_EXPORT uint32_t X509_get_key_usage(X509 *x);
685
+ OPENSSL_EXPORT uint32_t X509_get_extended_key_usage(X509 *x);
686
+
685
687
  OPENSSL_EXPORT int X509_PURPOSE_get_count(void);
686
688
  OPENSSL_EXPORT X509_PURPOSE * X509_PURPOSE_get0(int idx);
687
689
  OPENSSL_EXPORT int X509_PURPOSE_get_by_sname(char *sname);
@@ -701,8 +703,8 @@ OPENSSL_EXPORT void X509_email_free(STACK_OF(OPENSSL_STRING) *sk);
701
703
  OPENSSL_EXPORT STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x);
702
704
  /* Flags for X509_check_* functions */
703
705
 
704
- /* Always check subject name for host match even if subject alt names present */
705
- #define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1
706
+ /* Deprecated: this flag does nothing */
707
+ #define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0
706
708
  /* Disable wildcard matching for dnsName fields and common name. */
707
709
  #define X509_CHECK_FLAG_NO_WILDCARDS 0x2
708
710
  /* Wildcards must not match a partial label. */
@@ -711,6 +713,8 @@ OPENSSL_EXPORT STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x);
711
713
  #define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8
712
714
  /* Constraint verifier subdomain patterns to match a single labels. */
713
715
  #define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10
716
+ /* Skip the subject common name fallback if subjectAltNames is missing. */
717
+ #define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 0x20
714
718
  /*
715
719
  * Match reference identifiers starting with "." to any sub-domain.
716
720
  * This is a non-public flag, turned on implicitly when the subject
@@ -746,16 +750,16 @@ DEFINE_STACK_OF(X509_POLICY_NODE)
746
750
 
747
751
  extern "C++" {
748
752
 
749
- namespace bssl {
753
+ BSSL_NAMESPACE_BEGIN
750
754
 
751
- BORINGSSL_MAKE_DELETER(AUTHORITY_INFO_ACCESS, AUTHORITY_INFO_ACCESS_free)
755
+ BORINGSSL_MAKE_DELETER(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION_free)
752
756
  BORINGSSL_MAKE_DELETER(AUTHORITY_KEYID, AUTHORITY_KEYID_free)
753
757
  BORINGSSL_MAKE_DELETER(BASIC_CONSTRAINTS, BASIC_CONSTRAINTS_free)
754
758
  BORINGSSL_MAKE_DELETER(DIST_POINT, DIST_POINT_free)
755
759
  BORINGSSL_MAKE_DELETER(GENERAL_NAME, GENERAL_NAME_free)
756
760
  BORINGSSL_MAKE_DELETER(POLICYINFO, POLICYINFO_free)
757
761
 
758
- } // namespace bssl
762
+ BSSL_NAMESPACE_END
759
763
 
760
764
  } /* extern C++ */
761
765
  #endif
@@ -127,7 +127,7 @@
127
127
  #include "internal.h"
128
128
 
129
129
 
130
- namespace bssl {
130
+ BSSL_NAMESPACE_BEGIN
131
131
 
132
132
  // TODO(davidben): 28 comes from the size of IP + UDP header. Is this reasonable
133
133
  // for these values? Notably, why is kMinMTU a function of the transport
@@ -405,7 +405,7 @@ ssl_open_record_t dtls1_open_handshake(SSL *ssl, size_t *out_consumed,
405
405
  return ssl_open_record_success;
406
406
  }
407
407
 
408
- bool dtls1_get_message(SSL *ssl, SSLMessage *out) {
408
+ bool dtls1_get_message(const SSL *ssl, SSLMessage *out) {
409
409
  if (!dtls1_is_current_message_complete(ssl)) {
410
410
  return false;
411
411
  }
@@ -601,15 +601,6 @@ bool dtls1_add_change_cipher_spec(SSL *ssl) {
601
601
  return add_outgoing(ssl, true /* ChangeCipherSpec */, Array<uint8_t>());
602
602
  }
603
603
 
604
- bool dtls1_add_alert(SSL *ssl, uint8_t level, uint8_t desc) {
605
- // The |add_alert| path is only used for warning alerts for now, which DTLS
606
- // never sends. This will be implemented later once closure alerts are
607
- // converted.
608
- assert(false);
609
- OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
610
- return false;
611
- }
612
-
613
604
  // dtls1_update_mtu updates the current MTU from the BIO, ensuring it is above
614
605
  // the minimum.
615
606
  static void dtls1_update_mtu(SSL *ssl) {
@@ -618,12 +609,12 @@ static void dtls1_update_mtu(SSL *ssl) {
618
609
  // |SSL_set_mtu|. Does this need to be so complex?
619
610
  if (ssl->d1->mtu < dtls1_min_mtu() &&
620
611
  !(SSL_get_options(ssl) & SSL_OP_NO_QUERY_MTU)) {
621
- long mtu = BIO_ctrl(ssl->wbio, BIO_CTRL_DGRAM_QUERY_MTU, 0, NULL);
612
+ long mtu = BIO_ctrl(ssl->wbio.get(), BIO_CTRL_DGRAM_QUERY_MTU, 0, NULL);
622
613
  if (mtu >= 0 && mtu <= (1 << 30) && (unsigned)mtu >= dtls1_min_mtu()) {
623
614
  ssl->d1->mtu = (unsigned)mtu;
624
615
  } else {
625
616
  ssl->d1->mtu = kDefaultMTU;
626
- BIO_ctrl(ssl->wbio, BIO_CTRL_DGRAM_SET_MTU, ssl->d1->mtu, NULL);
617
+ BIO_ctrl(ssl->wbio.get(), BIO_CTRL_DGRAM_SET_MTU, ssl->d1->mtu, NULL);
627
618
  }
628
619
  }
629
620
 
@@ -803,19 +794,19 @@ static int send_flight(SSL *ssl) {
803
794
  goto err;
804
795
  }
805
796
 
806
- int bio_ret = BIO_write(ssl->wbio, packet, packet_len);
797
+ int bio_ret = BIO_write(ssl->wbio.get(), packet, packet_len);
807
798
  if (bio_ret <= 0) {
808
799
  // Retry this packet the next time around.
809
800
  ssl->d1->outgoing_written = old_written;
810
801
  ssl->d1->outgoing_offset = old_offset;
811
- ssl->s3->rwstate = SSL_WRITING;
802
+ ssl->s3->rwstate = SSL_ERROR_WANT_WRITE;
812
803
  ret = bio_ret;
813
804
  goto err;
814
805
  }
815
806
  }
816
807
 
817
- if (BIO_flush(ssl->wbio) <= 0) {
818
- ssl->s3->rwstate = SSL_WRITING;
808
+ if (BIO_flush(ssl->wbio.get()) <= 0) {
809
+ ssl->s3->rwstate = SSL_ERROR_WANT_WRITE;
819
810
  goto err;
820
811
  }
821
812
 
@@ -848,4 +839,4 @@ unsigned int dtls1_min_mtu(void) {
848
839
  return kMinMTU;
849
840
  }
850
841
 
851
- } // namespace bssl
842
+ BSSL_NAMESPACE_END