make sure that we always have a owner

Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
This commit is contained in:
Bjoern Schiessle 2017-07-17 13:13:27 +02:00
parent f7a2b96507
commit fff804c39e
No known key found for this signature in database
GPG Key ID: 2378A753E2BF04F6
1 changed files with 17 additions and 4 deletions

View File

@ -60,7 +60,7 @@ class Encryption implements IEncryptionModule {
/** @var string */ /** @var string */
private $user; private $user;
/** @var string */ /** @var array */
private $owner; private $owner;
/** @var string */ /** @var string */
@ -139,6 +139,7 @@ class Encryption implements IEncryptionModule {
$this->decryptAll = $decryptAll; $this->decryptAll = $decryptAll;
$this->logger = $logger; $this->logger = $logger;
$this->l = $il10n; $this->l = $il10n;
$this->owner = [];
$this->useMasterPassword = $util->isMasterKeyEnabled(); $this->useMasterPassword = $util->isMasterKeyEnabled();
} }
@ -177,7 +178,6 @@ class Encryption implements IEncryptionModule {
$this->path = $this->getPathToRealFile($path); $this->path = $this->getPathToRealFile($path);
$this->accessList = $accessList; $this->accessList = $accessList;
$this->user = $user; $this->user = $user;
$this->owner = $this->util->getOwner($path);
$this->isWriteOperation = false; $this->isWriteOperation = false;
$this->writeCache = ''; $this->writeCache = '';
@ -284,7 +284,7 @@ class Encryption implements IEncryptionModule {
} }
} }
$publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys, $this->owner); $publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys, $this->getOwner($path));
$encryptedKeyfiles = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys); $encryptedKeyfiles = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys);
$this->keyManager->setAllFileKeys($this->path, $encryptedKeyfiles); $this->keyManager->setAllFileKeys($this->path, $encryptedKeyfiles);
} }
@ -413,7 +413,7 @@ class Encryption implements IEncryptionModule {
} }
} }
$publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys, $this->owner); $publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys, $this->getOwner($path));
$encryptedFileKey = $this->crypt->multiKeyEncrypt($fileKey, $publicKeys); $encryptedFileKey = $this->crypt->multiKeyEncrypt($fileKey, $publicKeys);
@ -562,6 +562,19 @@ class Encryption implements IEncryptionModule {
return $path; return $path;
} }
/**
* get owner of a file
*
* @param string $path
* @return string
*/
protected function getOwner($path) {
if (!isset($this->owner[$path])) {
$this->owner[$path] = $this->util->getOwner($path);
}
return $this->owner[$path];
}
/** /**
* Check if the module is ready to be used by that specific user. * Check if the module is ready to be used by that specific user.
* In case a module is not ready - because e.g. key pairs have not been generated * In case a module is not ready - because e.g. key pairs have not been generated