]> source.dussan.org Git - nextcloud-server.git/commitdiff
add deleteKey methods to key storage
authorBjoern Schiessle <schiessle@owncloud.com>
Fri, 20 Mar 2015 15:24:44 +0000 (16:24 +0100)
committerThomas Müller <thomas.mueller@tmit.eu>
Tue, 7 Apr 2015 11:30:27 +0000 (13:30 +0200)
lib/private/encryption/keys/storage.php
lib/public/encryption/keys/istorage.php

index fba86e1737cb0a771003045bd1edc7408beeb76c..8f1822ca4922340f24aa1393ddfd4daf88182736 100644 (file)
@@ -67,8 +67,7 @@ class Storage implements \OCP\Encryption\Keys\IStorage {
         * @return mixed key
         */
        public function getUserKey($uid, $keyId) {
-               $path = '/' . $uid . $this->encryption_base_dir . '/'
-                       . $this->encryptionModuleId . '/' . $uid . '.' . $keyId;
+               $path = $this->constructUserKeyPath($keyId, $uid);
                return $this->getKey($path);
        }
 
@@ -94,7 +93,7 @@ class Storage implements \OCP\Encryption\Keys\IStorage {
         * @return mixed key
         */
        public function getSystemUserKey($keyId) {
-               $path = $this->encryption_base_dir . '/' . $this->encryptionModuleId . '/' . $keyId;
+               $path = $this->constructUserKeyPath($keyId);
                return $this->getKey($path);
        }
 
@@ -106,8 +105,7 @@ class Storage implements \OCP\Encryption\Keys\IStorage {
         * @param mixed $key
         */
        public function setUserKey($uid, $keyId, $key) {
-               $path = '/' . $uid . $this->encryption_base_dir . '/'
-                       . $this->encryptionModuleId . '/' . $uid . '.' . $keyId;
+               $path = $this->constructUserKeyPath($keyId, $uid);
                return $this->setKey($path, $key);
        }
 
@@ -133,11 +131,68 @@ class Storage implements \OCP\Encryption\Keys\IStorage {
         * @return mixed key
         */
        public function setSystemUserKey($keyId, $key) {
-               $path = $this->encryption_base_dir . '/'
-                       . $this->encryptionModuleId . '/' . $keyId;
+               $path = $this->constructUserKeyPath($keyId);
                return $this->setKey($path, $key);
        }
 
+       /**
+        * delete user specific key
+        *
+        * @param string $uid ID if the user for whom we want to delete the key
+        * @param string $keyId id of the key
+        *
+        * @return boolean
+        */
+       public function deleteUserKey($uid, $keyId) {
+               $path = $this->constructUserKeyPath($keyId, $uid);
+               return $this->view->unlink($path);
+       }
+
+       /**
+        * delete file specific key
+        *
+        * @param string $path path to file
+        * @param string $keyId id of the key
+        *
+        * @return boolean
+        */
+       public function deleteFileKey($path, $keyId) {
+               $keyDir = $this->getFileKeyDir($path);
+               return $this->view->unlink($keyDir . $keyId);
+       }
+
+       /**
+        * delete system-wide encryption keys not related to a specific user,
+        * e.g something like a key for public link shares
+        *
+        * @param string $keyId id of the key
+        *
+        * @return boolean
+        */
+       public function deleteSystemUserKey($keyId) {
+               $path = $this->constructUserKeyPath($keyId);
+               return $this->view->unlink($path);
+       }
+
+
+       /**
+        * construct path to users key
+        *
+        * @param string $keyId
+        * @param string $uid
+        * @return string
+        */
+       protected function constructUserKeyPath($keyId, $uid = null) {
+
+               if ($uid === null) {
+                       $path = $this->encryption_base_dir . '/' . $this->encryptionModuleId . '/' . $keyId;
+               } else {
+                       $path = '/' . $uid . $this->encryption_base_dir . '/'
+                               . $this->encryptionModuleId . '/' . $uid . '.' . $keyId;
+               }
+
+               return $path;
+       }
 
        /**
         * read key from hard disk
index c4c970804e9d40d4bfd0e49d4b685b2ebc1b13cc..3a2562102ce5d5374c3c029790f9d259aafbeabf 100644 (file)
@@ -113,6 +113,7 @@ interface IStorage {
        public function deleteAllFileKeys($path);
 
        /**
+
         * delete system-wide encryption keys not related to a specific user,
         * e.g something like a key for public link shares
         *