Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjoern Schiessle <schiessle@owncloud.com>2013-11-20 14:02:22 +0400
committerBjoern Schiessle <schiessle@owncloud.com>2013-11-20 14:02:22 +0400
commit0c24c7c4203071542d1f1acc447bb6c6b18148db (patch)
tree14ddd6b250c938dba8d68a0697f957e308338c15 /apps/files_encryption/lib
parent8bc339413ba2221fea9447f91ae093f3f1cf2ab4 (diff)
only check if the key file exists to decide if it is an encrypted file or not.
This solves problems with external storage which doesn't support fseek
Diffstat (limited to 'apps/files_encryption/lib')
-rwxr-xr-xapps/files_encryption/lib/keymanager.php3
-rw-r--r--apps/files_encryption/lib/stream.php2
-rw-r--r--apps/files_encryption/lib/util.php23
3 files changed, 10 insertions, 18 deletions
diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php
index 6dadd12a62e..3427e8a963a 100755
--- a/apps/files_encryption/lib/keymanager.php
+++ b/apps/files_encryption/lib/keymanager.php
@@ -172,14 +172,13 @@ class Keymanager {
/**
* @brief retrieve keyfile for an encrypted file
* @param \OC_FilesystemView $view
- * @param $userId
* @param $filePath
* @internal param \OCA\Encryption\file $string name
* @return string file key or false
* @note The keyfile returned is asymmetrically encrypted. Decryption
* of the keyfile must be performed by client code
*/
- public static function getFileKey(\OC_FilesystemView $view, $userId, $filePath) {
+ public static function getFileKey(\OC_FilesystemView $view, $filePath) {
$util = new Util($view, \OCP\User::getUser());
diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php
index 1738955d1aa..206e3469023 100644
--- a/apps/files_encryption/lib/stream.php
+++ b/apps/files_encryption/lib/stream.php
@@ -250,7 +250,7 @@ class Stream {
// Fetch and decrypt keyfile
// Fetch existing keyfile
- $this->encKeyfile = Keymanager::getFileKey($this->rootView, $this->userId, $this->relPath);
+ $this->encKeyfile = Keymanager::getFileKey($this->rootView, $this->relPath);
// If a keyfile already exists
if ($this->encKeyfile) {
diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php
index f9beb9de670..4f27c2b00fb 100644
--- a/apps/files_encryption/lib/util.php
+++ b/apps/files_encryption/lib/util.php
@@ -367,7 +367,7 @@ class Util {
// scanning every file like this
// will eat server resources :(
if (
- Keymanager::getFileKey($this->view, $this->userId, $relPath)
+ Keymanager::getFileKey($this->view, $relPath)
&& $isEncryptedPath
) {
@@ -472,22 +472,15 @@ class Util {
*/
public function isEncryptedPath($path) {
- // Disable encryption proxy so data retrieved is in its
- // original form
- $proxyStatus = \OC_FileProxy::$enabled;
- \OC_FileProxy::$enabled = false;
+ $relPath = Helper::stripUserFilesPath($path);
- // we only need 24 byte from the last chunk
- $data = '';
- $handle = $this->view->fopen($path, 'r');
- if (is_resource($handle) && !fseek($handle, -24, SEEK_END)) {
- $data = fgets($handle);
- }
+ $fileKey = Keymanager::getFileKey($this->view, $relPath);
- // re-enable proxy
- \OC_FileProxy::$enabled = $proxyStatus;
+ if ($fileKey === false) {
+ return false;
+ }
- return Crypt::isCatfileContent($data);
+ return true;
}
@@ -1059,7 +1052,7 @@ class Util {
private function decryptKeyfile($filePath, $privateKey) {
// Get the encrypted keyfile
- $encKeyfile = Keymanager::getFileKey($this->view, $this->userId, $filePath);
+ $encKeyfile = Keymanager::getFileKey($this->view, $filePath);
// The file has a shareKey and must use it for decryption
$shareKey = Keymanager::getShareKey($this->view, $this->userId, $filePath);