delete recovery keys on disable

This commit is contained in:
Bjoern Schiessle 2015-03-31 19:24:52 +02:00 committed by Thomas Müller
parent ea6b53042d
commit dac94679c6
2 changed files with 18 additions and 11 deletions

View File

@ -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

View File

@ -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');
}
}
}