]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add recovery key on public upload
authorBjoern Schiessle <bjoern@schiessle.org>
Thu, 6 Jul 2017 09:06:48 +0000 (11:06 +0200)
committerBjoern Schiessle <bjoern@schiessle.org>
Thu, 20 Jul 2017 09:43:39 +0000 (11:43 +0200)
In order to decide if a recovery key needs to be added we always
need to check the files owner settings and not the settings of
the currently logged in user.

Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
apps/encryption/lib/Crypto/Encryption.php

index 7f7665a24fcc92114b04c694bddab1ae64cb427d..a1965dd1a2af167682dbdc8d204feb6585625c39 100644 (file)
@@ -60,6 +60,9 @@ class Encryption implements IEncryptionModule {
        /** @var string */
        private $user;
 
+       /** @var  string */
+       private $owner;
+
        /** @var string */
        private $fileKey;
 
@@ -174,6 +177,7 @@ 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 = '';
 
@@ -280,13 +284,15 @@ class Encryption implements IEncryptionModule {
                                }
                        }
 
-                       $publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys, $this->user);
+                       $publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys, $this->owner);
                        $encryptedKeyfiles = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys);
                        $this->keyManager->setAllFileKeys($this->path, $encryptedKeyfiles);
                }
                return $result;
        }
 
+
+
        /**
         * encrypt data
         *
@@ -407,7 +413,7 @@ class Encryption implements IEncryptionModule {
                                }
                        }
 
-                       $publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys, $uid);
+                       $publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys, $this->owner);
 
                        $encryptedFileKey = $this->crypt->multiKeyEncrypt($fileKey, $publicKeys);