mirror of
https://github.com/awslabs/aws-crt-php.git
synced 2026-08-18 01:57:13 +00:00
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:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user