Skip to content
Snippets Groups Projects
Commit 5ce4149e authored by Björn Schießle's avatar Björn Schießle
Browse files

fix first time encryption after app was enabled

parent 49113058
No related branches found
No related tags found
No related merge requests found
...@@ -421,7 +421,7 @@ class Util ...@@ -421,7 +421,7 @@ class Util
// If the file uses old // If the file uses old
// encryption system // encryption system
} elseif ( Crypt::isLegacyEncryptedContent( $this->tail( $filePath, 3 ), $relPath ) ) { } elseif ( Crypt::isLegacyEncryptedContent( $data, $relPath ) ) {
$found['legacy'][] = array( 'name' => $file, 'path' => $filePath ); $found['legacy'][] = array( 'name' => $file, 'path' => $filePath );
...@@ -672,39 +672,28 @@ class Util ...@@ -672,39 +672,28 @@ class Util
$relPath = $plainFile['path']; $relPath = $plainFile['path'];
//relative to /data //relative to /data
$rawPath = $this->userId . '/files/' . $plainFile['path']; $rawPath = '/'.$this->userId . '/files/' . $plainFile['path'];
// Open plain file handle for binary reading // Open plain file handle for binary reading
$plainHandle1 = $this->view->fopen( $rawPath, 'rb' ); $plainHandle = $this->view->fopen( $rawPath, 'rb' );
// 2nd handle for moving plain file - view->rename() doesn't work, this is a workaround // Open enc file handle for binary writing, with same filename as original plain file
$plainHandle2 = $this->view->fopen( $rawPath . '.plaintmp', 'wb' ); $encHandle = fopen( 'crypt://' . $relPath.'.tmp', 'wb' );
// Move plain file to a temporary location // Move plain file to a temporary location
stream_copy_to_stream( $plainHandle1, $plainHandle2 ); $size = stream_copy_to_stream( $plainHandle, $encHandle );
// Close access to original file
// $this->view->fclose( $plainHandle1 ); // not implemented in view{}
// Delete original plain file so we can rename enc file later
$this->view->unlink( $rawPath );
// Open enc file handle for binary writing, with same filename as original plain file fclose($encHandle);
$encHandle = fopen( 'crypt://' . $relPath, 'wb' );
// Save data from plain stream to new encrypted file via enc stream $fakeRoot = $this->view->getRoot();
// NOTE: Stream{} will be invoked for handling $this->view->chroot('/'.$this->userId.'/files');
// the encryption, and should handle all keys
// and their generation etc. automatically
stream_copy_to_stream( $plainHandle2, $encHandle );
// get file size $this->view->rename($relPath . '.tmp', $relPath);
$size = $this->view->filesize( $rawPath . '.plaintmp' );
// Delete temporary plain copy of file $this->view->chroot($fakeRoot);
$this->view->unlink( $rawPath . '.plaintmp' );
// Add the file to the cache // Add the file to the cache
\OC\Files\Filesystem::putFileInfo( $plainFile['path'], array( 'encrypted' => true, 'size' => $size, 'unencrypted_size' => $size ) ); \OC\Files\Filesystem::putFileInfo( $relPath, array( 'encrypted' => true, 'size' => $size, 'unencrypted_size' => $size ) );
} }
// Encrypt legacy encrypted files // Encrypt legacy encrypted files
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment