diff options
Diffstat (limited to 'apps/files_encryption/hooks/hooks.php')
-rw-r--r-- | apps/files_encryption/hooks/hooks.php | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index c6d4c16115a..9252a341fb7 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -82,8 +82,12 @@ class Hooks { }
+ \OC_FileProxy::$enabled = false;
+
$publicKey = Keymanager::getPublicKey( $view, $params['uid'] );
+ \OC_FileProxy::$enabled = false;
+
// Encrypt existing user files:
// This serves to upgrade old versions of the encryption
// app (see appinfo/spec.txt)
@@ -175,8 +179,9 @@ class Hooks { $view = new \OC_FilesystemView( '/' );
$userId = \OCP\User::getUser();
$util = new Util( $view, $userId );
+ $session = new Session();
- $shares = \OCP\Share::getUsersSharingFile( $params['fileTarget'] );
+ $shares = \OCP\Share::getUsersSharingFile( $params['fileTarget'], 1 );
$userIds = array();
@@ -202,41 +207,35 @@ class Hooks { }
- trigger_error("UIDS = ".var_export($userIds, 1));
-
$userPubKeys = Keymanager::getPublicKeys( $view, $userIds );
-// trigger_error("PUB KEYS = ".var_export($userPubKeys, 1));
-
- // TODO: Fetch path from Crypt{} getter
- $plainContent = $view->file_get_contents( $userId . '/' . 'files'. '/' . $params['fileTarget'] );
+ \OC_FileProxy::$enabled = false;
- // Generate new catfile and share keys
- if ( ! $encrypted = Crypt::multiKeyEncrypt( $plainContent, $userPubKeys ) ) {
+ // get the keyfile
+ $encKeyfile = Keymanager::getFileKey( $view, $userId, $params['fileTarget'] );
- // If the re-encryption failed, don't risk deleting data
- return false;
-
- }
+ $privateKey = $session->getPrivateKey();
- trigger_error("ENCRYPTED = ". var_export($encrypted, 1));
+ // decrypt the keyfile
+ $plainKeyfile = Crypt::keyDecrypt( $encKeyfile, $privateKey );
- // Save env keys to user folders
- foreach ( $encrypted['keys'] as $key ) {
+ // re-enc keyfile to sharekeys
+ $shareKeys = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys );
-// Keymanager::setShareKey( $view, $params['fileTarget'], $userId, $key );
+ // save sharekeys
+ if ( ! Keymanager::setShareKeys( $view, $params['fileTarget'], $shareKeys['keys'] ) ) {
+ trigger_error( "SET Share keys failed" );
+
}
- // Delete existing catfile
- // Check if keyfile exists (it won't if file has been shared before)
+ // Delete existing keyfile
// Do this last to ensure file is recoverable in case of error
- if ( $util->isEncryptedPath( $params['fileTarget'] ) ) {
-
- // NOTE: This will trigger an error if keyfile isn't found
-// Keymanager::deleteFileKey( $params['fileTarget'] );
+// Keymanager::deleteFileKey( $view, $userId, $params['fileTarget'] );
- }
+ \OC_FileProxy::$enabled = true;
+
+ return true;
}
|