aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_external/3rdparty/aws-sdk-php/Aws/S3/S3SignatureV4.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_external/3rdparty/aws-sdk-php/Aws/S3/S3SignatureV4.php')
-rw-r--r--apps/files_external/3rdparty/aws-sdk-php/Aws/S3/S3SignatureV4.php64
1 files changed, 64 insertions, 0 deletions
diff --git a/apps/files_external/3rdparty/aws-sdk-php/Aws/S3/S3SignatureV4.php b/apps/files_external/3rdparty/aws-sdk-php/Aws/S3/S3SignatureV4.php
new file mode 100644
index 00000000000..7587af0fcba
--- /dev/null
+++ b/apps/files_external/3rdparty/aws-sdk-php/Aws/S3/S3SignatureV4.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Copyright 2010-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License").
+ * You may not use this file except in compliance with the License.
+ * A copy of the License is located at
+ *
+ * http://aws.amazon.com/apache2.0
+ *
+ * or in the "license" file accompanying this file. This file is distributed
+ * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+namespace Aws\S3;
+
+use Aws\Common\Signature\SignatureV4;
+use Aws\Common\Credentials\CredentialsInterface;
+use Guzzle\Http\Message\EntityEnclosingRequestInterface;
+use Guzzle\Http\Message\RequestInterface;
+
+/**
+ * Amazon S3 signature version 4 overrides.
+ */
+class S3SignatureV4 extends SignatureV4 implements S3SignatureInterface
+{
+ /**
+ * Always add a x-amz-content-sha-256 for data integrity.
+ */
+ public function signRequest(RequestInterface $request, CredentialsInterface $credentials)
+ {
+ if (!$request->hasHeader('x-amz-content-sha256')) {
+ $request->setHeader('x-amz-content-sha256', $this->getPresignedPayload($request));
+ }
+
+ parent::signRequest($request, $credentials);
+ }
+
+ /**
+ * Override used to allow pre-signed URLs to be created for an
+ * in-determinate request payload.
+ */
+ protected function getPresignedPayload(RequestInterface $request)
+ {
+ $result = parent::getPresignedPayload($request);
+
+ // If the body is empty, then sign with 'UNSIGNED-PAYLOAD'
+ if ($result === self::DEFAULT_PAYLOAD) {
+ $result = hash('sha256', 'UNSIGNED-PAYLOAD');
+ }
+
+ return $result;
+ }
+
+ /**
+ * Amazon S3 does not double-encode the path component in the canonical req
+ */
+ protected function createCanonicalizedPath(RequestInterface $request)
+ {
+ return '/' . ltrim($request->getPath(), '/');
+ }
+}