diff options
author | Bjoern Schiessle <schiessle@owncloud.com> | 2014-05-19 15:08:02 +0200 |
---|---|---|
committer | Bjoern Schiessle <schiessle@owncloud.com> | 2014-05-19 15:53:50 +0200 |
commit | d9f715bdad6ced747924567638471a7402726abf (patch) | |
tree | d817676a46b03db8369d91b1fc69440643d6f383 /apps/files_encryption/tests/hooks.php | |
parent | 6c4b650524c4a8655984b89d4e7d105cfa61808c (diff) | |
download | nextcloud-server-d9f715bdad6ced747924567638471a7402726abf.tar.gz nextcloud-server-d9f715bdad6ced747924567638471a7402726abf.zip |
only start migration if the encryption was initialized; allow to overwrite keys if no files exists
Diffstat (limited to 'apps/files_encryption/tests/hooks.php')
-rw-r--r-- | apps/files_encryption/tests/hooks.php | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/apps/files_encryption/tests/hooks.php b/apps/files_encryption/tests/hooks.php index ee534f708c2..aa894d4fd9d 100644 --- a/apps/files_encryption/tests/hooks.php +++ b/apps/files_encryption/tests/hooks.php @@ -311,4 +311,46 @@ class Test_Encryption_Hooks extends \PHPUnit_Framework_TestCase { $this->rootView->unlink('/' . self::TEST_ENCRYPTION_HOOKS_USER1 . '/files/' . $this->folder); } + /** + * @brief replacing encryption keys during password change should be allowed + * until the user logged in for the first time + */ + public function testSetPassphrase() { + + $view = new \OC\Files\View(); + + // set user password for the first time + \OCA\Encryption\Hooks::postCreateUser(array('uid' => 'newUser', 'password' => 'newUserPassword')); + + $this->assertTrue($view->file_exists('public-keys/newUser.public.key')); + $this->assertTrue($view->file_exists('newUser/files_encryption/newUser.private.key')); + + // check if we are able to decrypt the private key + $encryptedKey = \OCA\Encryption\Keymanager::getPrivateKey($view, 'newUser'); + $privateKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, 'newUserPassword'); + $this->assertTrue(is_string($privateKey)); + + // change the password before the user logged-in for the first time, + // we can replace the encryption keys + \OCA\Encryption\Hooks::setPassphrase(array('uid' => 'newUser', 'password' => 'passwordChanged')); + + $encryptedKey = \OCA\Encryption\Keymanager::getPrivateKey($view, 'newUser'); + $privateKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged'); + $this->assertTrue(is_string($privateKey)); + + // now create a files folder to simulate a already used account + $view->mkdir('/newUser/files'); + + // change the password after the user logged in, now the password should not change + \OCA\Encryption\Hooks::setPassphrase(array('uid' => 'newUser', 'password' => 'passwordChanged2')); + + $encryptedKey = \OCA\Encryption\Keymanager::getPrivateKey($view, 'newUser'); + $privateKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged2'); + $this->assertFalse($privateKey); + + $privateKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged'); + $this->assertTrue(is_string($privateKey)); + + } + } |