grpc 1.33.0.pre1 → 1.34.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 (533) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +342 -134
  3. data/include/grpc/grpc.h +1 -2
  4. data/include/grpc/grpc_security.h +149 -172
  5. data/include/grpc/impl/codegen/grpc_types.h +9 -2
  6. data/include/grpc/impl/codegen/port_platform.h +22 -55
  7. data/src/core/ext/filters/client_channel/client_channel.cc +11 -34
  8. data/src/core/ext/filters/client_channel/config_selector.h +2 -3
  9. data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -1
  10. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
  11. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  12. data/src/core/ext/filters/client_channel/lb_policy.cc +5 -1
  13. data/src/core/ext/filters/client_channel/lb_policy.h +3 -3
  14. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +1 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +80 -71
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
  18. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +2 -2
  19. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +47 -17
  20. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +2 -2
  21. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +8 -5
  22. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +1 -1
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +16 -243
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -17
  26. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +809 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +20 -25
  28. data/src/core/ext/filters/client_channel/resolver.cc +3 -1
  29. data/src/core/ext/filters/client_channel/resolver.h +4 -1
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
  32. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
  33. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  34. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
  35. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +20 -0
  36. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +66 -7
  37. data/src/core/ext/filters/client_channel/resolver_registry.cc +4 -4
  38. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +13 -25
  39. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +1 -1
  40. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +2 -2
  41. data/src/core/ext/filters/client_channel/retry_throttle.h +1 -1
  42. data/src/core/ext/filters/client_channel/server_address.h +0 -4
  43. data/src/core/ext/filters/client_channel/service_config.cc +3 -1
  44. data/src/core/ext/filters/client_channel/service_config.h +1 -1
  45. data/src/core/ext/filters/client_channel/subchannel.cc +18 -15
  46. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  47. data/src/core/ext/filters/client_channel/subchannel_interface.h +7 -15
  48. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
  49. data/src/core/ext/filters/deadline/deadline_filter.cc +83 -77
  50. data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
  51. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
  52. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  53. data/src/core/ext/filters/max_age/max_age_filter.cc +1 -1
  54. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +1 -1
  55. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +17 -3
  56. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
  57. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -24
  58. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
  59. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  60. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
  61. data/src/core/ext/transport/chttp2/transport/internal.h +0 -1
  62. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
  63. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -2
  64. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
  65. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  66. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
  67. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  68. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
  69. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  70. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
  71. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  72. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
  73. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
  74. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
  75. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  76. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
  77. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  78. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
  79. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  80. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
  81. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  82. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
  83. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
  84. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
  85. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
  86. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
  87. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  88. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
  89. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
  90. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  92. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
  93. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
  94. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
  95. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  96. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
  97. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
  98. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
  99. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  100. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
  101. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  102. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
  103. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  104. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
  105. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  106. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
  107. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
  108. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
  109. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  110. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
  111. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  112. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
  113. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
  114. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
  115. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  116. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
  117. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  118. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
  119. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
  120. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
  121. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
  122. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
  123. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  124. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
  125. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  126. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
  127. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
  128. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  129. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  130. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
  131. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
  132. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
  133. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  134. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
  135. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
  136. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
  137. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
  138. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
  139. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  140. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
  141. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
  142. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
  143. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
  144. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
  145. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
  146. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
  147. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  148. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
  149. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
  150. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
  151. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
  152. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
  153. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  154. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
  155. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  156. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
  157. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  158. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
  159. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  160. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
  161. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  162. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
  163. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  164. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
  165. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  166. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
  167. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  168. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
  169. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
  170. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
  171. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  172. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
  173. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  174. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
  175. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  176. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  177. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  178. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
  179. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  180. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +38 -0
  181. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  182. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
  183. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  184. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +39 -0
  185. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  186. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
  187. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  188. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
  189. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  190. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +39 -0
  191. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  192. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
  193. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  194. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
  195. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  196. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
  197. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  198. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
  199. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  200. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
  201. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  202. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
  203. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  204. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
  205. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  206. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
  207. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
  208. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
  209. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
  210. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
  211. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
  212. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
  213. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
  214. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
  215. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
  216. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
  217. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
  218. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
  219. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  220. data/src/core/ext/xds/certificate_provider_factory.h +7 -5
  221. data/src/core/ext/xds/certificate_provider_store.cc +84 -0
  222. data/src/core/ext/xds/certificate_provider_store.h +65 -8
  223. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +119 -0
  224. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +72 -0
  225. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +28 -140
  226. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +6 -4
  227. data/src/core/ext/xds/xds_api.cc +241 -718
  228. data/src/core/ext/xds/xds_api.h +50 -9
  229. data/src/core/ext/xds/xds_bootstrap.cc +172 -25
  230. data/src/core/ext/xds/xds_bootstrap.h +23 -7
  231. data/src/core/ext/xds/xds_certificate_provider.cc +240 -0
  232. data/src/core/ext/xds/xds_certificate_provider.h +74 -0
  233. data/src/core/ext/xds/xds_client.cc +161 -128
  234. data/src/core/ext/xds/xds_client.h +12 -11
  235. data/src/core/ext/xds/xds_client_stats.cc +41 -4
  236. data/src/core/ext/xds/xds_client_stats.h +2 -2
  237. data/src/core/lib/channel/channel_args.cc +2 -1
  238. data/src/core/lib/channel/channel_trace.cc +4 -2
  239. data/src/core/lib/channel/channelz.h +2 -2
  240. data/src/core/lib/channel/handshaker.h +2 -2
  241. data/src/core/lib/compression/compression.cc +8 -4
  242. data/src/core/lib/compression/compression_internal.cc +10 -5
  243. data/src/core/lib/compression/compression_internal.h +2 -1
  244. data/src/core/lib/compression/stream_compression_identity.cc +1 -3
  245. data/src/core/lib/debug/stats_data.cc +1 -0
  246. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  247. data/src/core/lib/gpr/log_linux.cc +17 -3
  248. data/src/core/lib/gpr/log_posix.cc +13 -1
  249. data/src/core/lib/gpr/log_windows.cc +16 -4
  250. data/src/core/lib/gpr/murmur_hash.cc +1 -1
  251. data/src/core/lib/gpr/string.cc +1 -1
  252. data/src/core/lib/gpr/time_precise.cc +3 -2
  253. data/src/core/lib/gpr/tls.h +4 -0
  254. data/src/core/lib/gpr/tls_msvc.h +2 -0
  255. data/src/core/lib/gpr/tls_stdcpp.h +48 -0
  256. data/src/core/lib/gpr/useful.h +5 -4
  257. data/src/core/lib/gprpp/dual_ref_counted.h +44 -49
  258. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  259. data/src/core/lib/gprpp/examine_stack.h +46 -0
  260. data/src/core/lib/gprpp/fork.cc +2 -2
  261. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  262. data/src/core/lib/gprpp/orphanable.h +4 -8
  263. data/src/core/lib/gprpp/ref_counted.h +40 -46
  264. data/src/core/lib/gprpp/ref_counted_ptr.h +9 -11
  265. data/src/core/lib/{security/authorization/mock_cel/statusor.h → gprpp/stat.h} +13 -25
  266. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  267. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  268. data/src/core/lib/gprpp/thd.h +2 -2
  269. data/src/core/lib/gprpp/thd_posix.cc +36 -36
  270. data/src/core/lib/http/parser.cc +46 -25
  271. data/src/core/lib/iomgr/error.cc +2 -1
  272. data/src/core/lib/iomgr/ev_epollex_linux.cc +8 -4
  273. data/src/core/lib/iomgr/exec_ctx.cc +1 -1
  274. data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
  275. data/src/core/lib/iomgr/executor/threadpool.h +3 -3
  276. data/src/core/lib/iomgr/parse_address.cc +84 -6
  277. data/src/core/lib/iomgr/parse_address.h +20 -0
  278. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
  279. data/src/core/lib/iomgr/python_util.h +3 -3
  280. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
  281. data/src/core/lib/iomgr/tcp_posix.cc +3 -2
  282. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  283. data/src/core/lib/iomgr/unix_sockets_posix.cc +27 -15
  284. data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
  285. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
  286. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  287. data/src/core/lib/json/json.h +2 -2
  288. data/src/core/lib/json/json_reader.cc +8 -4
  289. data/src/core/lib/json/json_util.h +167 -0
  290. data/src/core/lib/json/json_writer.cc +2 -1
  291. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +3 -1
  292. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +5 -4
  293. data/src/core/lib/security/authorization/mock_cel/cel_value.h +4 -0
  294. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +6 -6
  295. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +10 -9
  296. data/src/core/lib/security/context/security_context.h +3 -1
  297. data/src/core/lib/security/credentials/credentials.cc +1 -1
  298. data/src/core/lib/security/credentials/credentials.h +3 -3
  299. data/src/core/lib/security/credentials/external/aws_request_signer.cc +208 -0
  300. data/src/core/lib/security/credentials/external/aws_request_signer.h +73 -0
  301. data/src/core/lib/security/credentials/external/external_account_credentials.cc +311 -0
  302. data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
  303. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
  304. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
  305. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +211 -0
  306. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +59 -0
  307. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +51 -0
  308. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
  309. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
  310. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -1
  311. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -2
  312. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +35 -5
  313. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +12 -8
  314. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +78 -0
  315. data/src/core/lib/security/{certificate_provider.h → credentials/tls/grpc_tls_certificate_provider.h} +32 -18
  316. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +77 -149
  317. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +58 -187
  318. data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
  319. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  320. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
  321. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +88 -0
  322. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +70 -0
  323. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  324. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  325. data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
  326. data/src/core/lib/security/security_connector/security_connector.cc +1 -1
  327. data/src/core/lib/security/security_connector/security_connector.h +4 -2
  328. data/src/core/lib/security/security_connector/ssl_utils.h +4 -2
  329. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +293 -275
  330. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +106 -61
  331. data/src/core/lib/security/transport/security_handshaker.cc +1 -1
  332. data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
  333. data/src/core/lib/security/util/json_util.h +1 -0
  334. data/src/core/lib/slice/slice.cc +7 -4
  335. data/src/core/lib/slice/slice_buffer.cc +2 -1
  336. data/src/core/lib/slice/slice_intern.cc +2 -2
  337. data/src/core/lib/surface/call.cc +9 -8
  338. data/src/core/lib/surface/completion_queue.cc +7 -6
  339. data/src/core/lib/surface/server.cc +4 -2
  340. data/src/core/lib/surface/server.h +2 -2
  341. data/src/core/lib/surface/validate_metadata.h +3 -0
  342. data/src/core/lib/surface/version.cc +2 -2
  343. data/src/core/lib/transport/authority_override.h +2 -0
  344. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  345. data/src/core/lib/transport/byte_stream.h +3 -3
  346. data/src/core/lib/transport/connectivity_state.h +3 -3
  347. data/src/core/lib/transport/metadata.h +2 -2
  348. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  349. data/src/core/lib/transport/transport.cc +5 -3
  350. data/src/core/lib/transport/transport.h +1 -1
  351. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
  352. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -3
  353. data/src/core/tsi/fake_transport_security.cc +1 -0
  354. data/src/core/tsi/local_transport_security.cc +5 -1
  355. data/src/core/tsi/local_transport_security.h +6 -7
  356. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
  357. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
  358. data/src/core/tsi/ssl_transport_security.cc +14 -7
  359. data/src/core/tsi/ssl_transport_security.h +3 -0
  360. data/src/core/tsi/transport_security.cc +4 -2
  361. data/src/ruby/ext/grpc/extconf.rb +1 -1
  362. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +22 -14
  363. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -24
  364. data/src/ruby/lib/grpc/version.rb +1 -1
  365. data/third_party/abseil-cpp/absl/algorithm/container.h +59 -22
  366. data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
  367. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  368. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  369. data/third_party/abseil-cpp/absl/base/config.h +60 -17
  370. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
  371. data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
  372. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -0
  373. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  374. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  375. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +1 -1
  376. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
  377. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
  378. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
  379. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
  380. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
  381. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
  382. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
  383. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  384. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  385. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
  386. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
  387. data/third_party/abseil-cpp/absl/base/macros.h +36 -109
  388. data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
  389. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  390. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  391. data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
  392. data/third_party/abseil-cpp/absl/container/fixed_array.h +42 -25
  393. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +2 -1
  394. data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
  395. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -2
  396. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
  397. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +49 -29
  398. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +15 -0
  399. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +24 -7
  400. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -1
  401. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +35 -11
  402. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +10 -9
  403. data/third_party/abseil-cpp/absl/container/internal/layout.h +7 -5
  404. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +55 -34
  405. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +5 -4
  406. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +66 -16
  407. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +4 -0
  408. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +13 -4
  409. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +43 -24
  410. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +12 -3
  411. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +10 -2
  412. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +22 -1
  413. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +0 -21
  414. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +12 -1
  415. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  416. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +100 -20
  417. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  418. data/third_party/abseil-cpp/absl/functional/function_ref.h +1 -1
  419. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  420. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
  421. data/third_party/abseil-cpp/absl/hash/hash.h +6 -5
  422. data/third_party/abseil-cpp/absl/hash/internal/hash.h +73 -65
  423. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  424. data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
  425. data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
  426. data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
  427. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
  428. data/third_party/abseil-cpp/absl/status/status.cc +4 -6
  429. data/third_party/abseil-cpp/absl/status/status.h +502 -113
  430. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +5 -10
  431. data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
  432. data/third_party/abseil-cpp/absl/strings/cord.cc +91 -112
  433. data/third_party/abseil-cpp/absl/strings/cord.h +360 -205
  434. data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
  435. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  436. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  437. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  438. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  439. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +45 -23
  440. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
  441. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
  442. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
  443. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
  444. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
  445. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
  446. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
  447. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
  448. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
  449. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  450. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
  451. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
  452. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
  453. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  454. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  455. data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
  456. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  457. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
  458. data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
  459. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
  460. data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
  461. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
  462. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +3 -3
  463. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +28 -28
  464. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +4 -16
  465. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -1
  466. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +8 -0
  467. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -2
  468. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -64
  469. data/third_party/abseil-cpp/absl/synchronization/mutex.h +15 -6
  470. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
  471. data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
  472. data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
  473. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  474. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
  475. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
  476. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  477. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  478. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
  481. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  482. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
  483. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
  484. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
  485. data/third_party/abseil-cpp/absl/time/time.h +15 -16
  486. data/third_party/abseil-cpp/absl/types/internal/variant.h +4 -4
  487. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  488. data/third_party/abseil-cpp/absl/types/span.h +49 -36
  489. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  490. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  491. data/third_party/boringssl-with-bazel/err_data.c +340 -336
  492. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
  494. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +46 -7
  495. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
  496. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +90 -63
  497. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +60 -60
  498. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +179 -47
  499. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
  501. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
  502. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
  503. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
  504. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
  505. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +7 -5
  506. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -2
  507. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
  508. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  509. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  510. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
  511. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +55 -1
  512. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  513. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +31 -23
  514. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +435 -394
  515. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  516. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
  517. data/third_party/boringssl-with-bazel/src/ssl/internal.h +36 -1
  518. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
  519. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +67 -0
  520. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
  521. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +216 -11
  522. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +53 -11
  523. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +133 -39
  524. data/third_party/upb/upb/def.c +2169 -0
  525. data/third_party/upb/upb/def.h +330 -0
  526. data/third_party/upb/upb/def.hpp +525 -0
  527. data/third_party/upb/upb/reflection.c +391 -0
  528. data/third_party/upb/upb/reflection.h +168 -0
  529. data/third_party/upb/upb/text_encode.c +398 -0
  530. data/third_party/upb/upb/text_encode.h +35 -0
  531. metadata +227 -37
  532. data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +0 -571
  533. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
@@ -142,6 +142,16 @@ int x509_digest_verify_init(EVP_MD_CTX *ctx, X509_ALGOR *sigalg,
142
142
  return 0;
143
143
  }
144
144
 
145
+ /* The parameter should be an explicit NULL for RSA and omitted for ECDSA. For
146
+ * compatibility, we allow either for both algorithms. See b/167375496.
147
+ *
148
+ * TODO(davidben): Chromium's verifier allows both forms for RSA, but enforces
149
+ * ECDSA more strictly. Align with Chromium and add a flag for b/167375496. */
150
+ if (sigalg->parameter != NULL && sigalg->parameter->type != V_ASN1_NULL) {
151
+ OPENSSL_PUT_ERROR(X509, X509_R_INVALID_PARAMETER);
152
+ return 0;
153
+ }
154
+
145
155
  /* Otherwise, initialize with the digest from the OID. */
146
156
  const EVP_MD *digest = EVP_get_digestbynid(digest_nid);
147
157
  if (digest == NULL) {
@@ -98,13 +98,15 @@ X509_POLICY_DATA *policy_data_new(POLICYINFO *policy,
98
98
  } else
99
99
  id = NULL;
100
100
  ret = OPENSSL_malloc(sizeof(X509_POLICY_DATA));
101
- if (!ret)
101
+ if (!ret) {
102
+ OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
103
+ ASN1_OBJECT_free(id);
102
104
  return NULL;
105
+ }
103
106
  ret->expected_policy_set = sk_ASN1_OBJECT_new_null();
104
107
  if (!ret->expected_policy_set) {
105
108
  OPENSSL_free(ret);
106
- if (id)
107
- ASN1_OBJECT_free(id);
109
+ ASN1_OBJECT_free(id);
108
110
  return NULL;
109
111
  }
110
112
 
@@ -288,40 +288,40 @@ static GENERAL_NAMES *v2i_issuer_alt(X509V3_EXT_METHOD *method,
288
288
 
289
289
  static int copy_issuer(X509V3_CTX *ctx, GENERAL_NAMES *gens)
290
290
  {
291
- GENERAL_NAMES *ialt;
292
- GENERAL_NAME *gen;
293
- X509_EXTENSION *ext;
294
- int i;
295
- size_t j;
296
291
  if (ctx && (ctx->flags == CTX_TEST))
297
292
  return 1;
298
293
  if (!ctx || !ctx->issuer_cert) {
299
294
  OPENSSL_PUT_ERROR(X509V3, X509V3_R_NO_ISSUER_DETAILS);
300
- goto err;
295
+ return 0;
301
296
  }
302
- i = X509_get_ext_by_NID(ctx->issuer_cert, NID_subject_alt_name, -1);
297
+ int i = X509_get_ext_by_NID(ctx->issuer_cert, NID_subject_alt_name, -1);
303
298
  if (i < 0)
304
299
  return 1;
300
+
301
+ int ret = 0;
302
+ GENERAL_NAMES *ialt = NULL;
303
+ X509_EXTENSION *ext;
305
304
  if (!(ext = X509_get_ext(ctx->issuer_cert, i)) ||
306
305
  !(ialt = X509V3_EXT_d2i(ext))) {
307
306
  OPENSSL_PUT_ERROR(X509V3, X509V3_R_ISSUER_DECODE_ERROR);
308
307
  goto err;
309
308
  }
310
309
 
311
- for (j = 0; j < sk_GENERAL_NAME_num(ialt); j++) {
312
- gen = sk_GENERAL_NAME_value(ialt, j);
310
+ for (size_t j = 0; j < sk_GENERAL_NAME_num(ialt); j++) {
311
+ GENERAL_NAME *gen = sk_GENERAL_NAME_value(ialt, j);
313
312
  if (!sk_GENERAL_NAME_push(gens, gen)) {
314
313
  OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
315
314
  goto err;
316
315
  }
316
+ /* Ownership of |gen| has moved from |ialt| to |gens|. */
317
+ sk_GENERAL_NAME_set(ialt, j, NULL);
317
318
  }
318
- sk_GENERAL_NAME_free(ialt);
319
-
320
- return 1;
321
319
 
322
- err:
323
- return 0;
320
+ ret = 1;
324
321
 
322
+ err:
323
+ GENERAL_NAMES_free(ialt);
324
+ return ret;
325
325
  }
326
326
 
327
327
  static GENERAL_NAMES *v2i_subject_alt(X509V3_EXT_METHOD *method,
@@ -156,7 +156,7 @@ int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag,
156
156
  }
157
157
 
158
158
  int X509V3_extensions_print(BIO *bp, const char *title,
159
- STACK_OF(X509_EXTENSION) *exts,
159
+ const STACK_OF(X509_EXTENSION) *exts,
160
160
  unsigned long flag, int indent)
161
161
  {
162
162
  size_t i;
@@ -146,6 +146,30 @@ OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_gcm_siv(void);
146
146
  // https://tools.ietf.org/html/draft-irtf-cfrg-gcmsiv-02
147
147
  OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_gcm_siv(void);
148
148
 
149
+ // EVP_aead_aes_128_gcm_randnonce is AES-128 in Galois Counter Mode with
150
+ // internal nonce generation. The 12-byte nonce is appended to the tag
151
+ // and is generated internally. The "tag", for the purpurses of the API, is thus
152
+ // 12 bytes larger. The nonce parameter when using this AEAD must be
153
+ // zero-length. Since the nonce is random, a single key should not be used for
154
+ // more than 2^32 seal operations.
155
+ //
156
+ // Warning: this is for use for FIPS compliance only. It is probably not
157
+ // suitable for other uses. Using standard AES-GCM AEADs allows one to achieve
158
+ // the same effect, but gives more control over nonce storage.
159
+ OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_gcm_randnonce(void);
160
+
161
+ // EVP_aead_aes_256_gcm_randnonce is AES-256 in Galois Counter Mode with
162
+ // internal nonce generation. The 12-byte nonce is appended to the tag
163
+ // and is generated internally. The "tag", for the purpurses of the API, is thus
164
+ // 12 bytes larger. The nonce parameter when using this AEAD must be
165
+ // zero-length. Since the nonce is random, a single key should not be used for
166
+ // more than 2^32 seal operations.
167
+ //
168
+ // Warning: this is for use for FIPS compliance only. It is probably not
169
+ // suitable for other uses. Using standard AES-GCM AEADs allows one to achieve
170
+ // the same effect, but gives more control over nonce storage.
171
+ OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_gcm_randnonce(void);
172
+
149
173
  // EVP_aead_aes_128_ccm_bluetooth is AES-128-CCM with M=4 and L=2 (4-byte tags
150
174
  // and 13-byte nonces), as decribed in the Bluetooth Core Specification v5.0,
151
175
  // Volume 6, Part E, Section 1.
@@ -126,7 +126,7 @@
126
126
  // appropriate architecture-dependent feature bits set.
127
127
  // Read more: "ELF for the Arm® 64-bit Architecture"
128
128
 
129
- #if (__ARM_FEATURE_BTI_DEFAULT == 1)
129
+ #if defined(__ARM_FEATURE_BTI_DEFAULT) && __ARM_FEATURE_BTI_DEFAULT == 1
130
130
  #define GNU_PROPERTY_AARCH64_BTI (1 << 0) // Has Branch Target Identification
131
131
  #define AARCH64_VALID_CALL_TARGET hint #34 // BTI 'c'
132
132
  #else
@@ -134,19 +134,21 @@
134
134
  #define AARCH64_VALID_CALL_TARGET
135
135
  #endif
136
136
 
137
- #if ((__ARM_FEATURE_PAC_DEFAULT & 1) == 1) // Signed with A-key
137
+ #if defined(__ARM_FEATURE_PAC_DEFAULT) && \
138
+ (__ARM_FEATURE_PAC_DEFAULT & 1) == 1 // Signed with A-key
138
139
  #define GNU_PROPERTY_AARCH64_POINTER_AUTH \
139
140
  (1 << 1) // Has Pointer Authentication
140
141
  #define AARCH64_SIGN_LINK_REGISTER hint #25 // PACIASP
141
142
  #define AARCH64_VALIDATE_LINK_REGISTER hint #29 // AUTIASP
142
- #elif ((__ARM_FEATURE_PAC_DEFAULT & 2) == 2) // Signed with B-key
143
+ #elif defined(__ARM_FEATURE_PAC_DEFAULT) && \
144
+ (__ARM_FEATURE_PAC_DEFAULT & 2) == 2 // Signed with B-key
143
145
  #define GNU_PROPERTY_AARCH64_POINTER_AUTH \
144
146
  (1 << 1) // Has Pointer Authentication
145
147
  #define AARCH64_SIGN_LINK_REGISTER hint #27 // PACIBSP
146
148
  #define AARCH64_VALIDATE_LINK_REGISTER hint #31 // AUTIBSP
147
149
  #else
148
150
  #define GNU_PROPERTY_AARCH64_POINTER_AUTH 0 // No Pointer Authentication
149
- #if defined(__ARM_FEATURE_BTI_DEFAULT)
151
+ #if GNU_PROPERTY_AARCH64_BTI != 0
150
152
  #define AARCH64_SIGN_LINK_REGISTER AARCH64_VALID_CALL_TARGET
151
153
  #else
152
154
  #define AARCH64_SIGN_LINK_REGISTER
@@ -154,7 +156,7 @@
154
156
  #define AARCH64_VALIDATE_LINK_REGISTER
155
157
  #endif
156
158
 
157
- #if (GNU_PROPERTY_AARCH64_POINTER_AUTH != 0) || (GNU_PROPERTY_AARCH64_BTI != 0)
159
+ #if GNU_PROPERTY_AARCH64_POINTER_AUTH != 0 || GNU_PROPERTY_AARCH64_BTI != 0
158
160
  .pushsection note.gnu.property, "a";
159
161
  .balign 8;
160
162
  .long 4;
@@ -138,7 +138,10 @@ extern "C" {
138
138
  #define OPENSSL_WINDOWS
139
139
  #endif
140
140
 
141
- #if defined(__linux__)
141
+ // Trusty isn't Linux but currently defines __linux__. As a workaround, we
142
+ // exclude it here.
143
+ // TODO(b/169780122): Remove this workaround once Trusty no longer defines it.
144
+ #if defined(__linux__) && !defined(TRUSTY)
142
145
  #define OPENSSL_LINUX
143
146
  #endif
144
147
 
@@ -184,7 +187,7 @@ extern "C" {
184
187
  // A consumer may use this symbol in the preprocessor to temporarily build
185
188
  // against multiple revisions of BoringSSL at the same time. It is not
186
189
  // recommended to do so for longer than is necessary.
187
- #define BORINGSSL_API_VERSION 11
190
+ #define BORINGSSL_API_VERSION 12
188
191
 
189
192
  #if defined(BORINGSSL_SHARED_LIBRARY)
190
193
 
@@ -199,6 +199,10 @@ OPENSSL_EXPORT int BIO_should_io_special(const BIO *bio);
199
199
  // retried. The return value is one of the |BIO_RR_*| values.
200
200
  OPENSSL_EXPORT int BIO_get_retry_reason(const BIO *bio);
201
201
 
202
+ // BIO_set_retry_reason sets the special I/O operation that needs to be retried
203
+ // to |reason|, which should be one of the |BIO_RR_*| values.
204
+ OPENSSL_EXPORT void BIO_set_retry_reason(BIO *bio, int reason);
205
+
202
206
  // BIO_clear_flags ANDs |bio->flags| with the bitwise-complement of |flags|.
203
207
  OPENSSL_EXPORT void BIO_clear_flags(BIO *bio, int flags);
204
208
 
@@ -65,6 +65,12 @@ extern "C" {
65
65
 
66
66
 
67
67
  // DES.
68
+ //
69
+ // This module is deprecated and retained for legacy reasons only. It is slow
70
+ // and may leak key material with timing or cache side channels. Moreover,
71
+ // single-keyed DES is broken and can be brute-forced in under a day.
72
+ //
73
+ // Use a modern cipher, such as AES-GCM or ChaCha20-Poly1305, instead.
68
74
 
69
75
 
70
76
  typedef struct DES_cblock_st {
@@ -55,6 +55,9 @@
55
55
  #define OPENSSL_NO_RMD160
56
56
  #define OPENSSL_NO_SCTP
57
57
  #define OPENSSL_NO_SEED
58
+ #define OPENSSL_NO_SM2
59
+ #define OPENSSL_NO_SM3
60
+ #define OPENSSL_NO_SM4
58
61
  #define OPENSSL_NO_SRP
59
62
  #define OPENSSL_NO_SSL2
60
63
  #define OPENSSL_NO_SSL3
@@ -62,64 +62,63 @@
62
62
  #include <openssl/cipher.h>
63
63
  #include <openssl/digest.h>
64
64
  #include <openssl/evp.h>
65
- #include <openssl/stack.h>
66
65
  #include <openssl/pkcs7.h>
66
+ #include <openssl/stack.h>
67
67
  #include <openssl/x509.h>
68
68
 
69
- /* For compatibility with open-iscsi, which assumes that it can get
70
- * |OPENSSL_malloc| from pem.h or err.h */
69
+ // For compatibility with open-iscsi, which assumes that it can get
70
+ // |OPENSSL_malloc| from pem.h or err.h
71
71
  #include <openssl/crypto.h>
72
72
 
73
- #ifdef __cplusplus
73
+ #ifdef __cplusplus
74
74
  extern "C" {
75
75
  #endif
76
76
 
77
77
 
78
- #define PEM_BUFSIZE 1024
79
-
80
- #define PEM_STRING_X509_OLD "X509 CERTIFICATE"
81
- #define PEM_STRING_X509 "CERTIFICATE"
82
- #define PEM_STRING_X509_PAIR "CERTIFICATE PAIR"
83
- #define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE"
84
- #define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST"
85
- #define PEM_STRING_X509_REQ "CERTIFICATE REQUEST"
86
- #define PEM_STRING_X509_CRL "X509 CRL"
87
- #define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY"
88
- #define PEM_STRING_PUBLIC "PUBLIC KEY"
89
- #define PEM_STRING_RSA "RSA PRIVATE KEY"
90
- #define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY"
91
- #define PEM_STRING_DSA "DSA PRIVATE KEY"
92
- #define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY"
78
+ #define PEM_BUFSIZE 1024
79
+
80
+ #define PEM_STRING_X509_OLD "X509 CERTIFICATE"
81
+ #define PEM_STRING_X509 "CERTIFICATE"
82
+ #define PEM_STRING_X509_PAIR "CERTIFICATE PAIR"
83
+ #define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE"
84
+ #define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST"
85
+ #define PEM_STRING_X509_REQ "CERTIFICATE REQUEST"
86
+ #define PEM_STRING_X509_CRL "X509 CRL"
87
+ #define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY"
88
+ #define PEM_STRING_PUBLIC "PUBLIC KEY"
89
+ #define PEM_STRING_RSA "RSA PRIVATE KEY"
90
+ #define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY"
91
+ #define PEM_STRING_DSA "DSA PRIVATE KEY"
92
+ #define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY"
93
93
  #define PEM_STRING_EC "EC PRIVATE KEY"
94
- #define PEM_STRING_PKCS7 "PKCS7"
95
- #define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA"
96
- #define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY"
97
- #define PEM_STRING_PKCS8INF "PRIVATE KEY"
98
- #define PEM_STRING_DHPARAMS "DH PARAMETERS"
99
- #define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS"
100
- #define PEM_STRING_DSAPARAMS "DSA PARAMETERS"
94
+ #define PEM_STRING_PKCS7 "PKCS7"
95
+ #define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA"
96
+ #define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY"
97
+ #define PEM_STRING_PKCS8INF "PRIVATE KEY"
98
+ #define PEM_STRING_DHPARAMS "DH PARAMETERS"
99
+ #define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS"
100
+ #define PEM_STRING_DSAPARAMS "DSA PARAMETERS"
101
101
  #define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY"
102
- #define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY"
103
- #define PEM_STRING_CMS "CMS"
102
+ #define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY"
103
+ #define PEM_STRING_CMS "CMS"
104
104
 
105
- /* enc_type is one off */
106
- #define PEM_TYPE_ENCRYPTED 10
107
- #define PEM_TYPE_MIC_ONLY 20
108
- #define PEM_TYPE_MIC_CLEAR 30
109
- #define PEM_TYPE_CLEAR 40
105
+ // enc_type is one off
106
+ #define PEM_TYPE_ENCRYPTED 10
107
+ #define PEM_TYPE_MIC_ONLY 20
108
+ #define PEM_TYPE_MIC_CLEAR 30
109
+ #define PEM_TYPE_CLEAR 40
110
110
 
111
- /* These macros make the PEM_read/PEM_write functions easier to maintain and
112
- * write. Now they are all implemented with either:
113
- * IMPLEMENT_PEM_rw(...) or IMPLEMENT_PEM_rw_cb(...)
114
- */
111
+ // These macros make the PEM_read/PEM_write functions easier to maintain and
112
+ // write. Now they are all implemented with either:
113
+ // IMPLEMENT_PEM_rw(...) or IMPLEMENT_PEM_rw_cb(...)
115
114
 
116
115
  #ifdef OPENSSL_NO_FP_API
117
116
 
118
- #define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/
119
- #define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/
120
- #define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/
121
- #define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/
122
- #define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/
117
+ #define IMPLEMENT_PEM_read_fp(name, type, str, asn1) //
118
+ #define IMPLEMENT_PEM_write_fp(name, type, str, asn1) //
119
+ #define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) //
120
+ #define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) //
121
+ #define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) //
123
122
 
124
123
  #else
125
124
 
@@ -228,133 +227,178 @@ extern "C" {
228
227
  }
229
228
 
230
229
  #define IMPLEMENT_PEM_write(name, type, str, asn1) \
231
- IMPLEMENT_PEM_write_bio(name, type, str, asn1) \
232
- IMPLEMENT_PEM_write_fp(name, type, str, asn1)
230
+ IMPLEMENT_PEM_write_bio(name, type, str, asn1) \
231
+ IMPLEMENT_PEM_write_fp(name, type, str, asn1)
233
232
 
234
233
  #define IMPLEMENT_PEM_write_const(name, type, str, asn1) \
235
- IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \
236
- IMPLEMENT_PEM_write_fp_const(name, type, str, asn1)
234
+ IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \
235
+ IMPLEMENT_PEM_write_fp_const(name, type, str, asn1)
237
236
 
238
237
  #define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \
239
- IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \
240
- IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1)
238
+ IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \
239
+ IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1)
241
240
 
242
241
  #define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \
243
- IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \
244
- IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1)
242
+ IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \
243
+ IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1)
245
244
 
246
245
  #define IMPLEMENT_PEM_read(name, type, str, asn1) \
247
- IMPLEMENT_PEM_read_bio(name, type, str, asn1) \
248
- IMPLEMENT_PEM_read_fp(name, type, str, asn1)
246
+ IMPLEMENT_PEM_read_bio(name, type, str, asn1) \
247
+ IMPLEMENT_PEM_read_fp(name, type, str, asn1)
249
248
 
250
249
  #define IMPLEMENT_PEM_rw(name, type, str, asn1) \
251
- IMPLEMENT_PEM_read(name, type, str, asn1) \
252
- IMPLEMENT_PEM_write(name, type, str, asn1)
250
+ IMPLEMENT_PEM_read(name, type, str, asn1) \
251
+ IMPLEMENT_PEM_write(name, type, str, asn1)
253
252
 
254
253
  #define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \
255
- IMPLEMENT_PEM_read(name, type, str, asn1) \
256
- IMPLEMENT_PEM_write_const(name, type, str, asn1)
254
+ IMPLEMENT_PEM_read(name, type, str, asn1) \
255
+ IMPLEMENT_PEM_write_const(name, type, str, asn1)
257
256
 
258
257
  #define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \
259
- IMPLEMENT_PEM_read(name, type, str, asn1) \
260
- IMPLEMENT_PEM_write_cb(name, type, str, asn1)
258
+ IMPLEMENT_PEM_read(name, type, str, asn1) \
259
+ IMPLEMENT_PEM_write_cb(name, type, str, asn1)
261
260
 
262
- /* These are the same except they are for the declarations */
261
+ // These are the same except they are for the declarations
263
262
 
264
263
  #if defined(OPENSSL_NO_FP_API)
265
264
 
266
- #define DECLARE_PEM_read_fp(name, type) /**/
267
- #define DECLARE_PEM_write_fp(name, type) /**/
268
- #define DECLARE_PEM_write_cb_fp(name, type) /**/
265
+ #define DECLARE_PEM_read_fp(name, type) //
266
+ #define DECLARE_PEM_write_fp(name, type) //
267
+ #define DECLARE_PEM_write_cb_fp(name, type) //
269
268
 
270
269
  #else
271
270
 
272
- #define DECLARE_PEM_read_fp(name, type) \
273
- OPENSSL_EXPORT type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u);
271
+ #define DECLARE_PEM_read_fp(name, type) \
272
+ OPENSSL_EXPORT type *PEM_read_##name(FILE *fp, type **x, \
273
+ pem_password_cb *cb, void *u);
274
274
 
275
275
  #define DECLARE_PEM_write_fp(name, type) \
276
- OPENSSL_EXPORT int PEM_write_##name(FILE *fp, type *x);
276
+ OPENSSL_EXPORT int PEM_write_##name(FILE *fp, type *x);
277
277
 
278
278
  #define DECLARE_PEM_write_fp_const(name, type) \
279
- OPENSSL_EXPORT int PEM_write_##name(FILE *fp, const type *x);
279
+ OPENSSL_EXPORT int PEM_write_##name(FILE *fp, const type *x);
280
280
 
281
- #define DECLARE_PEM_write_cb_fp(name, type) \
282
- OPENSSL_EXPORT int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
283
- unsigned char *kstr, int klen, pem_password_cb *cb, void *u);
281
+ #define DECLARE_PEM_write_cb_fp(name, type) \
282
+ OPENSSL_EXPORT int PEM_write_##name( \
283
+ FILE *fp, type *x, const EVP_CIPHER *enc, unsigned char *kstr, int klen, \
284
+ pem_password_cb *cb, void *u);
284
285
 
285
286
  #endif
286
287
 
287
- #define DECLARE_PEM_read_bio(name, type) \
288
- OPENSSL_EXPORT type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u);
288
+ #define DECLARE_PEM_read_bio(name, type) \
289
+ OPENSSL_EXPORT type *PEM_read_bio_##name(BIO *bp, type **x, \
290
+ pem_password_cb *cb, void *u);
289
291
 
290
292
  #define DECLARE_PEM_write_bio(name, type) \
291
- OPENSSL_EXPORT int PEM_write_bio_##name(BIO *bp, type *x);
293
+ OPENSSL_EXPORT int PEM_write_bio_##name(BIO *bp, type *x);
292
294
 
293
295
  #define DECLARE_PEM_write_bio_const(name, type) \
294
- OPENSSL_EXPORT int PEM_write_bio_##name(BIO *bp, const type *x);
296
+ OPENSSL_EXPORT int PEM_write_bio_##name(BIO *bp, const type *x);
295
297
 
296
- #define DECLARE_PEM_write_cb_bio(name, type) \
297
- OPENSSL_EXPORT int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
298
- unsigned char *kstr, int klen, pem_password_cb *cb, void *u);
298
+ #define DECLARE_PEM_write_cb_bio(name, type) \
299
+ OPENSSL_EXPORT int PEM_write_bio_##name( \
300
+ BIO *bp, type *x, const EVP_CIPHER *enc, unsigned char *kstr, int klen, \
301
+ pem_password_cb *cb, void *u);
299
302
 
300
303
 
301
304
  #define DECLARE_PEM_write(name, type) \
302
- DECLARE_PEM_write_bio(name, type) \
303
- DECLARE_PEM_write_fp(name, type)
305
+ DECLARE_PEM_write_bio(name, type) \
306
+ DECLARE_PEM_write_fp(name, type)
304
307
 
305
308
  #define DECLARE_PEM_write_const(name, type) \
306
- DECLARE_PEM_write_bio_const(name, type) \
307
- DECLARE_PEM_write_fp_const(name, type)
309
+ DECLARE_PEM_write_bio_const(name, type) \
310
+ DECLARE_PEM_write_fp_const(name, type)
308
311
 
309
312
  #define DECLARE_PEM_write_cb(name, type) \
310
- DECLARE_PEM_write_cb_bio(name, type) \
311
- DECLARE_PEM_write_cb_fp(name, type)
313
+ DECLARE_PEM_write_cb_bio(name, type) \
314
+ DECLARE_PEM_write_cb_fp(name, type)
312
315
 
313
316
  #define DECLARE_PEM_read(name, type) \
314
- DECLARE_PEM_read_bio(name, type) \
315
- DECLARE_PEM_read_fp(name, type)
317
+ DECLARE_PEM_read_bio(name, type) \
318
+ DECLARE_PEM_read_fp(name, type)
316
319
 
317
320
  #define DECLARE_PEM_rw(name, type) \
318
- DECLARE_PEM_read(name, type) \
319
- DECLARE_PEM_write(name, type)
321
+ DECLARE_PEM_read(name, type) \
322
+ DECLARE_PEM_write(name, type)
320
323
 
321
324
  #define DECLARE_PEM_rw_const(name, type) \
322
- DECLARE_PEM_read(name, type) \
323
- DECLARE_PEM_write_const(name, type)
325
+ DECLARE_PEM_read(name, type) \
326
+ DECLARE_PEM_write_const(name, type)
324
327
 
325
328
  #define DECLARE_PEM_rw_cb(name, type) \
326
- DECLARE_PEM_read(name, type) \
327
- DECLARE_PEM_write_cb(name, type)
329
+ DECLARE_PEM_read(name, type) \
330
+ DECLARE_PEM_write_cb(name, type)
328
331
 
329
- /* "userdata": new with OpenSSL 0.9.4 */
332
+ // "userdata": new with OpenSSL 0.9.4
330
333
  typedef int pem_password_cb(char *buf, int size, int rwflag, void *userdata);
331
334
 
332
- OPENSSL_EXPORT int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher);
333
- OPENSSL_EXPORT int PEM_do_header (EVP_CIPHER_INFO *cipher, unsigned char *data,long *len, pem_password_cb *callback,void *u);
334
-
335
- OPENSSL_EXPORT int PEM_read_bio(BIO *bp, char **name, char **header, unsigned char **data,long *len);
336
- OPENSSL_EXPORT int PEM_write_bio(BIO *bp,const char *name, const char *hdr, const unsigned char *data, long len);
337
- OPENSSL_EXPORT int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, const char *name, BIO *bp, pem_password_cb *cb, void *u);
338
- OPENSSL_EXPORT void * PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, pem_password_cb *cb, void *u);
339
- OPENSSL_EXPORT int PEM_ASN1_write_bio(i2d_of_void *i2d,const char *name,BIO *bp, void *x, const EVP_CIPHER *enc,unsigned char *kstr,int klen, pem_password_cb *cb, void *u);
340
-
341
- OPENSSL_EXPORT STACK_OF(X509_INFO) * PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u);
342
- OPENSSL_EXPORT int PEM_X509_INFO_write_bio(BIO *bp,X509_INFO *xi, EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cd, void *u);
343
-
344
- OPENSSL_EXPORT int PEM_read(FILE *fp, char **name, char **header, unsigned char **data,long *len);
345
- OPENSSL_EXPORT int PEM_write(FILE *fp, const char *name, const char *hdr, const unsigned char *data, long len);
346
- OPENSSL_EXPORT void * PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, pem_password_cb *cb, void *u);
347
- OPENSSL_EXPORT int PEM_ASN1_write(i2d_of_void *i2d,const char *name,FILE *fp, void *x,const EVP_CIPHER *enc,unsigned char *kstr, int klen,pem_password_cb *callback, void *u);
348
- OPENSSL_EXPORT STACK_OF(X509_INFO) * PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u);
349
-
350
- /* PEM_def_callback treats |userdata| as a string and copies it into |buf|,
351
- * assuming its |size| is sufficient. Returns the length of the string, or 0
352
- * if there is not enough room. If either |buf| or |userdata| is NULL, 0 is
353
- * returned. Note that this is different from OpenSSL, which prompts for a
354
- * password. */
355
- OPENSSL_EXPORT int PEM_def_callback(char *buf, int size, int rwflag, void *userdata);
356
- OPENSSL_EXPORT void PEM_proc_type(char *buf, int type);
357
- OPENSSL_EXPORT void PEM_dek_info(char *buf, const char *type, int len, char *str);
335
+ OPENSSL_EXPORT int PEM_get_EVP_CIPHER_INFO(char *header,
336
+ EVP_CIPHER_INFO *cipher);
337
+ OPENSSL_EXPORT int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data,
338
+ long *len, pem_password_cb *callback, void *u);
339
+
340
+ // PEM_read_bio reads from |bp|, until the next PEM block. If one is found, it
341
+ // returns one and sets |*name|, |*header|, and |*data| to newly-allocated
342
+ // buffers containing the PEM type, the header block, and the decoded data,
343
+ // respectively. |*name| and |*header| are NUL-terminated C strings, while
344
+ // |*data| has |*len| bytes. The caller must release each of |*name|, |*header|,
345
+ // and |*data| with |OPENSSL_free| when done. If no PEM block is found, this
346
+ // function returns zero and pushes |PEM_R_NO_START_LINE| to the error queue. If
347
+ // one is found, but there is an error decoding it, it returns zero and pushes
348
+ // some other error to the error queue.
349
+ OPENSSL_EXPORT int PEM_read_bio(BIO *bp, char **name, char **header,
350
+ unsigned char **data, long *len);
351
+
352
+ // PEM_write_bio writes a PEM block to |bp|, containing |len| bytes from |data|
353
+ // as data. |name| and |hdr| are NUL-terminated C strings containing the PEM
354
+ // type and header block, respectively. This function returns zero on error and
355
+ // the number of bytes written on success.
356
+ OPENSSL_EXPORT int PEM_write_bio(BIO *bp, const char *name, const char *hdr,
357
+ const unsigned char *data, long len);
358
+
359
+ OPENSSL_EXPORT int PEM_bytes_read_bio(unsigned char **pdata, long *plen,
360
+ char **pnm, const char *name, BIO *bp,
361
+ pem_password_cb *cb, void *u);
362
+ OPENSSL_EXPORT void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name,
363
+ BIO *bp, void **x, pem_password_cb *cb,
364
+ void *u);
365
+ OPENSSL_EXPORT int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name,
366
+ BIO *bp, void *x, const EVP_CIPHER *enc,
367
+ unsigned char *kstr, int klen,
368
+ pem_password_cb *cb, void *u);
369
+
370
+ OPENSSL_EXPORT STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(
371
+ BIO *bp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u);
372
+ OPENSSL_EXPORT int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi,
373
+ EVP_CIPHER *enc, unsigned char *kstr,
374
+ int klen, pem_password_cb *cd,
375
+ void *u);
376
+
377
+ OPENSSL_EXPORT int PEM_read(FILE *fp, char **name, char **header,
378
+ unsigned char **data, long *len);
379
+ OPENSSL_EXPORT int PEM_write(FILE *fp, const char *name, const char *hdr,
380
+ const unsigned char *data, long len);
381
+ OPENSSL_EXPORT void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp,
382
+ void **x, pem_password_cb *cb, void *u);
383
+ OPENSSL_EXPORT int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp,
384
+ void *x, const EVP_CIPHER *enc,
385
+ unsigned char *kstr, int klen,
386
+ pem_password_cb *callback, void *u);
387
+ OPENSSL_EXPORT STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp,
388
+ STACK_OF(X509_INFO) *sk,
389
+ pem_password_cb *cb,
390
+ void *u);
391
+
392
+ // PEM_def_callback treats |userdata| as a string and copies it into |buf|,
393
+ // assuming its |size| is sufficient. Returns the length of the string, or 0
394
+ // if there is not enough room. If either |buf| or |userdata| is NULL, 0 is
395
+ // returned. Note that this is different from OpenSSL, which prompts for a
396
+ // password.
397
+ OPENSSL_EXPORT int PEM_def_callback(char *buf, int size, int rwflag,
398
+ void *userdata);
399
+ OPENSSL_EXPORT void PEM_proc_type(char *buf, int type);
400
+ OPENSSL_EXPORT void PEM_dek_info(char *buf, const char *type, int len,
401
+ char *str);
358
402
 
359
403
 
360
404
  DECLARE_PEM_rw(X509, X509)
@@ -397,22 +441,46 @@ DECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY)
397
441
 
398
442
  DECLARE_PEM_rw(PUBKEY, EVP_PKEY)
399
443
 
400
- OPENSSL_EXPORT int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x, int nid, char *kstr, int klen, pem_password_cb *cb, void *u);
401
- OPENSSL_EXPORT int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *, char *, int, pem_password_cb *, void *);
402
- OPENSSL_EXPORT int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc, char *kstr, int klen, pem_password_cb *cb, void *u);
403
- OPENSSL_EXPORT int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid, char *kstr, int klen, pem_password_cb *cb, void *u);
404
- OPENSSL_EXPORT EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u);
405
-
406
- OPENSSL_EXPORT int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, char *kstr, int klen, pem_password_cb *cb, void *u);
407
- OPENSSL_EXPORT int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid, char *kstr, int klen, pem_password_cb *cb, void *u);
408
- OPENSSL_EXPORT int PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid, char *kstr, int klen, pem_password_cb *cb, void *u);
409
-
410
- OPENSSL_EXPORT EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u);
411
-
412
- OPENSSL_EXPORT int PEM_write_PKCS8PrivateKey(FILE *fp,EVP_PKEY *x,const EVP_CIPHER *enc, char *kstr,int klen, pem_password_cb *cd, void *u);
413
-
414
-
415
- #ifdef __cplusplus
444
+ OPENSSL_EXPORT int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x,
445
+ int nid, char *kstr,
446
+ int klen,
447
+ pem_password_cb *cb,
448
+ void *u);
449
+ OPENSSL_EXPORT int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *,
450
+ const EVP_CIPHER *, char *,
451
+ int, pem_password_cb *,
452
+ void *);
453
+ OPENSSL_EXPORT int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x,
454
+ const EVP_CIPHER *enc, char *kstr,
455
+ int klen, pem_password_cb *cb,
456
+ void *u);
457
+ OPENSSL_EXPORT int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid,
458
+ char *kstr, int klen,
459
+ pem_password_cb *cb, void *u);
460
+ OPENSSL_EXPORT EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x,
461
+ pem_password_cb *cb, void *u);
462
+
463
+ OPENSSL_EXPORT int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x,
464
+ const EVP_CIPHER *enc, char *kstr,
465
+ int klen, pem_password_cb *cb,
466
+ void *u);
467
+ OPENSSL_EXPORT int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid,
468
+ char *kstr, int klen,
469
+ pem_password_cb *cb, void *u);
470
+ OPENSSL_EXPORT int PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid,
471
+ char *kstr, int klen,
472
+ pem_password_cb *cb, void *u);
473
+
474
+ OPENSSL_EXPORT EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x,
475
+ pem_password_cb *cb, void *u);
476
+
477
+ OPENSSL_EXPORT int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x,
478
+ const EVP_CIPHER *enc, char *kstr,
479
+ int klen, pem_password_cb *cd,
480
+ void *u);
481
+
482
+
483
+ #ifdef __cplusplus
416
484
  }
417
485
  #endif
418
486
 
@@ -432,4 +500,4 @@ OPENSSL_EXPORT int PEM_write_PKCS8PrivateKey(FILE *fp,EVP_PKEY *x,const EVP_CIPH
432
500
  #define PEM_R_UNSUPPORTED_CIPHER 113
433
501
  #define PEM_R_UNSUPPORTED_ENCRYPTION 114
434
502
 
435
- #endif /* OPENSSL_HEADER_PEM_H */
503
+ #endif // OPENSSL_HEADER_PEM_H