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
@@ -67,7 +67,7 @@
67
67
 
68
68
  int ASN1_BIT_STRING_set(ASN1_BIT_STRING *x, unsigned char *d, int len)
69
69
  {
70
- return M_ASN1_BIT_STRING_set(x, d, len);
70
+ return ASN1_STRING_set(x, d, len);
71
71
  }
72
72
 
73
73
  int i2c_ASN1_BIT_STRING(const ASN1_BIT_STRING *a, unsigned char **pp)
@@ -146,7 +146,7 @@ ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,
146
146
  }
147
147
 
148
148
  if ((a == NULL) || ((*a) == NULL)) {
149
- if ((ret = M_ASN1_BIT_STRING_new()) == NULL)
149
+ if ((ret = ASN1_BIT_STRING_new()) == NULL)
150
150
  return (NULL);
151
151
  } else
152
152
  ret = (*a);
@@ -188,7 +188,7 @@ ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,
188
188
  return (ret);
189
189
  err:
190
190
  if ((ret != NULL) && ((a == NULL) || (*a != ret)))
191
- M_ASN1_BIT_STRING_free(ret);
191
+ ASN1_BIT_STRING_free(ret);
192
192
  return (NULL);
193
193
  }
194
194
 
@@ -153,7 +153,7 @@ ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn, ASN1_ENUMERATED *ai)
153
153
  int len, j;
154
154
 
155
155
  if (ai == NULL)
156
- ret = M_ASN1_ENUMERATED_new();
156
+ ret = ASN1_ENUMERATED_new();
157
157
  else
158
158
  ret = ai;
159
159
  if (ret == NULL) {
@@ -179,7 +179,7 @@ ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn, ASN1_ENUMERATED *ai)
179
179
  return (ret);
180
180
  err:
181
181
  if (ret != ai)
182
- M_ASN1_ENUMERATED_free(ret);
182
+ ASN1_ENUMERATED_free(ret);
183
183
  return (NULL);
184
184
  }
185
185
 
@@ -67,7 +67,7 @@
67
67
 
68
68
  ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x)
69
69
  {
70
- return M_ASN1_INTEGER_dup(x);
70
+ return ASN1_STRING_dup(x);
71
71
  }
72
72
 
73
73
  int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y)
@@ -206,7 +206,7 @@ ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **pp,
206
206
  }
207
207
 
208
208
  if ((a == NULL) || ((*a) == NULL)) {
209
- if ((ret = M_ASN1_INTEGER_new()) == NULL)
209
+ if ((ret = ASN1_INTEGER_new()) == NULL)
210
210
  return (NULL);
211
211
  ret->type = V_ASN1_INTEGER;
212
212
  } else
@@ -282,7 +282,7 @@ ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **pp,
282
282
  err:
283
283
  OPENSSL_PUT_ERROR(ASN1, i);
284
284
  if ((ret != NULL) && ((a == NULL) || (*a != ret)))
285
- M_ASN1_INTEGER_free(ret);
285
+ ASN1_INTEGER_free(ret);
286
286
  return (NULL);
287
287
  }
288
288
 
@@ -374,7 +374,7 @@ ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai)
374
374
  int len, j;
375
375
 
376
376
  if (ai == NULL)
377
- ret = M_ASN1_INTEGER_new();
377
+ ret = ASN1_INTEGER_new();
378
378
  else
379
379
  ret = ai;
380
380
  if (ret == NULL) {
@@ -404,7 +404,7 @@ ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai)
404
404
  return (ret);
405
405
  err:
406
406
  if (ret != ai)
407
- M_ASN1_INTEGER_free(ret);
407
+ ASN1_INTEGER_free(ret);
408
408
  return (NULL);
409
409
  }
410
410
 
@@ -250,19 +250,12 @@ void ASN1_OBJECT_free(ASN1_OBJECT *a)
250
250
  if (a == NULL)
251
251
  return;
252
252
  if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_STRINGS) {
253
- #ifndef CONST_STRICT /* disable purely for compile-time strict
254
- * const checking. Doing this on a "real"
255
- * compile will cause memory leaks */
256
- if (a->sn != NULL)
257
- OPENSSL_free((void *)a->sn);
258
- if (a->ln != NULL)
259
- OPENSSL_free((void *)a->ln);
260
- #endif
253
+ OPENSSL_free((void *)a->sn);
254
+ OPENSSL_free((void *)a->ln);
261
255
  a->sn = a->ln = NULL;
262
256
  }
263
257
  if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_DATA) {
264
- if (a->data != NULL)
265
- OPENSSL_free((void *)a->data);
258
+ OPENSSL_free((void *)a->data);
266
259
  a->data = NULL;
267
260
  a->length = 0;
268
261
  }
@@ -61,17 +61,17 @@
61
61
 
62
62
  ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *x)
63
63
  {
64
- return M_ASN1_OCTET_STRING_dup(x);
64
+ return ASN1_STRING_dup(x);
65
65
  }
66
66
 
67
67
  int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a,
68
68
  const ASN1_OCTET_STRING *b)
69
69
  {
70
- return M_ASN1_OCTET_STRING_cmp(a, b);
70
+ return ASN1_STRING_cmp(a, b);
71
71
  }
72
72
 
73
73
  int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *x, const unsigned char *d,
74
74
  int len)
75
75
  {
76
- return M_ASN1_OCTET_STRING_set(x, d, len);
76
+ return ASN1_STRING_set(x, d, len);
77
77
  }
@@ -61,6 +61,9 @@
61
61
  #include <openssl/mem.h>
62
62
  #include <openssl/obj.h>
63
63
 
64
+ #include "asn1_locl.h"
65
+
66
+
64
67
  int ASN1_TYPE_get(const ASN1_TYPE *a)
65
68
  {
66
69
  if ((a->value.ptr != NULL) || (a->type == V_ASN1_NULL))
@@ -142,8 +145,7 @@ int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b)
142
145
  case V_ASN1_UTF8STRING:
143
146
  case V_ASN1_OTHER:
144
147
  default:
145
- result = ASN1_STRING_cmp((ASN1_STRING *)a->value.ptr,
146
- (ASN1_STRING *)b->value.ptr);
148
+ result = ASN1_STRING_cmp(a->value.asn1_string, b->value.asn1_string);
147
149
  break;
148
150
  }
149
151
 
@@ -197,7 +197,7 @@ ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t,
197
197
 
198
198
  if (s == NULL) {
199
199
  free_s = 1;
200
- s = M_ASN1_UTCTIME_new();
200
+ s = ASN1_UTCTIME_new();
201
201
  }
202
202
  if (s == NULL)
203
203
  goto err;
@@ -234,7 +234,7 @@ ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t,
234
234
  return (s);
235
235
  err:
236
236
  if (free_s && s)
237
- M_ASN1_UTCTIME_free(s);
237
+ ASN1_UTCTIME_free(s);
238
238
  return NULL;
239
239
  }
240
240
 
@@ -251,6 +251,8 @@ void ASN1_put_object(unsigned char **pp, int constructed, int length, int tag,
251
251
 
252
252
  int ASN1_put_eoc(unsigned char **pp)
253
253
  {
254
+ /* This function is no longer used in the library, but some external code
255
+ * uses it. */
254
256
  unsigned char *p = *pp;
255
257
  *p++ = 0;
256
258
  *p++ = 0;
@@ -311,9 +313,9 @@ int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str)
311
313
  {
312
314
  if (str == NULL)
313
315
  return 0;
314
- dst->type = str->type;
315
316
  if (!ASN1_STRING_set(dst, str->data, str->length))
316
317
  return 0;
318
+ dst->type = str->type;
317
319
  dst->flags = str->flags;
318
320
  return 1;
319
321
  }
@@ -395,13 +397,12 @@ ASN1_STRING *ASN1_STRING_type_new(int type)
395
397
  return (ret);
396
398
  }
397
399
 
398
- void ASN1_STRING_free(ASN1_STRING *a)
400
+ void ASN1_STRING_free(ASN1_STRING *str)
399
401
  {
400
- if (a == NULL)
402
+ if (str == NULL)
401
403
  return;
402
- if (a->data && !(a->flags & ASN1_STRING_FLAG_NDEF))
403
- OPENSSL_free(a->data);
404
- OPENSSL_free(a);
404
+ OPENSSL_free(str->data);
405
+ OPENSSL_free(str);
405
406
  }
406
407
 
407
408
  int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b)
@@ -419,22 +420,22 @@ int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b)
419
420
  return (i);
420
421
  }
421
422
 
422
- int ASN1_STRING_length(const ASN1_STRING *x)
423
+ int ASN1_STRING_length(const ASN1_STRING *str)
423
424
  {
424
- return M_ASN1_STRING_length(x);
425
+ return str->length;
425
426
  }
426
427
 
427
- int ASN1_STRING_type(const ASN1_STRING *x)
428
+ int ASN1_STRING_type(const ASN1_STRING *str)
428
429
  {
429
- return M_ASN1_STRING_type(x);
430
+ return str->type;
430
431
  }
431
432
 
432
- unsigned char *ASN1_STRING_data(ASN1_STRING *x)
433
+ unsigned char *ASN1_STRING_data(ASN1_STRING *str)
433
434
  {
434
- return M_ASN1_STRING_data(x);
435
+ return str->data;
435
436
  }
436
437
 
437
- const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x)
438
+ const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *str)
438
439
  {
439
- return x->data;
440
+ return str->data;
440
441
  }
@@ -96,6 +96,36 @@ void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it,
96
96
  int UTF8_getc(const unsigned char *str, int len, uint32_t *val);
97
97
  int UTF8_putc(unsigned char *str, int len, uint32_t value);
98
98
 
99
+ int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it);
100
+ void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
101
+
102
+ void ASN1_template_free(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
103
+ int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
104
+ const ASN1_ITEM *it, int tag, int aclass, char opt,
105
+ ASN1_TLC *ctx);
106
+
107
+ int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out,
108
+ const ASN1_ITEM *it, int tag, int aclass);
109
+ void ASN1_primitive_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
110
+
111
+ int asn1_get_choice_selector(ASN1_VALUE **pval, const ASN1_ITEM *it);
112
+ int asn1_set_choice_selector(ASN1_VALUE **pval, int value, const ASN1_ITEM *it);
113
+
114
+ ASN1_VALUE **asn1_get_field_ptr(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
115
+
116
+ const ASN1_TEMPLATE *asn1_do_adb(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt,
117
+ int nullerr);
118
+
119
+ void asn1_refcount_set_one(ASN1_VALUE **pval, const ASN1_ITEM *it);
120
+ int asn1_refcount_dec_and_test_zero(ASN1_VALUE **pval, const ASN1_ITEM *it);
121
+
122
+ void asn1_enc_init(ASN1_VALUE **pval, const ASN1_ITEM *it);
123
+ void asn1_enc_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
124
+ int asn1_enc_restore(int *len, unsigned char **out, ASN1_VALUE **pval,
125
+ const ASN1_ITEM *it);
126
+ int asn1_enc_save(ASN1_VALUE **pval, const unsigned char *in, int inlen,
127
+ const ASN1_ITEM *it);
128
+
99
129
 
100
130
  #if defined(__cplusplus)
101
131
  } /* extern C */
@@ -65,6 +65,7 @@
65
65
  #include <openssl/mem.h>
66
66
 
67
67
  #include "../internal.h"
68
+ #include "asn1_locl.h"
68
69
 
69
70
  /*
70
71
  * Constructed types with a recursive definition (such as can be found in PKCS7)
@@ -95,6 +96,8 @@ static int asn1_template_noexp_d2i(ASN1_VALUE **val,
95
96
  const unsigned char **in, long len,
96
97
  const ASN1_TEMPLATE *tt, char opt,
97
98
  ASN1_TLC *ctx, int depth);
99
+ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
100
+ int utype, char *free_cont, const ASN1_ITEM *it);
98
101
  static int asn1_d2i_ex_primitive(ASN1_VALUE **pval,
99
102
  const unsigned char **in, long len,
100
103
  const ASN1_ITEM *it,
@@ -166,19 +169,16 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
166
169
  char opt, ASN1_TLC *ctx, int depth)
167
170
  {
168
171
  const ASN1_TEMPLATE *tt, *errtt = NULL;
169
- const ASN1_COMPAT_FUNCS *cf;
170
172
  const ASN1_EXTERN_FUNCS *ef;
171
173
  const ASN1_AUX *aux = it->funcs;
172
174
  ASN1_aux_cb *asn1_cb;
173
175
  const unsigned char *p = NULL, *q;
174
- unsigned char *wp = NULL; /* BIG FAT WARNING! BREAKS CONST WHERE USED */
175
- unsigned char imphack = 0, oclass;
176
+ unsigned char oclass;
176
177
  char seq_eoc, seq_nolen, cst, isopt;
177
- long tmplen;
178
178
  int i;
179
179
  int otag;
180
180
  int ret = 0;
181
- ASN1_VALUE **pchptr, *ptmpval;
181
+ ASN1_VALUE **pchptr;
182
182
  int combine = aclass & ASN1_TFLG_COMBINE;
183
183
  aclass &= ~ASN1_TFLG_COMBINE;
184
184
  if (!pval)
@@ -223,6 +223,15 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
223
223
  break;
224
224
 
225
225
  case ASN1_ITYPE_MSTRING:
226
+ /*
227
+ * It never makes sense for multi-strings to have implicit tagging, so
228
+ * if tag != -1, then this looks like an error in the template.
229
+ */
230
+ if (tag != -1) {
231
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_BAD_TEMPLATE);
232
+ goto err;
233
+ }
234
+
226
235
  p = *in;
227
236
  /* Just read in tag and class */
228
237
  ret = asn1_check_tlen(NULL, &otag, &oclass, NULL, NULL,
@@ -255,67 +264,16 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
255
264
  ef = it->funcs;
256
265
  return ef->asn1_ex_d2i(pval, in, len, it, tag, aclass, opt, ctx);
257
266
 
258
- case ASN1_ITYPE_COMPAT:
259
- /* we must resort to old style evil hackery */
260
- cf = it->funcs;
261
-
262
- /* If OPTIONAL see if it is there */
263
- if (opt) {
264
- int exptag;
265
- p = *in;
266
- if (tag == -1)
267
- exptag = it->utype;
268
- else
269
- exptag = tag;
270
- /*
271
- * Don't care about anything other than presence of expected tag
272
- */
273
-
274
- ret = asn1_check_tlen(NULL, NULL, NULL, NULL, NULL,
275
- &p, len, exptag, aclass, 1, ctx);
276
- if (!ret) {
277
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_NESTED_ASN1_ERROR);
278
- goto err;
279
- }
280
- if (ret == -1)
281
- return -1;
282
- }
283
-
267
+ case ASN1_ITYPE_CHOICE:
284
268
  /*
285
- * This is the old style evil hack IMPLICIT handling: since the
286
- * underlying code is expecting a tag and class other than the one
287
- * present we change the buffer temporarily then change it back
288
- * afterwards. This doesn't and never did work for tags > 30. Yes
289
- * this is *horrible* but it is only needed for old style d2i which
290
- * will hopefully not be around for much longer. FIXME: should copy
291
- * the buffer then modify it so the input buffer can be const: we
292
- * should *always* copy because the old style d2i might modify the
293
- * buffer.
269
+ * It never makes sense for CHOICE types to have implicit tagging, so if
270
+ * tag != -1, then this looks like an error in the template.
294
271
  */
295
-
296
272
  if (tag != -1) {
297
- wp = *(unsigned char **)in;
298
- imphack = *wp;
299
- if (p == NULL) {
300
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_NESTED_ASN1_ERROR);
301
- goto err;
302
- }
303
- *wp = (unsigned char)((*p & V_ASN1_CONSTRUCTED)
304
- | it->utype);
273
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_BAD_TEMPLATE);
274
+ goto err;
305
275
  }
306
276
 
307
- ptmpval = cf->asn1_d2i(pval, in, len);
308
-
309
- if (tag != -1)
310
- *wp = imphack;
311
-
312
- if (ptmpval)
313
- return 1;
314
-
315
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_NESTED_ASN1_ERROR);
316
- goto err;
317
-
318
- case ASN1_ITYPE_CHOICE:
319
277
  if (asn1_cb && !asn1_cb(ASN1_OP_D2I_PRE, pval, it, NULL))
320
278
  goto auxerr;
321
279
 
@@ -370,10 +328,8 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
370
328
  *in = p;
371
329
  return 1;
372
330
 
373
- case ASN1_ITYPE_NDEF_SEQUENCE:
374
331
  case ASN1_ITYPE_SEQUENCE:
375
332
  p = *in;
376
- tmplen = len;
377
333
 
378
334
  /* If no IMPLICIT tagging set to SEQUENCE, UNIVERSAL */
379
335
  if (tag == -1) {
@@ -388,13 +344,8 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
388
344
  goto err;
389
345
  } else if (ret == -1)
390
346
  return -1;
391
- if (aux && (aux->flags & ASN1_AFLG_BROKEN)) {
392
- len = tmplen - (p - *in);
393
- seq_nolen = 1;
394
- }
395
347
  /* If indefinite we don't do a length check */
396
- else
397
- seq_nolen = seq_eoc;
348
+ seq_nolen = seq_eoc;
398
349
  if (!cst) {
399
350
  OPENSSL_PUT_ERROR(ASN1, ASN1_R_SEQUENCE_NOT_CONSTRUCTED);
400
351
  goto err;
@@ -649,7 +600,7 @@ static int asn1_template_noexp_d2i(ASN1_VALUE **val,
649
600
  } else if (ret == -1)
650
601
  return -1;
651
602
  if (!*val)
652
- *val = (ASN1_VALUE *)sk_new_null();
603
+ *val = (ASN1_VALUE *)sk_ASN1_VALUE_new_null();
653
604
  else {
654
605
  /*
655
606
  * We've got a valid STACK: free up any items present
@@ -860,19 +811,19 @@ static int asn1_d2i_ex_primitive(ASN1_VALUE **pval,
860
811
 
861
812
  /* Translate ASN1 content octets into a structure */
862
813
 
863
- int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
864
- int utype, char *free_cont, const ASN1_ITEM *it)
814
+ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
815
+ int utype, char *free_cont, const ASN1_ITEM *it)
865
816
  {
866
817
  ASN1_VALUE **opval = NULL;
867
818
  ASN1_STRING *stmp;
868
819
  ASN1_TYPE *typ = NULL;
869
820
  int ret = 0;
870
- const ASN1_PRIMITIVE_FUNCS *pf;
871
821
  ASN1_INTEGER **tint;
872
- pf = it->funcs;
873
822
 
874
- if (pf && pf->prim_c2i)
875
- return pf->prim_c2i(pval, cont, len, utype, free_cont, it);
823
+ /* Historically, |it->funcs| for primitive types contained an
824
+ * |ASN1_PRIMITIVE_FUNCS| table of callbacks. */
825
+ assert(it->funcs == NULL);
826
+
876
827
  /* If ANY type clear type and set pointer to internal value */
877
828
  if (it->utype == V_ASN1_ANY) {
878
829
  if (!*pval) {
@@ -1055,15 +1006,13 @@ static int asn1_find_end(const unsigned char **in, long len, char inf)
1055
1006
  * constructed type and 'inf' should be set if it is indefinite length.
1056
1007
  */
1057
1008
 
1058
- #ifndef ASN1_MAX_STRING_NEST
1059
1009
  /*
1060
1010
  * This determines how many levels of recursion are permitted in ASN1 string
1061
1011
  * types. If it is not limited stack overflows can occur. If set to zero no
1062
1012
  * recursion is allowed at all. Although zero should be adequate examples
1063
1013
  * exist that require a value of 1. So 5 should be more than enough.
1064
1014
  */
1065
- # define ASN1_MAX_STRING_NEST 5
1066
- #endif
1015
+ #define ASN1_MAX_STRING_NEST 5
1067
1016
 
1068
1017
  static int asn1_collect(BUF_MEM *buf, const unsigned char **in, long len,
1069
1018
  char inf, int tag, int aclass, int depth)