aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Repair/NC20/EncryptionLegacyCipher.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/Repair/NC20/EncryptionLegacyCipher.php')
-rw-r--r--lib/private/Repair/NC20/EncryptionLegacyCipher.php49
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/private/Repair/NC20/EncryptionLegacyCipher.php b/lib/private/Repair/NC20/EncryptionLegacyCipher.php
new file mode 100644
index 00000000000..89473ffd5e8
--- /dev/null
+++ b/lib/private/Repair/NC20/EncryptionLegacyCipher.php
@@ -0,0 +1,49 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OC\Repair\NC20;
+
+use OCP\Encryption\IManager;
+use OCP\IConfig;
+use OCP\Migration\IOutput;
+use OCP\Migration\IRepairStep;
+
+class EncryptionLegacyCipher implements IRepairStep {
+ /** @var IConfig */
+ private $config;
+ /** @var IManager */
+ private $manager;
+
+ public function __construct(IConfig $config,
+ IManager $manager) {
+ $this->config = $config;
+ $this->manager = $manager;
+ }
+
+ public function getName(): string {
+ return 'Keep legacy encryption enabled';
+ }
+
+ private function shouldRun(): bool {
+ $versionFromBeforeUpdate = $this->config->getSystemValueString('version', '0.0.0.0');
+ return version_compare($versionFromBeforeUpdate, '20.0.0.0', '<=');
+ }
+
+ public function run(IOutput $output): void {
+ if (!$this->shouldRun()) {
+ return;
+ }
+
+ $masterKeyId = $this->config->getAppValue('encryption', 'masterKeyId');
+ if ($this->manager->isEnabled() || !empty($masterKeyId)) {
+ if ($this->config->getSystemValue('encryption.legacy_format_support', '') === '') {
+ $this->config->setSystemValue('encryption.legacy_format_support', true);
+ }
+ }
+ }
+}