diff options
author | Robin Appelman <robin@icewind.nl> | 2025-05-09 16:34:58 +0200 |
---|---|---|
committer | backportbot[bot] <backportbot[bot]@users.noreply.github.com> | 2025-05-12 11:27:33 +0000 |
commit | 1c5658cd336b2e39855e31ab6e5cacfa4353d08b (patch) | |
tree | 1128e8915fd35c19f1ebc02bd882ce1b00947f16 | |
parent | 7d69f9cbeb93dbbebf236804b31abe1e36f36497 (diff) | |
download | nextcloud-server-backport/52706/stable31.tar.gz nextcloud-server-backport/52706/stable31.zip |
feat: add more encryption checks to info:filebackport/52706/stable31
Signed-off-by: Robin Appelman <robin@icewind.nl>
-rw-r--r-- | core/Command/Info/File.php | 10 | ||||
-rw-r--r-- | lib/private/Files/Storage/Wrapper/Encryption.php | 12 |
2 files changed, 22 insertions, 0 deletions
diff --git a/core/Command/Info/File.php b/core/Command/Info/File.php index 2a557b6768e..040a81ec3e3 100644 --- a/core/Command/Info/File.php +++ b/core/Command/Info/File.php @@ -8,6 +8,7 @@ declare(strict_types=1); namespace OC\Core\Command\Info; use OC\Files\ObjectStore\ObjectStoreStorage; +use OC\Files\Storage\Wrapper\Encryption; use OC\Files\View; use OCA\Files_External\Config\ExternalMountPoint; use OCA\GroupFolders\Mount\GroupMountPoint; @@ -71,6 +72,15 @@ class File extends Command { } else { $output->writeln(' <error>encryption key not found</error> should be located at: ' . $keyPath); } + $storage = $node->getStorage(); + if ($storage->instanceOfStorage(Encryption::class)) { + /** @var Encryption $storage */ + if (!$storage->hasValidHeader($node->getInternalPath())) { + $output->writeln(' <error>file doesn\'t have a valid encryption header</error>'); + } + } else { + $output->writeln(' <error>file is marked as encrypted, but encryption doesn\'t seem to be setup</error>'); + } } if ($node instanceof Folder && $node->isEncrypted() || $node instanceof OCPFile && $node->getParent()->isEncrypted()) { diff --git a/lib/private/Files/Storage/Wrapper/Encryption.php b/lib/private/Files/Storage/Wrapper/Encryption.php index ba23f3c43ec..427ec06c2bb 100644 --- a/lib/private/Files/Storage/Wrapper/Encryption.php +++ b/lib/private/Files/Storage/Wrapper/Encryption.php @@ -894,4 +894,16 @@ class Encryption extends Wrapper { public function setEnabled(bool $enabled): void { $this->enabled = $enabled; } + + /** + * Check if the on-disk data for a file has a valid encrypted header + * + * @param string $path + * @return bool + */ + public function hasValidHeader(string $path): bool { + $firstBlock = $this->readFirstBlock($path); + $header = $this->util->parseRawHeader($firstBlock); + return (count($header) > 0); + } } |