mirror of
https://github.com/awslabs/aws-crt-php.git
synced 2026-08-17 17:47:12 +00:00
Added validation for signing/signing config (#43)
* Imported aws-crt-ffi/validation * Exposed Signing::testVerifySigV4ASigning * Updated to aws-crt-ffi v0.2.3
This commit is contained in:
+1
-1
Submodule crt/aws-crt-ffi updated: 927850d2e7...94e82ef7b4
+1
-53
@@ -6,135 +6,83 @@
|
||||
*/
|
||||
|
||||
function aws_crt_last_error(): int {}
|
||||
|
||||
function aws_crt_error_name(int $error_code): string {}
|
||||
|
||||
function aws_crt_error_str(int $error_code): string {}
|
||||
|
||||
function aws_crt_error_debug_str(int $error_code): string {}
|
||||
|
||||
function aws_crt_log_to_stdout(): void {}
|
||||
|
||||
function aws_crt_log_to_stderr(): void {}
|
||||
|
||||
function aws_crt_log_to_file(string $filename): void {}
|
||||
|
||||
function aws_crt_log_to_stream(object $stream): void {}
|
||||
|
||||
function aws_crt_log_stop(): void {}
|
||||
|
||||
function aws_crt_log_set_level(int $level): void {}
|
||||
|
||||
function aws_crt_log_message(string $message): void {}
|
||||
|
||||
function aws_crt_event_loop_group_options_new(): int {}
|
||||
|
||||
function aws_crt_event_loop_group_options_release(int $elg_options): void {}
|
||||
|
||||
function aws_crt_event_loop_group_options_set_max_threads(int $elg_options, int $max_threads): void {}
|
||||
|
||||
function aws_crt_event_loop_group_new(object $options): object {}
|
||||
|
||||
function aws_crt_event_loop_group_release(object $event_loop_group): void {}
|
||||
|
||||
function aws_crt_input_stream_options_new(): object {}
|
||||
|
||||
function aws_crt_input_stream_options_release(object $options): void {}
|
||||
|
||||
function aws_crt_input_stream_options_set_user_data(object $options, object $user_data): void {}
|
||||
|
||||
function aws_crt_input_stream_new(object $options): object {}
|
||||
|
||||
function aws_crt_input_stream_release(int $stream): void {}
|
||||
|
||||
function aws_crt_input_stream_seek(int $stream, int $offset, int $basis): int {}
|
||||
|
||||
function aws_crt_input_stream_read(int $stream, int $length): string {}
|
||||
|
||||
function aws_crt_input_stream_eof(int $stream): bool {}
|
||||
|
||||
function aws_crt_input_stream_get_length(int $stream): int {}
|
||||
|
||||
function aws_crt_http_message_new_from_blob(string $blob): int {}
|
||||
|
||||
function aws_crt_http_message_to_blob(int $message): string {}
|
||||
|
||||
function aws_crt_http_message_release(int $message): void {}
|
||||
|
||||
function aws_crt_credentials_options_new(): object {}
|
||||
|
||||
function aws_crt_credentials_options_release(object $options): void {}
|
||||
|
||||
function aws_crt_credentials_options_set_access_key_id(object $options, string $access_key_id): void {}
|
||||
|
||||
function aws_crt_credentials_options_set_secret_access_key(object $options, string $secret_access_key): void {}
|
||||
|
||||
function aws_crt_credentials_options_set_session_token(object $options, string $session_token): void {}
|
||||
|
||||
function aws_crt_credentials_options_set_expiration_timepoint_seconds(object $options, int $expiration_timepoint_seconds): void {}
|
||||
|
||||
function aws_crt_credentials_new(object $options): object {}
|
||||
|
||||
function aws_crt_credentials_release(object $credentials): void {}
|
||||
|
||||
function aws_crt_credentials_provider_release(int $credentials): void {}
|
||||
|
||||
function aws_crt_credentials_provider_static_options_new(): object {}
|
||||
|
||||
function aws_crt_credentials_provider_static_options_release(object $options): void {}
|
||||
|
||||
function aws_crt_credentials_provider_static_options_set_access_key_id(object $options, string $access_key_id): void {}
|
||||
|
||||
function aws_crt_credentials_provider_static_options_set_secret_access_key(object $options, string $secret_access_key): void {}
|
||||
|
||||
function aws_crt_credentials_provider_static_options_set_session_token(object $options, string $session_token): void {}
|
||||
|
||||
function aws_crt_credentials_provider_static_new(object $options): object {}
|
||||
|
||||
function aws_crt_signing_config_aws_new(): int {}
|
||||
|
||||
function aws_crt_signing_config_aws_release(int $config): void {}
|
||||
|
||||
function aws_crt_signing_config_aws_set_algorithm(int $config, int $algorithm): void {}
|
||||
|
||||
function aws_crt_signing_config_aws_set_signature_type(int $config, int $signature_type): void {}
|
||||
|
||||
function aws_crt_signing_config_aws_set_credentials_provider(int $config, int $credentials_provider): void {}
|
||||
|
||||
function aws_crt_signing_config_aws_set_region(int $config, string $region): void {}
|
||||
|
||||
function aws_crt_signing_config_aws_set_service(int $config, string $service): void {}
|
||||
|
||||
function aws_crt_signing_config_aws_set_use_double_uri_encode(int $config, bool $use_double_uri_encode): void {}
|
||||
|
||||
function aws_crt_signing_config_aws_set_should_normalize_uri_path(int $config, bool $should_normalize_uri_path): void {}
|
||||
|
||||
function aws_crt_signing_config_aws_set_omit_session_token(int $config, bool $omit_session_token): void {}
|
||||
|
||||
function aws_crt_signing_config_aws_set_signed_body_value(int $config, string $signed_body_value): void {}
|
||||
|
||||
function aws_crt_signing_config_aws_set_signed_body_header_type(int $config, int $signed_body_header_type): void {}
|
||||
|
||||
function aws_crt_signing_config_aws_set_expiration_in_seconds(int $config, int $expiration_in_seconds): void {}
|
||||
|
||||
function aws_crt_signing_config_aws_set_date(int $config, int $timestamp): void {}
|
||||
|
||||
function aws_crt_signing_config_aws_set_should_sign_header_fn(int $config, object $should_sign_header): void {}
|
||||
|
||||
function aws_crt_signable_new_from_http_request(int $http_message): int {}
|
||||
|
||||
function aws_crt_signable_new_from_chunk(int $input_stream, string $previous_signature): int {}
|
||||
|
||||
function aws_crt_signable_new_from_canonical_request(string $request): int {}
|
||||
|
||||
function aws_crt_signable_release(int $signable): void {}
|
||||
|
||||
function aws_crt_signing_result_release(int $signing_result): void {}
|
||||
|
||||
function aws_crt_signing_result_apply_to_http_request(object $signing_result, object $http_request): void {}
|
||||
|
||||
function aws_crt_sign_request_aws(int $signable, int $signing_config, object $on_complete, object $user_data): int {}
|
||||
function aws_crt_test_verify_sigv4a_signing(int $signable, int $signing_config, string $expected_canonical_request, string $signature, string $ecc_key_pub_x, string $ecc_key_pub_y): bool {}
|
||||
|
||||
function aws_crt_crc32(string $input, int $prev): int {}
|
||||
|
||||
function aws_crt_crc32c(string $input, int $prev): int {}
|
||||
|
||||
+12
-1
@@ -1,5 +1,5 @@
|
||||
/* This is a generated file, edit the .stub.php file instead.
|
||||
* Stub hash: 3d39c69ca902372d6bf164faadb43df1f201bd80 */
|
||||
* Stub hash: 344f9d59b85697b80bb6808ac7d5eb7c1d07c03f */
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_last_error, 0, 0, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
@@ -253,6 +253,15 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_sign_request_aws, 0, 0, 4)
|
||||
ZEND_ARG_INFO(0, user_data)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_test_verify_sigv4a_signing, 0, 0, 6)
|
||||
ZEND_ARG_INFO(0, signable)
|
||||
ZEND_ARG_INFO(0, signing_config)
|
||||
ZEND_ARG_INFO(0, expected_canonical_request)
|
||||
ZEND_ARG_INFO(0, signature)
|
||||
ZEND_ARG_INFO(0, ecc_key_pub_x)
|
||||
ZEND_ARG_INFO(0, ecc_key_pub_y)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_crc32, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, input)
|
||||
ZEND_ARG_INFO(0, prev)
|
||||
@@ -326,6 +335,7 @@ ZEND_FUNCTION(aws_crt_signable_release);
|
||||
ZEND_FUNCTION(aws_crt_signing_result_release);
|
||||
ZEND_FUNCTION(aws_crt_signing_result_apply_to_http_request);
|
||||
ZEND_FUNCTION(aws_crt_sign_request_aws);
|
||||
ZEND_FUNCTION(aws_crt_test_verify_sigv4a_signing);
|
||||
ZEND_FUNCTION(aws_crt_crc32);
|
||||
ZEND_FUNCTION(aws_crt_crc32c);
|
||||
|
||||
@@ -396,6 +406,7 @@ static const zend_function_entry ext_functions[] = {
|
||||
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_test_verify_sigv4a_signing, arginfo_aws_crt_test_verify_sigv4a_signing)
|
||||
ZEND_FE(aws_crt_crc32, arginfo_aws_crt_crc32)
|
||||
ZEND_FE(aws_crt_crc32c, arginfo_aws_crt_crc32c)
|
||||
ZEND_FE_END
|
||||
|
||||
@@ -337,3 +337,38 @@ done:
|
||||
aws_promise_release(promise);
|
||||
RETURN_LONG(ret);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_test_verify_sigv4a_signing) {
|
||||
zend_ulong php_signable = 0;
|
||||
zend_ulong php_signing_config = 0;
|
||||
const char *expected_canonical_request = NULL;
|
||||
size_t expected_canonical_request_len = 0;
|
||||
const char *signature = NULL;
|
||||
size_t signature_len = 0;
|
||||
const char *ecc_key_pub_x = NULL;
|
||||
size_t ecc_key_pub_x_len = 0;
|
||||
const char *ecc_key_pub_y = NULL;
|
||||
size_t ecc_key_pub_y_len = 0;
|
||||
|
||||
aws_php_parse_parameters(
|
||||
"llssss",
|
||||
&php_signable,
|
||||
&php_signing_config,
|
||||
&expected_canonical_request,
|
||||
&expected_canonical_request_len,
|
||||
&signature,
|
||||
&signature_len,
|
||||
&ecc_key_pub_x,
|
||||
&ecc_key_pub_x_len,
|
||||
&ecc_key_pub_y,
|
||||
&ecc_key_pub_y_len);
|
||||
|
||||
const aws_crt_signable *signable = (void *)php_signable;
|
||||
const aws_crt_signing_config *signing_config = (void *)php_signing_config;
|
||||
|
||||
bool result = AWS_OP_SUCCESS ==
|
||||
aws_crt_test_verify_sigv4a_signing(
|
||||
signable, signing_config, expected_canonical_request, signature, ecc_key_pub_x, ecc_key_pub_y);
|
||||
|
||||
RETURN_BOOL(result);
|
||||
}
|
||||
|
||||
@@ -15,4 +15,8 @@ abstract class Signing extends NativeResource {
|
||||
$on_complete($signing_result, $error_code);
|
||||
}, null);
|
||||
}
|
||||
}
|
||||
|
||||
static function testVerifySigV4ASigning($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y) {
|
||||
return self::$crt->test_verify_sigv4a_signing($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -378,6 +378,10 @@ final class CRT {
|
||||
return self::$impl->aws_crt_sign_request_aws($signable, $signing_config, $on_complete, $user_data);
|
||||
}
|
||||
|
||||
function test_verify_sigv4a_signing($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y) {
|
||||
return self::$impl->aws_crt_test_verify_sigv4a_signing($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y);
|
||||
}
|
||||
|
||||
public static function crc32($input, $previous = 0) {
|
||||
return self::$impl->aws_crt_crc32($input, $previous);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user