aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Becker <christian@dabecka.de>2025-01-22 23:43:08 +0100
committerRichard Steinmetz <richard@steinmetz.cloud>2025-01-28 22:57:59 +0100
commitc25c5bbc00c7366406fa6b3af5e8230558ac804f (patch)
treefae7ff1c1485f0c4d3094f442a5f87b7013b81e2
parentbaa40e6e1986c19a326b2cb021031333b8bba7d0 (diff)
downloadnextcloud-server-c25c5bbc00c7366406fa6b3af5e8230558ac804f.tar.gz
nextcloud-server-c25c5bbc00c7366406fa6b3af5e8230558ac804f.zip
feat(S3): add SSE-C support in S3 External Storage
Just need to add the parameter and fix two calls. All other logic is already implemented and implicitly called through the S3ConnectionTrait fixes #33283 Signed-off-by: Christian Becker <christian@dabecka.de> Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
-rw-r--r--apps/files_external/lib/Lib/Backend/AmazonS3.php3
-rw-r--r--apps/files_external/lib/Lib/Storage/AmazonS3.php6
2 files changed, 6 insertions, 3 deletions
diff --git a/apps/files_external/lib/Lib/Backend/AmazonS3.php b/apps/files_external/lib/Lib/Backend/AmazonS3.php
index e345ed53f70..f71ca40cdfc 100644
--- a/apps/files_external/lib/Lib/Backend/AmazonS3.php
+++ b/apps/files_external/lib/Lib/Backend/AmazonS3.php
@@ -41,6 +41,9 @@ class AmazonS3 extends Backend {
(new DefinitionParameter('useMultipartCopy', $l->t('Enable multipart copy')))
->setType(DefinitionParameter::VALUE_BOOLEAN)
->setDefaultValue(true),
+ (new DefinitionParameter('sse_c_key', $l->t('SSE-C encryption key')))
+ ->setType(DefinitionParameter::VALUE_PASSWORD)
+ ->setFlag(DefinitionParameter::FLAG_OPTIONAL),
])
->addAuthScheme(AccessKey::SCHEME_AMAZONS3_ACCESSKEY)
->addAuthScheme(AuthMechanism::SCHEME_NULL)
diff --git a/apps/files_external/lib/Lib/Storage/AmazonS3.php b/apps/files_external/lib/Lib/Storage/AmazonS3.php
index 03a365fd559..1a866e8c22b 100644
--- a/apps/files_external/lib/Lib/Storage/AmazonS3.php
+++ b/apps/files_external/lib/Lib/Storage/AmazonS3.php
@@ -113,7 +113,7 @@ class AmazonS3 extends Common {
$this->objectCache[$key] = $this->getConnection()->headObject([
'Bucket' => $this->bucket,
'Key' => $key
- ])->toArray();
+ ] + $this->getSSECParameters())->toArray();
} catch (S3Exception $e) {
if ($e->getStatusCode() >= 500) {
throw $e;
@@ -207,7 +207,7 @@ class AmazonS3 extends Common {
'Key' => $path . '/',
'Body' => '',
'ContentType' => FileInfo::MIMETYPE_FOLDER
- ]);
+ ] + $this->getSSECParameters());
$this->testTimeout();
} catch (S3Exception $e) {
$this->logger->error($e->getMessage(), [
@@ -507,7 +507,7 @@ class AmazonS3 extends Common {
'Body' => '',
'ContentType' => $mimeType,
'MetadataDirective' => 'REPLACE',
- ]);
+ ] + $this->getSSECParameters());
$this->testTimeout();
} catch (S3Exception $e) {
$this->logger->error($e->getMessage(), [