grpc 1.55.0 → 1.56.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 (374) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +100 -68
  3. data/include/grpc/event_engine/event_engine.h +4 -3
  4. data/include/grpc/grpc_audit_logging.h +96 -0
  5. data/include/grpc/module.modulemap +2 -0
  6. data/include/grpc/support/json.h +218 -0
  7. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
  8. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
  9. data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
  10. data/src/core/ext/filters/client_channel/client_channel.cc +86 -104
  11. data/src/core/ext/filters/client_channel/client_channel.h +6 -0
  12. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
  13. data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
  14. data/src/core/ext/filters/client_channel/config_selector.h +9 -24
  15. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
  17. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
  18. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
  19. data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
  20. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
  21. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +52 -20
  22. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
  23. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
  24. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
  25. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
  28. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
  29. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
  30. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
  31. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +32 -39
  32. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
  40. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
  41. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
  42. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
  43. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
  44. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
  45. data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
  46. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
  47. data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
  48. data/src/core/ext/filters/client_channel/subchannel.h +3 -43
  49. data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
  50. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
  51. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
  52. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
  53. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
  54. data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
  55. data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
  56. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
  57. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
  58. data/src/core/ext/xds/certificate_provider_store.cc +4 -9
  59. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  60. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
  61. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
  62. data/src/core/ext/xds/xds_api.cc +9 -6
  63. data/src/core/ext/xds/xds_api.h +3 -2
  64. data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
  65. data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
  66. data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
  67. data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
  68. data/src/core/ext/xds/xds_client.cc +5 -4
  69. data/src/core/ext/xds/xds_client_stats.h +1 -1
  70. data/src/core/ext/xds/xds_cluster.cc +20 -19
  71. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
  72. data/src/core/ext/xds/xds_common_types.cc +3 -1
  73. data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
  74. data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
  75. data/src/core/ext/xds/xds_http_filters.h +4 -2
  76. data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
  77. data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
  78. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
  79. data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
  80. data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
  81. data/src/core/ext/xds/xds_listener.cc +1 -0
  82. data/src/core/ext/xds/xds_route_config.cc +40 -3
  83. data/src/core/ext/xds/xds_routing.cc +2 -2
  84. data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
  85. data/src/core/lib/avl/avl.h +5 -0
  86. data/src/core/lib/channel/channel_args.cc +80 -22
  87. data/src/core/lib/channel/channel_args.h +34 -1
  88. data/src/core/lib/channel/channel_trace.cc +16 -12
  89. data/src/core/lib/channel/channelz.cc +159 -132
  90. data/src/core/lib/channel/channelz.h +42 -35
  91. data/src/core/lib/channel/channelz_registry.cc +23 -20
  92. data/src/core/lib/channel/connected_channel.cc +17 -6
  93. data/src/core/lib/channel/promise_based_filter.cc +0 -4
  94. data/src/core/lib/channel/promise_based_filter.h +2 -0
  95. data/src/core/lib/compression/compression_internal.cc +2 -5
  96. data/src/core/lib/config/config_vars.cc +20 -18
  97. data/src/core/lib/config/config_vars.h +4 -4
  98. data/src/core/lib/config/load_config.cc +13 -0
  99. data/src/core/lib/config/load_config.h +6 -0
  100. data/src/core/lib/debug/event_log.h +1 -1
  101. data/src/core/lib/debug/stats_data.h +1 -1
  102. data/src/core/lib/debug/trace.cc +24 -55
  103. data/src/core/lib/debug/trace.h +3 -1
  104. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
  105. data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
  106. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
  107. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
  108. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
  109. data/src/core/lib/event_engine/default_event_engine.cc +13 -1
  110. data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
  111. data/src/core/lib/event_engine/poller.h +2 -2
  112. data/src/core/lib/event_engine/posix.h +4 -0
  113. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
  114. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
  115. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
  116. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -19
  117. data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -1
  118. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
  119. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -8
  120. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  121. data/src/core/lib/event_engine/shim.cc +7 -1
  122. data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
  123. data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
  124. data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
  125. data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
  126. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
  127. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
  128. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
  129. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
  130. data/src/core/lib/event_engine/windows/iocp.cc +4 -3
  131. data/src/core/lib/event_engine/windows/iocp.h +3 -3
  132. data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
  133. data/src/core/lib/event_engine/windows/win_socket.h +4 -4
  134. data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
  135. data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
  136. data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
  137. data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
  138. data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
  139. data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
  140. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
  141. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
  142. data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
  143. data/src/core/lib/experiments/config.cc +38 -7
  144. data/src/core/lib/experiments/config.h +16 -0
  145. data/src/core/lib/experiments/experiments.cc +67 -20
  146. data/src/core/lib/experiments/experiments.h +27 -21
  147. data/src/core/lib/gpr/log_internal.h +55 -0
  148. data/src/core/lib/gprpp/crash.cc +10 -0
  149. data/src/core/lib/gprpp/crash.h +3 -0
  150. data/src/core/lib/gprpp/per_cpu.cc +33 -0
  151. data/src/core/lib/gprpp/per_cpu.h +29 -6
  152. data/src/core/lib/gprpp/time.cc +1 -0
  153. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  154. data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
  155. data/src/core/lib/iomgr/ev_apple.cc +12 -12
  156. data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
  157. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
  158. data/src/core/lib/iomgr/iocp_windows.cc +24 -3
  159. data/src/core/lib/iomgr/iocp_windows.h +11 -0
  160. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
  161. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
  162. data/src/core/lib/iomgr/socket_windows.cc +61 -7
  163. data/src/core/lib/iomgr/socket_windows.h +9 -2
  164. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
  165. data/src/core/lib/iomgr/tcp_server_posix.cc +148 -107
  166. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  167. data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
  168. data/src/core/lib/json/json.h +2 -166
  169. data/src/core/lib/json/json_object_loader.cc +8 -9
  170. data/src/core/lib/json/json_object_loader.h +25 -18
  171. data/src/core/lib/json/json_reader.cc +13 -6
  172. data/src/core/lib/json/json_util.cc +6 -11
  173. data/src/core/lib/json/json_writer.cc +7 -8
  174. data/src/core/lib/load_balancing/lb_policy.h +13 -0
  175. data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
  176. data/src/core/lib/matchers/matchers.cc +3 -4
  177. data/src/core/lib/matchers/matchers.h +2 -1
  178. data/src/core/lib/promise/activity.cc +5 -0
  179. data/src/core/lib/promise/activity.h +10 -0
  180. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  181. data/src/core/lib/promise/party.cc +31 -13
  182. data/src/core/lib/promise/party.h +11 -2
  183. data/src/core/lib/promise/pipe.h +9 -2
  184. data/src/core/lib/promise/prioritized_race.h +95 -0
  185. data/src/core/lib/promise/sleep.cc +2 -1
  186. data/src/core/lib/resolver/server_address.cc +0 -8
  187. data/src/core/lib/resolver/server_address.h +0 -6
  188. data/src/core/lib/resource_quota/memory_quota.cc +7 -7
  189. data/src/core/lib/resource_quota/memory_quota.h +1 -2
  190. data/src/core/lib/security/authorization/audit_logging.cc +98 -0
  191. data/src/core/lib/security/authorization/audit_logging.h +73 -0
  192. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
  193. data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
  194. data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
  195. data/src/core/lib/security/authorization/rbac_policy.h +19 -2
  196. data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
  197. data/src/core/lib/security/authorization/stdout_logger.h +61 -0
  198. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
  199. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
  200. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
  201. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
  202. data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
  203. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
  204. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
  205. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
  206. data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
  207. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
  208. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
  209. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
  210. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
  211. data/src/core/lib/security/util/json_util.cc +1 -0
  212. data/src/core/lib/service_config/service_config_call_data.h +49 -20
  213. data/src/core/lib/service_config/service_config_impl.cc +2 -1
  214. data/src/core/lib/surface/call.cc +38 -23
  215. data/src/core/lib/surface/completion_queue.cc +6 -2
  216. data/src/core/lib/surface/version.cc +2 -2
  217. data/src/core/lib/transport/batch_builder.cc +15 -12
  218. data/src/core/lib/transport/batch_builder.h +39 -35
  219. data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
  220. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  221. data/src/ruby/ext/grpc/extconf.rb +8 -9
  222. data/src/ruby/lib/grpc/version.rb +1 -1
  223. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
  224. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
  225. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
  226. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
  227. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
  228. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
  229. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
  230. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
  231. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
  232. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
  233. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
  234. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
  235. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
  236. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
  237. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
  238. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
  239. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
  240. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
  241. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
  242. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
  243. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
  244. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
  245. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
  246. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
  248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
  249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
  250. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
  251. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
  252. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
  253. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
  254. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
  255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
  256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
  257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
  258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
  259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
  260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
  261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
  262. data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
  263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
  264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
  265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
  266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
  267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
  268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
  269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
  270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
  271. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
  272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
  273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
  274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
  275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
  276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
  277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
  278. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
  279. data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
  280. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
  281. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
  282. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
  283. data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
  284. data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
  286. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
  287. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
  288. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
  289. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
  290. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
  291. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
  292. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
  293. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
  294. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
  295. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
  296. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
  297. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
  298. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
  299. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  300. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
  301. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
  302. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
  303. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
  304. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
  305. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
  306. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
  307. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
  308. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
  309. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
  310. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
  311. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
  312. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
  313. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
  314. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
  315. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
  316. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
  317. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
  318. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
  319. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
  320. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
  321. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  322. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
  323. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
  324. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
  325. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
  326. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
  327. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
  328. data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
  329. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
  330. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
  331. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
  332. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
  333. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
  334. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
  335. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
  336. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
  337. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
  338. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
  339. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
  340. data/third_party/cares/cares/include/ares.h +23 -1
  341. data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
  342. data/third_party/cares/cares/include/ares_rules.h +2 -2
  343. data/third_party/cares/cares/include/ares_version.h +3 -3
  344. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
  345. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
  346. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
  347. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
  348. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
  349. data/third_party/cares/cares/src/lib/ares_data.c +16 -0
  350. data/third_party/cares/cares/src/lib/ares_data.h +7 -0
  351. data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
  352. data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
  353. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
  354. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
  355. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
  356. data/third_party/cares/cares/src/lib/ares_init.c +97 -485
  357. data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
  358. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
  359. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
  360. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
  361. data/third_party/cares/cares/src/lib/ares_private.h +30 -16
  362. data/third_party/cares/cares/src/lib/ares_process.c +55 -16
  363. data/third_party/cares/cares/src/lib/ares_query.c +1 -35
  364. data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
  365. data/third_party/cares/cares/src/lib/ares_send.c +5 -7
  366. data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
  367. data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
  368. data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
  369. data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
  370. data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
  371. metadata +48 -12
  372. data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
  373. data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
  374. data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -62,6 +62,8 @@
62
62
  #include <openssl/obj.h>
63
63
  #include <openssl/x509.h>
64
64
 
65
+ #include <limits.h>
66
+
65
67
  #include "internal.h"
66
68
 
67
69
  int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,
@@ -83,17 +85,13 @@ int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,
83
85
  int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1,
84
86
  X509_ALGOR *algor2, ASN1_BIT_STRING *signature,
85
87
  void *asn, EVP_MD_CTX *ctx) {
86
- EVP_PKEY *pkey;
87
- unsigned char *buf_in = NULL, *buf_out = NULL;
88
- size_t inl = 0, outl = 0;
89
-
88
+ int ret = 0;
89
+ uint8_t *in = NULL, *out = NULL;
90
90
  if (signature->type != V_ASN1_BIT_STRING) {
91
91
  OPENSSL_PUT_ERROR(ASN1, ASN1_R_WRONG_TYPE);
92
92
  goto err;
93
93
  }
94
94
 
95
- pkey = EVP_PKEY_CTX_get0_pkey(ctx->pctx);
96
-
97
95
  // Write out the requested copies of the AlgorithmIdentifier.
98
96
  if (algor1 && !x509_digest_sign_algorithm(ctx, algor1)) {
99
97
  goto err;
@@ -102,26 +100,37 @@ int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1,
102
100
  goto err;
103
101
  }
104
102
 
105
- inl = ASN1_item_i2d(asn, &buf_in, it);
106
- outl = EVP_PKEY_size(pkey);
107
- buf_out = OPENSSL_malloc((unsigned int)outl);
108
- if ((buf_in == NULL) || (buf_out == NULL)) {
109
- outl = 0;
103
+ int in_len = ASN1_item_i2d(asn, &in, it);
104
+ if (in_len < 0) {
105
+ goto err;
106
+ }
107
+
108
+ EVP_PKEY *pkey = EVP_PKEY_CTX_get0_pkey(ctx->pctx);
109
+ size_t out_len = EVP_PKEY_size(pkey);
110
+ if (out_len > INT_MAX) {
111
+ OPENSSL_PUT_ERROR(X509, ERR_R_OVERFLOW);
110
112
  goto err;
111
113
  }
112
114
 
113
- if (!EVP_DigestSign(ctx, buf_out, &outl, buf_in, inl)) {
114
- outl = 0;
115
+ out = OPENSSL_malloc(out_len);
116
+ if (out == NULL) {
117
+ goto err;
118
+ }
119
+
120
+ if (!EVP_DigestSign(ctx, out, &out_len, in, in_len)) {
115
121
  OPENSSL_PUT_ERROR(X509, ERR_R_EVP_LIB);
116
122
  goto err;
117
123
  }
118
- ASN1_STRING_set0(signature, buf_out, outl);
119
- buf_out = NULL;
124
+
125
+ ASN1_STRING_set0(signature, out, (int)out_len);
126
+ out = NULL;
120
127
  signature->flags &= ~(ASN1_STRING_FLAG_BITS_LEFT | 0x07);
121
128
  signature->flags |= ASN1_STRING_FLAG_BITS_LEFT;
129
+ ret = (int)out_len;
130
+
122
131
  err:
123
132
  EVP_MD_CTX_cleanup(ctx);
124
- OPENSSL_free(buf_in);
125
- OPENSSL_free(buf_out);
126
- return outl;
133
+ OPENSSL_free(in);
134
+ OPENSSL_free(out);
135
+ return ret;
127
136
  }
@@ -509,7 +509,7 @@ static int generate_v3(CBB *cbb, const char *str, const X509V3_CTX *cnf,
509
509
  CBB_flush(cbb);
510
510
  }
511
511
  if (format == ASN1_GEN_FORMAT_HEX) {
512
- long len;
512
+ size_t len;
513
513
  uint8_t *data = x509v3_hex_to_bytes(value, &len);
514
514
  if (data == NULL) {
515
515
  OPENSSL_PUT_ERROR(ASN1, ASN1_R_ILLEGAL_HEX);
@@ -56,6 +56,7 @@
56
56
 
57
57
  #include <openssl/x509.h>
58
58
 
59
+ #include <assert.h>
59
60
  #include <inttypes.h>
60
61
  #include <string.h>
61
62
 
@@ -84,8 +85,7 @@ static int do_indent(BIO *out, int indent) {
84
85
 
85
86
  static int do_name_ex(BIO *out, const X509_NAME *n, int indent,
86
87
  unsigned long flags) {
87
- int i, prev = -1, orflags, cnt;
88
- int fn_opt, fn_nid;
88
+ int prev = -1, orflags;
89
89
  char objtmp[80];
90
90
  const char *objbuf;
91
91
  int outlen, len;
@@ -142,10 +142,8 @@ static int do_name_ex(BIO *out, const X509_NAME *n, int indent,
142
142
  sep_eq_len = 1;
143
143
  }
144
144
 
145
- fn_opt = flags & XN_FLAG_FN_MASK;
146
-
147
- cnt = X509_NAME_entry_count(n);
148
- for (i = 0; i < cnt; i++) {
145
+ int cnt = X509_NAME_entry_count(n);
146
+ for (int i = 0; i < cnt; i++) {
149
147
  const X509_NAME_ENTRY *ent;
150
148
  if (flags & XN_FLAG_DN_REV) {
151
149
  ent = X509_NAME_get_entry(n, cnt - i - 1);
@@ -172,40 +170,20 @@ static int do_name_ex(BIO *out, const X509_NAME *n, int indent,
172
170
  prev = X509_NAME_ENTRY_set(ent);
173
171
  const ASN1_OBJECT *fn = X509_NAME_ENTRY_get_object(ent);
174
172
  const ASN1_STRING *val = X509_NAME_ENTRY_get_data(ent);
175
- fn_nid = OBJ_obj2nid(fn);
176
- if (fn_opt != XN_FLAG_FN_NONE) {
177
- int objlen, fld_len;
178
- if ((fn_opt == XN_FLAG_FN_OID) || (fn_nid == NID_undef)) {
179
- OBJ_obj2txt(objtmp, sizeof objtmp, fn, 1);
180
- fld_len = 0; // XXX: what should this be?
181
- objbuf = objtmp;
182
- } else {
183
- if (fn_opt == XN_FLAG_FN_SN) {
184
- fld_len = FN_WIDTH_SN;
185
- objbuf = OBJ_nid2sn(fn_nid);
186
- } else if (fn_opt == XN_FLAG_FN_LN) {
187
- fld_len = FN_WIDTH_LN;
188
- objbuf = OBJ_nid2ln(fn_nid);
189
- } else {
190
- fld_len = 0; // XXX: what should this be?
191
- objbuf = "";
192
- }
193
- }
194
- objlen = strlen(objbuf);
195
- if (!maybe_write(out, objbuf, objlen)) {
196
- return -1;
197
- }
198
- if ((objlen < fld_len) && (flags & XN_FLAG_FN_ALIGN)) {
199
- if (!do_indent(out, fld_len - objlen)) {
200
- return -1;
201
- }
202
- outlen += fld_len - objlen;
203
- }
204
- if (!maybe_write(out, sep_eq, sep_eq_len)) {
205
- return -1;
206
- }
207
- outlen += objlen + sep_eq_len;
173
+ assert((flags & XN_FLAG_FN_MASK) == XN_FLAG_FN_SN);
174
+ int fn_nid = OBJ_obj2nid(fn);
175
+ if (fn_nid == NID_undef) {
176
+ OBJ_obj2txt(objtmp, sizeof(objtmp), fn, 1);
177
+ objbuf = objtmp;
178
+ } else {
179
+ objbuf = OBJ_nid2sn(fn_nid);
180
+ }
181
+ int objlen = strlen(objbuf);
182
+ if (!maybe_write(out, objbuf, objlen) ||
183
+ !maybe_write(out, sep_eq, sep_eq_len)) {
184
+ return -1;
208
185
  }
186
+ outlen += objlen + sep_eq_len;
209
187
  // If the field name is unknown then fix up the DER dump flag. We
210
188
  // might want to limit this further so it will DER dump on anything
211
189
  // other than a few 'standard' fields.
@@ -91,14 +91,8 @@ int X509_print(BIO *bp, X509 *x) {
91
91
 
92
92
  int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags,
93
93
  unsigned long cflag) {
94
- long l;
95
- int ret = 0, i;
96
- char *m = NULL, mlch = ' ';
94
+ char mlch = ' ';
97
95
  int nmindent = 0;
98
- X509_CINF *ci;
99
- EVP_PKEY *pkey = NULL;
100
- const char *neg;
101
-
102
96
  if ((nmflags & XN_FLAG_SEP_MASK) == XN_FLAG_SEP_MULTILINE) {
103
97
  mlch = '\n';
104
98
  nmindent = 12;
@@ -108,26 +102,26 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags,
108
102
  nmindent = 16;
109
103
  }
110
104
 
111
- ci = x->cert_info;
105
+ const X509_CINF *ci = x->cert_info;
112
106
  if (!(cflag & X509_FLAG_NO_HEADER)) {
113
107
  if (BIO_write(bp, "Certificate:\n", 13) <= 0) {
114
- goto err;
108
+ return 0;
115
109
  }
116
110
  if (BIO_write(bp, " Data:\n", 10) <= 0) {
117
- goto err;
111
+ return 0;
118
112
  }
119
113
  }
120
114
  if (!(cflag & X509_FLAG_NO_VERSION)) {
121
- l = X509_get_version(x);
115
+ long l = X509_get_version(x);
122
116
  assert(X509_VERSION_1 <= l && l <= X509_VERSION_3);
123
117
  if (BIO_printf(bp, "%8sVersion: %ld (0x%lx)\n", "", l + 1,
124
118
  (unsigned long)l) <= 0) {
125
- goto err;
119
+ return 0;
126
120
  }
127
121
  }
128
122
  if (!(cflag & X509_FLAG_NO_SERIAL)) {
129
123
  if (BIO_write(bp, " Serial Number:", 22) <= 0) {
130
- goto err;
124
+ return 0;
131
125
  }
132
126
 
133
127
  const ASN1_INTEGER *serial = X509_get0_serialNumber(x);
@@ -136,19 +130,20 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags,
136
130
  assert(serial->type != V_ASN1_NEG_INTEGER);
137
131
  if (BIO_printf(bp, " %" PRIu64 " (0x%" PRIx64 ")\n", serial_u64,
138
132
  serial_u64) <= 0) {
139
- goto err;
133
+ return 0;
140
134
  }
141
135
  } else {
142
136
  ERR_clear_error(); // Clear |ASN1_INTEGER_get_uint64|'s error.
143
- neg = (serial->type == V_ASN1_NEG_INTEGER) ? " (Negative)" : "";
137
+ const char *neg =
138
+ (serial->type == V_ASN1_NEG_INTEGER) ? " (Negative)" : "";
144
139
  if (BIO_printf(bp, "\n%12s%s", "", neg) <= 0) {
145
- goto err;
140
+ return 0;
146
141
  }
147
142
 
148
- for (i = 0; i < serial->length; i++) {
143
+ for (int i = 0; i < serial->length; i++) {
149
144
  if (BIO_printf(bp, "%02x%c", serial->data[i],
150
145
  ((i + 1 == serial->length) ? '\n' : ':')) <= 0) {
151
- goto err;
146
+ return 0;
152
147
  }
153
148
  }
154
149
  }
@@ -156,69 +151,69 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags,
156
151
 
157
152
  if (!(cflag & X509_FLAG_NO_SIGNAME)) {
158
153
  if (X509_signature_print(bp, ci->signature, NULL) <= 0) {
159
- goto err;
154
+ return 0;
160
155
  }
161
156
  }
162
157
 
163
158
  if (!(cflag & X509_FLAG_NO_ISSUER)) {
164
159
  if (BIO_printf(bp, " Issuer:%c", mlch) <= 0) {
165
- goto err;
160
+ return 0;
166
161
  }
167
162
  if (X509_NAME_print_ex(bp, X509_get_issuer_name(x), nmindent, nmflags) <
168
163
  0) {
169
- goto err;
164
+ return 0;
170
165
  }
171
166
  if (BIO_write(bp, "\n", 1) <= 0) {
172
- goto err;
167
+ return 0;
173
168
  }
174
169
  }
175
170
  if (!(cflag & X509_FLAG_NO_VALIDITY)) {
176
171
  if (BIO_write(bp, " Validity\n", 17) <= 0) {
177
- goto err;
172
+ return 0;
178
173
  }
179
174
  if (BIO_write(bp, " Not Before: ", 24) <= 0) {
180
- goto err;
175
+ return 0;
181
176
  }
182
177
  if (!ASN1_TIME_print(bp, X509_get_notBefore(x))) {
183
- goto err;
178
+ return 0;
184
179
  }
185
180
  if (BIO_write(bp, "\n Not After : ", 25) <= 0) {
186
- goto err;
181
+ return 0;
187
182
  }
188
183
  if (!ASN1_TIME_print(bp, X509_get_notAfter(x))) {
189
- goto err;
184
+ return 0;
190
185
  }
191
186
  if (BIO_write(bp, "\n", 1) <= 0) {
192
- goto err;
187
+ return 0;
193
188
  }
194
189
  }
195
190
  if (!(cflag & X509_FLAG_NO_SUBJECT)) {
196
191
  if (BIO_printf(bp, " Subject:%c", mlch) <= 0) {
197
- goto err;
192
+ return 0;
198
193
  }
199
194
  if (X509_NAME_print_ex(bp, X509_get_subject_name(x), nmindent, nmflags) <
200
195
  0) {
201
- goto err;
196
+ return 0;
202
197
  }
203
198
  if (BIO_write(bp, "\n", 1) <= 0) {
204
- goto err;
199
+ return 0;
205
200
  }
206
201
  }
207
202
  if (!(cflag & X509_FLAG_NO_PUBKEY)) {
208
203
  if (BIO_write(bp, " Subject Public Key Info:\n", 33) <= 0) {
209
- goto err;
204
+ return 0;
210
205
  }
211
206
  if (BIO_printf(bp, "%12sPublic Key Algorithm: ", "") <= 0) {
212
- goto err;
207
+ return 0;
213
208
  }
214
209
  if (i2a_ASN1_OBJECT(bp, ci->key->algor->algorithm) <= 0) {
215
- goto err;
210
+ return 0;
216
211
  }
217
212
  if (BIO_puts(bp, "\n") <= 0) {
218
- goto err;
213
+ return 0;
219
214
  }
220
215
 
221
- pkey = X509_get_pubkey(x);
216
+ EVP_PKEY *pkey = X509_get_pubkey(x);
222
217
  if (pkey == NULL) {
223
218
  BIO_printf(bp, "%12sUnable to load Public Key\n", "");
224
219
  ERR_print_errors(bp);
@@ -231,18 +226,18 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags,
231
226
  if (!(cflag & X509_FLAG_NO_IDS)) {
232
227
  if (ci->issuerUID) {
233
228
  if (BIO_printf(bp, "%8sIssuer Unique ID: ", "") <= 0) {
234
- goto err;
229
+ return 0;
235
230
  }
236
231
  if (!X509_signature_dump(bp, ci->issuerUID, 12)) {
237
- goto err;
232
+ return 0;
238
233
  }
239
234
  }
240
235
  if (ci->subjectUID) {
241
236
  if (BIO_printf(bp, "%8sSubject Unique ID: ", "") <= 0) {
242
- goto err;
237
+ return 0;
243
238
  }
244
239
  if (!X509_signature_dump(bp, ci->subjectUID, 12)) {
245
- goto err;
240
+ return 0;
246
241
  }
247
242
  }
248
243
  }
@@ -253,20 +248,16 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags,
253
248
 
254
249
  if (!(cflag & X509_FLAG_NO_SIGDUMP)) {
255
250
  if (X509_signature_print(bp, x->sig_alg, x->signature) <= 0) {
256
- goto err;
251
+ return 0;
257
252
  }
258
253
  }
259
254
  if (!(cflag & X509_FLAG_NO_AUX)) {
260
255
  if (!X509_CERT_AUX_print(bp, x->aux, 0)) {
261
- goto err;
256
+ return 0;
262
257
  }
263
258
  }
264
- ret = 1;
265
- err:
266
- if (m != NULL) {
267
- OPENSSL_free(m);
268
- }
269
- return ret;
259
+
260
+ return 1;
270
261
  }
271
262
 
272
263
  int X509_signature_print(BIO *bp, const X509_ALGOR *sigalg,
@@ -56,153 +56,13 @@
56
56
 
57
57
  #include <openssl/asn1.h>
58
58
  #include <openssl/err.h>
59
- #include <openssl/evp.h>
60
59
  #include <openssl/obj.h>
61
- #include <openssl/stack.h>
62
60
  #include <openssl/x509.h>
63
61
 
64
62
  #include "../asn1/internal.h"
65
63
  #include "internal.h"
66
64
 
67
65
 
68
- int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x) {
69
- return sk_X509_ATTRIBUTE_num(x);
70
- }
71
-
72
- int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid,
73
- int lastpos) {
74
- const ASN1_OBJECT *obj = OBJ_nid2obj(nid);
75
- if (obj == NULL) {
76
- return -1;
77
- }
78
- return X509at_get_attr_by_OBJ(x, obj, lastpos);
79
- }
80
-
81
- int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk,
82
- const ASN1_OBJECT *obj, int lastpos) {
83
- int n;
84
- X509_ATTRIBUTE *ex;
85
-
86
- if (sk == NULL) {
87
- return -1;
88
- }
89
- lastpos++;
90
- if (lastpos < 0) {
91
- lastpos = 0;
92
- }
93
- n = sk_X509_ATTRIBUTE_num(sk);
94
- for (; lastpos < n; lastpos++) {
95
- ex = sk_X509_ATTRIBUTE_value(sk, lastpos);
96
- if (OBJ_cmp(ex->object, obj) == 0) {
97
- return lastpos;
98
- }
99
- }
100
- return -1;
101
- }
102
-
103
- X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc) {
104
- if (x == NULL || loc < 0 || sk_X509_ATTRIBUTE_num(x) <= (size_t)loc) {
105
- return NULL;
106
- } else {
107
- return sk_X509_ATTRIBUTE_value(x, loc);
108
- }
109
- }
110
-
111
- X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc) {
112
- X509_ATTRIBUTE *ret;
113
-
114
- if (x == NULL || loc < 0 || sk_X509_ATTRIBUTE_num(x) <= (size_t)loc) {
115
- return NULL;
116
- }
117
- ret = sk_X509_ATTRIBUTE_delete(x, loc);
118
- return ret;
119
- }
120
-
121
- STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
122
- X509_ATTRIBUTE *attr) {
123
- X509_ATTRIBUTE *new_attr = NULL;
124
- STACK_OF(X509_ATTRIBUTE) *sk = NULL;
125
-
126
- if (x == NULL) {
127
- OPENSSL_PUT_ERROR(X509, ERR_R_PASSED_NULL_PARAMETER);
128
- goto err;
129
- }
130
-
131
- if (*x == NULL) {
132
- if ((sk = sk_X509_ATTRIBUTE_new_null()) == NULL) {
133
- goto err;
134
- }
135
- } else {
136
- sk = *x;
137
- }
138
-
139
- if ((new_attr = X509_ATTRIBUTE_dup(attr)) == NULL) {
140
- goto err;
141
- }
142
- if (!sk_X509_ATTRIBUTE_push(sk, new_attr)) {
143
- goto err;
144
- }
145
- if (*x == NULL) {
146
- *x = sk;
147
- }
148
- return sk;
149
- err:
150
- if (new_attr != NULL) {
151
- X509_ATTRIBUTE_free(new_attr);
152
- }
153
- if (sk != NULL) {
154
- sk_X509_ATTRIBUTE_free(sk);
155
- }
156
- return NULL;
157
- }
158
-
159
- STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) **x,
160
- const ASN1_OBJECT *obj,
161
- int type,
162
- const unsigned char *bytes,
163
- int len) {
164
- X509_ATTRIBUTE *attr;
165
- STACK_OF(X509_ATTRIBUTE) *ret;
166
- attr = X509_ATTRIBUTE_create_by_OBJ(NULL, obj, type, bytes, len);
167
- if (!attr) {
168
- return 0;
169
- }
170
- ret = X509at_add1_attr(x, attr);
171
- X509_ATTRIBUTE_free(attr);
172
- return ret;
173
- }
174
-
175
- STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) **x,
176
- int nid, int type,
177
- const unsigned char *bytes,
178
- int len) {
179
- X509_ATTRIBUTE *attr;
180
- STACK_OF(X509_ATTRIBUTE) *ret;
181
- attr = X509_ATTRIBUTE_create_by_NID(NULL, nid, type, bytes, len);
182
- if (!attr) {
183
- return 0;
184
- }
185
- ret = X509at_add1_attr(x, attr);
186
- X509_ATTRIBUTE_free(attr);
187
- return ret;
188
- }
189
-
190
- STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) **x,
191
- const char *attrname,
192
- int type,
193
- const unsigned char *bytes,
194
- int len) {
195
- X509_ATTRIBUTE *attr;
196
- STACK_OF(X509_ATTRIBUTE) *ret;
197
- attr = X509_ATTRIBUTE_create_by_txt(NULL, attrname, type, bytes, len);
198
- if (!attr) {
199
- return 0;
200
- }
201
- ret = X509at_add1_attr(x, attr);
202
- X509_ATTRIBUTE_free(attr);
203
- return ret;
204
- }
205
-
206
66
  X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid,
207
67
  int attrtype, const void *data,
208
68
  int len) {
@@ -160,62 +160,111 @@ int X509_REQ_add_extensions(X509_REQ *req,
160
160
  return X509_REQ_add_extensions_nid(req, exts, NID_ext_req);
161
161
  }
162
162
 
163
- // Request attribute functions
164
-
165
163
  int X509_REQ_get_attr_count(const X509_REQ *req) {
166
- return X509at_get_attr_count(req->req_info->attributes);
164
+ return sk_X509_ATTRIBUTE_num(req->req_info->attributes);
167
165
  }
168
166
 
169
167
  int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos) {
170
- return X509at_get_attr_by_NID(req->req_info->attributes, nid, lastpos);
168
+ const ASN1_OBJECT *obj = OBJ_nid2obj(nid);
169
+ if (obj == NULL) {
170
+ return -1;
171
+ }
172
+ return X509_REQ_get_attr_by_OBJ(req, obj, lastpos);
171
173
  }
172
174
 
173
175
  int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj,
174
176
  int lastpos) {
175
- return X509at_get_attr_by_OBJ(req->req_info->attributes, obj, lastpos);
177
+ if (req->req_info->attributes == NULL) {
178
+ return -1;
179
+ }
180
+ lastpos++;
181
+ if (lastpos < 0) {
182
+ lastpos = 0;
183
+ }
184
+ int n = sk_X509_ATTRIBUTE_num(req->req_info->attributes);
185
+ for (; lastpos < n; lastpos++) {
186
+ const X509_ATTRIBUTE *attr =
187
+ sk_X509_ATTRIBUTE_value(req->req_info->attributes, lastpos);
188
+ if (OBJ_cmp(attr->object, obj) == 0) {
189
+ return lastpos;
190
+ }
191
+ }
192
+ return -1;
176
193
  }
177
194
 
178
195
  X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc) {
179
- return X509at_get_attr(req->req_info->attributes, loc);
196
+ if (req->req_info->attributes == NULL || loc < 0 ||
197
+ sk_X509_ATTRIBUTE_num(req->req_info->attributes) <= (size_t)loc) {
198
+ return NULL;
199
+ }
200
+ return sk_X509_ATTRIBUTE_value(req->req_info->attributes, loc);
180
201
  }
181
202
 
182
203
  X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc) {
183
- return X509at_delete_attr(req->req_info->attributes, loc);
204
+ if (req->req_info->attributes == NULL || loc < 0 ||
205
+ sk_X509_ATTRIBUTE_num(req->req_info->attributes) <= (size_t)loc) {
206
+ return NULL;
207
+ }
208
+ return sk_X509_ATTRIBUTE_delete(req->req_info->attributes, loc);
184
209
  }
185
210
 
186
- int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr) {
187
- if (X509at_add1_attr(&req->req_info->attributes, attr)) {
188
- return 1;
211
+ static int X509_REQ_add0_attr(X509_REQ *req, X509_ATTRIBUTE *attr) {
212
+ if (req->req_info->attributes == NULL) {
213
+ req->req_info->attributes = sk_X509_ATTRIBUTE_new_null();
189
214
  }
190
- return 0;
215
+ if (req->req_info->attributes == NULL ||
216
+ !sk_X509_ATTRIBUTE_push(req->req_info->attributes, attr)) {
217
+ return 0;
218
+ }
219
+
220
+ return 1;
221
+ }
222
+
223
+ int X509_REQ_add1_attr(X509_REQ *req, const X509_ATTRIBUTE *attr) {
224
+ X509_ATTRIBUTE *new_attr = X509_ATTRIBUTE_dup(attr);
225
+ if (new_attr == NULL || !X509_REQ_add0_attr(req, new_attr)) {
226
+ X509_ATTRIBUTE_free(new_attr);
227
+ return 0;
228
+ }
229
+
230
+ return 1;
191
231
  }
192
232
 
193
233
  int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, const ASN1_OBJECT *obj,
194
234
  int attrtype, const unsigned char *data,
195
235
  int len) {
196
- if (X509at_add1_attr_by_OBJ(&req->req_info->attributes, obj, attrtype, data,
197
- len)) {
198
- return 1;
236
+ X509_ATTRIBUTE *attr =
237
+ X509_ATTRIBUTE_create_by_OBJ(NULL, obj, attrtype, data, len);
238
+ if (attr == NULL || !X509_REQ_add0_attr(req, attr)) {
239
+ X509_ATTRIBUTE_free(attr);
240
+ return 0;
199
241
  }
200
- return 0;
242
+
243
+ return 1;
201
244
  }
202
245
 
203
246
  int X509_REQ_add1_attr_by_NID(X509_REQ *req, int nid, int attrtype,
204
247
  const unsigned char *data, int len) {
205
- if (X509at_add1_attr_by_NID(&req->req_info->attributes, nid, attrtype, data,
206
- len)) {
207
- return 1;
248
+ X509_ATTRIBUTE *attr =
249
+ X509_ATTRIBUTE_create_by_NID(NULL, nid, attrtype, data, len);
250
+ if (attr == NULL || !X509_REQ_add0_attr(req, attr)) {
251
+ X509_ATTRIBUTE_free(attr);
252
+ return 0;
208
253
  }
209
- return 0;
254
+
255
+ return 1;
210
256
  }
211
257
 
212
258
  int X509_REQ_add1_attr_by_txt(X509_REQ *req, const char *attrname, int attrtype,
213
259
  const unsigned char *data, int len) {
214
- if (X509at_add1_attr_by_txt(&req->req_info->attributes, attrname, attrtype,
215
- data, len)) {
216
- return 1;
260
+ X509_ATTRIBUTE *attr =
261
+ X509_ATTRIBUTE_create_by_txt(NULL, attrname, attrtype, data, len);
262
+ if (attr == NULL || !X509_REQ_add0_attr(req, attr)) {
263
+ X509_ATTRIBUTE_free(attr);
264
+ return 0;
217
265
  }
218
- return 0;
266
+
267
+ return 1;
219
268
  }
220
269
 
221
270
  void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig,