Browse Source

delete recovery keys on disable

tags/v8.1.0alpha1
Bjoern Schiessle 9 years ago
parent
commit
dac94679c6
2 changed files with 18 additions and 11 deletions
  1. 12
    0
      apps/encryption/lib/keymanager.php
  2. 6
    11
      apps/encryption/lib/recovery.php

+ 12
- 0
apps/encryption/lib/keymanager.php 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

+ 6
- 11
apps/encryption/lib/recovery.php 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');
}
}
}

Loading…
Cancel
Save