コード例 #1
0
ファイル: hooks.php プロジェクト: olucao/owncloud-core
 /**
  * @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));
 }