diff options
author | Bjoern Schiessle <bjoern@schiessle.org> | 2017-07-17 13:13:27 +0200 |
---|---|---|
committer | Bjoern Schiessle <bjoern@schiessle.org> | 2017-07-20 11:43:39 +0200 |
commit | fff804c39e0f54742354e9fc6421487967be450d (patch) | |
tree | 0fea6141b78354193cb21d8479cb8c7c361e8df8 /apps | |
parent | f7a2b965078765f873d89c5a8cf0bf8ce00a9917 (diff) | |
download | nextcloud-server-fff804c39e0f54742354e9fc6421487967be450d.tar.gz nextcloud-server-fff804c39e0f54742354e9fc6421487967be450d.zip |
make sure that we always have a owner
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
Diffstat (limited to 'apps')
-rw-r--r-- | apps/encryption/lib/Crypto/Encryption.php | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/apps/encryption/lib/Crypto/Encryption.php b/apps/encryption/lib/Crypto/Encryption.php index a1965dd1a2a..650cb73d7d2 100644 --- a/apps/encryption/lib/Crypto/Encryption.php +++ b/apps/encryption/lib/Crypto/Encryption.php @@ -60,7 +60,7 @@ class Encryption implements IEncryptionModule { /** @var string */ private $user; - /** @var string */ + /** @var array */ private $owner; /** @var string */ @@ -139,6 +139,7 @@ class Encryption implements IEncryptionModule { $this->decryptAll = $decryptAll; $this->logger = $logger; $this->l = $il10n; + $this->owner = []; $this->useMasterPassword = $util->isMasterKeyEnabled(); } @@ -177,7 +178,6 @@ class Encryption implements IEncryptionModule { $this->path = $this->getPathToRealFile($path); $this->accessList = $accessList; $this->user = $user; - $this->owner = $this->util->getOwner($path); $this->isWriteOperation = false; $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); $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); @@ -563,6 +563,19 @@ class Encryption implements IEncryptionModule { } /** + * 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. * In case a module is not ready - because e.g. key pairs have not been generated * upon login this method can return false before any operation starts and might |