summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorBjörn Schießle <bjoern@schiessle.org>2015-04-29 09:43:54 +0200
committerBjörn Schießle <bjoern@schiessle.org>2015-04-29 09:43:54 +0200
commit6ebb021359007b2c138c5dc4f9a7b2d3cb783948 (patch)
tree306516123b4aafa8d11333dc436e67251c48813c /apps
parent3e06fd934238f345220254e4b197f11413421912 (diff)
parent7d05f387fb01c1b72ab6a21951f6d86d2bb99003 (diff)
downloadnextcloud-server-6ebb021359007b2c138c5dc4f9a7b2d3cb783948.tar.gz
nextcloud-server-6ebb021359007b2c138c5dc4f9a7b2d3cb783948.zip
Merge pull request #15911 from owncloud/enc_create_header_for_new_key
make sure that we create a header for the encrypted private key
Diffstat (limited to 'apps')
-rw-r--r--apps/encryption/hooks/userhooks.php4
-rw-r--r--apps/encryption/tests/hooks/UserHooksTest.php13
2 files changed, 14 insertions, 3 deletions
diff --git a/apps/encryption/hooks/userhooks.php b/apps/encryption/hooks/userhooks.php
index b09b8e7049a..a86b8662781 100644
--- a/apps/encryption/hooks/userhooks.php
+++ b/apps/encryption/hooks/userhooks.php
@@ -226,7 +226,7 @@ class UserHooks implements IHook {
// Save private key
if ($encryptedPrivateKey) {
$this->keyManager->setPrivateKey($this->user->getUser()->getUID(),
- $encryptedPrivateKey);
+ $this->crypt->generateHeader() . $encryptedPrivateKey);
} else {
$this->logger->error('Encryption could not update users encryption password');
}
@@ -263,7 +263,7 @@ class UserHooks implements IHook {
$newUserPassword);
if ($encryptedKey) {
- $this->keyManager->setPrivateKey($user, $encryptedKey);
+ $this->keyManager->setPrivateKey($user, $this->crypt->generateHeader() . $encryptedKey);
if ($recoveryPassword) { // if recovery key is set we can re-encrypt the key files
$this->recovery->recoverUsersFiles($recoveryPassword, $user);
diff --git a/apps/encryption/tests/hooks/UserHooksTest.php b/apps/encryption/tests/hooks/UserHooksTest.php
index bcfb33e86cb..b0cc9cc924a 100644
--- a/apps/encryption/tests/hooks/UserHooksTest.php
+++ b/apps/encryption/tests/hooks/UserHooksTest.php
@@ -11,6 +11,7 @@
namespace OCA\Encryption\Tests\Hooks;
+use OCA\Encryption\Crypto\Crypt;
use OCA\Encryption\Hooks\UserHooks;
use Test\TestCase;
@@ -101,8 +102,18 @@ class UserHooksTest extends TestCase {
->method('symmetricEncryptFileContent')
->willReturn(true);
+ $this->cryptMock->expects($this->any())
+ ->method('generateHeader')
+ ->willReturn(Crypt::HEADER_START . ':Cipher:test:' . Crypt::HEADER_END);
+
$this->keyManagerMock->expects($this->exactly(4))
- ->method('setPrivateKey');
+ ->method('setPrivateKey')
+ ->willReturnCallback(function ($user, $key) {
+ $header = substr($key, 0, strlen(Crypt::HEADER_START));
+ $this->assertSame(
+ Crypt::HEADER_START,
+ $header, 'every encrypted file should start with a header');
+ });
$this->assertNull($this->instance->setPassphrase($this->params));
$this->params['recoveryPassword'] = 'password';