Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package aws-c-auth for openSUSE:Factory checked in at 2025-12-31 10:47:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/aws-c-auth (Old) and /work/SRC/openSUSE:Factory/.aws-c-auth.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-c-auth" Wed Dec 31 10:47:48 2025 rev:23 rq:1324862 version:0.9.4 Changes: -------- --- /work/SRC/openSUSE:Factory/aws-c-auth/aws-c-auth.changes 2025-12-03 14:13:54.810075439 +0100 +++ /work/SRC/openSUSE:Factory/.aws-c-auth.new.1928/aws-c-auth.changes 2025-12-31 10:48:27.273005491 +0100 @@ -1,0 +2,6 @@ +Tue Dec 9 08:43:22 UTC 2025 - John Paul Adrian Glaubitz <[email protected]> + +- Update to version 0.9.4 + * Add proxy config for credential providers by @azkrishpy in (#281) + +------------------------------------------------------------------- Old: ---- v0.9.3.tar.gz New: ---- v0.9.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ aws-c-auth.spec ++++++ --- /var/tmp/diff_new_pack.3LtFkt/_old 2025-12-31 10:48:28.049037247 +0100 +++ /var/tmp/diff_new_pack.3LtFkt/_new 2025-12-31 10:48:28.049037247 +0100 @@ -20,7 +20,7 @@ %define library_pkg 1_0_0 %define library_soversion 1 Name: aws-c-auth -Version: 0.9.3 +Version: 0.9.4 Release: 0 Summary: AWS C99 library implementation of AWS client-side authentication License: Apache-2.0 ++++++ v0.9.3.tar.gz -> v0.9.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/include/aws/auth/aws_imds_client.h new/aws-c-auth-0.9.4/include/aws/auth/aws_imds_client.h --- old/aws-c-auth-0.9.3/include/aws/auth/aws_imds_client.h 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/include/aws/auth/aws_imds_client.h 2025-12-06 03:46:00.000000000 +0100 @@ -44,6 +44,12 @@ struct aws_retry_strategy *retry_strategy; /* + * (Optional) Settings propagated down to http connection manager to choose proxy options from environment. Read + * aws_http_credentials_provider.h for more information. + */ + const struct proxy_env_var_settings *proxy_ev_settings; + + /* * What version of the imds protocol to use * * Defaults to IMDS_PROTOCOL_V2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/include/aws/auth/credentials.h new/aws-c-auth-0.9.4/include/aws/auth/credentials.h --- old/aws-c-auth-0.9.3/include/aws/auth/credentials.h 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/include/aws/auth/credentials.h 2025-12-06 03:46:00.000000000 +0100 @@ -10,6 +10,7 @@ #include <aws/common/array_list.h> #include <aws/common/atomics.h> #include <aws/common/linked_list.h> +#include <aws/http/proxy.h> #include <aws/io/io.h> AWS_PUSH_SANE_WARNING_LEVEL @@ -224,6 +225,12 @@ /* For mocking the http layer in tests, leave NULL otherwise */ struct aws_auth_http_system_vtable *function_table; + + /* + * (Optional) Settings propagated down to http connection manager to choose proxy options from environment. Read + * aws_http_credentials_provider.h for more information. + */ + const struct proxy_env_var_settings *proxy_ev_settings; }; /* @@ -259,6 +266,12 @@ */ struct aws_tls_ctx *tls_ctx; + /* + * (Optional) Settings propagated down to http connection manager to choose proxy options from environment. Read + * aws_http_credentials_provider.h for more information. + */ + const struct proxy_env_var_settings *proxy_ev_settings; + /* For mocking the http layer in tests, leave NULL otherwise */ struct aws_auth_http_system_vtable *function_table; }; @@ -310,6 +323,12 @@ */ struct aws_tls_ctx *tls_ctx; + /* + * (Optional) Settings propagated down to http connection manager to choose proxy options from environment. Read + * aws_http_credentials_provider.h for more information. + */ + const struct proxy_env_var_settings *proxy_ev_settings; + /* For mocking the http layer in tests, leave NULL otherwise */ struct aws_auth_http_system_vtable *function_table; @@ -354,6 +373,12 @@ */ const struct aws_http_proxy_options *proxy_options; + /** + * (Optional) Settings propagated down to http connection manager to choose proxy options from environment. Read + * aws_http_credentials_provider.h for more information. + */ + const struct proxy_env_var_settings *proxy_ev_settings; + /* For mocking the http layer in tests, leave NULL otherwise */ struct aws_auth_http_system_vtable *function_table; }; @@ -401,6 +426,12 @@ */ struct aws_tls_ctx *tls_ctx; + /* + * (Optional) Settings propagated down to http connection manager to choose proxy options from environment. Read + * aws_http_credentials_provider.h for more information. + */ + const struct proxy_env_var_settings *proxy_ev_settings; + /* For mocking the http layer in tests, leave NULL otherwise */ struct aws_auth_http_system_vtable *function_table; @@ -470,6 +501,12 @@ */ struct aws_tls_ctx *tls_ctx; + /* + * (Optional) Settings propagated down to http connection manager to choose proxy options from environment. Read + * aws_http_credentials_provider.h for more information. + */ + const struct proxy_env_var_settings *proxy_ev_settings; + /* For mocking, leave NULL otherwise */ struct aws_auth_http_system_vtable *function_table; aws_io_clock_fn *system_clock_fn; @@ -526,6 +563,12 @@ const struct aws_http_proxy_options *http_proxy_options; /** + * (Optional) Settings propagated down to http connection manager to choose proxy options from environment. Read + * aws_http_credentials_provider.h for more information. + */ + const struct proxy_env_var_settings *proxy_ev_settings; + + /** * (Optional) * Uses a cached config file profile collection (~/.aws/config). You can also pass a merged profile collection, * which contains both a config file and a credentials file. @@ -628,6 +671,12 @@ * If enabled, the Environment Credentials Provider is not added to the chain. */ bool skip_environment_credentials_provider; + + /* + * (Optional) Settings propagated down to http connection manager to choose proxy options from environment. Read + * aws_http_credentials_provider.h for more information. + */ + const struct proxy_env_var_settings *proxy_ev_settings; }; typedef int(aws_credentials_provider_delegate_get_credentials_fn)( @@ -722,6 +771,12 @@ */ const struct aws_http_proxy_options *http_proxy_options; + /** + * (Optional) Settings propagated down to http connection manager to choose proxy options from environment. Read + * aws_http_credentials_provider.h for more information. + */ + const struct proxy_env_var_settings *proxy_ev_settings; + /* For mocking the http layer in tests, leave NULL otherwise */ struct aws_auth_http_system_vtable *function_table; @@ -795,6 +850,12 @@ */ struct aws_tls_ctx *tls_ctx; + /* + * (Optional) Settings propagated down to http connection manager to choose proxy options from environment. Read + * aws_http_credentials_provider.h for more information. + */ + const struct proxy_env_var_settings *proxy_ev_settings; + /* For mocking, leave NULL otherwise */ struct aws_auth_http_system_vtable *function_table; aws_io_clock_fn *system_clock_fn; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/include/aws/auth/private/aws_http_credentials_provider.h new/aws-c-auth-0.9.4/include/aws/auth/private/aws_http_credentials_provider.h --- old/aws-c-auth-0.9.3/include/aws/auth/private/aws_http_credentials_provider.h 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/include/aws/auth/private/aws_http_credentials_provider.h 2025-12-06 03:46:00.000000000 +0100 @@ -50,6 +50,15 @@ */ struct aws_retry_strategy *retry_strategy; + /* + * Optional. + * Configuration for fetching proxy configuration from environment for http connections. + * By Default proxy_ev_settings.aws_http_proxy_env_var_type is set to AWS_HPEV_DISABLE which means we don't read + * proxy configuration from environment. If proxy_options exist for a particular credential provider and is set by + * the user, it overrides what is set from the environment. + */ + const struct proxy_env_var_settings *proxy_ev_settings; + /* For mocking the http layer in tests, leave NULL otherwise */ const struct aws_auth_http_system_vtable *function_table; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/source/aws_http_credentials_provider.c new/aws-c-auth-0.9.4/source/aws_http_credentials_provider.c --- old/aws-c-auth-0.9.3/source/aws_http_credentials_provider.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/source/aws_http_credentials_provider.c 2025-12-06 03:46:00.000000000 +0100 @@ -419,6 +419,7 @@ manager_options.shutdown_complete_callback = s_on_connection_manager_shutdown; manager_options.shutdown_complete_user_data = provider; manager_options.tls_connection_options = &tls_connection_options; + manager_options.proxy_ev_settings = options->proxy_ev_settings; impl->function_table = options->function_table; if (impl->function_table == NULL) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/source/aws_imds_client.c new/aws-c-auth-0.9.4/source/aws_imds_client.c --- old/aws-c-auth-0.9.3/source/aws_imds_client.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/source/aws_imds_client.c 2025-12-06 03:46:00.000000000 +0100 @@ -168,6 +168,7 @@ manager_options.max_connections = 10; manager_options.shutdown_complete_callback = s_on_connection_manager_shutdown; manager_options.shutdown_complete_user_data = client; + manager_options.proxy_ev_settings = options->proxy_ev_settings; client->connection_manager = client->function_table->aws_http_connection_manager_new(allocator, &manager_options); if (!client->connection_manager) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/source/credentials_provider_cognito.c new/aws-c-auth-0.9.4/source/credentials_provider_cognito.c --- old/aws-c-auth-0.9.3/source/credentials_provider_cognito.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/source/credentials_provider_cognito.c 2025-12-06 03:46:00.000000000 +0100 @@ -817,6 +817,7 @@ manager_options.shutdown_complete_user_data = provider; manager_options.tls_connection_options = &tls_connection_options; manager_options.proxy_options = options->http_proxy_options; + manager_options.proxy_ev_settings = options->proxy_ev_settings; impl->function_table = options->function_table; if (impl->function_table == NULL) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/source/credentials_provider_default_chain.c new/aws-c-auth-0.9.4/source/credentials_provider_default_chain.c --- old/aws-c-auth-0.9.3/source/credentials_provider_default_chain.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/source/credentials_provider_default_chain.c 2025-12-06 03:46:00.000000000 +0100 @@ -35,13 +35,15 @@ struct aws_allocator *allocator, const struct aws_credentials_provider_shutdown_options *shutdown_options, struct aws_client_bootstrap *bootstrap, - struct aws_tls_ctx *tls_ctx) { + struct aws_tls_ctx *tls_ctx, + const struct proxy_env_var_settings *proxy_ev_settings) { /* Try to create the ECS provider. This will fail if its environment variables aren't set */ struct aws_credentials_provider_ecs_environment_options ecs_options = { .shutdown_options = *shutdown_options, .bootstrap = bootstrap, .tls_ctx = tls_ctx, + .proxy_ev_settings = proxy_ev_settings, }; struct aws_credentials_provider *ecs_provider = aws_credentials_provider_new_ecs_from_environment(allocator, &ecs_options); @@ -64,6 +66,7 @@ struct aws_credentials_provider_imds_options imds_options = { .shutdown_options = *shutdown_options, .bootstrap = bootstrap, + .proxy_ev_settings = proxy_ev_settings, }; return aws_credentials_provider_new_imds(allocator, &imds_options); } @@ -301,6 +304,7 @@ sts_options.shutdown_options = sub_provider_shutdown_options; sts_options.config_profile_collection_cached = options->profile_collection_cached; sts_options.profile_name_override = options->profile_name_override; + sts_options.proxy_ev_settings = options->proxy_ev_settings; sts_provider = aws_credentials_provider_new_sts_web_identity(allocator, &sts_options); if (sts_provider != NULL) { providers[index++] = sts_provider; @@ -311,7 +315,7 @@ /* Providers that will always make a network call unless explicitly disabled... */ ecs_or_imds_provider = s_aws_credentials_provider_new_ecs_or_imds( - allocator, &sub_provider_shutdown_options, options->bootstrap, tls_ctx); + allocator, &sub_provider_shutdown_options, options->bootstrap, tls_ctx, options->proxy_ev_settings); if (ecs_or_imds_provider != NULL) { providers[index++] = ecs_or_imds_provider; /* 1 shutdown call from the imds or ecs provider's shutdown */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/source/credentials_provider_ecs.c new/aws-c-auth-0.9.4/source/credentials_provider_ecs.c --- old/aws-c-auth-0.9.3/source/credentials_provider_ecs.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/source/credentials_provider_ecs.c 2025-12-06 03:46:00.000000000 +0100 @@ -799,6 +799,7 @@ manager_options.shutdown_complete_callback = s_on_connection_manager_shutdown; manager_options.shutdown_complete_user_data = provider; manager_options.tls_connection_options = options->tls_ctx ? &tls_connection_options : NULL; + manager_options.proxy_ev_settings = options->proxy_ev_settings; impl->function_table = options->function_table; if (impl->function_table == NULL) { @@ -869,6 +870,7 @@ .shutdown_options = options->shutdown_options, .bootstrap = options->bootstrap, .function_table = options->function_table, + .proxy_ev_settings = options->proxy_ev_settings, }; struct aws_string *ecs_env_token_file_path = NULL; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/source/credentials_provider_imds.c new/aws-c-auth-0.9.4/source/credentials_provider_imds.c --- old/aws-c-auth-0.9.3/source/credentials_provider_imds.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/source/credentials_provider_imds.c 2025-12-06 03:46:00.000000000 +0100 @@ -90,6 +90,7 @@ .shutdown_callback = s_on_imds_client_shutdown, .shutdown_user_data = provider, }, + .proxy_ev_settings = options->proxy_ev_settings, }; impl->client = aws_imds_client_new(allocator, &client_options); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/source/credentials_provider_login.c new/aws-c-auth-0.9.4/source/credentials_provider_login.c --- old/aws-c-auth-0.9.3/source/credentials_provider_login.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/source/credentials_provider_login.c 2025-12-06 03:46:00.000000000 +0100 @@ -463,6 +463,7 @@ http_options.function_table = options->function_table; http_options.endpoint = aws_byte_cursor_from_string(parameters->endpoint); http_options.max_connections = 2; + http_options.proxy_ev_settings = options->proxy_ev_settings; login_user_data->parameters = parameters; login_user_data->request_vtable = &s_login_request_vtable; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/source/credentials_provider_sso.c new/aws-c-auth-0.9.4/source/credentials_provider_sso.c --- old/aws-c-auth-0.9.3/source/credentials_provider_sso.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/source/credentials_provider_sso.c 2025-12-06 03:46:00.000000000 +0100 @@ -426,6 +426,7 @@ http_options->function_table = options->function_table; http_options->endpoint = aws_byte_cursor_from_string(parameters->endpoint); http_options->max_connections = 2; + http_options->proxy_ev_settings = options->proxy_ev_settings; sso_user_data->parameters = parameters; sso_user_data->request_vtable = &s_sso_request_vtable; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/source/credentials_provider_sts.c new/aws-c-auth-0.9.4/source/credentials_provider_sts.c --- old/aws-c-auth-0.9.3/source/credentials_provider_sts.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/source/credentials_provider_sts.c 2025-12-06 03:46:00.000000000 +0100 @@ -954,6 +954,7 @@ .socket_options = &socket_options, .tls_connection_options = &tls_connection_options, .proxy_options = options->http_proxy_options, + .proxy_ev_settings = options->proxy_ev_settings, }; impl->connection_manager = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/source/credentials_provider_sts_web_identity.c new/aws-c-auth-0.9.4/source/credentials_provider_sts_web_identity.c --- old/aws-c-auth-0.9.3/source/credentials_provider_sts_web_identity.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/source/credentials_provider_sts_web_identity.c 2025-12-06 03:46:00.000000000 +0100 @@ -1166,6 +1166,7 @@ manager_options.shutdown_complete_callback = s_on_connection_manager_shutdown; manager_options.shutdown_complete_user_data = provider; manager_options.tls_connection_options = &tls_connection_options; + manager_options.proxy_ev_settings = options->proxy_ev_settings; impl->function_table = options->function_table; if (impl->function_table == NULL) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/source/credentials_provider_x509.c new/aws-c-auth-0.9.4/source/credentials_provider_x509.c --- old/aws-c-auth-0.9.3/source/credentials_provider_x509.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/source/credentials_provider_x509.c 2025-12-06 03:46:00.000000000 +0100 @@ -583,6 +583,7 @@ manager_options.shutdown_complete_user_data = provider; manager_options.tls_connection_options = &impl->tls_connection_options; manager_options.proxy_options = options->proxy_options; + manager_options.proxy_ev_settings = options->proxy_ev_settings; impl->function_table = options->function_table; if (impl->function_table == NULL) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/tests/CMakeLists.txt new/aws-c-auth-0.9.4/tests/CMakeLists.txt --- old/aws-c-auth-0.9.3/tests/CMakeLists.txt 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/tests/CMakeLists.txt 2025-12-06 03:46:00.000000000 +0100 @@ -41,6 +41,7 @@ add_test_case(credentials_provider_imds_success_multi_part_role_name) add_test_case(credentials_provider_imds_success_multi_part_doc) add_test_case(credentials_provider_imds_real_new_destroy) +add_net_test_case(credentials_provider_imds_proxy_routing_enabled_test) if(AWS_BUILDING_ON_EC2) add_test_case(credentials_provider_imds_real_success) @@ -58,6 +59,7 @@ add_net_test_case(credentials_provider_ecs_no_auth_token_success) add_net_test_case(credentials_provider_ecs_success_multi_part_doc) add_net_test_case(credentials_provider_ecs_real_new_destroy) +add_net_test_case(credentials_provider_ecs_proxy_routing_enabled_test) if(AWS_BUILDING_ON_ECS) add_test_case(credentials_provider_ecs_real_success) @@ -70,6 +72,7 @@ add_test_case(credentials_provider_x509_basic_success) add_test_case(credentials_provider_x509_success_multi_part_doc) add_test_case(credentials_provider_x509_real_new_destroy) +add_test_case(credentials_provider_x509_proxy_routing_enabled_test) add_net_test_case(credentials_provider_sts_web_identity_new_destroy_from_parameters) add_net_test_case(credentials_provider_sts_web_identity_new_destroy_from_env) @@ -86,6 +89,7 @@ add_net_test_case(credentials_provider_sts_web_identity_basic_success_config) add_net_test_case(credentials_provider_sts_web_identity_success_multi_part_doc) add_net_test_case(credentials_provider_sts_web_identity_real_new_destroy) +add_net_test_case(credentials_provider_sts_web_identity_proxy_routing_enabled_test) add_net_test_case(credentials_provider_sts_direct_config_succeeds) add_net_test_case(credentials_provider_sts_direct_config_with_external_id_succeeds) @@ -108,6 +112,7 @@ add_net_test_case(credentials_provider_sts_from_profile_config_manual_tls_succeeds) add_net_test_case(credentials_provider_sts_from_profile_config_environment_succeeds) add_net_test_case(credentials_provider_sts_cache_expiration_conflict) +add_net_test_case(credentials_provider_sts_proxy_routing_enabled_test) add_test_case(credentials_provider_process_new_destroy_from_config) add_test_case(credentials_provider_process_new_destroy_from_config_without_token) @@ -130,6 +135,7 @@ add_net_test_case(credentials_provider_cognito_failure_dynamic_token_pairs) add_net_test_case(credentials_provider_cognito_failure_dynamic_token_pairs_completion) add_net_test_case(credentials_provider_cognito_success_dynamic_token_pairs) +add_net_test_case(credentials_provider_cognito_proxy_routing_enabled_test) if(AWS_HAS_CI_ENVIRONMENT) add_net_test_case(credentials_provider_cognito_success_unauthenticated) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/tests/credentials_provider_cognito_tests.c new/aws-c-auth-0.9.4/tests/credentials_provider_cognito_tests.c --- old/aws-c-auth-0.9.3/tests/credentials_provider_cognito_tests.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/tests/credentials_provider_cognito_tests.c 2025-12-06 03:46:00.000000000 +0100 @@ -53,6 +53,8 @@ void (*manager_destructor_fn)(void *); void *manager_destructor_user_data; + + struct proxy_env_var_settings *proxy_config; }; static struct aws_mock_web_credential_provider_tester s_tester; @@ -64,6 +66,12 @@ (void)allocator; (void)options; + if (s_tester.proxy_config != NULL) { + AWS_FATAL_ASSERT(options->proxy_ev_settings->env_var_type == s_tester.proxy_config->env_var_type); + AWS_FATAL_ASSERT(options->proxy_ev_settings->connection_type == s_tester.proxy_config->connection_type); + AWS_FATAL_ASSERT(options->proxy_ev_settings->tls_options == s_tester.proxy_config->tls_options); + } + s_tester.manager_destructor_fn = options->shutdown_complete_callback; s_tester.manager_destructor_user_data = options->shutdown_complete_user_data; @@ -816,3 +824,41 @@ AWS_TEST_CASE( credentials_provider_cognito_success_dynamic_token_pairs, s_credentials_provider_cognito_success_dynamic_token_pairs_fn); + +static int s_credentials_provider_cognito_proxy_routing_enabled_test(struct aws_allocator *allocator, void *ctx) { + (void)ctx; + + s_aws_cognito_tester_init(allocator); + + struct proxy_env_var_settings proxy_config = { + .env_var_type = AWS_HPEV_ENABLE, + }; + + s_tester.proxy_config = &proxy_config; + + struct aws_credentials_provider_cognito_options options = { + .bootstrap = s_tester.bootstrap, + .function_table = &s_mock_function_table, + .endpoint = aws_byte_cursor_from_c_str("somewhere.amazonaws.com"), + .identity = aws_byte_cursor_from_c_str("someone"), + .tls_ctx = s_tester.ctx, + .proxy_ev_settings = &proxy_config, + }; + + struct aws_credentials_provider *provider = aws_credentials_provider_new_cognito(allocator, &options); + + aws_credentials_provider_get_credentials(provider, s_get_credentials_callback, NULL); + + s_aws_wait_for_credentials_result(); + + ASSERT_TRUE(s_tester.credentials == NULL); + + aws_credentials_provider_release(provider); + + s_aws_cognito_tester_cleanup(); + + return 0; +} +AWS_TEST_CASE( + credentials_provider_cognito_proxy_routing_enabled_test, + s_credentials_provider_cognito_proxy_routing_enabled_test); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/tests/credentials_provider_ecs_tests.c new/aws-c-auth-0.9.4/tests/credentials_provider_ecs_tests.c --- old/aws-c-auth-0.9.3/tests/credentials_provider_ecs_tests.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/tests/credentials_provider_ecs_tests.c 2025-12-06 03:46:00.000000000 +0100 @@ -9,6 +9,7 @@ #include <aws/auth/credentials.h> #include <aws/auth/private/credentials_utils.h> +#include <aws/common/byte_buf.h> #include <aws/common/clock.h> #include <aws/common/condition_variable.h> #include <aws/common/date_time.h> @@ -16,6 +17,7 @@ #include <aws/common/string.h> #include <aws/common/thread.h> #include <aws/common/uri.h> +#include <aws/http/proxy.h> #include <aws/http/request_response.h> #include <aws/http/status_code.h> #include <aws/io/channel_bootstrap.h> @@ -56,6 +58,8 @@ struct aws_host_resolver *host_resolver; struct aws_client_bootstrap *bootstrap; struct aws_tls_ctx *tls_ctx; + + struct proxy_env_var_settings *proxy_config; }; static struct aws_mock_ecs_tester s_tester; @@ -95,6 +99,12 @@ s_tester.selected_tls = options->tls_connection_options != NULL; aws_mutex_unlock(&s_tester.lock); + if (s_tester.proxy_config != NULL) { + AWS_FATAL_ASSERT(options->proxy_ev_settings->env_var_type == s_tester.proxy_config->env_var_type); + AWS_FATAL_ASSERT(options->proxy_ev_settings->connection_type == s_tester.proxy_config->connection_type); + AWS_FATAL_ASSERT(options->proxy_ev_settings->tls_options == s_tester.proxy_config->tls_options); + } + return (struct aws_http_connection_manager *)1; } @@ -1223,3 +1233,50 @@ } AWS_TEST_CASE(credentials_provider_ecs_real_success, s_credentials_provider_ecs_real_success); + +static int s_credentials_provider_ecs_proxy_routing_enabled_test(struct aws_allocator *allocator, void *ctx) { + (void)ctx; + + s_aws_ecs_tester_init(allocator); + + struct proxy_env_var_settings proxy_config = { + .env_var_type = AWS_HPEV_ENABLE, + }; + + s_tester.proxy_config = &proxy_config; + + struct aws_credentials_provider_ecs_options options = { + .bootstrap = s_tester.bootstrap, + .function_table = &s_mock_function_table, + .shutdown_options = + { + .shutdown_callback = s_on_shutdown_complete, + .shutdown_user_data = NULL, + }, + .host = aws_byte_cursor_from_c_str("127.0.0.1"), + .path_and_query = aws_byte_cursor_from_c_str("/path"), + .tls_ctx = s_tester.tls_ctx, + .proxy_ev_settings = &proxy_config, + }; + + struct aws_credentials_provider *provider = aws_credentials_provider_new_ecs(allocator, &options); + + aws_credentials_provider_get_credentials(provider, s_get_credentials_callback, NULL); + + s_aws_wait_for_credentials_result(); + + ASSERT_TRUE(s_tester.credentials == NULL); + + aws_credentials_provider_release(provider); + + s_aws_wait_for_provider_shutdown_callback(); + + aws_mem_release(provider->allocator, provider); + + s_aws_ecs_tester_cleanup(); + + return 0; +} +AWS_TEST_CASE( + credentials_provider_ecs_proxy_routing_enabled_test, + s_credentials_provider_ecs_proxy_routing_enabled_test); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/tests/credentials_provider_imds_tests.c new/aws-c-auth-0.9.4/tests/credentials_provider_imds_tests.c --- old/aws-c-auth-0.9.3/tests/credentials_provider_imds_tests.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/tests/credentials_provider_imds_tests.c 2025-12-06 03:46:00.000000000 +0100 @@ -9,8 +9,10 @@ #include <aws/auth/private/credentials_utils.h> #include <aws/common/clock.h> #include <aws/common/condition_variable.h> +#include <aws/common/environment.h> #include <aws/common/string.h> #include <aws/common/thread.h> +#include <aws/http/proxy.h> #include <aws/http/request_response.h> #include <aws/http/status_code.h> #include <aws/io/channel_bootstrap.h> @@ -61,6 +63,8 @@ bool token_header_exist[IMDS_MAX_REQUESTS]; bool token_header_expected[IMDS_MAX_REQUESTS]; bool alternate_closed_connections; + + struct proxy_env_var_settings *proxy_config; }; static struct aws_mock_imds_tester s_tester; @@ -98,6 +102,12 @@ (void)allocator; (void)options; + if (s_tester.proxy_config != NULL) { + AWS_FATAL_ASSERT(options->proxy_ev_settings->env_var_type == s_tester.proxy_config->env_var_type); + AWS_FATAL_ASSERT(options->proxy_ev_settings->connection_type == s_tester.proxy_config->connection_type); + AWS_FATAL_ASSERT(options->proxy_ev_settings->tls_options == s_tester.proxy_config->tls_options); + } + return (struct aws_http_connection_manager *)1; } @@ -1188,3 +1198,49 @@ } AWS_TEST_CASE(credentials_provider_imds_real_success, s_credentials_provider_imds_real_success); + +static int s_credentials_provider_imds_proxy_routing_enabled_test(struct aws_allocator *allocator, void *ctx) { + (void)ctx; + + s_aws_imds_tester_init(allocator); + + struct proxy_env_var_settings proxy_config = { + .env_var_type = AWS_HPEV_ENABLE, + }; + + s_tester.proxy_config = &proxy_config; + + struct aws_credentials_provider_imds_options options = { + .bootstrap = s_tester.bootstrap, + .function_table = &s_mock_function_table, + .shutdown_options = + { + .shutdown_callback = s_on_shutdown_complete, + .shutdown_user_data = NULL, + }, + .proxy_ev_settings = &proxy_config, + }; + + struct aws_credentials_provider *provider = aws_credentials_provider_new_imds(allocator, &options); + + aws_credentials_provider_get_credentials(provider, s_get_credentials_callback, NULL); + + s_aws_wait_for_credentials_result(); + + ASSERT_TRUE(s_tester.credentials == NULL); + + aws_credentials_provider_release(provider); + + s_aws_wait_for_provider_shutdown_callback(); + + struct aws_credentials_provider_imds_impl *impl = provider->impl; + aws_mem_release(provider->allocator, impl->client); + aws_mem_release(provider->allocator, provider); + + ASSERT_SUCCESS(s_aws_imds_tester_cleanup()); + + return 0; +} +AWS_TEST_CASE( + credentials_provider_imds_proxy_routing_enabled_test, + s_credentials_provider_imds_proxy_routing_enabled_test); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/tests/credentials_provider_sts_tests.c new/aws-c-auth-0.9.4/tests/credentials_provider_sts_tests.c --- old/aws-c-auth-0.9.3/tests/credentials_provider_sts_tests.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/tests/credentials_provider_sts_tests.c 2025-12-06 03:46:00.000000000 +0100 @@ -15,6 +15,7 @@ #include <aws/http/connection.h> #include <aws/http/connection_manager.h> +#include <aws/http/proxy.h> #include <aws/http/request_response.h> #include <aws/auth/private/credentials_utils.h> @@ -66,6 +67,8 @@ struct aws_client_bootstrap *bootstrap; struct aws_tls_ctx *tls_ctx; + + struct proxy_env_var_settings *proxy_config; }; static struct aws_mock_sts_tester s_tester; @@ -120,6 +123,13 @@ static struct aws_http_connection_manager *s_aws_http_connection_manager_new_mock( struct aws_allocator *allocator, const struct aws_http_connection_manager_options *options) { + + if (s_tester.proxy_config != NULL) { + AWS_FATAL_ASSERT(options->proxy_ev_settings->env_var_type == s_tester.proxy_config->env_var_type); + AWS_FATAL_ASSERT(options->proxy_ev_settings->connection_type == s_tester.proxy_config->connection_type); + AWS_FATAL_ASSERT(options->proxy_ev_settings->tls_options == s_tester.proxy_config->tls_options); + } + /* copy the shutdown callback */ struct aws_shutdown_callback_options *shutdown_callback = aws_mem_calloc(allocator, 1, sizeof(struct aws_shutdown_callback_options)); @@ -2152,3 +2162,55 @@ } AWS_TEST_CASE(credentials_provider_sts_cache_expiration_conflict, s_credentials_provider_sts_cache_expiration_conflict) + +static int s_credentials_provider_sts_proxy_routing_enabled_test(struct aws_allocator *allocator, void *ctx) { + (void)ctx; + + s_aws_sts_tester_init(allocator); + + struct proxy_env_var_settings proxy_config = { + .env_var_type = AWS_HPEV_ENABLE, + }; + + s_tester.proxy_config = &proxy_config; + s_tester.fail_connection = true; + + struct aws_credentials_provider_static_options static_options = { + .access_key_id = s_access_key_cur, + .secret_access_key = s_secret_key_cur, + .session_token = s_session_token_cur, + }; + struct aws_credentials_provider *static_provider = aws_credentials_provider_new_static(allocator, &static_options); + + struct aws_credentials_provider_sts_options options = { + .creds_provider = static_provider, + .bootstrap = s_tester.bootstrap, + .tls_ctx = s_tester.tls_ctx, + .role_arn = s_role_arn_cur, + .session_name = s_session_name_cur, + .duration_seconds = 0, + .function_table = &s_mock_function_table, + .system_clock_fn = mock_aws_get_system_time, + .proxy_ev_settings = &proxy_config, + }; + + mock_aws_set_system_time(0); + + struct aws_credentials_provider *sts_provider = aws_credentials_provider_new_sts(allocator, &options); + + aws_credentials_provider_get_credentials(sts_provider, s_get_credentials_callback, NULL); + + s_aws_wait_for_credentials_result(); + + ASSERT_TRUE(s_tester.credentials == NULL); + + aws_credentials_provider_release(sts_provider); + s_aws_wait_for_connection_manager_shutdown_callback(); + aws_credentials_provider_release(static_provider); + ASSERT_SUCCESS(s_aws_sts_tester_cleanup()); + + return AWS_OP_SUCCESS; +} +AWS_TEST_CASE( + credentials_provider_sts_proxy_routing_enabled_test, + s_credentials_provider_sts_proxy_routing_enabled_test) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/tests/credentials_provider_sts_web_identity_tests.c new/aws-c-auth-0.9.4/tests/credentials_provider_sts_web_identity_tests.c --- old/aws-c-auth-0.9.3/tests/credentials_provider_sts_web_identity_tests.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/tests/credentials_provider_sts_web_identity_tests.c 2025-12-06 03:46:00.000000000 +0100 @@ -43,6 +43,8 @@ int attempts; int response_code; int error_code; + + struct proxy_env_var_settings *proxy_config; } s_tester; static void s_on_shutdown_complete(void *user_data) { @@ -79,6 +81,12 @@ struct aws_allocator *allocator, const struct aws_http_connection_manager_options *options) { + if (s_tester.proxy_config != NULL) { + AWS_FATAL_ASSERT(options->proxy_ev_settings->env_var_type == s_tester.proxy_config->env_var_type); + AWS_FATAL_ASSERT(options->proxy_ev_settings->connection_type == s_tester.proxy_config->connection_type); + AWS_FATAL_ASSERT(options->proxy_ev_settings->tls_options == s_tester.proxy_config->tls_options); + } + struct mock_connection_manager *mock_manager = aws_mem_calloc(allocator, 1, sizeof(struct mock_connection_manager)); mock_manager->allocator = allocator; mock_manager->shutdown_complete_callback = options->shutdown_complete_callback; @@ -1317,3 +1325,62 @@ AWS_TEST_CASE( credentials_provider_sts_web_identity_real_new_destroy, s_credentials_provider_sts_web_identity_real_new_destroy); + +static int s_credentials_provider_sts_web_identity_proxy_routing_enabled_test( + struct aws_allocator *allocator, + void *ctx) { + (void)ctx; + + s_aws_sts_web_identity_tester_init(allocator); + + struct proxy_env_var_settings proxy_config = { + .env_var_type = AWS_HPEV_ENABLE, + }; + + s_tester.proxy_config = &proxy_config; + + s_aws_sts_web_identity_test_unset_env_parameters(); + + struct aws_string *token_file_path_str = aws_create_process_unique_file_name(allocator); + ASSERT_TRUE(token_file_path_str != NULL); + ASSERT_TRUE(aws_create_profile_file(token_file_path_str, s_sts_web_identity_token_contents) == AWS_OP_SUCCESS); + + s_aws_sts_web_identity_test_init_env_parameters( + allocator, + "us-east-1", + "arn:aws:iam::1234567890:role/test-arn", + "9876543210", + aws_string_c_str(token_file_path_str)); + aws_string_destroy(token_file_path_str); + + struct aws_credentials_provider_sts_web_identity_options options = { + .bootstrap = NULL, + .tls_ctx = s_tester.tls_ctx, + .function_table = &s_mock_function_table, + .shutdown_options = + { + .shutdown_callback = s_on_shutdown_complete, + .shutdown_user_data = NULL, + }, + .proxy_ev_settings = &proxy_config, + }; + + struct aws_credentials_provider *provider = aws_credentials_provider_new_sts_web_identity(allocator, &options); + + aws_credentials_provider_get_credentials(provider, s_get_credentials_callback, NULL); + + s_aws_wait_for_credentials_result(); + + ASSERT_TRUE(s_tester.credentials == NULL); + + aws_credentials_provider_release(provider); + + s_aws_wait_for_provider_shutdown_callback(); + + s_aws_sts_web_identity_tester_cleanup(); + + return 0; +} +AWS_TEST_CASE( + credentials_provider_sts_web_identity_proxy_routing_enabled_test, + s_credentials_provider_sts_web_identity_proxy_routing_enabled_test); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.9.3/tests/credentials_provider_x509_tests.c new/aws-c-auth-0.9.4/tests/credentials_provider_x509_tests.c --- old/aws-c-auth-0.9.3/tests/credentials_provider_x509_tests.c 2025-12-01 22:35:07.000000000 +0100 +++ new/aws-c-auth-0.9.4/tests/credentials_provider_x509_tests.c 2025-12-06 03:46:00.000000000 +0100 @@ -10,6 +10,7 @@ #include <aws/common/clock.h> #include <aws/common/condition_variable.h> #include <aws/common/date_time.h> +#include <aws/common/environment.h> #include <aws/common/string.h> #include <aws/common/thread.h> #include <aws/http/request_response.h> @@ -36,6 +37,8 @@ struct aws_tls_ctx *ctx; struct aws_tls_connection_options tls_connection_options; + + struct proxy_env_var_settings *proxy_config; }; static struct aws_mock_x509_tester s_tester; @@ -69,6 +72,12 @@ (void)allocator; (void)options; + if (s_tester.proxy_config != NULL) { + AWS_FATAL_ASSERT(options->proxy_ev_settings->env_var_type == s_tester.proxy_config->env_var_type); + AWS_FATAL_ASSERT(options->proxy_ev_settings->connection_type == s_tester.proxy_config->connection_type); + AWS_FATAL_ASSERT(options->proxy_ev_settings->tls_options == s_tester.proxy_config->tls_options); + } + return (struct aws_http_connection_manager *)1; } @@ -653,3 +662,51 @@ } AWS_TEST_CASE(credentials_provider_x509_real_new_destroy, s_credentials_provider_x509_real_new_destroy); + +static int s_credentials_provider_x509_proxy_routing_enabled_test(struct aws_allocator *allocator, void *ctx) { + (void)ctx; + + s_aws_x509_tester_init(allocator); + + struct proxy_env_var_settings proxy_config = { + .env_var_type = AWS_HPEV_ENABLE, + }; + + s_tester.proxy_config = &proxy_config; + + struct aws_credentials_provider_x509_options options = { + .bootstrap = NULL, + .function_table = &s_mock_function_table, + .shutdown_options = + { + .shutdown_callback = s_on_shutdown_complete, + .shutdown_user_data = NULL, + }, + .endpoint = aws_byte_cursor_from_c_str("c2sakl5huz0afv.credentials.iot.us-east-1.amazonaws.com"), + .thing_name = aws_byte_cursor_from_c_str("my_iot_thing_name"), + .role_alias = aws_byte_cursor_from_c_str("my_test_role_alias"), + .tls_connection_options = &s_tester.tls_connection_options, + .proxy_ev_settings = &proxy_config, + }; + + struct aws_credentials_provider *provider = aws_credentials_provider_new_x509(allocator, &options); + + aws_credentials_provider_get_credentials(provider, s_get_credentials_callback, NULL); + + s_aws_wait_for_credentials_result(); + + ASSERT_TRUE(s_tester.credentials == NULL); + + aws_credentials_provider_release(provider); + + s_aws_wait_for_provider_shutdown_callback(); + + aws_mem_release(provider->allocator, provider); + + s_aws_x509_tester_cleanup(); + + return 0; +} +AWS_TEST_CASE( + credentials_provider_x509_proxy_routing_enabled_test, + s_credentials_provider_x509_proxy_routing_enabled_test);
