Added bindings for Signable, SigningConfig, Signing (#23)

* Added bindings for Signable, SigningConfig, Signing

* Fixed PHP5.6 argument vector madness

* Added SigningConfigAWS implementation and lifetime tests

* Updated .gitignore

* Added impl for Signing::signRequestAws(), laid out sigv4 test
This commit is contained in:
Justin Boswell
2021-05-18 14:06:26 -07:00
committed by GitHub
parent beda2f5376
commit a99fdeb9d3
17 changed files with 930 additions and 134 deletions
+57
View File
@@ -0,0 +1,57 @@
<?php
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
namespace AWS\CRT\Auth;
use AWS\CRT\NativeResource as NativeResource;
use AWS\CRT\Options as Options;
class SigningConfigAWS extends NativeResource {
public static function defaults() {
return [
'algorithm' => SigningAlgorithm::SIGv4,
'signature_type' => SignatureType::HTTP_REQUEST_HEADERS,
'credentials_provider' => null,
'region' => null,
'service' => null,
'use_double_uri_encode' => false,
'should_normalize_uri_path' => false,
'omit_session_token' => false,
'signed_body_value' => null,
'signed_body_header_type' => SignedBodyHeaderType::NONE,
'expiration_in_seconds' => 0,
];
}
private $options;
public function __construct(array $options = []) {
parent::__construct();
$this->options = $options = new Options($options, self::defaults());
$sc = $this->acquire(self::$crt->signing_config_aws_new());
self::$crt->signing_config_aws_set_algorithm($sc, $options->algorithm->asInt());
self::$crt->signing_config_aws_set_signature_type($sc, $options->signature_type->asInt());
self::$crt->signing_config_aws_set_credentials_provider($sc, $options->credentials_provider->asObject());
self::$crt->signing_config_aws_set_region($sc, $options->region->asString());
self::$crt->signing_config_aws_set_service($sc, $options->service->asString());
self::$crt->signing_config_aws_set_use_double_uri_encode($sc, $options->use_double_uri_encode->asBool());
self::$crt->signing_config_aws_set_should_normalize_uri_path($sc, $options->should_normalize_uri_path->asBool());
self::$crt->signing_config_aws_set_omit_session_token($sc, $options->omit_session_token->asBool());
self::$crt->signing_config_aws_set_signed_body_value($sc, $options->signed_body_value->asString());
self::$crt->signing_config_aws_set_signed_body_header_type($sc, $options->signed_body_header_type->asInt());
self::$crt->signing_config_aws_set_expiration_in_seconds($sc, $options->expiration_in_seconds->asInt());
}
function __destruct()
{
self::$crt->signing_config_aws_release($this->release());
parent::__destruct();
}
public function __get($name) {
return $this->options->get($name);
}
}