Skip to content
Snippets Groups Projects
Commit 37e82684 authored by Björn Schießle's avatar Björn Schießle Committed by Thomas Müller
Browse files

make sharing and unsharing work

parent 8dde9325
No related branches found
No related tags found
No related merge requests found
...@@ -122,11 +122,7 @@ class Encryption implements IEncryptionModule { ...@@ -122,11 +122,7 @@ class Encryption implements IEncryptionModule {
} }
$encryptedKeyfiles = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys); $encryptedKeyfiles = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys);
$this->keymanager->setAllFileKeys($path, $encryptedKeyfiles);
$this->keymanager->setFileKey($path, $encryptedKeyfiles['data']);
foreach ($encryptedKeyfiles['keys'] as $uid => $keyFile) {
$this->keymanager->setShareKey($path, $uid, $keyFile);
}
} }
return $result; return $result;
} }
...@@ -218,11 +214,22 @@ class Encryption implements IEncryptionModule { ...@@ -218,11 +214,22 @@ class Encryption implements IEncryptionModule {
* update encrypted file, e.g. give additional users access to the file * update encrypted file, e.g. give additional users access to the file
* *
* @param string $path path to the file which should be updated * @param string $path path to the file which should be updated
* @param string $uid of the user who performs the operation
* @param array $accessList who has access to the file contains the key 'users' and 'public' * @param array $accessList who has access to the file contains the key 'users' and 'public'
* @return boolean * @return boolean
*/ */
public function update($path, $accessList) { public function update($path, $uid, $accessList) {
// TODO: Implement update() method. $fileKey = $this->keymanager->getFileKey($path, $uid);
foreach ($accessList['users'] as $user) {
$publicKeys[$user] = $this->keymanager->getPublicKey($user);
}
$encryptedFileKey = $this->crypt->multiKeyEncrypt($fileKey, $publicKeys);
$this->keymanager->deleteAllFileKeys($path);
$this->keymanager->setAllFileKeys($path, $encryptedFileKey);
return true;
} }
/** /**
......
...@@ -183,6 +183,19 @@ class KeyManager { ...@@ -183,6 +183,19 @@ class KeyManager {
return $this->keyStorage->setFileKey($path, $this->fileKeyId, $key); return $this->keyStorage->setFileKey($path, $this->fileKeyId, $key);
} }
/**
* set all file keys (the file key and the corresponding share keys)
*
* @param string $path
* @param array $keys
*/
public function setAllFileKeys($path, $keys) {
$this->setFileKey($path, $keys['data']);
foreach ($keys['keys'] as $uid => $keyFile) {
$this->setShareKey($path, $uid, $keyFile);
}
}
/** /**
* write share key to the key storage * write share key to the key storage
* *
...@@ -405,6 +418,10 @@ class KeyManager { ...@@ -405,6 +418,10 @@ class KeyManager {
return $this->keyStorage->deleteUserKey($uid, $this->privateKeyId); return $this->keyStorage->deleteUserKey($uid, $this->privateKeyId);
} }
public function deleteAllFileKeys($path) {
return $this->keyStorage->deleteAllFileKeys($path);
}
/** /**
* @param array $userIds * @param array $userIds
* @return array * @return array
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment