Merge pull request #15598 from owncloud/fix-enc-file-size-master
Fix file size of encrypted files
This commit is contained in:
commit
4f0437fbde
|
@ -245,7 +245,7 @@ class Crypt {
|
|||
if (!empty($header)) {
|
||||
$privateKey = substr($privateKey,
|
||||
strpos($privateKey,
|
||||
self::HEADER_END) + strlen(self::HEADER_START));
|
||||
self::HEADER_END) + strlen(self::HEADER_END));
|
||||
}
|
||||
|
||||
$plainKey = $this->symmetricDecryptFileContent($privateKey,
|
||||
|
|
|
@ -308,16 +308,6 @@ class Encryption implements IEncryptionModule {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* calculate unencrypted size
|
||||
*
|
||||
* @param string $path to file
|
||||
* @return integer unencrypted size
|
||||
*/
|
||||
public function calculateUnencryptedSize($path) {
|
||||
// TODO: Implement calculateUnencryptedSize() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* get size of the unencrypted payload per block.
|
||||
* ownCloud read/write files with a block size of 8192 byte
|
||||
|
|
|
@ -119,16 +119,6 @@ class DummyModule implements IEncryptionModule {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* calculate unencrypted size
|
||||
*
|
||||
* @param string $path to file
|
||||
* @return integer unencrypted size
|
||||
*/
|
||||
public function calculateUnencryptedSize($path) {
|
||||
return 42;
|
||||
}
|
||||
|
||||
public function getUnencryptedBlockSize() {
|
||||
return 6126;
|
||||
}
|
||||
|
|
|
@ -91,21 +91,23 @@ class Encryption extends Wrapper {
|
|||
*/
|
||||
public function filesize($path) {
|
||||
$fullPath = $this->getFullPath($path);
|
||||
$size = $this->storage->filesize($path);
|
||||
|
||||
$info = $this->getCache()->get($path);
|
||||
|
||||
if (isset($this->unencryptedSize[$fullPath])) {
|
||||
$size = $this->unencryptedSize[$fullPath];
|
||||
|
||||
if (isset($info['fileid'])) {
|
||||
$info['encrypted'] = true;
|
||||
$info['size'] = $size;
|
||||
$this->getCache()->put($path, $info);
|
||||
}
|
||||
return $size;
|
||||
}
|
||||
|
||||
if (isset($info['fileid'])) {
|
||||
$info['encrypted'] = true;
|
||||
$info['size'] = $size;
|
||||
$this->getCache()->put($path, $info);
|
||||
if (isset($info['fileid']) && $info['encrypted']) {
|
||||
return $info['size'];
|
||||
}
|
||||
|
||||
return $size;
|
||||
return $this->storage->filesize($path);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -181,6 +183,9 @@ class Encryption extends Wrapper {
|
|||
$result = $this->storage->rename($path1, $path2);
|
||||
if ($result) {
|
||||
$target = $this->getFullPath($path2);
|
||||
if (isset($this->unencryptedSize[$source])) {
|
||||
$this->unencryptedSize[$target] = $this->unencryptedSize[$source];
|
||||
}
|
||||
$encryptionModule = $this->getEncryptionModule($path2);
|
||||
if ($encryptionModule) {
|
||||
$keyStorage = $this->getKeyStorage($encryptionModule->getId());
|
||||
|
|
|
@ -96,14 +96,6 @@ interface IEncryptionModule {
|
|||
*/
|
||||
public function shouldEncrypt($path);
|
||||
|
||||
/**
|
||||
* calculate unencrypted size
|
||||
*
|
||||
* @param string $path to file
|
||||
* @return integer unencrypted size
|
||||
*/
|
||||
public function calculateUnencryptedSize($path);
|
||||
|
||||
/**
|
||||
* get size of the unencrypted payload per block.
|
||||
* ownCloud read/write files with a block size of 8192 byte
|
||||
|
|
|
@ -74,7 +74,7 @@ class Encryption extends \Test\Files\Storage\Storage {
|
|||
protected function buildMockModule() {
|
||||
$encryptionModule = $this->getMockBuilder('\OCP\Encryption\IEncryptionModule')
|
||||
->disableOriginalConstructor()
|
||||
->setMethods(['getId', 'getDisplayName', 'begin', 'end', 'encrypt', 'decrypt', 'update', 'shouldEncrypt', 'calculateUnencryptedSize', 'getUnencryptedBlockSize'])
|
||||
->setMethods(['getId', 'getDisplayName', 'begin', 'end', 'encrypt', 'decrypt', 'update', 'shouldEncrypt', 'getUnencryptedBlockSize'])
|
||||
->getMock();
|
||||
|
||||
$encryptionModule->expects($this->any())->method('getId')->willReturn('UNIT_TEST_MODULE');
|
||||
|
@ -85,20 +85,9 @@ class Encryption extends \Test\Files\Storage\Storage {
|
|||
$encryptionModule->expects($this->any())->method('decrypt')->willReturnArgument(0);
|
||||
$encryptionModule->expects($this->any())->method('update')->willReturn(true);
|
||||
$encryptionModule->expects($this->any())->method('shouldEncrypt')->willReturn(true);
|
||||
$encryptionModule->expects($this->any())->method('calculateUnencryptedSize')->willReturn(42);
|
||||
$encryptionModule->expects($this->any())->method('getUnencryptedBlockSize')->willReturn(8192);
|
||||
return $encryptionModule;
|
||||
}
|
||||
|
||||
// public function testMkDirRooted() {
|
||||
// $this->instance->mkdir('bar');
|
||||
// $this->assertTrue($this->sourceStorage->is_dir('foo/bar'));
|
||||
// }
|
||||
//
|
||||
// public function testFilePutContentsRooted() {
|
||||
// $this->instance->file_put_contents('bar', 'asd');
|
||||
// $this->assertEquals('asd', $this->sourceStorage->file_get_contents('foo/bar'));
|
||||
// }
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -88,7 +88,7 @@ class Encryption extends \Test\TestCase {
|
|||
protected function buildMockModule() {
|
||||
$encryptionModule = $this->getMockBuilder('\OCP\Encryption\IEncryptionModule')
|
||||
->disableOriginalConstructor()
|
||||
->setMethods(['getId', 'getDisplayName', 'begin', 'end', 'encrypt', 'decrypt', 'update', 'shouldEncrypt', 'calculateUnencryptedSize', 'getUnencryptedBlockSize'])
|
||||
->setMethods(['getId', 'getDisplayName', 'begin', 'end', 'encrypt', 'decrypt', 'update', 'shouldEncrypt', 'getUnencryptedBlockSize'])
|
||||
->getMock();
|
||||
|
||||
$encryptionModule->expects($this->any())->method('getId')->willReturn('UNIT_TEST_MODULE');
|
||||
|
@ -99,7 +99,6 @@ class Encryption extends \Test\TestCase {
|
|||
$encryptionModule->expects($this->any())->method('decrypt')->willReturnArgument(0);
|
||||
$encryptionModule->expects($this->any())->method('update')->willReturn(true);
|
||||
$encryptionModule->expects($this->any())->method('shouldEncrypt')->willReturn(true);
|
||||
$encryptionModule->expects($this->any())->method('calculateUnencryptedSize')->willReturn(42);
|
||||
$encryptionModule->expects($this->any())->method('getUnencryptedBlockSize')->willReturn(8192);
|
||||
return $encryptionModule;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue