From dac94679c640a34f897802e9b61bcd871014e1ec Mon Sep 17 00:00:00 2001 From: Bjoern Schiessle Date: Tue, 31 Mar 2015 19:24:52 +0200 Subject: [PATCH] delete recovery keys on disable --- apps/encryption/lib/keymanager.php | 12 ++++++++++++ apps/encryption/lib/recovery.php | 17 ++++++----------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/apps/encryption/lib/keymanager.php b/apps/encryption/lib/keymanager.php index 9aae6fb2d9d..e8e92cd549a 100644 --- a/apps/encryption/lib/keymanager.php +++ b/apps/encryption/lib/keymanager.php @@ -352,6 +352,18 @@ class KeyManager { return $key; } + /** + * delete file key + * + * @param string $path + * @param string $keyId + * @return boolean + */ + public function deleteFileKey($path, $keyId) { + return $this->keyStorage->deleteFileKey($path, $keyId); + } + + /** * @param $path * @param $uid diff --git a/apps/encryption/lib/recovery.php b/apps/encryption/lib/recovery.php index b3da82a3cc5..00711e3bfab 100644 --- a/apps/encryption/lib/recovery.php +++ b/apps/encryption/lib/recovery.php @@ -182,7 +182,7 @@ class Recovery { if ($value === '1') { $this->addRecoveryKeys('/' . $this->user->getUID() . '/files/'); } else { - $this->removeRecoveryKeys(); + $this->removeRecoveryKeys('/' . $this->user->getUID() . '/files/'); } return true; @@ -194,10 +194,9 @@ class Recovery { /** * add recovery key to all encrypted files */ - private function addRecoveryKeys($path = '/') { + private function addRecoveryKeys($path) { $dirContent = $this->view->getDirectoryContent($path); foreach ($dirContent as $item) { - // get relative path from files_encryption/keyfiles/ $filePath = $item->getPath(); if ($item['type'] === 'dir') { $this->addRecoveryKeys($filePath . '/'); @@ -222,18 +221,14 @@ class Recovery { /** * remove recovery key to all encrypted files */ - private function removeRecoveryKeys($path = '/') { - return true; - $dirContent = $this->view->getDirectoryContent($this->keyfilesPath . $path); + private function removeRecoveryKeys($path) { + $dirContent = $this->view->getDirectoryContent($path); foreach ($dirContent as $item) { - // get relative path from files_encryption/keyfiles - $filePath = substr($item['path'], strlen('files_encryption/keyfiles')); + $filePath = $item->getPath(); if ($item['type'] === 'dir') { $this->removeRecoveryKeys($filePath . '/'); } else { - // remove '.key' extension from path e.g. 'file.txt.key' to 'file.txt' - $file = substr($filePath, 0, -4); - $this->view->unlink($this->shareKeysPath . '/' . $file . '.' . $this->recoveryKeyId . '.shareKey'); + $this->keyManager->deleteFileKey($filePath, $this->keyManager->getRecoveryKeyId() . '.shareKey'); } } } -- 2.39.5