Merge pull request #14472 from owncloud/feature/wipencryptionapp
encryption 2.0 app
This commit is contained in:
commit
1fbf5d86df
|
@ -1,8 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Morris Jobke <hey@morrisjobke.de>
|
||||
* @author Thomas Müller <thomas.mueller@tmit.eu>
|
||||
*
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 2/19/15, 9:52 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
|
@ -20,7 +19,9 @@
|
|||
*
|
||||
*/
|
||||
|
||||
use OCA\Files_Encryption\Command\MigrateKeys;
|
||||
namespace OCA\Encryption\AppInfo;
|
||||
|
||||
$userManager = OC::$server->getUserManager();
|
||||
$application->add(new MigrateKeys($userManager));
|
||||
$app = new Application();
|
||||
$app->registerEncryptionModule();
|
||||
$app->registerHooks();
|
||||
$app->registerSettings();
|
|
@ -0,0 +1,190 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 3/11/15, 11:03 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
namespace OCA\Encryption\AppInfo;
|
||||
|
||||
|
||||
use OC\Files\Filesystem;
|
||||
use OC\Files\View;
|
||||
use OCA\Encryption\Crypto\Crypt;
|
||||
use OCA\Encryption\HookManager;
|
||||
use OCA\Encryption\Hooks\UserHooks;
|
||||
use OCA\Encryption\KeyManager;
|
||||
use OCA\Encryption\Recovery;
|
||||
use OCA\Encryption\Users\Setup;
|
||||
use OCA\Encryption\Util;
|
||||
use OCP\App;
|
||||
use OCP\AppFramework\IAppContainer;
|
||||
use OCP\Encryption\IManager;
|
||||
use OCP\IConfig;
|
||||
|
||||
|
||||
class Application extends \OCP\AppFramework\App {
|
||||
/**
|
||||
* @var IManager
|
||||
*/
|
||||
private $encryptionManager;
|
||||
/**
|
||||
* @var IConfig
|
||||
*/
|
||||
private $config;
|
||||
|
||||
/**
|
||||
* @param $appName
|
||||
* @param array $urlParams
|
||||
*/
|
||||
public function __construct($urlParams = array()) {
|
||||
parent::__construct('encryption', $urlParams);
|
||||
$this->encryptionManager = \OC::$server->getEncryptionManager();
|
||||
$this->config = \OC::$server->getConfig();
|
||||
$this->registerServices();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function registerHooks() {
|
||||
if (!$this->config->getSystemValue('maintenance', false)) {
|
||||
|
||||
$container = $this->getContainer();
|
||||
$server = $container->getServer();
|
||||
// Register our hooks and fire them.
|
||||
$hookManager = new HookManager();
|
||||
|
||||
$hookManager->registerHook([
|
||||
new UserHooks($container->query('KeyManager'),
|
||||
$server->getLogger(),
|
||||
$container->query('UserSetup'),
|
||||
$server->getUserSession(),
|
||||
$container->query('Util'),
|
||||
new \OCA\Encryption\Session($server->getSession()),
|
||||
$container->query('Crypt'),
|
||||
$container->query('Recovery'))
|
||||
]);
|
||||
|
||||
$hookManager->fireHooks();
|
||||
|
||||
} else {
|
||||
// Logout user if we are in maintenance to force re-login
|
||||
$this->getContainer()->getServer()->getUserSession()->logout();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function registerEncryptionModule() {
|
||||
$container = $this->getContainer();
|
||||
$container->registerService('EncryptionModule', function (IAppContainer $c) {
|
||||
return new \OCA\Encryption\Crypto\Encryption(
|
||||
$c->query('Crypt'),
|
||||
$c->query('KeyManager'),
|
||||
$c->query('Util'));
|
||||
});
|
||||
$module = $container->query('EncryptionModule');
|
||||
$this->encryptionManager->registerEncryptionModule($module);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function registerServices() {
|
||||
$container = $this->getContainer();
|
||||
|
||||
$container->registerService('Crypt',
|
||||
function (IAppContainer $c) {
|
||||
$server = $c->getServer();
|
||||
return new Crypt($server->getLogger(),
|
||||
$server->getUserSession(),
|
||||
$server->getConfig());
|
||||
});
|
||||
|
||||
$container->registerService('KeyManager',
|
||||
function (IAppContainer $c) {
|
||||
$server = $c->getServer();
|
||||
|
||||
return new KeyManager($server->getEncryptionKeyStorage(\OCA\Encryption\Crypto\Encryption::ID),
|
||||
$c->query('Crypt'),
|
||||
$server->getConfig(),
|
||||
$server->getUserSession(),
|
||||
new \OCA\Encryption\Session($server->getSession()),
|
||||
$server->getLogger(),
|
||||
$c->query('Util')
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
$container->registerService('Recovery',
|
||||
function (IAppContainer $c) {
|
||||
$server = $c->getServer();
|
||||
|
||||
return new Recovery(
|
||||
$server->getUserSession(),
|
||||
$c->query('Crypt'),
|
||||
$server->getSecureRandom(),
|
||||
$c->query('KeyManager'),
|
||||
$server->getConfig(),
|
||||
$server->getEncryptionKeyStorage(\OCA\Encryption\Crypto\Encryption::ID),
|
||||
$server->getEncryptionFilesHelper(),
|
||||
new \OC\Files\View());
|
||||
});
|
||||
|
||||
$container->registerService('RecoveryController', function (IAppContainer $c) {
|
||||
$server = $c->getServer();
|
||||
return new \OCA\Encryption\Controller\RecoveryController(
|
||||
$c->getAppName(),
|
||||
$server->getRequest(),
|
||||
$server->getConfig(),
|
||||
$server->getL10N($c->getAppName()),
|
||||
$c->query('Recovery'));
|
||||
});
|
||||
|
||||
$container->registerService('UserSetup',
|
||||
function (IAppContainer $c) {
|
||||
$server = $c->getServer();
|
||||
return new Setup($server->getLogger(),
|
||||
$server->getUserSession(),
|
||||
$c->query('Crypt'),
|
||||
$c->query('KeyManager'));
|
||||
});
|
||||
|
||||
$container->registerService('Util',
|
||||
function (IAppContainer $c) {
|
||||
$server = $c->getServer();
|
||||
|
||||
return new Util(
|
||||
new View(),
|
||||
$c->query('Crypt'),
|
||||
$server->getLogger(),
|
||||
$server->getUserSession(),
|
||||
$server->getConfig());
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function registerSettings() {
|
||||
// Register settings scripts
|
||||
App::registerAdmin('encryption', 'settings/settings-admin');
|
||||
App::registerPersonal('encryption', 'settings/settings-personal');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0"?>
|
||||
<info>
|
||||
<id>encryption</id>
|
||||
<description>
|
||||
This application encrypts all files accessed by ownCloud at rest,
|
||||
wherever they are stored. As an example, with this application
|
||||
enabled, external cloud based Amazon S3 storage will be encrypted,
|
||||
protecting this data on storage outside of the control of the Admin.
|
||||
When this application is enabled for the first time, all files are
|
||||
encrypted as users log in and are prompted for their password. The
|
||||
recommended recovery key option enables recovery of files in case
|
||||
the key is lost.
|
||||
Note that this app encrypts all files that are touched by ownCloud,
|
||||
so external storage providers and applications such as SharePoint
|
||||
will see new files encrypted when they are accessed. Encryption is
|
||||
based on AES 128 or 256 bit keys. More information is available in
|
||||
the Encryption documentation
|
||||
</description>
|
||||
<name>Encryption</name>
|
||||
<license>AGPL</license>
|
||||
<author>Bjoern Schiessle, Clark Tomlinson</author>
|
||||
<requiremin>8</requiremin>
|
||||
<shipped>true</shipped>
|
||||
<documentation>
|
||||
<user>user-encryption</user>
|
||||
<admin>admin-encryption</admin>
|
||||
</documentation>
|
||||
<rememberlogin>false</rememberlogin>
|
||||
<types>
|
||||
<filesystem/>
|
||||
</types>
|
||||
<dependencies>
|
||||
<lib>openssl</lib>
|
||||
</dependencies>
|
||||
|
||||
</info>
|
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 2/19/15, 11:22 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OCA\Encryption\AppInfo;
|
||||
|
||||
(new Application())->registerRoutes($this, array('routes' => array(
|
||||
|
||||
[
|
||||
'name' => 'Recovery#adminRecovery',
|
||||
'url' => '/ajax/adminRecovery',
|
||||
'verb' => 'POST'
|
||||
],
|
||||
[
|
||||
'name' => 'Recovery#changeRecoveryPassword',
|
||||
'url' => '/ajax/changeRecoveryPassword',
|
||||
'verb' => 'POST'
|
||||
],
|
||||
[
|
||||
'name' => 'Recovery#userSetRecovery',
|
||||
'url' => '/ajax/userSetRecovery',
|
||||
'verb' => 'POST'
|
||||
]
|
||||
|
||||
|
||||
)));
|
|
@ -0,0 +1,160 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 2/19/15, 11:25 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Encryption\Controller;
|
||||
|
||||
|
||||
use OCA\Encryption\Recovery;
|
||||
use OCP\AppFramework\Controller;
|
||||
use OCP\IConfig;
|
||||
use OCP\IL10N;
|
||||
use OCP\IRequest;
|
||||
use OCP\JSON;
|
||||
use OCP\AppFramework\Http\DataResponse;
|
||||
|
||||
class RecoveryController extends Controller {
|
||||
/**
|
||||
* @var IConfig
|
||||
*/
|
||||
private $config;
|
||||
/**
|
||||
* @var IL10N
|
||||
*/
|
||||
private $l;
|
||||
/**
|
||||
* @var Recovery
|
||||
*/
|
||||
private $recovery;
|
||||
|
||||
/**
|
||||
* @param string $AppName
|
||||
* @param IRequest $request
|
||||
* @param IConfig $config
|
||||
* @param IL10N $l10n
|
||||
* @param Recovery $recovery
|
||||
*/
|
||||
public function __construct($AppName, IRequest $request, IConfig $config, IL10N $l10n, Recovery $recovery) {
|
||||
parent::__construct($AppName, $request);
|
||||
$this->config = $config;
|
||||
$this->l = $l10n;
|
||||
$this->recovery = $recovery;
|
||||
}
|
||||
|
||||
public function adminRecovery($recoveryPassword, $confirmPassword, $adminEnableRecovery) {
|
||||
// Check if both passwords are the same
|
||||
if (empty($recoveryPassword)) {
|
||||
$errorMessage = (string) $this->l->t('Missing recovery key password');
|
||||
return new DataResponse(['data' => ['message' => $errorMessage]], 500);
|
||||
}
|
||||
|
||||
if (empty($confirmPassword)) {
|
||||
$errorMessage = (string) $this->l->t('Please repeat the recovery key password');
|
||||
return new DataResponse(['data' => ['message' => $errorMessage]], 500);
|
||||
}
|
||||
|
||||
if ($recoveryPassword !== $confirmPassword) {
|
||||
$errorMessage = (string) $this->l->t('Repeated recovery key password does not match the provided recovery key password');
|
||||
return new DataResponse(['data' => ['message' => $errorMessage]], 500);
|
||||
}
|
||||
|
||||
if (isset($adminEnableRecovery) && $adminEnableRecovery === '1') {
|
||||
if ($this->recovery->enableAdminRecovery($recoveryPassword)) {
|
||||
return new DataResponse(['status' =>'success', 'data' => array('message' => (string) $this->l->t('Recovery key successfully enabled'))]);
|
||||
}
|
||||
return new DataResponse(['data' => array('message' => (string) $this->l->t('Could not enable recovery key. Please check your recovery key password!'))]);
|
||||
} elseif (isset($adminEnableRecovery) && $adminEnableRecovery === '0') {
|
||||
if ($this->recovery->disableAdminRecovery($recoveryPassword)) {
|
||||
return new DataResponse(['data' => array('message' => (string) $this->l->t('Recovery key successfully disabled'))]);
|
||||
}
|
||||
return new DataResponse(['data' => array('message' => (string) $this->l->t('Could not disable recovery key. Please check your recovery key password!'))]);
|
||||
}
|
||||
}
|
||||
|
||||
public function changeRecoveryPassword($newPassword, $oldPassword, $confirmPassword) {
|
||||
//check if both passwords are the same
|
||||
if (empty($oldPassword)) {
|
||||
$errorMessage = (string) $this->l->t('Please provide the old recovery password');
|
||||
return new DataResponse(array('data' => array('message' => $errorMessage)));
|
||||
}
|
||||
|
||||
if (empty($newPassword)) {
|
||||
$errorMessage = (string) $this->l->t('Please provide a new recovery password');
|
||||
return new DataResponse (array('data' => array('message' => $errorMessage)));
|
||||
}
|
||||
|
||||
if (empty($confirmPassword)) {
|
||||
$errorMessage = (string) $this->l->t('Please repeat the new recovery password');
|
||||
return new DataResponse(array('data' => array('message' => $errorMessage)));
|
||||
}
|
||||
|
||||
if ($newPassword !== $confirmPassword) {
|
||||
$errorMessage = (string) $this->l->t('Repeated recovery key password does not match the provided recovery key password');
|
||||
return new DataResponse(array('data' => array('message' => $errorMessage)));
|
||||
}
|
||||
|
||||
$result = $this->recovery->changeRecoveryKeyPassword($newPassword, $oldPassword);
|
||||
|
||||
if ($result) {
|
||||
return new DataResponse(
|
||||
array(
|
||||
'status' => 'success' ,
|
||||
'data' => array(
|
||||
'message' => (string) $this->l->t('Password successfully changed.'))
|
||||
)
|
||||
);
|
||||
} else {
|
||||
return new DataResponse(
|
||||
array(
|
||||
'data' => array
|
||||
('message' => (string) $this->l->t('Could not change the password. Maybe the old password was not correct.'))
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
*/
|
||||
public function userSetRecovery($userEnableRecovery) {
|
||||
if ($userEnableRecovery === '0' || $userEnableRecovery === '1') {
|
||||
|
||||
$result = $this->recovery->setRecoveryForUser($userEnableRecovery);
|
||||
|
||||
if ($result) {
|
||||
return new DataResponse(
|
||||
array(
|
||||
'status' => 'success',
|
||||
'data' => array(
|
||||
'message' => (string) $this->l->t('Recovery Key enabled'))
|
||||
)
|
||||
);
|
||||
} else {
|
||||
return new DataResponse(
|
||||
array(
|
||||
'data' => array
|
||||
('message' => (string) $this->l->t('Could not enable the recovery key, please try again or contact your administrator'))
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,9 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Björn Schießle <schiessle@owncloud.com>
|
||||
* @author Morris Jobke <hey@morrisjobke.de>
|
||||
* @author Thomas Müller <thomas.mueller@tmit.eu>
|
||||
*
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 2/19/15, 10:03 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
|
@ -20,12 +18,15 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
use OCA\Files_Encryption\Migration;
|
||||
|
||||
$installedVersion=OCP\Config::getAppValue('files_encryption', 'installed_version');
|
||||
namespace OCA\Encryption\Hooks\Contracts;
|
||||
|
||||
// Migration OC7 -> OC8
|
||||
if (version_compare($installedVersion, '0.7', '<')) {
|
||||
$m = new Migration();
|
||||
$m->reorganizeFolderStructure();
|
||||
|
||||
interface IHook {
|
||||
/**
|
||||
* Connects Hooks
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
public function addHooks();
|
||||
}
|
|
@ -0,0 +1,286 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 2/19/15, 10:02 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Encryption\Hooks;
|
||||
|
||||
|
||||
use OCP\Util as OCUtil;
|
||||
use OCA\Encryption\Hooks\Contracts\IHook;
|
||||
use OCA\Encryption\KeyManager;
|
||||
use OCA\Encryption\Crypto\Crypt;
|
||||
use OCA\Encryption\Users\Setup;
|
||||
use OCP\App;
|
||||
use OCP\ILogger;
|
||||
use OCP\IUserSession;
|
||||
use OCA\Encryption\Util;
|
||||
use OCA\Encryption\Session;
|
||||
use OCA\Encryption\Recovery;
|
||||
|
||||
class UserHooks implements IHook {
|
||||
/**
|
||||
* @var KeyManager
|
||||
*/
|
||||
private $keyManager;
|
||||
/**
|
||||
* @var ILogger
|
||||
*/
|
||||
private $logger;
|
||||
/**
|
||||
* @var Setup
|
||||
*/
|
||||
private $userSetup;
|
||||
/**
|
||||
* @var IUserSession
|
||||
*/
|
||||
private $user;
|
||||
/**
|
||||
* @var Util
|
||||
*/
|
||||
private $util;
|
||||
/**
|
||||
* @var Session
|
||||
*/
|
||||
private $session;
|
||||
/**
|
||||
* @var Recovery
|
||||
*/
|
||||
private $recovery;
|
||||
/**
|
||||
* @var Crypt
|
||||
*/
|
||||
private $crypt;
|
||||
|
||||
/**
|
||||
* UserHooks constructor.
|
||||
*
|
||||
* @param KeyManager $keyManager
|
||||
* @param ILogger $logger
|
||||
* @param Setup $userSetup
|
||||
* @param IUserSession $user
|
||||
* @param Util $util
|
||||
* @param Session $session
|
||||
* @param Crypt $crypt
|
||||
* @param Recovery $recovery
|
||||
*/
|
||||
public function __construct(KeyManager $keyManager,
|
||||
ILogger $logger,
|
||||
Setup $userSetup,
|
||||
IUserSession $user,
|
||||
Util $util,
|
||||
Session $session,
|
||||
Crypt $crypt,
|
||||
Recovery $recovery) {
|
||||
|
||||
$this->keyManager = $keyManager;
|
||||
$this->logger = $logger;
|
||||
$this->userSetup = $userSetup;
|
||||
$this->user = $user;
|
||||
$this->util = $util;
|
||||
$this->session = $session;
|
||||
$this->recovery = $recovery;
|
||||
$this->crypt = $crypt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Connects Hooks
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
public function addHooks() {
|
||||
OCUtil::connectHook('OC_User', 'post_login', $this, 'login');
|
||||
OCUtil::connectHook('OC_User', 'logout', $this, 'logout');
|
||||
OCUtil::connectHook('OC_User',
|
||||
'post_setPassword',
|
||||
$this,
|
||||
'setPassphrase');
|
||||
OCUtil::connectHook('OC_User',
|
||||
'pre_setPassword',
|
||||
$this,
|
||||
'preSetPassphrase');
|
||||
OCUtil::connectHook('OC_User',
|
||||
'post_createUser',
|
||||
$this,
|
||||
'postCreateUser');
|
||||
OCUtil::connectHook('OC_User',
|
||||
'post_deleteUser',
|
||||
$this,
|
||||
'postDeleteUser');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Startup encryption backend upon user login
|
||||
*
|
||||
* @note This method should never be called for users using client side encryption
|
||||
* @param array $params
|
||||
* @return bool
|
||||
*/
|
||||
public function login($params) {
|
||||
|
||||
if (!App::isEnabled('encryption')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// ensure filesystem is loaded
|
||||
// Todo: update?
|
||||
if (!\OC\Files\Filesystem::$loaded) {
|
||||
\OC_Util::setupFS($params['uid']);
|
||||
}
|
||||
|
||||
// setup user, if user not ready force relogin
|
||||
if (!$this->userSetup->setupUser($params['uid'], $params['password'])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->keyManager->init($params['uid'], $params['password']);
|
||||
}
|
||||
|
||||
/**
|
||||
* remove keys from session during logout
|
||||
*/
|
||||
public function logout() {
|
||||
$this->session->clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* setup encryption backend upon user created
|
||||
*
|
||||
* @note This method should never be called for users using client side encryption
|
||||
* @param array $params
|
||||
*/
|
||||
public function postCreateUser($params) {
|
||||
|
||||
if (App::isEnabled('encryption')) {
|
||||
$this->userSetup->setupUser($params['uid'], $params['password']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* cleanup encryption backend upon user deleted
|
||||
*
|
||||
* @param array $params : uid, password
|
||||
* @note This method should never be called for users using client side encryption
|
||||
*/
|
||||
public function postDeleteUser($params) {
|
||||
|
||||
if (App::isEnabled('encryption')) {
|
||||
$this->keyManager->deletePublicKey($params['uid']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* If the password can't be changed within ownCloud, than update the key password in advance.
|
||||
*
|
||||
* @param array $params : uid, password
|
||||
* @return bool
|
||||
*/
|
||||
public function preSetPassphrase($params) {
|
||||
if (App::isEnabled('encryption')) {
|
||||
|
||||
if (!$this->user->getUser()->canChangePassword()) {
|
||||
$this->setPassphrase($params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Change a user's encryption passphrase
|
||||
*
|
||||
* @param array $params keys: uid, password
|
||||
* @return bool
|
||||
*/
|
||||
public function setPassphrase($params) {
|
||||
|
||||
// Get existing decrypted private key
|
||||
$privateKey = $this->session->getPrivateKey();
|
||||
|
||||
if ($params['uid'] === $this->user->getUser()->getUID() && $privateKey) {
|
||||
|
||||
// Encrypt private key with new user pwd as passphrase
|
||||
$encryptedPrivateKey = $this->crypt->symmetricEncryptFileContent($privateKey,
|
||||
$params['password']);
|
||||
|
||||
// Save private key
|
||||
if ($encryptedPrivateKey) {
|
||||
$this->keyManager->setPrivateKey($this->user->getUser()->getUID(),
|
||||
$encryptedPrivateKey);
|
||||
} else {
|
||||
$this->logger->error('Encryption could not update users encryption password');
|
||||
}
|
||||
|
||||
// NOTE: Session does not need to be updated as the
|
||||
// private key has not changed, only the passphrase
|
||||
// used to decrypt it has changed
|
||||
} else { // admin changed the password for a different user, create new keys and reencrypt file keys
|
||||
$user = $params['uid'];
|
||||
$recoveryPassword = isset($params['recoveryPassword']) ? $params['recoveryPassword'] : null;
|
||||
|
||||
// we generate new keys if...
|
||||
// ...we have a recovery password and the user enabled the recovery key
|
||||
// ...encryption was activated for the first time (no keys exists)
|
||||
// ...the user doesn't have any files
|
||||
if (
|
||||
($this->recovery->isRecoveryEnabledForUser($user) && $recoveryPassword)
|
||||
|| !$this->keyManager->userHasKeys($user)
|
||||
|| !$this->util->userHasFiles($user)
|
||||
) {
|
||||
|
||||
// backup old keys
|
||||
//$this->backupAllKeys('recovery');
|
||||
|
||||
$newUserPassword = $params['password'];
|
||||
|
||||
$keyPair = $this->crypt->createKeyPair();
|
||||
|
||||
// Save public key
|
||||
$this->keyManager->setPublicKey($user, $keyPair['publicKey']);
|
||||
|
||||
// Encrypt private key with new password
|
||||
$encryptedKey = $this->crypt->symmetricEncryptFileContent($keyPair['privateKey'],
|
||||
$newUserPassword);
|
||||
|
||||
if ($encryptedKey) {
|
||||
$this->keyManager->setPrivateKey($user, $encryptedKey);
|
||||
|
||||
if ($recoveryPassword) { // if recovery key is set we can re-encrypt the key files
|
||||
$this->recovery->recoverUsersFiles($recoveryPassword, $user);
|
||||
}
|
||||
} else {
|
||||
$this->logger->error('Encryption Could not update users encryption password');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* after password reset we create a new key pair for the user
|
||||
*
|
||||
* @param array $params
|
||||
*/
|
||||
public function postPasswordReset($params) {
|
||||
$password = $params['password'];
|
||||
|
||||
$this->keyManager->replaceUserKeys($params['uid']);
|
||||
$this->userSetup->setupServerSide($params['uid'], $password);
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
@ -17,7 +17,7 @@ $(document).ready(function(){
|
|||
var confirmPassword = $( '#repeatEncryptionRecoveryPassword' ).val();
|
||||
OC.msg.startSaving('#encryptionSetRecoveryKey .msg');
|
||||
$.post(
|
||||
OC.filePath( 'files_encryption', 'ajax', 'adminrecovery.php' )
|
||||
OC.generateUrl('/apps/encryption/ajax/adminRecovery')
|
||||
, { adminEnableRecovery: recoveryStatus, recoveryPassword: recoveryPassword, confirmPassword: confirmPassword }
|
||||
, function( result ) {
|
||||
OC.msg.finishedSaving('#encryptionSetRecoveryKey .msg', result);
|
||||
|
@ -44,7 +44,7 @@ $(document).ready(function(){
|
|||
var confirmNewPassword = $('#repeatedNewEncryptionRecoveryPassword').val();
|
||||
OC.msg.startSaving('#encryptionChangeRecoveryKey .msg');
|
||||
$.post(
|
||||
OC.filePath( 'files_encryption', 'ajax', 'changeRecoveryPassword.php' )
|
||||
OC.generateUrl('/apps/encryption/ajax/changeRecoveryPassword')
|
||||
, { oldPassword: oldRecoveryPassword, newPassword: newRecoveryPassword, confirmPassword: confirmNewPassword }
|
||||
, function( data ) {
|
||||
OC.msg.finishedSaving('#encryptionChangeRecoveryKey .msg', data);
|
|
@ -9,7 +9,7 @@ function updatePrivateKeyPasswd() {
|
|||
var newPrivateKeyPassword = $('input:password[id="newPrivateKeyPassword"]').val();
|
||||
OC.msg.startSaving('#encryption .msg');
|
||||
$.post(
|
||||
OC.filePath( 'files_encryption', 'ajax', 'updatePrivateKeyPassword.php' )
|
||||
OC.generateUrl('/apps/encryption/ajax/updatePrivateKeyPassword')
|
||||
, { oldPassword: oldPrivateKeyPassword, newPassword: newPrivateKeyPassword }
|
||||
, function( data ) {
|
||||
if (data.status === "error") {
|
||||
|
@ -29,7 +29,7 @@ $(document).ready(function(){
|
|||
var recoveryStatus = $( this ).val();
|
||||
OC.msg.startAction('#userEnableRecovery .msg', 'Updating recovery keys. This can take some time...');
|
||||
$.post(
|
||||
OC.filePath( 'files_encryption', 'ajax', 'userrecovery.php' )
|
||||
OC.generateUrl('/apps/encryption/ajax/userSetRecovery')
|
||||
, { userEnableRecovery: recoveryStatus }
|
||||
, function( data ) {
|
||||
OC.msg.finishedAction('#userEnableRecovery .msg', data);
|
||||
|
@ -40,33 +40,6 @@ $(document).ready(function(){
|
|||
}
|
||||
);
|
||||
|
||||
$("#encryptAll").click(
|
||||
function(){
|
||||
|
||||
// Hide feedback messages in case they're already visible
|
||||
$('#encryptAllSuccess').hide();
|
||||
$('#encryptAllError').hide();
|
||||
|
||||
var userPassword = $( '#userPassword' ).val();
|
||||
var encryptAll = $( '#encryptAll' ).val();
|
||||
|
||||
$.post(
|
||||
OC.filePath( 'files_encryption', 'ajax', 'encryptall.php' )
|
||||
, { encryptAll: encryptAll, userPassword: userPassword }
|
||||
, function( data ) {
|
||||
if ( data.status == "success" ) {
|
||||
$('#encryptAllSuccess').show();
|
||||
} else {
|
||||
$('#encryptAllError').show();
|
||||
}
|
||||
}
|
||||
);
|
||||
// Ensure page is not reloaded on form submit
|
||||
return false;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
// update private key password
|
||||
|
||||
$('input:password[name="changePrivateKeyPassword"]').keyup(function(event) {
|
|
@ -0,0 +1,457 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 2/19/15, 1:42 PM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Encryption\Crypto;
|
||||
|
||||
|
||||
use OC\Encryption\Exceptions\DecryptionFailedException;
|
||||
use OC\Encryption\Exceptions\EncryptionFailedException;
|
||||
use OCA\Encryption\Exceptions\MultiKeyDecryptException;
|
||||
use OCA\Encryption\Exceptions\MultiKeyEncryptException;
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
use OCP\IConfig;
|
||||
use OCP\ILogger;
|
||||
use OCP\IUser;
|
||||
use OCP\IUserSession;
|
||||
|
||||
class Crypt {
|
||||
|
||||
const DEFAULT_CIPHER = 'AES-256-CFB';
|
||||
|
||||
const HEADER_START = 'HBEGIN';
|
||||
const HEADER_END = 'HEND';
|
||||
/**
|
||||
* @var ILogger
|
||||
*/
|
||||
private $logger;
|
||||
/**
|
||||
* @var IUser
|
||||
*/
|
||||
private $user;
|
||||
/**
|
||||
* @var IConfig
|
||||
*/
|
||||
private $config;
|
||||
|
||||
/**
|
||||
* @param ILogger $logger
|
||||
* @param IUserSession $userSession
|
||||
* @param IConfig $config
|
||||
*/
|
||||
public function __construct(ILogger $logger, IUserSession $userSession, IConfig $config) {
|
||||
$this->logger = $logger;
|
||||
$this->user = $userSession && $userSession->isLoggedIn() ? $userSession->getUser() : false;
|
||||
$this->config = $config;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|bool
|
||||
*/
|
||||
public function createKeyPair() {
|
||||
|
||||
$log = $this->logger;
|
||||
$res = $this->getOpenSSLPKey();
|
||||
|
||||
if (!$res) {
|
||||
$log->error("Encryption Library could'nt generate users key-pair for {$this->user->getUID()}",
|
||||
['app' => 'encryption']);
|
||||
|
||||
if (openssl_error_string()) {
|
||||
$log->error('Encryption library openssl_pkey_new() fails: ' . openssl_error_string(),
|
||||
['app' => 'encryption']);
|
||||
}
|
||||
} elseif (openssl_pkey_export($res,
|
||||
$privateKey,
|
||||
null,
|
||||
$this->getOpenSSLConfig())) {
|
||||
$keyDetails = openssl_pkey_get_details($res);
|
||||
$publicKey = $keyDetails['key'];
|
||||
|
||||
return [
|
||||
'publicKey' => $publicKey,
|
||||
'privateKey' => $privateKey
|
||||
];
|
||||
}
|
||||
$log->error('Encryption library couldn\'t export users private key, please check your servers openSSL configuration.' . $this->user->getUID(),
|
||||
['app' => 'encryption']);
|
||||
if (openssl_error_string()) {
|
||||
$log->error('Encryption Library:' . openssl_error_string(),
|
||||
['app' => 'encryption']);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return resource
|
||||
*/
|
||||
public function getOpenSSLPKey() {
|
||||
$config = $this->getOpenSSLConfig();
|
||||
return openssl_pkey_new($config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
private function getOpenSSLConfig() {
|
||||
$config = ['private_key_bits' => 4096];
|
||||
$config = array_merge(\OC::$server->getConfig()->getSystemValue('openssl',
|
||||
[]),
|
||||
$config);
|
||||
return $config;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $plainContent
|
||||
* @param string $passPhrase
|
||||
* @return bool|string
|
||||
* @throws GenericEncryptionException
|
||||
*/
|
||||
public function symmetricEncryptFileContent($plainContent, $passPhrase) {
|
||||
|
||||
if (!$plainContent) {
|
||||
$this->logger->error('Encryption Library, symmetrical encryption failed no content given',
|
||||
['app' => 'encryption']);
|
||||
return false;
|
||||
}
|
||||
|
||||
$iv = $this->generateIv();
|
||||
|
||||
$encryptedContent = $this->encrypt($plainContent,
|
||||
$iv,
|
||||
$passPhrase,
|
||||
$this->getCipher());
|
||||
// combine content to encrypt the IV identifier and actual IV
|
||||
$catFile = $this->concatIV($encryptedContent, $iv);
|
||||
$padded = $this->addPadding($catFile);
|
||||
|
||||
return $padded;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $plainContent
|
||||
* @param string $iv
|
||||
* @param string $passPhrase
|
||||
* @param string $cipher
|
||||
* @return string
|
||||
* @throws EncryptionFailedException
|
||||
*/
|
||||
private function encrypt($plainContent, $iv, $passPhrase = '', $cipher = self::DEFAULT_CIPHER) {
|
||||
$encryptedContent = openssl_encrypt($plainContent,
|
||||
$cipher,
|
||||
$passPhrase,
|
||||
false,
|
||||
$iv);
|
||||
|
||||
if (!$encryptedContent) {
|
||||
$error = 'Encryption (symmetric) of content failed';
|
||||
$this->logger->error($error . openssl_error_string(),
|
||||
['app' => 'encryption']);
|
||||
throw new EncryptionFailedException($error);
|
||||
}
|
||||
|
||||
return $encryptedContent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed|string
|
||||
*/
|
||||
public function getCipher() {
|
||||
$cipher = $this->config->getSystemValue('cipher', self::DEFAULT_CIPHER);
|
||||
if ($cipher !== 'AES-256-CFB' && $cipher !== 'AES-128-CFB') {
|
||||
$this->logger->warning('Wrong cipher defined in config.php only AES-128-CFB and AES-256-CFB are supported. Fall back' . self::DEFAULT_CIPHER,
|
||||
['app' => 'encryption']);
|
||||
$cipher = self::DEFAULT_CIPHER;
|
||||
}
|
||||
|
||||
return $cipher;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $encryptedContent
|
||||
* @param string $iv
|
||||
* @return string
|
||||
*/
|
||||
private function concatIV($encryptedContent, $iv) {
|
||||
return $encryptedContent . '00iv00' . $iv;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $data
|
||||
* @return string
|
||||
*/
|
||||
private function addPadding($data) {
|
||||
return $data . 'xx';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $recoveryKey
|
||||
* @param string $password
|
||||
* @return bool|string
|
||||
*/
|
||||
public function decryptPrivateKey($recoveryKey, $password) {
|
||||
|
||||
$header = $this->parseHeader($recoveryKey);
|
||||
$cipher = $this->getCipher();
|
||||
|
||||
// If we found a header we need to remove it from the key we want to decrypt
|
||||
if (!empty($header)) {
|
||||
$recoveryKey = substr($recoveryKey,
|
||||
strpos($recoveryKey,
|
||||
self::HEADER_END) + strlen(self::HEADER_START));
|
||||
}
|
||||
|
||||
$plainKey = $this->symmetricDecryptFileContent($recoveryKey,
|
||||
$password,
|
||||
$cipher);
|
||||
|
||||
// Check if this is a valid private key
|
||||
$res = openssl_get_privatekey($plainKey);
|
||||
if (is_resource($res)) {
|
||||
$sslInfo = openssl_pkey_get_details($res);
|
||||
if (!isset($sslInfo['key'])) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $plainKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $keyFileContents
|
||||
* @param string $passPhrase
|
||||
* @param string $cipher
|
||||
* @return string
|
||||
* @throws DecryptionFailedException
|
||||
*/
|
||||
public function symmetricDecryptFileContent($keyFileContents, $passPhrase = '', $cipher = self::DEFAULT_CIPHER) {
|
||||
// Remove Padding
|
||||
$noPadding = $this->removePadding($keyFileContents);
|
||||
|
||||
$catFile = $this->splitIv($noPadding);
|
||||
|
||||
return $this->decrypt($catFile['encrypted'],
|
||||
$catFile['iv'],
|
||||
$passPhrase,
|
||||
$cipher);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $padded
|
||||
* @return bool|string
|
||||
*/
|
||||
private function removePadding($padded) {
|
||||
if (substr($padded, -2) === 'xx') {
|
||||
return substr($padded, 0, -2);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $catFile
|
||||
* @return array
|
||||
*/
|
||||
private function splitIv($catFile) {
|
||||
// Fetch encryption metadata from end of file
|
||||
$meta = substr($catFile, -22);
|
||||
|
||||
// Fetch IV from end of file
|
||||
$iv = substr($meta, -16);
|
||||
|
||||
// Remove IV and IV Identifier text to expose encrypted content
|
||||
|
||||
$encrypted = substr($catFile, 0, -22);
|
||||
|
||||
return [
|
||||
'encrypted' => $encrypted,
|
||||
'iv' => $iv
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $encryptedContent
|
||||
* @param $iv
|
||||
* @param string $passPhrase
|
||||
* @param string $cipher
|
||||
* @return string
|
||||
* @throws DecryptionFailedException
|
||||
*/
|
||||
private function decrypt($encryptedContent, $iv, $passPhrase = '', $cipher = self::DEFAULT_CIPHER) {
|
||||
$plainContent = openssl_decrypt($encryptedContent,
|
||||
$cipher,
|
||||
$passPhrase,
|
||||
false,
|
||||
$iv);
|
||||
|
||||
if ($plainContent) {
|
||||
return $plainContent;
|
||||
} else {
|
||||
throw new DecryptionFailedException('Encryption library: Decryption (symmetric) of content failed: ' . openssl_error_string());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $data
|
||||
* @return array
|
||||
*/
|
||||
private function parseHeader($data) {
|
||||
$result = [];
|
||||
|
||||
if (substr($data, 0, strlen(self::HEADER_START)) === self::HEADER_START) {
|
||||
$endAt = strpos($data, self::HEADER_END);
|
||||
$header = substr($data, 0, $endAt + strlen(self::HEADER_END));
|
||||
|
||||
// +1 not to start with an ':' which would result in empty element at the beginning
|
||||
$exploded = explode(':',
|
||||
substr($header, strlen(self::HEADER_START) + 1));
|
||||
|
||||
$element = array_shift($exploded);
|
||||
|
||||
while ($element != self::HEADER_END) {
|
||||
$result[$element] = array_shift($exploded);
|
||||
$element = array_shift($exploded);
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @throws GenericEncryptionException
|
||||
*/
|
||||
private function generateIv() {
|
||||
$random = openssl_random_pseudo_bytes(12, $strong);
|
||||
if ($random) {
|
||||
if (!$strong) {
|
||||
// If OpenSSL indicates randomness is insecure log error
|
||||
$this->logger->error('Encryption Library: Insecure symmetric key was generated using openssl_random_psudo_bytes()',
|
||||
['app' => 'encryption']);
|
||||
}
|
||||
|
||||
/*
|
||||
* We encode the iv purely for string manipulation
|
||||
* purposes -it gets decoded before use
|
||||
*/
|
||||
return base64_encode($random);
|
||||
}
|
||||
// If we ever get here we've failed anyway no need for an else
|
||||
throw new GenericEncryptionException('Generating IV Failed');
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a pseudo random 256-bit ASCII key, used as file key
|
||||
* @return string
|
||||
*/
|
||||
public static function generateFileKey() {
|
||||
// Generate key
|
||||
$key = base64_encode(openssl_random_pseudo_bytes(32, $strong));
|
||||
if (!$key || !$strong) {
|
||||
// If OpenSSL indicates randomness is insecure, log error
|
||||
throw new \Exception('Encryption library, Insecure symmetric key was generated using openssl_random_pseudo_bytes()');
|
||||
}
|
||||
|
||||
return $key;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a file's contents contains an IV and is symmetrically encrypted
|
||||
*
|
||||
* @param $content
|
||||
* @return bool
|
||||
*/
|
||||
public function isCatFileContent($content) {
|
||||
if (!$content) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$noPadding = $this->removePadding($content);
|
||||
|
||||
// Fetch encryption metadata from end of file
|
||||
$meta = substr($noPadding, -22);
|
||||
|
||||
// Fetch identifier from start of metadata
|
||||
$identifier = substr($meta, 0, 6);
|
||||
|
||||
if ($identifier === '00iv00') {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $encKeyFile
|
||||
* @param $shareKey
|
||||
* @param $privateKey
|
||||
* @return mixed
|
||||
* @throws MultiKeyDecryptException
|
||||
*/
|
||||
public function multiKeyDecrypt($encKeyFile, $shareKey, $privateKey) {
|
||||
if (!$encKeyFile) {
|
||||
throw new MultiKeyDecryptException('Cannot multikey decrypt empty plain content');
|
||||
}
|
||||
|
||||
if (openssl_open($encKeyFile, $plainContent, $shareKey, $privateKey)) {
|
||||
return $plainContent;
|
||||
} else {
|
||||
throw new MultiKeyDecryptException('multikeydecrypt with share key failed:' . openssl_error_string());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $plainContent
|
||||
* @param array $keyFiles
|
||||
* @return array
|
||||
* @throws MultiKeyEncryptException
|
||||
*/
|
||||
public function multiKeyEncrypt($plainContent, array $keyFiles) {
|
||||
// openssl_seal returns false without errors if plaincontent is empty
|
||||
// so trigger our own error
|
||||
if (empty($plainContent)) {
|
||||
throw new MultiKeyEncryptException('Cannot multikeyencrypt empty plain content');
|
||||
}
|
||||
|
||||
// Set empty vars to be set by openssl by reference
|
||||
$sealed = '';
|
||||
$shareKeys = [];
|
||||
$mappedShareKeys = [];
|
||||
|
||||
if (openssl_seal($plainContent, $sealed, $shareKeys, $keyFiles)) {
|
||||
$i = 0;
|
||||
|
||||
// Ensure each shareKey is labelled with its corresponding key id
|
||||
foreach ($keyFiles as $userId => $publicKey) {
|
||||
$mappedShareKeys[$userId] = $shareKeys[$i];
|
||||
$i++;
|
||||
}
|
||||
|
||||
return [
|
||||
'keys' => $mappedShareKeys,
|
||||
'data' => $sealed
|
||||
];
|
||||
} else {
|
||||
throw new MultiKeyEncryptException('multikeyencryption failed ' . openssl_error_string());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,328 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <fallen013@gmail.com>
|
||||
* @since 3/6/15, 2:28 PM
|
||||
* @link http:/www.clarkt.com
|
||||
* @copyright Clark Tomlinson © 2015
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Encryption\Crypto;
|
||||
|
||||
|
||||
use OCA\Encryption\Util;
|
||||
use OCP\Encryption\IEncryptionModule;
|
||||
use OCA\Encryption\KeyManager;
|
||||
|
||||
class Encryption implements IEncryptionModule {
|
||||
|
||||
const ID = 'OC_DEFAULT_MODULE';
|
||||
|
||||
/**
|
||||
* @var Crypt
|
||||
*/
|
||||
private $crypt;
|
||||
|
||||
/** @var string */
|
||||
private $cipher;
|
||||
|
||||
/** @var string */
|
||||
private $path;
|
||||
|
||||
/** @var string */
|
||||
private $user;
|
||||
|
||||
/** @var string */
|
||||
private $fileKey;
|
||||
|
||||
/** @var string */
|
||||
private $writeCache;
|
||||
|
||||
/** @var KeyManager */
|
||||
private $keyManager;
|
||||
|
||||
/** @var array */
|
||||
private $accessList;
|
||||
|
||||
/** @var boolean */
|
||||
private $isWriteOperation;
|
||||
|
||||
/** @var Util */
|
||||
private $util;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param \OCA\Encryption\Crypto\Crypt $crypt
|
||||
* @param KeyManager $keyManager
|
||||
* @param Util $util
|
||||
*/
|
||||
public function __construct(Crypt $crypt, KeyManager $keyManager, Util $util) {
|
||||
$this->crypt = $crypt;
|
||||
$this->keyManager = $keyManager;
|
||||
$this->util = $util;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string defining the technical unique id
|
||||
*/
|
||||
public function getId() {
|
||||
return self::ID;
|
||||
}
|
||||
|
||||
/**
|
||||
* In comparison to getKey() this function returns a human readable (maybe translated) name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDisplayName() {
|
||||
return 'ownCloud Default Encryption';
|
||||
}
|
||||
|
||||
/**
|
||||
* start receiving chunks from a file. This is the place where you can
|
||||
* perform some initial step before starting encrypting/decrypting the
|
||||
* chunks
|
||||
*
|
||||
* @param string $path to the file
|
||||
* @param string $user who read/write the file
|
||||
* @param array $header contains the header data read from the file
|
||||
* @param array $accessList who has access to the file contains the key 'users' and 'public'
|
||||
*
|
||||
* @return array $header contain data as key-value pairs which should be
|
||||
* written to the header, in case of a write operation
|
||||
* or if no additional data is needed return a empty array
|
||||
*/
|
||||
public function begin($path, $user, $header, $accessList) {
|
||||
|
||||
if (isset($header['cipher'])) {
|
||||
$this->cipher = $header['cipher'];
|
||||
} else {
|
||||
$this->cipher = $this->crypt->getCipher();
|
||||
}
|
||||
|
||||
$this->path = $this->getPathToRealFile($path);
|
||||
$this->accessList = $accessList;
|
||||
$this->user = $user;
|
||||
$this->writeCache = '';
|
||||
$this->isWriteOperation = false;
|
||||
|
||||
$this->fileKey = $this->keyManager->getFileKey($this->path, $this->user);
|
||||
|
||||
return array('cipher' => $this->cipher);
|
||||
}
|
||||
|
||||
/**
|
||||
* last chunk received. This is the place where you can perform some final
|
||||
* operation and return some remaining data if something is left in your
|
||||
* buffer.
|
||||
*
|
||||
* @param string $path to the file
|
||||
* @return string remained data which should be written to the file in case
|
||||
* of a write operation
|
||||
*/
|
||||
public function end($path) {
|
||||
$result = '';
|
||||
if ($this->isWriteOperation) {
|
||||
if (!empty($this->writeCache)) {
|
||||
$result = $this->crypt->symmetricEncryptFileContent($this->writeCache, $this->fileKey);
|
||||
$this->writeCache = '';
|
||||
}
|
||||
$publicKeys = array();
|
||||
foreach ($this->accessList['users'] as $uid) {
|
||||
$publicKeys[$uid] = $this->keyManager->getPublicKey($uid);
|
||||
}
|
||||
|
||||
$publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys);
|
||||
|
||||
$encryptedKeyfiles = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys);
|
||||
$this->keyManager->setAllFileKeys($this->path, $encryptedKeyfiles);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* encrypt data
|
||||
*
|
||||
* @param string $data you want to encrypt
|
||||
* @return mixed encrypted data
|
||||
*/
|
||||
public function encrypt($data) {
|
||||
$this->isWriteOperation = true;
|
||||
if (empty($this->fileKey)) {
|
||||
$this->fileKey = $this->crypt->generateFileKey();
|
||||
}
|
||||
|
||||
// If extra data is left over from the last round, make sure it
|
||||
// is integrated into the next 6126 / 8192 block
|
||||
if ($this->writeCache) {
|
||||
|
||||
// Concat writeCache to start of $data
|
||||
$data = $this->writeCache . $data;
|
||||
|
||||
// Clear the write cache, ready for reuse - it has been
|
||||
// flushed and its old contents processed
|
||||
$this->writeCache = '';
|
||||
|
||||
}
|
||||
|
||||
$encrypted = '';
|
||||
// While there still remains some data to be processed & written
|
||||
while (strlen($data) > 0) {
|
||||
|
||||
// Remaining length for this iteration, not of the
|
||||
// entire file (may be greater than 8192 bytes)
|
||||
$remainingLength = strlen($data);
|
||||
|
||||
// If data remaining to be written is less than the
|
||||
// size of 1 6126 byte block
|
||||
if ($remainingLength < 6126) {
|
||||
|
||||
// Set writeCache to contents of $data
|
||||
// The writeCache will be carried over to the
|
||||
// next write round, and added to the start of
|
||||
// $data to ensure that written blocks are
|
||||
// always the correct length. If there is still
|
||||
// data in writeCache after the writing round
|
||||
// has finished, then the data will be written
|
||||
// to disk by $this->flush().
|
||||
$this->writeCache = $data;
|
||||
|
||||
// Clear $data ready for next round
|
||||
$data = '';
|
||||
|
||||
} else {
|
||||
|
||||
// Read the chunk from the start of $data
|
||||
$chunk = substr($data, 0, 6126);
|
||||
|
||||
$encrypted .= $this->crypt->symmetricEncryptFileContent($chunk, $this->fileKey);
|
||||
|
||||
// Remove the chunk we just processed from
|
||||
// $data, leaving only unprocessed data in $data
|
||||
// var, for handling on the next round
|
||||
$data = substr($data, 6126);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $encrypted;
|
||||
}
|
||||
|
||||
/**
|
||||
* decrypt data
|
||||
*
|
||||
* @param string $data you want to decrypt
|
||||
* @return mixed decrypted data
|
||||
*/
|
||||
public function decrypt($data) {
|
||||
$result = '';
|
||||
if (!empty($data)) {
|
||||
$result = $this->crypt->symmetricDecryptFileContent($data, $this->fileKey);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* update encrypted file, e.g. give additional users access to the file
|
||||
*
|
||||
* @param string $path path to the file which should be updated
|
||||
* @param string $uid of the user who performs the operation
|
||||
* @param array $accessList who has access to the file contains the key 'users' and 'public'
|
||||
* @return boolean
|
||||
*/
|
||||
public function update($path, $uid, $accessList) {
|
||||
$fileKey = $this->keyManager->getFileKey($path, $uid);
|
||||
$publicKeys = array();
|
||||
foreach ($accessList['users'] as $user) {
|
||||
$publicKeys[$user] = $this->keyManager->getPublicKey($user);
|
||||
}
|
||||
|
||||
$publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys);
|
||||
|
||||
$encryptedFileKey = $this->crypt->multiKeyEncrypt($fileKey, $publicKeys);
|
||||
|
||||
$this->keyManager->deleteAllFileKeys($path);
|
||||
|
||||
$this->keyManager->setAllFileKeys($path, $encryptedFileKey);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* add system keys such as the public share key and the recovery key
|
||||
*
|
||||
* @param array $accessList
|
||||
* @param array $publicKeys
|
||||
* @return array
|
||||
*/
|
||||
public function addSystemKeys(array $accessList, array $publicKeys) {
|
||||
if (!empty($accessList['public'])) {
|
||||
$publicKeys[$this->keyManager->getPublicShareKeyId()] = $this->keyManager->getPublicShareKey();
|
||||
}
|
||||
|
||||
if ($this->keyManager->recoveryKeyExists() &&
|
||||
$this->util->recoveryEnabled($this->user)) {
|
||||
|
||||
$publicKeys[$this->keyManager->getRecoveryKeyId()] = $this->keyManager->getRecoveryKey();
|
||||
}
|
||||
|
||||
|
||||
return $publicKeys;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* should the file be encrypted or not
|
||||
*
|
||||
* @param string $path
|
||||
* @return boolean
|
||||
*/
|
||||
public function shouldEncrypt($path) {
|
||||
$parts = explode('/', $path);
|
||||
if (count($parts) < 3) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($parts[2] == 'files') {
|
||||
return true;
|
||||
}
|
||||
if ($parts[2] == 'files_versions') {
|
||||
return true;
|
||||
}
|
||||
|
||||
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
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getUnencryptedBlockSize() {
|
||||
return 6126;
|
||||
}
|
||||
|
||||
protected function getPathToRealFile($path) {
|
||||
$realPath = $path;
|
||||
$parts = explode('/', $path);
|
||||
if ($parts[2] === 'files_versions') {
|
||||
$realPath = '/' . $parts[1] . '/files/' . implode('/', array_slice($parts, 3));
|
||||
$length = strrpos($realPath, '.');
|
||||
$realPath = substr($realPath, 0, $length);
|
||||
}
|
||||
|
||||
return $realPath;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace OCA\Encryption\Exceptions;
|
||||
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class MultiKeyDecryptException extends GenericEncryptionException {
|
||||
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace OCA\Encryption\Exceptions;
|
||||
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class MultiKeyEncryptException extends GenericEncryptionException {
|
||||
|
||||
}
|
|
@ -1,10 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Christopher Schäpers <kondou@ts.unde.re>
|
||||
* @author Joas Schilling <nickvergessen@owncloud.com>
|
||||
* @author Morris Jobke <hey@morrisjobke.de>
|
||||
* @author Tom Needham <tom@owncloud.com>
|
||||
*
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 2/25/15, 9:39 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
|
@ -21,19 +18,21 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Files_Encryption;
|
||||
|
||||
class Capabilities {
|
||||
|
||||
public static function getCapabilities() {
|
||||
return new \OC_OCS_Result(array(
|
||||
'capabilities' => array(
|
||||
'files' => array(
|
||||
'encryption' => true,
|
||||
),
|
||||
),
|
||||
));
|
||||
namespace OCA\Encryption\Exceptions;
|
||||
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class PrivateKeyMissingException extends GenericEncryptionException {
|
||||
|
||||
/**
|
||||
* @param string $userId
|
||||
*/
|
||||
public function __construct($userId) {
|
||||
if(empty($userId)) {
|
||||
$userId = "<no-user-id-given>";
|
||||
}
|
||||
parent::__construct("Private Key missing for user: $userId");
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace OCA\Encryption\Exceptions;
|
||||
|
||||
use OCP\Encryption\Exceptions\GenericEncryptionException;
|
||||
|
||||
class PublicKeyMissingException extends GenericEncryptionException {
|
||||
|
||||
/**
|
||||
* @param string $userId
|
||||
*/
|
||||
public function __construct($userId) {
|
||||
if(empty($userId)) {
|
||||
$userId = "<no-user-id-given>";
|
||||
}
|
||||
parent::__construct("Public Key missing for user: $userId");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 2/19/15, 10:13 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Encryption;
|
||||
|
||||
|
||||
use OCA\Encryption\Hooks\Contracts\IHook;
|
||||
|
||||
class HookManager {
|
||||
|
||||
private $hookInstances = [];
|
||||
|
||||
/**
|
||||
* @param array|IHook $instances
|
||||
* - This accepts either a single instance of IHook or an array of instances of IHook
|
||||
* @return bool
|
||||
*/
|
||||
public function registerHook($instances) {
|
||||
if (is_array($instances)) {
|
||||
foreach ($instances as $instance) {
|
||||
if (!$instance instanceof IHook) {
|
||||
return false;
|
||||
}
|
||||
$this->hookInstances[] = $instance;
|
||||
}
|
||||
|
||||
} elseif ($instances instanceof IHook) {
|
||||
$this->hookInstances[] = $instances;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function fireHooks() {
|
||||
foreach ($this->hookInstances as $instance) {
|
||||
/**
|
||||
* Fire off the add hooks method of each instance stored in cache
|
||||
*
|
||||
* @var $instance IHook
|
||||
*/
|
||||
$instance->addHooks();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,511 @@
|
|||
<?php
|
||||
|
||||
namespace OCA\Encryption;
|
||||
|
||||
use OC\Encryption\Exceptions\DecryptionFailedException;
|
||||
use OCA\Encryption\Exceptions\PrivateKeyMissingException;
|
||||
use OCA\Encryption\Exceptions\PublicKeyMissingException;
|
||||
use OCA\Encryption\Crypto\Crypt;
|
||||
use OCP\Encryption\Keys\IStorage;
|
||||
use OCP\IConfig;
|
||||
use OCP\ILogger;
|
||||
use OCP\IUserSession;
|
||||
|
||||
class KeyManager {
|
||||
|
||||
/**
|
||||
* @var Session
|
||||
*/
|
||||
protected $session;
|
||||
/**
|
||||
* @var IStorage
|
||||
*/
|
||||
private $keyStorage;
|
||||
/**
|
||||
* @var Crypt
|
||||
*/
|
||||
private $crypt;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $recoveryKeyId;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $publicShareKeyId;
|
||||
/**
|
||||
* @var string UserID
|
||||
*/
|
||||
private $keyId;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $publicKeyId = 'publicKey';
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $privateKeyId = 'privateKey';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $shareKeyId = 'shareKey';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $fileKeyId = 'fileKey';
|
||||
/**
|
||||
* @var IConfig
|
||||
*/
|
||||
private $config;
|
||||
/**
|
||||
* @var ILogger
|
||||
*/
|
||||
private $log;
|
||||
/**
|
||||
* @var Util
|
||||
*/
|
||||
private $util;
|
||||
|
||||
/**
|
||||
* @param IStorage $keyStorage
|
||||
* @param Crypt $crypt
|
||||
* @param IConfig $config
|
||||
* @param IUserSession $userSession
|
||||
* @param Session $session
|
||||
* @param ILogger $log
|
||||
* @param Util $util
|
||||
*/
|
||||
public function __construct(
|
||||
IStorage $keyStorage,
|
||||
Crypt $crypt,
|
||||
IConfig $config,
|
||||
IUserSession $userSession,
|
||||
Session $session,
|
||||
ILogger $log,
|
||||
Util $util
|
||||
) {
|
||||
|
||||
$this->util = $util;
|
||||
$this->session = $session;
|
||||
$this->keyStorage = $keyStorage;
|
||||
$this->crypt = $crypt;
|
||||
$this->config = $config;
|
||||
$this->log = $log;
|
||||
|
||||
$this->recoveryKeyId = $this->config->getAppValue('encryption',
|
||||
'recoveryKeyId');
|
||||
if (empty($this->recoveryKeyId)) {
|
||||
$this->recoveryKeyId = 'recoveryKey_' . substr(md5(time()), 0, 8);
|
||||
$this->config->setAppValue('encryption',
|
||||
'recoveryKeyId',
|
||||
$this->recoveryKeyId);
|
||||
}
|
||||
|
||||
$this->publicShareKeyId = $this->config->getAppValue('encryption',
|
||||
'publicShareKeyId');
|
||||
if (empty($this->publicShareKeyId)) {
|
||||
$this->publicShareKeyId = 'pubShare_' . substr(md5(time()), 0, 8);
|
||||
$this->config->setAppValue('encryption', 'publicShareKeyId', $this->publicShareKeyId);
|
||||
}
|
||||
|
||||
$shareKey = $this->getPublicShareKey();
|
||||
if (empty($shareKey)) {
|
||||
$keyPair = $this->crypt->createKeyPair();
|
||||
|
||||
// Save public key
|
||||
$this->keyStorage->setSystemUserKey(
|
||||
$this->publicShareKeyId . '.publicKey', $keyPair['publicKey']);
|
||||
|
||||
// Encrypt private key empty passphrase
|
||||
$encryptedKey = $this->crypt->symmetricEncryptFileContent($keyPair['privateKey'], '');
|
||||
$this->keyStorage->setSystemUserKey($this->publicShareKeyId . '.privateKey', $encryptedKey);
|
||||
}
|
||||
|
||||
$this->keyId = $userSession && $userSession->isLoggedIn() ? $userSession->getUser()->getUID() : false;
|
||||
$this->log = $log;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function recoveryKeyExists() {
|
||||
$key = $this->getRecoveryKey();
|
||||
return (!empty($key));
|
||||
}
|
||||
|
||||
/**
|
||||
* get recovery key
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRecoveryKey() {
|
||||
return $this->keyStorage->getSystemUserKey($this->recoveryKeyId . '.publicKey');
|
||||
}
|
||||
|
||||
/**
|
||||
* get recovery key ID
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRecoveryKeyId() {
|
||||
return $this->recoveryKeyId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $password
|
||||
* @return bool
|
||||
*/
|
||||
public function checkRecoveryPassword($password) {
|
||||
$recoveryKey = $this->keyStorage->getSystemUserKey($this->recoveryKeyId . '.privateKey');
|
||||
$decryptedRecoveryKey = $this->crypt->decryptPrivateKey($recoveryKey,
|
||||
$password);
|
||||
|
||||
if ($decryptedRecoveryKey) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $uid
|
||||
* @param string $password
|
||||
* @param string $keyPair
|
||||
* @return bool
|
||||
*/
|
||||
public function storeKeyPair($uid, $password, $keyPair) {
|
||||
// Save Public Key
|
||||
$this->setPublicKey($uid, $keyPair['publicKey']);
|
||||
|
||||
$encryptedKey = $this->crypt->symmetricEncryptFileContent($keyPair['privateKey'],
|
||||
$password);
|
||||
|
||||
if ($encryptedKey) {
|
||||
$this->setPrivateKey($uid, $encryptedKey);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $password
|
||||
* @param array $keyPair
|
||||
* @return bool
|
||||
*/
|
||||
public function setRecoveryKey($password, $keyPair) {
|
||||
// Save Public Key
|
||||
$this->keyStorage->setSystemUserKey($this->getRecoveryKeyId(). '.publicKey', $keyPair['publicKey']);
|
||||
|
||||
$encryptedKey = $this->crypt->symmetricEncryptFileContent($keyPair['privateKey'],
|
||||
$password);
|
||||
|
||||
if ($encryptedKey) {
|
||||
$this->setSystemPrivateKey($this->getRecoveryKeyId(), $encryptedKey);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $userId
|
||||
* @param $key
|
||||
* @return bool
|
||||
*/
|
||||
public function setPublicKey($userId, $key) {
|
||||
return $this->keyStorage->setUserKey($userId, $this->publicKeyId, $key);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $userId
|
||||
* @param $key
|
||||
* @return bool
|
||||
*/
|
||||
public function setPrivateKey($userId, $key) {
|
||||
return $this->keyStorage->setUserKey($userId,
|
||||
$this->privateKeyId,
|
||||
$key);
|
||||
}
|
||||
|
||||
/**
|
||||
* write file key to key storage
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $key
|
||||
* @return boolean
|
||||
*/
|
||||
public function setFileKey($path, $key) {
|
||||
return $this->keyStorage->setFileKey($path, $this->fileKeyId, $key);
|
||||
}
|
||||
|
||||
/**
|
||||
* set all file keys (the file key and the corresponding share keys)
|
||||
*
|
||||
* @param string $path
|
||||
* @param array $keys
|
||||
*/
|
||||
public function setAllFileKeys($path, $keys) {
|
||||
$this->setFileKey($path, $keys['data']);
|
||||
foreach ($keys['keys'] as $uid => $keyFile) {
|
||||
$this->setShareKey($path, $uid, $keyFile);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* write share key to the key storage
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $uid
|
||||
* @param string $key
|
||||
* @return boolean
|
||||
*/
|
||||
public function setShareKey($path, $uid, $key) {
|
||||
$keyId = $uid . '.' . $this->shareKeyId;
|
||||
return $this->keyStorage->setFileKey($path, $keyId, $key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Decrypt private key and store it
|
||||
*
|
||||
* @param string $uid userid
|
||||
* @param string $passPhrase users password
|
||||
* @return boolean
|
||||
*/
|
||||
public function init($uid, $passPhrase) {
|
||||
try {
|
||||
$privateKey = $this->getPrivateKey($uid);
|
||||
$privateKey = $this->crypt->decryptPrivateKey($privateKey,
|
||||
$passPhrase);
|
||||
} catch (PrivateKeyMissingException $e) {
|
||||
return false;
|
||||
} catch (DecryptionFailedException $e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->session->setPrivateKey($privateKey);
|
||||
$this->session->setStatus(Session::INIT_SUCCESSFUL);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $userId
|
||||
* @return mixed
|
||||
* @throws PrivateKeyMissingException
|
||||
*/
|
||||
public function getPrivateKey($userId) {
|
||||
$privateKey = $this->keyStorage->getUserKey($userId,
|
||||
$this->privateKeyId);
|
||||
|
||||
if (strlen($privateKey) !== 0) {
|
||||
return $privateKey;
|
||||
}
|
||||
throw new PrivateKeyMissingException($userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $path
|
||||
* @param $uid
|
||||
* @return string
|
||||
*/
|
||||
public function getFileKey($path, $uid) {
|
||||
$encryptedFileKey = $this->keyStorage->getFileKey($path, $this->fileKeyId);
|
||||
|
||||
if (is_null($uid)) {
|
||||
$uid = $this->getPublicShareKeyId();
|
||||
$shareKey = $this->getShareKey($path, $uid);
|
||||
$privateKey = $this->keyStorage->getSystemUserKey($this->publicShareKeyId . '.privateKey');
|
||||
$privateKey = $this->crypt->symmetricDecryptFileContent($privateKey);
|
||||
} else {
|
||||
$shareKey = $this->getShareKey($path, $uid);
|
||||
$privateKey = $this->session->getPrivateKey();
|
||||
}
|
||||
|
||||
if ($encryptedFileKey && $shareKey && $privateKey) {
|
||||
return $this->crypt->multiKeyDecrypt($encryptedFileKey,
|
||||
$shareKey,
|
||||
$privateKey);
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* get the encrypted file key
|
||||
*
|
||||
* @param $path
|
||||
* @return string
|
||||
*/
|
||||
public function getEncryptedFileKey($path) {
|
||||
$encryptedFileKey = $this->keyStorage->getFileKey($path,
|
||||
$this->fileKeyId);
|
||||
|
||||
return $encryptedFileKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* delete share key
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $keyId
|
||||
* @return boolean
|
||||
*/
|
||||
public function deleteShareKey($path, $keyId) {
|
||||
return $this->keyStorage->deleteFileKey($path, $keyId . '.' . $this->shareKeyId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $path
|
||||
* @param $uid
|
||||
* @return mixed
|
||||
*/
|
||||
public function getShareKey($path, $uid) {
|
||||
$keyId = $uid . '.' . $this->shareKeyId;
|
||||
return $this->keyStorage->getFileKey($path, $keyId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $userId
|
||||
* @return bool
|
||||
*/
|
||||
public function userHasKeys($userId) {
|
||||
try {
|
||||
$this->getPrivateKey($userId);
|
||||
$this->getPublicKey($userId);
|
||||
} catch (PrivateKeyMissingException $e) {
|
||||
return false;
|
||||
} catch (PublicKeyMissingException $e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $userId
|
||||
* @return mixed
|
||||
* @throws PublicKeyMissingException
|
||||
*/
|
||||
public function getPublicKey($userId) {
|
||||
$publicKey = $this->keyStorage->getUserKey($userId, $this->publicKeyId);
|
||||
|
||||
if (strlen($publicKey) !== 0) {
|
||||
return $publicKey;
|
||||
}
|
||||
throw new PublicKeyMissingException($userId);
|
||||
}
|
||||
|
||||
public function getPublicShareKeyId() {
|
||||
return $this->publicShareKeyId;
|
||||
}
|
||||
|
||||
/**
|
||||
* get public key for public link shares
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPublicShareKey() {
|
||||
return $this->keyStorage->getSystemUserKey($this->publicShareKeyId . '.publicKey');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $purpose
|
||||
* @param bool $timestamp
|
||||
* @param bool $includeUserKeys
|
||||
*/
|
||||
public function backupAllKeys($purpose, $timestamp = true, $includeUserKeys = true) {
|
||||
// $backupDir = $this->keyStorage->;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $uid
|
||||
*/
|
||||
public function replaceUserKeys($uid) {
|
||||
$this->backupAllKeys('password_reset');
|
||||
$this->deletePublicKey($uid);
|
||||
$this->deletePrivateKey($uid);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $uid
|
||||
* @return bool
|
||||
*/
|
||||
public function deletePublicKey($uid) {
|
||||
return $this->keyStorage->deleteUserKey($uid, $this->publicKeyId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $uid
|
||||
* @return bool
|
||||
*/
|
||||
private function deletePrivateKey($uid) {
|
||||
return $this->keyStorage->deleteUserKey($uid, $this->privateKeyId);
|
||||
}
|
||||
|
||||
public function deleteAllFileKeys($path) {
|
||||
return $this->keyStorage->deleteAllFileKeys($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $userIds
|
||||
* @return array
|
||||
* @throws PublicKeyMissingException
|
||||
*/
|
||||
public function getPublicKeys(array $userIds) {
|
||||
$keys = [];
|
||||
|
||||
foreach ($userIds as $userId) {
|
||||
try {
|
||||
$keys[$userId] = $this->getPublicKey($userId);
|
||||
} catch (PublicKeyMissingException $e) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
return $keys;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $keyId
|
||||
* @return string returns openssl key
|
||||
*/
|
||||
public function getSystemPrivateKey($keyId) {
|
||||
return $this->keyStorage->getSystemUserKey($keyId . '.' . $this->privateKeyId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $keyId
|
||||
* @param string $key
|
||||
* @return string returns openssl key
|
||||
*/
|
||||
public function setSystemPrivateKey($keyId, $key) {
|
||||
return $this->keyStorage->setSystemUserKey($keyId . '.' . $this->privateKeyId, $key);
|
||||
}
|
||||
|
||||
/**
|
||||
* add system keys such as the public share key and the recovery key
|
||||
*
|
||||
* @param array $accessList
|
||||
* @param array $publicKeys
|
||||
* @return array
|
||||
* @throws PublicKeyMissingException
|
||||
*/
|
||||
public function addSystemKeys(array $accessList, array $publicKeys) {
|
||||
if (!empty($accessList['public'])) {
|
||||
$publicShareKey = $this->getPublicShareKey();
|
||||
if (empty($publicShareKey)) {
|
||||
throw new PublicKeyMissingException($this->getPublicShareKeyId());
|
||||
}
|
||||
$publicKeys[$this->getPublicShareKeyId()] = $publicShareKey;
|
||||
}
|
||||
|
||||
if ($this->recoveryKeyExists() &&
|
||||
$this->util->isRecoveryEnabledForUser()) {
|
||||
|
||||
$publicKeys[$this->getRecoveryKeyId()] = $this->getRecoveryKey();
|
||||
}
|
||||
|
||||
return $publicKeys;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,316 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 2/19/15, 11:45 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Encryption;
|
||||
|
||||
|
||||
use OCA\Encryption\Crypto\Crypt;
|
||||
use OCP\Encryption\Keys\IStorage;
|
||||
use OCP\IConfig;
|
||||
use OCP\IUser;
|
||||
use OCP\IUserSession;
|
||||
use OCP\PreConditionNotMetException;
|
||||
use OCP\Security\ISecureRandom;
|
||||
use OC\Files\View;
|
||||
use OCP\Encryption\IFile;
|
||||
|
||||
class Recovery {
|
||||
|
||||
|
||||
/**
|
||||
* @var null|IUser
|
||||
*/
|
||||
protected $user;
|
||||
/**
|
||||
* @var Crypt
|
||||
*/
|
||||
protected $crypt;
|
||||
/**
|
||||
* @var ISecureRandom
|
||||
*/
|
||||
private $random;
|
||||
/**
|
||||
* @var KeyManager
|
||||
*/
|
||||
private $keyManager;
|
||||
/**
|
||||
* @var IConfig
|
||||
*/
|
||||
private $config;
|
||||
/**
|
||||
* @var IStorage
|
||||
*/
|
||||
private $keyStorage;
|
||||
/**
|
||||
* @var View
|
||||
*/
|
||||
private $view;
|
||||
/**
|
||||
* @var IFile
|
||||
*/
|
||||
private $file;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $recoveryKeyId;
|
||||
|
||||
/**
|
||||
* @param IUserSession $user
|
||||
* @param Crypt $crypt
|
||||
* @param ISecureRandom $random
|
||||
* @param KeyManager $keyManager
|
||||
* @param IConfig $config
|
||||
* @param IStorage $keyStorage
|
||||
* @param IFile $file
|
||||
* @param View $view
|
||||
*/
|
||||
public function __construct(IUserSession $user,
|
||||
Crypt $crypt,
|
||||
ISecureRandom $random,
|
||||
KeyManager $keyManager,
|
||||
IConfig $config,
|
||||
IStorage $keyStorage,
|
||||
IFile $file,
|
||||
View $view) {
|
||||
$this->user = ($user && $user->isLoggedIn()) ? $user->getUser() : false;
|
||||
$this->crypt = $crypt;
|
||||
$this->random = $random;
|
||||
$this->keyManager = $keyManager;
|
||||
$this->config = $config;
|
||||
$this->keyStorage = $keyStorage;
|
||||
$this->view = $view;
|
||||
$this->file = $file;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $recoveryKeyId
|
||||
* @param $password
|
||||
* @return bool
|
||||
*/
|
||||
public function enableAdminRecovery($password) {
|
||||
$appConfig = $this->config;
|
||||
$keyManager = $this->keyManager;
|
||||
|
||||
if (!$keyManager->recoveryKeyExists()) {
|
||||
$keyPair = $this->crypt->createKeyPair();
|
||||
|
||||
$this->keyManager->setRecoveryKey($password, $keyPair);
|
||||
}
|
||||
|
||||
if ($keyManager->checkRecoveryPassword($password)) {
|
||||
$appConfig->setAppValue('encryption', 'recoveryAdminEnabled', 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* change recovery key id
|
||||
*
|
||||
* @param string $newPassword
|
||||
* @param string $oldPassword
|
||||
*/
|
||||
public function changeRecoveryKeyPassword($newPassword, $oldPassword) {
|
||||
$recoveryKey = $this->keyManager->getSystemPrivateKey($this->keyManager->getRecoveryKeyId());
|
||||
$decryptedRecoveryKey = $this->crypt->decryptPrivateKey($recoveryKey, $oldPassword);
|
||||
$encryptedRecoveryKey = $this->crypt->symmetricEncryptFileContent($decryptedRecoveryKey, $newPassword);
|
||||
if ($encryptedRecoveryKey) {
|
||||
$this->keyManager->setSystemPrivateKey($this->keyManager->getRecoveryKeyId(), $encryptedRecoveryKey);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $recoveryPassword
|
||||
* @return bool
|
||||
*/
|
||||
public function disableAdminRecovery($recoveryPassword) {
|
||||
$keyManager = $this->keyManager;
|
||||
|
||||
if ($keyManager->checkRecoveryPassword($recoveryPassword)) {
|
||||
// Set recoveryAdmin as disabled
|
||||
$this->config->setAppValue('encryption', 'recoveryAdminEnabled', 0);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* check if recovery is enabled for user
|
||||
*
|
||||
* @param string $user if no user is given we check the current logged-in user
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isRecoveryEnabledForUser($user = '') {
|
||||
$uid = empty($user) ? $this->user->getUID() : $user;
|
||||
$recoveryMode = $this->config->getUserValue($uid,
|
||||
'encryption',
|
||||
'recoveryEnabled',
|
||||
0);
|
||||
|
||||
return ($recoveryMode === '1');
|
||||
}
|
||||
|
||||
/**
|
||||
* check if recovery is key is enabled by the administrator
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isRecoveryKeyEnabled() {
|
||||
$enabled = $this->config->getAppValue('encryption', 'recoveryAdminEnabled', 0);
|
||||
|
||||
return ($enabled === '1');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $value
|
||||
* @return bool
|
||||
*/
|
||||
public function setRecoveryForUser($value) {
|
||||
|
||||
try {
|
||||
$this->config->setUserValue($this->user->getUID(),
|
||||
'encryption',
|
||||
'recoveryEnabled',
|
||||
$value);
|
||||
|
||||
if ($value === '1') {
|
||||
$this->addRecoveryKeys('/' . $this->user->getUID() . '/files/');
|
||||
} else {
|
||||
$this->removeRecoveryKeys('/' . $this->user->getUID() . '/files/');
|
||||
}
|
||||
|
||||
return true;
|
||||
} catch (PreConditionNotMetException $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* add recovery key to all encrypted files
|
||||
*/
|
||||
private function addRecoveryKeys($path) {
|
||||
$dirContent = $this->view->getDirectoryContent($path);
|
||||
foreach ($dirContent as $item) {
|
||||
$filePath = $item->getPath();
|
||||
if ($item['type'] === 'dir') {
|
||||
$this->addRecoveryKeys($filePath . '/');
|
||||
} else {
|
||||
$fileKey = $this->keyManager->getFileKey($filePath, $this->user->getUID());
|
||||
if (!empty($fileKey)) {
|
||||
$accessList = $this->file->getAccessList($filePath);
|
||||
$publicKeys = array();
|
||||
foreach ($accessList['users'] as $uid) {
|
||||
$publicKeys[$uid] = $this->keyManager->getPublicKey($uid);
|
||||
}
|
||||
|
||||
$publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys);
|
||||
|
||||
$encryptedKeyfiles = $this->crypt->multiKeyEncrypt($fileKey, $publicKeys);
|
||||
$this->keyManager->setAllFileKeys($filePath, $encryptedKeyfiles);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* remove recovery key to all encrypted files
|
||||
*/
|
||||
private function removeRecoveryKeys($path) {
|
||||
$dirContent = $this->view->getDirectoryContent($path);
|
||||
foreach ($dirContent as $item) {
|
||||
$filePath = $item->getPath();
|
||||
if ($item['type'] === 'dir') {
|
||||
$this->removeRecoveryKeys($filePath . '/');
|
||||
} else {
|
||||
$this->keyManager->deleteShareKey($filePath, $this->keyManager->getRecoveryKeyId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* recover users files with the recovery key
|
||||
*
|
||||
* @param string $recoveryPassword
|
||||
* @param string $user
|
||||
*/
|
||||
public function recoverUsersFiles($recoveryPassword, $user) {
|
||||
$encryptedKey = $this->keyManager->getSystemPrivateKey($this->keyManager->getRecoveryKeyId());
|
||||
|
||||
$privateKey = $this->crypt->decryptPrivateKey($encryptedKey,
|
||||
$recoveryPassword);
|
||||
|
||||
$this->recoverAllFiles('/' . $user . '/files/', $privateKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $path
|
||||
* @param $privateKey
|
||||
*/
|
||||
private function recoverAllFiles($path, $privateKey) {
|
||||
$dirContent = $this->view->getDirectoryContent($path);
|
||||
|
||||
foreach ($dirContent as $item) {
|
||||
// Get relative path from encryption/keyfiles
|
||||
$filePath = $item->getPath();
|
||||
if ($this->view->is_dir($filePath)) {
|
||||
$this->recoverAllFiles($filePath . '/', $privateKey);
|
||||
} else {
|
||||
$this->recoverFile($filePath, $privateKey);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $path
|
||||
* @param string $privateKey
|
||||
*/
|
||||
private function recoverFile($path, $privateKey) {
|
||||
$encryptedFileKey = $this->keyManager->getEncryptedFileKey($path);
|
||||
$shareKey = $this->keyManager->getShareKey($path, $this->keyManager->getRecoveryKeyId());
|
||||
|
||||
if ($encryptedFileKey && $shareKey && $privateKey) {
|
||||
$fileKey = $this->crypt->multiKeyDecrypt($encryptedFileKey,
|
||||
$shareKey,
|
||||
$privateKey);
|
||||
}
|
||||
|
||||
if (!empty($fileKey)) {
|
||||
$accessList = $this->file->getAccessList($path);
|
||||
$publicKeys = array();
|
||||
foreach ($accessList['users'] as $uid) {
|
||||
$publicKeys[$uid] = $this->keyManager->getPublicKey($uid);
|
||||
}
|
||||
|
||||
$publicKeys = $this->keyManager->addSystemKeys($accessList, $publicKeys);
|
||||
|
||||
$encryptedKeyfiles = $this->crypt->multiKeyEncrypt($fileKey, $publicKeys);
|
||||
$this->keyManager->setAllFileKeys($path, $encryptedKeyfiles);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,114 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud
|
||||
*
|
||||
* @copyright (C) 2015 ownCloud, Inc.
|
||||
*
|
||||
* @author Bjoern Schiessle <schiessle@owncloud.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace OCA\Encryption;
|
||||
|
||||
use \OCP\ISession;
|
||||
|
||||
class Session {
|
||||
|
||||
/** @var ISession */
|
||||
protected $session;
|
||||
|
||||
const NOT_INITIALIZED = '0';
|
||||
const INIT_EXECUTED = '1';
|
||||
const INIT_SUCCESSFUL = '2';
|
||||
|
||||
public function __construct(ISession $session) {
|
||||
$this->session = $session;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets status of encryption app
|
||||
*
|
||||
* @param string $status INIT_SUCCESSFUL, INIT_EXECUTED, NOT_INITIALIZED
|
||||
*/
|
||||
public function setStatus($status) {
|
||||
$this->session->set('encryptionInitialized', $status);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets status if we already tried to initialize the encryption app
|
||||
*
|
||||
* @return string init status INIT_SUCCESSFUL, INIT_EXECUTED, NOT_INITIALIZED
|
||||
*/
|
||||
public function getStatus() {
|
||||
$status = $this->session->get('encryptionInitialized');
|
||||
if (is_null($status)) {
|
||||
$status = self::NOT_INITIALIZED;
|
||||
}
|
||||
|
||||
return $status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets user or public share private key from session
|
||||
*
|
||||
* @return string $privateKey The user's plaintext private key
|
||||
* @throws Exceptions\PrivateKeyMissingException
|
||||
*/
|
||||
public function getPrivateKey() {
|
||||
$key = $this->session->get('privateKey');
|
||||
if (is_null($key)) {
|
||||
throw new Exceptions\PrivateKeyMissingException('please try to log-out and log-in again', 0);
|
||||
}
|
||||
return $key;
|
||||
}
|
||||
|
||||
/**
|
||||
* check if private key is set
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function isPrivateKeySet() {
|
||||
$key = $this->session->get('privateKey');
|
||||
if (is_null($key)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets user private key to session
|
||||
*
|
||||
* @param string $key users private key
|
||||
*
|
||||
* @note this should only be set on login
|
||||
*/
|
||||
public function setPrivateKey($key) {
|
||||
$this->session->set('privateKey', $key);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* remove keys from session
|
||||
*/
|
||||
public function clear() {
|
||||
$this->session->remove('publicSharePrivateKey');
|
||||
$this->session->remove('privateKey');
|
||||
$this->session->remove('encryptionInitialized');
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <fallen013@gmail.com>
|
||||
* @since 3/6/15, 11:36 AM
|
||||
* @link http:/www.clarkt.com
|
||||
* @copyright Clark Tomlinson © 2015
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Encryption\Users;
|
||||
|
||||
|
||||
use OCA\Encryption\Crypto\Crypt;
|
||||
use OCA\Encryption\KeyManager;
|
||||
use OCP\ILogger;
|
||||
use OCP\IUserSession;
|
||||
|
||||
class Setup {
|
||||
/**
|
||||
* @var Crypt
|
||||
*/
|
||||
private $crypt;
|
||||
/**
|
||||
* @var KeyManager
|
||||
*/
|
||||
private $keyManager;
|
||||
/**
|
||||
* @var ILogger
|
||||
*/
|
||||
private $logger;
|
||||
/**
|
||||
* @var bool|string
|
||||
*/
|
||||
private $user;
|
||||
|
||||
|
||||
/**
|
||||
* @param ILogger $logger
|
||||
* @param IUserSession $userSession
|
||||
* @param Crypt $crypt
|
||||
* @param KeyManager $keyManager
|
||||
*/
|
||||
public function __construct(ILogger $logger, IUserSession $userSession, Crypt $crypt, KeyManager $keyManager) {
|
||||
$this->logger = $logger;
|
||||
$this->user = $userSession && $userSession->isLoggedIn() ? $userSession->getUser()->getUID() : false;
|
||||
$this->crypt = $crypt;
|
||||
$this->keyManager = $keyManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $uid userid
|
||||
* @param $password user password
|
||||
* @return bool
|
||||
*/
|
||||
public function setupUser($uid, $password) {
|
||||
return $this->setupServerSide($uid, $password);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $uid userid
|
||||
* @param $password user password
|
||||
* @return bool
|
||||
*/
|
||||
public function setupServerSide($uid, $password) {
|
||||
// Check if user already has keys
|
||||
if (!$this->keyManager->userHasKeys($uid)) {
|
||||
return $this->keyManager->storeKeyPair($uid, $password,
|
||||
$this->crypt->createKeyPair());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,117 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 3/17/15, 10:31 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OCA\Encryption;
|
||||
|
||||
|
||||
use OC\Files\View;
|
||||
use OCA\Encryption\Crypto\Crypt;
|
||||
use OCP\IConfig;
|
||||
use OCP\ILogger;
|
||||
use OCP\IUser;
|
||||
use OCP\IUserSession;
|
||||
use OCP\PreConditionNotMetException;
|
||||
|
||||
class Util {
|
||||
/**
|
||||
* @var View
|
||||
*/
|
||||
private $files;
|
||||
/**
|
||||
* @var Crypt
|
||||
*/
|
||||
private $crypt;
|
||||
/**
|
||||
* @var ILogger
|
||||
*/
|
||||
private $logger;
|
||||
/**
|
||||
* @var bool|IUser
|
||||
*/
|
||||
private $user;
|
||||
/**
|
||||
* @var IConfig
|
||||
*/
|
||||
private $config;
|
||||
|
||||
/**
|
||||
* Util constructor.
|
||||
*
|
||||
* @param View $files
|
||||
* @param Crypt $crypt
|
||||
* @param ILogger $logger
|
||||
* @param IUserSession $userSession
|
||||
* @param IConfig $config
|
||||
*/
|
||||
public function __construct(View $files,
|
||||
Crypt $crypt,
|
||||
ILogger $logger,
|
||||
IUserSession $userSession,
|
||||
IConfig $config
|
||||
) {
|
||||
$this->files = $files;
|
||||
$this->crypt = $crypt;
|
||||
$this->logger = $logger;
|
||||
$this->user = $userSession && $userSession->isLoggedIn() ? $userSession->getUser() : false;
|
||||
$this->config = $config;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isRecoveryEnabledForUser() {
|
||||
$recoveryMode = $this->config->getUserValue($this->user->getUID(),
|
||||
'encryption',
|
||||
'recoveryEnabled',
|
||||
0);
|
||||
|
||||
return ($recoveryMode === '1');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $enabled
|
||||
* @return bool
|
||||
*/
|
||||
public function setRecoveryForUser($enabled) {
|
||||
$value = $enabled ? '1' : '0';
|
||||
|
||||
try {
|
||||
$this->config->setUserValue($this->user->getUID(),
|
||||
'encryption',
|
||||
'recoveryEnabled',
|
||||
$value);
|
||||
return true;
|
||||
} catch (PreConditionNotMetException $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $uid
|
||||
* @return bool
|
||||
*/
|
||||
public function userHasFiles($uid) {
|
||||
return $this->files->file_exists($uid . '/files');
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
/**
|
||||
* Copyright (c) 2015 Clark Tomlinson <clark@owncloud.com>
|
||||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later.
|
||||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
\OC_Util::checkAdminUser();
|
||||
|
||||
$tmpl = new OCP\Template('encryption', 'settings-admin');
|
||||
|
||||
// Check if an adminRecovery account is enabled for recovering files after lost pwd
|
||||
$recoveryAdminEnabled = \OC::$server->getConfig()->getAppValue('encryption', 'recoveryAdminEnabled', '0');
|
||||
$session = new \OCA\Encryption\Session(\OC::$server->getSession());
|
||||
|
||||
|
||||
$tmpl->assign('recoveryEnabled', $recoveryAdminEnabled);
|
||||
$tmpl->assign('initStatus', $session->getStatus());
|
||||
|
||||
return $tmpl->fetchPage();
|
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
/**
|
||||
* Copyright (c) 2015 Clark Tomlinson <clark@owncloud.com>
|
||||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later.
|
||||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
$session = new \OCA\Encryption\Session(\OC::$server->getSession());
|
||||
$userSession = \OC::$server->getUserSession();
|
||||
|
||||
$template = new OCP\Template('encryption', 'settings-personal');
|
||||
$crypt = new \OCA\Encryption\Crypto\Crypt(
|
||||
\OC::$server->getLogger(),
|
||||
$userSession,
|
||||
\OC::$server->getConfig());
|
||||
|
||||
$util = new \OCA\Encryption\Util(
|
||||
new \OC\Files\View(),
|
||||
$crypt,
|
||||
\OC::$server->getLogger(),
|
||||
$userSession,
|
||||
\OC::$server->getConfig());
|
||||
|
||||
$keyManager = new \OCA\Encryption\KeyManager(
|
||||
\OC::$server->getEncryptionKeyStorage(\OCA\Encryption\Crypto\Encryption::ID),
|
||||
$crypt,
|
||||
\OC::$server->getConfig(),
|
||||
$userSession,
|
||||
$session,
|
||||
\OC::$server->getLogger(), $util);
|
||||
|
||||
$user = $userSession->getUser()->getUID();
|
||||
|
||||
$view = new \OC\Files\View('/');
|
||||
|
||||
|
||||
|
||||
$privateKeySet = $session->isPrivateKeySet();
|
||||
// did we tried to initialize the keys for this session?
|
||||
$initialized = $session->getStatus();
|
||||
|
||||
$recoveryAdminEnabled = \OC::$server->getConfig()->getAppValue('encryption', 'recoveryAdminEnabled');
|
||||
$recoveryEnabledForUser = $util->isRecoveryEnabledForUser();
|
||||
|
||||
$result = false;
|
||||
|
||||
if ($recoveryAdminEnabled || !$privateKeySet) {
|
||||
$template->assign('recoveryEnabled', $recoveryAdminEnabled);
|
||||
$template->assign('recoveryEnabledForUser', $recoveryEnabledForUser);
|
||||
$template->assign('privateKeySet', $privateKeySet);
|
||||
$template->assign('initialized', $initialized);
|
||||
|
||||
$result = $template->fetchPage();
|
||||
}
|
||||
|
||||
return $result;
|
||||
|
|
@ -1,11 +1,13 @@
|
|||
<?php
|
||||
/** @var array $_ */
|
||||
/** @var OC_L10N $l */
|
||||
/** @var array $_ */
|
||||
/** @var OC_L10N $l */
|
||||
script('encryption', 'settings-admin');
|
||||
script('core', 'multiselect');
|
||||
?>
|
||||
<form id="encryption" class="section">
|
||||
<h2><?php p($l->t('Server-side Encryption')); ?></h2>
|
||||
<h2><?php p($l->t('ownCloud basic encryption module')); ?></h2>
|
||||
|
||||
<?php if($_["initStatus"] === \OCA\Files_Encryption\Session::NOT_INITIALIZED): ?>
|
||||
<?php if(!$_["initStatus"]): ?>
|
||||
<?php p($l->t("Encryption App is enabled but your keys are not initialized, please log-out and log-in again")); ?>
|
||||
<?php else: ?>
|
||||
<p id="encryptionSetRecoveryKey">
|
|
@ -1,70 +1,72 @@
|
|||
<?php
|
||||
/** @var array $_ */
|
||||
/** @var OC_L10N $l */
|
||||
?>
|
||||
<form id="encryption" class="section">
|
||||
<h2><?php p($l->t('Server-side Encryption')); ?></h2>
|
||||
|
||||
<?php if ( $_["initialized"] === \OCA\Files_Encryption\Session::NOT_INITIALIZED ): ?>
|
||||
|
||||
<?php p($l->t("Encryption App is enabled but your keys are not initialized, please log-out and log-in again")); ?>
|
||||
|
||||
<?php elseif ( $_["initialized"] === \OCA\Files_Encryption\Session::INIT_EXECUTED ): ?>
|
||||
<p>
|
||||
<a name="changePKPasswd" />
|
||||
<label for="changePrivateKeyPasswd">
|
||||
<em><?php p( $l->t( "Your private key password no longer matches your log-in password." ) ); ?></em>
|
||||
</label>
|
||||
<br />
|
||||
<?php p( $l->t( "Set your old private key password to your current log-in password:" ) ); ?>
|
||||
<?php if ( $_["recoveryEnabledForUser"] ):
|
||||
p( $l->t( " If you don't remember your old password you can ask your administrator to recover your files." ) );
|
||||
endif; ?>
|
||||
<br />
|
||||
<input
|
||||
type="password"
|
||||
name="changePrivateKeyPassword"
|
||||
id="oldPrivateKeyPassword" />
|
||||
<label for="oldPrivateKeyPassword"><?php p($l->t( "Old log-in password" )); ?></label>
|
||||
<br />
|
||||
<input
|
||||
type="password"
|
||||
name="changePrivateKeyPassword"
|
||||
id="newPrivateKeyPassword" />
|
||||
<label for="newRecoveryPassword"><?php p($l->t( "Current log-in password" )); ?></label>
|
||||
<br />
|
||||
<button
|
||||
type="button"
|
||||
name="submitChangePrivateKeyPassword"
|
||||
disabled><?php p($l->t( "Update Private Key Password" )); ?>
|
||||
</button>
|
||||
<span class="msg"></span>
|
||||
</p>
|
||||
|
||||
<?php elseif ( $_["recoveryEnabled"] && $_["privateKeySet"] && $_["initialized"] === \OCA\Files_Encryption\Session::INIT_SUCCESSFUL ): ?>
|
||||
<br />
|
||||
<p id="userEnableRecovery">
|
||||
<label for="userEnableRecovery"><?php p( $l->t( "Enable password recovery:" ) ); ?></label>
|
||||
<span class="msg"></span>
|
||||
<br />
|
||||
<em><?php p( $l->t( "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" ) ); ?></em>
|
||||
<br />
|
||||
<input
|
||||
type='radio'
|
||||
id='userEnableRecovery'
|
||||
name='userEnableRecovery'
|
||||
value='1'
|
||||
<?php echo ( $_["recoveryEnabledForUser"] ? 'checked="checked"' : '' ); ?> />
|
||||
<label for="userEnableRecovery"><?php p( $l->t( "Enabled" ) ); ?></label>
|
||||
<br />
|
||||
|
||||
<input
|
||||
type='radio'
|
||||
id='userDisableRecovery'
|
||||
name='userEnableRecovery'
|
||||
value='0'
|
||||
<?php echo ( $_["recoveryEnabledForUser"] === false ? 'checked="checked"' : '' ); ?> />
|
||||
<label for="userDisableRecovery"><?php p( $l->t( "Disabled" ) ); ?></label>
|
||||
</p>
|
||||
<?php endif; ?>
|
||||
</form>
|
||||
<?php
|
||||
/** @var array $_ */
|
||||
/** @var OC_L10N $l */
|
||||
script('encryption', 'settings-personal');
|
||||
script('core', 'multiselect');
|
||||
?>
|
||||
<form id="encryption" class="section">
|
||||
<h2><?php p($l->t('ownCloud basic encryption module')); ?></h2>
|
||||
|
||||
<?php if ($_["initialized"] === \OCA\Encryption\Session::NOT_INITIALIZED ): ?>
|
||||
|
||||
<?php p($l->t("Encryption App is enabled but your keys are not initialized, please log-out and log-in again")); ?>
|
||||
|
||||
<?php elseif ( $_["initialized"] === \OCA\Encryption\Session::INIT_EXECUTED ): ?>
|
||||
<p>
|
||||
<a name="changePKPasswd" />
|
||||
<label for="changePrivateKeyPasswd">
|
||||
<em><?php p( $l->t( "Your private key password no longer matches your log-in password." ) ); ?></em>
|
||||
</label>
|
||||
<br />
|
||||
<?php p( $l->t( "Set your old private key password to your current log-in password:" ) ); ?>
|
||||
<?php if ( $_["recoveryEnabledForUser"] ):
|
||||
p( $l->t( " If you don't remember your old password you can ask your administrator to recover your files." ) );
|
||||
endif; ?>
|
||||
<br />
|
||||
<input
|
||||
type="password"
|
||||
name="changePrivateKeyPassword"
|
||||
id="oldPrivateKeyPassword" />
|
||||
<label for="oldPrivateKeyPassword"><?php p($l->t( "Old log-in password" )); ?></label>
|
||||
<br />
|
||||
<input
|
||||
type="password"
|
||||
name="changePrivateKeyPassword"
|
||||
id="newPrivateKeyPassword" />
|
||||
<label for="newRecoveryPassword"><?php p($l->t( "Current log-in password" )); ?></label>
|
||||
<br />
|
||||
<button
|
||||
type="button"
|
||||
name="submitChangePrivateKeyPassword"
|
||||
disabled><?php p($l->t( "Update Private Key Password" )); ?>
|
||||
</button>
|
||||
<span class="msg"></span>
|
||||
</p>
|
||||
|
||||
<?php elseif ( $_["recoveryEnabled"] && $_["privateKeySet"] && $_["initialized"] === \OCA\Encryption\Session::INIT_SUCCESSFUL ): ?>
|
||||
<br />
|
||||
<p id="userEnableRecovery">
|
||||
<label for="userEnableRecovery"><?php p( $l->t( "Enable password recovery:" ) ); ?></label>
|
||||
<span class="msg"></span>
|
||||
<br />
|
||||
<em><?php p( $l->t( "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" ) ); ?></em>
|
||||
<br />
|
||||
<input
|
||||
type='radio'
|
||||
id='userEnableRecovery'
|
||||
name='userEnableRecovery'
|
||||
value='1'
|
||||
<?php echo ( $_["recoveryEnabledForUser"] ? 'checked="checked"' : '' ); ?> />
|
||||
<label for="userEnableRecovery"><?php p( $l->t( "Enabled" ) ); ?></label>
|
||||
<br />
|
||||
|
||||
<input
|
||||
type='radio'
|
||||
id='userDisableRecovery'
|
||||
name='userEnableRecovery'
|
||||
value='0'
|
||||
<?php echo ( $_["recoveryEnabledForUser"] === false ? 'checked="checked"' : '' ); ?> />
|
||||
<label for="userDisableRecovery"><?php p( $l->t( "Disabled" ) ); ?></label>
|
||||
</p>
|
||||
<?php endif; ?>
|
||||
</form>
|
|
@ -0,0 +1,74 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 3/31/15, 1:54 PM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OCA\Encryption\Tests;
|
||||
|
||||
|
||||
use OCA\Encryption\HookManager;
|
||||
use Test\TestCase;
|
||||
|
||||
class HookManagerTest extends TestCase {
|
||||
|
||||
/**
|
||||
* @var HookManager
|
||||
*/
|
||||
private static $instance;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function testRegisterHookWithArray() {
|
||||
self::$instance->registerHook([
|
||||
$this->getMockBuilder('OCA\Encryption\Hooks\Contracts\IHook')->disableOriginalConstructor()->getMock(),
|
||||
$this->getMockBuilder('OCA\Encryption\Hooks\Contracts\IHook')->disableOriginalConstructor()->getMock(),
|
||||
$this->getMock('NotIHook')
|
||||
]);
|
||||
|
||||
$hookInstances = \Test_Helper::invokePrivate(self::$instance, 'hookInstances');
|
||||
// Make sure our type checking works
|
||||
$this->assertCount(2, $hookInstances);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function setUpBeforeClass() {
|
||||
parent::setUpBeforeClass();
|
||||
// have to make instance static to preserve data between tests
|
||||
self::$instance = new HookManager();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function testRegisterHooksWithInstance() {
|
||||
$mock = $this->getMockBuilder('OCA\Encryption\Hooks\Contracts\IHook')->disableOriginalConstructor()->getMock();
|
||||
self::$instance->registerHook($mock);
|
||||
|
||||
$hookInstances = \Test_Helper::invokePrivate(self::$instance, 'hookInstances');
|
||||
$this->assertCount(3, $hookInstances);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,286 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <fallen013@gmail.com>
|
||||
* @since 3/5/15, 10:53 AM
|
||||
* @link http:/www.clarkt.com
|
||||
* @copyright Clark Tomlinson © 2015
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Encryption\Tests;
|
||||
|
||||
|
||||
use OCA\Encryption\KeyManager;
|
||||
use Test\TestCase;
|
||||
|
||||
class KeyManagerTest extends TestCase {
|
||||
/**
|
||||
* @var KeyManager
|
||||
*/
|
||||
private $instance;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $userId;
|
||||
|
||||
/** @var string */
|
||||
private $systemKeyId;
|
||||
|
||||
/** @var \PHPUnit_Framework_MockObject_MockObject */
|
||||
private $keyStorageMock;
|
||||
|
||||
/** @var \PHPUnit_Framework_MockObject_MockObject */
|
||||
private $cryptMock;
|
||||
|
||||
/** @var \PHPUnit_Framework_MockObject_MockObject */
|
||||
private $userMock;
|
||||
|
||||
/** @var \PHPUnit_Framework_MockObject_MockObject */
|
||||
private $sessionMock;
|
||||
|
||||
/** @var \PHPUnit_Framework_MockObject_MockObject */
|
||||
private $logMock;
|
||||
|
||||
/** @var \PHPUnit_Framework_MockObject_MockObject */
|
||||
private $utilMock;
|
||||
|
||||
/** @var \PHPUnit_Framework_MockObject_MockObject */
|
||||
private $configMock;
|
||||
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
$this->userId = 'user1';
|
||||
$this->systemKeyId = 'systemKeyId';
|
||||
$this->keyStorageMock = $this->getMock('OCP\Encryption\Keys\IStorage');
|
||||
$this->cryptMock = $this->getMockBuilder('OCA\Encryption\Crypto\Crypt')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->configMock = $this->getMock('OCP\IConfig');
|
||||
$this->configMock->expects($this->any())
|
||||
->method('getAppValue')
|
||||
->willReturn($this->systemKeyId);
|
||||
$this->userMock = $this->getMock('OCP\IUserSession');
|
||||
$this->sessionMock = $this->getMockBuilder('OCA\Encryption\Session')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->logMock = $this->getMock('OCP\ILogger');
|
||||
$this->utilMock = $this->getMockBuilder('OCA\Encryption\Util')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$this->instance = new KeyManager(
|
||||
$this->keyStorageMock,
|
||||
$this->cryptMock,
|
||||
$this->configMock,
|
||||
$this->userMock,
|
||||
$this->sessionMock,
|
||||
$this->logMock,
|
||||
$this->utilMock);
|
||||
}
|
||||
|
||||
public function testDeleteShareKey() {
|
||||
$this->keyStorageMock->expects($this->any())
|
||||
->method('deleteFileKey')
|
||||
->with($this->equalTo('/path'), $this->equalTo('keyId.shareKey'))
|
||||
->willReturn(true);
|
||||
|
||||
$this->assertTrue(
|
||||
$this->instance->deleteShareKey('/path', 'keyId')
|
||||
);
|
||||
}
|
||||
|
||||
public function testGetPrivateKey() {
|
||||
$this->keyStorageMock->expects($this->any())
|
||||
->method('getUserKey')
|
||||
->with($this->equalTo($this->userId), $this->equalTo('privateKey'))
|
||||
->willReturn('privateKey');
|
||||
|
||||
|
||||
$this->assertSame('privateKey',
|
||||
$this->instance->getPrivateKey($this->userId)
|
||||
);
|
||||
}
|
||||
|
||||
public function testGetPublicKey() {
|
||||
$this->keyStorageMock->expects($this->any())
|
||||
->method('getUserKey')
|
||||
->with($this->equalTo($this->userId), $this->equalTo('publicKey'))
|
||||
->willReturn('publicKey');
|
||||
|
||||
|
||||
$this->assertSame('publicKey',
|
||||
$this->instance->getPublicKey($this->userId)
|
||||
);
|
||||
}
|
||||
|
||||
public function testRecoveryKeyExists() {
|
||||
$this->keyStorageMock->expects($this->any())
|
||||
->method('getSystemUserKey')
|
||||
->with($this->equalTo($this->systemKeyId . '.publicKey'))
|
||||
->willReturn('recoveryKey');
|
||||
|
||||
|
||||
$this->assertTrue($this->instance->recoveryKeyExists());
|
||||
}
|
||||
|
||||
public function testCheckRecoveryKeyPassword() {
|
||||
$this->keyStorageMock->expects($this->any())
|
||||
->method('getSystemUserKey')
|
||||
->with($this->equalTo($this->systemKeyId . '.privateKey'))
|
||||
->willReturn('recoveryKey');
|
||||
$this->cryptMock->expects($this->any())
|
||||
->method('decryptPrivateKey')
|
||||
->with($this->equalTo('recoveryKey'), $this->equalTo('pass'))
|
||||
->willReturn('decryptedRecoveryKey');
|
||||
|
||||
$this->assertTrue($this->instance->checkRecoveryPassword('pass'));
|
||||
}
|
||||
|
||||
public function testSetPublicKey() {
|
||||
$this->keyStorageMock->expects($this->any())
|
||||
->method('setUserKey')
|
||||
->with(
|
||||
$this->equalTo($this->userId),
|
||||
$this->equalTo('publicKey'),
|
||||
$this->equalTo('key'))
|
||||
->willReturn(true);
|
||||
|
||||
|
||||
$this->assertTrue(
|
||||
$this->instance->setPublicKey($this->userId, 'key')
|
||||
);
|
||||
}
|
||||
|
||||
public function testSetPrivateKey() {
|
||||
$this->keyStorageMock->expects($this->any())
|
||||
->method('setUserKey')
|
||||
->with(
|
||||
$this->equalTo($this->userId),
|
||||
$this->equalTo('privateKey'),
|
||||
$this->equalTo('key'))
|
||||
->willReturn(true);
|
||||
|
||||
|
||||
$this->assertTrue(
|
||||
$this->instance->setPrivateKey($this->userId, 'key')
|
||||
);
|
||||
}
|
||||
|
||||
public function testUserHasKeys() {
|
||||
$this->keyStorageMock->expects($this->exactly(2))
|
||||
->method('getUserKey')
|
||||
->with($this->equalTo($this->userId), $this->anything())
|
||||
->willReturn('key');
|
||||
|
||||
|
||||
$this->assertTrue(
|
||||
$this->instance->userHasKeys($this->userId)
|
||||
);
|
||||
}
|
||||
|
||||
public function testInit() {
|
||||
$this->keyStorageMock->expects($this->any())
|
||||
->method('getUserKey')
|
||||
->with($this->equalTo($this->userId), $this->equalTo('privateKey'))
|
||||
->willReturn('privateKey');
|
||||
$this->cryptMock->expects($this->any())
|
||||
->method('decryptPrivateKey')
|
||||
->with($this->equalTo('privateKey'), $this->equalTo('pass'))
|
||||
->willReturn('decryptedPrivateKey');
|
||||
|
||||
|
||||
$this->assertTrue(
|
||||
$this->instance->init($this->userId, 'pass')
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public function testSetRecoveryKey() {
|
||||
$this->keyStorageMock->expects($this->exactly(2))
|
||||
->method('setSystemUserKey')
|
||||
->willReturn(true);
|
||||
$this->cryptMock->expects($this->any())
|
||||
->method('symmetricEncryptFileContent')
|
||||
->with($this->equalTo('privateKey'), $this->equalTo('pass'))
|
||||
->willReturn('decryptedPrivateKey');
|
||||
|
||||
|
||||
$this->assertTrue(
|
||||
$this->instance->setRecoveryKey('pass',
|
||||
array('publicKey' => 'publicKey', 'privateKey' => 'privateKey'))
|
||||
);
|
||||
}
|
||||
|
||||
public function testSetSystemPrivateKey() {
|
||||
$this->keyStorageMock->expects($this->exactly(1))
|
||||
->method('setSystemUserKey')
|
||||
->with($this->equalTo('keyId.privateKey'), $this->equalTo('key'))
|
||||
->willReturn(true);
|
||||
|
||||
|
||||
$this->assertTrue(
|
||||
$this->instance->setSystemPrivateKey('keyId', 'key')
|
||||
);
|
||||
}
|
||||
|
||||
public function testGetSystemPrivateKey() {
|
||||
$this->keyStorageMock->expects($this->exactly(1))
|
||||
->method('getSystemUserKey')
|
||||
->with($this->equalTo('keyId.privateKey'))
|
||||
->willReturn('systemPrivateKey');
|
||||
|
||||
|
||||
$this->assertSame('systemPrivateKey',
|
||||
$this->instance->getSystemPrivateKey('keyId')
|
||||
);
|
||||
}
|
||||
|
||||
public function testGetEncryptedFileKey() {
|
||||
$this->keyStorageMock->expects($this->once())
|
||||
->method('getFileKey')
|
||||
->with('/', 'fileKey')
|
||||
->willReturn(true);
|
||||
|
||||
$this->assertTrue($this->instance->getEncryptedFileKey('/'));
|
||||
}
|
||||
|
||||
public function testGetFileKey() {
|
||||
$this->keyStorageMock->expects($this->exactly(4))
|
||||
->method('getFileKey')
|
||||
->willReturn(true);
|
||||
|
||||
$this->keyStorageMock->expects($this->once())
|
||||
->method('getSystemUserKey')
|
||||
->willReturn(true);
|
||||
|
||||
$this->cryptMock->expects($this->once())
|
||||
->method('symmetricDecryptFileContent')
|
||||
->willReturn(true);
|
||||
|
||||
$this->cryptMock->expects($this->once())
|
||||
->method('multiKeyDecrypt')
|
||||
->willReturn(true);
|
||||
|
||||
$this->assertTrue($this->instance->getFileKey('/', null));
|
||||
$this->assertEmpty($this->instance->getFileKey('/', $this->userId));
|
||||
}
|
||||
|
||||
public function testDeletePrivateKey() {
|
||||
$this->keyStorageMock->expects($this->once())
|
||||
->method('deleteUserKey')
|
||||
->with('user1', 'privateKey')
|
||||
->willReturn(true);
|
||||
|
||||
$this->assertTrue(\Test_Helper::invokePrivate($this->instance,
|
||||
'deletePrivateKey',
|
||||
[$this->userId]));
|
||||
}
|
||||
|
||||
public function testDeleteAllFileKeys() {
|
||||
$this->keyStorageMock->expects($this->once())
|
||||
->method('deleteAllFileKeys')
|
||||
->willReturn(true);
|
||||
|
||||
$this->assertTrue($this->instance->deleteAllFileKeys('/'));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,265 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 4/3/15, 9:57 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OCA\Encryption\Tests;
|
||||
|
||||
|
||||
use OCA\Encryption\Recovery;
|
||||
use Test\TestCase;
|
||||
|
||||
class RecoveryTest extends TestCase {
|
||||
private static $tempStorage = [];
|
||||
/**
|
||||
* @var \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
private $fileMock;
|
||||
/**
|
||||
* @var \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
private $viewMock;
|
||||
/**
|
||||
* @var \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
private $userSessionMock;
|
||||
/**
|
||||
* @var \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
private $keyManagerMock;
|
||||
/**
|
||||
* @var \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
private $configMock;
|
||||
/**
|
||||
* @var \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
private $cryptMock;
|
||||
/**
|
||||
* @var Recovery
|
||||
*/
|
||||
private $instance;
|
||||
|
||||
public function testEnableAdminRecovery() {
|
||||
$this->keyManagerMock->expects($this->exactly(2))
|
||||
->method('recoveryKeyExists')
|
||||
->willReturnOnConsecutiveCalls(false, true);
|
||||
|
||||
$this->cryptMock->expects($this->once())
|
||||
->method('createKeyPair')
|
||||
->willReturn(true);
|
||||
|
||||
$this->keyManagerMock->expects($this->once())
|
||||
->method('setRecoveryKey')
|
||||
->willReturn(false);
|
||||
|
||||
$this->keyManagerMock->expects($this->exactly(2))
|
||||
->method('checkRecoveryPassword')
|
||||
->willReturnOnConsecutiveCalls(true, false);
|
||||
|
||||
$this->assertTrue($this->instance->enableAdminRecovery('password'));
|
||||
$this->assertArrayHasKey('recoveryAdminEnabled', self::$tempStorage);
|
||||
$this->assertEquals(1, self::$tempStorage['recoveryAdminEnabled']);
|
||||
|
||||
$this->assertFalse($this->instance->enableAdminRecovery('password'));
|
||||
}
|
||||
|
||||
public function testChangeRecoveryKeyPassword() {
|
||||
$this->assertFalse($this->instance->changeRecoveryKeyPassword('password',
|
||||
'passwordOld'));
|
||||
|
||||
$this->keyManagerMock->expects($this->once())
|
||||
->method('getSystemPrivateKey');
|
||||
|
||||
$this->cryptMock->expects($this->once())
|
||||
->method('decryptPrivateKey');
|
||||
|
||||
$this->cryptMock->expects($this->once())
|
||||
->method('symmetricEncryptFileContent')
|
||||
->willReturn(true);
|
||||
|
||||
$this->assertTrue($this->instance->changeRecoveryKeyPassword('password',
|
||||
'passwordOld'));
|
||||
}
|
||||
|
||||
public function testDisableAdminRecovery() {
|
||||
|
||||
$this->keyManagerMock->expects($this->exactly(2))
|
||||
->method('checkRecoveryPassword')
|
||||
->willReturnOnConsecutiveCalls(true, false);
|
||||
|
||||
$this->assertArrayHasKey('recoveryAdminEnabled', self::$tempStorage);
|
||||
$this->assertTrue($this->instance->disableAdminRecovery('password'));
|
||||
$this->assertEquals(0, self::$tempStorage['recoveryAdminEnabled']);
|
||||
|
||||
$this->assertFalse($this->instance->disableAdminRecovery('password'));
|
||||
}
|
||||
|
||||
public function testIsRecoveryEnabledForUser() {
|
||||
|
||||
$this->configMock->expects($this->exactly(2))
|
||||
->method('getUserValue')
|
||||
->willReturnOnConsecutiveCalls('1', '0');
|
||||
|
||||
$this->assertTrue($this->instance->isRecoveryEnabledForUser());
|
||||
$this->assertFalse($this->instance->isRecoveryEnabledForUser('admin'));
|
||||
}
|
||||
|
||||
public function testIsRecoveryKeyEnabled() {
|
||||
$this->assertFalse($this->instance->isRecoveryKeyEnabled());
|
||||
self::$tempStorage['recoveryAdminEnabled'] = '1';
|
||||
$this->assertTrue($this->instance->isRecoveryKeyEnabled());
|
||||
}
|
||||
|
||||
public function testSetRecoveryFolderForUser() {
|
||||
$this->viewMock->expects($this->exactly(2))
|
||||
->method('getDirectoryContent')
|
||||
->willReturn([]);
|
||||
$this->assertTrue($this->instance->setRecoveryForUser(0));
|
||||
$this->assertTrue($this->instance->setRecoveryForUser('1'));
|
||||
}
|
||||
|
||||
public function testRecoverUserFiles() {
|
||||
$this->viewMock->expects($this->once())
|
||||
->method('getDirectoryContent')
|
||||
->willReturn([]);
|
||||
|
||||
$this->cryptMock->expects($this->once())
|
||||
->method('decryptPrivateKey');
|
||||
$this->assertNull($this->instance->recoverUsersFiles('password',
|
||||
'admin'));
|
||||
}
|
||||
|
||||
public function testRecoverFile() {
|
||||
$this->keyManagerMock->expects($this->once())
|
||||
->method('getEncryptedFileKey')
|
||||
->willReturn(true);
|
||||
|
||||
$this->keyManagerMock->expects($this->once())
|
||||
->method('getShareKey')
|
||||
->willReturn(true);
|
||||
|
||||
$this->cryptMock->expects($this->once())
|
||||
->method('multiKeyDecrypt')
|
||||
->willReturn(true);
|
||||
|
||||
$this->fileMock->expects($this->once())
|
||||
->method('getAccessList')
|
||||
->willReturn(['users' => ['admin']]);
|
||||
|
||||
$this->keyManagerMock->expects($this->once())
|
||||
->method('getPublicKey')
|
||||
->willReturn('publicKey');
|
||||
|
||||
$this->keyManagerMock->expects($this->once())
|
||||
->method('addSystemKeys')
|
||||
->willReturn(['admin' => 'publicKey']);
|
||||
|
||||
|
||||
$this->cryptMock->expects($this->once())
|
||||
->method('multiKeyEncrypt');
|
||||
|
||||
$this->keyManagerMock->expects($this->once())
|
||||
->method('setAllFileKeys');
|
||||
|
||||
$this->assertNull(\Test_Helper::invokePrivate($this->instance,
|
||||
'recoverFile',
|
||||
['/', 'testkey']));
|
||||
}
|
||||
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
|
||||
$this->userSessionMock = $this->getMockBuilder('OCP\IUserSession')
|
||||
->disableOriginalConstructor()
|
||||
->setMethods([
|
||||
'isLoggedIn',
|
||||
'getUID',
|
||||
'login',
|
||||
'logout',
|
||||
'setUser',
|
||||
'getUser'
|
||||
])
|
||||
->getMock();
|
||||
|
||||
$this->userSessionMock->expects($this->any())->method('getUID')->will($this->returnValue('admin'));
|
||||
|
||||
$this->userSessionMock->expects($this->any())
|
||||
->method($this->anything())
|
||||
->will($this->returnSelf());
|
||||
|
||||
$this->cryptMock = $this->getMockBuilder('OCA\Encryption\Crypto\Crypt')->disableOriginalConstructor()->getMock();
|
||||
$randomMock = $this->getMock('OCP\Security\ISecureRandom');
|
||||
$this->keyManagerMock = $this->getMockBuilder('OCA\Encryption\KeyManager')->disableOriginalConstructor()->getMock();
|
||||
$this->configMock = $this->getMock('OCP\IConfig');
|
||||
$keyStorageMock = $this->getMock('OCP\Encryption\Keys\IStorage');
|
||||
$this->fileMock = $this->getMock('OCP\Encryption\IFile');
|
||||
$this->viewMock = $this->getMock('OC\Files\View');
|
||||
|
||||
$this->configMock->expects($this->any())
|
||||
->method('setAppValue')
|
||||
->will($this->returnCallback([$this, 'setValueTester']));
|
||||
|
||||
$this->configMock->expects($this->any())
|
||||
->method('getAppValue')
|
||||
->will($this->returnCallback([$this, 'getValueTester']));
|
||||
|
||||
$this->instance = new Recovery($this->userSessionMock,
|
||||
$this->cryptMock,
|
||||
$randomMock,
|
||||
$this->keyManagerMock,
|
||||
$this->configMock,
|
||||
$keyStorageMock,
|
||||
$this->fileMock,
|
||||
$this->viewMock);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $app
|
||||
* @param $key
|
||||
* @param $value
|
||||
*/
|
||||
public function setValueTester($app, $key, $value) {
|
||||
self::$tempStorage[$key] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $key
|
||||
*/
|
||||
public function removeValueTester($key) {
|
||||
unset(self::$tempStorage[$key]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $app
|
||||
* @param $key
|
||||
* @return mixed
|
||||
*/
|
||||
public function getValueTester($app, $key) {
|
||||
if (!empty(self::$tempStorage[$key])) {
|
||||
return self::$tempStorage[$key];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,140 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 3/31/15, 10:19 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OCA\Encryption\Tests;
|
||||
|
||||
|
||||
use OCA\Encryption\Session;
|
||||
use Test\TestCase;
|
||||
|
||||
class SessionTest extends TestCase {
|
||||
private static $tempStorage = [];
|
||||
/**
|
||||
* @var Session
|
||||
*/
|
||||
private $instance;
|
||||
private $sessionMock;
|
||||
|
||||
/**
|
||||
* @expectedException \OCA\Encryption\Exceptions\PrivateKeyMissingException
|
||||
* @expectedExceptionMessage Private Key missing for user: please try to log-out and log-in again
|
||||
*/
|
||||
public function testThatGetPrivateKeyThrowsExceptionWhenNotSet() {
|
||||
$this->instance->getPrivateKey();
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testThatGetPrivateKeyThrowsExceptionWhenNotSet
|
||||
*/
|
||||
public function testSetAndGetPrivateKey() {
|
||||
$this->instance->setPrivateKey('dummyPrivateKey');
|
||||
$this->assertEquals('dummyPrivateKey', $this->instance->getPrivateKey());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testSetAndGetPrivateKey
|
||||
*/
|
||||
public function testIsPrivateKeySet() {
|
||||
$this->assertTrue($this->instance->isPrivateKeySet());
|
||||
|
||||
unset(self::$tempStorage['privateKey']);
|
||||
$this->assertFalse($this->instance->isPrivateKeySet());
|
||||
|
||||
// Set private key back so we can test clear method
|
||||
self::$tempStorage['privateKey'] = 'dummyPrivateKey';
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function testSetAndGetStatusWillSetAndReturn() {
|
||||
// Check if get status will return 0 if it has not been set before
|
||||
$this->assertEquals(0, $this->instance->getStatus());
|
||||
|
||||
$this->instance->setStatus(Session::NOT_INITIALIZED);
|
||||
$this->assertEquals(0, $this->instance->getStatus());
|
||||
|
||||
$this->instance->setStatus(Session::INIT_EXECUTED);
|
||||
$this->assertEquals(1, $this->instance->getStatus());
|
||||
|
||||
$this->instance->setStatus(Session::INIT_SUCCESSFUL);
|
||||
$this->assertEquals(2, $this->instance->getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $key
|
||||
* @param $value
|
||||
*/
|
||||
public function setValueTester($key, $value) {
|
||||
self::$tempStorage[$key] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $key
|
||||
*/
|
||||
public function removeValueTester($key) {
|
||||
unset(self::$tempStorage[$key]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $key
|
||||
* @return mixed
|
||||
*/
|
||||
public function getValueTester($key) {
|
||||
if (!empty(self::$tempStorage[$key])) {
|
||||
return self::$tempStorage[$key];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function testClearWillRemoveValues() {
|
||||
$this->instance->clear();
|
||||
$this->assertEmpty(self::$tempStorage);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
$this->sessionMock = $this->getMock('OCP\ISession');
|
||||
|
||||
$this->sessionMock->expects($this->any())
|
||||
->method('set')
|
||||
->will($this->returnCallback([$this, "setValueTester"]));
|
||||
|
||||
$this->sessionMock->expects($this->any())
|
||||
->method('get')
|
||||
->will($this->returnCallback([$this, "getValueTester"]));
|
||||
|
||||
$this->sessionMock->expects($this->any())
|
||||
->method('remove')
|
||||
->will($this->returnCallback([$this, "removeValueTester"]));
|
||||
|
||||
|
||||
$this->instance = new Session($this->sessionMock);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,128 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 3/31/15, 3:49 PM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OCA\Encryption\Tests;
|
||||
|
||||
|
||||
use OCA\Encryption\Util;
|
||||
use Test\TestCase;
|
||||
|
||||
class UtilTest extends TestCase {
|
||||
private static $tempStorage = [];
|
||||
private $configMock;
|
||||
private $filesMock;
|
||||
/**
|
||||
* @var Util
|
||||
*/
|
||||
private $instance;
|
||||
|
||||
public function testSetRecoveryForUser() {
|
||||
$this->instance->setRecoveryForUser('1');
|
||||
$this->assertArrayHasKey('recoveryEnabled', self::$tempStorage);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function testIsRecoveryEnabledForUser() {
|
||||
$this->assertTrue($this->instance->isRecoveryEnabledForUser());
|
||||
|
||||
// Assert recovery will return default value if not set
|
||||
unset(self::$tempStorage['recoveryEnabled']);
|
||||
$this->assertEquals(0, $this->instance->isRecoveryEnabledForUser());
|
||||
}
|
||||
|
||||
public function testUserHasFiles() {
|
||||
$this->filesMock->expects($this->once())
|
||||
->method('file_exists')
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$this->assertTrue($this->instance->userHasFiles('admin'));
|
||||
}
|
||||
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
$this->filesMock = $this->getMock('OC\Files\View');
|
||||
|
||||
$cryptMock = $this->getMockBuilder('OCA\Encryption\Crypto\Crypt')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$loggerMock = $this->getMock('OCP\ILogger');
|
||||
$userSessionMock = $this->getMockBuilder('OCP\IUserSession')
|
||||
->disableOriginalConstructor()
|
||||
->setMethods([
|
||||
'isLoggedIn',
|
||||
'getUID',
|
||||
'login',
|
||||
'logout',
|
||||
'setUser',
|
||||
'getUser'
|
||||
])
|
||||
->getMock();
|
||||
|
||||
$userSessionMock->method('isLoggedIn')->will($this->returnValue(true));
|
||||
|
||||
$userSessionMock->method('getUID')->will($this->returnValue('admin'));
|
||||
|
||||
$userSessionMock->expects($this->any())
|
||||
->method($this->anything())
|
||||
->will($this->returnSelf());
|
||||
|
||||
|
||||
$this->configMock = $configMock = $this->getMock('OCP\IConfig');
|
||||
|
||||
$this->configMock->expects($this->any())
|
||||
->method('getUserValue')
|
||||
->will($this->returnCallback([$this, 'getValueTester']));
|
||||
|
||||
$this->configMock->expects($this->any())
|
||||
->method('setUserValue')
|
||||
->will($this->returnCallback([$this, 'setValueTester']));
|
||||
|
||||
$this->instance = new Util($this->filesMock, $cryptMock, $loggerMock, $userSessionMock, $configMock);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $userId
|
||||
* @param $app
|
||||
* @param $key
|
||||
* @param $value
|
||||
*/
|
||||
public function setValueTester($userId, $app, $key, $value) {
|
||||
self::$tempStorage[$key] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $userId
|
||||
* @param $app
|
||||
* @param $key
|
||||
* @param $default
|
||||
* @return mixed
|
||||
*/
|
||||
public function getValueTester($userId, $app, $key, $default) {
|
||||
if (!empty(self::$tempStorage[$key])) {
|
||||
return self::$tempStorage[$key];
|
||||
}
|
||||
return $default ?: null;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud
|
||||
*
|
||||
* @copyright (C) 2015 ownCloud, Inc.
|
||||
*
|
||||
* @author Bjoern Schiessle <schiessle@owncloud.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace OCA\Encryption\Tests\Crypto;
|
||||
|
||||
use Test\TestCase;
|
||||
use OCA\Encryption\Crypto\Encryption;
|
||||
|
||||
class EncryptionTest extends TestCase {
|
||||
|
||||
/** @var Encryption */
|
||||
private $instance;
|
||||
|
||||
/** @var \PHPUnit_Framework_MockObject_MockObject */
|
||||
private $keyManagerMock;
|
||||
|
||||
/** @var \PHPUnit_Framework_MockObject_MockObject */
|
||||
private $cryptMock;
|
||||
|
||||
/** @var \PHPUnit_Framework_MockObject_MockObject */
|
||||
private $utilMock;
|
||||
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
$this->cryptMock = $this->getMockBuilder('OCA\Encryption\Crypto\Crypt')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->utilMock = $this->getMockBuilder('OCA\Encryption\Util')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->keyManagerMock = $this->getMockBuilder('OCA\Encryption\KeyManager')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$this->instance = new Encryption($this->cryptMock, $this->keyManagerMock, $this->utilMock);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider dataProviderForTestGetPathToRealFile
|
||||
*/
|
||||
public function testGetPathToRealFile($path, $expected) {
|
||||
$this->assertSame($expected,
|
||||
\Test_Helper::invokePrivate($this->instance, 'getPathToRealFile', array($path))
|
||||
);
|
||||
}
|
||||
|
||||
public function dataProviderForTestGetPathToRealFile() {
|
||||
return array(
|
||||
array('/user/files/foo/bar.txt', '/user/files/foo/bar.txt'),
|
||||
array('/user/files/foo.txt', '/user/files/foo.txt'),
|
||||
array('/user/files_versions/foo.txt.v543534', '/user/files/foo.txt'),
|
||||
array('/user/files_versions/foo/bar.txt.v5454', '/user/files/foo/bar.txt'),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,81 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Clark Tomlinson <clark@owncloud.com>
|
||||
* @since 4/6/15, 11:50 AM
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
namespace OCA\Encryption\Tests\Users;
|
||||
|
||||
|
||||
use OCA\Encryption\Users\Setup;
|
||||
use Test\TestCase;
|
||||
|
||||
class SetupTest extends TestCase {
|
||||
/**
|
||||
* @var \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
private $keyManagerMock;
|
||||
/**
|
||||
* @var \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
private $cryptMock;
|
||||
/**
|
||||
* @var Setup
|
||||
*/
|
||||
private $instance;
|
||||
|
||||
public function testSetupServerSide() {
|
||||
$this->keyManagerMock->expects($this->exactly(2))
|
||||
->method('userHasKeys')
|
||||
->with('admin')
|
||||
->willReturnOnConsecutiveCalls(true, false);
|
||||
|
||||
$this->assertTrue($this->instance->setupServerSide('admin',
|
||||
'password'));
|
||||
|
||||
$this->keyManagerMock->expects($this->once())
|
||||
->method('storeKeyPair')
|
||||
->with('admin', 'password')
|
||||
->willReturn(false);
|
||||
|
||||
$this->assertFalse($this->instance->setupServerSide('admin',
|
||||
'password'));
|
||||
}
|
||||
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
$logMock = $this->getMock('OCP\ILogger');
|
||||
$userSessionMock = $this->getMockBuilder('OCP\IUserSession')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->cryptMock = $this->getMockBuilder('OCA\Encryption\Crypto\Crypt')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$this->keyManagerMock = $this->getMockBuilder('OCA\Encryption\KeyManager')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$this->instance = new Setup($logMock,
|
||||
$userSessionMock,
|
||||
$this->cryptMock,
|
||||
$this->keyManagerMock);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xml:space="preserve"
|
||||
height="16px"
|
||||
width="16px"
|
||||
version="1.1"
|
||||
y="0px"
|
||||
x="0px"
|
||||
viewBox="0 0 71 100"
|
||||
id="svg2"
|
||||
inkscape:version="0.48.5 r10040"
|
||||
sodipodi:docname="app.svg"><metadata
|
||||
id="metadata10"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs8" /><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1014"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
inkscape:zoom="14.75"
|
||||
inkscape:cx="-21.423729"
|
||||
inkscape:cy="8"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2" /><path
|
||||
d="m8 1c-2.2091 0-4 1.7909-4 4v2h-1v7h10v-7h-1v-2c0-2.2091-1.791-4-4-4zm0 2c1.1046 0 2 0.89543 2 2v2h-4v-2c0-1.1046 0.8954-2 2-2z"
|
||||
transform="matrix(6.25,0,0,6.25,-14.5,0)"
|
||||
id="path4"
|
||||
style="fill:#ffffff;fill-opacity:1" /><path
|
||||
style="fill:none"
|
||||
d="m 3.0644068,10.508475 0,-3.4576275 0.4655371,0 0.465537,0 0.049537,-1.2033899 C 4.1094633,4.2818838 4.1578923,4.0112428 4.4962182,3.3259708 4.7075644,2.8978935 4.9002217,2.6327599 5.2605792,2.2740624 6.7855365,0.75613022 8.9920507,0.69157582 10.623172,2.1171729 c 0.384104,0.3357058 0.882069,1.0763131 1.054177,1.5678422 0.147302,0.4206856 0.262873,1.6086448 0.266436,2.7387137 l 0.002,0.6271187 0.508474,0 0.508475,0 0,3.4576275 0,3.457627 -4.9491527,0 -4.9491525,0 0,-3.457627 z M 10.065882,6.3559322 c -0.02012,-0.3822034 -0.04774,-0.7076271 -0.0614,-0.7231639 -0.013653,-0.015537 -0.024824,0.281921 -0.024824,0.661017 l 0,0.6892655 -1.9630041,0 -1.963004,0 -0.023717,-0.4576271 -0.023717,-0.4576271 -0.013279,0.4915254 -0.013279,0.4915255 2.0613978,0 2.0613972,0 -0.03657,-0.6949153 0,0 z M 6.5396275,3.7118644 C 6.648082,3.5720339 6.7197092,3.4576271 6.6987988,3.4576271 c -0.062956,0 -0.5835446,0.6841947 -0.5835446,0.7669359 0,0.042237 0.051116,0.00136 0.1135916,-0.090834 0.062475,-0.092195 0.2023271,-0.2820343 0.3107817,-0.4218648 z M 9.7498983,4.0169492 C 9.6961899,3.9144068 9.5352369,3.723769 9.392225,3.5933098 L 9.1322034,3.356111 9.3784249,3.6272081 c 0.1354218,0.1491033 0.2814105,0.3397411 0.3244192,0.4236394 0.043009,0.083898 0.093162,0.1525423 0.1114515,0.1525423 0.01829,0 -0.010689,-0.083898 -0.064397,-0.1864406 l 0,0 z M 7.3032896,3.1315382 C 7.2704731,3.0987216 6.877102,3.3089557 6.8306315,3.3841466 6.8091904,3.4188389 6.911918,3.3813452 7.0589148,3.300827 7.2059117,3.2203088 7.3158803,3.1441289 7.3032896,3.1315382 l 0,0 z"
|
||||
id="path3007"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="matrix(6.25,0,0,6.25,-14.5,0)" /></svg>
|
After Width: | Height: | Size: 3.3 KiB |
|
@ -23,7 +23,9 @@
|
|||
|
||||
namespace OCA\Encryption_Dummy;
|
||||
|
||||
class DummyModule implements \OCP\Encryption\IEncryptionModule {
|
||||
use OCP\Encryption\IEncryptionModule;
|
||||
|
||||
class DummyModule implements IEncryptionModule {
|
||||
|
||||
/** @var boolean */
|
||||
protected $isWriteOperation;
|
||||
|
@ -32,7 +34,7 @@ class DummyModule implements \OCP\Encryption\IEncryptionModule {
|
|||
* @return string defining the technical unique id
|
||||
*/
|
||||
public function getId() {
|
||||
return "34876934";
|
||||
return "OC_DUMMY_MODULE";
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -103,17 +105,6 @@ class DummyModule implements \OCP\Encryption\IEncryptionModule {
|
|||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* update encrypted file, e.g. give additional users access to the file
|
||||
*
|
||||
* @param string $path path to the file which should be updated
|
||||
* @param array $accessList who has access to the file contains the key 'users' and 'public'
|
||||
* @return boolean
|
||||
*/
|
||||
public function update($path, $accessList) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* should the file be encrypted or not
|
||||
*
|
||||
|
@ -142,4 +133,15 @@ class DummyModule implements \OCP\Encryption\IEncryptionModule {
|
|||
return 6126;
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* update encrypted file, e.g. give additional users access to the file
|
||||
*
|
||||
* @param string $path path to the file which should be updated
|
||||
* @param string $uid of the user who performs the operation
|
||||
* @param array $accessList who has access to the file contains the key 'users' and 'public'
|
||||
* @return boolean
|
||||
*/
|
||||
public function update($path, $uid, $accessList) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -84,12 +84,6 @@ $config = \OC::$server->getConfig();
|
|||
// mostly for the home storage's free space
|
||||
$dirInfo = \OC\Files\Filesystem::getFileInfo('/', false);
|
||||
$storageInfo=OC_Helper::getStorageInfo('/', $dirInfo);
|
||||
// if the encryption app is disabled, than everything is fine (INIT_SUCCESSFUL status code)
|
||||
$encryptionInitStatus = 2;
|
||||
if (OC_App::isEnabled('files_encryption')) {
|
||||
$session = new \OCA\Files_Encryption\Session(new \OC\Files\View('/'));
|
||||
$encryptionInitStatus = $session->getInitialized();
|
||||
}
|
||||
|
||||
$nav = new OCP\Template('files', 'appnavigation', '');
|
||||
|
||||
|
@ -146,11 +140,9 @@ OCP\Util::addscript('files', 'keyboardshortcuts');
|
|||
$tmpl = new OCP\Template('files', 'index', 'user');
|
||||
$tmpl->assign('usedSpacePercent', (int)$storageInfo['relative']);
|
||||
$tmpl->assign('isPublic', false);
|
||||
$tmpl->assign("encryptedFiles", \OCP\Util::encryptedFiles());
|
||||
$tmpl->assign("mailNotificationEnabled", $config->getAppValue('core', 'shareapi_allow_mail_notification', 'no'));
|
||||
$tmpl->assign("mailPublicNotificationEnabled", $config->getAppValue('core', 'shareapi_allow_public_notification', 'no'));
|
||||
$tmpl->assign("allowShareWithLink", $config->getAppValue('core', 'shareapi_allow_links', 'yes'));
|
||||
$tmpl->assign("encryptionInitStatus", $encryptionInitStatus);
|
||||
$tmpl->assign('appNavigation', $nav);
|
||||
$tmpl->assign('appContents', $contentItems);
|
||||
|
||||
|
|
|
@ -120,28 +120,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
displayEncryptionWarning: function() {
|
||||
|
||||
if (!OC.Notification.isHidden()) {
|
||||
return;
|
||||
}
|
||||
|
||||
var encryptedFiles = $('#encryptedFiles').val();
|
||||
var initStatus = $('#encryptionInitStatus').val();
|
||||
if (initStatus === '0') { // enc not initialized, but should be
|
||||
OC.Notification.show(t('files', 'Encryption App is enabled but your keys are not initialized, please log-out and log-in again'));
|
||||
return;
|
||||
}
|
||||
if (initStatus === '1') { // encryption tried to init but failed
|
||||
OC.Notification.show(t('files', 'Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files.'));
|
||||
return;
|
||||
}
|
||||
if (encryptedFiles === '1') {
|
||||
OC.Notification.show(t('files', 'Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files.'));
|
||||
return;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the download URL of the given file(s)
|
||||
* @param filename string or array of file names to download
|
||||
|
@ -220,7 +198,6 @@
|
|||
*/
|
||||
initialize: function() {
|
||||
Files.getMimeIcon.cache = {};
|
||||
Files.displayEncryptionWarning();
|
||||
Files.bindKeyboardShortcuts(document, $);
|
||||
|
||||
// TODO: move file list related code (upload) to OCA.Files.FileList
|
||||
|
|
|
@ -12,8 +12,6 @@
|
|||
<input type="hidden" name="filesApp" id="filesApp" value="1" />
|
||||
<input type="hidden" name="usedSpacePercent" id="usedSpacePercent" value="<?php p($_['usedSpacePercent']); ?>" />
|
||||
<?php if (!$_['isPublic']) :?>
|
||||
<input type="hidden" name="encryptedFiles" id="encryptedFiles" value="<?php $_['encryptedFiles'] ? p('1') : p('0'); ?>" />
|
||||
<input type="hidden" name="encryptedInitStatus" id="encryptionInitStatus" value="<?php p($_['encryptionInitStatus']) ?>" />
|
||||
<input type="hidden" name="mailNotificationEnabled" id="mailNotificationEnabled" value="<?php p($_['mailNotificationEnabled']) ?>" />
|
||||
<input type="hidden" name="mailPublicNotificationEnabled" id="mailPublicNotificationEnabled" value="<?php p($_['mailPublicNotificationEnabled']) ?>" />
|
||||
<input type="hidden" name="allowShareWithLink" id="allowShareWithLink" value="<?php p($_['allowShareWithLink']) ?>" />
|
||||
|
|
|
@ -1,91 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Björn Schießle <schiessle@owncloud.com>
|
||||
* @author Florin Peter <github@florin-peter.de>
|
||||
* @author Joas Schilling <nickvergessen@owncloud.com>
|
||||
* @author Lukas Reschke <lukas@owncloud.com>
|
||||
* @author Morris Jobke <hey@morrisjobke.de>
|
||||
* @author Robin Appelman <icewind@owncloud.com>
|
||||
* @author Sam Tuke <mail@samtuke.com>
|
||||
*
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
use OCA\Files_Encryption\Helper;
|
||||
|
||||
\OCP\JSON::checkAdminUser();
|
||||
\OCP\JSON::checkAppEnabled('files_encryption');
|
||||
\OCP\JSON::callCheck();
|
||||
|
||||
$l = \OC::$server->getL10N('files_encryption');
|
||||
|
||||
$return = false;
|
||||
$errorMessage = $l->t("Unknown error");
|
||||
|
||||
//check if both passwords are the same
|
||||
if (empty($_POST['recoveryPassword'])) {
|
||||
$errorMessage = $l->t('Missing recovery key password');
|
||||
\OCP\JSON::error(array('data' => array('message' => $errorMessage)));
|
||||
exit();
|
||||
}
|
||||
|
||||
if (empty($_POST['confirmPassword'])) {
|
||||
$errorMessage = $l->t('Please repeat the recovery key password');
|
||||
\OCP\JSON::error(array('data' => array('message' => $errorMessage)));
|
||||
exit();
|
||||
}
|
||||
|
||||
if ($_POST['recoveryPassword'] !== $_POST['confirmPassword']) {
|
||||
$errorMessage = $l->t('Repeated recovery key password does not match the provided recovery key password');
|
||||
\OCP\JSON::error(array('data' => array('message' => $errorMessage)));
|
||||
exit();
|
||||
}
|
||||
|
||||
// Enable recoveryAdmin
|
||||
$recoveryKeyId = \OC::$server->getAppConfig()->getValue('files_encryption', 'recoveryKeyId');
|
||||
|
||||
if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] === '1') {
|
||||
|
||||
$return = Helper::adminEnableRecovery($recoveryKeyId, (string)$_POST['recoveryPassword']);
|
||||
|
||||
// Return success or failure
|
||||
if ($return) {
|
||||
$successMessage = $l->t('Recovery key successfully enabled');
|
||||
} else {
|
||||
$errorMessage = $l->t('Could not disable recovery key. Please check your recovery key password!');
|
||||
}
|
||||
|
||||
// Disable recoveryAdmin
|
||||
} elseif (
|
||||
isset($_POST['adminEnableRecovery'])
|
||||
&& '0' === $_POST['adminEnableRecovery']
|
||||
) {
|
||||
$return = Helper::adminDisableRecovery((string)$_POST['recoveryPassword']);
|
||||
|
||||
if ($return) {
|
||||
$successMessage = $l->t('Recovery key successfully disabled');
|
||||
} else {
|
||||
$errorMessage = $l->t('Could not disable recovery key. Please check your recovery key password!');
|
||||
}
|
||||
}
|
||||
|
||||
// Return success or failure
|
||||
if ($return) {
|
||||
\OCP\JSON::success(array('data' => array('message' => $successMessage)));
|
||||
} else {
|
||||
\OCP\JSON::error(array('data' => array('message' => $errorMessage)));
|
||||
}
|
|
@ -1,92 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Björn Schießle <schiessle@owncloud.com>
|
||||
* @author Christopher Schäpers <kondou@ts.unde.re>
|
||||
* @author Florin Peter <github@florin-peter.de>
|
||||
* @author Joas Schilling <nickvergessen@owncloud.com>
|
||||
* @author Lukas Reschke <lukas@owncloud.com>
|
||||
* @author Morris Jobke <hey@morrisjobke.de>
|
||||
* @author Robin Appelman <icewind@owncloud.com>
|
||||
*
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
\OCP\JSON::checkAdminUser();
|
||||
\OCP\JSON::checkAppEnabled('files_encryption');
|
||||
\OCP\JSON::callCheck();
|
||||
|
||||
$l = \OC::$server->getL10N('core');
|
||||
|
||||
$return = false;
|
||||
|
||||
$oldPassword = (string)$_POST['oldPassword'];
|
||||
$newPassword = (string)$_POST['newPassword'];
|
||||
$confirmPassword = (string)$_POST['confirmPassword'];
|
||||
|
||||
//check if both passwords are the same
|
||||
if (empty($_POST['oldPassword'])) {
|
||||
$errorMessage = $l->t('Please provide the old recovery password');
|
||||
\OCP\JSON::error(array('data' => array('message' => $errorMessage)));
|
||||
exit();
|
||||
}
|
||||
|
||||
if (empty($_POST['newPassword'])) {
|
||||
$errorMessage = $l->t('Please provide a new recovery password');
|
||||
\OCP\JSON::error(array('data' => array('message' => $errorMessage)));
|
||||
exit();
|
||||
}
|
||||
|
||||
if (empty($_POST['confirmPassword'])) {
|
||||
$errorMessage = $l->t('Please repeat the new recovery password');
|
||||
\OCP\JSON::error(array('data' => array('message' => $errorMessage)));
|
||||
exit();
|
||||
}
|
||||
|
||||
if ($_POST['newPassword'] !== $_POST['confirmPassword']) {
|
||||
$errorMessage = $l->t('Repeated recovery key password does not match the provided recovery key password');
|
||||
\OCP\JSON::error(array('data' => array('message' => $errorMessage)));
|
||||
exit();
|
||||
}
|
||||
|
||||
$view = new \OC\Files\View('/');
|
||||
$util = new \OCA\Files_Encryption\Util(new \OC\Files\View('/'), \OCP\User::getUser());
|
||||
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
||||
$keyId = $util->getRecoveryKeyId();
|
||||
|
||||
$encryptedRecoveryKey = \OCA\Files_Encryption\Keymanager::getPrivateSystemKey($keyId);
|
||||
$decryptedRecoveryKey = $encryptedRecoveryKey ? \OCA\Files_Encryption\Crypt::decryptPrivateKey($encryptedRecoveryKey, $oldPassword) : false;
|
||||
|
||||
if ($decryptedRecoveryKey) {
|
||||
$cipher = \OCA\Files_Encryption\Helper::getCipher();
|
||||
$encryptedKey = \OCA\Files_Encryption\Crypt::symmetricEncryptFileContent($decryptedRecoveryKey, $newPassword, $cipher);
|
||||
if ($encryptedKey) {
|
||||
\OCA\Files_Encryption\Keymanager::setPrivateSystemKey($encryptedKey, $keyId);
|
||||
$return = true;
|
||||
}
|
||||
}
|
||||
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
|
||||
// success or failure
|
||||
if ($return) {
|
||||
\OCP\JSON::success(array('data' => array('message' => $l->t('Password successfully changed.'))));
|
||||
} else {
|
||||
\OCP\JSON::error(array('data' => array('message' => $l->t('Could not change the password. Maybe the old password was not correct.'))));
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Arthur Schiwon <blizzz@owncloud.com>
|
||||
* @author Björn Schießle <schiessle@owncloud.com>
|
||||
* @author Joas Schilling <nickvergessen@owncloud.com>
|
||||
* @author Lukas Reschke <lukas@owncloud.com>
|
||||
* @author Morris Jobke <hey@morrisjobke.de>
|
||||
* @author Thomas Müller <thomas.mueller@tmit.eu>
|
||||
*
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
use OCA\Files_Encryption\Util;
|
||||
|
||||
\OCP\JSON::checkAppEnabled('files_encryption');
|
||||
|
||||
$loginname = isset($_POST['user']) ? (string)$_POST['user'] : '';
|
||||
$password = isset($_POST['password']) ? (string)$_POST['password'] : '';
|
||||
|
||||
$migrationStatus = Util::MIGRATION_COMPLETED;
|
||||
|
||||
if ($loginname !== '' && $password !== '') {
|
||||
$username = \OCP\User::checkPassword($loginname, $password);
|
||||
if ($username) {
|
||||
$util = new Util(new \OC\Files\View('/'), $username);
|
||||
$migrationStatus = $util->getMigrationStatus();
|
||||
}
|
||||
}
|
||||
|
||||
\OCP\JSON::success(array('data' => array('migrationStatus' => $migrationStatus)));
|
|
@ -1,81 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Björn Schießle <schiessle@owncloud.com>
|
||||
* @author Christopher Schäpers <kondou@ts.unde.re>
|
||||
* @author Joas Schilling <nickvergessen@owncloud.com>
|
||||
* @author Lukas Reschke <lukas@owncloud.com>
|
||||
* @author Morris Jobke <hey@morrisjobke.de>
|
||||
* @author Robin Appelman <icewind@owncloud.com>
|
||||
*
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
\OCP\JSON::checkLoggedIn();
|
||||
\OCP\JSON::checkAppEnabled('files_encryption');
|
||||
\OCP\JSON::callCheck();
|
||||
|
||||
$l = \OC::$server->getL10N('core');
|
||||
|
||||
$return = false;
|
||||
$errorMessage = $l->t('Could not update the private key password.');
|
||||
|
||||
$oldPassword = (string)$_POST['oldPassword'];
|
||||
$newPassword = (string)$_POST['newPassword'];
|
||||
|
||||
$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);
|
||||
\OCP\JSON::success(array('data' => array('message' => $l->t('Private key password successfully updated.'))));
|
||||
} else {
|
||||
\OCP\JSON::error(array('data' => array('message' => $errorMessage)));
|
||||
}
|
|
@ -1,63 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Björn Schießle <schiessle@owncloud.com>
|
||||
* @author Florin Peter <github@florin-peter.de>
|
||||
* @author Joas Schilling <nickvergessen@owncloud.com>
|
||||
* @author Lukas Reschke <lukas@owncloud.com>
|
||||
* @author Morris Jobke <hey@morrisjobke.de>
|
||||
* @author Sam Tuke <mail@samtuke.com>
|
||||
* @author Thomas Müller <thomas.mueller@tmit.eu>
|
||||
*
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
\OCP\JSON::checkLoggedIn();
|
||||
\OCP\JSON::checkAppEnabled('files_encryption');
|
||||
\OCP\JSON::callCheck();
|
||||
|
||||
$l = \OC::$server->getL10N('files_encryption');
|
||||
|
||||
if (
|
||||
isset($_POST['userEnableRecovery'])
|
||||
&& (0 == $_POST['userEnableRecovery'] || '1' === $_POST['userEnableRecovery'])
|
||||
) {
|
||||
|
||||
$userId = \OCP\USER::getUser();
|
||||
$view = new \OC\Files\View('/');
|
||||
$util = new \OCA\Files_Encryption\Util($view, $userId);
|
||||
|
||||
// Save recovery preference to DB
|
||||
$return = $util->setRecoveryForUser((string)$_POST['userEnableRecovery']);
|
||||
|
||||
if ($_POST['userEnableRecovery'] === '1') {
|
||||
$util->addRecoveryKeys();
|
||||
} else {
|
||||
$util->removeRecoveryKeys();
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
$return = false;
|
||||
|
||||
}
|
||||
|
||||
// Return success or failure
|
||||
if ($return) {
|
||||
\OCP\JSON::success(array('data' => array('message' => $l->t('File recovery settings updated'))));
|
||||
} else {
|
||||
\OCP\JSON::error(array('data' => array('message' => $l->t('Could not update file recovery'))));
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Björn Schießle <schiessle@owncloud.com>
|
||||
* @author Florin Peter <github@florin-peter.de>
|
||||
* @author Joas Schilling <nickvergessen@owncloud.com>
|
||||
* @author Morris Jobke <hey@morrisjobke.de>
|
||||
* @author Robin Appelman <icewind@owncloud.com>
|
||||
* @author Sam Tuke <mail@samtuke.com>
|
||||
* @author Thomas Müller <thomas.mueller@tmit.eu>
|
||||
*
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
\OCP\Util::addscript('files_encryption', 'encryption');
|
||||
\OCP\Util::addscript('files_encryption', 'detect-migration');
|
||||
|
||||
if (!OC_Config::getValue('maintenance', false)) {
|
||||
OC_FileProxy::register(new OCA\Files_Encryption\Proxy());
|
||||
|
||||
// User related hooks
|
||||
OCA\Files_Encryption\Helper::registerUserHooks();
|
||||
|
||||
// Sharing related hooks
|
||||
OCA\Files_Encryption\Helper::registerShareHooks();
|
||||
|
||||
// Filesystem related hooks
|
||||
OCA\Files_Encryption\Helper::registerFilesystemHooks();
|
||||
|
||||
// App manager related hooks
|
||||
OCA\Files_Encryption\Helper::registerAppHooks();
|
||||
|
||||
if(!in_array('crypt', stream_get_wrappers())) {
|
||||
stream_wrapper_register('crypt', 'OCA\Files_Encryption\Stream');
|
||||
}
|
||||
} else {
|
||||
// logout user if we are in maintenance to force re-login
|
||||
OCP\User::logout();
|
||||
}
|
||||
|
||||
\OC::$server->getCommandBus()->requireSync('\OC\Command\FileAccess');
|
||||
|
||||
// Register settings scripts
|
||||
OCP\App::registerAdmin('files_encryption', 'settings-admin');
|
||||
OCP\App::registerPersonal('files_encryption', 'settings-personal');
|
|
@ -1,25 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<info>
|
||||
<id>files_encryption</id>
|
||||
<name>Server-side Encryption</name>
|
||||
<description>
|
||||
This application encrypts all files accessed by ownCloud at rest, wherever they are stored. As an example, with this application enabled, external cloud based Amazon S3 storage will be encrypted, protecting this data on storage outside of the control of the Admin. When this application is enabled for the first time, all files are encrypted as users log in and are prompted for their password. The recommended recovery key option enables recovery of files in case the key is lost.
|
||||
Note that this app encrypts all files that are touched by ownCloud, so external storage providers and applications such as SharePoint will see new files encrypted when they are accessed. Encryption is based on AES 128 or 256 bit keys. More information is available in the Encryption documentation
|
||||
</description>
|
||||
<licence>AGPL</licence>
|
||||
<author>Sam Tuke, Bjoern Schiessle, Florin Peter</author>
|
||||
<requiremin>4</requiremin>
|
||||
<shipped>true</shipped>
|
||||
<documentation>
|
||||
<user>user-encryption</user>
|
||||
<admin>admin-encryption</admin>
|
||||
</documentation>
|
||||
<rememberlogin>false</rememberlogin>
|
||||
<types>
|
||||
<filesystem/>
|
||||
</types>
|
||||
<ocsid>166047</ocsid>
|
||||
<dependencies>
|
||||
<lib>openssl</lib>
|
||||
</dependencies>
|
||||
</info>
|
|
@ -1,39 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Joas Schilling <nickvergessen@owncloud.com>
|
||||
* @author Lukas Reschke <lukas@owncloud.com>
|
||||
* @author Morris Jobke <hey@morrisjobke.de>
|
||||
* @author Tom Needham <tom@owncloud.com>
|
||||
*
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
/** @var $this \OCP\Route\IRouter */
|
||||
|
||||
$this->create('files_encryption_ajax_adminrecovery', 'ajax/adminrecovery.php')
|
||||
->actionInclude('files_encryption/ajax/adminrecovery.php');
|
||||
$this->create('files_encryption_ajax_changeRecoveryPassword', 'ajax/changeRecoveryPassword.php')
|
||||
->actionInclude('files_encryption/ajax/changeRecoveryPassword.php');
|
||||
$this->create('files_encryption_ajax_getMigrationStatus', 'ajax/getMigrationStatus.php')
|
||||
->actionInclude('files_encryption/ajax/getMigrationStatus.php');
|
||||
$this->create('files_encryption_ajax_updatePrivateKeyPassword', 'ajax/updatePrivateKeyPassword.php')
|
||||
->actionInclude('files_encryption/ajax/updatePrivateKeyPassword.php');
|
||||
$this->create('files_encryption_ajax_userrecovery', 'ajax/userrecovery.php')
|
||||
->actionInclude('files_encryption/ajax/userrecovery.php');
|
||||
|
||||
// Register with the capabilities API
|
||||
OC_API::register('get', '/cloud/capabilities', array('OCA\Files_Encryption\Capabilities', 'getCapabilities'), 'files_encryption', OC_API::USER_AUTH);
|
|
@ -1,77 +0,0 @@
|
|||
Encrypted files
|
||||
---------------
|
||||
|
||||
- Each encrypted file has at least two components: the encrypted data file
|
||||
('catfile'), and it's corresponding key file ('keyfile'). Shared files have an
|
||||
additional key file ('share key'). The catfile contains the encrypted data
|
||||
concatenated with delimiter text, followed by the initialisation vector ('IV'),
|
||||
and padding. e.g.:
|
||||
|
||||
[encrypted data string][delimiter][IV][padding]
|
||||
[anhAAjAmcGXqj1X9g==][00iv00][MSHU5N5gECP7aAg7][xx] (square braces added)
|
||||
|
||||
- Directory structure:
|
||||
- Encrypted user data (catfiles) are stored in the usual /data/user/files dir
|
||||
- Keyfiles are stored in /data/user/files_encryption/keyfiles
|
||||
- Sharekey are stored in /data/user/files_encryption/share-files
|
||||
|
||||
- File extensions:
|
||||
- Catfiles have to keep the file extension of the original file, pre-encryption
|
||||
- Keyfiles use .keyfile
|
||||
- Sharekeys have .shareKey
|
||||
|
||||
Shared files
|
||||
------------
|
||||
|
||||
Shared files have a centrally stored catfile and keyfile, and one sharekey for
|
||||
each user that shares it.
|
||||
|
||||
When sharing is used, a different encryption method is used to encrypt the
|
||||
keyfile (openssl_seal). Although shared files have a keyfile, its contents
|
||||
use a different format therefore.
|
||||
|
||||
Each time a shared file is edited or deleted, all sharekeys for users sharing
|
||||
that file must have their sharekeys changed also. The keyfile and catfile
|
||||
however need only changing in the owners files, as there is only one copy of
|
||||
these.
|
||||
|
||||
Publicly shared files (public links)
|
||||
------------------------------------
|
||||
|
||||
Files shared via public links use a separate system user account called 'ownCloud'. All public files are shared to that user's public key, and the private key is used to access the files when the public link is used in browser.
|
||||
|
||||
This means that files shared via public links are accessible only to users who know the shared URL, or to admins who know the 'ownCloud' user password.
|
||||
|
||||
Lost password recovery
|
||||
----------------------
|
||||
|
||||
In order to enable users to read their encrypted files in the event of a password loss/reset scenario, administrators can choose to enable a 'recoveryAdmin' account. This is a user that all user files will automatically be shared to of the option is enabled. This allows the recoveryAdmin user to generate new keyfiles for the user. By default the UID of the recoveryAdmin is 'recoveryAdmin'.
|
||||
|
||||
OC_FilesystemView
|
||||
-----------------
|
||||
|
||||
files_encryption deals extensively with paths and the filesystem. In order to minimise bugs, it makes calls to filesystem methods in a consistent way: OC_FilesystemView{} objects always use '/' as their root, and specify paths each time particular methods are called. e.g. do this:
|
||||
|
||||
$view->file_exists( 'path/to/file' );
|
||||
|
||||
Not:
|
||||
|
||||
$view->chroot( 'path/to' );
|
||||
$view->file_exists( 'file' );
|
||||
|
||||
Using this convention means that $view objects are more predictable and less likely to break. Problems with paths are the #1 cause of bugs in this app, and consistent $view handling is an important way to prevent them.
|
||||
|
||||
Notes
|
||||
-----
|
||||
|
||||
- The user passphrase is required in order to set up or upgrade the app. New
|
||||
keypair generation, and the re-encryption of legacy encrypted files requires
|
||||
it. Therefore an appinfo/update.php script cannot be used, and upgrade logic
|
||||
is handled in the login hook listener. Therefore each time the user logs in
|
||||
their files are scanned to detect unencrypted and legacy encrypted files, and
|
||||
they are (re)encrypted as necessary. This may present a performance issue; we
|
||||
need to monitor this.
|
||||
- When files are saved to ownCloud via WebDAV, a .part file extension is used so
|
||||
that the file isn't cached before the upload has been completed. .part files
|
||||
are not compatible with files_encrytion's key management system however, so
|
||||
we have to always sanitise such paths manually before using them.
|
|
@ -1 +0,0 @@
|
|||
0.7.1
|
|
@ -1,95 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Arthur Schiwon <blizzz@owncloud.com>
|
||||
* @author Morris Jobke <hey@morrisjobke.de>
|
||||
* @author Thomas Müller <thomas.mueller@tmit.eu>
|
||||
*
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Files_Encryption\Command;
|
||||
|
||||
use OCA\Files_Encryption\Migration;
|
||||
use OCP\IUserBackend;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
class MigrateKeys extends Command {
|
||||
|
||||
/** @var \OC\User\Manager */
|
||||
private $userManager;
|
||||
|
||||
public function __construct(\OC\User\Manager $userManager) {
|
||||
$this->userManager = $userManager;
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
protected function configure() {
|
||||
$this
|
||||
->setName('encryption:migrate-keys')
|
||||
->setDescription('migrate encryption keys')
|
||||
->addArgument(
|
||||
'user_id',
|
||||
InputArgument::OPTIONAL | InputArgument::IS_ARRAY,
|
||||
'will migrate keys of the given user(s)'
|
||||
);
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output) {
|
||||
|
||||
// perform system reorganization
|
||||
$migration = new Migration();
|
||||
$output->writeln("Reorganize system folder structure");
|
||||
$migration->reorganizeSystemFolderStructure();
|
||||
|
||||
$users = $input->getArgument('user_id');
|
||||
if (!empty($users)) {
|
||||
foreach ($users as $user) {
|
||||
if ($this->userManager->userExists($user)) {
|
||||
$output->writeln("Migrating keys <info>$user</info>");
|
||||
$migration->reorganizeFolderStructureForUser($user);
|
||||
} else {
|
||||
$output->writeln("<error>Unknown user $user</error>");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach($this->userManager->getBackends() as $backend) {
|
||||
$name = get_class($backend);
|
||||
|
||||
if ($backend instanceof IUserBackend) {
|
||||
$name = $backend->getBackendName();
|
||||
}
|
||||
|
||||
$output->writeln("Migrating keys for users on backend <info>$name</info>");
|
||||
|
||||
$limit = 500;
|
||||
$offset = 0;
|
||||
do {
|
||||
$users = $backend->getUsers('', $limit, $offset);
|
||||
foreach ($users as $user) {
|
||||
$output->writeln(" <info>$user</info>");
|
||||
$migration->reorganizeFolderStructureForUser($user);
|
||||
}
|
||||
$offset += $limit;
|
||||
} while(count($users) >= $limit);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,50 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Björn Schießle <schiessle@owncloud.com>
|
||||
* @author Joas Schilling <nickvergessen@owncloud.com>
|
||||
* @author Morris Jobke <hey@morrisjobke.de>
|
||||
*
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Files_Encryption\Exception;
|
||||
|
||||
/**
|
||||
* Base class for all encryption exception
|
||||
*
|
||||
* Possible Error Codes:
|
||||
* 10 - generic error
|
||||
* 20 - unexpected end of encryption header
|
||||
* 30 - unexpected blog size
|
||||
* 40 - encryption header to large
|
||||
* 50 - unknown cipher
|
||||
* 60 - encryption failed
|
||||
* 70 - decryption failed
|
||||
* 80 - empty data
|
||||
* 90 - private key missing
|
||||
*/
|
||||
class EncryptionException extends \Exception {
|
||||
const GENERIC = 10;
|
||||
const UNEXPECTED_END_OF_ENCRYPTION_HEADER = 20;
|
||||
const UNEXPECTED_BLOCK_SIZE = 30;
|
||||
const ENCRYPTION_HEADER_TO_LARGE = 40;
|
||||
const UNKNOWN_CIPHER = 50;
|
||||
const ENCRYPTION_FAILED = 60;
|
||||
const DECRYPTION_FAILED = 70;
|
||||
const EMPTY_DATA = 80;
|
||||
const PRIVATE_KEY_MISSING = 90;
|
||||
}
|
|
@ -1,75 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Björn Schießle <schiessle@owncloud.com>
|
||||
* @author Joas Schilling <nickvergessen@owncloud.com>
|
||||
* @author Lukas Reschke <lukas@owncloud.com>
|
||||
* @author Morris Jobke <hey@morrisjobke.de>
|
||||
* @author Robin Appelman <icewind@owncloud.com>
|
||||
* @author Thomas Müller <thomas.mueller@tmit.eu>
|
||||
* @author Volkan Gezer <volkangezer@gmail.com>
|
||||
*
|
||||
* @copyright Copyright (c) 2015, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
if (!isset($_)) { //also provide standalone error page
|
||||
require_once __DIR__ . '/../../../lib/base.php';
|
||||
require_once __DIR__ . '/../lib/crypt.php';
|
||||
|
||||
OC_JSON::checkAppEnabled('files_encryption');
|
||||
OC_App::loadApp('files_encryption');
|
||||
|
||||
$l = \OC::$server->getL10N('files_encryption');
|
||||
|
||||
if (isset($_GET['errorCode'])) {
|
||||
$errorCode = $_GET['errorCode'];
|
||||
switch ($errorCode) {
|
||||
case \OCA\Files_Encryption\Crypt::ENCRYPTION_NOT_INITIALIZED_ERROR:
|
||||
$errorMsg = $l->t('Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app.');
|
||||
break;
|
||||
case \OCA\Files_Encryption\Crypt::ENCRYPTION_PRIVATE_KEY_NOT_VALID_ERROR:
|
||||
$theme = new OC_Defaults();
|
||||
$errorMsg = $l->t('Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files.', array($theme->getName()));
|
||||
break;
|
||||
case \OCA\Files_Encryption\Crypt::ENCRYPTION_NO_SHARE_KEY_FOUND:
|
||||
$errorMsg = $l->t('Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you.');
|
||||
break;
|
||||
default:
|
||||
$errorMsg = $l->t("Unknown error. Please check your system settings or contact your administrator");
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
$errorCode = \OCA\Files_Encryption\Crypt::ENCRYPTION_UNKNOWN_ERROR;
|
||||
$errorMsg = $l->t("Unknown error. Please check your system settings or contact your administrator");
|
||||
}
|
||||
|
||||
if (isset($_GET['p']) && $_GET['p'] === '1') {
|
||||
header('HTTP/1.0 403 ' . $errorMsg);
|
||||
}
|
||||
|
||||
// check if ajax request
|
||||
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
|
||||
\OCP\JSON::error(array('data' => array('message' => $errorMsg)));
|
||||
} else {
|
||||
header('HTTP/1.0 403 ' . $errorMsg);
|
||||
$tmpl = new OC_Template('files_encryption', 'invalid_private_key', 'guest');
|
||||
$tmpl->assign('message', $errorMsg);
|
||||
$tmpl->assign('errorCode', $errorCode);
|
||||
$tmpl->printPage();
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "خطأ غير معروف. ",
|
||||
"Recovery key successfully enabled" : "تم بنجاح تفعيل مفتاح الاستعادة",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "لا يمكن تعطيل مفتاح الاستعادة, يرجى التحقق من كلمة مرور مفتاح الاستعادة!",
|
||||
"Recovery key successfully disabled" : "تم تعطيل مفتاح الاستعادة بنجاح",
|
||||
"Password successfully changed." : "تم تغيير كلمة المرور بنجاح.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "تعذر تغيير كلمة المرور. من الممكن ان كلمة المرور القديمة غير صحيحة.",
|
||||
"Private key password successfully updated." : "تم تحديث كلمة المرور للمفتاح الخاص بنجاح.",
|
||||
"File recovery settings updated" : "اعدادات ملف الاستعادة تم تحديثه",
|
||||
"Could not update file recovery" : "تعذر تحديث ملف الاستعادة",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "برنامج التشفير لم يتم تهيئتة ! من الممكن ان برنامج التشفير تم اعادة تفعيلة خلال الجلسة. يرجى تسجيل الخروج ومن ثم تسجيل الدخول مجددا لتهيئة برنامج التشفير.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "مفتاحك الخاص غير صالح! ربما تم تغيير كلمة المرور خارج %s (مثل:مجلد شركتك). يمكنك تحديث كلمة المرور في الاعدادات الشخصية لإستعادة الوصول الى ملفاتك المشفرة.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "لا يمكن فك التشفير من هذا الملف, من الممكن ان يكون هذا الملف مُشارك. يرجى سؤال صاحب الملف لإعادة مشاركتة معك.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "خطأ غير معروف, الرجاء التحقق من إعدادات نظامك أو راسل المدير",
|
||||
"Initial encryption started... This can take some time. Please wait." : "بدأ التشفير... من الممكن ان ياخذ بعض الوقت. يرجى الانتظار.",
|
||||
"Initial encryption running... Please try again later." : "جاري تفعيل التشفير المبدئي ، الرجاء المحاولة لاحقا",
|
||||
"Missing requirements." : "متطلبات ناقصة.",
|
||||
"Following users are not set up for encryption:" : "المستخدمين التاليين لم يتم تعيين لهم التشفيير:",
|
||||
"Go directly to your %spersonal settings%s." : " .%spersonal settings%s إنتقل مباشرة إلى ",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "تم تمكين تشفير البرامج لكن لم يتم تهيئة المفاتيح لذا يرجى تسجيل الخروج ثم تسجيل الدخول مرة آخرى.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "تفعيل استعادة المفتاح (سوف يمكنك من استعادة ملفات المستخدمين في حال فقدان كلمة المرور):",
|
||||
"Recovery key password" : "استعادة كلمة مرور المفتاح",
|
||||
"Repeat Recovery key password" : "كرر كلمة المرور لـ استعادة المفتاح",
|
||||
"Enabled" : "مفعلة",
|
||||
"Disabled" : "معطلة",
|
||||
"Change recovery key password:" : "تعديل كلمة المرور استعادة المفتاح:",
|
||||
"Old Recovery key password" : "كلمة المرور القديمة لـ استعامة المفتاح",
|
||||
"New Recovery key password" : "تعيين كلمة مرور جديدة لـ استعادة المفتاح",
|
||||
"Repeat New Recovery key password" : "كرر كلمة المرور لـ استعادة المفتاح من جديد",
|
||||
"Change Password" : "عدل كلمة السر",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "اذا كنت لاتتذكر كلمة السر تستطيع ان تطلب من المدير ان يستعيد ملفاتك.",
|
||||
"Old log-in password" : "كلمة المرور القديمة الخاصة بالدخول",
|
||||
"Current log-in password" : "كلمة المرور الحالية الخاصة بالدخول",
|
||||
"Update Private Key Password" : "تحديث كلمة المرور لـ المفتاح الخاص",
|
||||
"Enable password recovery:" : "تفعيل استعادة كلمة المرور:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "تفعيل هذا الخيار يمكنك من اعادة الوصول الى ملفاتك المشفرة عند فقدان كلمة المرور"
|
||||
},
|
||||
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
|
|
@ -1,38 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "خطأ غير معروف. ",
|
||||
"Recovery key successfully enabled" : "تم بنجاح تفعيل مفتاح الاستعادة",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "لا يمكن تعطيل مفتاح الاستعادة, يرجى التحقق من كلمة مرور مفتاح الاستعادة!",
|
||||
"Recovery key successfully disabled" : "تم تعطيل مفتاح الاستعادة بنجاح",
|
||||
"Password successfully changed." : "تم تغيير كلمة المرور بنجاح.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "تعذر تغيير كلمة المرور. من الممكن ان كلمة المرور القديمة غير صحيحة.",
|
||||
"Private key password successfully updated." : "تم تحديث كلمة المرور للمفتاح الخاص بنجاح.",
|
||||
"File recovery settings updated" : "اعدادات ملف الاستعادة تم تحديثه",
|
||||
"Could not update file recovery" : "تعذر تحديث ملف الاستعادة",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "برنامج التشفير لم يتم تهيئتة ! من الممكن ان برنامج التشفير تم اعادة تفعيلة خلال الجلسة. يرجى تسجيل الخروج ومن ثم تسجيل الدخول مجددا لتهيئة برنامج التشفير.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "مفتاحك الخاص غير صالح! ربما تم تغيير كلمة المرور خارج %s (مثل:مجلد شركتك). يمكنك تحديث كلمة المرور في الاعدادات الشخصية لإستعادة الوصول الى ملفاتك المشفرة.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "لا يمكن فك التشفير من هذا الملف, من الممكن ان يكون هذا الملف مُشارك. يرجى سؤال صاحب الملف لإعادة مشاركتة معك.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "خطأ غير معروف, الرجاء التحقق من إعدادات نظامك أو راسل المدير",
|
||||
"Initial encryption started... This can take some time. Please wait." : "بدأ التشفير... من الممكن ان ياخذ بعض الوقت. يرجى الانتظار.",
|
||||
"Initial encryption running... Please try again later." : "جاري تفعيل التشفير المبدئي ، الرجاء المحاولة لاحقا",
|
||||
"Missing requirements." : "متطلبات ناقصة.",
|
||||
"Following users are not set up for encryption:" : "المستخدمين التاليين لم يتم تعيين لهم التشفيير:",
|
||||
"Go directly to your %spersonal settings%s." : " .%spersonal settings%s إنتقل مباشرة إلى ",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "تم تمكين تشفير البرامج لكن لم يتم تهيئة المفاتيح لذا يرجى تسجيل الخروج ثم تسجيل الدخول مرة آخرى.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "تفعيل استعادة المفتاح (سوف يمكنك من استعادة ملفات المستخدمين في حال فقدان كلمة المرور):",
|
||||
"Recovery key password" : "استعادة كلمة مرور المفتاح",
|
||||
"Repeat Recovery key password" : "كرر كلمة المرور لـ استعادة المفتاح",
|
||||
"Enabled" : "مفعلة",
|
||||
"Disabled" : "معطلة",
|
||||
"Change recovery key password:" : "تعديل كلمة المرور استعادة المفتاح:",
|
||||
"Old Recovery key password" : "كلمة المرور القديمة لـ استعامة المفتاح",
|
||||
"New Recovery key password" : "تعيين كلمة مرور جديدة لـ استعادة المفتاح",
|
||||
"Repeat New Recovery key password" : "كرر كلمة المرور لـ استعادة المفتاح من جديد",
|
||||
"Change Password" : "عدل كلمة السر",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "اذا كنت لاتتذكر كلمة السر تستطيع ان تطلب من المدير ان يستعيد ملفاتك.",
|
||||
"Old log-in password" : "كلمة المرور القديمة الخاصة بالدخول",
|
||||
"Current log-in password" : "كلمة المرور الحالية الخاصة بالدخول",
|
||||
"Update Private Key Password" : "تحديث كلمة المرور لـ المفتاح الخاص",
|
||||
"Enable password recovery:" : "تفعيل استعادة كلمة المرور:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "تفعيل هذا الخيار يمكنك من اعادة الوصول الى ملفاتك المشفرة عند فقدان كلمة المرور"
|
||||
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Fallu desconocíu",
|
||||
"Recovery key successfully enabled" : "Habilitóse la recuperación de ficheros",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Nun pudo deshabilitase la clave de recuperación. Por favor comprueba la contraseña!",
|
||||
"Recovery key successfully disabled" : "Clave de recuperación deshabilitada",
|
||||
"Password successfully changed." : "Camudóse la contraseña",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Nun pudo camudase la contraseña. Comprueba que la contraseña actual seya correuta.",
|
||||
"Private key password successfully updated." : "Contraseña de clave privada anovada correchamente.",
|
||||
"File recovery settings updated" : "Opciones de recuperación de ficheros anovada",
|
||||
"Could not update file recovery" : "Nun pudo anovase la recuperación de ficheros",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡L'aplicación de cifráu nun s'anició! Seique se restableciera mentanto la sesión. Por favor intenta zarrar la sesión y volver a aniciala p'aniciar l'aplicación de cifráu.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "¡La clave privada nun ye válida! Seique la contraseña se camudase dende fuera de %s (Ex:El to direutoriu corporativu). Pues anovar la contraseña de la clave privada nes tos opciones personales pa recuperar l'accesu a los ficheros.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nun pudo descifrase esti ficheru, dablemente seya un ficheru compartíu. Solicita al propietariu del mesmu que vuelva a compartilu contigo.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Fallu desconocíu. Por favor, comprueba los axustes del sistema o contauta col alministrador",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Cifráu aniciáu..... Esto pue llevar un tiempu. Por favor espera.",
|
||||
"Initial encryption running... Please try again later." : "Cifráu inicial en cursu... Inténtalo dempués.",
|
||||
"Missing requirements." : "Requisitos incompletos.",
|
||||
"Following users are not set up for encryption:" : "Los siguientes usuarios nun se configuraron pal cifráu:",
|
||||
"Go directly to your %spersonal settings%s." : "Dir direutamente a los tos %saxustes personales%s.",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicación Encryption ta habilitada pero les tos claves nun s'aniciaron, por favor zarra sesión y aníciala de nueves",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar la clave de recuperación (permite recuperar los ficheros del usuariu en casu de perda de la contraseña);",
|
||||
"Recovery key password" : "Contraseña de clave de recuperación",
|
||||
"Repeat Recovery key password" : "Repeti la contraseña de clave de recuperación",
|
||||
"Enabled" : "Habilitar",
|
||||
"Disabled" : "Deshabilitáu",
|
||||
"Change recovery key password:" : "Camudar la contraseña de la clave de recuperación",
|
||||
"Old Recovery key password" : "Clave de recuperación vieya",
|
||||
"New Recovery key password" : "Clave de recuperación nueva",
|
||||
"Repeat New Recovery key password" : "Repetir la clave de recuperación nueva",
|
||||
"Change Password" : "Camudar contraseña",
|
||||
"Set your old private key password to your current log-in password:" : "Afita la contraseña de clave privada vieya pa la to contraseña d'aniciu de sesión actual:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Si nun recuerdes la contraseña vieya, pues pidir a alministrador que te recupere los ficheros.",
|
||||
"Old log-in password" : "Contraseña d'accesu vieya",
|
||||
"Current log-in password" : "Contraseña d'accesu actual",
|
||||
"Update Private Key Password" : "Anovar Contraseña de Clave Privada",
|
||||
"Enable password recovery:" : "Habilitar la recuperación de contraseña:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción va permitite volver a tener accesu a los ficheros cifraos en casu de perda de contraseña"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,39 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Fallu desconocíu",
|
||||
"Recovery key successfully enabled" : "Habilitóse la recuperación de ficheros",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Nun pudo deshabilitase la clave de recuperación. Por favor comprueba la contraseña!",
|
||||
"Recovery key successfully disabled" : "Clave de recuperación deshabilitada",
|
||||
"Password successfully changed." : "Camudóse la contraseña",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Nun pudo camudase la contraseña. Comprueba que la contraseña actual seya correuta.",
|
||||
"Private key password successfully updated." : "Contraseña de clave privada anovada correchamente.",
|
||||
"File recovery settings updated" : "Opciones de recuperación de ficheros anovada",
|
||||
"Could not update file recovery" : "Nun pudo anovase la recuperación de ficheros",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡L'aplicación de cifráu nun s'anició! Seique se restableciera mentanto la sesión. Por favor intenta zarrar la sesión y volver a aniciala p'aniciar l'aplicación de cifráu.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "¡La clave privada nun ye válida! Seique la contraseña se camudase dende fuera de %s (Ex:El to direutoriu corporativu). Pues anovar la contraseña de la clave privada nes tos opciones personales pa recuperar l'accesu a los ficheros.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nun pudo descifrase esti ficheru, dablemente seya un ficheru compartíu. Solicita al propietariu del mesmu que vuelva a compartilu contigo.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Fallu desconocíu. Por favor, comprueba los axustes del sistema o contauta col alministrador",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Cifráu aniciáu..... Esto pue llevar un tiempu. Por favor espera.",
|
||||
"Initial encryption running... Please try again later." : "Cifráu inicial en cursu... Inténtalo dempués.",
|
||||
"Missing requirements." : "Requisitos incompletos.",
|
||||
"Following users are not set up for encryption:" : "Los siguientes usuarios nun se configuraron pal cifráu:",
|
||||
"Go directly to your %spersonal settings%s." : "Dir direutamente a los tos %saxustes personales%s.",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicación Encryption ta habilitada pero les tos claves nun s'aniciaron, por favor zarra sesión y aníciala de nueves",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar la clave de recuperación (permite recuperar los ficheros del usuariu en casu de perda de la contraseña);",
|
||||
"Recovery key password" : "Contraseña de clave de recuperación",
|
||||
"Repeat Recovery key password" : "Repeti la contraseña de clave de recuperación",
|
||||
"Enabled" : "Habilitar",
|
||||
"Disabled" : "Deshabilitáu",
|
||||
"Change recovery key password:" : "Camudar la contraseña de la clave de recuperación",
|
||||
"Old Recovery key password" : "Clave de recuperación vieya",
|
||||
"New Recovery key password" : "Clave de recuperación nueva",
|
||||
"Repeat New Recovery key password" : "Repetir la clave de recuperación nueva",
|
||||
"Change Password" : "Camudar contraseña",
|
||||
"Set your old private key password to your current log-in password:" : "Afita la contraseña de clave privada vieya pa la to contraseña d'aniciu de sesión actual:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Si nun recuerdes la contraseña vieya, pues pidir a alministrador que te recupere los ficheros.",
|
||||
"Old log-in password" : "Contraseña d'accesu vieya",
|
||||
"Current log-in password" : "Contraseña d'accesu actual",
|
||||
"Update Private Key Password" : "Anovar Contraseña de Clave Privada",
|
||||
"Enable password recovery:" : "Habilitar la recuperación de contraseña:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción va permitite volver a tener accesu a los ficheros cifraos en casu de perda de contraseña"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Bəlli olmayan səhv baş verdi",
|
||||
"Missing recovery key password" : "Bərpa açarının şifrəsi çatışmır",
|
||||
"Please repeat the recovery key password" : "Xahiş olunur bərpa açarı şifrəsini təkrarlayasınız",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Təkrar daxil edilən bərpa açarı şifrəsi, öncə daxil edilən bərpa açarı ilə üst-üstə düşmür ",
|
||||
"Recovery key successfully enabled" : "Bərpa açarı uğurla aktivləşdi",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Geriqaytarılma açarını sondürmək olmur. Xahiş edirik geriqaytarılma key açarınızı yoxlayın.",
|
||||
"Recovery key successfully disabled" : "Bərpa açarı uğurla söndürüldü",
|
||||
"Please provide the old recovery password" : "Xahiş olunur köhnə bərpa açarını daxil edəsiniz",
|
||||
"Please provide a new recovery password" : "Xahiş olunur yeni bərpa açarı şifrəsini daxil esəsiniz",
|
||||
"Please repeat the new recovery password" : "Xahiş olunur yeni bərpa açarını təkrarlayasınız",
|
||||
"Password successfully changed." : "Şifrə uğurla dəyişdirildi.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Şifrəni dəyişmək olmur, ola bilər ki, köhnə şifrə düzgün olmayıb.",
|
||||
"Could not update the private key password." : "Gizli açarın şifrəsini yeniləmək mümkün olmadı.",
|
||||
"The old password was not correct, please try again." : "Köhnə şifrə düzgün deyildi, xahiş olunur yenidən cəhd edəsiniz.",
|
||||
"The current log-in password was not correct, please try again." : "Hal-hazırki istifadəçi şifrəsi düzgün deyildi, xahiş olunur yenidən cəhd edəsiniz.",
|
||||
"Private key password successfully updated." : "Gizli aşar şifrəsi uğurla yeniləndi.",
|
||||
"File recovery settings updated" : "Fayl bərpa quraşdırmaları yeniləndi",
|
||||
"Could not update file recovery" : "Fayl bərpasını yeniləmək olmur",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Şifrələmə proqramı inisializasiya edilməyib! Ola bilər ki, şifrələnmə proqramı sizin sessiya müddətində yenidən işə salınıb. Xahiş olunur çıxıb yenidən girişə cəhd edəsiniz ki, şifrələnmə proqramı sizin istifadəçı adı üçün təkrar inisializasiya edilsin. ",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Sizin gizli açarınız doğru deyil! Təxmin edilir ki, sizin şifrə %s-dən kənarda dəyişdirilib(misal üçün sizin koorporativ qovluq). Siz öz şifrələnmiş fayllarınıza yetkinizi bərpa etmək üçün, öz şifrənizi şəxsi quraşdırmalarınızda yeniləyə bilərsiniz.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Bu faylı deşifrə etmək olmur və ola bilər ki, bu paylaşımda olan fayldır. Xahiş olunur faylın sahibinə həmin faylı sizinlə yenidən paylaşım etməsini bildirəsiniz. ",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Tanınmayan səhv. Xahiş olunur sistem quraşdırmalarınızı yoxlayın yada öz inzibatçınızla əlaqə yaradın",
|
||||
"Initial encryption started... This can take some time. Please wait." : "İlkin şifələnmə başlandı... Bu müəyyən vaxt ala bilər. Xahiş olunur gözləyəsiniz.",
|
||||
"Initial encryption running... Please try again later." : "İlkin şifrələnmə işləyir... Xahiş olunur birazdan yenidən müraciət edəsiniz.",
|
||||
"Missing requirements." : "Taləbatlar çatışmır.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Xahiş olunur ki, PHP-in OpenSSL genişlənməsi yüklənib və düzgün konfiqurasiya edilib. İndiki hal üçün şifrələnmə proqramı dayandırılmışdır.",
|
||||
"Following users are not set up for encryption:" : "Göstərilən istifadəçilər şifrələnmə üçün quraşdırılmayıb:",
|
||||
"Go directly to your %spersonal settings%s." : "Birbaşa öz %sşəxsi quraşdırmalarınıza%s gedin.",
|
||||
"Server-side Encryption" : "Server-tərəf şifrələnmə",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Proqram şifrələnməsi işə salınıb ancaq, sizin açarlar inisializasiya edilməyib. Xahiş edilir çıxıb yenidən daxil olasınız",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Bərpa açarını aktivləşdir(şifrə itirilməsi hadısələrində, istifadəçi fayllarının bərpasına izin verir)",
|
||||
"Recovery key password" : "Açar şifrənin bərpa edilməsi",
|
||||
"Repeat Recovery key password" : "Bərpa açarın şifrəsini təkrar edin",
|
||||
"Enabled" : "İşə salınıb",
|
||||
"Disabled" : "Dayandırılıb",
|
||||
"Change recovery key password:" : "Bərpa açarın şifrəsini dəyişdir:",
|
||||
"Old Recovery key password" : "Köhnə bərpa açarı şifrəsi",
|
||||
"New Recovery key password" : "Yeni bərpa açarı şifrəsi",
|
||||
"Repeat New Recovery key password" : "Yeni bərpa açarı şifrəsini təkrar edin",
|
||||
"Change Password" : "Şifrəni dəyişdir",
|
||||
"Your private key password no longer matches your log-in password." : "Sizin gizli açar şifrəsi, artıq giriş adınızla uyğun gəlmir.",
|
||||
"Set your old private key password to your current log-in password:" : "Köhnə açar şifrənizi, sizin hal-hazırki giriş şifrənizə təyin edin: ",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Əgər siz köhnə şifrənizi xatırlamırsınızsa, öz inzibatçınızdan fayllarınızın bərpasını istəyə bilərsiniz.",
|
||||
"Old log-in password" : "Köhnə giriş şifrəsi",
|
||||
"Current log-in password" : "Hal-hazırki giriş şifrəsi",
|
||||
"Update Private Key Password" : "Gizli açar şifrəsini yenilə",
|
||||
"Enable password recovery:" : "Şifrə bərpasını işə sal:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Bu opsiyanın aktiv edilməsi sizə, şifrənin itdiyi hallarda bütün şifrələnmiş fayllarınıza yetkinin yenidən əldə edilməsinə şərait yaradacaq"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,51 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Bəlli olmayan səhv baş verdi",
|
||||
"Missing recovery key password" : "Bərpa açarının şifrəsi çatışmır",
|
||||
"Please repeat the recovery key password" : "Xahiş olunur bərpa açarı şifrəsini təkrarlayasınız",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Təkrar daxil edilən bərpa açarı şifrəsi, öncə daxil edilən bərpa açarı ilə üst-üstə düşmür ",
|
||||
"Recovery key successfully enabled" : "Bərpa açarı uğurla aktivləşdi",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Geriqaytarılma açarını sondürmək olmur. Xahiş edirik geriqaytarılma key açarınızı yoxlayın.",
|
||||
"Recovery key successfully disabled" : "Bərpa açarı uğurla söndürüldü",
|
||||
"Please provide the old recovery password" : "Xahiş olunur köhnə bərpa açarını daxil edəsiniz",
|
||||
"Please provide a new recovery password" : "Xahiş olunur yeni bərpa açarı şifrəsini daxil esəsiniz",
|
||||
"Please repeat the new recovery password" : "Xahiş olunur yeni bərpa açarını təkrarlayasınız",
|
||||
"Password successfully changed." : "Şifrə uğurla dəyişdirildi.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Şifrəni dəyişmək olmur, ola bilər ki, köhnə şifrə düzgün olmayıb.",
|
||||
"Could not update the private key password." : "Gizli açarın şifrəsini yeniləmək mümkün olmadı.",
|
||||
"The old password was not correct, please try again." : "Köhnə şifrə düzgün deyildi, xahiş olunur yenidən cəhd edəsiniz.",
|
||||
"The current log-in password was not correct, please try again." : "Hal-hazırki istifadəçi şifrəsi düzgün deyildi, xahiş olunur yenidən cəhd edəsiniz.",
|
||||
"Private key password successfully updated." : "Gizli aşar şifrəsi uğurla yeniləndi.",
|
||||
"File recovery settings updated" : "Fayl bərpa quraşdırmaları yeniləndi",
|
||||
"Could not update file recovery" : "Fayl bərpasını yeniləmək olmur",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Şifrələmə proqramı inisializasiya edilməyib! Ola bilər ki, şifrələnmə proqramı sizin sessiya müddətində yenidən işə salınıb. Xahiş olunur çıxıb yenidən girişə cəhd edəsiniz ki, şifrələnmə proqramı sizin istifadəçı adı üçün təkrar inisializasiya edilsin. ",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Sizin gizli açarınız doğru deyil! Təxmin edilir ki, sizin şifrə %s-dən kənarda dəyişdirilib(misal üçün sizin koorporativ qovluq). Siz öz şifrələnmiş fayllarınıza yetkinizi bərpa etmək üçün, öz şifrənizi şəxsi quraşdırmalarınızda yeniləyə bilərsiniz.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Bu faylı deşifrə etmək olmur və ola bilər ki, bu paylaşımda olan fayldır. Xahiş olunur faylın sahibinə həmin faylı sizinlə yenidən paylaşım etməsini bildirəsiniz. ",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Tanınmayan səhv. Xahiş olunur sistem quraşdırmalarınızı yoxlayın yada öz inzibatçınızla əlaqə yaradın",
|
||||
"Initial encryption started... This can take some time. Please wait." : "İlkin şifələnmə başlandı... Bu müəyyən vaxt ala bilər. Xahiş olunur gözləyəsiniz.",
|
||||
"Initial encryption running... Please try again later." : "İlkin şifrələnmə işləyir... Xahiş olunur birazdan yenidən müraciət edəsiniz.",
|
||||
"Missing requirements." : "Taləbatlar çatışmır.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Xahiş olunur ki, PHP-in OpenSSL genişlənməsi yüklənib və düzgün konfiqurasiya edilib. İndiki hal üçün şifrələnmə proqramı dayandırılmışdır.",
|
||||
"Following users are not set up for encryption:" : "Göstərilən istifadəçilər şifrələnmə üçün quraşdırılmayıb:",
|
||||
"Go directly to your %spersonal settings%s." : "Birbaşa öz %sşəxsi quraşdırmalarınıza%s gedin.",
|
||||
"Server-side Encryption" : "Server-tərəf şifrələnmə",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Proqram şifrələnməsi işə salınıb ancaq, sizin açarlar inisializasiya edilməyib. Xahiş edilir çıxıb yenidən daxil olasınız",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Bərpa açarını aktivləşdir(şifrə itirilməsi hadısələrində, istifadəçi fayllarının bərpasına izin verir)",
|
||||
"Recovery key password" : "Açar şifrənin bərpa edilməsi",
|
||||
"Repeat Recovery key password" : "Bərpa açarın şifrəsini təkrar edin",
|
||||
"Enabled" : "İşə salınıb",
|
||||
"Disabled" : "Dayandırılıb",
|
||||
"Change recovery key password:" : "Bərpa açarın şifrəsini dəyişdir:",
|
||||
"Old Recovery key password" : "Köhnə bərpa açarı şifrəsi",
|
||||
"New Recovery key password" : "Yeni bərpa açarı şifrəsi",
|
||||
"Repeat New Recovery key password" : "Yeni bərpa açarı şifrəsini təkrar edin",
|
||||
"Change Password" : "Şifrəni dəyişdir",
|
||||
"Your private key password no longer matches your log-in password." : "Sizin gizli açar şifrəsi, artıq giriş adınızla uyğun gəlmir.",
|
||||
"Set your old private key password to your current log-in password:" : "Köhnə açar şifrənizi, sizin hal-hazırki giriş şifrənizə təyin edin: ",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Əgər siz köhnə şifrənizi xatırlamırsınızsa, öz inzibatçınızdan fayllarınızın bərpasını istəyə bilərsiniz.",
|
||||
"Old log-in password" : "Köhnə giriş şifrəsi",
|
||||
"Current log-in password" : "Hal-hazırki giriş şifrəsi",
|
||||
"Update Private Key Password" : "Gizli açar şifrəsini yenilə",
|
||||
"Enable password recovery:" : "Şifrə bərpasını işə sal:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Bu opsiyanın aktiv edilməsi sizə, şifrənin itdiyi hallarda bütün şifrələnmiş fayllarınıza yetkinin yenidən əldə edilməsinə şərait yaradacaq"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Непозната грешка.",
|
||||
"Missing recovery key password" : "Липсва парола за възстановяване",
|
||||
"Please repeat the recovery key password" : "Повтори новата парола за възстановяване",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Повторената парола за възстановяване не съвпада със зададената парола за възстановяване",
|
||||
"Recovery key successfully enabled" : "Успешно включване на опцията ключ за възстановяване.",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Неуспешно изключване на ключа за възстановяване. Моля, провери паролата за ключа за възстановяване!",
|
||||
"Recovery key successfully disabled" : "Успешно изключване на ключа за възстановяване.",
|
||||
"Please provide the old recovery password" : "Моля, въведи старата парола за възстановяване",
|
||||
"Please provide a new recovery password" : "Моля, задай нова парола за възстановяване",
|
||||
"Please repeat the new recovery password" : "Моля, въведи повторна новата парола за възстановяване",
|
||||
"Password successfully changed." : "Паролата е успешно променена.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Грешка при промяна на паролата. Може би старата ти парола е сгрешена.",
|
||||
"Could not update the private key password." : "Неуспешна промяна на паролата на личния ключ",
|
||||
"The old password was not correct, please try again." : "Старата парола е грешна, опитай отново.",
|
||||
"The current log-in password was not correct, please try again." : "Грешна парола за вписване, опитай отново.",
|
||||
"Private key password successfully updated." : "Успешно променена тайната парола за ключа.",
|
||||
"File recovery settings updated" : "Настройките за възстановяване на файлове са променени.",
|
||||
"Could not update file recovery" : "Неуспешна промяна на настройките за възстановяване на файлове.",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Неуспешна инициализация на криптиращото приложение! Може би криптиращото приложение бе включено по време на твоята сесия. Отпиши се и се впиши обратно за да инциализираш криптиращото приложение.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Твоят таен ключ е невалиден! Вероятно твоята парола беше променена извън %s(пр. твоята корпоративна директория). Можеш да промениш своят таен ключ в Лични настройки, за да възстановиш достъпа до криптираните файлове.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Неуспешно разшифроване на този файл, вероятно това е споделен файл. Моля, поискай собственика на файла да го сподели повторно с теб.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Непозната грешка. Моля, провери системните настройки или се свържи с администратора.",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Първоначалното криптиране започна... Това може да отнеме време. Моля изчакай.",
|
||||
"Initial encryption running... Please try again later." : "Тече първоначално криптиране... Моля опитай по-късно.",
|
||||
"Missing requirements." : "Липсва задължителна информация.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Моля уверете се че OpenSSL заедно с PHP разширене са включени и конфигурирани правилно. За сега, криптиращото приложение е изключено.",
|
||||
"Following users are not set up for encryption:" : "Следните потребители не са настроени за криптиране:",
|
||||
"Go directly to your %spersonal settings%s." : "Отиде направо към твоите %sлични настройки%s.",
|
||||
"Server-side Encryption" : "Криптиране от страна на сървъра",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Програмата за криптиране е включена, но твоите ключове не са зададени, моля отпиши си и се впиши отново.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Включи опцията възстановяване на ключ (разрешава да възстанови файловете на потребителите в случай на загубена парола):",
|
||||
"Recovery key password" : "Парола за възстановяане на ключа",
|
||||
"Repeat Recovery key password" : "Повтори паролата за възстановяване на ключа",
|
||||
"Enabled" : "Включено",
|
||||
"Disabled" : "Изключено",
|
||||
"Change recovery key password:" : "Промени паролата за въстановяване на ключа:",
|
||||
"Old Recovery key password" : "Старата парола за въстановяване на ключа",
|
||||
"New Recovery key password" : "Новата парола за възстановяване на ключа",
|
||||
"Repeat New Recovery key password" : "Повтори новата паролза за възстановяване на ключа",
|
||||
"Change Password" : "Промени Паролата",
|
||||
"Your private key password no longer matches your log-in password." : "Личният ти ключ не съвпада с паролата за вписване.",
|
||||
"Set your old private key password to your current log-in password:" : "Промени паролата за тайния ти включ на паролата за вписване:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Ако не помниш старата парола помоли администратора да възстанови файловете ти.",
|
||||
"Old log-in password" : "Стара парола за вписване",
|
||||
"Current log-in password" : "Текуща парола за вписване",
|
||||
"Update Private Key Password" : "Промени Тайната Парола за Ключа",
|
||||
"Enable password recovery:" : "Включи опцията възстановяване на паролата:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Избирането на тази опция ще ти позволи да възстановиш достъпа си до файловете в случай на изгубена парола."
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,51 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Непозната грешка.",
|
||||
"Missing recovery key password" : "Липсва парола за възстановяване",
|
||||
"Please repeat the recovery key password" : "Повтори новата парола за възстановяване",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Повторената парола за възстановяване не съвпада със зададената парола за възстановяване",
|
||||
"Recovery key successfully enabled" : "Успешно включване на опцията ключ за възстановяване.",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Неуспешно изключване на ключа за възстановяване. Моля, провери паролата за ключа за възстановяване!",
|
||||
"Recovery key successfully disabled" : "Успешно изключване на ключа за възстановяване.",
|
||||
"Please provide the old recovery password" : "Моля, въведи старата парола за възстановяване",
|
||||
"Please provide a new recovery password" : "Моля, задай нова парола за възстановяване",
|
||||
"Please repeat the new recovery password" : "Моля, въведи повторна новата парола за възстановяване",
|
||||
"Password successfully changed." : "Паролата е успешно променена.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Грешка при промяна на паролата. Може би старата ти парола е сгрешена.",
|
||||
"Could not update the private key password." : "Неуспешна промяна на паролата на личния ключ",
|
||||
"The old password was not correct, please try again." : "Старата парола е грешна, опитай отново.",
|
||||
"The current log-in password was not correct, please try again." : "Грешна парола за вписване, опитай отново.",
|
||||
"Private key password successfully updated." : "Успешно променена тайната парола за ключа.",
|
||||
"File recovery settings updated" : "Настройките за възстановяване на файлове са променени.",
|
||||
"Could not update file recovery" : "Неуспешна промяна на настройките за възстановяване на файлове.",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Неуспешна инициализация на криптиращото приложение! Може би криптиращото приложение бе включено по време на твоята сесия. Отпиши се и се впиши обратно за да инциализираш криптиращото приложение.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Твоят таен ключ е невалиден! Вероятно твоята парола беше променена извън %s(пр. твоята корпоративна директория). Можеш да промениш своят таен ключ в Лични настройки, за да възстановиш достъпа до криптираните файлове.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Неуспешно разшифроване на този файл, вероятно това е споделен файл. Моля, поискай собственика на файла да го сподели повторно с теб.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Непозната грешка. Моля, провери системните настройки или се свържи с администратора.",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Първоначалното криптиране започна... Това може да отнеме време. Моля изчакай.",
|
||||
"Initial encryption running... Please try again later." : "Тече първоначално криптиране... Моля опитай по-късно.",
|
||||
"Missing requirements." : "Липсва задължителна информация.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Моля уверете се че OpenSSL заедно с PHP разширене са включени и конфигурирани правилно. За сега, криптиращото приложение е изключено.",
|
||||
"Following users are not set up for encryption:" : "Следните потребители не са настроени за криптиране:",
|
||||
"Go directly to your %spersonal settings%s." : "Отиде направо към твоите %sлични настройки%s.",
|
||||
"Server-side Encryption" : "Криптиране от страна на сървъра",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Програмата за криптиране е включена, но твоите ключове не са зададени, моля отпиши си и се впиши отново.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Включи опцията възстановяване на ключ (разрешава да възстанови файловете на потребителите в случай на загубена парола):",
|
||||
"Recovery key password" : "Парола за възстановяане на ключа",
|
||||
"Repeat Recovery key password" : "Повтори паролата за възстановяване на ключа",
|
||||
"Enabled" : "Включено",
|
||||
"Disabled" : "Изключено",
|
||||
"Change recovery key password:" : "Промени паролата за въстановяване на ключа:",
|
||||
"Old Recovery key password" : "Старата парола за въстановяване на ключа",
|
||||
"New Recovery key password" : "Новата парола за възстановяване на ключа",
|
||||
"Repeat New Recovery key password" : "Повтори новата паролза за възстановяване на ключа",
|
||||
"Change Password" : "Промени Паролата",
|
||||
"Your private key password no longer matches your log-in password." : "Личният ти ключ не съвпада с паролата за вписване.",
|
||||
"Set your old private key password to your current log-in password:" : "Промени паролата за тайния ти включ на паролата за вписване:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Ако не помниш старата парола помоли администратора да възстанови файловете ти.",
|
||||
"Old log-in password" : "Стара парола за вписване",
|
||||
"Current log-in password" : "Текуща парола за вписване",
|
||||
"Update Private Key Password" : "Промени Тайната Парола за Ключа",
|
||||
"Enable password recovery:" : "Включи опцията възстановяване на паролата:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Избирането на тази опция ще ти позволи да възстановиш достъпа си до файловете в случай на изгубена парола."
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "অজানা জটিলতা",
|
||||
"Recovery key successfully enabled" : "পূনরুদ্ধার চাবি সার্থকভাবে কার্যকর করা হয়েছে",
|
||||
"Recovery key successfully disabled" : "পূনরুদ্ধার চাবি সার্থকভাবে অকার্যকর করা হয়েছে",
|
||||
"Password successfully changed." : "আপনার কূটশব্দটি সার্থকভাবে পরিবর্তন করা হয়েছে ",
|
||||
"Initial encryption started... This can take some time. Please wait." : "প্রাথমিক এনক্রিপসন শুরু হয়েছে.... এটি কিছুটা সময় নিতে পারে। অপেক্ষা করুন।",
|
||||
"Initial encryption running... Please try again later." : "প্রাথমিক এনক্রিপসন চলছে.... দয়া করে পরে আবার চেষ্টা করুন।",
|
||||
"Missing requirements." : "প্রয়োজনানুযায়ী ঘাটতি আছে।",
|
||||
"Following users are not set up for encryption:" : "নিম্নবর্ণিত ব্যবহারকারীগণ এনক্রিপসনের জন্য অধিকারপ্রাপ্ত নন:",
|
||||
"Go directly to your %spersonal settings%s." : "সরাসরি আপনার %spersonal settings%s এ যান।",
|
||||
"Repeat Recovery key password" : "পূণরূদ্ধার কি এর কুটশব্দ পূণরায় দিন",
|
||||
"Enabled" : "কার্যকর",
|
||||
"Disabled" : "অকার্যকর",
|
||||
"Change recovery key password:" : "পূণরূদ্ধার কি এর কুটশব্দ পরিবর্তন করুন:",
|
||||
"Old Recovery key password" : "পূণরূদ্ধার কি এর পুরাতন কুটশব্দ",
|
||||
"New Recovery key password" : "পূণরূদ্ধার কি এর নতুন কুটশব্দ",
|
||||
"Repeat New Recovery key password" : "পূণরূদ্ধার কি এর নতুন কুটশব্দ পূণরায় দিন",
|
||||
"Change Password" : "কূটশব্দ পরিবর্তন করুন"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,20 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "অজানা জটিলতা",
|
||||
"Recovery key successfully enabled" : "পূনরুদ্ধার চাবি সার্থকভাবে কার্যকর করা হয়েছে",
|
||||
"Recovery key successfully disabled" : "পূনরুদ্ধার চাবি সার্থকভাবে অকার্যকর করা হয়েছে",
|
||||
"Password successfully changed." : "আপনার কূটশব্দটি সার্থকভাবে পরিবর্তন করা হয়েছে ",
|
||||
"Initial encryption started... This can take some time. Please wait." : "প্রাথমিক এনক্রিপসন শুরু হয়েছে.... এটি কিছুটা সময় নিতে পারে। অপেক্ষা করুন।",
|
||||
"Initial encryption running... Please try again later." : "প্রাথমিক এনক্রিপসন চলছে.... দয়া করে পরে আবার চেষ্টা করুন।",
|
||||
"Missing requirements." : "প্রয়োজনানুযায়ী ঘাটতি আছে।",
|
||||
"Following users are not set up for encryption:" : "নিম্নবর্ণিত ব্যবহারকারীগণ এনক্রিপসনের জন্য অধিকারপ্রাপ্ত নন:",
|
||||
"Go directly to your %spersonal settings%s." : "সরাসরি আপনার %spersonal settings%s এ যান।",
|
||||
"Repeat Recovery key password" : "পূণরূদ্ধার কি এর কুটশব্দ পূণরায় দিন",
|
||||
"Enabled" : "কার্যকর",
|
||||
"Disabled" : "অকার্যকর",
|
||||
"Change recovery key password:" : "পূণরূদ্ধার কি এর কুটশব্দ পরিবর্তন করুন:",
|
||||
"Old Recovery key password" : "পূণরূদ্ধার কি এর পুরাতন কুটশব্দ",
|
||||
"New Recovery key password" : "পূণরূদ্ধার কি এর নতুন কুটশব্দ",
|
||||
"Repeat New Recovery key password" : "পূণরূদ্ধার কি এর নতুন কুটশব্দ পূণরায় দিন",
|
||||
"Change Password" : "কূটশব্দ পরিবর্তন করুন"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Nepoznata greška",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacija šifriranja je uključena, ali vaši ključevi nisu inicializirani, molim odjavite se i ponovno prijavite",
|
||||
"Enabled" : "Aktivirano",
|
||||
"Disabled" : "Onemogućeno"
|
||||
},
|
||||
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
|
|
@ -1,7 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Nepoznata greška",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacija šifriranja je uključena, ali vaši ključevi nisu inicializirani, molim odjavite se i ponovno prijavite",
|
||||
"Enabled" : "Aktivirano",
|
||||
"Disabled" : "Onemogućeno"
|
||||
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Error desconegut",
|
||||
"Recovery key successfully enabled" : "La clau de recuperació s'ha activat",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "No s'ha pogut desactivar la calu de recuperació. Comproveu la contrasenya de la clau de recuperació!",
|
||||
"Recovery key successfully disabled" : "La clau de recuperació s'ha descativat",
|
||||
"Password successfully changed." : "La contrasenya s'ha canviat.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "No s'ha pogut canviar la contrasenya. Potser la contrasenya anterior no era correcta.",
|
||||
"Private key password successfully updated." : "La contrasenya de la clau privada s'ha actualitzat.",
|
||||
"File recovery settings updated" : "S'han actualitzat els arranjaments de recuperació de fitxers",
|
||||
"Could not update file recovery" : "No s'ha pogut actualitzar la recuperació de fitxers",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "L'aplicació d'encriptació no està inicialitzada! Potser l'aplicació d'encriptació ha estat reiniciada durant la sessió. Intenteu sortir i acreditar-vos de nou per reinicialitzar l'aplicació d'encriptació.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "La clau privada no és vàlida! Probablement la contrasenya va ser canviada des de fora de %s (per exemple, en el directori de l'empresa). Vostè pot actualitzar la contrasenya de clau privada en la seva configuració personal per poder recuperar l'accés en els arxius xifrats.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot desencriptar aquest fitxer, probablement és un fitxer compartit. Demaneu al propietari del fitxer que el comparteixi de nou amb vós.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Error desconegut. Comproveu l'arranjament del sistema o aviseu a l'administrador",
|
||||
"Initial encryption started... This can take some time. Please wait." : "La encriptació inicial ha començat... Pot trigar una estona, espereu.",
|
||||
"Initial encryption running... Please try again later." : "encriptació inicial en procés... Proveu-ho més tard.",
|
||||
"Missing requirements." : "Manca de requisits.",
|
||||
"Following users are not set up for encryption:" : "Els usuaris següents no estan configurats per a l'encriptació:",
|
||||
"Go directly to your %spersonal settings%s." : "Vés directament a l'%sarranjament personal%s.",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, sortiu i acrediteu-vos de nou.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Activa la clau de recuperació (permet recuperar fitxers d'usuaris en cas de pèrdua de contrasenya):",
|
||||
"Recovery key password" : "Clau de recuperació de la contrasenya",
|
||||
"Repeat Recovery key password" : "Repetiu la clau de recuperació de contrasenya",
|
||||
"Enabled" : "Activat",
|
||||
"Disabled" : "Desactivat",
|
||||
"Change recovery key password:" : "Canvia la clau de recuperació de contrasenya:",
|
||||
"Old Recovery key password" : "Antiga clau de recuperació de contrasenya",
|
||||
"New Recovery key password" : "Nova clau de recuperació de contrasenya",
|
||||
"Repeat New Recovery key password" : "Repetiu la nova clau de recuperació de contrasenya",
|
||||
"Change Password" : "Canvia la contrasenya",
|
||||
"Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'accés:",
|
||||
"Set your old private key password to your current log-in password:" : "Establiu la vostra antiga clau privada a l'actual contrasenya d'accés:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recordeu la contrasenya anterior podeu demanar a l'administrador que recuperi els vostres fitxers.",
|
||||
"Old log-in password" : "Contrasenya anterior d'accés",
|
||||
"Current log-in password" : "Contrasenya d'accés actual",
|
||||
"Update Private Key Password" : "Actualitza la contrasenya de clau privada",
|
||||
"Enable password recovery:" : "Habilita la recuperació de contrasenya:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activar aquesta opció us permetrà obtenir de nou accés als vostres fitxers encriptats en cas de perdre la contrasenya"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,40 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Error desconegut",
|
||||
"Recovery key successfully enabled" : "La clau de recuperació s'ha activat",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "No s'ha pogut desactivar la calu de recuperació. Comproveu la contrasenya de la clau de recuperació!",
|
||||
"Recovery key successfully disabled" : "La clau de recuperació s'ha descativat",
|
||||
"Password successfully changed." : "La contrasenya s'ha canviat.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "No s'ha pogut canviar la contrasenya. Potser la contrasenya anterior no era correcta.",
|
||||
"Private key password successfully updated." : "La contrasenya de la clau privada s'ha actualitzat.",
|
||||
"File recovery settings updated" : "S'han actualitzat els arranjaments de recuperació de fitxers",
|
||||
"Could not update file recovery" : "No s'ha pogut actualitzar la recuperació de fitxers",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "L'aplicació d'encriptació no està inicialitzada! Potser l'aplicació d'encriptació ha estat reiniciada durant la sessió. Intenteu sortir i acreditar-vos de nou per reinicialitzar l'aplicació d'encriptació.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "La clau privada no és vàlida! Probablement la contrasenya va ser canviada des de fora de %s (per exemple, en el directori de l'empresa). Vostè pot actualitzar la contrasenya de clau privada en la seva configuració personal per poder recuperar l'accés en els arxius xifrats.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot desencriptar aquest fitxer, probablement és un fitxer compartit. Demaneu al propietari del fitxer que el comparteixi de nou amb vós.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Error desconegut. Comproveu l'arranjament del sistema o aviseu a l'administrador",
|
||||
"Initial encryption started... This can take some time. Please wait." : "La encriptació inicial ha començat... Pot trigar una estona, espereu.",
|
||||
"Initial encryption running... Please try again later." : "encriptació inicial en procés... Proveu-ho més tard.",
|
||||
"Missing requirements." : "Manca de requisits.",
|
||||
"Following users are not set up for encryption:" : "Els usuaris següents no estan configurats per a l'encriptació:",
|
||||
"Go directly to your %spersonal settings%s." : "Vés directament a l'%sarranjament personal%s.",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, sortiu i acrediteu-vos de nou.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Activa la clau de recuperació (permet recuperar fitxers d'usuaris en cas de pèrdua de contrasenya):",
|
||||
"Recovery key password" : "Clau de recuperació de la contrasenya",
|
||||
"Repeat Recovery key password" : "Repetiu la clau de recuperació de contrasenya",
|
||||
"Enabled" : "Activat",
|
||||
"Disabled" : "Desactivat",
|
||||
"Change recovery key password:" : "Canvia la clau de recuperació de contrasenya:",
|
||||
"Old Recovery key password" : "Antiga clau de recuperació de contrasenya",
|
||||
"New Recovery key password" : "Nova clau de recuperació de contrasenya",
|
||||
"Repeat New Recovery key password" : "Repetiu la nova clau de recuperació de contrasenya",
|
||||
"Change Password" : "Canvia la contrasenya",
|
||||
"Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'accés:",
|
||||
"Set your old private key password to your current log-in password:" : "Establiu la vostra antiga clau privada a l'actual contrasenya d'accés:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recordeu la contrasenya anterior podeu demanar a l'administrador que recuperi els vostres fitxers.",
|
||||
"Old log-in password" : "Contrasenya anterior d'accés",
|
||||
"Current log-in password" : "Contrasenya d'accés actual",
|
||||
"Update Private Key Password" : "Actualitza la contrasenya de clau privada",
|
||||
"Enable password recovery:" : "Habilita la recuperació de contrasenya:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Activar aquesta opció us permetrà obtenir de nou accés als vostres fitxers encriptats en cas de perdre la contrasenya"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Neznámá chyba",
|
||||
"Missing recovery key password" : "Chybí heslo klíče pro obnovu",
|
||||
"Please repeat the recovery key password" : "Zopakujte prosím heslo klíče pro obnovu",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Opakované heslo pro obnovu nesouhlasí se zadaným heslem",
|
||||
"Recovery key successfully enabled" : "Záchranný klíč byl úspěšně povolen",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Nelze zakázat záchranný klíč. Zkontrolujte prosím heslo svého záchranného klíče!",
|
||||
"Recovery key successfully disabled" : "Záchranný klíč byl úspěšně zakázán",
|
||||
"Please provide the old recovery password" : "Zadejte prosím staré heslo pro obnovu",
|
||||
"Please provide a new recovery password" : "Zadejte prosím nové heslo pro obnovu",
|
||||
"Please repeat the new recovery password" : "Zopakujte prosím nové heslo pro obnovu",
|
||||
"Password successfully changed." : "Heslo bylo úspěšně změněno.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Změna hesla se nezdařila. Pravděpodobně nebylo stávající heslo zadáno správně.",
|
||||
"Could not update the private key password." : "Nelze aktualizovat heslo soukromého klíče.",
|
||||
"The old password was not correct, please try again." : "Staré heslo nebylo zadáno správně, zkuste to prosím znovu.",
|
||||
"The current log-in password was not correct, please try again." : "Současné přihlašovací heslo nebylo zadáno správně, zkuste to prosím znovu.",
|
||||
"Private key password successfully updated." : "Heslo soukromého klíče úspěšně aktualizováno.",
|
||||
"File recovery settings updated" : "Možnosti záchrany souborů aktualizovány",
|
||||
"Could not update file recovery" : "Nelze nastavit záchranu souborů",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Aplikace pro šifrování není inicializována! Je možné, že aplikace byla znovu aktivována během vašeho přihlášení. Zkuste se prosím odhlásit a znovu přihlásit pro provedení inicializace šifrovací aplikace.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Váš soukromý klíč není platný! Pravděpodobně bylo vaše heslo změněno vně systému %s (např. ve vašem firemním adresáři). Heslo vašeho soukromého klíče můžete změnit ve svém osobním nastavení pro obnovení přístupu k vašim zašifrovaným souborům.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento soubor se nepodařilo dešifrovat, pravděpodobně je sdílený. Požádejte prosím majitele souboru, aby jej s vámi znovu sdílel.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Neznámá chyba. Zkontrolujte nastavení systému nebo kontaktujte vašeho správce.",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Počáteční šifrování zahájeno... Toto může chvíli trvat. Počkejte prosím.",
|
||||
"Initial encryption running... Please try again later." : "Probíhá počáteční šifrování... Zkuste to prosím znovu později.",
|
||||
"Missing requirements." : "Nesplněné závislosti.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Ujistěte se prosím, že máte povolené a správně nakonfigurované OpenSSL včetně jeho rozšíření pro PHP. Aplikace pro šifrování byla prozatím vypnuta.",
|
||||
"Following users are not set up for encryption:" : "Následující uživatelé nemají nastavené šifrování:",
|
||||
"Go directly to your %spersonal settings%s." : "Přejít přímo do svého %sosobního nastavení%s.",
|
||||
"Server-side Encryption" : "Šifrování na serveru",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikace pro šifrování je zapnuta, ale vaše klíče nejsou inicializované. Prosím odhlaste se a znovu přihlaste",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Povolit klíč pro obnovu (umožňuje obnovu uživatelských souborů v případě ztráty hesla)",
|
||||
"Recovery key password" : "Heslo klíče pro obnovu",
|
||||
"Repeat Recovery key password" : "Zopakujte heslo klíče pro obnovu",
|
||||
"Enabled" : "Povoleno",
|
||||
"Disabled" : "Zakázáno",
|
||||
"Change recovery key password:" : "Změna hesla klíče pro obnovu:",
|
||||
"Old Recovery key password" : "Původní heslo klíče pro obnovu",
|
||||
"New Recovery key password" : "Nové heslo klíče pro obnovu",
|
||||
"Repeat New Recovery key password" : "Zopakujte nové heslo klíče pro obnovu",
|
||||
"Change Password" : "Změnit heslo",
|
||||
"Your private key password no longer matches your log-in password." : "Heslo vašeho soukromého klíče se již neshoduje s vaším přihlašovacím heslem.",
|
||||
"Set your old private key password to your current log-in password:" : "Změňte své staré heslo soukromého klíče na stejné, jako je vaše současné přihlašovací heslo:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Pokud si nepamatujete své původní heslo, můžete požádat správce o obnovu vašich souborů.",
|
||||
"Old log-in password" : "Původní přihlašovací heslo",
|
||||
"Current log-in password" : "Aktuální přihlašovací heslo",
|
||||
"Update Private Key Password" : "Změnit heslo soukromého klíče",
|
||||
"Enable password recovery:" : "Povolit obnovu hesla:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Zapnutí této volby vám umožní znovu získat přístup k vašim zašifrovaným souborům pokud ztratíte heslo"
|
||||
},
|
||||
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
|
|
@ -1,51 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Neznámá chyba",
|
||||
"Missing recovery key password" : "Chybí heslo klíče pro obnovu",
|
||||
"Please repeat the recovery key password" : "Zopakujte prosím heslo klíče pro obnovu",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Opakované heslo pro obnovu nesouhlasí se zadaným heslem",
|
||||
"Recovery key successfully enabled" : "Záchranný klíč byl úspěšně povolen",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Nelze zakázat záchranný klíč. Zkontrolujte prosím heslo svého záchranného klíče!",
|
||||
"Recovery key successfully disabled" : "Záchranný klíč byl úspěšně zakázán",
|
||||
"Please provide the old recovery password" : "Zadejte prosím staré heslo pro obnovu",
|
||||
"Please provide a new recovery password" : "Zadejte prosím nové heslo pro obnovu",
|
||||
"Please repeat the new recovery password" : "Zopakujte prosím nové heslo pro obnovu",
|
||||
"Password successfully changed." : "Heslo bylo úspěšně změněno.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Změna hesla se nezdařila. Pravděpodobně nebylo stávající heslo zadáno správně.",
|
||||
"Could not update the private key password." : "Nelze aktualizovat heslo soukromého klíče.",
|
||||
"The old password was not correct, please try again." : "Staré heslo nebylo zadáno správně, zkuste to prosím znovu.",
|
||||
"The current log-in password was not correct, please try again." : "Současné přihlašovací heslo nebylo zadáno správně, zkuste to prosím znovu.",
|
||||
"Private key password successfully updated." : "Heslo soukromého klíče úspěšně aktualizováno.",
|
||||
"File recovery settings updated" : "Možnosti záchrany souborů aktualizovány",
|
||||
"Could not update file recovery" : "Nelze nastavit záchranu souborů",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Aplikace pro šifrování není inicializována! Je možné, že aplikace byla znovu aktivována během vašeho přihlášení. Zkuste se prosím odhlásit a znovu přihlásit pro provedení inicializace šifrovací aplikace.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Váš soukromý klíč není platný! Pravděpodobně bylo vaše heslo změněno vně systému %s (např. ve vašem firemním adresáři). Heslo vašeho soukromého klíče můžete změnit ve svém osobním nastavení pro obnovení přístupu k vašim zašifrovaným souborům.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento soubor se nepodařilo dešifrovat, pravděpodobně je sdílený. Požádejte prosím majitele souboru, aby jej s vámi znovu sdílel.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Neznámá chyba. Zkontrolujte nastavení systému nebo kontaktujte vašeho správce.",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Počáteční šifrování zahájeno... Toto může chvíli trvat. Počkejte prosím.",
|
||||
"Initial encryption running... Please try again later." : "Probíhá počáteční šifrování... Zkuste to prosím znovu později.",
|
||||
"Missing requirements." : "Nesplněné závislosti.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Ujistěte se prosím, že máte povolené a správně nakonfigurované OpenSSL včetně jeho rozšíření pro PHP. Aplikace pro šifrování byla prozatím vypnuta.",
|
||||
"Following users are not set up for encryption:" : "Následující uživatelé nemají nastavené šifrování:",
|
||||
"Go directly to your %spersonal settings%s." : "Přejít přímo do svého %sosobního nastavení%s.",
|
||||
"Server-side Encryption" : "Šifrování na serveru",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikace pro šifrování je zapnuta, ale vaše klíče nejsou inicializované. Prosím odhlaste se a znovu přihlaste",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Povolit klíč pro obnovu (umožňuje obnovu uživatelských souborů v případě ztráty hesla)",
|
||||
"Recovery key password" : "Heslo klíče pro obnovu",
|
||||
"Repeat Recovery key password" : "Zopakujte heslo klíče pro obnovu",
|
||||
"Enabled" : "Povoleno",
|
||||
"Disabled" : "Zakázáno",
|
||||
"Change recovery key password:" : "Změna hesla klíče pro obnovu:",
|
||||
"Old Recovery key password" : "Původní heslo klíče pro obnovu",
|
||||
"New Recovery key password" : "Nové heslo klíče pro obnovu",
|
||||
"Repeat New Recovery key password" : "Zopakujte nové heslo klíče pro obnovu",
|
||||
"Change Password" : "Změnit heslo",
|
||||
"Your private key password no longer matches your log-in password." : "Heslo vašeho soukromého klíče se již neshoduje s vaším přihlašovacím heslem.",
|
||||
"Set your old private key password to your current log-in password:" : "Změňte své staré heslo soukromého klíče na stejné, jako je vaše současné přihlašovací heslo:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Pokud si nepamatujete své původní heslo, můžete požádat správce o obnovu vašich souborů.",
|
||||
"Old log-in password" : "Původní přihlašovací heslo",
|
||||
"Current log-in password" : "Aktuální přihlašovací heslo",
|
||||
"Update Private Key Password" : "Změnit heslo soukromého klíče",
|
||||
"Enable password recovery:" : "Povolit obnovu hesla:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Zapnutí této volby vám umožní znovu získat přístup k vašim zašifrovaným souborům pokud ztratíte heslo"
|
||||
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Encryption" : "Amgryptiad"
|
||||
},
|
||||
"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;");
|
|
@ -1,4 +0,0 @@
|
|||
{ "translations": {
|
||||
"Encryption" : "Amgryptiad"
|
||||
},"pluralForm" :"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Ukendt fejl",
|
||||
"Missing recovery key password" : "Der mangler kodeord for gendannelsesnøgle",
|
||||
"Please repeat the recovery key password" : "Gentag venligst kodeordet for gendannelsesnøglen",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Det gentagne kodeord for gendannelsesnøglen stemmer ikke med det angivne kodeord for gendannelsesnøglen",
|
||||
"Recovery key successfully enabled" : "Gendannelsesnøgle aktiveret med succes",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Kunne ikke deaktivere gendannelsesnøgle. Kontroller din gendannelsesnøgle kodeord!",
|
||||
"Recovery key successfully disabled" : "Gendannelsesnøgle deaktiveret succesfuldt",
|
||||
"Please provide the old recovery password" : "Angiv venligst det gamle kodeord for gendannelsesnøglen",
|
||||
"Please provide a new recovery password" : "Angiv venligst et nyt kodeord til gendannelse",
|
||||
"Please repeat the new recovery password" : "Gentag venligst det nye kodeord til gendannelse",
|
||||
"Password successfully changed." : "Kodeordet blev ændret succesfuldt",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Kunne ikke ændre kodeordet. Måske var det gamle kodeord ikke korrekt.",
|
||||
"Could not update the private key password." : "Kunne ikke opdatere kodeordet til den private nøgle.",
|
||||
"The old password was not correct, please try again." : "Det gamle kodeord var ikke korrekt, prøv venligst igen.",
|
||||
"The current log-in password was not correct, please try again." : "Det nuværende kodeord til log-in var ikke korrekt, prøv venligst igen.",
|
||||
"Private key password successfully updated." : "Privat nøgle kodeord succesfuldt opdateret.",
|
||||
"File recovery settings updated" : "Filgendannelsesindstillinger opdateret",
|
||||
"Could not update file recovery" : "Kunne ikke opdatere filgendannelse",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Krypteringsprogrammet er ikke igangsat. Det kan skyldes at krypteringsprogrammet er blevet genaktiveret under din session. Prøv at logge ud og ind igen for at aktivere krypteringsprogrammet. ",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Din private nøgle er ikke gyldig. Sandsynligvis er dit kodeord blevet ændret uden for %s (f.eks dit firmas adressebog). Du kan opdatere din private nøglekode i dine personlige indstillinger for at genskabe adgang til dine krypterede filer.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ikke kryptere denne fil, sandsynligvis fordi filen er delt. Bed venligst filens ejer om at dele den med dig på ny.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Ukendt fejl. Venligst tjek dine systemindstillinger eller kontakt din systemadministrator",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Førstegangskrypteringen er påbegyndt... Dette kan tage nogen tid. Vent venligst.",
|
||||
"Initial encryption running... Please try again later." : "Kryptering foretages... Prøv venligst igen senere.",
|
||||
"Missing requirements." : "Manglende betingelser.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Sørg for at OpenSSL, sammen med PHP-udvidelsen, er aktiveret og korrekt konfigureret. Indtil videre er krypteringsprogrammet deaktiveret.",
|
||||
"Following users are not set up for encryption:" : "Følgende brugere er ikke sat op til kryptering:",
|
||||
"Go directly to your %spersonal settings%s." : "Gå direkte til dine %spersonlige indstillinger%s.",
|
||||
"Server-side Encryption" : "Kryptering på serverdelen",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet er aktiveret, men din nøgler er ikke igangsat. Log venligst ud og ind igen.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Aktiver gendannelsesnøgle (Tillad gendannelse af brugerfiler i tilfælde af tab af kodeord):",
|
||||
"Recovery key password" : "Gendannelsesnøgle kodeord",
|
||||
"Repeat Recovery key password" : "Gentag gendannelse af nøglekoden",
|
||||
"Enabled" : "Aktiveret",
|
||||
"Disabled" : "Deaktiveret",
|
||||
"Change recovery key password:" : "Skift gendannelsesnøgle kodeord:",
|
||||
"Old Recovery key password" : "Gammel Gendannelsesnøgle kodeord",
|
||||
"New Recovery key password" : "Ny Gendannelsesnøgle kodeord",
|
||||
"Repeat New Recovery key password" : "Gentag det nye gendannaleses nøglekodeord",
|
||||
"Change Password" : "Skift Kodeord",
|
||||
"Your private key password no longer matches your log-in password." : "Dit private nøglekodeord stemmer ikke længere overens med dit login-kodeord.",
|
||||
"Set your old private key password to your current log-in password:" : "Sæt dit gamle, private nøglekodeord til at være dit nuværende login-kodeord. ",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Hvis du ikke kan huske dit gamle kodeord kan du bede din administrator om at gendanne dine filer.",
|
||||
"Old log-in password" : "Gammelt login kodeord",
|
||||
"Current log-in password" : "Nuvrende login kodeord",
|
||||
"Update Private Key Password" : "Opdater Privat Nøgle Kodeord",
|
||||
"Enable password recovery:" : "Aktiver kodeord gendannelse:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering af denne valgmulighed tillader dig at generhverve adgang til dine krypterede filer i tilfælde af tab af kodeord"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,51 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Ukendt fejl",
|
||||
"Missing recovery key password" : "Der mangler kodeord for gendannelsesnøgle",
|
||||
"Please repeat the recovery key password" : "Gentag venligst kodeordet for gendannelsesnøglen",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Det gentagne kodeord for gendannelsesnøglen stemmer ikke med det angivne kodeord for gendannelsesnøglen",
|
||||
"Recovery key successfully enabled" : "Gendannelsesnøgle aktiveret med succes",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Kunne ikke deaktivere gendannelsesnøgle. Kontroller din gendannelsesnøgle kodeord!",
|
||||
"Recovery key successfully disabled" : "Gendannelsesnøgle deaktiveret succesfuldt",
|
||||
"Please provide the old recovery password" : "Angiv venligst det gamle kodeord for gendannelsesnøglen",
|
||||
"Please provide a new recovery password" : "Angiv venligst et nyt kodeord til gendannelse",
|
||||
"Please repeat the new recovery password" : "Gentag venligst det nye kodeord til gendannelse",
|
||||
"Password successfully changed." : "Kodeordet blev ændret succesfuldt",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Kunne ikke ændre kodeordet. Måske var det gamle kodeord ikke korrekt.",
|
||||
"Could not update the private key password." : "Kunne ikke opdatere kodeordet til den private nøgle.",
|
||||
"The old password was not correct, please try again." : "Det gamle kodeord var ikke korrekt, prøv venligst igen.",
|
||||
"The current log-in password was not correct, please try again." : "Det nuværende kodeord til log-in var ikke korrekt, prøv venligst igen.",
|
||||
"Private key password successfully updated." : "Privat nøgle kodeord succesfuldt opdateret.",
|
||||
"File recovery settings updated" : "Filgendannelsesindstillinger opdateret",
|
||||
"Could not update file recovery" : "Kunne ikke opdatere filgendannelse",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Krypteringsprogrammet er ikke igangsat. Det kan skyldes at krypteringsprogrammet er blevet genaktiveret under din session. Prøv at logge ud og ind igen for at aktivere krypteringsprogrammet. ",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Din private nøgle er ikke gyldig. Sandsynligvis er dit kodeord blevet ændret uden for %s (f.eks dit firmas adressebog). Du kan opdatere din private nøglekode i dine personlige indstillinger for at genskabe adgang til dine krypterede filer.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ikke kryptere denne fil, sandsynligvis fordi filen er delt. Bed venligst filens ejer om at dele den med dig på ny.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Ukendt fejl. Venligst tjek dine systemindstillinger eller kontakt din systemadministrator",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Førstegangskrypteringen er påbegyndt... Dette kan tage nogen tid. Vent venligst.",
|
||||
"Initial encryption running... Please try again later." : "Kryptering foretages... Prøv venligst igen senere.",
|
||||
"Missing requirements." : "Manglende betingelser.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Sørg for at OpenSSL, sammen med PHP-udvidelsen, er aktiveret og korrekt konfigureret. Indtil videre er krypteringsprogrammet deaktiveret.",
|
||||
"Following users are not set up for encryption:" : "Følgende brugere er ikke sat op til kryptering:",
|
||||
"Go directly to your %spersonal settings%s." : "Gå direkte til dine %spersonlige indstillinger%s.",
|
||||
"Server-side Encryption" : "Kryptering på serverdelen",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet er aktiveret, men din nøgler er ikke igangsat. Log venligst ud og ind igen.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Aktiver gendannelsesnøgle (Tillad gendannelse af brugerfiler i tilfælde af tab af kodeord):",
|
||||
"Recovery key password" : "Gendannelsesnøgle kodeord",
|
||||
"Repeat Recovery key password" : "Gentag gendannelse af nøglekoden",
|
||||
"Enabled" : "Aktiveret",
|
||||
"Disabled" : "Deaktiveret",
|
||||
"Change recovery key password:" : "Skift gendannelsesnøgle kodeord:",
|
||||
"Old Recovery key password" : "Gammel Gendannelsesnøgle kodeord",
|
||||
"New Recovery key password" : "Ny Gendannelsesnøgle kodeord",
|
||||
"Repeat New Recovery key password" : "Gentag det nye gendannaleses nøglekodeord",
|
||||
"Change Password" : "Skift Kodeord",
|
||||
"Your private key password no longer matches your log-in password." : "Dit private nøglekodeord stemmer ikke længere overens med dit login-kodeord.",
|
||||
"Set your old private key password to your current log-in password:" : "Sæt dit gamle, private nøglekodeord til at være dit nuværende login-kodeord. ",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Hvis du ikke kan huske dit gamle kodeord kan du bede din administrator om at gendanne dine filer.",
|
||||
"Old log-in password" : "Gammelt login kodeord",
|
||||
"Current log-in password" : "Nuvrende login kodeord",
|
||||
"Update Private Key Password" : "Opdater Privat Nøgle Kodeord",
|
||||
"Enable password recovery:" : "Aktiver kodeord gendannelse:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering af denne valgmulighed tillader dig at generhverve adgang til dine krypterede filer i tilfælde af tab af kodeord"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Unbekannter Fehler",
|
||||
"Missing recovery key password" : "Schlüsselpasswort zur Wiederherstellung fehlt",
|
||||
"Please repeat the recovery key password" : "Schlüsselpasswort zur Wiederherstellung bitte wiederholen",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Das wiederholte Schlüsselpasswort zur Wiederherstellung stimmt nicht mit dem geforderten Schlüsselpasswort zur Wiederherstellung überein",
|
||||
"Recovery key successfully enabled" : "Wiederherstellungsschlüssel wurde erfolgreich aktiviert",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Überprüfe Dein Wiederherstellungspasswort!",
|
||||
"Recovery key successfully disabled" : "Wiederherstellungsschlüssel deaktiviert.",
|
||||
"Please provide the old recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben",
|
||||
"Please provide a new recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben",
|
||||
"Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen",
|
||||
"Password successfully changed." : "Dein Passwort wurde geändert.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort falsch.",
|
||||
"Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.",
|
||||
"The old password was not correct, please try again." : "Das alte Passwort war nicht korrekt, bitte versuche es noch einmal.",
|
||||
"The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuche es noch einmal.",
|
||||
"Private key password successfully updated." : "Passwort des privaten Schlüssels erfolgreich aktualisiert",
|
||||
"File recovery settings updated" : "Einstellungen zur Wiederherstellung von Dateien wurden aktualisiert",
|
||||
"Could not update file recovery" : "Dateiwiederherstellung konnte nicht aktualisiert werden",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Verschlüsselung-App ist nicht initialisiert! Vielleicht wurde die Verschlüsselung-App in der aktuellen Sitzung reaktiviert. Bitte versuche Dich ab- und wieder anzumelden, um die Verschlüsselung-App zu initialisieren.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Dein privater Schlüssel ist ungültig. Möglicher Weise wurde außerhalb von %s Dein Passwort geändert (z.B. in Deinem gemeinsamen Verzeichnis). Du kannst das Passwort Deines privaten Schlüssels in den persönlichen Einstellungen aktualisieren, um wieder an Deine Dateien zu gelangen.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Die Datei kann nicht entschlüsselt werden, da die Datei möglicherweise eine geteilte Datei ist. Bitte frage den Dateibesitzer, ob er die Datei nochmals mit Dir teilt.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Unbekannter Fehler. Bitte prüfe Deine Systemeinstellungen oder kontaktiere Deinen Administrator",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Initialverschlüsselung gestartet… Dies kann einige Zeit dauern. Bitte warten.",
|
||||
"Initial encryption running... Please try again later." : "Anfangsverschlüsselung läuft … Bitte versuche es später wieder.",
|
||||
"Missing requirements." : "Fehlende Vorraussetzungen",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Bitte stelle sicher, dass OpenSSL zusammen mit der PHP-Erweiterung aktiviert und richtig konfiguriert ist. Die Verschlüsselungsanwendung ist vorerst deaktiviert.",
|
||||
"Following users are not set up for encryption:" : "Für folgende Nutzer ist keine Verschlüsselung eingerichtet:",
|
||||
"Go directly to your %spersonal settings%s." : "Direkt zu Deinen %spersonal settings%s wechseln.",
|
||||
"Server-side Encryption" : "Serverseitige Verschlüsselung",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Die Verschlüsselung-App ist aktiviert, aber Deine Schlüssel sind nicht initialisiert. Bitte melde Dich nochmals ab und wieder an.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Wiederherstellungsschlüssel aktivieren (ermöglicht das Wiederherstellen von Dateien, falls das Passwort vergessen wurde):",
|
||||
"Recovery key password" : "Wiederherstellungsschlüssel-Passwort",
|
||||
"Repeat Recovery key password" : "Schlüssel-Passwort zur Wiederherstellung wiederholen",
|
||||
"Enabled" : "Aktiviert",
|
||||
"Disabled" : "Deaktiviert",
|
||||
"Change recovery key password:" : "Wiederherstellungsschlüssel-Passwort ändern:",
|
||||
"Old Recovery key password" : "Altes Wiederherstellungsschlüssel-Passwort",
|
||||
"New Recovery key password" : "Neues Wiederherstellungsschlüssel-Passwort",
|
||||
"Repeat New Recovery key password" : "Neues Schlüssel-Passwort zur Wiederherstellung wiederholen",
|
||||
"Change Password" : "Passwort ändern",
|
||||
"Your private key password no longer matches your log-in password." : "Dein Passwort für Deinen privaten Schlüssel stimmt nicht mehr mit Deinem Loginpasswort überein.",
|
||||
"Set your old private key password to your current log-in password:" : "Dein altes Passwort für Deinen privaten Schlüssel auf Dein aktuelles Anmeldepasswort einstellen:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Wenn Du Dein altes Passwort vergessen hast, könntest Du Deinen Administrator bitten, Deine Daten wiederherzustellen.",
|
||||
"Old log-in password" : "Altes Login Passwort",
|
||||
"Current log-in password" : "Aktuelles Passwort",
|
||||
"Update Private Key Password" : "Passwort für den privaten Schlüssel aktualisieren",
|
||||
"Enable password recovery:" : "Passwortwiederherstellung aktivieren:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Wenn Du diese Option aktivierst, kannst Du Deine verschlüsselten Dateien wiederherstellen, falls Du Dein Passwort vergisst"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,51 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Unbekannter Fehler",
|
||||
"Missing recovery key password" : "Schlüsselpasswort zur Wiederherstellung fehlt",
|
||||
"Please repeat the recovery key password" : "Schlüsselpasswort zur Wiederherstellung bitte wiederholen",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Das wiederholte Schlüsselpasswort zur Wiederherstellung stimmt nicht mit dem geforderten Schlüsselpasswort zur Wiederherstellung überein",
|
||||
"Recovery key successfully enabled" : "Wiederherstellungsschlüssel wurde erfolgreich aktiviert",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Überprüfe Dein Wiederherstellungspasswort!",
|
||||
"Recovery key successfully disabled" : "Wiederherstellungsschlüssel deaktiviert.",
|
||||
"Please provide the old recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben",
|
||||
"Please provide a new recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben",
|
||||
"Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen",
|
||||
"Password successfully changed." : "Dein Passwort wurde geändert.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort falsch.",
|
||||
"Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.",
|
||||
"The old password was not correct, please try again." : "Das alte Passwort war nicht korrekt, bitte versuche es noch einmal.",
|
||||
"The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuche es noch einmal.",
|
||||
"Private key password successfully updated." : "Passwort des privaten Schlüssels erfolgreich aktualisiert",
|
||||
"File recovery settings updated" : "Einstellungen zur Wiederherstellung von Dateien wurden aktualisiert",
|
||||
"Could not update file recovery" : "Dateiwiederherstellung konnte nicht aktualisiert werden",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Verschlüsselung-App ist nicht initialisiert! Vielleicht wurde die Verschlüsselung-App in der aktuellen Sitzung reaktiviert. Bitte versuche Dich ab- und wieder anzumelden, um die Verschlüsselung-App zu initialisieren.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Dein privater Schlüssel ist ungültig. Möglicher Weise wurde außerhalb von %s Dein Passwort geändert (z.B. in Deinem gemeinsamen Verzeichnis). Du kannst das Passwort Deines privaten Schlüssels in den persönlichen Einstellungen aktualisieren, um wieder an Deine Dateien zu gelangen.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Die Datei kann nicht entschlüsselt werden, da die Datei möglicherweise eine geteilte Datei ist. Bitte frage den Dateibesitzer, ob er die Datei nochmals mit Dir teilt.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Unbekannter Fehler. Bitte prüfe Deine Systemeinstellungen oder kontaktiere Deinen Administrator",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Initialverschlüsselung gestartet… Dies kann einige Zeit dauern. Bitte warten.",
|
||||
"Initial encryption running... Please try again later." : "Anfangsverschlüsselung läuft … Bitte versuche es später wieder.",
|
||||
"Missing requirements." : "Fehlende Vorraussetzungen",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Bitte stelle sicher, dass OpenSSL zusammen mit der PHP-Erweiterung aktiviert und richtig konfiguriert ist. Die Verschlüsselungsanwendung ist vorerst deaktiviert.",
|
||||
"Following users are not set up for encryption:" : "Für folgende Nutzer ist keine Verschlüsselung eingerichtet:",
|
||||
"Go directly to your %spersonal settings%s." : "Direkt zu Deinen %spersonal settings%s wechseln.",
|
||||
"Server-side Encryption" : "Serverseitige Verschlüsselung",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Die Verschlüsselung-App ist aktiviert, aber Deine Schlüssel sind nicht initialisiert. Bitte melde Dich nochmals ab und wieder an.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Wiederherstellungsschlüssel aktivieren (ermöglicht das Wiederherstellen von Dateien, falls das Passwort vergessen wurde):",
|
||||
"Recovery key password" : "Wiederherstellungsschlüssel-Passwort",
|
||||
"Repeat Recovery key password" : "Schlüssel-Passwort zur Wiederherstellung wiederholen",
|
||||
"Enabled" : "Aktiviert",
|
||||
"Disabled" : "Deaktiviert",
|
||||
"Change recovery key password:" : "Wiederherstellungsschlüssel-Passwort ändern:",
|
||||
"Old Recovery key password" : "Altes Wiederherstellungsschlüssel-Passwort",
|
||||
"New Recovery key password" : "Neues Wiederherstellungsschlüssel-Passwort",
|
||||
"Repeat New Recovery key password" : "Neues Schlüssel-Passwort zur Wiederherstellung wiederholen",
|
||||
"Change Password" : "Passwort ändern",
|
||||
"Your private key password no longer matches your log-in password." : "Dein Passwort für Deinen privaten Schlüssel stimmt nicht mehr mit Deinem Loginpasswort überein.",
|
||||
"Set your old private key password to your current log-in password:" : "Dein altes Passwort für Deinen privaten Schlüssel auf Dein aktuelles Anmeldepasswort einstellen:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Wenn Du Dein altes Passwort vergessen hast, könntest Du Deinen Administrator bitten, Deine Daten wiederherzustellen.",
|
||||
"Old log-in password" : "Altes Login Passwort",
|
||||
"Current log-in password" : "Aktuelles Passwort",
|
||||
"Update Private Key Password" : "Passwort für den privaten Schlüssel aktualisieren",
|
||||
"Enable password recovery:" : "Passwortwiederherstellung aktivieren:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Wenn Du diese Option aktivierst, kannst Du Deine verschlüsselten Dateien wiederherstellen, falls Du Dein Passwort vergisst"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Unbekannter Fehler",
|
||||
"Recovery key successfully enabled" : "Der Wiederherstellungsschlüssel wurde erfolgreich aktiviert.",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Bitte überprüfen Sie das Passwort für den Wiederherstellungsschlüssel!",
|
||||
"Recovery key successfully disabled" : "Der Wiederherstellungsschlüssel wurde erfolgreich deaktiviert.",
|
||||
"Password successfully changed." : "Das Passwort wurde erfolgreich geändert.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort nicht richtig.",
|
||||
"Private key password successfully updated." : "Das Passwort des privaten Schlüssels wurde erfolgreich aktualisiert.",
|
||||
"Could not update the private key password. Maybe the old password was not correct." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden. Vielleicht war das alte Passwort nicht richtig.",
|
||||
"File recovery settings updated" : "Die Einstellungen für die Dateiwiederherstellung wurden aktualisiert.",
|
||||
"Could not update file recovery" : "Die Dateiwiederherstellung konnte nicht aktualisiert werden.",
|
||||
"Missing requirements." : "Fehlende Voraussetzungen",
|
||||
"Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Bitte stellen Sie sicher, dass PHP 5.3.3 oder neuer installiert und das OpenSSL zusammen mit der PHP-Erweiterung aktiviert und richtig konfiguriert ist. Zur Zeit ist die Verschlüsselungs-App deaktiviert.",
|
||||
"Following users are not set up for encryption:" : "Für folgende Nutzer ist keine Verschlüsselung eingerichtet:",
|
||||
"Encryption" : "Verschlüsselung",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Aktivieren Sie den Wiederherstellungsschlüssel (erlaubt die Wiederherstellung des Zugangs zu den Benutzerdateien, wenn das Passwort verloren geht).",
|
||||
"Recovery key password" : "Wiederherstellungschlüsselpasswort",
|
||||
"Enabled" : "Aktiviert",
|
||||
"Disabled" : "Deaktiviert",
|
||||
"Change recovery key password:" : "Wiederherstellungsschlüsselpasswort ändern",
|
||||
"Old Recovery key password" : "Altes Wiederherstellungsschlüsselpasswort",
|
||||
"New Recovery key password" : "Neues Wiederherstellungsschlüsselpasswort ",
|
||||
"Change Password" : "Passwort ändern",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Falls Sie sich nicht an Ihr altes Passwort erinnern können, fragen Sie bitte Ihren Administrator, um Ihre Dateien wiederherzustellen.",
|
||||
"Old log-in password" : "Altes Login-Passwort",
|
||||
"Current log-in password" : "Momentanes Login-Passwort",
|
||||
"Update Private Key Password" : "Das Passwort des privaten Schlüssels aktualisieren",
|
||||
"Enable password recovery:" : "Die Passwort-Wiederherstellung aktivieren:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option haben Sie die Möglichkeit, wieder auf Ihre verschlüsselten Dateien zugreifen zu können, wenn Sie Ihr Passwort verloren haben."
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,31 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Unbekannter Fehler",
|
||||
"Recovery key successfully enabled" : "Der Wiederherstellungsschlüssel wurde erfolgreich aktiviert.",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Bitte überprüfen Sie das Passwort für den Wiederherstellungsschlüssel!",
|
||||
"Recovery key successfully disabled" : "Der Wiederherstellungsschlüssel wurde erfolgreich deaktiviert.",
|
||||
"Password successfully changed." : "Das Passwort wurde erfolgreich geändert.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort nicht richtig.",
|
||||
"Private key password successfully updated." : "Das Passwort des privaten Schlüssels wurde erfolgreich aktualisiert.",
|
||||
"Could not update the private key password. Maybe the old password was not correct." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden. Vielleicht war das alte Passwort nicht richtig.",
|
||||
"File recovery settings updated" : "Die Einstellungen für die Dateiwiederherstellung wurden aktualisiert.",
|
||||
"Could not update file recovery" : "Die Dateiwiederherstellung konnte nicht aktualisiert werden.",
|
||||
"Missing requirements." : "Fehlende Voraussetzungen",
|
||||
"Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Bitte stellen Sie sicher, dass PHP 5.3.3 oder neuer installiert und das OpenSSL zusammen mit der PHP-Erweiterung aktiviert und richtig konfiguriert ist. Zur Zeit ist die Verschlüsselungs-App deaktiviert.",
|
||||
"Following users are not set up for encryption:" : "Für folgende Nutzer ist keine Verschlüsselung eingerichtet:",
|
||||
"Encryption" : "Verschlüsselung",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Aktivieren Sie den Wiederherstellungsschlüssel (erlaubt die Wiederherstellung des Zugangs zu den Benutzerdateien, wenn das Passwort verloren geht).",
|
||||
"Recovery key password" : "Wiederherstellungschlüsselpasswort",
|
||||
"Enabled" : "Aktiviert",
|
||||
"Disabled" : "Deaktiviert",
|
||||
"Change recovery key password:" : "Wiederherstellungsschlüsselpasswort ändern",
|
||||
"Old Recovery key password" : "Altes Wiederherstellungsschlüsselpasswort",
|
||||
"New Recovery key password" : "Neues Wiederherstellungsschlüsselpasswort ",
|
||||
"Change Password" : "Passwort ändern",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Falls Sie sich nicht an Ihr altes Passwort erinnern können, fragen Sie bitte Ihren Administrator, um Ihre Dateien wiederherzustellen.",
|
||||
"Old log-in password" : "Altes Login-Passwort",
|
||||
"Current log-in password" : "Momentanes Login-Passwort",
|
||||
"Update Private Key Password" : "Das Passwort des privaten Schlüssels aktualisieren",
|
||||
"Enable password recovery:" : "Die Passwort-Wiederherstellung aktivieren:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option haben Sie die Möglichkeit, wieder auf Ihre verschlüsselten Dateien zugreifen zu können, wenn Sie Ihr Passwort verloren haben."
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Unbekannter Fehler",
|
||||
"Missing recovery key password" : "Schlüsselpasswort zur Wiederherstellung fehlt",
|
||||
"Please repeat the recovery key password" : "Schlüsselpasswort zur Wiederherstellung bitte wiederholen",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Das wiederholte Schlüsselpasswort zur Wiederherstellung stimmt nicht mit dem geforderten Schlüsselpasswort zur Wiederherstellung überein",
|
||||
"Recovery key successfully enabled" : "Der Wiederherstellungsschlüssel wurde erfolgreich aktiviert.",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Bitte überprüfen Sie das Passwort für den Wiederherstellungsschlüssel!",
|
||||
"Recovery key successfully disabled" : "Der Wiederherstellungsschlüssel wurde erfolgreich deaktiviert.",
|
||||
"Please provide the old recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben",
|
||||
"Please provide a new recovery password" : "Bitte das neue Passwort zur Wiederherstellung eingeben",
|
||||
"Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen",
|
||||
"Password successfully changed." : "Das Passwort wurde erfolgreich geändert.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort nicht richtig.",
|
||||
"Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.",
|
||||
"The old password was not correct, please try again." : "Das alte Passwort war nicht korrekt, bitte versuchen Sie es noch einmal.",
|
||||
"The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuchen Sie es noch einmal.",
|
||||
"Private key password successfully updated." : "Das Passwort des privaten Schlüssels wurde erfolgreich aktualisiert.",
|
||||
"File recovery settings updated" : "Die Einstellungen für die Dateiwiederherstellung wurden aktualisiert.",
|
||||
"Could not update file recovery" : "Die Dateiwiederherstellung konnte nicht aktualisiert werden.",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Verschlüsselung-App ist nicht initialisiert! Vielleicht wurde die Verschlüsselung-App in der aktuellen Sitzung reaktiviert. Bitte versuchen Sie sich ab- und wieder anzumelden, um die Verschlüsselung-App zu initialisieren.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Ihr privater Schlüssel ist ungültig. Möglicher Weise wurde außerhalb von %s Ihr Passwort geändert (z.B. in Ihrem gemeinsamen Verzeichnis). Sie können das Passwort Ihres privaten Schlüssels in den persönlichen Einstellungen aktualisieren, um wieder an Ihre Dateien zu gelangen.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Die Datei kann nicht entschlüsselt werden, da die Datei möglicherweise eine geteilte Datei ist. Bitte fragen Sie den Dateibesitzer, dass er die Datei nochmals mit Ihnen teilt.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Unbekannter Fehler. Bitte prüfen Sie die Systemeinstellungen oder kontaktieren Sie Ihren Administrator",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Anfangsverschlüsselung gestartet … Dieses kann einige Zeit dauern. Bitte warten.",
|
||||
"Initial encryption running... Please try again later." : "Anfangsverschlüsselung läuft … Bitte versuchen Sie es später wieder.",
|
||||
"Missing requirements." : "Fehlende Voraussetzungen",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Bitte stellen Sie sicher, dass OpenSSL zusammen mit der PHP-Erweiterung aktiviert und richtig konfiguriert ist. Die Verschlüsselungsanwendung ist vorerst deaktiviert.",
|
||||
"Following users are not set up for encryption:" : "Für folgende Benutzer ist keine Verschlüsselung eingerichtet:",
|
||||
"Go directly to your %spersonal settings%s." : "Wechseln Sie direkt zu Ihren %spersonal settings%s.",
|
||||
"Server-side Encryption" : "Serverseitige Verschlüsselung",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselung-App ist aktiviert, aber Ihre Schlüssel sind nicht initialisiert. Bitte nochmals ab- und wieder anmelden.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Aktivieren Sie den Wiederherstellungsschlüssel (erlaubt die Wiederherstellung des Zugangs zu den Benutzerdateien, wenn das Passwort verloren geht):",
|
||||
"Recovery key password" : "Wiederherstellungschlüsselpasswort",
|
||||
"Repeat Recovery key password" : "Schlüsselpasswort zur Wiederherstellung wiederholen",
|
||||
"Enabled" : "Aktiviert",
|
||||
"Disabled" : "Deaktiviert",
|
||||
"Change recovery key password:" : "Wiederherstellungsschlüsselpasswort ändern",
|
||||
"Old Recovery key password" : "Altes Wiederherstellungsschlüsselpasswort",
|
||||
"New Recovery key password" : "Neues Wiederherstellungsschlüsselpasswort ",
|
||||
"Repeat New Recovery key password" : "Neues Schlüsselpasswort zur Wiederherstellung wiederholen",
|
||||
"Change Password" : "Passwort ändern",
|
||||
"Your private key password no longer matches your log-in password." : "Das Privatschlüsselpasswort stimmt nicht länger mit dem Anmeldepasswort überein.",
|
||||
"Set your old private key password to your current log-in password:" : "Ihr altes Privatschlüsselpasswort auf Ihr aktuelles Anmeldepasswort stellen:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Falls Sie sich nicht an Ihr altes Passwort erinnern können, fragen Sie bitte Ihren Administrator, um Ihre Dateien wiederherzustellen.",
|
||||
"Old log-in password" : "Altes Anmeldepasswort",
|
||||
"Current log-in password" : "Aktuelles Anmeldepasswort",
|
||||
"Update Private Key Password" : "Das Passwort des privaten Schlüssels aktualisieren",
|
||||
"Enable password recovery:" : "Die Passwort-Wiederherstellung aktivieren:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option haben Sie die Möglichkeit, wieder auf Ihre verschlüsselten Dateien zugreifen zu können, wenn Sie Ihr Passwort verloren haben."
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,51 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Unbekannter Fehler",
|
||||
"Missing recovery key password" : "Schlüsselpasswort zur Wiederherstellung fehlt",
|
||||
"Please repeat the recovery key password" : "Schlüsselpasswort zur Wiederherstellung bitte wiederholen",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Das wiederholte Schlüsselpasswort zur Wiederherstellung stimmt nicht mit dem geforderten Schlüsselpasswort zur Wiederherstellung überein",
|
||||
"Recovery key successfully enabled" : "Der Wiederherstellungsschlüssel wurde erfolgreich aktiviert.",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Bitte überprüfen Sie das Passwort für den Wiederherstellungsschlüssel!",
|
||||
"Recovery key successfully disabled" : "Der Wiederherstellungsschlüssel wurde erfolgreich deaktiviert.",
|
||||
"Please provide the old recovery password" : "Bitte das alte Passwort zur Wiederherstellung eingeben",
|
||||
"Please provide a new recovery password" : "Bitte das neue Passwort zur Wiederherstellung eingeben",
|
||||
"Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen",
|
||||
"Password successfully changed." : "Das Passwort wurde erfolgreich geändert.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort nicht richtig.",
|
||||
"Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.",
|
||||
"The old password was not correct, please try again." : "Das alte Passwort war nicht korrekt, bitte versuchen Sie es noch einmal.",
|
||||
"The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuchen Sie es noch einmal.",
|
||||
"Private key password successfully updated." : "Das Passwort des privaten Schlüssels wurde erfolgreich aktualisiert.",
|
||||
"File recovery settings updated" : "Die Einstellungen für die Dateiwiederherstellung wurden aktualisiert.",
|
||||
"Could not update file recovery" : "Die Dateiwiederherstellung konnte nicht aktualisiert werden.",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Verschlüsselung-App ist nicht initialisiert! Vielleicht wurde die Verschlüsselung-App in der aktuellen Sitzung reaktiviert. Bitte versuchen Sie sich ab- und wieder anzumelden, um die Verschlüsselung-App zu initialisieren.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Ihr privater Schlüssel ist ungültig. Möglicher Weise wurde außerhalb von %s Ihr Passwort geändert (z.B. in Ihrem gemeinsamen Verzeichnis). Sie können das Passwort Ihres privaten Schlüssels in den persönlichen Einstellungen aktualisieren, um wieder an Ihre Dateien zu gelangen.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Die Datei kann nicht entschlüsselt werden, da die Datei möglicherweise eine geteilte Datei ist. Bitte fragen Sie den Dateibesitzer, dass er die Datei nochmals mit Ihnen teilt.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Unbekannter Fehler. Bitte prüfen Sie die Systemeinstellungen oder kontaktieren Sie Ihren Administrator",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Anfangsverschlüsselung gestartet … Dieses kann einige Zeit dauern. Bitte warten.",
|
||||
"Initial encryption running... Please try again later." : "Anfangsverschlüsselung läuft … Bitte versuchen Sie es später wieder.",
|
||||
"Missing requirements." : "Fehlende Voraussetzungen",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Bitte stellen Sie sicher, dass OpenSSL zusammen mit der PHP-Erweiterung aktiviert und richtig konfiguriert ist. Die Verschlüsselungsanwendung ist vorerst deaktiviert.",
|
||||
"Following users are not set up for encryption:" : "Für folgende Benutzer ist keine Verschlüsselung eingerichtet:",
|
||||
"Go directly to your %spersonal settings%s." : "Wechseln Sie direkt zu Ihren %spersonal settings%s.",
|
||||
"Server-side Encryption" : "Serverseitige Verschlüsselung",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselung-App ist aktiviert, aber Ihre Schlüssel sind nicht initialisiert. Bitte nochmals ab- und wieder anmelden.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Aktivieren Sie den Wiederherstellungsschlüssel (erlaubt die Wiederherstellung des Zugangs zu den Benutzerdateien, wenn das Passwort verloren geht):",
|
||||
"Recovery key password" : "Wiederherstellungschlüsselpasswort",
|
||||
"Repeat Recovery key password" : "Schlüsselpasswort zur Wiederherstellung wiederholen",
|
||||
"Enabled" : "Aktiviert",
|
||||
"Disabled" : "Deaktiviert",
|
||||
"Change recovery key password:" : "Wiederherstellungsschlüsselpasswort ändern",
|
||||
"Old Recovery key password" : "Altes Wiederherstellungsschlüsselpasswort",
|
||||
"New Recovery key password" : "Neues Wiederherstellungsschlüsselpasswort ",
|
||||
"Repeat New Recovery key password" : "Neues Schlüsselpasswort zur Wiederherstellung wiederholen",
|
||||
"Change Password" : "Passwort ändern",
|
||||
"Your private key password no longer matches your log-in password." : "Das Privatschlüsselpasswort stimmt nicht länger mit dem Anmeldepasswort überein.",
|
||||
"Set your old private key password to your current log-in password:" : "Ihr altes Privatschlüsselpasswort auf Ihr aktuelles Anmeldepasswort stellen:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Falls Sie sich nicht an Ihr altes Passwort erinnern können, fragen Sie bitte Ihren Administrator, um Ihre Dateien wiederherzustellen.",
|
||||
"Old log-in password" : "Altes Anmeldepasswort",
|
||||
"Current log-in password" : "Aktuelles Anmeldepasswort",
|
||||
"Update Private Key Password" : "Das Passwort des privaten Schlüssels aktualisieren",
|
||||
"Enable password recovery:" : "Die Passwort-Wiederherstellung aktivieren:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option haben Sie die Möglichkeit, wieder auf Ihre verschlüsselten Dateien zugreifen zu können, wenn Sie Ihr Passwort verloren haben."
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Άγνωστο σφάλμα",
|
||||
"Missing recovery key password" : "Λείπει το κλειδί επαναφοράς κωδικού",
|
||||
"Please repeat the recovery key password" : "Παρακαλώ επαναλάβετε το κλειδί επαναφοράς κωδικού",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Η επανάληψη του κλειδιού επαναφοράς κωδικού δεν ταιριάζει με το δοσμένο κλειδί επαναφοράς κωδικού",
|
||||
"Recovery key successfully enabled" : "Επιτυχής ενεργοποίηση κλειδιού ανάκτησης",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Αποτυχία απενεργοποίησης κλειδιού ανάκτησης. Παρακαλώ ελέγξτε τον κωδικό του κλειδιού ανάκτησής σας!",
|
||||
"Recovery key successfully disabled" : "Επιτυχής απενεργοποίηση κλειδιού ανάκτησης",
|
||||
"Please provide the old recovery password" : "Παρακαλώ παρέχετε τον παλιό κωδικό επαναφοράς",
|
||||
"Please provide a new recovery password" : "Παρακαλώ παρέχετε ένα νέο κωδικό επαναφοράς",
|
||||
"Please repeat the new recovery password" : "Παρακαλώ επαναλάβετε το νέο κωδικό επαναφοράς",
|
||||
"Password successfully changed." : "Ο κωδικός αλλάχτηκε επιτυχώς.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Αποτυχία αλλαγής κωδικού ίσως ο παλιός κωδικός να μην ήταν σωστός.",
|
||||
"Could not update the private key password." : "Αποτυχία ενημέρωσης του προσωπικού κλειδιού πρόσβασης",
|
||||
"The old password was not correct, please try again." : "Το παλαιό συνθηματικό δεν είναι σωστό, παρακαλώ δοκιμάστε ξανά.",
|
||||
"The current log-in password was not correct, please try again." : "Το τρέχον συνθηματικό δεν είναι σωστό, παρακαλώ δοκιμάστε ξανά.",
|
||||
"Private key password successfully updated." : "Το Προσωπικό κλειδί πρόσβασης ενημερώθηκε επιτυχώς",
|
||||
"File recovery settings updated" : "Οι ρυθμίσεις επαναφοράς αρχείων ανανεώθηκαν",
|
||||
"Could not update file recovery" : "Αποτυχία ενημέρωσης ανάκτησης αρχείων",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Η εφαρμογή κρυπτογράφησης δεν έχει εκκινήσει! Ίσως η εφαρμογή κρυπτογράφησης επανενεργοποιήθηκε κατά τη διάρκεια της τρέχουσας σύνδεσής σας. Παρακαλώ προσπαθήστε να αποσυνδεθείτε και να ξανασυνδεθείτε για να εκκινήσετε την εφαρμογή κρυπτογράφησης.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Το προσωπικό σας κλειδί δεν είναι έγκυρο! Πιθανόν ο κωδικός σας να άλλαξε έξω από το %s (π.χ. τη λίστα διευθύνσεων της εταιρείας σας). Μπορείτε να ενημερώσετε το προσωπικό σας κλειδί επαναφοράς κωδικού στις προσωπικές σας ρυθμίσεις για να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Δεν ήταν δυνατό να αποκρυπτογραφηθεί αυτό το αρχείο, πιθανόν πρόκειται για κοινόχρηστο αρχείο. Παρακαλώ ζητήστε από τον ιδιοκτήτη του αρχείου να το ξαναμοιραστεί μαζί σας.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Άγνωστο σφάλμα. Παρακαλώ ελέγξτε τις ρυθμίσεις του συστήματό σας ή επικοινωνήστε με τον διαχειριστή συστημάτων σας",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Η αρχική κρυπτογράφηση άρχισε... Αυτό μπορεί να πάρει κάποια ώρα. Παρακαλώ περιμένετε.",
|
||||
"Initial encryption running... Please try again later." : "Εκτέλεση αρχικής κρυπτογράφησης... Παρακαλώ προσπαθήστε αργότερα.",
|
||||
"Missing requirements." : "Προαπαιτούμενα που απουσιάζουν.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Παρακαλώ επιβεβαιώστε ότι η OpenSSL μαζί με την επέκταση PHP έχουν ενεργοποιηθεί και ρυθμιστεί σωστά. Προς το παρόν, η εφαρμογή κρυπτογράφησης είναι απενεργοποιημένη.",
|
||||
"Following users are not set up for encryption:" : "Οι κάτωθι χρήστες δεν έχουν ρυθμιστεί για κρυπογράφηση:",
|
||||
"Go directly to your %spersonal settings%s." : "Πηγαίνετε κατ'ευθείαν στις %sπροσωπικές ρυθμίσεις%s σας.",
|
||||
"Server-side Encryption" : "Κρυπτογράφηση από τον Διακομιστή",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν καταγραφεί, παρακαλώ αποσυνδεθείτε και επανασυνδεθείτε.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Ενεργοποίηση κλειδιού ανάκτησης (επιτρέψτε την ανάκτηση αρχείων χρηστών σε περίπτωση απώλειας κωδικού):",
|
||||
"Recovery key password" : "Επαναφορά κωδικού κλειδιού",
|
||||
"Repeat Recovery key password" : "Επαναλάβετε το κλειδί επαναφοράς κωδικού",
|
||||
"Enabled" : "Ενεργοποιημένο",
|
||||
"Disabled" : "Απενεργοποιημένο",
|
||||
"Change recovery key password:" : "Αλλαγή κλειδιού επαναφοράς κωδικού:",
|
||||
"Old Recovery key password" : "Παλιό κλειδί επαναφοράς κωδικού",
|
||||
"New Recovery key password" : "Νέο κλειδί επαναφοράς κωδικού",
|
||||
"Repeat New Recovery key password" : "Επαναλάβετε νέο κλειδί επαναφοράς κωδικού",
|
||||
"Change Password" : "Αλλαγή Κωδικού Πρόσβασης",
|
||||
"Your private key password no longer matches your log-in password." : "Ο κωδικός του ιδιωτικού κλειδιού σας δεν ταιριάζει πλέον με τον κωδικό σύνδεσής σας.",
|
||||
"Set your old private key password to your current log-in password:" : "Ορίστε τον παλιό σας κωδικό ιδιωτικού κλειδιού στον τρέχοντα κωδικό σύνδεσης.",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Εάν δεν θυμάστε τον παλιό σας κωδικό μπορείτε να ζητήσετε από τον διαχειριστή σας να επανακτήσει τα αρχεία σας.",
|
||||
"Old log-in password" : "Παλαιό συνθηματικό εισόδου",
|
||||
"Current log-in password" : "Τρέχον συνθηματικό πρόσβασης",
|
||||
"Update Private Key Password" : "Ενημέρωση Προσωπικού Κλειδού Πρόσβασης",
|
||||
"Enable password recovery:" : "Ενεργοποιήστε την ανάκτηση κωδικού πρόσβασης",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Η ενεργοποίηση αυτής της επιλογής θα σας επιτρέψει να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία σε περίπτωση απώλειας του κωδικού σας"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,51 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Άγνωστο σφάλμα",
|
||||
"Missing recovery key password" : "Λείπει το κλειδί επαναφοράς κωδικού",
|
||||
"Please repeat the recovery key password" : "Παρακαλώ επαναλάβετε το κλειδί επαναφοράς κωδικού",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Η επανάληψη του κλειδιού επαναφοράς κωδικού δεν ταιριάζει με το δοσμένο κλειδί επαναφοράς κωδικού",
|
||||
"Recovery key successfully enabled" : "Επιτυχής ενεργοποίηση κλειδιού ανάκτησης",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Αποτυχία απενεργοποίησης κλειδιού ανάκτησης. Παρακαλώ ελέγξτε τον κωδικό του κλειδιού ανάκτησής σας!",
|
||||
"Recovery key successfully disabled" : "Επιτυχής απενεργοποίηση κλειδιού ανάκτησης",
|
||||
"Please provide the old recovery password" : "Παρακαλώ παρέχετε τον παλιό κωδικό επαναφοράς",
|
||||
"Please provide a new recovery password" : "Παρακαλώ παρέχετε ένα νέο κωδικό επαναφοράς",
|
||||
"Please repeat the new recovery password" : "Παρακαλώ επαναλάβετε το νέο κωδικό επαναφοράς",
|
||||
"Password successfully changed." : "Ο κωδικός αλλάχτηκε επιτυχώς.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Αποτυχία αλλαγής κωδικού ίσως ο παλιός κωδικός να μην ήταν σωστός.",
|
||||
"Could not update the private key password." : "Αποτυχία ενημέρωσης του προσωπικού κλειδιού πρόσβασης",
|
||||
"The old password was not correct, please try again." : "Το παλαιό συνθηματικό δεν είναι σωστό, παρακαλώ δοκιμάστε ξανά.",
|
||||
"The current log-in password was not correct, please try again." : "Το τρέχον συνθηματικό δεν είναι σωστό, παρακαλώ δοκιμάστε ξανά.",
|
||||
"Private key password successfully updated." : "Το Προσωπικό κλειδί πρόσβασης ενημερώθηκε επιτυχώς",
|
||||
"File recovery settings updated" : "Οι ρυθμίσεις επαναφοράς αρχείων ανανεώθηκαν",
|
||||
"Could not update file recovery" : "Αποτυχία ενημέρωσης ανάκτησης αρχείων",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Η εφαρμογή κρυπτογράφησης δεν έχει εκκινήσει! Ίσως η εφαρμογή κρυπτογράφησης επανενεργοποιήθηκε κατά τη διάρκεια της τρέχουσας σύνδεσής σας. Παρακαλώ προσπαθήστε να αποσυνδεθείτε και να ξανασυνδεθείτε για να εκκινήσετε την εφαρμογή κρυπτογράφησης.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Το προσωπικό σας κλειδί δεν είναι έγκυρο! Πιθανόν ο κωδικός σας να άλλαξε έξω από το %s (π.χ. τη λίστα διευθύνσεων της εταιρείας σας). Μπορείτε να ενημερώσετε το προσωπικό σας κλειδί επαναφοράς κωδικού στις προσωπικές σας ρυθμίσεις για να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Δεν ήταν δυνατό να αποκρυπτογραφηθεί αυτό το αρχείο, πιθανόν πρόκειται για κοινόχρηστο αρχείο. Παρακαλώ ζητήστε από τον ιδιοκτήτη του αρχείου να το ξαναμοιραστεί μαζί σας.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Άγνωστο σφάλμα. Παρακαλώ ελέγξτε τις ρυθμίσεις του συστήματό σας ή επικοινωνήστε με τον διαχειριστή συστημάτων σας",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Η αρχική κρυπτογράφηση άρχισε... Αυτό μπορεί να πάρει κάποια ώρα. Παρακαλώ περιμένετε.",
|
||||
"Initial encryption running... Please try again later." : "Εκτέλεση αρχικής κρυπτογράφησης... Παρακαλώ προσπαθήστε αργότερα.",
|
||||
"Missing requirements." : "Προαπαιτούμενα που απουσιάζουν.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Παρακαλώ επιβεβαιώστε ότι η OpenSSL μαζί με την επέκταση PHP έχουν ενεργοποιηθεί και ρυθμιστεί σωστά. Προς το παρόν, η εφαρμογή κρυπτογράφησης είναι απενεργοποιημένη.",
|
||||
"Following users are not set up for encryption:" : "Οι κάτωθι χρήστες δεν έχουν ρυθμιστεί για κρυπογράφηση:",
|
||||
"Go directly to your %spersonal settings%s." : "Πηγαίνετε κατ'ευθείαν στις %sπροσωπικές ρυθμίσεις%s σας.",
|
||||
"Server-side Encryption" : "Κρυπτογράφηση από τον Διακομιστή",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν καταγραφεί, παρακαλώ αποσυνδεθείτε και επανασυνδεθείτε.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Ενεργοποίηση κλειδιού ανάκτησης (επιτρέψτε την ανάκτηση αρχείων χρηστών σε περίπτωση απώλειας κωδικού):",
|
||||
"Recovery key password" : "Επαναφορά κωδικού κλειδιού",
|
||||
"Repeat Recovery key password" : "Επαναλάβετε το κλειδί επαναφοράς κωδικού",
|
||||
"Enabled" : "Ενεργοποιημένο",
|
||||
"Disabled" : "Απενεργοποιημένο",
|
||||
"Change recovery key password:" : "Αλλαγή κλειδιού επαναφοράς κωδικού:",
|
||||
"Old Recovery key password" : "Παλιό κλειδί επαναφοράς κωδικού",
|
||||
"New Recovery key password" : "Νέο κλειδί επαναφοράς κωδικού",
|
||||
"Repeat New Recovery key password" : "Επαναλάβετε νέο κλειδί επαναφοράς κωδικού",
|
||||
"Change Password" : "Αλλαγή Κωδικού Πρόσβασης",
|
||||
"Your private key password no longer matches your log-in password." : "Ο κωδικός του ιδιωτικού κλειδιού σας δεν ταιριάζει πλέον με τον κωδικό σύνδεσής σας.",
|
||||
"Set your old private key password to your current log-in password:" : "Ορίστε τον παλιό σας κωδικό ιδιωτικού κλειδιού στον τρέχοντα κωδικό σύνδεσης.",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Εάν δεν θυμάστε τον παλιό σας κωδικό μπορείτε να ζητήσετε από τον διαχειριστή σας να επανακτήσει τα αρχεία σας.",
|
||||
"Old log-in password" : "Παλαιό συνθηματικό εισόδου",
|
||||
"Current log-in password" : "Τρέχον συνθηματικό πρόσβασης",
|
||||
"Update Private Key Password" : "Ενημέρωση Προσωπικού Κλειδού Πρόσβασης",
|
||||
"Enable password recovery:" : "Ενεργοποιήστε την ανάκτηση κωδικού πρόσβασης",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Η ενεργοποίηση αυτής της επιλογής θα σας επιτρέψει να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία σε περίπτωση απώλειας του κωδικού σας"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Unknown error",
|
||||
"Missing recovery key password" : "Missing recovery key password",
|
||||
"Please repeat the recovery key password" : "Please repeat the recovery key password",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Repeated recovery key password does not match the provided recovery key password",
|
||||
"Recovery key successfully enabled" : "Recovery key enabled successfully",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Could not disable recovery key. Please check your recovery key password!",
|
||||
"Recovery key successfully disabled" : "Recovery key disabled successfully",
|
||||
"Please provide the old recovery password" : "Please provide the old recovery password",
|
||||
"Please provide a new recovery password" : "Please provide a new recovery password",
|
||||
"Please repeat the new recovery password" : "Please repeat the new recovery password",
|
||||
"Password successfully changed." : "Password changed successfully.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Could not change the password. Maybe the old password was incorrect.",
|
||||
"Could not update the private key password." : "Could not update the private key password.",
|
||||
"The old password was not correct, please try again." : "The old password was not correct, please try again.",
|
||||
"The current log-in password was not correct, please try again." : "The current log-in password was not correct, please try again.",
|
||||
"Private key password successfully updated." : "Private key password updated successfully.",
|
||||
"File recovery settings updated" : "File recovery settings updated",
|
||||
"Could not update file recovery" : "Could not update file recovery",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Encryption app not initialised! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialise the encryption app.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Cannot decrypt this file, which is probably a shared file. Please ask the file owner to reshare the file with you.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Unknown error. Please check your system settings or contact your administrator",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Initial encryption started... This can take some time. Please wait.",
|
||||
"Initial encryption running... Please try again later." : "Initial encryption running... Please try again later.",
|
||||
"Missing requirements." : "Missing requirements.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Please make sure that OpenSSL together with the PHP extension is enabled and properly configured. For now, the encryption app has been disabled.",
|
||||
"Following users are not set up for encryption:" : "Following users are not set up for encryption:",
|
||||
"Go directly to your %spersonal settings%s." : "Go directly to your %spersonal settings%s.",
|
||||
"Server-side Encryption" : "Server-side Encryption",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Encryption App is enabled but your keys are not initialised, please log-out and log-in again",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Enable recovery key (allow to recover users files in case of password loss):",
|
||||
"Recovery key password" : "Recovery key password",
|
||||
"Repeat Recovery key password" : "Repeat recovery key password",
|
||||
"Enabled" : "Enabled",
|
||||
"Disabled" : "Disabled",
|
||||
"Change recovery key password:" : "Change recovery key password:",
|
||||
"Old Recovery key password" : "Old recovery key password",
|
||||
"New Recovery key password" : "New recovery key password",
|
||||
"Repeat New Recovery key password" : "Repeat new recovery key password",
|
||||
"Change Password" : "Change Password",
|
||||
"Your private key password no longer matches your log-in password." : "Your private key password no longer matches your log-in password.",
|
||||
"Set your old private key password to your current log-in password:" : "Set your old private key password to your current log-in password:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : " If you don't remember your old password you can ask your administrator to recover your files.",
|
||||
"Old log-in password" : "Old login password",
|
||||
"Current log-in password" : "Current login password",
|
||||
"Update Private Key Password" : "Update Private Key Password",
|
||||
"Enable password recovery:" : "Enable password recovery:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,51 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Unknown error",
|
||||
"Missing recovery key password" : "Missing recovery key password",
|
||||
"Please repeat the recovery key password" : "Please repeat the recovery key password",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Repeated recovery key password does not match the provided recovery key password",
|
||||
"Recovery key successfully enabled" : "Recovery key enabled successfully",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Could not disable recovery key. Please check your recovery key password!",
|
||||
"Recovery key successfully disabled" : "Recovery key disabled successfully",
|
||||
"Please provide the old recovery password" : "Please provide the old recovery password",
|
||||
"Please provide a new recovery password" : "Please provide a new recovery password",
|
||||
"Please repeat the new recovery password" : "Please repeat the new recovery password",
|
||||
"Password successfully changed." : "Password changed successfully.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Could not change the password. Maybe the old password was incorrect.",
|
||||
"Could not update the private key password." : "Could not update the private key password.",
|
||||
"The old password was not correct, please try again." : "The old password was not correct, please try again.",
|
||||
"The current log-in password was not correct, please try again." : "The current log-in password was not correct, please try again.",
|
||||
"Private key password successfully updated." : "Private key password updated successfully.",
|
||||
"File recovery settings updated" : "File recovery settings updated",
|
||||
"Could not update file recovery" : "Could not update file recovery",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Encryption app not initialised! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialise the encryption app.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Cannot decrypt this file, which is probably a shared file. Please ask the file owner to reshare the file with you.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Unknown error. Please check your system settings or contact your administrator",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Initial encryption started... This can take some time. Please wait.",
|
||||
"Initial encryption running... Please try again later." : "Initial encryption running... Please try again later.",
|
||||
"Missing requirements." : "Missing requirements.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Please make sure that OpenSSL together with the PHP extension is enabled and properly configured. For now, the encryption app has been disabled.",
|
||||
"Following users are not set up for encryption:" : "Following users are not set up for encryption:",
|
||||
"Go directly to your %spersonal settings%s." : "Go directly to your %spersonal settings%s.",
|
||||
"Server-side Encryption" : "Server-side Encryption",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Encryption App is enabled but your keys are not initialised, please log-out and log-in again",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Enable recovery key (allow to recover users files in case of password loss):",
|
||||
"Recovery key password" : "Recovery key password",
|
||||
"Repeat Recovery key password" : "Repeat recovery key password",
|
||||
"Enabled" : "Enabled",
|
||||
"Disabled" : "Disabled",
|
||||
"Change recovery key password:" : "Change recovery key password:",
|
||||
"Old Recovery key password" : "Old recovery key password",
|
||||
"New Recovery key password" : "New recovery key password",
|
||||
"Repeat New Recovery key password" : "Repeat new recovery key password",
|
||||
"Change Password" : "Change Password",
|
||||
"Your private key password no longer matches your log-in password." : "Your private key password no longer matches your log-in password.",
|
||||
"Set your old private key password to your current log-in password:" : "Set your old private key password to your current log-in password:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : " If you don't remember your old password you can ask your administrator to recover your files.",
|
||||
"Old log-in password" : "Old login password",
|
||||
"Current log-in password" : "Current login password",
|
||||
"Update Private Key Password" : "Update Private Key Password",
|
||||
"Enable password recovery:" : "Enable password recovery:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Nekonata eraro",
|
||||
"Password successfully changed." : "La pasvorto sukcese ŝanĝiĝis.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Ne eblis ŝanĝi la pasvorton. Eble la malnova pasvorto malĝustis.",
|
||||
"Private key password successfully updated." : "La pasvorto de la malpublika klavo sukcese ĝisdatiĝis.",
|
||||
"Missing requirements." : "Mankas neproj.",
|
||||
"Enabled" : "Kapabligita",
|
||||
"Disabled" : "Malkapabligita",
|
||||
"Change Password" : "Ŝarĝi pasvorton",
|
||||
"Old log-in password" : "Malnova ensaluta pasvorto",
|
||||
"Current log-in password" : "Nuna ensaluta pasvorto",
|
||||
"Update Private Key Password" : "Ĝisdatigi la pasvorton de la malpublika klavo",
|
||||
"Enable password recovery:" : "Kapabligi restaŭron de pasvorto:"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,15 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Nekonata eraro",
|
||||
"Password successfully changed." : "La pasvorto sukcese ŝanĝiĝis.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Ne eblis ŝanĝi la pasvorton. Eble la malnova pasvorto malĝustis.",
|
||||
"Private key password successfully updated." : "La pasvorto de la malpublika klavo sukcese ĝisdatiĝis.",
|
||||
"Missing requirements." : "Mankas neproj.",
|
||||
"Enabled" : "Kapabligita",
|
||||
"Disabled" : "Malkapabligita",
|
||||
"Change Password" : "Ŝarĝi pasvorton",
|
||||
"Old log-in password" : "Malnova ensaluta pasvorto",
|
||||
"Current log-in password" : "Nuna ensaluta pasvorto",
|
||||
"Update Private Key Password" : "Ĝisdatigi la pasvorton de la malpublika klavo",
|
||||
"Enable password recovery:" : "Kapabligi restaŭron de pasvorto:"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Error desconocido",
|
||||
"Missing recovery key password" : "Falta contraseña de recuperación.",
|
||||
"Please repeat the recovery key password" : "Por favor, repita la contraseña de recuperación",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "La contraseña de recuperación reintroducida no coincide con la contraseña de recuperación proporcionada.",
|
||||
"Recovery key successfully enabled" : "Se ha habilitado la recuperación de archivos",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "No se pudo deshabilitar la clave de recuperación. Por favor, ¡compruebe su contraseña!",
|
||||
"Recovery key successfully disabled" : "Clave de recuperación deshabilitada",
|
||||
"Please provide the old recovery password" : "Por favor, ingrese su antigua contraseña de recuperación",
|
||||
"Please provide a new recovery password" : "Por favor, ingrese una nueva contraseña de recuperación",
|
||||
"Please repeat the new recovery password" : "Por favor, repita su nueva contraseña de recuperación",
|
||||
"Password successfully changed." : "Su contraseña ha sido cambiada",
|
||||
"Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Compruebe que la contraseña actual sea correcta.",
|
||||
"Could not update the private key password." : "No se pudo actualizar la contraseña de la clave privada.",
|
||||
"The old password was not correct, please try again." : "La antigua contraseña no es correcta, por favor intente de nuevo.",
|
||||
"The current log-in password was not correct, please try again." : "La contraseña de inicio de sesión actual no es correcto, por favor intente de nuevo.",
|
||||
"Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.",
|
||||
"File recovery settings updated" : "Opciones de recuperación de archivos actualizada",
|
||||
"Could not update file recovery" : "No se pudo actualizar la recuperación de archivos",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡La aplicación de cifrado no ha sido inicializada! Quizá se restableció durante su sesión. Por favor intente cerrar la sesión y volver a iniciarla para inicializar la aplicación de cifrado.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "¡Su clave privada no es válida! Tal vez su contraseña ha sido cambiada desde fuera de %s (Ej: su directorio corporativo). Puede actualizar la contraseña de su clave privada en sus opciones personales para recuperar el acceso a sus archivos.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No fue posible descifrar este archivo, probablemente se trate de un archivo compartido. Solicite al propietario del mismo que vuelva a compartirlo con usted.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Error desconocido. Revise la configuración de su sistema o contacte con su administrador",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Ha comenzado el cifrado inicial... Esto puede tardar un rato. Por favor, espere.",
|
||||
"Initial encryption running... Please try again later." : "Cifrado inicial en curso... Inténtelo más tarde.",
|
||||
"Missing requirements." : "Requisitos incompletos.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Asegúrese de que OpenSSL y la extensión de PHP estén habilitados y configurados correctamente. Por el momento, la aplicación de cifrado ha sido deshabilitada.",
|
||||
"Following users are not set up for encryption:" : "Los siguientes usuarios no han sido configurados para el cifrado:",
|
||||
"Go directly to your %spersonal settings%s." : "Ir directamente a %sOpciones%s.",
|
||||
"Server-side Encryption" : "Cifrado en el servidor",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La app de cifrado está habilitada pero sus claves no se han inicializado, por favor, cierre la sesión y vuelva a iniciarla de nuevo.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar la clave de recuperación (permite recuperar los ficheros del usuario en caso de pérdida de la contraseña);",
|
||||
"Recovery key password" : "Contraseña de clave de recuperación",
|
||||
"Repeat Recovery key password" : "Repite la contraseña de clave de recuperación",
|
||||
"Enabled" : "Habilitar",
|
||||
"Disabled" : "Deshabilitado",
|
||||
"Change recovery key password:" : "Cambiar la contraseña de la clave de recuperación",
|
||||
"Old Recovery key password" : "Antigua clave de recuperación",
|
||||
"New Recovery key password" : "Nueva clave de recuperación",
|
||||
"Repeat New Recovery key password" : "Repetir la nueva clave de recuperación",
|
||||
"Change Password" : "Cambiar contraseña",
|
||||
"Your private key password no longer matches your log-in password." : "Su contraseña de clave privada ya no coincide con su contraseña de acceso.",
|
||||
"Set your old private key password to your current log-in password:" : "Establezca la contraseña de clave privada antigua para su contraseña de inicio de sesión actual:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recuerda su antigua contraseña puede pedir a su administrador que le recupere sus ficheros.",
|
||||
"Old log-in password" : "Contraseña de acceso antigua",
|
||||
"Current log-in password" : "Contraseña de acceso actual",
|
||||
"Update Private Key Password" : "Actualizar contraseña de clave privada",
|
||||
"Enable password recovery:" : "Habilitar la recuperación de contraseña:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus ficheros cifrados en caso de pérdida de contraseña"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,51 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Error desconocido",
|
||||
"Missing recovery key password" : "Falta contraseña de recuperación.",
|
||||
"Please repeat the recovery key password" : "Por favor, repita la contraseña de recuperación",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "La contraseña de recuperación reintroducida no coincide con la contraseña de recuperación proporcionada.",
|
||||
"Recovery key successfully enabled" : "Se ha habilitado la recuperación de archivos",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "No se pudo deshabilitar la clave de recuperación. Por favor, ¡compruebe su contraseña!",
|
||||
"Recovery key successfully disabled" : "Clave de recuperación deshabilitada",
|
||||
"Please provide the old recovery password" : "Por favor, ingrese su antigua contraseña de recuperación",
|
||||
"Please provide a new recovery password" : "Por favor, ingrese una nueva contraseña de recuperación",
|
||||
"Please repeat the new recovery password" : "Por favor, repita su nueva contraseña de recuperación",
|
||||
"Password successfully changed." : "Su contraseña ha sido cambiada",
|
||||
"Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Compruebe que la contraseña actual sea correcta.",
|
||||
"Could not update the private key password." : "No se pudo actualizar la contraseña de la clave privada.",
|
||||
"The old password was not correct, please try again." : "La antigua contraseña no es correcta, por favor intente de nuevo.",
|
||||
"The current log-in password was not correct, please try again." : "La contraseña de inicio de sesión actual no es correcto, por favor intente de nuevo.",
|
||||
"Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.",
|
||||
"File recovery settings updated" : "Opciones de recuperación de archivos actualizada",
|
||||
"Could not update file recovery" : "No se pudo actualizar la recuperación de archivos",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡La aplicación de cifrado no ha sido inicializada! Quizá se restableció durante su sesión. Por favor intente cerrar la sesión y volver a iniciarla para inicializar la aplicación de cifrado.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "¡Su clave privada no es válida! Tal vez su contraseña ha sido cambiada desde fuera de %s (Ej: su directorio corporativo). Puede actualizar la contraseña de su clave privada en sus opciones personales para recuperar el acceso a sus archivos.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No fue posible descifrar este archivo, probablemente se trate de un archivo compartido. Solicite al propietario del mismo que vuelva a compartirlo con usted.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Error desconocido. Revise la configuración de su sistema o contacte con su administrador",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Ha comenzado el cifrado inicial... Esto puede tardar un rato. Por favor, espere.",
|
||||
"Initial encryption running... Please try again later." : "Cifrado inicial en curso... Inténtelo más tarde.",
|
||||
"Missing requirements." : "Requisitos incompletos.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Asegúrese de que OpenSSL y la extensión de PHP estén habilitados y configurados correctamente. Por el momento, la aplicación de cifrado ha sido deshabilitada.",
|
||||
"Following users are not set up for encryption:" : "Los siguientes usuarios no han sido configurados para el cifrado:",
|
||||
"Go directly to your %spersonal settings%s." : "Ir directamente a %sOpciones%s.",
|
||||
"Server-side Encryption" : "Cifrado en el servidor",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La app de cifrado está habilitada pero sus claves no se han inicializado, por favor, cierre la sesión y vuelva a iniciarla de nuevo.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar la clave de recuperación (permite recuperar los ficheros del usuario en caso de pérdida de la contraseña);",
|
||||
"Recovery key password" : "Contraseña de clave de recuperación",
|
||||
"Repeat Recovery key password" : "Repite la contraseña de clave de recuperación",
|
||||
"Enabled" : "Habilitar",
|
||||
"Disabled" : "Deshabilitado",
|
||||
"Change recovery key password:" : "Cambiar la contraseña de la clave de recuperación",
|
||||
"Old Recovery key password" : "Antigua clave de recuperación",
|
||||
"New Recovery key password" : "Nueva clave de recuperación",
|
||||
"Repeat New Recovery key password" : "Repetir la nueva clave de recuperación",
|
||||
"Change Password" : "Cambiar contraseña",
|
||||
"Your private key password no longer matches your log-in password." : "Su contraseña de clave privada ya no coincide con su contraseña de acceso.",
|
||||
"Set your old private key password to your current log-in password:" : "Establezca la contraseña de clave privada antigua para su contraseña de inicio de sesión actual:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recuerda su antigua contraseña puede pedir a su administrador que le recupere sus ficheros.",
|
||||
"Old log-in password" : "Contraseña de acceso antigua",
|
||||
"Current log-in password" : "Contraseña de acceso actual",
|
||||
"Update Private Key Password" : "Actualizar contraseña de clave privada",
|
||||
"Enable password recovery:" : "Habilitar la recuperación de contraseña:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus ficheros cifrados en caso de pérdida de contraseña"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Error desconocido",
|
||||
"Recovery key successfully enabled" : "Se habilitó la recuperación de archivos",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "No fue posible deshabilitar la clave de recuperación. Por favor, comprobá tu contraseña.",
|
||||
"Recovery key successfully disabled" : "Clave de recuperación deshabilitada",
|
||||
"Password successfully changed." : "Tu contraseña fue cambiada",
|
||||
"Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Comprobá que la contraseña actual sea correcta.",
|
||||
"Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.",
|
||||
"File recovery settings updated" : "Las opciones de recuperación de archivos fueron actualizadas",
|
||||
"Could not update file recovery" : "No fue posible actualizar la recuperación de archivos",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡La aplicación de encriptación no está inicializada! Es probable que la aplicación fue re-habilitada durante tu sesión. Intenta salir y iniciar sesión para volverla a iniciar.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "¡Tu llave privada no es válida! Aparenta que tu clave fue cambiada fuera de %s (de tus directorios). Puedes actualizar la contraseña de tu clave privadaen las configuraciones personales para recobrar el acceso a tus archivos encriptados.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No se puede descibrar este archivo, probablemente sea un archivo compartido. Por favor pídele al dueño que recomparta el archivo contigo.",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Encriptación inicial comenzada... Esto puede durar un tiempo. Por favor espere.",
|
||||
"Initial encryption running... Please try again later." : "Encriptación inicial corriendo... Por favor intente mas tarde. ",
|
||||
"Missing requirements." : "Requisitos incompletos.",
|
||||
"Following users are not set up for encryption:" : "Los siguientes usuarios no fueron configurados para encriptar:",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La aplicación de encriptación está habilitada pero las llaves no fueron inicializadas, por favor termine y vuelva a iniciar la sesión",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar clave de recuperación (te permite recuperar los archivos de usuario en el caso que pierdas la contraseña):",
|
||||
"Recovery key password" : "Contraseña de recuperación de clave",
|
||||
"Repeat Recovery key password" : "Repetir la contraseña de la clave de recuperación",
|
||||
"Enabled" : "Habilitado",
|
||||
"Disabled" : "Deshabilitado",
|
||||
"Change recovery key password:" : "Cambiar contraseña para recuperar la clave:",
|
||||
"Old Recovery key password" : "Contraseña antigua de recuperación de clave",
|
||||
"New Recovery key password" : "Nueva contraseña de recuperación de clave",
|
||||
"Repeat New Recovery key password" : "Repetir Nueva contraseña para la clave de recuperación",
|
||||
"Change Password" : "Cambiar contraseña",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no te acordás de tu contraseña antigua, pedile al administrador que recupere tus archivos",
|
||||
"Old log-in password" : "Contraseña anterior",
|
||||
"Current log-in password" : "Contraseña actual",
|
||||
"Update Private Key Password" : "Actualizar contraseña de la clave privada",
|
||||
"Enable password recovery:" : "Habilitar recuperación de contraseña:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitando esta opción, vas a tener acceso a tus archivos encriptados, incluso si perdés la contraseña"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,36 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Error desconocido",
|
||||
"Recovery key successfully enabled" : "Se habilitó la recuperación de archivos",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "No fue posible deshabilitar la clave de recuperación. Por favor, comprobá tu contraseña.",
|
||||
"Recovery key successfully disabled" : "Clave de recuperación deshabilitada",
|
||||
"Password successfully changed." : "Tu contraseña fue cambiada",
|
||||
"Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Comprobá que la contraseña actual sea correcta.",
|
||||
"Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.",
|
||||
"File recovery settings updated" : "Las opciones de recuperación de archivos fueron actualizadas",
|
||||
"Could not update file recovery" : "No fue posible actualizar la recuperación de archivos",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡La aplicación de encriptación no está inicializada! Es probable que la aplicación fue re-habilitada durante tu sesión. Intenta salir y iniciar sesión para volverla a iniciar.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "¡Tu llave privada no es válida! Aparenta que tu clave fue cambiada fuera de %s (de tus directorios). Puedes actualizar la contraseña de tu clave privadaen las configuraciones personales para recobrar el acceso a tus archivos encriptados.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No se puede descibrar este archivo, probablemente sea un archivo compartido. Por favor pídele al dueño que recomparta el archivo contigo.",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Encriptación inicial comenzada... Esto puede durar un tiempo. Por favor espere.",
|
||||
"Initial encryption running... Please try again later." : "Encriptación inicial corriendo... Por favor intente mas tarde. ",
|
||||
"Missing requirements." : "Requisitos incompletos.",
|
||||
"Following users are not set up for encryption:" : "Los siguientes usuarios no fueron configurados para encriptar:",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La aplicación de encriptación está habilitada pero las llaves no fueron inicializadas, por favor termine y vuelva a iniciar la sesión",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar clave de recuperación (te permite recuperar los archivos de usuario en el caso que pierdas la contraseña):",
|
||||
"Recovery key password" : "Contraseña de recuperación de clave",
|
||||
"Repeat Recovery key password" : "Repetir la contraseña de la clave de recuperación",
|
||||
"Enabled" : "Habilitado",
|
||||
"Disabled" : "Deshabilitado",
|
||||
"Change recovery key password:" : "Cambiar contraseña para recuperar la clave:",
|
||||
"Old Recovery key password" : "Contraseña antigua de recuperación de clave",
|
||||
"New Recovery key password" : "Nueva contraseña de recuperación de clave",
|
||||
"Repeat New Recovery key password" : "Repetir Nueva contraseña para la clave de recuperación",
|
||||
"Change Password" : "Cambiar contraseña",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no te acordás de tu contraseña antigua, pedile al administrador que recupere tus archivos",
|
||||
"Old log-in password" : "Contraseña anterior",
|
||||
"Current log-in password" : "Contraseña actual",
|
||||
"Update Private Key Password" : "Actualizar contraseña de la clave privada",
|
||||
"Enable password recovery:" : "Habilitar recuperación de contraseña:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitando esta opción, vas a tener acceso a tus archivos encriptados, incluso si perdés la contraseña"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Error desconocido"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,4 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Error desconocido"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Error desconocido",
|
||||
"Recovery key successfully enabled" : "Se ha habilitado la recuperación de archivos",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "No se pudo deshabilitar la clave de recuperación. Por favor compruebe su contraseña!",
|
||||
"Recovery key successfully disabled" : "Clave de recuperación deshabilitada",
|
||||
"Password successfully changed." : "Su contraseña ha sido cambiada",
|
||||
"Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Compruebe que la contraseña actual sea correcta.",
|
||||
"Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.",
|
||||
"File recovery settings updated" : "Opciones de recuperación de archivos actualizada",
|
||||
"Could not update file recovery" : "No se pudo actualizar la recuperación de archivos",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡La aplicación de cifrado no ha sido inicializada! Quizá fue restablecida durante tu sesión. Por favor intenta cerrar la sesión y volver a iniciarla para inicializar la aplicación de cifrado.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "¡Su clave privada no es válida! Tal vez su contraseña ha sido cambiada desde fuera. de %s (Ej:Su directorio corporativo). Puede actualizar la contraseña de su clave privada en sus opciones personales para recuperar el acceso a sus archivos.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No fue posible descifrar este archivo, probablemente se trate de un archivo compartido. Solicite al propietario del mismo que vuelva a compartirlo con usted.",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Encriptación iniciada... Esto puede tomar un tiempo. Por favor espere.",
|
||||
"Missing requirements." : "Requisitos incompletos.",
|
||||
"Following users are not set up for encryption:" : "Los siguientes usuarios no han sido configurados para el cifrado:",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La aplicación de crifrado está habilitada pero tus claves no han sido inicializadas, por favor, cierra la sesión y vuelva a iniciarla de nuevo.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar la clave de recuperación (permite recuperar los archivos del usuario en caso de pérdida de la contraseña);",
|
||||
"Recovery key password" : "Contraseña de clave de recuperación",
|
||||
"Repeat Recovery key password" : "Repite la contraseña de clave de recuperación",
|
||||
"Enabled" : "Habilitar",
|
||||
"Disabled" : "Deshabilitado",
|
||||
"Change recovery key password:" : "Cambiar la contraseña de la clave de recuperación",
|
||||
"Old Recovery key password" : "Antigua clave de recuperación",
|
||||
"New Recovery key password" : "Nueva clave de recuperación",
|
||||
"Repeat New Recovery key password" : "Repetir la nueva clave de recuperación",
|
||||
"Change Password" : "Cambiar contraseña",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recuerda su antigua contraseña puede pedir a su administrador que le recupere sus archivos.",
|
||||
"Old log-in password" : "Contraseña de acceso antigua",
|
||||
"Current log-in password" : "Contraseña de acceso actual",
|
||||
"Update Private Key Password" : "Actualizar Contraseña de Clave Privada",
|
||||
"Enable password recovery:" : "Habilitar la recuperación de contraseña:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus archivos cifrados en caso de pérdida de contraseña"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,35 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Error desconocido",
|
||||
"Recovery key successfully enabled" : "Se ha habilitado la recuperación de archivos",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "No se pudo deshabilitar la clave de recuperación. Por favor compruebe su contraseña!",
|
||||
"Recovery key successfully disabled" : "Clave de recuperación deshabilitada",
|
||||
"Password successfully changed." : "Su contraseña ha sido cambiada",
|
||||
"Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Compruebe que la contraseña actual sea correcta.",
|
||||
"Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.",
|
||||
"File recovery settings updated" : "Opciones de recuperación de archivos actualizada",
|
||||
"Could not update file recovery" : "No se pudo actualizar la recuperación de archivos",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡La aplicación de cifrado no ha sido inicializada! Quizá fue restablecida durante tu sesión. Por favor intenta cerrar la sesión y volver a iniciarla para inicializar la aplicación de cifrado.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "¡Su clave privada no es válida! Tal vez su contraseña ha sido cambiada desde fuera. de %s (Ej:Su directorio corporativo). Puede actualizar la contraseña de su clave privada en sus opciones personales para recuperar el acceso a sus archivos.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No fue posible descifrar este archivo, probablemente se trate de un archivo compartido. Solicite al propietario del mismo que vuelva a compartirlo con usted.",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Encriptación iniciada... Esto puede tomar un tiempo. Por favor espere.",
|
||||
"Missing requirements." : "Requisitos incompletos.",
|
||||
"Following users are not set up for encryption:" : "Los siguientes usuarios no han sido configurados para el cifrado:",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La aplicación de crifrado está habilitada pero tus claves no han sido inicializadas, por favor, cierra la sesión y vuelva a iniciarla de nuevo.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Habilitar la clave de recuperación (permite recuperar los archivos del usuario en caso de pérdida de la contraseña);",
|
||||
"Recovery key password" : "Contraseña de clave de recuperación",
|
||||
"Repeat Recovery key password" : "Repite la contraseña de clave de recuperación",
|
||||
"Enabled" : "Habilitar",
|
||||
"Disabled" : "Deshabilitado",
|
||||
"Change recovery key password:" : "Cambiar la contraseña de la clave de recuperación",
|
||||
"Old Recovery key password" : "Antigua clave de recuperación",
|
||||
"New Recovery key password" : "Nueva clave de recuperación",
|
||||
"Repeat New Recovery key password" : "Repetir la nueva clave de recuperación",
|
||||
"Change Password" : "Cambiar contraseña",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recuerda su antigua contraseña puede pedir a su administrador que le recupere sus archivos.",
|
||||
"Old log-in password" : "Contraseña de acceso antigua",
|
||||
"Current log-in password" : "Contraseña de acceso actual",
|
||||
"Update Private Key Password" : "Actualizar Contraseña de Clave Privada",
|
||||
"Enable password recovery:" : "Habilitar la recuperación de contraseña:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus archivos cifrados en caso de pérdida de contraseña"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,51 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Tundmatu viga",
|
||||
"Missing recovery key password" : "Muuda taastevõtme parool",
|
||||
"Please repeat the recovery key password" : "Palun korda uut taastevõtme parooli",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Lahtritesse sisestatud taastevõtme paroolid ei kattu",
|
||||
"Recovery key successfully enabled" : "Taastevõtme lubamine õnnestus",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Ei suuda keelata taastevõtit. Palun kontrolli oma taastevõtme parooli!",
|
||||
"Recovery key successfully disabled" : "Taastevõtme keelamine õnnestus",
|
||||
"Please provide the old recovery password" : "Palun sisesta vana taastevõtme parool",
|
||||
"Please provide a new recovery password" : "Palun sisesta uus taastevõtme parool",
|
||||
"Please repeat the new recovery password" : "Palun korda uut taastevõtme parooli",
|
||||
"Password successfully changed." : "Parool edukalt vahetatud.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Ei suutnud vahetada parooli. Võib-olla on vana parool valesti sisestatud.",
|
||||
"Could not update the private key password." : "Ei suutnud uuendada privaatse võtme parooli.",
|
||||
"The old password was not correct, please try again." : "Vana parool polnud õige, palun proovi uuesti.",
|
||||
"The current log-in password was not correct, please try again." : "Praeguse sisselogimise parool polnud õige, palun proovi uuesti.",
|
||||
"Private key password successfully updated." : "Privaatse võtme parool edukalt uuendatud.",
|
||||
"File recovery settings updated" : "Faili taaste seaded uuendatud",
|
||||
"Could not update file recovery" : "Ei suuda uuendada taastefaili",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Krüpteerimise rakend pole käivitatud. Võib-olla krüpteerimise rakend taaskäivitati sinu sessiooni kestel. Palun proovi logida välja ning uuesti sisse käivitamaks krüpteerimise rakendit.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Sinu provaatne võti pole kehtiv! Tõenäoliselt mudueti parooli väljaspool kausta %s (nt. sinu ettevõtte kaust). Sa saad uuendada oma privaatse võtme parooli oma isiklikes seadetes, et taastada ligipääs sinu krüpteeritud failidele.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Sa ei saa seda faili dekrüpteerida, see on tõenäoliselt jagatud fail. Palun lase omanikul seda faili sinuga uuesti jagada.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Tundmatu viga. Palun võta ühendust oma administraatoriga.",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Algne krüpteerimine käivitati... See võib võtta natuke aega. Palun oota.",
|
||||
"Initial encryption running... Please try again later." : "Toimub esmane krüpteerimine... Palun proovi hiljem uuesti.",
|
||||
"Missing requirements." : "Nõutavad on puudu.",
|
||||
"Following users are not set up for encryption:" : "Järgmised kasutajad pole seadistatud krüpteeringuks:",
|
||||
"Go directly to your %spersonal settings%s." : "Liigi otse oma %s isiklike seadete %s juurde.",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krüpteerimisrakend on lubatud, kuid võtmeid pole lähtestatud. Palun logi välja ning uuesti sisse.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Luba taastevõti (võimalda kasutaja failide taastamine parooli kaotuse puhul):",
|
||||
"Recovery key password" : "Taastevõtme parool",
|
||||
"Repeat Recovery key password" : "Korda taastevõtme parooli",
|
||||
"Enabled" : "Sisse lülitatud",
|
||||
"Disabled" : "Väljalülitatud",
|
||||
"Change recovery key password:" : "Muuda taastevõtme parooli:",
|
||||
"Old Recovery key password" : "Vana taastevõtme parool",
|
||||
"New Recovery key password" : "Uus taastevõtme parool",
|
||||
"Repeat New Recovery key password" : "Korda uut taastevõtme parooli",
|
||||
"Change Password" : "Muuda parooli",
|
||||
"Your private key password no longer matches your log-in password." : "Sinu provaatvõtme parool ei kattu enam sinu sisselogimise parooliga.",
|
||||
"Set your old private key password to your current log-in password:" : "Pane oma vana privaatvõtme parooliks oma praegune sisselogimise parool.",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Kui sa ei mäleta oma vana parooli, siis palu oma süsteemihalduril taastada ligipääs failidele.",
|
||||
"Old log-in password" : "Vana sisselogimise parool",
|
||||
"Current log-in password" : "Praegune sisselogimise parool",
|
||||
"Update Private Key Password" : "Uuenda privaatse võtme parooli",
|
||||
"Enable password recovery:" : "Luba parooli taaste:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Valiku lubamine võimaldab taastada ligipääsu krüpteeritud failidele kui parooli kaotuse puhul"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,49 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Tundmatu viga",
|
||||
"Missing recovery key password" : "Muuda taastevõtme parool",
|
||||
"Please repeat the recovery key password" : "Palun korda uut taastevõtme parooli",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Lahtritesse sisestatud taastevõtme paroolid ei kattu",
|
||||
"Recovery key successfully enabled" : "Taastevõtme lubamine õnnestus",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Ei suuda keelata taastevõtit. Palun kontrolli oma taastevõtme parooli!",
|
||||
"Recovery key successfully disabled" : "Taastevõtme keelamine õnnestus",
|
||||
"Please provide the old recovery password" : "Palun sisesta vana taastevõtme parool",
|
||||
"Please provide a new recovery password" : "Palun sisesta uus taastevõtme parool",
|
||||
"Please repeat the new recovery password" : "Palun korda uut taastevõtme parooli",
|
||||
"Password successfully changed." : "Parool edukalt vahetatud.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Ei suutnud vahetada parooli. Võib-olla on vana parool valesti sisestatud.",
|
||||
"Could not update the private key password." : "Ei suutnud uuendada privaatse võtme parooli.",
|
||||
"The old password was not correct, please try again." : "Vana parool polnud õige, palun proovi uuesti.",
|
||||
"The current log-in password was not correct, please try again." : "Praeguse sisselogimise parool polnud õige, palun proovi uuesti.",
|
||||
"Private key password successfully updated." : "Privaatse võtme parool edukalt uuendatud.",
|
||||
"File recovery settings updated" : "Faili taaste seaded uuendatud",
|
||||
"Could not update file recovery" : "Ei suuda uuendada taastefaili",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Krüpteerimise rakend pole käivitatud. Võib-olla krüpteerimise rakend taaskäivitati sinu sessiooni kestel. Palun proovi logida välja ning uuesti sisse käivitamaks krüpteerimise rakendit.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Sinu provaatne võti pole kehtiv! Tõenäoliselt mudueti parooli väljaspool kausta %s (nt. sinu ettevõtte kaust). Sa saad uuendada oma privaatse võtme parooli oma isiklikes seadetes, et taastada ligipääs sinu krüpteeritud failidele.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Sa ei saa seda faili dekrüpteerida, see on tõenäoliselt jagatud fail. Palun lase omanikul seda faili sinuga uuesti jagada.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Tundmatu viga. Palun võta ühendust oma administraatoriga.",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Algne krüpteerimine käivitati... See võib võtta natuke aega. Palun oota.",
|
||||
"Initial encryption running... Please try again later." : "Toimub esmane krüpteerimine... Palun proovi hiljem uuesti.",
|
||||
"Missing requirements." : "Nõutavad on puudu.",
|
||||
"Following users are not set up for encryption:" : "Järgmised kasutajad pole seadistatud krüpteeringuks:",
|
||||
"Go directly to your %spersonal settings%s." : "Liigi otse oma %s isiklike seadete %s juurde.",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Krüpteerimisrakend on lubatud, kuid võtmeid pole lähtestatud. Palun logi välja ning uuesti sisse.",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Luba taastevõti (võimalda kasutaja failide taastamine parooli kaotuse puhul):",
|
||||
"Recovery key password" : "Taastevõtme parool",
|
||||
"Repeat Recovery key password" : "Korda taastevõtme parooli",
|
||||
"Enabled" : "Sisse lülitatud",
|
||||
"Disabled" : "Väljalülitatud",
|
||||
"Change recovery key password:" : "Muuda taastevõtme parooli:",
|
||||
"Old Recovery key password" : "Vana taastevõtme parool",
|
||||
"New Recovery key password" : "Uus taastevõtme parool",
|
||||
"Repeat New Recovery key password" : "Korda uut taastevõtme parooli",
|
||||
"Change Password" : "Muuda parooli",
|
||||
"Your private key password no longer matches your log-in password." : "Sinu provaatvõtme parool ei kattu enam sinu sisselogimise parooliga.",
|
||||
"Set your old private key password to your current log-in password:" : "Pane oma vana privaatvõtme parooliks oma praegune sisselogimise parool.",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Kui sa ei mäleta oma vana parooli, siis palu oma süsteemihalduril taastada ligipääs failidele.",
|
||||
"Old log-in password" : "Vana sisselogimise parool",
|
||||
"Current log-in password" : "Praegune sisselogimise parool",
|
||||
"Update Private Key Password" : "Uuenda privaatse võtme parooli",
|
||||
"Enable password recovery:" : "Luba parooli taaste:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Valiku lubamine võimaldab taastada ligipääsu krüpteeritud failidele kui parooli kaotuse puhul"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "Errore ezezaguna",
|
||||
"Missing recovery key password" : "Berreskurapen gakoaren pasahitza falta da",
|
||||
"Please repeat the recovery key password" : "Mesedez errepikatu berreskuratze gakoaren pasahitza",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Errepikatutako berreskuratze gakoaren pasahitza ez dator bat berreskuratze gakoaren pasahitzarekin",
|
||||
"Recovery key successfully enabled" : "Berreskuratze gakoa behar bezala gaitua",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Ezin da berreskuratze gako desgaitu. Egiaztatu berreskuratze gako pasahitza!",
|
||||
"Recovery key successfully disabled" : "Berreskuratze gakoa behar bezala desgaitu da",
|
||||
"Please provide the old recovery password" : "Mesedez sartu berreskuratze pasahitz zaharra",
|
||||
"Please provide a new recovery password" : "Mesedez sartu berreskuratze pasahitz berria",
|
||||
"Please repeat the new recovery password" : "Mesedez errepikatu berreskuratze pasahitz berria",
|
||||
"Password successfully changed." : "Pasahitza behar bezala aldatu da.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Ezin izan da pasahitza aldatu. Agian pasahitz zaharra okerrekoa da.",
|
||||
"Could not update the private key password." : "Ezin izan da gako pribatu pasahitza eguneratu. ",
|
||||
"The old password was not correct, please try again." : "Pasahitz zaharra ez da egokia. Mesedez, saiatu berriro.",
|
||||
"The current log-in password was not correct, please try again." : "Oraingo pasahitza ez da egokia. Mesedez, saiatu berriro.",
|
||||
"Private key password successfully updated." : "Gako pasahitz pribatu behar bezala eguneratu da.",
|
||||
"File recovery settings updated" : "Fitxategi berreskuratze ezarpenak eguneratuak",
|
||||
"Could not update file recovery" : "Ezin da fitxategi berreskuratzea eguneratu",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Enkriptazio aplikazioa ez dago hasieratuta! Agian aplikazioa birgaitu egin da zure saioa bitartean. Mesdez atear eta sartu berriz enkriptazio aplikazioa hasierarazteko.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Zure gako pribatua ez da egokia! Seguruaski zure pasahitza %s-tik kanpo aldatu da (adb. zure direktorio korporatiboa). Zure gako pribatuaren pasahitza eguneratu dezakezu zure ezarpen pertsonaletan zure enkriptatutako fitxategiak berreskuratzeko.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Ezin izan da fitxategi hau deszifratu, ziurrenik elkarbanatutako fitxategi bat da. Mesdez, eskatu fitxategiaren jabeari fitxategia zurekin berriz elkarbana dezan.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Errore ezezaguna. Mesedez, egiaztatu zure sistemaren ezarpenak edo jarri zure administrariarekin kontaktuan.",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Hasierako enkriptazioa hasi da... Honek denbora har dezake. Mesedez itxaron.",
|
||||
"Initial encryption running... Please try again later." : "Hasierako enkriptaketa abian... mesedez, saiatu beranduago.",
|
||||
"Missing requirements." : "Eskakizun batzuk ez dira betetzen.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Mesedez ziurtatu OpenSSL eta PHP hedapena instaltuta eta ongi konfiguratuta daudela. Oraingoz enkriptazio aplikazioa desgaitua izan da.",
|
||||
"Following users are not set up for encryption:" : "Hurrengo erabiltzaileak ez daude enktriptatzeko konfiguratutak:",
|
||||
"Go directly to your %spersonal settings%s." : "Joan zuzenean zure %sezarpen pertsonaletara%s.",
|
||||
"Server-side Encryption" : "Zerbitzari aldeko enkriptazioa",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Enkriptazio aplikazioa gaituta dago baina zure gakoak ez daude konfiguratuta, mesedez saioa bukatu eta berriro hasi",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Gaitu berreskurapen gakoa (erabiltzaileen fitxategiak berreskuratzea ahalbidetzen du pasahitza galtzen badute ere):",
|
||||
"Recovery key password" : "Berreskuratze gako pasahitza",
|
||||
"Repeat Recovery key password" : "Errepikatu berreskuratze gakoaren pasahitza",
|
||||
"Enabled" : "Gaitua",
|
||||
"Disabled" : "Ez-gaitua",
|
||||
"Change recovery key password:" : "Aldatu berreskuratze gako pasahitza:",
|
||||
"Old Recovery key password" : "Berreskuratze gako pasahitz zaharra",
|
||||
"New Recovery key password" : "Berreskuratze gako pasahitz berria",
|
||||
"Repeat New Recovery key password" : "Errepikatu berreskuratze gako berriaren pasahitza",
|
||||
"Change Password" : "Aldatu Pasahitza",
|
||||
"Your private key password no longer matches your log-in password." : "Zure gako pasahitza pribatua ez da dagoeneko bat etortzen zure sartzeko pasahitzarekin.",
|
||||
"Set your old private key password to your current log-in password:" : "Ezarri zure gako pasahitz zaharra orain duzun sartzeko pasahitzan:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Ez baduzu zure pasahitz zaharra gogoratzen eskatu zure administratzaileari zure fitxategiak berreskuratzeko.",
|
||||
"Old log-in password" : "Sartzeko pasahitz zaharra",
|
||||
"Current log-in password" : "Sartzeko oraingo pasahitza",
|
||||
"Update Private Key Password" : "Eguneratu gako pasahitza pribatua",
|
||||
"Enable password recovery:" : "Gaitu pasahitzaren berreskuratzea:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aukera hau gaituz zure enkriptatutako fitxategiak berreskuratu ahal izango dituzu pasahitza galtzekotan"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
|
@ -1,51 +0,0 @@
|
|||
{ "translations": {
|
||||
"Unknown error" : "Errore ezezaguna",
|
||||
"Missing recovery key password" : "Berreskurapen gakoaren pasahitza falta da",
|
||||
"Please repeat the recovery key password" : "Mesedez errepikatu berreskuratze gakoaren pasahitza",
|
||||
"Repeated recovery key password does not match the provided recovery key password" : "Errepikatutako berreskuratze gakoaren pasahitza ez dator bat berreskuratze gakoaren pasahitzarekin",
|
||||
"Recovery key successfully enabled" : "Berreskuratze gakoa behar bezala gaitua",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "Ezin da berreskuratze gako desgaitu. Egiaztatu berreskuratze gako pasahitza!",
|
||||
"Recovery key successfully disabled" : "Berreskuratze gakoa behar bezala desgaitu da",
|
||||
"Please provide the old recovery password" : "Mesedez sartu berreskuratze pasahitz zaharra",
|
||||
"Please provide a new recovery password" : "Mesedez sartu berreskuratze pasahitz berria",
|
||||
"Please repeat the new recovery password" : "Mesedez errepikatu berreskuratze pasahitz berria",
|
||||
"Password successfully changed." : "Pasahitza behar bezala aldatu da.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "Ezin izan da pasahitza aldatu. Agian pasahitz zaharra okerrekoa da.",
|
||||
"Could not update the private key password." : "Ezin izan da gako pribatu pasahitza eguneratu. ",
|
||||
"The old password was not correct, please try again." : "Pasahitz zaharra ez da egokia. Mesedez, saiatu berriro.",
|
||||
"The current log-in password was not correct, please try again." : "Oraingo pasahitza ez da egokia. Mesedez, saiatu berriro.",
|
||||
"Private key password successfully updated." : "Gako pasahitz pribatu behar bezala eguneratu da.",
|
||||
"File recovery settings updated" : "Fitxategi berreskuratze ezarpenak eguneratuak",
|
||||
"Could not update file recovery" : "Ezin da fitxategi berreskuratzea eguneratu",
|
||||
"Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Enkriptazio aplikazioa ez dago hasieratuta! Agian aplikazioa birgaitu egin da zure saioa bitartean. Mesdez atear eta sartu berriz enkriptazio aplikazioa hasierarazteko.",
|
||||
"Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Zure gako pribatua ez da egokia! Seguruaski zure pasahitza %s-tik kanpo aldatu da (adb. zure direktorio korporatiboa). Zure gako pribatuaren pasahitza eguneratu dezakezu zure ezarpen pertsonaletan zure enkriptatutako fitxategiak berreskuratzeko.",
|
||||
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Ezin izan da fitxategi hau deszifratu, ziurrenik elkarbanatutako fitxategi bat da. Mesdez, eskatu fitxategiaren jabeari fitxategia zurekin berriz elkarbana dezan.",
|
||||
"Unknown error. Please check your system settings or contact your administrator" : "Errore ezezaguna. Mesedez, egiaztatu zure sistemaren ezarpenak edo jarri zure administrariarekin kontaktuan.",
|
||||
"Initial encryption started... This can take some time. Please wait." : "Hasierako enkriptazioa hasi da... Honek denbora har dezake. Mesedez itxaron.",
|
||||
"Initial encryption running... Please try again later." : "Hasierako enkriptaketa abian... mesedez, saiatu beranduago.",
|
||||
"Missing requirements." : "Eskakizun batzuk ez dira betetzen.",
|
||||
"Please make sure that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." : "Mesedez ziurtatu OpenSSL eta PHP hedapena instaltuta eta ongi konfiguratuta daudela. Oraingoz enkriptazio aplikazioa desgaitua izan da.",
|
||||
"Following users are not set up for encryption:" : "Hurrengo erabiltzaileak ez daude enktriptatzeko konfiguratutak:",
|
||||
"Go directly to your %spersonal settings%s." : "Joan zuzenean zure %sezarpen pertsonaletara%s.",
|
||||
"Server-side Encryption" : "Zerbitzari aldeko enkriptazioa",
|
||||
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Enkriptazio aplikazioa gaituta dago baina zure gakoak ez daude konfiguratuta, mesedez saioa bukatu eta berriro hasi",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "Gaitu berreskurapen gakoa (erabiltzaileen fitxategiak berreskuratzea ahalbidetzen du pasahitza galtzen badute ere):",
|
||||
"Recovery key password" : "Berreskuratze gako pasahitza",
|
||||
"Repeat Recovery key password" : "Errepikatu berreskuratze gakoaren pasahitza",
|
||||
"Enabled" : "Gaitua",
|
||||
"Disabled" : "Ez-gaitua",
|
||||
"Change recovery key password:" : "Aldatu berreskuratze gako pasahitza:",
|
||||
"Old Recovery key password" : "Berreskuratze gako pasahitz zaharra",
|
||||
"New Recovery key password" : "Berreskuratze gako pasahitz berria",
|
||||
"Repeat New Recovery key password" : "Errepikatu berreskuratze gako berriaren pasahitza",
|
||||
"Change Password" : "Aldatu Pasahitza",
|
||||
"Your private key password no longer matches your log-in password." : "Zure gako pasahitza pribatua ez da dagoeneko bat etortzen zure sartzeko pasahitzarekin.",
|
||||
"Set your old private key password to your current log-in password:" : "Ezarri zure gako pasahitz zaharra orain duzun sartzeko pasahitzan:",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "Ez baduzu zure pasahitz zaharra gogoratzen eskatu zure administratzaileari zure fitxategiak berreskuratzeko.",
|
||||
"Old log-in password" : "Sartzeko pasahitz zaharra",
|
||||
"Current log-in password" : "Sartzeko oraingo pasahitza",
|
||||
"Update Private Key Password" : "Eguneratu gako pasahitza pribatua",
|
||||
"Enable password recovery:" : "Gaitu pasahitzaren berreskuratzea:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aukera hau gaituz zure enkriptatutako fitxategiak berreskuratu ahal izango dituzu pasahitza galtzekotan"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
OC.L10N.register(
|
||||
"files_encryption",
|
||||
{
|
||||
"Unknown error" : "خطای نامشخص",
|
||||
"Recovery key successfully enabled" : "کلید بازیابی با موفقیت فعال شده است.",
|
||||
"Could not disable recovery key. Please check your recovery key password!" : "کلید بازیابی را نمی تواند غیرفعال نماید. لطفا رمزعبور کلید بازیابی خود را بررسی کنید!",
|
||||
"Recovery key successfully disabled" : "کلید بازیابی با موفقیت غیر فعال شده است.",
|
||||
"Password successfully changed." : "رمزعبور با موفقیت تغییر یافت.",
|
||||
"Could not change the password. Maybe the old password was not correct." : "رمزعبور را نمیتواند تغییر دهد. شاید رمزعبورقدیمی صحیح نمی باشد.",
|
||||
"Private key password successfully updated." : "رمزعبور کلید خصوصی با موفقیت به روز شد.",
|
||||
"File recovery settings updated" : "تنظیمات بازیابی فایل به روز شده است.",
|
||||
"Could not update file recovery" : "به روز رسانی بازیابی فایل را نمی تواند انجام دهد.",
|
||||
"Missing requirements." : "نیازمندی های گمشده",
|
||||
"Following users are not set up for encryption:" : "کاربران زیر برای رمزنگاری تنظیم نشده اند",
|
||||
"Enable recovery key (allow to recover users files in case of password loss):" : "فعال کردن کلید بازیابی(اجازه بازیابی فایل های کاربران در صورت از دست دادن رمزعبور):",
|
||||
"Recovery key password" : "رمزعبور کلید بازیابی",
|
||||
"Enabled" : "فعال شده",
|
||||
"Disabled" : "غیرفعال شده",
|
||||
"Change recovery key password:" : "تغییر رمزعبور کلید بازیابی:",
|
||||
"Old Recovery key password" : "رمزعبور قدیمی کلید بازیابی ",
|
||||
"New Recovery key password" : "رمزعبور جدید کلید بازیابی",
|
||||
"Change Password" : "تغییر رمزعبور",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." : "اگر رمزعبور قدیمی را فراموش کرده اید میتوانید از مدیر خود برای بازیابی فایل هایتان درخواست نمایید.",
|
||||
"Old log-in password" : "رمزعبور قدیمی",
|
||||
"Current log-in password" : "رمزعبور فعلی",
|
||||
"Update Private Key Password" : "به روز رسانی رمزعبور کلید خصوصی",
|
||||
"Enable password recovery:" : "فعال سازی بازیابی رمزعبور:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "فعال کردن این گزینه به شما اجازه خواهد داد در صورت از دست دادن رمزعبور به فایل های رمزگذاری شده خود دسترسی داشته باشید."
|
||||
},
|
||||
"nplurals=1; plural=0;");
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue