$this->writeCache = '';
}
$publicKeys = array();
- foreach ($this->accessList['users'] as $user) {
- $publicKeys[] = $this->keymanager->getPublicKey($user);
+ foreach ($this->accessList['users'] as $uid) {
+ $publicKeys[$uid] = $this->keymanager->getPublicKey($uid);
}
- $result = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys);
+ $encryptedKeyfiles = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys);
+
+ $this->keymanager->setFileKey($path, $encryptedKeyfiles['data']);
+ foreach ($encryptedKeyfiles['keys'] as $uid => $keyFile) {
+ $this->keymanager->setShareKey($path, $uid, $keyFile);
+ }
}
return $result;
}
$key);
}
+ /**
+ * write file key to key storage
+ *
+ * @param string $path
+ * @param string $key
+ * @return boolean
+ */
+ public function setFileKey($path, $key) {
+ return $this->keyStorage->setFileKey($path, $this->fileKeyId, $key);
+ }
+
+ /**
+ * write share key to the key storage
+ *
+ * @param string $path
+ * @param string $uid
+ * @param string $key
+ * @return boolean
+ */
+ public function setShareKey($path, $uid, $key) {
+ $keyId = $uid . '.' . $this->shareKeyId;
+ return $this->keyStorage->setFileKey($path, $keyId, $key);
+ }
+
/**
* Decrypt private key and store it
*