grpc 1.35.0 → 1.36.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 (335) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +60 -57
  3. data/include/grpc/grpc_security.h +16 -11
  4. data/src/core/ext/filters/client_channel/client_channel.cc +32 -26
  5. data/src/core/ext/filters/client_channel/client_channel.h +0 -2
  6. data/src/core/ext/filters/client_channel/config_selector.h +1 -1
  7. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -2
  8. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +3 -5
  9. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
  10. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -2
  11. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +1 -1
  12. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +8 -6
  13. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +289 -170
  14. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
  15. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -3
  16. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +231 -109
  17. data/src/core/ext/filters/client_channel/resolver.cc +2 -5
  18. data/src/core/ext/filters/client_channel/resolver.h +1 -12
  19. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +36 -45
  20. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +29 -41
  21. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +16 -14
  22. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -15
  23. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +362 -0
  24. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -4
  25. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +22 -74
  26. data/src/core/ext/filters/client_channel/server_address.cc +6 -0
  27. data/src/core/ext/filters/client_channel/server_address.h +31 -0
  28. data/src/core/ext/filters/client_channel/subchannel.cc +2 -2
  29. data/src/core/ext/filters/max_age/max_age_filter.cc +35 -32
  30. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
  31. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +47 -22
  32. data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
  33. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +11 -1
  34. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +62 -18
  35. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -1
  36. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +11 -16
  37. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +42 -59
  38. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +3 -2
  39. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +15 -0
  40. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -1
  41. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +75 -0
  42. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -2
  43. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +9 -9
  44. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +7 -7
  45. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +28 -13
  46. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -1
  47. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +11 -5
  48. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +41 -7
  49. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -1
  50. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -21
  51. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
  52. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +13 -9
  53. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +37 -5
  54. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -1
  55. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +11 -9
  56. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +44 -27
  57. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +42 -16
  58. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +106 -0
  59. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -1
  60. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
  61. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
  62. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +13 -16
  63. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +51 -42
  64. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
  65. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +16 -13
  66. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +50 -18
  67. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +4 -7
  68. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -17
  69. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -1
  70. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +30 -23
  71. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +85 -73
  72. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -3
  73. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -3
  74. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -1
  75. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -2
  76. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -1
  77. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +21 -4
  78. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +29 -0
  79. data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/authority.upb.c +5 -5
  80. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
  81. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
  82. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
  83. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
  84. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
  85. data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/resource.upb.c +9 -9
  86. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
  87. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
  88. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
  89. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
  90. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -171
  92. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +405 -420
  93. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +2 -2
  94. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
  95. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +177 -171
  96. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
  97. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +88 -88
  98. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +153 -153
  99. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
  100. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +33 -20
  101. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
  102. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +116 -111
  103. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +129 -121
  104. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +21 -24
  105. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +17 -13
  106. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +747 -724
  107. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
  108. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
  109. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
  110. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  111. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +369 -376
  112. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
  113. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +112 -108
  114. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
  115. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +177 -180
  116. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
  117. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
  118. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
  119. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
  120. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
  121. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
  122. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
  123. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +14 -11
  124. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
  125. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  126. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
  127. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  128. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
  129. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  130. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
  131. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  132. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
  133. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  134. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
  135. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  136. data/src/core/ext/xds/xds_api.cc +738 -567
  137. data/src/core/ext/xds/xds_api.h +46 -84
  138. data/src/core/ext/xds/xds_bootstrap.cc +59 -40
  139. data/src/core/ext/xds/xds_bootstrap.h +12 -4
  140. data/src/core/ext/xds/xds_certificate_provider.cc +180 -74
  141. data/src/core/ext/xds/xds_certificate_provider.h +83 -44
  142. data/src/core/ext/xds/xds_client.cc +13 -11
  143. data/src/core/ext/xds/xds_client.h +3 -0
  144. data/src/core/ext/xds/xds_client_stats.cc +2 -1
  145. data/src/core/ext/xds/xds_server_config_fetcher.cc +147 -11
  146. data/src/core/lib/channel/handshaker.cc +2 -5
  147. data/src/core/lib/channel/handshaker.h +1 -1
  148. data/src/core/lib/gpr/log.cc +6 -1
  149. data/src/core/lib/gprpp/mpscq.cc +2 -2
  150. data/src/core/lib/gprpp/ref_counted.h +1 -1
  151. data/src/core/lib/gprpp/sync.h +129 -40
  152. data/src/core/lib/gprpp/time_util.cc +77 -0
  153. data/src/core/lib/gprpp/time_util.h +42 -0
  154. data/src/core/lib/http/httpcli_security_connector.cc +2 -2
  155. data/src/core/lib/iomgr/ev_apple.cc +10 -7
  156. data/src/core/lib/iomgr/ev_epollex_linux.cc +4 -4
  157. data/src/core/lib/iomgr/iomgr_posix.cc +0 -1
  158. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -1
  159. data/src/core/lib/iomgr/sockaddr_utils.cc +1 -1
  160. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
  161. data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
  162. data/src/core/lib/iomgr/tcp_posix.cc +4 -4
  163. data/src/core/lib/security/authorization/matchers.cc +339 -0
  164. data/src/core/lib/security/authorization/matchers.h +158 -0
  165. data/src/core/lib/security/authorization/mock_cel/activation.h +1 -1
  166. data/src/core/lib/security/authorization/mock_cel/cel_value.h +9 -7
  167. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
  168. data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
  169. data/src/core/lib/security/credentials/credentials.h +2 -1
  170. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +1 -1
  171. data/src/core/lib/security/credentials/external/external_account_credentials.cc +2 -2
  172. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -1
  173. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -1
  174. data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -1
  175. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -6
  176. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  177. data/src/core/lib/security/credentials/jwt/json_token.cc +0 -3
  178. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +0 -3
  179. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
  180. data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
  181. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +2 -1
  182. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
  183. data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
  184. data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
  185. data/src/core/lib/security/credentials/xds/xds_credentials.cc +128 -59
  186. data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
  187. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
  188. data/src/core/lib/security/security_connector/ssl_utils.cc +3 -0
  189. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +26 -14
  190. data/src/core/lib/security/transport/security_handshaker.cc +1 -3
  191. data/src/core/lib/slice/slice_intern.cc +1 -1
  192. data/src/core/lib/surface/init.cc +13 -15
  193. data/src/core/lib/surface/server.cc +3 -3
  194. data/src/core/lib/surface/server.h +3 -0
  195. data/src/core/lib/surface/version.cc +2 -2
  196. data/src/core/lib/transport/metadata.cc +6 -2
  197. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
  198. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +17 -20
  199. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +16 -21
  200. data/src/core/tsi/fake_transport_security.cc +1 -1
  201. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
  202. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
  203. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +2 -4
  204. data/src/core/tsi/ssl_transport_security.cc +0 -3
  205. data/src/core/tsi/ssl_transport_security.h +0 -3
  206. data/src/ruby/lib/grpc/version.rb +1 -1
  207. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
  208. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
  209. data/third_party/boringssl-with-bazel/err_data.c +725 -723
  210. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
  211. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
  212. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
  213. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -10
  214. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  215. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +4 -2
  216. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
  217. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +15 -14
  218. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -0
  219. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
  220. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +39 -85
  221. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +5 -16
  222. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
  223. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
  224. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
  225. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  226. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
  227. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  228. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
  229. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
  230. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  231. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +87 -0
  232. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  233. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  234. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
  235. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
  236. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  237. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +3 -1
  238. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  239. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
  240. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +9 -1
  241. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  242. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
  243. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +12 -0
  244. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -1
  245. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +28 -0
  246. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +128 -38
  247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -7
  248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +51 -32
  249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +147 -0
  250. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +18 -29
  251. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +13 -4
  252. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
  253. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  254. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  255. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  256. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +4 -0
  257. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  258. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
  259. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +1 -1
  260. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +10 -7
  261. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +1 -1
  262. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +8 -8
  263. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +1 -1
  264. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +29 -23
  265. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +1 -2
  266. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  267. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +39 -6
  268. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  269. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
  270. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +11 -10
  271. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
  272. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +25 -25
  273. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -2
  274. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
  275. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
  276. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  277. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
  278. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
  279. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +6 -6
  280. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
  281. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -3
  282. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +652 -545
  283. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
  284. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -5
  285. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  286. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
  287. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +15 -0
  288. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
  289. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
  290. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
  291. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +12 -2
  292. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -0
  293. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
  294. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +42 -24
  295. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +27 -8
  296. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +287 -98
  297. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +139 -36
  298. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +4 -3
  299. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +11 -20
  300. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +10 -5
  301. data/third_party/boringssl-with-bazel/src/ssl/internal.h +37 -16
  302. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
  303. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
  304. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +20 -14
  305. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +7 -8
  306. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
  307. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
  308. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +329 -31
  309. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -2
  310. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
  311. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +66 -24
  312. metadata +77 -65
  313. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
  314. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
  315. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
  316. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
  317. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
  318. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
  319. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
  320. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
  321. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
  322. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
  323. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
  324. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
  325. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
  326. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
  327. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
  328. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
  329. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
  330. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
  331. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
  332. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
  333. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
  334. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
  335. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
@@ -141,20 +141,10 @@ extern "C" {
141
141
  #stname \
142
142
  ASN1_ITEM_end(tname)
143
143
 
144
- #define ASN1_NDEF_SEQUENCE(tname) \
145
- ASN1_SEQUENCE(tname)
146
-
147
- #define ASN1_NDEF_SEQUENCE_cb(tname, cb) \
148
- ASN1_SEQUENCE_cb(tname, cb)
149
-
150
144
  #define ASN1_SEQUENCE_cb(tname, cb) \
151
145
  static const ASN1_AUX tname##_aux = {NULL, 0, 0, cb, 0}; \
152
146
  ASN1_SEQUENCE(tname)
153
147
 
154
- #define ASN1_BROKEN_SEQUENCE(tname) \
155
- static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_BROKEN, 0, 0, 0}; \
156
- ASN1_SEQUENCE(tname)
157
-
158
148
  #define ASN1_SEQUENCE_ref(tname, cb) \
159
149
  static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), cb, 0}; \
160
150
  ASN1_SEQUENCE(tname)
@@ -163,20 +153,6 @@ extern "C" {
163
153
  static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_ENCODING, 0, cb, offsetof(tname, enc)}; \
164
154
  ASN1_SEQUENCE(tname)
165
155
 
166
- #define ASN1_NDEF_SEQUENCE_END(tname) \
167
- ;\
168
- ASN1_ITEM_start(tname) \
169
- ASN1_ITYPE_NDEF_SEQUENCE,\
170
- V_ASN1_SEQUENCE,\
171
- tname##_seq_tt,\
172
- sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
173
- NULL,\
174
- sizeof(tname),\
175
- #tname \
176
- ASN1_ITEM_end(tname)
177
-
178
- #define ASN1_BROKEN_SEQUENCE_END(stname) ASN1_SEQUENCE_END_ref(stname, stname)
179
-
180
156
  #define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
181
157
 
182
158
  #define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
@@ -193,18 +169,6 @@ extern "C" {
193
169
  #stname \
194
170
  ASN1_ITEM_end(tname)
195
171
 
196
- #define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \
197
- ;\
198
- ASN1_ITEM_start(tname) \
199
- ASN1_ITYPE_NDEF_SEQUENCE,\
200
- V_ASN1_SEQUENCE,\
201
- tname##_seq_tt,\
202
- sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
203
- &tname##_aux,\
204
- sizeof(stname),\
205
- #stname \
206
- ASN1_ITEM_end(tname)
207
-
208
172
 
209
173
  /* This pair helps declare a CHOICE type. We can do:
210
174
  *
@@ -353,14 +317,6 @@ extern "C" {
353
317
  #define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \
354
318
  ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)
355
319
 
356
- /* EXPLICIT using indefinite length constructed form */
357
- #define ASN1_NDEF_EXP(stname, field, type, tag) \
358
- ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_NDEF)
359
-
360
- /* EXPLICIT OPTIONAL using indefinite length constructed form */
361
- #define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \
362
- ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_NDEF)
363
-
364
320
  /* Macros for the ASN1_ADB structure */
365
321
 
366
322
  #define ASN1_ADB(name) \
@@ -393,9 +349,7 @@ struct ASN1_TEMPLATE_st {
393
349
  unsigned long flags; /* Various flags */
394
350
  long tag; /* tag, not used if no tagging */
395
351
  unsigned long offset; /* Offset of this field in structure */
396
- #ifndef NO_ASN1_FIELD_NAMES
397
352
  const char *field_name; /* Field name */
398
- #endif
399
353
  ASN1_ITEM_EXP *item; /* Relevant ASN1_ITEM or ASN1_ADB */
400
354
  };
401
355
 
@@ -504,13 +458,6 @@ struct ASN1_ADB_TABLE_st {
504
458
 
505
459
  #define ASN1_TFLG_COMBINE (0x1<<10)
506
460
 
507
- /* This flag when present in a SEQUENCE OF, SET OF
508
- * or EXPLICIT causes indefinite length constructed
509
- * encoding to be used if required.
510
- */
511
-
512
- #define ASN1_TFLG_NDEF (0x1<<11)
513
-
514
461
  /* This is the actual ASN1 item itself */
515
462
 
516
463
  struct ASN1_ITEM_st {
@@ -520,9 +467,7 @@ const ASN1_TEMPLATE *templates; /* If SEQUENCE or CHOICE this contains the conte
520
467
  long tcount; /* Number of templates if SEQUENCE or CHOICE */
521
468
  const void *funcs; /* functions that handle this type */
522
469
  long size; /* Structure size (usually)*/
523
- #ifndef NO_ASN1_FIELD_NAMES
524
470
  const char *sname; /* Structure name */
525
- #endif
526
471
  };
527
472
 
528
473
  /* These are values for the itype field and
@@ -547,10 +492,6 @@ const char *sname; /* Structure name */
547
492
  * The 'funcs' field is used for application
548
493
  * specific functions.
549
494
  *
550
- * For COMPAT types the funcs field gives a
551
- * set of functions that handle this type, this
552
- * supports the old d2i, i2d convention.
553
- *
554
495
  * The EXTERN type uses a new style d2i/i2d.
555
496
  * The new style should be used where possible
556
497
  * because it avoids things like the d2i IMPLICIT
@@ -563,10 +504,6 @@ const char *sname; /* Structure name */
563
504
  * has a special meaning, it is used as a mask
564
505
  * of acceptable types using the B_ASN1 constants.
565
506
  *
566
- * NDEF_SEQUENCE is the same as SEQUENCE except
567
- * that it will use indefinite length constructed
568
- * encoding if requested.
569
- *
570
507
  */
571
508
 
572
509
  #define ASN1_ITYPE_PRIMITIVE 0x0
@@ -575,14 +512,10 @@ const char *sname; /* Structure name */
575
512
 
576
513
  #define ASN1_ITYPE_CHOICE 0x2
577
514
 
578
- #define ASN1_ITYPE_COMPAT 0x3
579
-
580
515
  #define ASN1_ITYPE_EXTERN 0x4
581
516
 
582
517
  #define ASN1_ITYPE_MSTRING 0x5
583
518
 
584
- #define ASN1_ITYPE_NDEF_SEQUENCE 0x6
585
-
586
519
  /* Cache for ASN1 tag and length, so we
587
520
  * don't keep re-reading it for things
588
521
  * like CHOICE
@@ -615,17 +548,6 @@ typedef int ASN1_ex_print_func(BIO *out, ASN1_VALUE **pval,
615
548
  int indent, const char *fname,
616
549
  const ASN1_PCTX *pctx);
617
550
 
618
- typedef int ASN1_primitive_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it);
619
- typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it);
620
- typedef int ASN1_primitive_print(BIO *out, ASN1_VALUE **pval, const ASN1_ITEM *it, int indent, const ASN1_PCTX *pctx);
621
-
622
- typedef struct ASN1_COMPAT_FUNCS_st {
623
- ASN1_new_func *asn1_new;
624
- ASN1_free_func *asn1_free;
625
- ASN1_d2i_func *asn1_d2i;
626
- ASN1_i2d_func *asn1_i2d;
627
- } ASN1_COMPAT_FUNCS;
628
-
629
551
  typedef struct ASN1_EXTERN_FUNCS_st {
630
552
  void *app_data;
631
553
  ASN1_ex_new_func *asn1_ex_new;
@@ -637,17 +559,6 @@ typedef struct ASN1_EXTERN_FUNCS_st {
637
559
  ASN1_ex_print_func *asn1_ex_print;
638
560
  } ASN1_EXTERN_FUNCS;
639
561
 
640
- typedef struct ASN1_PRIMITIVE_FUNCS_st {
641
- void *app_data;
642
- unsigned long flags;
643
- ASN1_ex_new_func *prim_new;
644
- ASN1_ex_free_func *prim_free;
645
- ASN1_ex_free_func *prim_clear;
646
- ASN1_primitive_c2i *prim_c2i;
647
- ASN1_primitive_i2c *prim_i2c;
648
- ASN1_primitive_print *prim_print;
649
- } ASN1_PRIMITIVE_FUNCS;
650
-
651
562
  /* This is the ASN1_AUX structure: it handles various
652
563
  * miscellaneous requirements. For example the use of
653
564
  * reference counts and an informational callback.
@@ -676,31 +587,12 @@ typedef struct ASN1_AUX_st {
676
587
  int enc_offset; /* Offset of ASN1_ENCODING structure */
677
588
  } ASN1_AUX;
678
589
 
679
- /* For print related callbacks exarg points to this structure */
680
- typedef struct ASN1_PRINT_ARG_st {
681
- BIO *out;
682
- int indent;
683
- const ASN1_PCTX *pctx;
684
- } ASN1_PRINT_ARG;
685
-
686
- /* For streaming related callbacks exarg points to this structure */
687
- typedef struct ASN1_STREAM_ARG_st {
688
- /* BIO to stream through */
689
- BIO *out;
690
- /* BIO with filters appended */
691
- BIO *ndef_bio;
692
- /* Streaming I/O boundary */
693
- unsigned char **boundary;
694
- } ASN1_STREAM_ARG;
695
-
696
590
  /* Flags in ASN1_AUX */
697
591
 
698
592
  /* Use a reference count */
699
593
  #define ASN1_AFLG_REFCOUNT 1
700
594
  /* Save the encoding of structure (useful for signatures) */
701
595
  #define ASN1_AFLG_ENCODING 2
702
- /* The Sequence length is invalid */
703
- #define ASN1_AFLG_BROKEN 4
704
596
 
705
597
  /* operation values for asn1_cb */
706
598
 
@@ -732,27 +624,6 @@ typedef struct ASN1_STREAM_ARG_st {
732
624
  ASN1_ITYPE_MSTRING, mask, NULL, 0, NULL, sizeof(ASN1_STRING), #itname \
733
625
  ASN1_ITEM_end(itname)
734
626
 
735
- /* Macro to implement an ASN1_ITEM in terms of old style funcs */
736
-
737
- #define IMPLEMENT_COMPAT_ASN1(sname) IMPLEMENT_COMPAT_ASN1_type(sname, V_ASN1_SEQUENCE)
738
-
739
- #define IMPLEMENT_COMPAT_ASN1_type(sname, tag) \
740
- static const ASN1_COMPAT_FUNCS sname##_ff = { \
741
- (ASN1_new_func *)sname##_new, \
742
- (ASN1_free_func *)sname##_free, \
743
- (ASN1_d2i_func *)d2i_##sname, \
744
- (ASN1_i2d_func *)i2d_##sname, \
745
- }; \
746
- ASN1_ITEM_start(sname) \
747
- ASN1_ITYPE_COMPAT, \
748
- tag, \
749
- NULL, \
750
- 0, \
751
- &sname##_ff, \
752
- 0, \
753
- #sname \
754
- ASN1_ITEM_end(sname)
755
-
756
627
  #define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \
757
628
  ASN1_ITEM_start(sname) \
758
629
  ASN1_ITYPE_EXTERN, \
@@ -813,12 +684,6 @@ typedef struct ASN1_STREAM_ARG_st {
813
684
  return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\
814
685
  }
815
686
 
816
- #define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \
817
- int i2d_##stname##_NDEF(stname *a, unsigned char **out) \
818
- { \
819
- return ASN1_item_ndef_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(stname));\
820
- }
821
-
822
687
  /* This includes evil casts to remove const: they will go away when full
823
688
  * ASN1 constification is done.
824
689
  */
@@ -854,38 +719,6 @@ DECLARE_ASN1_ITEM(ASN1_SEQUENCE)
854
719
 
855
720
  DEFINE_STACK_OF(ASN1_VALUE)
856
721
 
857
- /* Functions used internally by the ASN1 code */
858
-
859
- int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it);
860
- void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
861
- int ASN1_template_new(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
862
- int ASN1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it);
863
-
864
- void ASN1_template_free(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
865
- int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, const ASN1_ITEM *it,
866
- int tag, int aclass, char opt, ASN1_TLC *ctx);
867
-
868
- int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out, const ASN1_ITEM *it, int tag, int aclass);
869
- void ASN1_primitive_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
870
-
871
- int asn1_ex_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it);
872
- int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it);
873
-
874
- int asn1_get_choice_selector(ASN1_VALUE **pval, const ASN1_ITEM *it);
875
- int asn1_set_choice_selector(ASN1_VALUE **pval, int value, const ASN1_ITEM *it);
876
-
877
- ASN1_VALUE ** asn1_get_field_ptr(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
878
-
879
- const ASN1_TEMPLATE *asn1_do_adb(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt, int nullerr);
880
-
881
- void asn1_refcount_set_one(ASN1_VALUE **pval, const ASN1_ITEM *it);
882
- int asn1_refcount_dec_and_test_zero(ASN1_VALUE **pval, const ASN1_ITEM *it);
883
-
884
- void asn1_enc_init(ASN1_VALUE **pval, const ASN1_ITEM *it);
885
- void asn1_enc_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
886
- int asn1_enc_restore(int *len, unsigned char **out, ASN1_VALUE **pval, const ASN1_ITEM *it);
887
- int asn1_enc_save(ASN1_VALUE **pval, const unsigned char *in, int inlen, const ASN1_ITEM *it);
888
-
889
722
  #ifdef __cplusplus
890
723
  }
891
724
  #endif
@@ -90,19 +90,19 @@ extern "C" {
90
90
  #elif defined(__x86) || defined(__i386) || defined(__i386__) || defined(_M_IX86)
91
91
  #define OPENSSL_32_BIT
92
92
  #define OPENSSL_X86
93
- #elif defined(__aarch64__) || defined(_M_ARM64)
93
+ #elif defined(__AARCH64EL__) || defined(_M_ARM64)
94
94
  #define OPENSSL_64_BIT
95
95
  #define OPENSSL_AARCH64
96
- #elif defined(__arm) || defined(__arm__) || defined(_M_ARM)
96
+ #elif defined(__ARMEL__) || defined(_M_ARM)
97
97
  #define OPENSSL_32_BIT
98
98
  #define OPENSSL_ARM
99
99
  #elif (defined(__PPC64__) || defined(__powerpc64__)) && defined(_LITTLE_ENDIAN)
100
100
  #define OPENSSL_64_BIT
101
101
  #define OPENSSL_PPC64LE
102
- #elif defined(__mips__) && !defined(__LP64__)
102
+ #elif defined(__MIPSEL__) && !defined(__LP64__)
103
103
  #define OPENSSL_32_BIT
104
104
  #define OPENSSL_MIPS
105
- #elif defined(__mips__) && defined(__LP64__)
105
+ #elif defined(__MIPSEL__) && defined(__LP64__)
106
106
  #define OPENSSL_64_BIT
107
107
  #define OPENSSL_MIPS64
108
108
  #elif defined(__pnacl__)
@@ -156,6 +156,10 @@ extern "C" {
156
156
 
157
157
  #if defined(__ANDROID_API__)
158
158
  #define OPENSSL_ANDROID
159
+ #if defined(BORINGSSL_FIPS)
160
+ // The FIPS module on Android passively receives entropy.
161
+ #define BORINGSSL_FIPS_PASSIVE_ENTROPY
162
+ #endif
159
163
  #endif
160
164
 
161
165
  // BoringSSL requires platform's locking APIs to make internal global state
@@ -187,7 +191,7 @@ extern "C" {
187
191
  // A consumer may use this symbol in the preprocessor to temporarily build
188
192
  // against multiple revisions of BoringSSL at the same time. It is not
189
193
  // recommended to do so for longer than is necessary.
190
- #define BORINGSSL_API_VERSION 12
194
+ #define BORINGSSL_API_VERSION 14
191
195
 
192
196
  #if defined(BORINGSSL_SHARED_LIBRARY)
193
197
 
@@ -372,6 +376,7 @@ typedef struct bignum_ctx BN_CTX;
372
376
  typedef struct bignum_st BIGNUM;
373
377
  typedef struct bio_method_st BIO_METHOD;
374
378
  typedef struct bio_st BIO;
379
+ typedef struct blake2b_state_st BLAKE2B_CTX;
375
380
  typedef struct bn_gencb_st BN_GENCB;
376
381
  typedef struct bn_mont_ctx_st BN_MONT_CTX;
377
382
  typedef struct buf_mem_st BUF_MEM;
@@ -0,0 +1,62 @@
1
+ /* Copyright (c) 2021, Google Inc.
2
+ *
3
+ * Permission to use, copy, modify, and/or distribute this software for any
4
+ * purpose with or without fee is hereby granted, provided that the above
5
+ * copyright notice and this permission notice appear in all copies.
6
+ *
7
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
+
15
+ #ifndef OPENSSL_HEADER_BLAKE2_H
16
+ #define OPENSSL_HEADER_BLAKE2_H
17
+
18
+ #include <openssl/base.h>
19
+
20
+ #if defined(__cplusplus)
21
+ extern "C" {
22
+ #endif
23
+
24
+
25
+ #define BLAKE2B256_DIGEST_LENGTH (256 / 8)
26
+ #define BLAKE2B_CBLOCK 128
27
+
28
+ struct blake2b_state_st {
29
+ uint64_t h[8];
30
+ uint64_t t_low, t_high;
31
+ union {
32
+ uint8_t bytes[BLAKE2B_CBLOCK];
33
+ uint64_t words[16];
34
+ } block;
35
+ size_t block_used;
36
+ };
37
+
38
+ // BLAKE2B256_Init initialises |b2b| to perform a BLAKE2b-256 hash. There are no
39
+ // pointers inside |b2b| thus release of |b2b| is purely managed by the caller.
40
+ OPENSSL_EXPORT void BLAKE2B256_Init(BLAKE2B_CTX *b2b);
41
+
42
+ // BLAKE2B256_Update appends |len| bytes from |data| to the digest being
43
+ // calculated by |b2b|.
44
+ OPENSSL_EXPORT void BLAKE2B256_Update(BLAKE2B_CTX *b2b, const void *data,
45
+ size_t len);
46
+
47
+ // BLAKE2B256_Final completes the digest calculated by |b2b| and writes
48
+ // |BLAKE2B256_DIGEST_LENGTH| bytes to |out|.
49
+ OPENSSL_EXPORT void BLAKE2B256_Final(uint8_t out[BLAKE2B256_DIGEST_LENGTH],
50
+ BLAKE2B_CTX *b2b);
51
+
52
+ // BLAKE2B256 writes the BLAKE2b-256 digset of |len| bytes from |data| to
53
+ // |out|.
54
+ OPENSSL_EXPORT void BLAKE2B256(const uint8_t *data, size_t len,
55
+ uint8_t out[BLAKE2B256_DIGEST_LENGTH]);
56
+
57
+
58
+ #if defined(__cplusplus)
59
+ } // extern C
60
+ #endif
61
+
62
+ #endif // OPENSSL_HEADER_BLAKE2_H
@@ -252,12 +252,16 @@ OPENSSL_EXPORT int CBS_get_any_asn1_element(CBS *cbs, CBS *out,
252
252
  size_t *out_header_len);
253
253
 
254
254
  // CBS_get_any_ber_asn1_element acts the same as |CBS_get_any_asn1_element| but
255
- // also allows indefinite-length elements to be returned. In that case,
256
- // |*out_header_len| and |CBS_len(out)| will both be two as only the header is
257
- // returned, otherwise it behaves the same as the previous function.
255
+ // also allows indefinite-length elements to be returned and does not enforce
256
+ // that lengths are minimal. For indefinite-lengths, |*out_header_len| and
257
+ // |CBS_len(out)| will be equal as only the header is returned (although this is
258
+ // also true for empty elements so the length must be checked too). If
259
+ // |out_ber_found| is not NULL then it is set to one if any case of invalid DER
260
+ // but valid BER is found, and to zero otherwise.
258
261
  OPENSSL_EXPORT int CBS_get_any_ber_asn1_element(CBS *cbs, CBS *out,
259
262
  unsigned *out_tag,
260
- size_t *out_header_len);
263
+ size_t *out_header_len,
264
+ int *out_ber_found);
261
265
 
262
266
  // CBS_get_asn1_uint64 gets an ASN.1 INTEGER from |cbs| using |CBS_get_asn1|
263
267
  // and sets |*out| to its value. It returns one on success and zero on error,
@@ -310,14 +314,25 @@ OPENSSL_EXPORT int CBS_get_optional_asn1_bool(CBS *cbs, int *out, unsigned tag,
310
314
  int default_value);
311
315
 
312
316
  // CBS_is_valid_asn1_bitstring returns one if |cbs| is a valid ASN.1 BIT STRING
313
- // and zero otherwise.
317
+ // body and zero otherwise.
314
318
  OPENSSL_EXPORT int CBS_is_valid_asn1_bitstring(const CBS *cbs);
315
319
 
316
320
  // CBS_asn1_bitstring_has_bit returns one if |cbs| is a valid ASN.1 BIT STRING
317
- // and the specified bit is present and set. Otherwise, it returns zero. |bit|
318
- // is indexed starting from zero.
321
+ // body and the specified bit is present and set. Otherwise, it returns zero.
322
+ // |bit| is indexed starting from zero.
319
323
  OPENSSL_EXPORT int CBS_asn1_bitstring_has_bit(const CBS *cbs, unsigned bit);
320
324
 
325
+ // CBS_is_valid_asn1_integer returns one if |cbs| is a valid ASN.1 INTEGER,
326
+ // body and zero otherwise. On success, if |out_is_negative| is non-NULL,
327
+ // |*out_is_negative| will be set to one if |cbs| is negative and zero
328
+ // otherwise.
329
+ OPENSSL_EXPORT int CBS_is_valid_asn1_integer(const CBS *cbs,
330
+ int *out_is_negative);
331
+
332
+ // CBS_is_unsigned_asn1_integer returns one if |cbs| is a valid non-negative
333
+ // ASN.1 INTEGER body and zero otherwise.
334
+ OPENSSL_EXPORT int CBS_is_unsigned_asn1_integer(const CBS *cbs);
335
+
321
336
  // CBS_asn1_oid_to_text interprets |cbs| as DER-encoded ASN.1 OBJECT IDENTIFIER
322
337
  // contents (not including the element framing) and returns the ASCII
323
338
  // representation (e.g., "1.2.840.113554.4.1.72585") in a newly-allocated