Browse Source

make sure that all file keys are written to the key storage

tags/v8.1.0alpha1
Bjoern Schiessle 9 years ago
parent
commit
6c9251d9f8
2 changed files with 32 additions and 3 deletions
  1. 8
    3
      apps/encryption/lib/crypto/encryption.php
  2. 24
    0
      apps/encryption/lib/keymanager.php

+ 8
- 3
apps/encryption/lib/crypto/encryption.php View File

@@ -117,11 +117,16 @@ class Encryption implements IEncryptionModule {
$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;
}

+ 24
- 0
apps/encryption/lib/keymanager.php View File

@@ -173,6 +173,30 @@ class KeyManager {
$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
*

Loading…
Cancel
Save