$view = new \OC\Files\View('/');
$session = new \OCA\Files_Encryption\Session($view);
$user = \OCP\User::getUser();
$loginName = \OC::$server->getUserSession()->getLoginName();
// check new password
$passwordCorrect = \OCP\User::checkPassword($loginName, $newPassword);
if ($passwordCorrect !== false) {
    $proxyStatus = \OC_FileProxy::$enabled;
    \OC_FileProxy::$enabled = false;
    $encryptedKey = \OCA\Files_Encryption\Keymanager::getPrivateKey($view, $user);
    $decryptedKey = $encryptedKey ? \OCA\Files_Encryption\Crypt::decryptPrivateKey($encryptedKey, $oldPassword) : false;
    if ($decryptedKey) {
        $cipher = \OCA\Files_Encryption\Helper::getCipher();
        $encryptedKey = \OCA\Files_Encryption\Crypt::symmetricEncryptFileContent($decryptedKey, $newPassword, $cipher);
        if ($encryptedKey) {
            \OCA\Files_Encryption\Keymanager::setPrivateKey($encryptedKey, $user);
            $session->setPrivateKey($decryptedKey);
            $return = true;
        }
    } else {
        $result = false;
        $errorMessage = $l->t('The old password was not correct, please try again.');
    }
    \OC_FileProxy::$enabled = $proxyStatus;
} else {
    $result = false;
    $errorMessage = $l->t('The current log-in password was not correct, please try again.');
}
// success or failure
if ($return) {
    $session->setInitialized(\OCA\Files_Encryption\Session::INIT_SUCCESSFUL);
示例#2
0
 /**
  * @medium
  */
 function testSetPrivateKey()
 {
     $key = "dummy key";
     \OCA\Files_Encryption\Keymanager::setPrivateKey($key, 'dummyUser');
     $this->assertTrue($this->view->file_exists('/dummyUser/files_encryption/dummyUser.privateKey'));
     //clean up
     $this->view->deleteAll('/dummyUser');
 }