#include <grpc/support/port_platform.h>
#include "src/core/lib/security/credentials/oauth2/oauth2_credentials.h"
#include <stdlib.h>
#include <string.h>
#include <algorithm>
#include <atomic>
#include <map>
#include <memory>
#include <vector>
#include "absl/status/status.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h"
#include "absl/strings/str_join.h"
#include "absl/strings/string_view.h"
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
#include <grpc/slice.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
#include <grpc/support/time.h>
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/status_helper.h"
#include "src/core/lib/http/httpcli_ssl_credentials.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/load_file.h"
#include "src/core/lib/iomgr/pollset_set.h"
#include "src/core/lib/json/json.h"
#include "src/core/lib/promise/context.h"
#include "src/core/lib/promise/poll.h"
#include "src/core/lib/promise/promise.h"
#include "src/core/lib/security/util/json_util.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/transport/error_utils.h"
#include "src/core/lib/transport/metadata_batch.h"
#include "src/core/lib/uri/uri_parser.h"
Json;
int grpc_auth_refresh_token_is_valid(
const grpc_auth_refresh_token* refresh_token) { … }
grpc_auth_refresh_token grpc_auth_refresh_token_create_from_json(
const Json& json) { … }
grpc_auth_refresh_token grpc_auth_refresh_token_create_from_string(
const char* json_string) { … }
void grpc_auth_refresh_token_destruct(grpc_auth_refresh_token* refresh_token) { … }
grpc_oauth2_token_fetcher_credentials::
~grpc_oauth2_token_fetcher_credentials() { … }
grpc_credentials_status
grpc_oauth2_token_fetcher_credentials_parse_server_response(
const grpc_http_response* response,
absl::optional<grpc_core::Slice>* token_value,
grpc_core::Duration* token_lifetime) { … }
static void on_oauth2_token_fetcher_http_response(void* user_data,
grpc_error_handle error) { … }
void grpc_oauth2_token_fetcher_credentials::on_http_response(
grpc_credentials_metadata_request* r, grpc_error_handle error) { … }
grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
grpc_oauth2_token_fetcher_credentials::GetRequestMetadata(
grpc_core::ClientMetadataHandle initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs*) { … }
grpc_oauth2_token_fetcher_credentials::grpc_oauth2_token_fetcher_credentials()
: … { … }
std::string grpc_oauth2_token_fetcher_credentials::debug_string() { … }
grpc_core::UniqueTypeName grpc_oauth2_token_fetcher_credentials::type() const { … }
namespace {
class grpc_compute_engine_token_fetcher_credentials
: public grpc_oauth2_token_fetcher_credentials { … };
}
grpc_call_credentials* grpc_google_compute_engine_credentials_create(
void* reserved) { … }
grpc_google_refresh_token_credentials::
~grpc_google_refresh_token_credentials() { … }
void grpc_google_refresh_token_credentials::fetch_oauth2(
grpc_credentials_metadata_request* metadata_req,
grpc_polling_entity* pollent, grpc_iomgr_cb_func response_cb,
grpc_core::Timestamp deadline) { … }
grpc_google_refresh_token_credentials::grpc_google_refresh_token_credentials(
grpc_auth_refresh_token refresh_token)
: … { … }
grpc_core::RefCountedPtr<grpc_call_credentials>
grpc_refresh_token_credentials_create_from_auth_refresh_token(
grpc_auth_refresh_token refresh_token) { … }
std::string grpc_google_refresh_token_credentials::debug_string() { … }
grpc_core::UniqueTypeName grpc_google_refresh_token_credentials::type() const { … }
static std::string create_loggable_refresh_token(
grpc_auth_refresh_token* token) { … }
grpc_call_credentials* grpc_google_refresh_token_credentials_create(
const char* json_refresh_token, void* reserved) { … }
namespace grpc_core {
namespace {
void MaybeAddToBody(const char* field_name, const char* field,
std::vector<std::string>* body) { … }
grpc_error_handle LoadTokenFile(const char* path, grpc_slice* token) { … }
class StsTokenFetcherCredentials
: public grpc_oauth2_token_fetcher_credentials { … };
}
absl::StatusOr<URI> ValidateStsCredentialsOptions(
const grpc_sts_credentials_options* options) { … }
}
grpc_call_credentials* grpc_sts_credentials_create(
const grpc_sts_credentials_options* options, void* reserved) { … }
grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
grpc_access_token_credentials::GetRequestMetadata(
grpc_core::ClientMetadataHandle initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs*) { … }
grpc_core::UniqueTypeName grpc_access_token_credentials::Type() { … }
grpc_access_token_credentials::grpc_access_token_credentials(
const char* access_token)
: … { … }
std::string grpc_access_token_credentials::debug_string() { … }
grpc_call_credentials* grpc_access_token_credentials_create(
const char* access_token, void* reserved) { … }