summaryrefslogtreecommitdiffstats
path: root/lib/private/encryption/keys
diff options
context:
space:
mode:
authorBjoern Schiessle <schiessle@owncloud.com>2015-03-20 16:24:44 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2015-04-07 13:30:27 +0200
commit506222567e71fc0d77fa77ee7805c93fa7655b6c (patch)
treeaa331e89c0afde54cdf95db19eabe7bf715d5ab4 /lib/private/encryption/keys
parente2f714263f50a27ed0894710faead3e9f9d1d9d6 (diff)
downloadnextcloud-server-506222567e71fc0d77fa77ee7805c93fa7655b6c.tar.gz
nextcloud-server-506222567e71fc0d77fa77ee7805c93fa7655b6c.zip
add deleteKey methods to key storage
Diffstat (limited to 'lib/private/encryption/keys')
-rw-r--r--lib/private/encryption/keys/storage.php69
1 files changed, 62 insertions, 7 deletions
diff --git a/lib/private/encryption/keys/storage.php b/lib/private/encryption/keys/storage.php
index fba86e1737c..8f1822ca492 100644
--- a/lib/private/encryption/keys/storage.php
+++ b/lib/private/encryption/keys/storage.php
@@ -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