Implemented SigV4A (#40)

* Implemented should_sign_header callback

* Added SigV4A to SigningAlgorithm

* Added SigV4A test

* Added debugging info to README

* Fixed memory leak from argument vectors

* Fixed memory leak of stream read buffers

* Added support for callables as option values

* Added should_sign_header support and test

* Fixed ELG type bug exposed by aws-crt-ffi change

* Updated to aws-crt-ffi v0.2.0
This commit is contained in:
Justin Boswell
2021-07-28 12:54:37 -07:00
committed by GitHub
parent 3f77a01fbf
commit 92724b8d51
17 changed files with 361 additions and 132 deletions
+100 -82
View File
@@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead.
* Stub hash: 36d4e512f02a12c10689eb9b0941bcd7837fbf1d */
* Stub hash: 9b39b5b4523538d8b64b2558e11dfafb209c8ea8 */
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_last_error, 0, 0, 0)
ZEND_END_ARG_INFO()
@@ -195,6 +195,11 @@ ZEND_ARG_INFO(0, config)
ZEND_ARG_INFO(0, timestamp)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_should_sign_header_fn, 0, 0, 2)
ZEND_ARG_INFO(0, config)
ZEND_ARG_INFO(0, should_sign_header)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signable_new_from_http_request, 0, 0, 1)
ZEND_ARG_INFO(0, http_message)
ZEND_END_ARG_INFO()
@@ -285,6 +290,7 @@ ZEND_FUNCTION(aws_crt_signing_config_aws_set_signed_body_value);
ZEND_FUNCTION(aws_crt_signing_config_aws_set_signed_body_header_type);
ZEND_FUNCTION(aws_crt_signing_config_aws_set_expiration_in_seconds);
ZEND_FUNCTION(aws_crt_signing_config_aws_set_date);
ZEND_FUNCTION(aws_crt_signing_config_aws_set_should_sign_header_fn);
ZEND_FUNCTION(aws_crt_signable_new_from_http_request);
ZEND_FUNCTION(aws_crt_signable_new_from_chunk);
ZEND_FUNCTION(aws_crt_signable_new_from_canonical_request);
@@ -295,86 +301,98 @@ ZEND_FUNCTION(aws_crt_sign_request_aws);
ZEND_FUNCTION(aws_crt_crc32);
ZEND_FUNCTION(aws_crt_crc32c);
static const zend_function_entry ext_functions[] =
{ZEND_FE(aws_crt_last_error, arginfo_aws_crt_last_error) ZEND_FE(aws_crt_error_name, arginfo_aws_crt_error_name) ZEND_FE(
static const zend_function_entry ext_functions
[] = {ZEND_FE(aws_crt_last_error, arginfo_aws_crt_last_error) ZEND_FE(aws_crt_error_name, arginfo_aws_crt_error_name) ZEND_FE(
aws_crt_error_str,
arginfo_aws_crt_error_str) ZEND_FE(aws_crt_error_debug_str, arginfo_aws_crt_error_debug_str)
ZEND_FE(aws_crt_event_loop_group_options_new, arginfo_aws_crt_event_loop_group_options_new) ZEND_FE(
aws_crt_event_loop_group_options_release,
arginfo_aws_crt_event_loop_group_options_release) ZEND_FE(aws_crt_event_loop_group_options_set_max_threads, arginfo_aws_crt_event_loop_group_options_set_max_threads)
ZEND_FE(aws_crt_event_loop_group_new, arginfo_aws_crt_event_loop_group_new) ZEND_FE(
aws_crt_event_loop_group_release,
arginfo_aws_crt_event_loop_group_release) ZEND_FE(aws_crt_input_stream_options_new, arginfo_aws_crt_input_stream_options_new)
ZEND_FE(aws_crt_input_stream_options_release, arginfo_aws_crt_input_stream_options_release) ZEND_FE(
aws_crt_input_stream_options_set_user_data,
arginfo_aws_crt_input_stream_options_set_user_data) ZEND_FE(aws_crt_input_stream_new, arginfo_aws_crt_input_stream_new)
ZEND_FE(aws_crt_input_stream_release, arginfo_aws_crt_input_stream_release) ZEND_FE(
aws_crt_input_stream_seek,
arginfo_aws_crt_input_stream_seek) ZEND_FE(aws_crt_input_stream_read, arginfo_aws_crt_input_stream_read)
ZEND_FE(aws_crt_input_stream_eof, arginfo_aws_crt_input_stream_eof) ZEND_FE(
aws_crt_input_stream_get_length,
arginfo_aws_crt_input_stream_get_length)
ZEND_FE(aws_crt_http_message_new_from_blob, arginfo_aws_crt_http_message_new_from_blob) ZEND_FE(
aws_crt_http_message_to_blob,
arginfo_aws_crt_http_message_to_blob)
ZEND_FE(aws_crt_http_message_release, arginfo_aws_crt_http_message_release) ZEND_FE(
aws_crt_credentials_options_new,
arginfo_aws_crt_credentials_options_new)
ZEND_FE(aws_crt_credentials_options_release, arginfo_aws_crt_credentials_options_release) ZEND_FE(
aws_crt_credentials_options_set_access_key_id,
arginfo_aws_crt_credentials_options_set_access_key_id)
ZEND_FE(
aws_crt_credentials_options_set_secret_access_key,
arginfo_aws_crt_credentials_options_set_secret_access_key)
ZEND_FE(
aws_crt_credentials_options_set_session_token,
arginfo_aws_crt_credentials_options_set_session_token)
ZEND_FE(
aws_crt_credentials_options_set_expiration_timepoint_seconds,
arginfo_aws_crt_credentials_options_set_expiration_timepoint_seconds)
ZEND_FE(aws_crt_credentials_new, arginfo_aws_crt_credentials_new) ZEND_FE(
aws_crt_credentials_release,
arginfo_aws_crt_credentials_release)
ZEND_FE(
aws_crt_credentials_provider_release,
arginfo_aws_crt_credentials_provider_release)
ZEND_FE(
aws_crt_credentials_provider_static_options_new,
arginfo_aws_crt_credentials_provider_static_options_new)
ZEND_FE(
aws_crt_credentials_provider_static_options_release,
arginfo_aws_crt_credentials_provider_static_options_release)
ZEND_FE(
aws_crt_credentials_provider_static_options_set_access_key_id,
arginfo_aws_crt_credentials_provider_static_options_set_access_key_id)
ZEND_FE(
aws_crt_credentials_provider_static_options_set_secret_access_key,
arginfo_aws_crt_credentials_provider_static_options_set_secret_access_key)
ZEND_FE(
aws_crt_credentials_provider_static_options_set_session_token,
arginfo_aws_crt_credentials_provider_static_options_set_session_token)
ZEND_FE(
aws_crt_credentials_provider_static_new,
arginfo_aws_crt_credentials_provider_static_new)
ZEND_FE(
aws_crt_signing_config_aws_new,
arginfo_aws_crt_signing_config_aws_new)
ZEND_FE(
aws_crt_signing_config_aws_release,
arginfo_aws_crt_signing_config_aws_release)
ZEND_FE(
aws_crt_signing_config_aws_set_algorithm,
arginfo_aws_crt_signing_config_aws_set_algorithm) ZEND_FE(aws_crt_signing_config_aws_set_signature_type, arginfo_aws_crt_signing_config_aws_set_signature_type) ZEND_FE(aws_crt_signing_config_aws_set_credentials_provider, arginfo_aws_crt_signing_config_aws_set_credentials_provider) ZEND_FE(aws_crt_signing_config_aws_set_region, arginfo_aws_crt_signing_config_aws_set_region) ZEND_FE(aws_crt_signing_config_aws_set_service, arginfo_aws_crt_signing_config_aws_set_service) ZEND_FE(aws_crt_signing_config_aws_set_use_double_uri_encode, arginfo_aws_crt_signing_config_aws_set_use_double_uri_encode) ZEND_FE(aws_crt_signing_config_aws_set_should_normalize_uri_path, arginfo_aws_crt_signing_config_aws_set_should_normalize_uri_path) ZEND_FE(aws_crt_signing_config_aws_set_omit_session_token, arginfo_aws_crt_signing_config_aws_set_omit_session_token) ZEND_FE(aws_crt_signing_config_aws_set_signed_body_value, arginfo_aws_crt_signing_config_aws_set_signed_body_value) ZEND_FE(aws_crt_signing_config_aws_set_signed_body_header_type, arginfo_aws_crt_signing_config_aws_set_signed_body_header_type) ZEND_FE(aws_crt_signing_config_aws_set_expiration_in_seconds, arginfo_aws_crt_signing_config_aws_set_expiration_in_seconds) ZEND_FE(aws_crt_signing_config_aws_set_date, arginfo_aws_crt_signing_config_aws_set_date) ZEND_FE(aws_crt_signable_new_from_http_request, arginfo_aws_crt_signable_new_from_http_request) ZEND_FE(aws_crt_signable_new_from_chunk, arginfo_aws_crt_signable_new_from_chunk) ZEND_FE(aws_crt_signable_new_from_canonical_request, arginfo_aws_crt_signable_new_from_canonical_request) ZEND_FE(aws_crt_signable_release, arginfo_aws_crt_signable_release) ZEND_FE(aws_crt_signing_result_release, arginfo_aws_crt_signing_result_release)
ZEND_FE(
aws_crt_signing_result_apply_to_http_request,
arginfo_aws_crt_signing_result_apply_to_http_request)
ZEND_FE(
aws_crt_sign_request_aws,
arginfo_aws_crt_sign_request_aws)
ZEND_FE(
aws_crt_crc32,
arginfo_aws_crt_crc32)
ZEND_FE(
aws_crt_crc32c,
arginfo_aws_crt_crc32c)
ZEND_FE_END};
ZEND_FE(aws_crt_event_loop_group_options_new, arginfo_aws_crt_event_loop_group_options_new) ZEND_FE(
aws_crt_event_loop_group_options_release,
arginfo_aws_crt_event_loop_group_options_release) ZEND_FE(aws_crt_event_loop_group_options_set_max_threads, arginfo_aws_crt_event_loop_group_options_set_max_threads)
ZEND_FE(aws_crt_event_loop_group_new, arginfo_aws_crt_event_loop_group_new) ZEND_FE(
aws_crt_event_loop_group_release,
arginfo_aws_crt_event_loop_group_release) ZEND_FE(aws_crt_input_stream_options_new, arginfo_aws_crt_input_stream_options_new)
ZEND_FE(aws_crt_input_stream_options_release, arginfo_aws_crt_input_stream_options_release) ZEND_FE(
aws_crt_input_stream_options_set_user_data,
arginfo_aws_crt_input_stream_options_set_user_data) ZEND_FE(aws_crt_input_stream_new, arginfo_aws_crt_input_stream_new)
ZEND_FE(aws_crt_input_stream_release, arginfo_aws_crt_input_stream_release) ZEND_FE(
aws_crt_input_stream_seek,
arginfo_aws_crt_input_stream_seek) ZEND_FE(aws_crt_input_stream_read, arginfo_aws_crt_input_stream_read)
ZEND_FE(aws_crt_input_stream_eof, arginfo_aws_crt_input_stream_eof) ZEND_FE(
aws_crt_input_stream_get_length,
arginfo_aws_crt_input_stream_get_length) ZEND_FE(aws_crt_http_message_new_from_blob, arginfo_aws_crt_http_message_new_from_blob)
ZEND_FE(aws_crt_http_message_to_blob, arginfo_aws_crt_http_message_to_blob) ZEND_FE(
aws_crt_http_message_release,
arginfo_aws_crt_http_message_release) ZEND_FE(aws_crt_credentials_options_new, arginfo_aws_crt_credentials_options_new)
ZEND_FE(aws_crt_credentials_options_release, arginfo_aws_crt_credentials_options_release) ZEND_FE(
aws_crt_credentials_options_set_access_key_id,
arginfo_aws_crt_credentials_options_set_access_key_id)
ZEND_FE(
aws_crt_credentials_options_set_secret_access_key,
arginfo_aws_crt_credentials_options_set_secret_access_key)
ZEND_FE(aws_crt_credentials_options_set_session_token, arginfo_aws_crt_credentials_options_set_session_token) ZEND_FE(
aws_crt_credentials_options_set_expiration_timepoint_seconds,
arginfo_aws_crt_credentials_options_set_expiration_timepoint_seconds)
ZEND_FE(aws_crt_credentials_new, arginfo_aws_crt_credentials_new) ZEND_FE(
aws_crt_credentials_release,
arginfo_aws_crt_credentials_release)
ZEND_FE(aws_crt_credentials_provider_release, arginfo_aws_crt_credentials_provider_release) ZEND_FE(
aws_crt_credentials_provider_static_options_new,
arginfo_aws_crt_credentials_provider_static_options_new)
ZEND_FE(
aws_crt_credentials_provider_static_options_release,
arginfo_aws_crt_credentials_provider_static_options_release)
ZEND_FE(
aws_crt_credentials_provider_static_options_set_access_key_id,
arginfo_aws_crt_credentials_provider_static_options_set_access_key_id)
ZEND_FE(
aws_crt_credentials_provider_static_options_set_secret_access_key,
arginfo_aws_crt_credentials_provider_static_options_set_secret_access_key)
ZEND_FE(
aws_crt_credentials_provider_static_options_set_session_token,
arginfo_aws_crt_credentials_provider_static_options_set_session_token)
ZEND_FE(
aws_crt_credentials_provider_static_new,
arginfo_aws_crt_credentials_provider_static_new)
ZEND_FE(
aws_crt_signing_config_aws_new,
arginfo_aws_crt_signing_config_aws_new)
ZEND_FE(
aws_crt_signing_config_aws_release,
arginfo_aws_crt_signing_config_aws_release)
ZEND_FE(
aws_crt_signing_config_aws_set_algorithm,
arginfo_aws_crt_signing_config_aws_set_algorithm)
ZEND_FE(
aws_crt_signing_config_aws_set_signature_type,
arginfo_aws_crt_signing_config_aws_set_signature_type)
ZEND_FE(
aws_crt_signing_config_aws_set_credentials_provider,
arginfo_aws_crt_signing_config_aws_set_credentials_provider)
ZEND_FE(
aws_crt_signing_config_aws_set_region,
arginfo_aws_crt_signing_config_aws_set_region)
ZEND_FE(
aws_crt_signing_config_aws_set_service,
arginfo_aws_crt_signing_config_aws_set_service)
ZEND_FE(aws_crt_signing_config_aws_set_use_double_uri_encode, arginfo_aws_crt_signing_config_aws_set_use_double_uri_encode) ZEND_FE(aws_crt_signing_config_aws_set_should_normalize_uri_path, arginfo_aws_crt_signing_config_aws_set_should_normalize_uri_path) ZEND_FE(aws_crt_signing_config_aws_set_omit_session_token, arginfo_aws_crt_signing_config_aws_set_omit_session_token) ZEND_FE(aws_crt_signing_config_aws_set_signed_body_value, arginfo_aws_crt_signing_config_aws_set_signed_body_value) ZEND_FE(aws_crt_signing_config_aws_set_signed_body_header_type, arginfo_aws_crt_signing_config_aws_set_signed_body_header_type) ZEND_FE(aws_crt_signing_config_aws_set_expiration_in_seconds, arginfo_aws_crt_signing_config_aws_set_expiration_in_seconds) ZEND_FE(aws_crt_signing_config_aws_set_date, arginfo_aws_crt_signing_config_aws_set_date) ZEND_FE(aws_crt_signing_config_aws_set_should_sign_header_fn, arginfo_aws_crt_signing_config_aws_set_should_sign_header_fn) ZEND_FE(aws_crt_signable_new_from_http_request, arginfo_aws_crt_signable_new_from_http_request) ZEND_FE(aws_crt_signable_new_from_chunk, arginfo_aws_crt_signable_new_from_chunk) ZEND_FE(
aws_crt_signable_new_from_canonical_request,
arginfo_aws_crt_signable_new_from_canonical_request)
ZEND_FE(
aws_crt_signable_release,
arginfo_aws_crt_signable_release)
ZEND_FE(
aws_crt_signing_result_release,
arginfo_aws_crt_signing_result_release)
ZEND_FE(
aws_crt_signing_result_apply_to_http_request,
arginfo_aws_crt_signing_result_apply_to_http_request)
ZEND_FE(
aws_crt_sign_request_aws,
arginfo_aws_crt_sign_request_aws)
ZEND_FE(
aws_crt_crc32,
arginfo_aws_crt_crc32)
ZEND_FE(
aws_crt_crc32c,
arginfo_aws_crt_crc32c)
ZEND_FE_END};