Merge pull request #12568 from owncloud/autoload-encryption-classes

Fix namespaces of encryption classes and encryption tests
This commit is contained in:
Joas Schilling 2014-12-09 12:56:57 +01:00
commit 26861a98c5
43 changed files with 685 additions and 708 deletions

View File

@ -69,7 +69,7 @@ $storageInfo=OC_Helper::getStorageInfo('/', $dirInfo);
// if the encryption app is disabled, than everything is fine (INIT_SUCCESSFUL status code) // if the encryption app is disabled, than everything is fine (INIT_SUCCESSFUL status code)
$encryptionInitStatus = 2; $encryptionInitStatus = 2;
if (OC_App::isEnabled('files_encryption')) { if (OC_App::isEnabled('files_encryption')) {
$session = new \OCA\Encryption\Session(new \OC\Files\View('/')); $session = new \OCA\Files_Encryption\Session(new \OC\Files\View('/'));
$encryptionInitStatus = $session->getInitialized(); $encryptionInitStatus = $session->getInitialized();
} }

View File

@ -7,7 +7,8 @@
* *
* Script to handle admin settings for encrypted key recovery * Script to handle admin settings for encrypted key recovery
*/ */
use OCA\Encryption;
use OCA\Files_Encryption\Helper;
\OCP\JSON::checkAdminUser(); \OCP\JSON::checkAdminUser();
\OCP\JSON::checkAppEnabled('files_encryption'); \OCP\JSON::checkAppEnabled('files_encryption');
@ -42,7 +43,7 @@ $recoveryKeyId = \OC::$server->getAppConfig()->getValue('files_encryption', 'rec
if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] === '1') { if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] === '1') {
$return = \OCA\Encryption\Helper::adminEnableRecovery($recoveryKeyId, $_POST['recoveryPassword']); $return = Helper::adminEnableRecovery($recoveryKeyId, $_POST['recoveryPassword']);
// Return success or failure // Return success or failure
if ($return) { if ($return) {
@ -56,7 +57,7 @@ if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] === '1
isset($_POST['adminEnableRecovery']) isset($_POST['adminEnableRecovery'])
&& '0' === $_POST['adminEnableRecovery'] && '0' === $_POST['adminEnableRecovery']
) { ) {
$return = \OCA\Encryption\Helper::adminDisableRecovery($_POST['recoveryPassword']); $return = Helper::adminDisableRecovery($_POST['recoveryPassword']);
if ($return) { if ($return) {
$successMessage = $l->t('Recovery key successfully disabled'); $successMessage = $l->t('Recovery key successfully disabled');

View File

@ -9,8 +9,6 @@
* *
*/ */
use OCA\Encryption;
\OCP\JSON::checkAdminUser(); \OCP\JSON::checkAdminUser();
\OCP\JSON::checkAppEnabled('files_encryption'); \OCP\JSON::checkAppEnabled('files_encryption');
\OCP\JSON::callCheck(); \OCP\JSON::callCheck();
@ -49,21 +47,21 @@ if ($_POST['newPassword'] !== $_POST['confirmPassword']) {
} }
$view = new \OC\Files\View('/'); $view = new \OC\Files\View('/');
$util = new \OCA\Encryption\Util(new \OC\Files\View('/'), \OCP\User::getUser()); $util = new \OCA\Files_Encryption\Util(new \OC\Files\View('/'), \OCP\User::getUser());
$proxyStatus = \OC_FileProxy::$enabled; $proxyStatus = \OC_FileProxy::$enabled;
\OC_FileProxy::$enabled = false; \OC_FileProxy::$enabled = false;
$keyId = $util->getRecoveryKeyId(); $keyId = $util->getRecoveryKeyId();
$encryptedRecoveryKey = Encryption\Keymanager::getPrivateSystemKey($keyId); $encryptedRecoveryKey = \OCA\Files_Encryption\Keymanager::getPrivateSystemKey($keyId);
$decryptedRecoveryKey = $encryptedRecoveryKey ? \OCA\Encryption\Crypt::decryptPrivateKey($encryptedRecoveryKey, $oldPassword) : false; $decryptedRecoveryKey = $encryptedRecoveryKey ? \OCA\Files_Encryption\Crypt::decryptPrivateKey($encryptedRecoveryKey, $oldPassword) : false;
if ($decryptedRecoveryKey) { if ($decryptedRecoveryKey) {
$cipher = \OCA\Encryption\Helper::getCipher(); $cipher = \OCA\Files_Encryption\Helper::getCipher();
$encryptedKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($decryptedRecoveryKey, $newPassword, $cipher); $encryptedKey = \OCA\Files_Encryption\Crypt::symmetricEncryptFileContent($decryptedRecoveryKey, $newPassword, $cipher);
if ($encryptedKey) { if ($encryptedKey) {
\OCA\Encryption\Keymanager::setPrivateSystemKey($encryptedKey, $keyId); \OCA\Files_Encryption\Keymanager::setPrivateSystemKey($encryptedKey, $keyId);
$return = true; $return = true;
} }
} }

View File

@ -6,7 +6,8 @@
* *
* check migration status * check migration status
*/ */
use OCA\Encryption\Util;
use OCA\Files_Encryption\Util;
\OCP\JSON::checkAppEnabled('files_encryption'); \OCP\JSON::checkAppEnabled('files_encryption');

View File

@ -9,8 +9,6 @@
* *
*/ */
use OCA\Encryption;
\OCP\JSON::checkLoggedIn(); \OCP\JSON::checkLoggedIn();
\OCP\JSON::checkAppEnabled('files_encryption'); \OCP\JSON::checkAppEnabled('files_encryption');
\OCP\JSON::callCheck(); \OCP\JSON::callCheck();
@ -24,7 +22,7 @@ $oldPassword = $_POST['oldPassword'];
$newPassword = $_POST['newPassword']; $newPassword = $_POST['newPassword'];
$view = new \OC\Files\View('/'); $view = new \OC\Files\View('/');
$session = new \OCA\Encryption\Session($view); $session = new \OCA\Files_Encryption\Session($view);
$user = \OCP\User::getUser(); $user = \OCP\User::getUser();
$loginName = \OC::$server->getUserSession()->getLoginName(); $loginName = \OC::$server->getUserSession()->getLoginName();
@ -36,14 +34,14 @@ if ($passwordCorrect !== false) {
$proxyStatus = \OC_FileProxy::$enabled; $proxyStatus = \OC_FileProxy::$enabled;
\OC_FileProxy::$enabled = false; \OC_FileProxy::$enabled = false;
$encryptedKey = Encryption\Keymanager::getPrivateKey($view, $user); $encryptedKey = \OCA\Files_Encryption\Keymanager::getPrivateKey($view, $user);
$decryptedKey = $encryptedKey ? \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, $oldPassword) : false; $decryptedKey = $encryptedKey ? \OCA\Files_Encryption\Crypt::decryptPrivateKey($encryptedKey, $oldPassword) : false;
if ($decryptedKey) { if ($decryptedKey) {
$cipher = \OCA\Encryption\Helper::getCipher(); $cipher = \OCA\Files_Encryption\Helper::getCipher();
$encryptedKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($decryptedKey, $newPassword, $cipher); $encryptedKey = \OCA\Files_Encryption\Crypt::symmetricEncryptFileContent($decryptedKey, $newPassword, $cipher);
if ($encryptedKey) { if ($encryptedKey) {
\OCA\Encryption\Keymanager::setPrivateKey($encryptedKey, $user); \OCA\Files_Encryption\Keymanager::setPrivateKey($encryptedKey, $user);
$session->setPrivateKey($decryptedKey); $session->setPrivateKey($decryptedKey);
$return = true; $return = true;
} }
@ -61,7 +59,7 @@ if ($decryptedKey) {
// success or failure // success or failure
if ($return) { if ($return) {
$session->setInitialized(\OCA\Encryption\Session::INIT_SUCCESSFUL); $session->setInitialized(\OCA\Files_Encryption\Session::INIT_SUCCESSFUL);
\OCP\JSON::success(array('data' => array('message' => $l->t('Private key password successfully updated.')))); \OCP\JSON::success(array('data' => array('message' => $l->t('Private key password successfully updated.'))));
} else { } else {
\OCP\JSON::error(array('data' => array('message' => $errorMessage))); \OCP\JSON::error(array('data' => array('message' => $errorMessage)));

View File

@ -7,8 +7,6 @@
* Script to handle admin settings for encrypted key recovery * Script to handle admin settings for encrypted key recovery
*/ */
use OCA\Encryption;
\OCP\JSON::checkLoggedIn(); \OCP\JSON::checkLoggedIn();
\OCP\JSON::checkAppEnabled('files_encryption'); \OCP\JSON::checkAppEnabled('files_encryption');
\OCP\JSON::callCheck(); \OCP\JSON::callCheck();
@ -22,7 +20,7 @@ if (
$userId = \OCP\USER::getUser(); $userId = \OCP\USER::getUser();
$view = new \OC\Files\View('/'); $view = new \OC\Files\View('/');
$util = new \OCA\Encryption\Util($view, $userId); $util = new \OCA\Files_Encryption\Util($view, $userId);
// Save recovery preference to DB // Save recovery preference to DB
$return = $util->setRecoveryForUser($_POST['userEnableRecovery']); $return = $util->setRecoveryForUser($_POST['userEnableRecovery']);

View File

@ -1,41 +1,26 @@
<?php <?php
OC::$CLASSPATH['OCA\Encryption\Crypt'] = 'files_encryption/lib/crypt.php';
OC::$CLASSPATH['OCA\Encryption\Hooks'] = 'files_encryption/hooks/hooks.php';
OC::$CLASSPATH['OCA\Encryption\Util'] = 'files_encryption/lib/util.php';
OC::$CLASSPATH['OCA\Encryption\Keymanager'] = 'files_encryption/lib/keymanager.php';
OC::$CLASSPATH['OCA\Encryption\Stream'] = 'files_encryption/lib/stream.php';
OC::$CLASSPATH['OCA\Encryption\Proxy'] = 'files_encryption/lib/proxy.php';
OC::$CLASSPATH['OCA\Encryption\Session'] = 'files_encryption/lib/session.php';
OC::$CLASSPATH['OCA\Encryption\Capabilities'] = 'files_encryption/lib/capabilities.php';
OC::$CLASSPATH['OCA\Encryption\Helper'] = 'files_encryption/lib/helper.php';
// Exceptions
OC::$CLASSPATH['OCA\Encryption\Exception\MultiKeyEncryptException'] = 'files_encryption/exception/multiKeyEncryptException.php';
OC::$CLASSPATH['OCA\Encryption\Exception\MultiKeyDecryptException'] = 'files_encryption/exception/multiKeyDecryptException.php';
OC::$CLASSPATH['OCA\Encryption\Exception\EncryptionException'] = 'files_encryption/exception/encryptionException.php';
\OCP\Util::addTranslations('files_encryption'); \OCP\Util::addTranslations('files_encryption');
\OCP\Util::addscript('files_encryption', 'encryption'); \OCP\Util::addscript('files_encryption', 'encryption');
\OCP\Util::addscript('files_encryption', 'detect-migration'); \OCP\Util::addscript('files_encryption', 'detect-migration');
if (!OC_Config::getValue('maintenance', false)) { if (!OC_Config::getValue('maintenance', false)) {
OC_FileProxy::register(new OCA\Encryption\Proxy()); OC_FileProxy::register(new OCA\Files_Encryption\Proxy());
// User related hooks // User related hooks
OCA\Encryption\Helper::registerUserHooks(); OCA\Files_Encryption\Helper::registerUserHooks();
// Sharing related hooks // Sharing related hooks
OCA\Encryption\Helper::registerShareHooks(); OCA\Files_Encryption\Helper::registerShareHooks();
// Filesystem related hooks // Filesystem related hooks
OCA\Encryption\Helper::registerFilesystemHooks(); OCA\Files_Encryption\Helper::registerFilesystemHooks();
// App manager related hooks // App manager related hooks
OCA\Encryption\Helper::registerAppHooks(); OCA\Files_Encryption\Helper::registerAppHooks();
if(!in_array('crypt', stream_get_wrappers())) { if(!in_array('crypt', stream_get_wrappers())) {
stream_wrapper_register('crypt', 'OCA\Encryption\Stream'); stream_wrapper_register('crypt', 'OCA\Files_Encryption\Stream');
} }
} else { } else {
// logout user if we are in maintenance to force re-login // logout user if we are in maintenance to force re-login

View File

@ -19,4 +19,4 @@ $this->create('files_encryption_ajax_userrecovery', 'ajax/userrecovery.php')
->actionInclude('files_encryption/ajax/userrecovery.php'); ->actionInclude('files_encryption/ajax/userrecovery.php');
// Register with the capabilities API // Register with the capabilities API
OC_API::register('get', '/cloud/capabilities', array('OCA\Encryption\Capabilities', 'getCapabilities'), 'files_encryption', OC_API::USER_AUTH); OC_API::register('get', '/cloud/capabilities', array('OCA\Files_Encryption\Capabilities', 'getCapabilities'), 'files_encryption', OC_API::USER_AUTH);

View File

@ -21,7 +21,7 @@
* *
*/ */
namespace OCA\Encryption\Exception; namespace OCA\Files_Encryption\Exception;
/** /**
* Base class for all encryption exception * Base class for all encryption exception

View File

@ -21,7 +21,7 @@
* *
*/ */
namespace OCA\Encryption\Exception; namespace OCA\Files_Encryption\Exception;
/** /**
* Throw this encryption if multi key decryption failed * Throw this encryption if multi key decryption failed

View File

@ -21,7 +21,7 @@
* *
*/ */
namespace OCA\Encryption\Exception; namespace OCA\Files_Encryption\Exception;
/** /**
* Throw this exception if multi key encrytion fails * Throw this exception if multi key encrytion fails

View File

@ -12,14 +12,14 @@ if (!isset($_)) { //also provide standalone error page
if (isset($_GET['errorCode'])) { if (isset($_GET['errorCode'])) {
$errorCode = $_GET['errorCode']; $errorCode = $_GET['errorCode'];
switch ($errorCode) { switch ($errorCode) {
case \OCA\Encryption\Crypt::ENCRYPTION_NOT_INITIALIZED_ERROR: 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.'); $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; break;
case \OCA\Encryption\Crypt::ENCRYPTION_PRIVATE_KEY_NOT_VALID_ERROR: case \OCA\Files_Encryption\Crypt::ENCRYPTION_PRIVATE_KEY_NOT_VALID_ERROR:
$theme = new OC_Defaults(); $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())); $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; break;
case \OCA\Encryption\Crypt::ENCRYPTION_NO_SHARE_KEY_FOUND: 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.'); $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; break;
default: default:
@ -27,7 +27,7 @@ if (!isset($_)) { //also provide standalone error page
break; break;
} }
} else { } else {
$errorCode = \OCA\Encryption\Crypt::ENCRYPTION_UNKNOWN_ERROR; $errorCode = \OCA\Files_Encryption\Crypt::ENCRYPTION_UNKNOWN_ERROR;
$errorMsg = $l->t("Unknown error. Please check your system settings or contact your administrator"); $errorMsg = $l->t("Unknown error. Please check your system settings or contact your administrator");
} }

View File

@ -6,7 +6,7 @@
* See the COPYING-README file. * See the COPYING-README file.
*/ */
namespace OCA\Encryption; namespace OCA\Files_Encryption;
class Capabilities { class Capabilities {

View File

@ -25,7 +25,7 @@
* *
*/ */
namespace OCA\Encryption; namespace OCA\Files_Encryption;
/** /**
* Class for common cryptography functionality * Class for common cryptography functionality
@ -133,7 +133,7 @@ class Crypt {
* Check if a file's contents contains an IV and is symmetrically encrypted * Check if a file's contents contains an IV and is symmetrically encrypted
* @param string $content * @param string $content
* @return boolean * @return boolean
* @note see also OCA\Encryption\Util->isEncryptedPath() * @note see also \OCA\Files_Encryption\Util->isEncryptedPath()
*/ */
public static function isCatfileContent($content) { public static function isCatfileContent($content) {
@ -190,7 +190,7 @@ class Crypt {
* @param string $passphrase * @param string $passphrase
* @param string $cypher used for encryption, currently we support AES-128-CFB and AES-256-CFB * @param string $cypher used for encryption, currently we support AES-128-CFB and AES-256-CFB
* @return string encrypted file content * @return string encrypted file content
* @throws \OCA\Encryption\Exception\EncryptionException * @throws \OCA\Files_Encryption\Exception\EncryptionException
*/ */
private static function encrypt($plainContent, $iv, $passphrase = '', $cipher = Crypt::DEFAULT_CIPHER) { private static function encrypt($plainContent, $iv, $passphrase = '', $cipher = Crypt::DEFAULT_CIPHER) {
@ -379,7 +379,7 @@ class Crypt {
* @param string $plainContent content to be encrypted * @param string $plainContent content to be encrypted
* @param array $publicKeys array keys must be the userId of corresponding user * @param array $publicKeys array keys must be the userId of corresponding user
* @return array keys: keys (array, key = userId), data * @return array keys: keys (array, key = userId), data
* @throws \OCA\Encryption\Exception\MultiKeyEncryptException if encryption failed * @throws \OCA\Files_Encryption\Exception\MultiKeyEncryptException if encryption failed
* @note symmetricDecryptFileContent() can decrypt files created using this method * @note symmetricDecryptFileContent() can decrypt files created using this method
*/ */
public static function multiKeyEncrypt($plainContent, array $publicKeys) { public static function multiKeyEncrypt($plainContent, array $publicKeys) {
@ -425,7 +425,7 @@ class Crypt {
* @param string $encryptedContent * @param string $encryptedContent
* @param string $shareKey * @param string $shareKey
* @param mixed $privateKey * @param mixed $privateKey
* @throws \OCA\Encryption\Exception\MultiKeyDecryptException if decryption failed * @throws \OCA\Files_Encryption\Exception\MultiKeyDecryptException if decryption failed
* @internal param string $plainContent contains decrypted content * @internal param string $plainContent contains decrypted content
* @return string $plainContent decrypted string * @return string $plainContent decrypted string
* @note symmetricDecryptFileContent() can be used to decrypt files created using this method * @note symmetricDecryptFileContent() can be used to decrypt files created using this method
@ -554,7 +554,7 @@ class Crypt {
* get chiper from header * get chiper from header
* *
* @param array $header * @param array $header
* @throws \OCA\Encryption\Exception\EncryptionException * @throws \OCA\Files_Encryption\Exception\EncryptionException
*/ */
public static function getCipher($header) { public static function getCipher($header) {
$cipher = isset($header['cipher']) ? $header['cipher'] : 'AES-128-CFB'; $cipher = isset($header['cipher']) ? $header['cipher'] : 'AES-128-CFB';

View File

@ -23,11 +23,11 @@
* *
*/ */
namespace OCA\Encryption; namespace OCA\Files_Encryption;
/** /**
* Class to manage registration of hooks an various helper methods * Class to manage registration of hooks an various helper methods
* @package OCA\Encryption * @package OCA\Files_Encryption
*/ */
class Helper { class Helper {
@ -39,9 +39,9 @@ class Helper {
*/ */
public static function registerShareHooks() { public static function registerShareHooks() {
\OCP\Util::connectHook('OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared'); \OCP\Util::connectHook('OCP\Share', 'pre_shared', 'OCA\Files_Encryption\Hooks', 'preShared');
\OCP\Util::connectHook('OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared'); \OCP\Util::connectHook('OCP\Share', 'post_shared', 'OCA\Files_Encryption\Hooks', 'postShared');
\OCP\Util::connectHook('OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare'); \OCP\Util::connectHook('OCP\Share', 'post_unshare', 'OCA\Files_Encryption\Hooks', 'postUnshare');
} }
/** /**
@ -50,12 +50,12 @@ class Helper {
*/ */
public static function registerUserHooks() { public static function registerUserHooks() {
\OCP\Util::connectHook('OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login'); \OCP\Util::connectHook('OC_User', 'post_login', 'OCA\Files_Encryption\Hooks', 'login');
\OCP\Util::connectHook('OC_User', 'logout', 'OCA\Encryption\Hooks', 'logout'); \OCP\Util::connectHook('OC_User', 'logout', 'OCA\Files_Encryption\Hooks', 'logout');
\OCP\Util::connectHook('OC_User', 'post_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase'); \OCP\Util::connectHook('OC_User', 'post_setPassword', 'OCA\Files_Encryption\Hooks', 'setPassphrase');
\OCP\Util::connectHook('OC_User', 'pre_setPassword', 'OCA\Encryption\Hooks', 'preSetPassphrase'); \OCP\Util::connectHook('OC_User', 'pre_setPassword', 'OCA\Files_Encryption\Hooks', 'preSetPassphrase');
\OCP\Util::connectHook('OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser'); \OCP\Util::connectHook('OC_User', 'post_createUser', 'OCA\Files_Encryption\Hooks', 'postCreateUser');
\OCP\Util::connectHook('OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser'); \OCP\Util::connectHook('OC_User', 'post_deleteUser', 'OCA\Files_Encryption\Hooks', 'postDeleteUser');
} }
/** /**
@ -64,15 +64,15 @@ class Helper {
*/ */
public static function registerFilesystemHooks() { public static function registerFilesystemHooks() {
\OCP\Util::connectHook('OC_Filesystem', 'rename', 'OCA\Encryption\Hooks', 'preRename'); \OCP\Util::connectHook('OC_Filesystem', 'rename', 'OCA\Files_Encryption\Hooks', 'preRename');
\OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRenameOrCopy'); \OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Files_Encryption\Hooks', 'postRenameOrCopy');
\OCP\Util::connectHook('OC_Filesystem', 'copy', 'OCA\Encryption\Hooks', 'preCopy'); \OCP\Util::connectHook('OC_Filesystem', 'copy', 'OCA\Files_Encryption\Hooks', 'preCopy');
\OCP\Util::connectHook('OC_Filesystem', 'post_copy', 'OCA\Encryption\Hooks', 'postRenameOrCopy'); \OCP\Util::connectHook('OC_Filesystem', 'post_copy', 'OCA\Files_Encryption\Hooks', 'postRenameOrCopy');
\OCP\Util::connectHook('OC_Filesystem', 'post_delete', 'OCA\Encryption\Hooks', 'postDelete'); \OCP\Util::connectHook('OC_Filesystem', 'post_delete', 'OCA\Files_Encryption\Hooks', 'postDelete');
\OCP\Util::connectHook('OC_Filesystem', 'delete', 'OCA\Encryption\Hooks', 'preDelete'); \OCP\Util::connectHook('OC_Filesystem', 'delete', 'OCA\Files_Encryption\Hooks', 'preDelete');
\OCP\Util::connectHook('\OC\Core\LostPassword\Controller\LostController', 'post_passwordReset', 'OCA\Encryption\Hooks', 'postPasswordReset'); \OCP\Util::connectHook('\OC\Core\LostPassword\Controller\LostController', 'post_passwordReset', 'OCA\Files_Encryption\Hooks', 'postPasswordReset');
\OCP\Util::connectHook('OC_Filesystem', 'post_umount', 'OCA\Encryption\Hooks', 'postUnmount'); \OCP\Util::connectHook('OC_Filesystem', 'post_umount', 'OCA\Files_Encryption\Hooks', 'postUnmount');
\OCP\Util::connectHook('OC_Filesystem', 'umount', 'OCA\Encryption\Hooks', 'preUnmount'); \OCP\Util::connectHook('OC_Filesystem', 'umount', 'OCA\Files_Encryption\Hooks', 'preUnmount');
} }
/** /**
@ -81,8 +81,8 @@ class Helper {
*/ */
public static function registerAppHooks() { public static function registerAppHooks() {
\OCP\Util::connectHook('OC_App', 'pre_disable', 'OCA\Encryption\Hooks', 'preDisable'); \OCP\Util::connectHook('OC_App', 'pre_disable', 'OCA\Files_Encryption\Hooks', 'preDisable');
\OCP\Util::connectHook('OC_App', 'post_disable', 'OCA\Encryption\Hooks', 'postEnable'); \OCP\Util::connectHook('OC_App', 'post_disable', 'OCA\Files_Encryption\Hooks', 'postEnable');
} }
/** /**
@ -131,8 +131,6 @@ class Helper {
* *
* @param string $recoveryKeyId * @param string $recoveryKeyId
* @param string $recoveryPassword * @param string $recoveryPassword
* @internal param \OCA\Encryption\Util $util
* @internal param string $password
* @return bool * @return bool
*/ */
public static function adminEnableRecovery($recoveryKeyId, $recoveryPassword) { public static function adminEnableRecovery($recoveryKeyId, $recoveryPassword) {
@ -147,13 +145,13 @@ class Helper {
if (!Keymanager::recoveryKeyExists($view)) { if (!Keymanager::recoveryKeyExists($view)) {
$keypair = \OCA\Encryption\Crypt::createKeypair(); $keypair = Crypt::createKeypair();
// Save public key // Save public key
Keymanager::setPublicKey($keypair['publicKey'], $recoveryKeyId); Keymanager::setPublicKey($keypair['publicKey'], $recoveryKeyId);
$cipher = \OCA\Encryption\Helper::getCipher(); $cipher = Helper::getCipher();
$encryptedKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($keypair['privateKey'], $recoveryPassword, $cipher); $encryptedKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], $recoveryPassword, $cipher);
if ($encryptedKey) { if ($encryptedKey) {
Keymanager::setPrivateSystemKey($encryptedKey, $recoveryKeyId); Keymanager::setPrivateSystemKey($encryptedKey, $recoveryKeyId);
// Set recoveryAdmin as enabled // Set recoveryAdmin as enabled
@ -162,7 +160,7 @@ class Helper {
} }
} else { // get recovery key and check the password } else { // get recovery key and check the password
$util = new \OCA\Encryption\Util(new \OC\Files\View('/'), \OCP\User::getUser()); $util = new Util(new \OC\Files\View('/'), \OCP\User::getUser());
$return = $util->checkRecoveryPassword($recoveryPassword); $return = $util->checkRecoveryPassword($recoveryPassword);
if ($return) { if ($return) {
$appConfig->setValue('files_encryption', 'recoveryAdminEnabled', 1); $appConfig->setValue('files_encryption', 'recoveryAdminEnabled', 1);
@ -362,14 +360,14 @@ class Helper {
if ($errorCode === null) { if ($errorCode === null) {
$init = $session->getInitialized(); $init = $session->getInitialized();
switch ($init) { switch ($init) {
case \OCA\Encryption\Session::INIT_EXECUTED: case Session::INIT_EXECUTED:
$errorCode = \OCA\Encryption\Crypt::ENCRYPTION_PRIVATE_KEY_NOT_VALID_ERROR; $errorCode = Crypt::ENCRYPTION_PRIVATE_KEY_NOT_VALID_ERROR;
break; break;
case \OCA\Encryption\Session::NOT_INITIALIZED: case Session::NOT_INITIALIZED:
$errorCode = \OCA\Encryption\Crypt::ENCRYPTION_NOT_INITIALIZED_ERROR; $errorCode = Crypt::ENCRYPTION_NOT_INITIALIZED_ERROR;
break; break;
default: default:
$errorCode = \OCA\Encryption\Crypt::ENCRYPTION_UNKNOWN_ERROR; $errorCode = Crypt::ENCRYPTION_UNKNOWN_ERROR;
} }
} }

View File

@ -23,7 +23,7 @@
* *
*/ */
namespace OCA\Encryption; namespace OCA\Files_Encryption;
use OC\Files\Filesystem; use OC\Files\Filesystem;
@ -59,7 +59,7 @@ class Hooks {
\OC_Util::setupFS($params['uid']); \OC_Util::setupFS($params['uid']);
} }
$privateKey = \OCA\Encryption\Keymanager::getPrivateKey($view, $params['uid']); $privateKey = Keymanager::getPrivateKey($view, $params['uid']);
// if no private key exists, check server configuration // if no private key exists, check server configuration
if (!$privateKey) { if (!$privateKey) {
@ -128,7 +128,7 @@ class Hooks {
* remove keys from session during logout * remove keys from session during logout
*/ */
public static function logout() { public static function logout() {
$session = new \OCA\Encryption\Session(new \OC\Files\View()); $session = new Session(new \OC\Files\View());
$session->removeKeys(); $session->removeKeys();
} }
@ -182,7 +182,7 @@ class Hooks {
if (Crypt::mode() === 'server') { if (Crypt::mode() === 'server') {
$view = new \OC\Files\View('/'); $view = new \OC\Files\View('/');
$session = new \OCA\Encryption\Session($view); $session = new Session($view);
// Get existing decrypted private key // Get existing decrypted private key
$privateKey = $session->getPrivateKey(); $privateKey = $session->getPrivateKey();
@ -236,7 +236,7 @@ class Hooks {
Keymanager::setPublicKey($keypair['publicKey'], $user); Keymanager::setPublicKey($keypair['publicKey'], $user);
// Encrypt private key with new password // Encrypt private key with new password
$encryptedKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($keypair['privateKey'], $newUserPassword, Helper::getCipher()); $encryptedKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], $newUserPassword, Helper::getCipher());
if ($encryptedKey) { if ($encryptedKey) {
Keymanager::setPrivateKey($encryptedKey, $user); Keymanager::setPrivateKey($encryptedKey, $user);
@ -331,7 +331,7 @@ class Hooks {
private static function updateKeyfiles($path) { private static function updateKeyfiles($path) {
$view = new \OC\Files\View('/'); $view = new \OC\Files\View('/');
$userId = \OCP\User::getUser(); $userId = \OCP\User::getUser();
$session = new \OCA\Encryption\Session($view); $session = new Session($view);
$util = new Util($view, $userId); $util = new Util($view, $userId);
$sharingEnabled = \OCP\Share::isEnabled(); $sharingEnabled = \OCP\Share::isEnabled();
@ -504,8 +504,8 @@ class Hooks {
\OC::$server->getConfig()->deleteAppFromAllUsers('files_encryption'); \OC::$server->getConfig()->deleteAppFromAllUsers('files_encryption');
$session = new \OCA\Encryption\Session(new \OC\Files\View('/')); $session = new Session(new \OC\Files\View('/'));
$session->setInitialized(\OCA\Encryption\Session::NOT_INITIALIZED); $session->setInitialized(Session::NOT_INITIALIZED);
} }
} }
@ -515,8 +515,8 @@ class Hooks {
*/ */
public static function postEnable($params) { public static function postEnable($params) {
if ($params['app'] === 'files_encryption') { if ($params['app'] === 'files_encryption') {
$session = new \OCA\Encryption\Session(new \OC\Files\View('/')); $session = new Session(new \OC\Files\View('/'));
$session->setInitialized(\OCA\Encryption\Session::NOT_INITIALIZED); $session->setInitialized(Session::NOT_INITIALIZED);
} }
} }

View File

@ -22,7 +22,7 @@
* *
*/ */
namespace OCA\Encryption; namespace OCA\Files_Encryption;
/** /**
* Class to manage storage and retrieval of encryption keys * Class to manage storage and retrieval of encryption keys
@ -141,7 +141,7 @@ class Keymanager {
* store file encryption key * store file encryption key
* *
* @param \OC\Files\View $view * @param \OC\Files\View $view
* @param \OCA\Encryption\Util $util * @param \OCA\Files_Encryption\Util $util
* @param string $path relative path of the file, including filename * @param string $path relative path of the file, including filename
* @param string $catfile keyfile content * @param string $catfile keyfile content
* @return bool true/false * @return bool true/false
@ -158,7 +158,7 @@ class Keymanager {
* get path to key folder for a given file * get path to key folder for a given file
* *
* @param \OC\Files\View $view relative to data directory * @param \OC\Files\View $view relative to data directory
* @param \OCA\Encryption\Util $util * @param \OCA\Files_Encryption\Util $util
* @param string $path path to the file, relative to the users file directory * @param string $path path to the file, relative to the users file directory
* @return string * @return string
*/ */
@ -186,7 +186,7 @@ class Keymanager {
* get path to file key for a given file * get path to file key for a given file
* *
* @param \OC\Files\View $view relative to data directory * @param \OC\Files\View $view relative to data directory
* @param \OCA\Encryption\Util $util * @param \OCA\Files_Encryption\Util $util
* @param string $path path to the file, relative to the users file directory * @param string $path path to the file, relative to the users file directory
* @return string * @return string
*/ */
@ -199,7 +199,7 @@ class Keymanager {
* get path to share key for a given user * get path to share key for a given user
* *
* @param \OC\Files\View $view relateive to data directory * @param \OC\Files\View $view relateive to data directory
* @param \OCA\Encryption\Util $util * @param \OCA\Files_Encryption\Util $util
* @param string $path path to file relative to the users files directoy * @param string $path path to file relative to the users files directoy
* @param string $uid user for whom we want the share-key path * @param string $uid user for whom we want the share-key path
* @retrun string * @retrun string
@ -243,9 +243,8 @@ class Keymanager {
/** /**
* retrieve keyfile for an encrypted file * retrieve keyfile for an encrypted file
* @param \OC\Files\View $view * @param \OC\Files\View $view
* @param \OCA\Encryption\Util $util * @param \OCA\Files_Encryption\Util $util
* @param string|false $filePath * @param string|false $filePath
* @internal param \OCA\Encryption\file $string name
* @return string file key or false * @return string file key or false
* @note The keyfile returned is asymmetrically encrypted. Decryption * @note The keyfile returned is asymmetrically encrypted. Decryption
* of the keyfile must be performed by client code * of the keyfile must be performed by client code
@ -347,7 +346,7 @@ class Keymanager {
/** /**
* store multiple share keys for a single file * store multiple share keys for a single file
* @param \OC\Files\View $view * @param \OC\Files\View $view
* @param \OCA\Encryption\Util $util * @param \OCA\Files_Encryption\Util $util
* @param string $path * @param string $path
* @param array $shareKeys * @param array $shareKeys
* @return bool * @return bool
@ -376,7 +375,7 @@ class Keymanager {
* retrieve shareKey for an encrypted file * retrieve shareKey for an encrypted file
* @param \OC\Files\View $view * @param \OC\Files\View $view
* @param string $userId * @param string $userId
* @param \OCA\Encryption\Util $util * @param \OCA\Files_Encryption\Util $util
* @param string $filePath * @param string $filePath
* @return string file key or false * @return string file key or false
* @note The sharekey returned is encrypted. Decryption * @note The sharekey returned is encrypted. Decryption

View File

@ -35,8 +35,8 @@ class Migration {
public function __construct() { public function __construct() {
$this->view = new \OC\Files\View(); $this->view = new \OC\Files\View();
$this->public_share_key_id = \OCA\Encryption\Helper::getPublicShareKeyId(); $this->public_share_key_id = Helper::getPublicShareKeyId();
$this->recovery_key_id = \OCA\Encryption\Helper::getRecoveryKeyId(); $this->recovery_key_id = Helper::getRecoveryKeyId();
} }
public function reorganizeFolderStructure() { public function reorganizeFolderStructure() {

View File

@ -30,11 +30,11 @@
* webui. * webui.
*/ */
namespace OCA\Encryption; namespace OCA\Files_Encryption;
/** /**
* Class Proxy * Class Proxy
* @package OCA\Encryption * @package OCA\Files_Encryption
*/ */
class Proxy extends \OC_FileProxy { class Proxy extends \OC_FileProxy {
@ -130,7 +130,7 @@ class Proxy extends \OC_FileProxy {
$view = new \OC\Files\View('/'); $view = new \OC\Files\View('/');
// get relative path // get relative path
$relativePath = \OCA\Encryption\Helper::stripUserFilesPath($path); $relativePath = Helper::stripUserFilesPath($path);
if (!isset($relativePath)) { if (!isset($relativePath)) {
return true; return true;
@ -338,7 +338,7 @@ class Proxy extends \OC_FileProxy {
} }
// get relative path // get relative path
$relativePath = \OCA\Encryption\Helper::stripUserFilesPath($path); $relativePath = Helper::stripUserFilesPath($path);
// if path is empty we cannot resolve anything // if path is empty we cannot resolve anything
if (empty($relativePath)) { if (empty($relativePath)) {

View File

@ -22,7 +22,7 @@
* *
*/ */
namespace OCA\Encryption; namespace OCA\Files_Encryption;
/** /**
* Class for handling encryption related session data * Class for handling encryption related session data
@ -72,8 +72,8 @@ class Session {
Keymanager::setPublicKey($keypair['publicKey'], $publicShareKeyId); Keymanager::setPublicKey($keypair['publicKey'], $publicShareKeyId);
// Encrypt private key empty passphrase // Encrypt private key empty passphrase
$cipher = \OCA\Encryption\Helper::getCipher(); $cipher = Helper::getCipher();
$encryptedKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($keypair['privateKey'], '', $cipher); $encryptedKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], '', $cipher);
if ($encryptedKey) { if ($encryptedKey) {
Keymanager::setPrivateSystemKey($encryptedKey, $publicShareKeyId); Keymanager::setPrivateSystemKey($encryptedKey, $publicShareKeyId);
} else { } else {
@ -82,7 +82,7 @@ class Session {
} }
if (\OCA\Encryption\Helper::isPublicAccess() && !self::getPublicSharePrivateKey()) { if (Helper::isPublicAccess() && !self::getPublicSharePrivateKey()) {
// Disable encryption proxy to prevent recursive calls // Disable encryption proxy to prevent recursive calls
$proxyStatus = \OC_FileProxy::$enabled; $proxyStatus = \OC_FileProxy::$enabled;
\OC_FileProxy::$enabled = false; \OC_FileProxy::$enabled = false;
@ -151,7 +151,7 @@ class Session {
public function getInitialized() { public function getInitialized() {
if (!is_null(\OC::$server->getSession()->get('encryptionInitialized'))) { if (!is_null(\OC::$server->getSession()->get('encryptionInitialized'))) {
return \OC::$server->getSession()->get('encryptionInitialized'); return \OC::$server->getSession()->get('encryptionInitialized');
} else if (\OCA\Encryption\Helper::isPublicAccess() && self::getPublicSharePrivateKey()) { } else if (Helper::isPublicAccess() && self::getPublicSharePrivateKey()) {
return self::INIT_SUCCESSFUL; return self::INIT_SUCCESSFUL;
} else { } else {
return self::NOT_INITIALIZED; return self::NOT_INITIALIZED;
@ -165,7 +165,7 @@ class Session {
*/ */
public function getPrivateKey() { public function getPrivateKey() {
// return the public share private key if this is a public access // return the public share private key if this is a public access
if (\OCA\Encryption\Helper::isPublicAccess()) { if (Helper::isPublicAccess()) {
return self::getPublicSharePrivateKey(); return self::getPublicSharePrivateKey();
} else { } else {
if (!is_null(\OC::$server->getSession()->get('privateKey'))) { if (!is_null(\OC::$server->getSession()->get('privateKey'))) {

View File

@ -30,8 +30,9 @@
* and then fopen('crypt://streams/foo'); * and then fopen('crypt://streams/foo');
*/ */
namespace OCA\Encryption; namespace OCA\Files_Encryption;
use OCA\Encryption\Exception\EncryptionException;
use OCA\Files_Encryption\Exception\EncryptionException;
/** /**
* Provides 'crypt://' stream wrapper protocol. * Provides 'crypt://' stream wrapper protocol.
@ -81,7 +82,7 @@ class Stream {
private $rootView; // a fsview object set to '/' private $rootView; // a fsview object set to '/'
/** /**
* @var \OCA\Encryption\Session * @var \OCA\Files_Encryption\Session
*/ */
private $session; private $session;
private $privateKey; private $privateKey;
@ -92,7 +93,7 @@ class Stream {
* @param int $options * @param int $options
* @param string $opened_path * @param string $opened_path
* @return bool * @return bool
* @throw \OCA\Encryption\Exception\EncryptionException * @throw \OCA\Files_Encryption\Exception\EncryptionException
*/ */
public function stream_open($path, $mode, $options, &$opened_path) { public function stream_open($path, $mode, $options, &$opened_path) {
@ -106,7 +107,7 @@ class Stream {
$this->rootView = new \OC\Files\View('/'); $this->rootView = new \OC\Files\View('/');
} }
$this->session = new \OCA\Encryption\Session($this->rootView); $this->session = new Session($this->rootView);
$this->privateKey = $this->session->getPrivateKey(); $this->privateKey = $this->session->getPrivateKey();
if ($this->privateKey === false) { if ($this->privateKey === false) {
@ -162,7 +163,7 @@ class Stream {
if($this->privateKey === false) { if($this->privateKey === false) {
// if private key is not valid redirect user to a error page // if private key is not valid redirect user to a error page
\OCA\Encryption\Helper::redirectToErrorPage($this->session); Helper::redirectToErrorPage($this->session);
} }
$this->size = $this->rootView->filesize($this->rawPath); $this->size = $this->rootView->filesize($this->rawPath);
@ -251,7 +252,7 @@ class Stream {
/** /**
* @param int $count * @param int $count
* @return bool|string * @return bool|string
* @throws \OCA\Encryption\Exception\EncryptionException * @throws \OCA\Files_Encryption\Exception\EncryptionException
*/ */
public function stream_read($count) { public function stream_read($count) {
@ -329,7 +330,7 @@ class Stream {
// Fetch and decrypt keyfile // Fetch and decrypt keyfile
// Fetch existing keyfile // Fetch existing keyfile
$util = new \OCA\Encryption\Util($this->rootView, $this->userId); $util = new Util($this->rootView, $this->userId);
$this->encKeyfile = Keymanager::getFileKey($this->rootView, $util, $this->relPath); $this->encKeyfile = Keymanager::getFileKey($this->rootView, $util, $this->relPath);
// If a keyfile already exists // If a keyfile already exists
@ -340,13 +341,13 @@ class Stream {
// if there is no valid private key return false // if there is no valid private key return false
if ($this->privateKey === false) { if ($this->privateKey === false) {
// if private key is not valid redirect user to a error page // if private key is not valid redirect user to a error page
\OCA\Encryption\Helper::redirectToErrorPage($this->session); Helper::redirectToErrorPage($this->session);
return false; return false;
} }
if ($shareKey === false) { if ($shareKey === false) {
// if no share key is available redirect user to a error page // if no share key is available redirect user to a error page
\OCA\Encryption\Helper::redirectToErrorPage($this->session, \OCA\Encryption\Crypt::ENCRYPTION_NO_SHARE_KEY_FOUND); Helper::redirectToErrorPage($this->session, Crypt::ENCRYPTION_NO_SHARE_KEY_FOUND);
return false; return false;
} }
@ -367,7 +368,7 @@ class Stream {
/** /**
* write header at beginning of encrypted file * write header at beginning of encrypted file
* *
* @throws Exception\EncryptionException * @throws \OCA\Files_Encryption\Exception\EncryptionException
*/ */
private function writeHeader() { private function writeHeader() {
@ -589,7 +590,7 @@ class Stream {
} }
// if private key is not valid redirect user to a error page // if private key is not valid redirect user to a error page
\OCA\Encryption\Helper::redirectToErrorPage($this->session); Helper::redirectToErrorPage($this->session);
} }
if ( if (

View File

@ -23,7 +23,7 @@
* *
*/ */
namespace OCA\Encryption; namespace OCA\Files_Encryption;
/** /**
* Class for utilities relating to encrypted file storage system * Class for utilities relating to encrypted file storage system
@ -83,7 +83,7 @@ class Util {
// make sure that the owners home is mounted // make sure that the owners home is mounted
\OC\Files\Filesystem::initMountPoints($userId); \OC\Files\Filesystem::initMountPoints($userId);
if (\OCA\Encryption\Helper::isPublicAccess()) { if (Helper::isPublicAccess()) {
$this->keyId = $this->publicShareKeyId; $this->keyId = $this->publicShareKeyId;
$this->isPublic = true; $this->isPublic = true;
} else { } else {
@ -277,7 +277,7 @@ class Util {
if ($file !== "." && $file !== "..") { if ($file !== "." && $file !== "..") {
$filePath = $directory . '/' . $this->view->getRelativePath('/' . $file); $filePath = $directory . '/' . $this->view->getRelativePath('/' . $file);
$relPath = \OCA\Encryption\Helper::stripUserFilesPath($filePath); $relPath = Helper::stripUserFilesPath($filePath);
// If the path is a directory, search // If the path is a directory, search
// its contents // its contents
@ -451,13 +451,13 @@ class Util {
} }
} }
fclose($stream); fclose($stream);
$relPath = \OCA\Encryption\Helper::stripUserFilesPath($path); $relPath = Helper::stripUserFilesPath($path);
$shareKey = Keymanager::getShareKey($this->view, $this->keyId, $this, $relPath); $shareKey = Keymanager::getShareKey($this->view, $this->keyId, $this, $relPath);
if($shareKey===false) { if($shareKey===false) {
\OC_FileProxy::$enabled = $proxyStatus; \OC_FileProxy::$enabled = $proxyStatus;
return $result; return $result;
} }
$session = new \OCA\Encryption\Session($this->view); $session = new Session($this->view);
$privateKey = $session->getPrivateKey(); $privateKey = $session->getPrivateKey();
$plainKeyfile = $this->decryptKeyfile($relPath, $privateKey); $plainKeyfile = $this->decryptKeyfile($relPath, $privateKey);
$plainKey = Crypt::multiKeyDecrypt($plainKeyfile, $shareKey, $privateKey); $plainKey = Crypt::multiKeyDecrypt($plainKeyfile, $shareKey, $privateKey);
@ -1040,7 +1040,7 @@ class Util {
// Make sure that a share key is generated for the owner too // Make sure that a share key is generated for the owner too
list($owner, $ownerPath) = $this->getUidAndFilename($filePath); list($owner, $ownerPath) = $this->getUidAndFilename($filePath);
$ownerPath = \OCA\Encryption\Helper::stripPartialFileExtension($ownerPath); $ownerPath = Helper::stripPartialFileExtension($ownerPath);
// always add owner to the list of users with access to the file // always add owner to the list of users with access to the file
$userIds = array($owner); $userIds = array($owner);
@ -1402,7 +1402,7 @@ class Util {
if ($this->view->is_dir($this->userFilesDir . '/' . $filePath)) { if ($this->view->is_dir($this->userFilesDir . '/' . $filePath)) {
$this->addRecoveryKeys($filePath . '/'); $this->addRecoveryKeys($filePath . '/');
} else { } else {
$session = new \OCA\Encryption\Session(new \OC\Files\View('/')); $session = new Session(new \OC\Files\View('/'));
$sharingEnabled = \OCP\Share::isEnabled(); $sharingEnabled = \OCP\Share::isEnabled();
$usersSharing = $this->getSharingUsersArray($sharingEnabled, $filePath); $usersSharing = $this->getSharingUsersArray($sharingEnabled, $filePath);
$this->setSharedFileKeyfiles($session, $usersSharing, $filePath); $this->setSharedFileKeyfiles($session, $usersSharing, $filePath);
@ -1559,10 +1559,10 @@ class Util {
*/ */
public function initEncryption($params) { public function initEncryption($params) {
$session = new \OCA\Encryption\Session($this->view); $session = new Session($this->view);
// we tried to initialize the encryption app for this session // we tried to initialize the encryption app for this session
$session->setInitialized(\OCA\Encryption\Session::INIT_EXECUTED); $session->setInitialized(Session::INIT_EXECUTED);
$encryptedKey = Keymanager::getPrivateKey($this->view, $params['uid']); $encryptedKey = Keymanager::getPrivateKey($this->view, $params['uid']);
@ -1578,7 +1578,7 @@ class Util {
} }
$session->setPrivateKey($privateKey); $session->setPrivateKey($privateKey);
$session->setInitialized(\OCA\Encryption\Session::INIT_SUCCESSFUL); $session->setInitialized(Session::INIT_SUCCESSFUL);
return $session; return $session;
} }
@ -1587,7 +1587,7 @@ class Util {
* remove encryption related keys from the session * remove encryption related keys from the session
*/ */
public function closeEncryptionSession() { public function closeEncryptionSession() {
$session = new \OCA\Encryption\Session($this->view); $session = new Session($this->view);
$session->closeSession(); $session->closeSession();
} }

View File

@ -12,7 +12,7 @@ $tmpl = new OCP\Template('files_encryption', 'settings-admin');
// Check if an adminRecovery account is enabled for recovering files after lost pwd // Check if an adminRecovery account is enabled for recovering files after lost pwd
$recoveryAdminEnabled = \OC::$server->getAppConfig()->getValue('files_encryption', 'recoveryAdminEnabled', '0'); $recoveryAdminEnabled = \OC::$server->getAppConfig()->getValue('files_encryption', 'recoveryAdminEnabled', '0');
$session = new \OCA\Encryption\Session(new \OC\Files\View('/')); $session = new \OCA\Files_Encryption\Session(new \OC\Files\View('/'));
$initStatus = $session->getInitialized(); $initStatus = $session->getInitialized();
$tmpl->assign('recoveryEnabled', $recoveryAdminEnabled); $tmpl->assign('recoveryEnabled', $recoveryAdminEnabled);

View File

@ -13,8 +13,8 @@ $tmpl = new OCP\Template('files_encryption', 'settings-personal');
$user = \OCP\USER::getUser(); $user = \OCP\USER::getUser();
$view = new \OC\Files\View('/'); $view = new \OC\Files\View('/');
$util = new \OCA\Encryption\Util($view, $user); $util = new \OCA\Files_Encryption\Util($view, $user);
$session = new \OCA\Encryption\Session($view); $session = new \OCA\Files_Encryption\Session($view);
$privateKeySet = $session->getPrivateKey() !== false; $privateKeySet = $session->getPrivateKey() !== false;
// did we tried to initialize the keys for this session? // did we tried to initialize the keys for this session?

View File

@ -4,7 +4,7 @@
<?php p($_['message']); ?> <?php p($_['message']); ?>
<br/> <br/>
<?php if($_['errorCode'] === \OCA\Encryption\Crypt::ENCRYPTION_PRIVATE_KEY_NOT_VALID_ERROR): ?> <?php if($_['errorCode'] === \OCA\Files_Encryption\Crypt::ENCRYPTION_PRIVATE_KEY_NOT_VALID_ERROR): ?>
<?php p($l->t('Go directly to your %spersonal settings%s.', array('<a href="'.$location.'">', '</a>'))); ?> <?php p($l->t('Go directly to your %spersonal settings%s.', array('<a href="'.$location.'">', '</a>'))); ?>
<?php endif; ?> <?php endif; ?>
<br/> <br/>

View File

@ -1,7 +1,7 @@
<form id="encryption" class="section"> <form id="encryption" class="section">
<h2><?php p($l->t('Encryption')); ?></h2> <h2><?php p($l->t('Encryption')); ?></h2>
<?php if($_["initStatus"] === \OCA\Encryption\Session::NOT_INITIALIZED): ?> <?php if($_["initStatus"] === \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 p($l->t("Encryption App is enabled but your keys are not initialized, please log-out and log-in again")); ?>
<?php else: ?> <?php else: ?>
<p id="encryptionSetRecoveryKey"> <p id="encryptionSetRecoveryKey">

View File

@ -1,11 +1,11 @@
<form id="encryption" class="section"> <form id="encryption" class="section">
<h2><?php p( $l->t( 'Encryption' ) ); ?></h2> <h2><?php p( $l->t( 'Encryption' ) ); ?></h2>
<?php if ( $_["initialized"] === \OCA\Encryption\Session::NOT_INITIALIZED ): ?> <?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 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 ): ?> <?php elseif ( $_["initialized"] === \OCA\Files_Encryption\Session::INIT_EXECUTED ): ?>
<p> <p>
<a name="changePKPasswd" /> <a name="changePKPasswd" />
<label for="changePrivateKeyPasswd"> <label for="changePrivateKeyPasswd">
@ -37,7 +37,7 @@
<span class="msg"></span> <span class="msg"></span>
</p> </p>
<?php elseif ( $_["recoveryEnabled"] && $_["privateKeySet"] && $_["initialized"] === \OCA\Encryption\Session::INIT_SUCCESSFUL ): ?> <?php elseif ( $_["recoveryEnabled"] && $_["privateKeySet"] && $_["initialized"] === \OCA\Files_Encryption\Session::INIT_SUCCESSFUL ): ?>
<br /> <br />
<p id="userEnableRecovery"> <p id="userEnableRecovery">
<label for="userEnableRecovery"><?php p( $l->t( "Enable password recovery:" ) ); ?></label> <label for="userEnableRecovery"><?php p( $l->t( "Enable password recovery:" ) ); ?></label>

View File

@ -7,12 +7,12 @@
* See the COPYING-README file. * See the COPYING-README file.
*/ */
use OCA\Encryption; namespace OCA\Files_Encryption\Tests;
/** /**
* Class Test_Encryption_Crypt * Class Crypt
*/ */
class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase { class Crypt extends TestCase {
const TEST_ENCRYPTION_CRYPT_USER1 = "test-crypt-user1"; const TEST_ENCRYPTION_CRYPT_USER1 = "test-crypt-user1";
@ -23,7 +23,7 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
public $dataUrl; public $dataUrl;
public $dataShort; public $dataShort;
/** /**
* @var OC\Files\View * @var \OC\Files\View
*/ */
public $view; public $view;
public $legacyEncryptedData; public $legacyEncryptedData;
@ -34,16 +34,16 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
parent::setUpBeforeClass(); parent::setUpBeforeClass();
// create test user // create test user
self::loginHelper(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1, true); self::loginHelper(self::TEST_ENCRYPTION_CRYPT_USER1, true);
} }
protected function setUp() { protected function setUp() {
parent::setUp(); parent::setUp();
// set user id // set user id
self::loginHelper(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1); self::loginHelper(self::TEST_ENCRYPTION_CRYPT_USER1);
$this->userId = \Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1; $this->userId = self::TEST_ENCRYPTION_CRYPT_USER1;
$this->pass = \Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1; $this->pass = self::TEST_ENCRYPTION_CRYPT_USER1;
// set content for encrypting / decrypting in tests // set content for encrypting / decrypting in tests
$this->dataLong = file_get_contents(__DIR__ . '/../lib/crypt.php'); $this->dataLong = file_get_contents(__DIR__ . '/../lib/crypt.php');
@ -52,16 +52,16 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
$this->legacyData = __DIR__ . '/legacy-text.txt'; $this->legacyData = __DIR__ . '/legacy-text.txt';
$this->legacyEncryptedData = __DIR__ . '/legacy-encrypted-text.txt'; $this->legacyEncryptedData = __DIR__ . '/legacy-encrypted-text.txt';
$this->legacyEncryptedDataKey = __DIR__ . '/encryption.key'; $this->legacyEncryptedDataKey = __DIR__ . '/encryption.key';
$this->randomKey = Encryption\Crypt::generateKey(); $this->randomKey = \OCA\Files_Encryption\Crypt::generateKey();
$keypair = Encryption\Crypt::createKeypair(); $keypair = \OCA\Files_Encryption\Crypt::createKeypair();
$this->genPublicKey = $keypair['publicKey']; $this->genPublicKey = $keypair['publicKey'];
$this->genPrivateKey = $keypair['privateKey']; $this->genPrivateKey = $keypair['privateKey'];
$this->view = new \OC\Files\View('/'); $this->view = new \OC\Files\View('/');
// remember files_trashbin state // remember files_trashbin state
$this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); $this->stateFilesTrashbin = \OC_App::isEnabled('files_trashbin');
// we don't want to tests with app files_trashbin enabled // we don't want to tests with app files_trashbin enabled
\OC_App::disable('files_trashbin'); \OC_App::disable('files_trashbin');
@ -70,9 +70,9 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
protected function tearDown() { protected function tearDown() {
// reset app files_trashbin // reset app files_trashbin
if ($this->stateFilesTrashbin) { if ($this->stateFilesTrashbin) {
OC_App::enable('files_trashbin'); \OC_App::enable('files_trashbin');
} else { } else {
OC_App::disable('files_trashbin'); \OC_App::disable('files_trashbin');
} }
$this->assertTrue(\OC_FileProxy::$enabled); $this->assertTrue(\OC_FileProxy::$enabled);
@ -83,7 +83,7 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
public static function tearDownAfterClass() { public static function tearDownAfterClass() {
// cleanup test user // cleanup test user
\OC_User::deleteUser(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1); \OC_User::deleteUser(self::TEST_ENCRYPTION_CRYPT_USER1);
parent::tearDownAfterClass(); parent::tearDownAfterClass();
} }
@ -95,7 +95,7 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
# TODO: use more accurate (larger) string length for test confirmation # TODO: use more accurate (larger) string length for test confirmation
$key = Encryption\Crypt::generateKey(); $key = \OCA\Files_Encryption\Crypt::generateKey();
$this->assertTrue(strlen($key) > 16); $this->assertTrue(strlen($key) > 16);
@ -104,16 +104,16 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
public function testDecryptPrivateKey() { public function testDecryptPrivateKey() {
// test successful decrypt // test successful decrypt
$crypted = Encryption\Crypt::symmetricEncryptFileContent($this->genPrivateKey, 'hat'); $crypted = \OCA\Files_Encryption\Crypt::symmetricEncryptFileContent($this->genPrivateKey, 'hat');
$header = Encryption\Crypt::generateHeader(); $header = \OCA\Files_Encryption\Crypt::generateHeader();
$decrypted = Encryption\Crypt::decryptPrivateKey($header . $crypted, 'hat'); $decrypted = \OCA\Files_Encryption\Crypt::decryptPrivateKey($header . $crypted, 'hat');
$this->assertEquals($this->genPrivateKey, $decrypted); $this->assertEquals($this->genPrivateKey, $decrypted);
//test private key decrypt with wrong password //test private key decrypt with wrong password
$wrongPasswd = Encryption\Crypt::decryptPrivateKey($crypted, 'hat2'); $wrongPasswd = \OCA\Files_Encryption\Crypt::decryptPrivateKey($crypted, 'hat2');
$this->assertEquals(false, $wrongPasswd); $this->assertEquals(false, $wrongPasswd);
@ -127,12 +127,12 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
# TODO: search in keyfile for actual content as IV will ensure this test always passes # TODO: search in keyfile for actual content as IV will ensure this test always passes
$crypted = Encryption\Crypt::symmetricEncryptFileContent($this->dataShort, 'hat'); $crypted = \OCA\Files_Encryption\Crypt::symmetricEncryptFileContent($this->dataShort, 'hat');
$this->assertNotEquals($this->dataShort, $crypted); $this->assertNotEquals($this->dataShort, $crypted);
$decrypt = Encryption\Crypt::symmetricDecryptFileContent($crypted, 'hat'); $decrypt = \OCA\Files_Encryption\Crypt::symmetricDecryptFileContent($crypted, 'hat');
$this->assertEquals($this->dataShort, $decrypt); $this->assertEquals($this->dataShort, $decrypt);
@ -145,12 +145,12 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
# TODO: search in keyfile for actual content as IV will ensure this test always passes # TODO: search in keyfile for actual content as IV will ensure this test always passes
$crypted = Encryption\Crypt::symmetricEncryptFileContent($this->dataShort, 'hat', 'AES-128-CFB'); $crypted = \OCA\Files_Encryption\Crypt::symmetricEncryptFileContent($this->dataShort, 'hat', 'AES-128-CFB');
$this->assertNotEquals($this->dataShort, $crypted); $this->assertNotEquals($this->dataShort, $crypted);
$decrypt = Encryption\Crypt::symmetricDecryptFileContent($crypted, 'hat', 'AES-128-CFB'); $decrypt = \OCA\Files_Encryption\Crypt::symmetricDecryptFileContent($crypted, 'hat', 'AES-128-CFB');
$this->assertEquals($this->dataShort, $decrypt); $this->assertEquals($this->dataShort, $decrypt);
@ -348,7 +348,7 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
// remove the header to check if we can also decrypt old files without a header, // remove the header to check if we can also decrypt old files without a header,
// this files should fall back to AES-128 // this files should fall back to AES-128
$cryptedWithoutHeader = substr($retreivedCryptedFile, Encryption\Crypt::BLOCKSIZE); $cryptedWithoutHeader = substr($retreivedCryptedFile, \OCA\Files_Encryption\Crypt::BLOCKSIZE);
$this->view->file_put_contents($this->userId . '/files/' . $filename, $cryptedWithoutHeader); $this->view->file_put_contents($this->userId . '/files/' . $filename, $cryptedWithoutHeader);
// Re-enable proxy - our work is done // Re-enable proxy - our work is done
@ -367,13 +367,13 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
*/ */
public function testIsEncryptedContent() { public function testIsEncryptedContent() {
$this->assertFalse(Encryption\Crypt::isCatfileContent($this->dataUrl)); $this->assertFalse(\OCA\Files_Encryption\Crypt::isCatfileContent($this->dataUrl));
$this->assertFalse(Encryption\Crypt::isCatfileContent($this->legacyEncryptedData)); $this->assertFalse(\OCA\Files_Encryption\Crypt::isCatfileContent($this->legacyEncryptedData));
$keyfileContent = Encryption\Crypt::symmetricEncryptFileContent($this->dataUrl, 'hat', 'AES-128-CFB'); $keyfileContent = \OCA\Files_Encryption\Crypt::symmetricEncryptFileContent($this->dataUrl, 'hat', 'AES-128-CFB');
$this->assertTrue(Encryption\Crypt::isCatfileContent($keyfileContent)); $this->assertTrue(\OCA\Files_Encryption\Crypt::isCatfileContent($keyfileContent));
} }
@ -384,7 +384,7 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
# TODO: search in keyfile for actual content as IV will ensure this test always passes # TODO: search in keyfile for actual content as IV will ensure this test always passes
$pair1 = Encryption\Crypt::createKeypair(); $pair1 = \OCA\Files_Encryption\Crypt::createKeypair();
$this->assertEquals(2, count($pair1)); $this->assertEquals(2, count($pair1));
@ -393,12 +393,12 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
$this->assertTrue(strlen($pair1['privateKey']) > 1); $this->assertTrue(strlen($pair1['privateKey']) > 1);
$crypted = Encryption\Crypt::multiKeyEncrypt($this->dataShort, array($pair1['publicKey'])); $crypted = \OCA\Files_Encryption\Crypt::multiKeyEncrypt($this->dataShort, array($pair1['publicKey']));
$this->assertNotEquals($this->dataShort, $crypted['data']); $this->assertNotEquals($this->dataShort, $crypted['data']);
$decrypt = Encryption\Crypt::multiKeyDecrypt($crypted['data'], $crypted['keys'][0], $pair1['privateKey']); $decrypt = \OCA\Files_Encryption\Crypt::multiKeyDecrypt($crypted['data'], $crypted['keys'][0], $pair1['privateKey']);
$this->assertEquals($this->dataShort, $decrypt); $this->assertEquals($this->dataShort, $decrypt);
@ -529,7 +529,7 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
// relogin // relogin
$params['uid'] = $this->userId; $params['uid'] = $this->userId;
$params['password'] = 'test'; $params['password'] = 'test';
OCA\Encryption\Hooks::login($params); \OCA\Files_Encryption\Hooks::login($params);
// Get file decrypted contents // Get file decrypted contents
$newDecrypt = file_get_contents('crypt:///' . $this->userId . '/files/' . $filename); $newDecrypt = file_get_contents('crypt:///' . $this->userId . '/files/' . $filename);

View File

@ -6,35 +6,35 @@
* See the COPYING-README file. * See the COPYING-README file.
*/ */
use OCA\Encryption; namespace OCA\Files_Encryption\Tests;
/** /**
* Class Test_Encryption_Helper * Class Helper
*/ */
class Test_Encryption_Helper extends \OCA\Files_Encryption\Tests\TestCase { class Helper extends TestCase {
const TEST_ENCRYPTION_HELPER_USER1 = "test-helper-user1"; const TEST_ENCRYPTION_HELPER_USER1 = "test-helper-user1";
const TEST_ENCRYPTION_HELPER_USER2 = "test-helper-user2"; const TEST_ENCRYPTION_HELPER_USER2 = "test-helper-user2";
protected function setUpUsers() { protected function setUpUsers() {
// create test user // create test user
self::loginHelper(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER2, true); self::loginHelper(self::TEST_ENCRYPTION_HELPER_USER2, true);
self::loginHelper(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER1, true); self::loginHelper(self::TEST_ENCRYPTION_HELPER_USER1, true);
} }
protected function cleanUpUsers() { protected function cleanUpUsers() {
// cleanup test user // cleanup test user
\OC_User::deleteUser(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER1); \OC_User::deleteUser(self::TEST_ENCRYPTION_HELPER_USER1);
\OC_User::deleteUser(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER2); \OC_User::deleteUser(self::TEST_ENCRYPTION_HELPER_USER2);
} }
public static function setupHooks() { public static function setupHooks() {
// Filesystem related hooks // Filesystem related hooks
\OCA\Encryption\Helper::registerFilesystemHooks(); \OCA\Files_Encryption\Helper::registerFilesystemHooks();
// clear and register hooks // clear and register hooks
\OC_FileProxy::clearProxies(); \OC_FileProxy::clearProxies();
\OC_FileProxy::register(new OCA\Encryption\Proxy()); \OC_FileProxy::register(new \OCA\Files_Encryption\Proxy());
} }
public static function tearDownAfterClass() { public static function tearDownAfterClass() {
@ -49,13 +49,13 @@ class Test_Encryption_Helper extends \OCA\Files_Encryption\Tests\TestCase {
$partFilename = 'testfile.txt.part'; $partFilename = 'testfile.txt.part';
$filename = 'testfile.txt'; $filename = 'testfile.txt';
$this->assertTrue(Encryption\Helper::isPartialFilePath($partFilename)); $this->assertTrue(\OCA\Files_Encryption\Helper::isPartialFilePath($partFilename));
$this->assertEquals('testfile.txt', Encryption\Helper::stripPartialFileExtension($partFilename)); $this->assertEquals('testfile.txt', \OCA\Files_Encryption\Helper::stripPartialFileExtension($partFilename));
$this->assertFalse(Encryption\Helper::isPartialFilePath($filename)); $this->assertFalse(\OCA\Files_Encryption\Helper::isPartialFilePath($filename));
$this->assertEquals('testfile.txt', Encryption\Helper::stripPartialFileExtension($filename)); $this->assertEquals('testfile.txt', \OCA\Files_Encryption\Helper::stripPartialFileExtension($filename));
} }
@ -67,13 +67,13 @@ class Test_Encryption_Helper extends \OCA\Files_Encryption\Tests\TestCase {
$partFilename = 'testfile.txt.ocTransferId643653835.part'; $partFilename = 'testfile.txt.ocTransferId643653835.part';
$filename = 'testfile.txt'; $filename = 'testfile.txt';
$this->assertTrue(Encryption\Helper::isPartialFilePath($partFilename)); $this->assertTrue(\OCA\Files_Encryption\Helper::isPartialFilePath($partFilename));
$this->assertEquals('testfile.txt', Encryption\Helper::stripPartialFileExtension($partFilename)); $this->assertEquals('testfile.txt', \OCA\Files_Encryption\Helper::stripPartialFileExtension($partFilename));
$this->assertFalse(Encryption\Helper::isPartialFilePath($filename)); $this->assertFalse(\OCA\Files_Encryption\Helper::isPartialFilePath($filename));
$this->assertEquals('testfile.txt', Encryption\Helper::stripPartialFileExtension($filename)); $this->assertEquals('testfile.txt', \OCA\Files_Encryption\Helper::stripPartialFileExtension($filename));
} }
function testGetPathToRealFile() { function testGetPathToRealFile() {
@ -85,8 +85,8 @@ class Test_Encryption_Helper extends \OCA\Files_Encryption\Tests\TestCase {
$versionPath = "/user/files_versions/foo/bar/test.txt.v456756835"; $versionPath = "/user/files_versions/foo/bar/test.txt.v456756835";
$cachePath = "/user/cache/transferid636483/foo/bar/test.txt"; $cachePath = "/user/cache/transferid636483/foo/bar/test.txt";
$this->assertEquals($relativePath, Encryption\Helper::getPathToRealFile($versionPath)); $this->assertEquals($relativePath, \OCA\Files_Encryption\Helper::getPathToRealFile($versionPath));
$this->assertEquals($relativePath, Encryption\Helper::getPathToRealFile($cachePath)); $this->assertEquals($relativePath, \OCA\Files_Encryption\Helper::getPathToRealFile($cachePath));
} }
function testGetUser() { function testGetUser() {
@ -100,20 +100,20 @@ class Test_Encryption_Helper extends \OCA\Files_Encryption\Tests\TestCase {
self::loginHelper(self::TEST_ENCRYPTION_HELPER_USER1); self::loginHelper(self::TEST_ENCRYPTION_HELPER_USER1);
// if we are logged-in every path should return the currently logged-in user // if we are logged-in every path should return the currently logged-in user
$this->assertEquals(self::TEST_ENCRYPTION_HELPER_USER1, Encryption\Helper::getUser($path3)); $this->assertEquals(self::TEST_ENCRYPTION_HELPER_USER1, \OCA\Files_Encryption\Helper::getUser($path3));
// now log out // now log out
self::logoutHelper(); self::logoutHelper();
// now we should only get the user from /user/files and user/cache paths // now we should only get the user from /user/files and user/cache paths
$this->assertEquals(self::TEST_ENCRYPTION_HELPER_USER1, Encryption\Helper::getUser($path1)); $this->assertEquals(self::TEST_ENCRYPTION_HELPER_USER1, \OCA\Files_Encryption\Helper::getUser($path1));
$this->assertEquals(self::TEST_ENCRYPTION_HELPER_USER1, Encryption\Helper::getUser($path2)); $this->assertEquals(self::TEST_ENCRYPTION_HELPER_USER1, \OCA\Files_Encryption\Helper::getUser($path2));
$this->assertFalse(Encryption\Helper::getUser($path3)); $this->assertFalse(\OCA\Files_Encryption\Helper::getUser($path3));
$this->assertFalse(Encryption\Helper::getUser($path4)); $this->assertFalse(\OCA\Files_Encryption\Helper::getUser($path4));
// Log-in again // Log-in again
self::loginHelper(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER1); self::loginHelper(self::TEST_ENCRYPTION_HELPER_USER1);
self::cleanUpUsers(); self::cleanUpUsers();
} }

View File

@ -20,13 +20,13 @@
* *
*/ */
use OCA\Encryption; namespace OCA\Files_Encryption\Tests;
/** /**
* Class Test_Encryption_Hooks * Class Hooks
* this class provide basic hook app tests * this class provide basic hook app tests
*/ */
class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase { class Hooks extends TestCase {
const TEST_ENCRYPTION_HOOKS_USER1 = "test-encryption-hooks-user1.dot"; const TEST_ENCRYPTION_HOOKS_USER1 = "test-encryption-hooks-user1.dot";
const TEST_ENCRYPTION_HOOKS_USER2 = "test-encryption-hooks-user2.dot"; const TEST_ENCRYPTION_HOOKS_USER2 = "test-encryption-hooks-user2.dot";
@ -64,20 +64,20 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
); );
// create test user // create test user
self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1, true); self::loginHelper(self::TEST_ENCRYPTION_HOOKS_USER1, true);
self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2, true); self::loginHelper(self::TEST_ENCRYPTION_HOOKS_USER2, true);
} }
protected function setUp() { protected function setUp() {
parent::setUp(); parent::setUp();
// set user id // set user id
self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); self::loginHelper(self::TEST_ENCRYPTION_HOOKS_USER1);
\OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); \OC_User::setUserId(self::TEST_ENCRYPTION_HOOKS_USER1);
// init filesystem view // init filesystem view
$this->user1View = new \OC\Files\View('/'. \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1 . '/files'); $this->user1View = new \OC\Files\View('/'. self::TEST_ENCRYPTION_HOOKS_USER1 . '/files');
$this->user2View = new \OC\Files\View('/'. \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2 . '/files'); $this->user2View = new \OC\Files\View('/'. self::TEST_ENCRYPTION_HOOKS_USER2 . '/files');
$this->rootView = new \OC\Files\View('/'); $this->rootView = new \OC\Files\View('/');
// init short data // init short data
@ -89,8 +89,8 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
public static function tearDownAfterClass() { public static function tearDownAfterClass() {
// cleanup test user // cleanup test user
\OC_User::deleteUser(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); \OC_User::deleteUser(self::TEST_ENCRYPTION_HOOKS_USER1);
\OC_User::deleteUser(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2); \OC_User::deleteUser(self::TEST_ENCRYPTION_HOOKS_USER2);
parent::tearDownAfterClass(); parent::tearDownAfterClass();
} }
@ -104,7 +104,7 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
$this->assertTrue(is_array($row)); $this->assertTrue(is_array($row));
// disabling the app should delete all user specific settings // disabling the app should delete all user specific settings
\OCA\Encryption\Hooks::preDisable(array('app' => 'files_encryption')); \OCA\Files_Encryption\Hooks::preDisable(array('app' => 'files_encryption'));
// check if user specific settings for the encryption app are really gone // check if user specific settings for the encryption app are really gone
$query = \OC_DB::prepare('SELECT * FROM `*PREFIX*preferences` WHERE `appid` = ?'); $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*preferences` WHERE `appid` = ?');
@ -121,7 +121,7 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
function testDeleteHooks() { function testDeleteHooks() {
// remember files_trashbin state // remember files_trashbin state
$stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); $stateFilesTrashbin = \OC_App::isEnabled('files_trashbin');
// we want to tests with app files_trashbin disabled // we want to tests with app files_trashbin disabled
\OC_App::disable('files_trashbin'); \OC_App::disable('files_trashbin');
@ -134,14 +134,14 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
// check if all keys are generated // check if all keys are generated
$this->assertTrue($this->rootView->file_exists( $this->assertTrue($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/'
. $this->filename . '/' . \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1 . '.shareKey')); . $this->filename . '/' . self::TEST_ENCRYPTION_HOOKS_USER1 . '.shareKey'));
$this->assertTrue($this->rootView->file_exists( $this->assertTrue($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' . $this->filename . '/fileKey')); self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' . $this->filename . '/fileKey'));
self::logoutHelper(); self::logoutHelper();
self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2); self::loginHelper(self::TEST_ENCRYPTION_HOOKS_USER2);
\OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2); \OC_User::setUserId(self::TEST_ENCRYPTION_HOOKS_USER2);
$this->user2View->file_put_contents($this->filename, $this->data); $this->user2View->file_put_contents($this->filename, $this->data);
@ -149,7 +149,7 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
// check if all keys are generated // check if all keys are generated
$this->assertTrue($this->rootView->file_exists( $this->assertTrue($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/' self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/'
. $this->filename . '/' . \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2 . '.shareKey')); . $this->filename . '/' . self::TEST_ENCRYPTION_HOOKS_USER2 . '.shareKey'));
$this->assertTrue($this->rootView->file_exists( $this->assertTrue($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/' . $this->filename . '/fileKey')); self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/' . $this->filename . '/fileKey'));
@ -164,7 +164,7 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
// all keys should still exist // all keys should still exist
$this->assertTrue($this->rootView->file_exists( $this->assertTrue($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/' self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/'
. $this->filename . '/' . \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2 . '.shareKey')); . $this->filename . '/' . self::TEST_ENCRYPTION_HOOKS_USER2 . '.shareKey'));
$this->assertTrue($this->rootView->file_exists( $this->assertTrue($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/' . $this->filename . '/fileKey')); self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/' . $this->filename . '/fileKey'));
@ -176,33 +176,33 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
// check if keys from user2 are really deleted // check if keys from user2 are really deleted
$this->assertFalse($this->rootView->file_exists( $this->assertFalse($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/' self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/'
. $this->filename . '/' . \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2 . '.shareKey')); . $this->filename . '/' . self::TEST_ENCRYPTION_HOOKS_USER2 . '.shareKey'));
$this->assertFalse($this->rootView->file_exists( $this->assertFalse($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/' . $this->filename . '/fileKey')); self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/' . $this->filename . '/fileKey'));
// but user1 keys should still exist // but user1 keys should still exist
$this->assertTrue($this->rootView->file_exists( $this->assertTrue($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/'
. $this->filename . '/' . \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1 . '.shareKey')); . $this->filename . '/' . self::TEST_ENCRYPTION_HOOKS_USER1 . '.shareKey'));
$this->assertTrue($this->rootView->file_exists( $this->assertTrue($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' . $this->filename . '/fileKey')); self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' . $this->filename . '/fileKey'));
if ($stateFilesTrashbin) { if ($stateFilesTrashbin) {
OC_App::enable('files_trashbin'); \OC_App::enable('files_trashbin');
} }
else { else {
OC_App::disable('files_trashbin'); \OC_App::disable('files_trashbin');
} }
} }
function testDeleteHooksForSharedFiles() { function testDeleteHooksForSharedFiles() {
self::logoutHelper(); self::logoutHelper();
self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); self::loginHelper(self::TEST_ENCRYPTION_HOOKS_USER1);
\OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); \OC_User::setUserId(self::TEST_ENCRYPTION_HOOKS_USER1);
// remember files_trashbin state // remember files_trashbin state
$stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); $stateFilesTrashbin = \OC_App::isEnabled('files_trashbin');
// we want to tests with app files_trashbin disabled // we want to tests with app files_trashbin disabled
\OC_App::disable('files_trashbin'); \OC_App::disable('files_trashbin');
@ -215,7 +215,7 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
// check if all keys are generated // check if all keys are generated
$this->assertTrue($this->rootView->file_exists( $this->assertTrue($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/'
. $this->filename . '/' . \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1 . '.shareKey')); . $this->filename . '/' . self::TEST_ENCRYPTION_HOOKS_USER1 . '.shareKey'));
$this->assertTrue($this->rootView->file_exists( $this->assertTrue($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' . $this->filename . '/fileKey')); self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' . $this->filename . '/fileKey'));
@ -231,11 +231,11 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
// check if new share key exists // check if new share key exists
$this->assertTrue($this->rootView->file_exists( $this->assertTrue($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/'
. $this->filename . '/' . \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2 . '.shareKey')); . $this->filename . '/' . self::TEST_ENCRYPTION_HOOKS_USER2 . '.shareKey'));
self::logoutHelper(); self::logoutHelper();
self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2); self::loginHelper(self::TEST_ENCRYPTION_HOOKS_USER2);
\OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2); \OC_User::setUserId(self::TEST_ENCRYPTION_HOOKS_USER2);
// user2 update the shared file // user2 update the shared file
$this->user2View->file_put_contents($this->filename, $this->data); $this->user2View->file_put_contents($this->filename, $this->data);
@ -243,7 +243,7 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
// keys should be stored at user1s dir, not in user2s // keys should be stored at user1s dir, not in user2s
$this->assertFalse($this->rootView->file_exists( $this->assertFalse($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/' self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/'
. $this->filename . '/' . \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2 . '.shareKey')); . $this->filename . '/' . self::TEST_ENCRYPTION_HOOKS_USER2 . '.shareKey'));
$this->assertFalse($this->rootView->file_exists( $this->assertFalse($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/' . $this->filename . '/fileKey')); self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/' . $this->filename . '/fileKey'));
@ -255,24 +255,24 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
// share key for user2 from user1s home should be gone, all other keys should still exists // share key for user2 from user1s home should be gone, all other keys should still exists
$this->assertTrue($this->rootView->file_exists( $this->assertTrue($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/'
. $this->filename . '/' . \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1 . '.shareKey')); . $this->filename . '/' . self::TEST_ENCRYPTION_HOOKS_USER1 . '.shareKey'));
$this->assertFalse($this->rootView->file_exists( $this->assertFalse($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/'
. $this->filename . '/' . \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2 . '.shareKey')); . $this->filename . '/' . self::TEST_ENCRYPTION_HOOKS_USER2 . '.shareKey'));
$this->assertTrue($this->rootView->file_exists( $this->assertTrue($this->rootView->file_exists(
self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' . $this->filename . '/fileKey')); self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' . $this->filename . '/fileKey'));
// cleanup // cleanup
self::logoutHelper(); self::logoutHelper();
self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); self::loginHelper(self::TEST_ENCRYPTION_HOOKS_USER1);
\OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); \OC_User::setUserId(self::TEST_ENCRYPTION_HOOKS_USER1);
if ($stateFilesTrashbin) { if ($stateFilesTrashbin) {
OC_App::enable('files_trashbin'); \OC_App::enable('files_trashbin');
} }
else { else {
OC_App::disable('files_trashbin'); \OC_App::disable('files_trashbin');
} }
} }
@ -407,35 +407,35 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
$view = new \OC\Files\View(); $view = new \OC\Files\View();
// set user password for the first time // set user password for the first time
\OCA\Encryption\Hooks::postCreateUser(array('uid' => 'newUser', 'password' => 'newUserPassword')); \OCA\Files_Encryption\Hooks::postCreateUser(array('uid' => 'newUser', 'password' => 'newUserPassword'));
$this->assertTrue($view->file_exists(\OCA\Encryption\Keymanager::getPublicKeyPath() . '/newUser.publicKey')); $this->assertTrue($view->file_exists(\OCA\Files_Encryption\Keymanager::getPublicKeyPath() . '/newUser.publicKey'));
$this->assertTrue($view->file_exists('newUser/files_encryption/newUser.privateKey')); $this->assertTrue($view->file_exists('newUser/files_encryption/newUser.privateKey'));
// check if we are able to decrypt the private key // check if we are able to decrypt the private key
$encryptedKey = \OCA\Encryption\Keymanager::getPrivateKey($view, 'newUser'); $encryptedKey = \OCA\Files_Encryption\Keymanager::getPrivateKey($view, 'newUser');
$privateKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, 'newUserPassword'); $privateKey = \OCA\Files_Encryption\Crypt::decryptPrivateKey($encryptedKey, 'newUserPassword');
$this->assertTrue(is_string($privateKey)); $this->assertTrue(is_string($privateKey));
// change the password before the user logged-in for the first time, // change the password before the user logged-in for the first time,
// we can replace the encryption keys // we can replace the encryption keys
\OCA\Encryption\Hooks::setPassphrase(array('uid' => 'newUser', 'password' => 'passwordChanged')); \OCA\Files_Encryption\Hooks::setPassphrase(array('uid' => 'newUser', 'password' => 'passwordChanged'));
$encryptedKey = \OCA\Encryption\Keymanager::getPrivateKey($view, 'newUser'); $encryptedKey = \OCA\Files_Encryption\Keymanager::getPrivateKey($view, 'newUser');
$privateKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged'); $privateKey = \OCA\Files_Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged');
$this->assertTrue(is_string($privateKey)); $this->assertTrue(is_string($privateKey));
// now create a files folder to simulate a already used account // now create a files folder to simulate a already used account
$view->mkdir('/newUser/files'); $view->mkdir('/newUser/files');
// change the password after the user logged in, now the password should not change // change the password after the user logged in, now the password should not change
\OCA\Encryption\Hooks::setPassphrase(array('uid' => 'newUser', 'password' => 'passwordChanged2')); \OCA\Files_Encryption\Hooks::setPassphrase(array('uid' => 'newUser', 'password' => 'passwordChanged2'));
$encryptedKey = \OCA\Encryption\Keymanager::getPrivateKey($view, 'newUser'); $encryptedKey = \OCA\Files_Encryption\Keymanager::getPrivateKey($view, 'newUser');
$privateKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged2'); $privateKey = \OCA\Files_Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged2');
$this->assertFalse($privateKey); $this->assertFalse($privateKey);
$privateKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged'); $privateKey = \OCA\Files_Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged');
$this->assertTrue(is_string($privateKey)); $this->assertTrue(is_string($privateKey));
} }

View File

@ -6,12 +6,12 @@
* See the COPYING-README file. * See the COPYING-README file.
*/ */
use OCA\Encryption; namespace OCA\Files_Encryption\Tests;
/** /**
* Class Test_Encryption_Keymanager * Class Keymanager
*/ */
class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase { class Keymanager extends TestCase {
const TEST_USER = "test-keymanager-user.dot"; const TEST_USER = "test-keymanager-user.dot";
@ -19,7 +19,7 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
public $pass; public $pass;
public static $stateFilesTrashbin; public static $stateFilesTrashbin;
/** /**
* @var OC\Files\View * @var \OC\Files\View
*/ */
public $view; public $view;
public $randomKey; public $randomKey;
@ -32,14 +32,14 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
\OC_FileProxy::$enabled = false; \OC_FileProxy::$enabled = false;
// remember files_trashbin state // remember files_trashbin state
self::$stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); self::$stateFilesTrashbin = \OC_App::isEnabled('files_trashbin');
// we don't want to tests with app files_trashbin enabled // we don't want to tests with app files_trashbin enabled
\OC_App::disable('files_trashbin'); \OC_App::disable('files_trashbin');
// create test user // create test user
\OC_User::deleteUser(\Test_Encryption_Keymanager::TEST_USER); \OC_User::deleteUser(self::TEST_USER);
parent::loginHelper(\Test_Encryption_Keymanager::TEST_USER, true); parent::loginHelper(self::TEST_USER, true);
} }
protected function setUp() { protected function setUp() {
@ -50,24 +50,24 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
$this->dataUrl = __DIR__ . '/../lib/crypt.php'; $this->dataUrl = __DIR__ . '/../lib/crypt.php';
$this->legacyData = __DIR__ . '/legacy-text.txt'; $this->legacyData = __DIR__ . '/legacy-text.txt';
$this->legacyEncryptedData = __DIR__ . '/legacy-encrypted-text.txt'; $this->legacyEncryptedData = __DIR__ . '/legacy-encrypted-text.txt';
$this->randomKey = Encryption\Crypt::generateKey(); $this->randomKey = \OCA\Files_Encryption\Crypt::generateKey();
$keypair = Encryption\Crypt::createKeypair(); $keypair = \OCA\Files_Encryption\Crypt::createKeypair();
$this->genPublicKey = $keypair['publicKey']; $this->genPublicKey = $keypair['publicKey'];
$this->genPrivateKey = $keypair['privateKey']; $this->genPrivateKey = $keypair['privateKey'];
$this->view = new \OC\Files\View('/'); $this->view = new \OC\Files\View('/');
self::loginHelper(Test_Encryption_Keymanager::TEST_USER); self::loginHelper(self::TEST_USER);
$this->userId = \Test_Encryption_Keymanager::TEST_USER; $this->userId = self::TEST_USER;
$this->pass = \Test_Encryption_Keymanager::TEST_USER; $this->pass = self::TEST_USER;
$userHome = \OC_User::getHome($this->userId); $userHome = \OC_User::getHome($this->userId);
$this->dataDir = str_replace('/' . $this->userId, '', $userHome); $this->dataDir = str_replace('/' . $this->userId, '', $userHome);
} }
function tearDown() { function tearDown() {
$this->view->deleteAll('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys'); $this->view->deleteAll('/' . self::TEST_USER . '/files_encryption/keys');
parent::tearDown(); parent::tearDown();
} }
@ -75,10 +75,10 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
\OC_FileProxy::$enabled = true; \OC_FileProxy::$enabled = true;
// cleanup test user // cleanup test user
\OC_User::deleteUser(\Test_Encryption_Keymanager::TEST_USER); \OC_User::deleteUser(self::TEST_USER);
// reset app files_trashbin // reset app files_trashbin
if (self::$stateFilesTrashbin) { if (self::$stateFilesTrashbin) {
OC_App::enable('files_trashbin'); \OC_App::enable('files_trashbin');
} }
parent::tearDownAfterClass(); parent::tearDownAfterClass();
@ -89,9 +89,9 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
*/ */
function testGetPrivateKey() { function testGetPrivateKey() {
$key = Encryption\Keymanager::getPrivateKey($this->view, $this->userId); $key = \OCA\Files_Encryption\Keymanager::getPrivateKey($this->view, $this->userId);
$privateKey = Encryption\Crypt::decryptPrivateKey($key, $this->pass); $privateKey = \OCA\Files_Encryption\Crypt::decryptPrivateKey($key, $this->pass);
$res = openssl_pkey_get_private($privateKey); $res = openssl_pkey_get_private($privateKey);
@ -108,7 +108,7 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
*/ */
function testGetPublicKey() { function testGetPublicKey() {
$publiceKey = Encryption\Keymanager::getPublicKey($this->view, $this->userId); $publiceKey = \OCA\Files_Encryption\Keymanager::getPublicKey($this->view, $this->userId);
$res = openssl_pkey_get_public($publiceKey); $res = openssl_pkey_get_public($publiceKey);
@ -128,7 +128,7 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
$file = 'unittest-' . $this->getUniqueID() . '.txt'; $file = 'unittest-' . $this->getUniqueID() . '.txt';
$util = new Encryption\Util($this->view, $this->userId); $util = new \OCA\Files_Encryption\Util($this->view, $this->userId);
// Disable encryption proxy to prevent recursive calls // Disable encryption proxy to prevent recursive calls
$proxyStatus = \OC_FileProxy::$enabled; $proxyStatus = \OC_FileProxy::$enabled;
@ -136,7 +136,7 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
$this->view->file_put_contents($this->userId . '/files/' . $file, $this->dataShort); $this->view->file_put_contents($this->userId . '/files/' . $file, $this->dataShort);
Encryption\Keymanager::setFileKey($this->view, $util, $file, $key); \OCA\Files_Encryption\Keymanager::setFileKey($this->view, $util, $file, $key);
$this->assertTrue($this->view->file_exists('/' . $this->userId . '/files_encryption/keys/' . $file . '/fileKey')); $this->assertTrue($this->view->file_exists('/' . $this->userId . '/files_encryption/keys/' . $file . '/fileKey'));
@ -154,7 +154,7 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
$key = "dummy key"; $key = "dummy key";
Encryption\Keymanager::setPrivateKey($key, 'dummyUser'); \OCA\Files_Encryption\Keymanager::setPrivateKey($key, 'dummyUser');
$this->assertTrue($this->view->file_exists('/dummyUser/files_encryption/dummyUser.privateKey')); $this->assertTrue($this->view->file_exists('/dummyUser/files_encryption/dummyUser.privateKey'));
@ -169,13 +169,13 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
$key = "dummy key"; $key = "dummy key";
$keyName = "myDummyKey"; $keyName = "myDummyKey";
$encHeader = Encryption\Crypt::generateHeader(); $encHeader = \OCA\Files_Encryption\Crypt::generateHeader();
Encryption\Keymanager::setPrivateSystemKey($key, $keyName); \OCA\Files_Encryption\Keymanager::setPrivateSystemKey($key, $keyName);
$this->assertTrue($this->view->file_exists('/files_encryption/' . $keyName . '.privateKey')); $this->assertTrue($this->view->file_exists('/files_encryption/' . $keyName . '.privateKey'));
$result = Encryption\Keymanager::getPrivateSystemKey($keyName); $result = \OCA\Files_Encryption\Keymanager::getPrivateSystemKey($keyName);
$this->assertSame($encHeader . $key, $result); $this->assertSame($encHeader . $key, $result);
@ -189,7 +189,7 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
*/ */
function testGetUserKeys() { function testGetUserKeys() {
$keys = Encryption\Keymanager::getUserKeys($this->view, $this->userId); $keys = \OCA\Files_Encryption\Keymanager::getUserKeys($this->view, $this->userId);
$resPublic = openssl_pkey_get_public($keys['publicKey']); $resPublic = openssl_pkey_get_public($keys['publicKey']);
@ -199,7 +199,7 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
$this->assertArrayHasKey('key', $sslInfoPublic); $this->assertArrayHasKey('key', $sslInfoPublic);
$privateKey = Encryption\Crypt::decryptPrivateKey($keys['privateKey'], $this->pass); $privateKey = \OCA\Files_Encryption\Crypt::decryptPrivateKey($keys['privateKey'], $this->pass);
$resPrivate = openssl_pkey_get_private($privateKey); $resPrivate = openssl_pkey_get_private($privateKey);
@ -215,85 +215,85 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
*/ */
function testRecursiveDelShareKeysFolder() { function testRecursiveDelShareKeysFolder() {
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files/folder1'); $this->view->mkdir('/' . self::TEST_USER . '/files/folder1');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files/folder1/existingFile.txt', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files/folder1/existingFile.txt', 'data');
// create folder structure for some dummy share key files // create folder structure for some dummy share key files
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1'); $this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1');
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/existingFile.txt'); $this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/existingFile.txt');
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1'); $this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/file1');
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file2'); $this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/file2');
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/subfolder'); $this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder');
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/subfolder/file2'); $this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder/file2');
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/subfolder/subsubfolder'); $this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder/subsubfolder');
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/subfolder/subsubfolder/file1'); $this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder/subsubfolder/file1');
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/subfolder/subsubfolder/file2'); $this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder/subsubfolder/file2');
// create some dummy share keys // create some dummy share keys
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/existingFile.txt/user1.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/existingFile.txt/user1.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/existingFile.txt/' . Test_Encryption_Keymanager::TEST_USER . '.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/existingFile.txt/' . self::TEST_USER . '.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/user1.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/user1.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/user1.test.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/user1.test.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/test-keymanager-userxdot.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/test-keymanager-userxdot.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/userx.' . Test_Encryption_Keymanager::TEST_USER . '.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/userx.' . self::TEST_USER . '.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/' . Test_Encryption_Keymanager::TEST_USER . '.userx.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/' . self::TEST_USER . '.userx.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/user1.' . Test_Encryption_Keymanager::TEST_USER . '.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/user1.' . self::TEST_USER . '.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/' . Test_Encryption_Keymanager::TEST_USER . '.user1.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/' . self::TEST_USER . '.user1.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file2/user2.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/file2/user2.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file2/user3.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/file2/user3.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/subfolder/file2/user3.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder/file2/user3.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/subfolder/subsubfolder/file1/user1.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder/subsubfolder/file1/user1.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/subfolder/subsubfolder/file2/user2.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder/subsubfolder/file2/user2.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/subfolder/subsubfolder/file2/user3.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder/subsubfolder/file2/user3.shareKey', 'data');
// recursive delete share keys from user1 and user2 // recursive delete share keys from user1 and user2
Encryption\Keymanager::delShareKey($this->view, \OCA\Files_Encryption\Keymanager::delShareKey($this->view,
array('user1', 'user2', Test_Encryption_Keymanager::TEST_USER), array('user1', 'user2', self::TEST_USER),
Encryption\Keymanager::getKeyPath($this->view, new Encryption\Util($this->view, Test_Encryption_Keymanager::TEST_USER), '/folder1'), \OCA\Files_Encryption\Keymanager::getKeyPath($this->view, new \OCA\Files_Encryption\Util($this->view, self::TEST_USER), '/folder1'),
Test_Encryption_Keymanager::TEST_USER, self::TEST_USER,
'/folder1'); '/folder1');
// check if share keys from user1 and user2 are deleted // check if share keys from user1 and user2 are deleted
$this->assertFalse($this->view->file_exists( $this->assertFalse($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/existingFile.txt/user1.shareKey')); '/' . self::TEST_USER . '/files_encryption/keys/folder1/existingFile.txt/user1.shareKey'));
$this->assertFalse($this->view->file_exists( $this->assertFalse($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/share-keys/folder1/file1/user1.shareKey')); '/' . self::TEST_USER . '/files_encryption/share-keys/folder1/file1/user1.shareKey'));
$this->assertFalse($this->view->file_exists( $this->assertFalse($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/share-keys/folder1/file2/user2.shareKey')); '/' . self::TEST_USER . '/files_encryption/share-keys/folder1/file2/user2.shareKey'));
$this->assertFalse($this->view->file_exists( $this->assertFalse($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/share-keys/folder1/subfolder/subsubfolder/file1/user1.shareKey')); '/' . self::TEST_USER . '/files_encryption/share-keys/folder1/subfolder/subsubfolder/file1/user1.shareKey'));
$this->assertFalse($this->view->file_exists( $this->assertFalse($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/share-keys/folder1/subfolder/subsubfolder/file2/user2.shareKey')); '/' . self::TEST_USER . '/files_encryption/share-keys/folder1/subfolder/subsubfolder/file2/user2.shareKey'));
// check if share keys from user3 still exists // check if share keys from user3 still exists
$this->assertTrue($this->view->file_exists( $this->assertTrue($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file2/user3.shareKey')); '/' . self::TEST_USER . '/files_encryption/keys/folder1/file2/user3.shareKey'));
$this->assertTrue($this->view->file_exists( $this->assertTrue($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/subfolder/subsubfolder/file2/user3.shareKey')); '/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder/subsubfolder/file2/user3.shareKey'));
$this->assertTrue($this->view->file_exists( $this->assertTrue($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/subfolder/file2/user3.shareKey')); '/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder/file2/user3.shareKey'));
// check if share keys for user or file with similar name // check if share keys for user or file with similar name
$this->assertTrue($this->view->file_exists( $this->assertTrue($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/user1.test.shareKey')); '/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/user1.test.shareKey'));
$this->assertTrue($this->view->file_exists( $this->assertTrue($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/test-keymanager-userxdot.shareKey')); '/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/test-keymanager-userxdot.shareKey'));
$this->assertTrue($this->view->file_exists( $this->assertTrue($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/' . Test_Encryption_Keymanager::TEST_USER . '.userx.shareKey')); '/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/' . self::TEST_USER . '.userx.shareKey'));
// FIXME: this case currently cannot be distinguished, needs further fixing // FIXME: this case currently cannot be distinguished, needs further fixing
$this->assertTrue($this->view->file_exists( $this->assertTrue($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/userx.' . Test_Encryption_Keymanager::TEST_USER . '.shareKey')); '/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/userx.' . self::TEST_USER . '.shareKey'));
$this->assertTrue($this->view->file_exists( $this->assertTrue($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/user1.' . Test_Encryption_Keymanager::TEST_USER . '.shareKey')); '/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/user1.' . self::TEST_USER . '.shareKey'));
$this->assertTrue($this->view->file_exists( $this->assertTrue($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/' . Test_Encryption_Keymanager::TEST_USER . '.user1.shareKey')); '/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/' . self::TEST_USER . '.user1.shareKey'));
// owner key from existing file should still exists because the file is still there // owner key from existing file should still exists because the file is still there
$this->assertTrue($this->view->file_exists( $this->assertTrue($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/existingFile.txt/' . Test_Encryption_Keymanager::TEST_USER . '.shareKey')); '/' . self::TEST_USER . '/files_encryption/keys/folder1/existingFile.txt/' . self::TEST_USER . '.shareKey'));
// cleanup // cleanup
$this->view->deleteAll('/'.Test_Encryption_Keymanager::TEST_USER.'/files/folder1'); $this->view->deleteAll('/' . self::TEST_USER . '/files/folder1');
} }
@ -302,44 +302,44 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
*/ */
function testRecursiveDelShareKeysFile() { function testRecursiveDelShareKeysFile() {
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files/folder1'); $this->view->mkdir('/' . self::TEST_USER . '/files/folder1');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files/folder1/existingFile.txt', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files/folder1/existingFile.txt', 'data');
// create folder structure for some dummy share key files // create folder structure for some dummy share key files
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/share-keys/folder1'); $this->view->mkdir('/' . self::TEST_USER . '/files_encryption/share-keys/folder1');
// create some dummy share keys // create some dummy share keys
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/share-keys/folder1/existingFile.txt.user1.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/share-keys/folder1/existingFile.txt.user1.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/share-keys/folder1/existingFile.txt.user2.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/share-keys/folder1/existingFile.txt.user2.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/share-keys/folder1/existingFile.txt.user3.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/share-keys/folder1/existingFile.txt.user3.shareKey', 'data');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/share-keys/folder1/existingFile.txt.' . Test_Encryption_Keymanager::TEST_USER . '.shareKey', 'data'); $this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/share-keys/folder1/existingFile.txt.' . self::TEST_USER . '.shareKey', 'data');
// recursive delete share keys from user1 and user2 // recursive delete share keys from user1 and user2
Encryption\Keymanager::delShareKey($this->view, \OCA\Files_Encryption\Keymanager::delShareKey($this->view,
array('user1', 'user2', Test_Encryption_Keymanager::TEST_USER), array('user1', 'user2', self::TEST_USER),
Encryption\Keymanager::getKeyPath($this->view, new Encryption\Util($this->view, Test_Encryption_Keymanager::TEST_USER), '/folder1/existingFile.txt'), \OCA\Files_Encryption\Keymanager::getKeyPath($this->view, new \OCA\Files_Encryption\Util($this->view, self::TEST_USER), '/folder1/existingFile.txt'),
Test_Encryption_Keymanager::TEST_USER, self::TEST_USER,
'/folder1/existingFile.txt'); '/folder1/existingFile.txt');
// check if share keys from user1 and user2 are deleted // check if share keys from user1 and user2 are deleted
$this->assertFalse($this->view->file_exists( $this->assertFalse($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/share-keys/folder1/existingFile.user1.shareKey')); '/' . self::TEST_USER . '/files_encryption/share-keys/folder1/existingFile.user1.shareKey'));
$this->assertFalse($this->view->file_exists( $this->assertFalse($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/share-keys/folder1/existingFile.user2.shareKey')); '/' . self::TEST_USER . '/files_encryption/share-keys/folder1/existingFile.user2.shareKey'));
// check if share keys for user3 and owner // check if share keys for user3 and owner
$this->assertTrue($this->view->file_exists( $this->assertTrue($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/share-keys/folder1/existingFile.txt.' . Test_Encryption_Keymanager::TEST_USER . '.shareKey')); '/' . self::TEST_USER . '/files_encryption/share-keys/folder1/existingFile.txt.' . self::TEST_USER . '.shareKey'));
$this->assertTrue($this->view->file_exists( $this->assertTrue($this->view->file_exists(
'/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/share-keys/folder1/existingFile.txt.user3.shareKey')); '/' . self::TEST_USER . '/files_encryption/share-keys/folder1/existingFile.txt.user3.shareKey'));
// cleanup // cleanup
$this->view->deleteAll('/'.Test_Encryption_Keymanager::TEST_USER.'/files/folder1'); $this->view->deleteAll('/' . self::TEST_USER . '/files/folder1');
} }
function testKeySetPreperation() { function testKeySetPreperation() {
$basePath = '/'.Test_Encryption_Keymanager::TEST_USER.'/files'; $basePath = '/' . self::TEST_USER . '/files';
$path = '/folder1/subfolder/subsubfolder/file.txt'; $path = '/folder1/subfolder/subsubfolder/file.txt';
$this->assertFalse($this->view->is_dir($basePath . '/testKeySetPreperation')); $this->assertFalse($this->view->is_dir($basePath . '/testKeySetPreperation'));
@ -356,9 +356,9 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
} }
/** /**
* dummy class to access protected methods of \OCA\Encryption\Keymanager for testing * dummy class to access protected methods of \OCA\Files_Encryption\Keymanager for testing
*/ */
class TestProtectedKeymanagerMethods extends \OCA\Encryption\Keymanager { class TestProtectedKeymanagerMethods extends \OCA\Files_Encryption\Keymanager {
/** /**
* @param \OC\Files\View $view relative to data/ * @param \OC\Files\View $view relative to data/
@ -366,6 +366,6 @@ class TestProtectedKeymanagerMethods extends \OCA\Encryption\Keymanager {
* @param string $basePath * @param string $basePath
*/ */
public static function testKeySetPreperation($view, $path) { public static function testKeySetPreperation($view, $path) {
return self::keySetPreparation($view, $path); self::keySetPreparation($view, $path);
} }
} }

View File

@ -21,15 +21,15 @@
* *
*/ */
use OCA\Encryption; namespace OCA\Files_Encryption\Tests;
use OCA\Files_Encryption\Migration;
class Test_Migration extends \OCA\Files_Encryption\Tests\TestCase { class Migration extends TestCase {
const TEST_ENCRYPTION_MIGRATION_USER1='test_encryption_user1'; const TEST_ENCRYPTION_MIGRATION_USER1='test_encryption_user1';
const TEST_ENCRYPTION_MIGRATION_USER2='test_encryption_user2'; const TEST_ENCRYPTION_MIGRATION_USER2='test_encryption_user2';
const TEST_ENCRYPTION_MIGRATION_USER3='test_encryption_user3'; const TEST_ENCRYPTION_MIGRATION_USER3='test_encryption_user3';
/** @var \OC\Files\View */
private $view; private $view;
private $public_share_key_id; private $public_share_key_id;
private $recovery_key_id; private $recovery_key_id;
@ -49,8 +49,8 @@ class Test_Migration extends \OCA\Files_Encryption\Tests\TestCase {
} }
protected function tearDown() { protected function tearDown() {
if (OC_DB::tableExists('encryption_test')) { if (\OC_DB::tableExists('encryption_test')) {
OC_DB::dropTable('encryption_test'); \OC_DB::dropTable('encryption_test');
} }
$this->assertTableNotExist('encryption_test'); $this->assertTableNotExist('encryption_test');
@ -60,10 +60,10 @@ class Test_Migration extends \OCA\Files_Encryption\Tests\TestCase {
public function setUp() { public function setUp() {
$this->loginHelper(self::TEST_ENCRYPTION_MIGRATION_USER1); $this->loginHelper(self::TEST_ENCRYPTION_MIGRATION_USER1);
$this->view = new \OC\Files\View(); $this->view = new \OC\Files\View();
$this->public_share_key_id = Encryption\Helper::getPublicShareKeyId(); $this->public_share_key_id = \OCA\Files_Encryption\Helper::getPublicShareKeyId();
$this->recovery_key_id = Encryption\Helper::getRecoveryKeyId(); $this->recovery_key_id = \OCA\Files_Encryption\Helper::getRecoveryKeyId();
if (OC_DB::tableExists('encryption_test')) { if (\OC_DB::tableExists('encryption_test')) {
OC_DB::dropTable('encryption_test'); \OC_DB::dropTable('encryption_test');
} }
$this->assertTableNotExist('encryption_test'); $this->assertTableNotExist('encryption_test');
} }
@ -101,7 +101,7 @@ class Test_Migration extends \OCA\Files_Encryption\Tests\TestCase {
// create test table // create test table
$this->checkLastIndexId(); $this->checkLastIndexId();
OC_DB::createDbFromStructure(__DIR__ . '/encryption_table.xml'); \OC_DB::createDbFromStructure(__DIR__ . '/encryption_table.xml');
$this->checkLastIndexId(); $this->checkLastIndexId();
} }
@ -109,12 +109,12 @@ class Test_Migration extends \OCA\Files_Encryption\Tests\TestCase {
* @param string $table * @param string $table
*/ */
public function assertTableNotExist($table) { public function assertTableNotExist($table) {
$type=OC_Config::getValue( "dbtype", "sqlite" ); $type = \OC_Config::getValue( "dbtype", "sqlite" );
if( $type == 'sqlite' || $type == 'sqlite3' ) { if( $type == 'sqlite' || $type == 'sqlite3' ) {
// sqlite removes the tables after closing the DB // sqlite removes the tables after closing the DB
$this->assertTrue(true); $this->assertTrue(true);
} else { } else {
$this->assertFalse(OC_DB::tableExists($table), 'Table ' . $table . ' exists.'); $this->assertFalse(\OC_DB::tableExists($table), 'Table ' . $table . ' exists.');
} }
} }

View File

@ -20,13 +20,13 @@
* *
*/ */
use OCA\Encryption; namespace OCA\Files_Encryption\Tests;
/** /**
* Class Test_Encryption_Proxy * Class Proxy
* this class provide basic proxy app tests * this class provide basic proxy app tests
*/ */
class Test_Encryption_Proxy extends \OCA\Files_Encryption\Tests\TestCase { class Proxy extends TestCase {
const TEST_ENCRYPTION_PROXY_USER1 = "test-proxy-user1"; const TEST_ENCRYPTION_PROXY_USER1 = "test-proxy-user1";
@ -45,20 +45,20 @@ class Test_Encryption_Proxy extends \OCA\Files_Encryption\Tests\TestCase {
parent::setUpBeforeClass(); parent::setUpBeforeClass();
// create test user // create test user
self::loginHelper(\Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1, true); self::loginHelper(self::TEST_ENCRYPTION_PROXY_USER1, true);
} }
protected function setUp() { protected function setUp() {
parent::setUp(); parent::setUp();
// set user id // set user id
\OC_User::setUserId(\Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1); \OC_User::setUserId(self::TEST_ENCRYPTION_PROXY_USER1);
$this->userId = \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1; $this->userId = self::TEST_ENCRYPTION_PROXY_USER1;
$this->pass = \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1; $this->pass = self::TEST_ENCRYPTION_PROXY_USER1;
// init filesystem view // init filesystem view
$this->view = new \OC\Files\View('/'. \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files'); $this->view = new \OC\Files\View('/'. self::TEST_ENCRYPTION_PROXY_USER1 . '/files');
$this->rootView = new \OC\Files\View('/'. \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 ); $this->rootView = new \OC\Files\View('/'. self::TEST_ENCRYPTION_PROXY_USER1 );
// init short data // init short data
$this->data = 'hats'; $this->data = 'hats';
@ -69,7 +69,7 @@ class Test_Encryption_Proxy extends \OCA\Files_Encryption\Tests\TestCase {
public static function tearDownAfterClass() { public static function tearDownAfterClass() {
// cleanup test user // cleanup test user
\OC_User::deleteUser(\Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1); \OC_User::deleteUser(self::TEST_ENCRYPTION_PROXY_USER1);
parent::tearDownAfterClass(); parent::tearDownAfterClass();
} }
@ -137,13 +137,13 @@ class Test_Encryption_Proxy extends \OCA\Files_Encryption\Tests\TestCase {
public function isExcludedPathProvider() { public function isExcludedPathProvider() {
return array( return array(
array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files/test.txt', false), array ('/' . self::TEST_ENCRYPTION_PROXY_USER1 . '/files/test.txt', false),
array (\Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files/test.txt', false), array (self::TEST_ENCRYPTION_PROXY_USER1 . '/files/test.txt', false),
array ('/files/test.txt', true), array ('/files/test.txt', true),
array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files/versions/test.txt', false), array ('/' . self::TEST_ENCRYPTION_PROXY_USER1 . '/files/versions/test.txt', false),
array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files_versions/test.txt', false), array ('/' . self::TEST_ENCRYPTION_PROXY_USER1 . '/files_versions/test.txt', false),
array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files_trashbin/test.txt', true), array ('/' . self::TEST_ENCRYPTION_PROXY_USER1 . '/files_trashbin/test.txt', true),
array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/file/test.txt', true), array ('/' . self::TEST_ENCRYPTION_PROXY_USER1 . '/file/test.txt', true),
); );
} }
@ -153,7 +153,7 @@ class Test_Encryption_Proxy extends \OCA\Files_Encryption\Tests\TestCase {
/** /**
* Dummy class to make protected methods available for testing * Dummy class to make protected methods available for testing
*/ */
class DummyProxy extends \OCA\Encryption\Proxy { class DummyProxy extends \OCA\Files_Encryption\Proxy {
public function isExcludedPathTesting($path, $uid) { public function isExcludedPathTesting($path, $uid) {
return $this->isExcludedPath($path, $uid); return $this->isExcludedPath($path, $uid);
} }

File diff suppressed because it is too large Load Diff

View File

@ -20,13 +20,13 @@
* *
*/ */
use OCA\Encryption; namespace OCA\Files_Encryption\Tests;
/** /**
* Class Test_Encryption_Stream * Class Stream
* this class provide basic stream tests * this class provide basic stream tests
*/ */
class Test_Encryption_Stream extends \OCA\Files_Encryption\Tests\TestCase { class Stream extends TestCase {
const TEST_ENCRYPTION_STREAM_USER1 = "test-stream-user1"; const TEST_ENCRYPTION_STREAM_USER1 = "test-stream-user1";
@ -43,16 +43,16 @@ class Test_Encryption_Stream extends \OCA\Files_Encryption\Tests\TestCase {
parent::setUpBeforeClass(); parent::setUpBeforeClass();
// create test user // create test user
self::loginHelper(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1, true); self::loginHelper(self::TEST_ENCRYPTION_STREAM_USER1, true);
} }
protected function setUp() { protected function setUp() {
parent::setUp(); parent::setUp();
// set user id // set user id
\OC_User::setUserId(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1); \OC_User::setUserId(self::TEST_ENCRYPTION_STREAM_USER1);
$this->userId = \Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1; $this->userId = self::TEST_ENCRYPTION_STREAM_USER1;
$this->pass = \Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1; $this->pass = self::TEST_ENCRYPTION_STREAM_USER1;
// init filesystem view // init filesystem view
$this->view = new \OC\Files\View('/'); $this->view = new \OC\Files\View('/');
@ -61,7 +61,7 @@ class Test_Encryption_Stream extends \OCA\Files_Encryption\Tests\TestCase {
$this->dataShort = 'hats'; $this->dataShort = 'hats';
// remember files_trashbin state // remember files_trashbin state
$this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); $this->stateFilesTrashbin = \OC_App::isEnabled('files_trashbin');
// we don't want to tests with app files_trashbin enabled // we don't want to tests with app files_trashbin enabled
\OC_App::disable('files_trashbin'); \OC_App::disable('files_trashbin');
@ -70,10 +70,10 @@ class Test_Encryption_Stream extends \OCA\Files_Encryption\Tests\TestCase {
protected function tearDown() { protected function tearDown() {
// reset app files_trashbin // reset app files_trashbin
if ($this->stateFilesTrashbin) { if ($this->stateFilesTrashbin) {
OC_App::enable('files_trashbin'); \OC_App::enable('files_trashbin');
} }
else { else {
OC_App::disable('files_trashbin'); \OC_App::disable('files_trashbin');
} }
parent::tearDown(); parent::tearDown();
@ -81,7 +81,7 @@ class Test_Encryption_Stream extends \OCA\Files_Encryption\Tests\TestCase {
public static function tearDownAfterClass() { public static function tearDownAfterClass() {
// cleanup test user // cleanup test user
\OC_User::deleteUser(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1); \OC_User::deleteUser(self::TEST_ENCRYPTION_STREAM_USER1);
parent::tearDownAfterClass(); parent::tearDownAfterClass();
} }
@ -208,7 +208,7 @@ class Test_Encryption_Stream extends \OCA\Files_Encryption\Tests\TestCase {
file_put_contents($tmpFilename, $encryptedContent); file_put_contents($tmpFilename, $encryptedContent);
\OCA\Encryption\Helper::addTmpFileToMapper($tmpFilename, $filename); \OCA\Files_Encryption\Helper::addTmpFileToMapper($tmpFilename, $filename);
// try to read the file from /tmp // try to read the file from /tmp
$handle = fopen("crypt://".$tmpFilename, "r"); $handle = fopen("crypt://".$tmpFilename, "r");

View File

@ -8,10 +8,8 @@
namespace OCA\Files_Encryption\Tests; namespace OCA\Files_Encryption\Tests;
use OCA\Encryption;
/** /**
* Class Test_Encryption_TestCase * Class TestCase
*/ */
abstract class TestCase extends \Test\TestCase { abstract class TestCase extends \Test\TestCase {
@ -42,7 +40,7 @@ abstract class TestCase extends \Test\TestCase {
if ($loadEncryption) { if ($loadEncryption) {
$params['uid'] = $user; $params['uid'] = $user;
$params['password'] = $password; $params['password'] = $password;
\OCA\Encryption\Hooks::login($params); \OCA\Files_Encryption\Hooks::login($params);
} }
} }
@ -59,16 +57,16 @@ abstract class TestCase extends \Test\TestCase {
\OC_User::clearBackends(); \OC_User::clearBackends();
\OC_User::useBackend('database'); \OC_User::useBackend('database');
\OCA\Encryption\Helper::registerFilesystemHooks(); \OCA\Files_Encryption\Helper::registerFilesystemHooks();
\OCA\Encryption\Helper::registerUserHooks(); \OCA\Files_Encryption\Helper::registerUserHooks();
\OCA\Encryption\Helper::registerShareHooks(); \OCA\Files_Encryption\Helper::registerShareHooks();
\OC::registerShareHooks(); \OC::registerShareHooks();
\OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); \OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup');
// clear and register hooks // clear and register hooks
\OC_FileProxy::clearProxies(); \OC_FileProxy::clearProxies();
\OC_FileProxy::register(new \OCA\Encryption\Proxy()); \OC_FileProxy::register(new \OCA\Files_Encryption\Proxy());
} }
public static function tearDownAfterClass() { public static function tearDownAfterClass() {

View File

@ -20,13 +20,13 @@
* *
*/ */
use OCA\Encryption; namespace OCA\Files_Encryption\Tests;
/** /**
* Class Test_Encryption_Trashbin * Class Trashbin
* this class provide basic trashbin app tests * this class provide basic trashbin app tests
*/ */
class Test_Encryption_Trashbin extends \OCA\Files_Encryption\Tests\TestCase { class Trashbin extends TestCase {
const TEST_ENCRYPTION_TRASHBIN_USER1 = "test-trashbin-user1"; const TEST_ENCRYPTION_TRASHBIN_USER1 = "test-trashbin-user1";
@ -71,7 +71,7 @@ class Test_Encryption_Trashbin extends \OCA\Files_Encryption\Tests\TestCase {
$this->subsubfolder = '/subsubfolder1'; $this->subsubfolder = '/subsubfolder1';
// remember files_trashbin state // remember files_trashbin state
$this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); $this->stateFilesTrashbin = \OC_App::isEnabled('files_trashbin');
// we want to tests with app files_trashbin enabled // we want to tests with app files_trashbin enabled
\OC_App::enable('files_trashbin'); \OC_App::enable('files_trashbin');
@ -80,10 +80,10 @@ class Test_Encryption_Trashbin extends \OCA\Files_Encryption\Tests\TestCase {
protected function tearDown() { protected function tearDown() {
// reset app files_trashbin // reset app files_trashbin
if ($this->stateFilesTrashbin) { if ($this->stateFilesTrashbin) {
OC_App::enable('files_trashbin'); \OC_App::enable('files_trashbin');
} }
else { else {
OC_App::disable('files_trashbin'); \OC_App::disable('files_trashbin');
} }
parent::tearDown(); parent::tearDown();
@ -173,7 +173,7 @@ class Test_Encryption_Trashbin extends \OCA\Files_Encryption\Tests\TestCase {
// check if we found the file we created // check if we found the file we created
$this->assertNotNull($trashFileSuffix); $this->assertNotNull($trashFileSuffix);
$this->assertTrue($this->view->is_dir('/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/keys/' . $filename . '.' . $trashFileSuffix)); $this->assertTrue($this->view->is_dir('/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/keys/' . $filename . '.' . $trashFileSuffix));
// check if key for admin not exists // check if key for admin not exists
$this->assertTrue($this->view->file_exists( $this->assertTrue($this->view->file_exists(
@ -219,10 +219,10 @@ class Test_Encryption_Trashbin extends \OCA\Files_Encryption\Tests\TestCase {
// before calling the restore operation the keys shouldn't be there // before calling the restore operation the keys shouldn't be there
$this->assertFalse($this->view->file_exists( $this->assertFalse($this->view->file_exists(
'/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keys/' . $filename . '/fileKey')); '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keys/' . $filename . '/fileKey'));
$this->assertFalse($this->view->file_exists( $this->assertFalse($this->view->file_exists(
'/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keys/' '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keys/'
. $filename . '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); . $filename . '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey'));
// restore first file // restore first file
$this->assertTrue(\OCA\Files_Trashbin\Trashbin::restore($filename . '.' . $trashFileSuffix, $filename, $timestamp)); $this->assertTrue(\OCA\Files_Trashbin\Trashbin::restore($filename . '.' . $trashFileSuffix, $filename, $timestamp));

View File

@ -6,12 +6,12 @@
* See the COPYING-README file. * See the COPYING-README file.
*/ */
use OCA\Encryption; namespace OCA\Files_Encryption\Tests;
/** /**
* Class Test_Encryption_Util * Class Util
*/ */
class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase { class Util extends TestCase {
const TEST_ENCRYPTION_UTIL_USER1 = "test-util-user1"; const TEST_ENCRYPTION_UTIL_USER1 = "test-util-user1";
const TEST_ENCRYPTION_UTIL_USER2 = "test-util-user2"; const TEST_ENCRYPTION_UTIL_USER2 = "test-util-user2";
@ -24,14 +24,14 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
public $publicKeyDir; public $publicKeyDir;
public $pass; public $pass;
/** /**
* @var OC\Files\View * @var \OC\Files\View
*/ */
public $view; public $view;
public $keyfilesPath; public $keyfilesPath;
public $publicKeyPath; public $publicKeyPath;
public $privateKeyPath; public $privateKeyPath;
/** /**
* @var \OCA\Encryption\Util * @var \OCA\Files_Encryption\Util
*/ */
public $util; public $util;
public $dataShort; public $dataShort;
@ -74,12 +74,12 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
$this->legacyEncryptedDataKey = __DIR__ . '/encryption.key'; $this->legacyEncryptedDataKey = __DIR__ . '/encryption.key';
$this->legacyKey = "30943623843030686906\0\0\0\0"; $this->legacyKey = "30943623843030686906\0\0\0\0";
$keypair = Encryption\Crypt::createKeypair(); $keypair = \OCA\Files_Encryption\Crypt::createKeypair();
$this->genPublicKey = $keypair['publicKey']; $this->genPublicKey = $keypair['publicKey'];
$this->genPrivateKey = $keypair['privateKey']; $this->genPrivateKey = $keypair['privateKey'];
$this->publicKeyDir = \OCA\Encryption\Keymanager::getPublicKeyPath(); $this->publicKeyDir = \OCA\Files_Encryption\Keymanager::getPublicKeyPath();
$this->encryptionDir = '/' . $this->userId . '/' . 'files_encryption'; $this->encryptionDir = '/' . $this->userId . '/' . 'files_encryption';
$this->keysPath = $this->encryptionDir . '/' . 'keys'; $this->keysPath = $this->encryptionDir . '/' . 'keys';
$this->publicKeyPath = $this->publicKeyPath =
@ -89,10 +89,10 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
$this->view = new \OC\Files\View('/'); $this->view = new \OC\Files\View('/');
$this->util = new Encryption\Util($this->view, $this->userId); $this->util = new \OCA\Files_Encryption\Util($this->view, $this->userId);
// remember files_trashbin state // remember files_trashbin state
$this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); $this->stateFilesTrashbin = \OC_App::isEnabled('files_trashbin');
// we don't want to tests with app files_trashbin enabled // we don't want to tests with app files_trashbin enabled
\OC_App::disable('files_trashbin'); \OC_App::disable('files_trashbin');
@ -101,10 +101,10 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
protected function tearDown() { protected function tearDown() {
// reset app files_trashbin // reset app files_trashbin
if ($this->stateFilesTrashbin) { if ($this->stateFilesTrashbin) {
OC_App::enable('files_trashbin'); \OC_App::enable('files_trashbin');
} }
else { else {
OC_App::disable('files_trashbin'); \OC_App::disable('files_trashbin');
} }
parent::tearDown(); parent::tearDown();
@ -128,7 +128,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
* test that paths set during User construction are correct * test that paths set during User construction are correct
*/ */
function testKeyPaths() { function testKeyPaths() {
$util = new Encryption\Util($this->view, $this->userId); $util = new \OCA\Files_Encryption\Util($this->view, $this->userId);
$this->assertEquals($this->publicKeyDir, $util->getPath('publicKeyDir')); $this->assertEquals($this->publicKeyDir, $util->getPath('publicKeyDir'));
$this->assertEquals($this->encryptionDir, $util->getPath('encryptionDir')); $this->assertEquals($this->encryptionDir, $util->getPath('encryptionDir'));
@ -144,7 +144,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
*/ */
function testIsEncryptedPath() { function testIsEncryptedPath() {
$util = new Encryption\Util($this->view, $this->userId); $util = new \OCA\Files_Encryption\Util($this->view, $this->userId);
self::loginHelper($this->userId); self::loginHelper($this->userId);
@ -197,7 +197,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
// //
// $params['uid'] = $this->userId; // $params['uid'] = $this->userId;
// $params['password'] = $this->pass; // $params['password'] = $this->pass;
// $this->assertFalse(OCA\Encryption\Hooks::login($params)); // $this->assertFalse(OCA\Files_Encryption\Hooks::login($params));
// //
// $this->view->unlink($this->privateKeyPath); // $this->view->unlink($this->privateKeyPath);
// } // }
@ -207,7 +207,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
*/ */
function testRecoveryEnabledForUser() { function testRecoveryEnabledForUser() {
$util = new Encryption\Util($this->view, $this->userId); $util = new \OCA\Files_Encryption\Util($this->view, $this->userId);
// Record the value so we can return it to it's original state later // Record the value so we can return it to it's original state later
$enabled = $util->recoveryEnabledForUser(); $enabled = $util->recoveryEnabledForUser();
@ -241,7 +241,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
// Re-enable proxy - our work is done // Re-enable proxy - our work is done
\OC_FileProxy::$enabled = $proxyStatus; \OC_FileProxy::$enabled = $proxyStatus;
$util = new Encryption\Util($this->view, $this->userId); $util = new \OCA\Files_Encryption\Util($this->view, $this->userId);
list($fileOwnerUid, $file) = $util->getUidAndFilename($filename); list($fileOwnerUid, $file) = $util->getUidAndFilename($filename);
@ -283,7 +283,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
function testEncryptAll() { function testEncryptAll() {
$filename = "/encryptAll" . $this->getUniqueID() . ".txt"; $filename = "/encryptAll" . $this->getUniqueID() . ".txt";
$util = new Encryption\Util($this->view, $this->userId); $util = new \OCA\Files_Encryption\Util($this->view, $this->userId);
// disable encryption to upload a unencrypted file // disable encryption to upload a unencrypted file
\OC_App::disable('files_encryption'); \OC_App::disable('files_encryption');
@ -338,18 +338,18 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
$this->assertSame($encContent, $content); $this->assertSame($encContent, $content);
// now we load the encryption app again // now we load the encryption app again
OC_App::loadApp('files_encryption'); \OC_App::loadApp('files_encryption');
// init encryption app // init encryption app
$params = array('uid' => \OCP\User::getUser(), $params = array('uid' => \OCP\User::getUser(),
'password' => \OCP\User::getUser()); 'password' => \OCP\User::getUser());
$view = new OC\Files\View('/'); $view = new \OC\Files\View('/');
$util = new \OCA\Encryption\Util($view, \OCP\User::getUser()); $util = new \OCA\Files_Encryption\Util($view, \OCP\User::getUser());
$result = $util->initEncryption($params); $result = $util->initEncryption($params);
$this->assertTrue($result instanceof \OCA\Encryption\Session); $this->assertTrue($result instanceof \OCA\Files_Encryption\Session);
$successful = $util->decryptAll(); $successful = $util->decryptAll();
@ -385,7 +385,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
// cleanup // cleanup
$this->view->unlink($this->userId . '/files/' . $filename); $this->view->unlink($this->userId . '/files/' . $filename);
$this->view->deleteAll($backupPath); $this->view->deleteAll($backupPath);
OC_App::enable('files_encryption'); \OC_App::enable('files_encryption');
} }
@ -401,7 +401,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
$this->view->file_put_contents($encPath . '/keys/foo/fileKey', 'key'); $this->view->file_put_contents($encPath . '/keys/foo/fileKey', 'key');
$this->view->file_put_contents($encPath . '/keys/foo/user1.shareKey', 'share key'); $this->view->file_put_contents($encPath . '/keys/foo/user1.shareKey', 'share key');
$util = new \OCA\Encryption\Util($this->view, self::TEST_ENCRYPTION_UTIL_USER1); $util = new \OCA\Files_Encryption\Util($this->view, self::TEST_ENCRYPTION_UTIL_USER1);
$util->backupAllKeys('testBackupAllKeys'); $util->backupAllKeys('testBackupAllKeys');
@ -427,7 +427,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
$file1 = "/decryptAll1" . $this->getUniqueID() . ".txt"; $file1 = "/decryptAll1" . $this->getUniqueID() . ".txt";
$file2 = "/decryptAll2" . $this->getUniqueID() . ".txt"; $file2 = "/decryptAll2" . $this->getUniqueID() . ".txt";
$util = new Encryption\Util($this->view, $this->userId); $util = new \OCA\Files_Encryption\Util($this->view, $this->userId);
$this->view->file_put_contents($this->userId . '/files/' . $file1, $this->dataShort); $this->view->file_put_contents($this->userId . '/files/' . $file1, $this->dataShort);
$this->view->file_put_contents($this->userId . '/files/' . $file2, $this->dataShort); $this->view->file_put_contents($this->userId . '/files/' . $file2, $this->dataShort);
@ -551,13 +551,13 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
$publicShareKeyId, $publicShareKeyId,
$recoveryKeyId, $recoveryKeyId,
); );
\Test_Encryption_Util::loginHelper('readyUser', true); self::loginHelper('readyUser', true);
\Test_Encryption_Util::loginHelper('notReadyUser', true); self::loginHelper('notReadyUser', true);
// delete encryption dir to make it not ready // delete encryption dir to make it not ready
$this->view->unlink('notReadyUser/files_encryption/'); $this->view->unlink('notReadyUser/files_encryption/');
// login as user1 // login as user1
\Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1); self::loginHelper(self::TEST_ENCRYPTION_UTIL_USER1);
$result = $this->util->filterShareReadyUsers($usersToTest); $result = $this->util->filterShareReadyUsers($usersToTest);
$this->assertEquals( $this->assertEquals(
@ -598,7 +598,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
if ($loadEncryption) { if ($loadEncryption) {
$params['uid'] = $user; $params['uid'] = $user;
$params['password'] = $password; $params['password'] = $password;
OCA\Encryption\Hooks::login($params); \OCA\Files_Encryption\Hooks::login($params);
} }
} }
@ -625,9 +625,9 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
} }
/** /**
* dummy class extends \OCA\Encryption\Util to access protected methods for testing * dummy class extends \OCA\Files_Encryption\Util to access protected methods for testing
*/ */
class DummyUtilClass extends \OCA\Encryption\Util { class DummyUtilClass extends \OCA\Files_Encryption\Util {
public function testIsMountPointApplicableToUser($mount) { public function testIsMountPointApplicableToUser($mount) {
return $this->isMountPointApplicableToUser($mount); return $this->isMountPointApplicableToUser($mount);
} }

View File

@ -20,14 +20,14 @@
* *
*/ */
use OCA\Encryption; namespace OCA\Files_Encryption\Tests;
/** /**
* Class Test_Encryption_Webdav * Class Webdav
* *
* this class provide basic webdav tests for PUT,GET and DELETE * this class provide basic webdav tests for PUT,GET and DELETE
*/ */
class Test_Encryption_Webdav extends \OCA\Files_Encryption\Tests\TestCase { class Webdav extends TestCase {
const TEST_ENCRYPTION_WEBDAV_USER1 = "test-webdav-user1"; const TEST_ENCRYPTION_WEBDAV_USER1 = "test-webdav-user1";
@ -46,7 +46,7 @@ class Test_Encryption_Webdav extends \OCA\Files_Encryption\Tests\TestCase {
parent::setUpBeforeClass(); parent::setUpBeforeClass();
// create test user // create test user
self::loginHelper(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1, true); self::loginHelper(self::TEST_ENCRYPTION_WEBDAV_USER1, true);
} }
@ -57,9 +57,9 @@ class Test_Encryption_Webdav extends \OCA\Files_Encryption\Tests\TestCase {
\OC_User::useBackend('database'); \OC_User::useBackend('database');
// set user id // set user id
\OC_User::setUserId(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1); \OC_User::setUserId(self::TEST_ENCRYPTION_WEBDAV_USER1);
$this->userId = \Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1; $this->userId = self::TEST_ENCRYPTION_WEBDAV_USER1;
$this->pass = \Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1; $this->pass = self::TEST_ENCRYPTION_WEBDAV_USER1;
// init filesystem view // init filesystem view
$this->view = new \OC\Files\View('/'); $this->view = new \OC\Files\View('/');
@ -68,21 +68,21 @@ class Test_Encryption_Webdav extends \OCA\Files_Encryption\Tests\TestCase {
$this->dataShort = 'hats'; $this->dataShort = 'hats';
// remember files_trashbin state // remember files_trashbin state
$this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); $this->stateFilesTrashbin = \OC_App::isEnabled('files_trashbin');
// we don't want to tests with app files_trashbin enabled // we don't want to tests with app files_trashbin enabled
\OC_App::disable('files_trashbin'); \OC_App::disable('files_trashbin');
// create test user // create test user
self::loginHelper(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1); self::loginHelper(self::TEST_ENCRYPTION_WEBDAV_USER1);
} }
protected function tearDown() { protected function tearDown() {
// reset app files_trashbin // reset app files_trashbin
if ($this->stateFilesTrashbin) { if ($this->stateFilesTrashbin) {
OC_App::enable('files_trashbin'); \OC_App::enable('files_trashbin');
} else { } else {
OC_App::disable('files_trashbin'); \OC_App::disable('files_trashbin');
} }
parent::tearDown(); parent::tearDown();
@ -90,7 +90,7 @@ class Test_Encryption_Webdav extends \OCA\Files_Encryption\Tests\TestCase {
public static function tearDownAfterClass() { public static function tearDownAfterClass() {
// cleanup test user // cleanup test user
\OC_User::deleteUser(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1); \OC_User::deleteUser(self::TEST_ENCRYPTION_WEBDAV_USER1);
parent::tearDownAfterClass(); parent::tearDownAfterClass();
} }
@ -138,7 +138,7 @@ class Test_Encryption_Webdav extends \OCA\Files_Encryption\Tests\TestCase {
\OC_FileProxy::$enabled = $proxyStatus; \OC_FileProxy::$enabled = $proxyStatus;
// check if encrypted content is valid // check if encrypted content is valid
$this->assertTrue(Encryption\Crypt::isCatfileContent($encryptedContent)); $this->assertTrue(\OCA\Files_Encryption\Crypt::isCatfileContent($encryptedContent));
// get decrypted file contents // get decrypted file contents
$decrypt = file_get_contents('crypt:///' . $this->userId . '/files' . $filename); $decrypt = file_get_contents('crypt:///' . $this->userId . '/files' . $filename);
@ -211,14 +211,14 @@ class Test_Encryption_Webdav extends \OCA\Files_Encryption\Tests\TestCase {
*/ */
function handleWebdavRequest($body = false) { function handleWebdavRequest($body = false) {
// Backends // Backends
$authBackend = new OC_Connector_Sabre_Auth(); $authBackend = new \OC_Connector_Sabre_Auth();
$lockBackend = new OC_Connector_Sabre_Locks(); $lockBackend = new \OC_Connector_Sabre_Locks();
$requestBackend = new OC_Connector_Sabre_Request(); $requestBackend = new \OC_Connector_Sabre_Request();
// Create ownCloud Dir // Create ownCloud Dir
$root = '/' . $this->userId . '/files'; $root = '/' . $this->userId . '/files';
$view = new \OC\Files\View($root); $view = new \OC\Files\View($root);
$publicDir = new OC_Connector_Sabre_Directory($view, $view->getFileInfo('')); $publicDir = new \OC_Connector_Sabre_Directory($view, $view->getFileInfo(''));
$objectTree = new \OC\Connector\Sabre\ObjectTree(); $objectTree = new \OC\Connector\Sabre\ObjectTree();
$mountManager = \OC\Files\Filesystem::getMountManager(); $mountManager = \OC\Files\Filesystem::getMountManager();
$objectTree->init($publicDir, $view, $mountManager); $objectTree->init($publicDir, $view, $mountManager);
@ -232,8 +232,8 @@ class Test_Encryption_Webdav extends \OCA\Files_Encryption\Tests\TestCase {
$server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, 'ownCloud')); $server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, 'ownCloud'));
$server->addPlugin(new \Sabre\DAV\Locks\Plugin($lockBackend)); $server->addPlugin(new \Sabre\DAV\Locks\Plugin($lockBackend));
$server->addPlugin(new \Sabre\DAV\Browser\Plugin(false)); // Show something in the Browser, but no upload $server->addPlugin(new \Sabre\DAV\Browser\Plugin(false)); // Show something in the Browser, but no upload
$server->addPlugin(new OC_Connector_Sabre_QuotaPlugin($view)); $server->addPlugin(new \OC_Connector_Sabre_QuotaPlugin($view));
$server->addPlugin(new OC_Connector_Sabre_MaintenancePlugin()); $server->addPlugin(new \OC_Connector_Sabre_MaintenancePlugin());
$server->debugExceptions = true; $server->debugExceptions = true;
// And off we go! // And off we go!

View File

@ -274,7 +274,7 @@ class Trashbin {
return 0; return 0;
} }
$util = new \OCA\Encryption\Util($rootView, $user); $util = new \OCA\Files_Encryption\Util($rootView, $user);
$baseDir = '/files_encryption/'; $baseDir = '/files_encryption/';
if (!$util->isSystemWideMountPoint($ownerPath)) { if (!$util->isSystemWideMountPoint($ownerPath)) {
@ -448,7 +448,7 @@ class Trashbin {
return false; return false;
} }
$util = new \OCA\Encryption\Util($rootView, $user); $util = new \OCA\Files_Encryption\Util($rootView, $user);
$baseDir = '/files_encryption/'; $baseDir = '/files_encryption/';
if (!$util->isSystemWideMountPoint($ownerPath)) { if (!$util->isSystemWideMountPoint($ownerPath)) {

View File

@ -104,7 +104,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements \Sabre\
} catch (\OCP\Files\LockNotAcquiredException $e) { } catch (\OCP\Files\LockNotAcquiredException $e) {
// the file is currently being written to by another process // the file is currently being written to by another process
throw new OC_Connector_Sabre_Exception_FileLocked($e->getMessage(), $e->getCode(), $e); throw new OC_Connector_Sabre_Exception_FileLocked($e->getMessage(), $e->getCode(), $e);
} catch (\OCA\Encryption\Exception\EncryptionException $e) { } catch (\OCA\Files_Encryption\Exception\EncryptionException $e) {
throw new \Sabre\DAV\Exception\Forbidden($e->getMessage()); throw new \Sabre\DAV\Exception\Forbidden($e->getMessage());
} catch (\OCP\Files\StorageNotAvailableException $e) { } catch (\OCP\Files\StorageNotAvailableException $e) {
throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage());
@ -166,7 +166,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements \Sabre\
} else { } else {
try { try {
return $this->fileView->fopen(ltrim($this->path, '/'), 'rb'); return $this->fileView->fopen(ltrim($this->path, '/'), 'rb');
} catch (\OCA\Encryption\Exception\EncryptionException $e) { } catch (\OCA\Files_Encryption\Exception\EncryptionException $e) {
throw new \Sabre\DAV\Exception\Forbidden($e->getMessage()); throw new \Sabre\DAV\Exception\Forbidden($e->getMessage());
} catch (\OCP\Files\StorageNotAvailableException $e) { } catch (\OCP\Files\StorageNotAvailableException $e) {
throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage());

View File

@ -11,7 +11,7 @@ $params = array('uid' => \OCP\User::getUser(),
'password' => $_POST['password']); 'password' => $_POST['password']);
$view = new OC\Files\View('/'); $view = new OC\Files\View('/');
$util = new \OCA\Encryption\Util($view, \OCP\User::getUser()); $util = new \OCA\Files_Encryption\Util($view, \OCP\User::getUser());
$l = \OC::$server->getL10N('settings'); $l = \OC::$server->getL10N('settings');
$result = $util->initEncryption($params); $result = $util->initEncryption($params);

View File

@ -52,7 +52,7 @@ class Controller {
if (\OC_App::isEnabled('files_encryption')) { if (\OC_App::isEnabled('files_encryption')) {
//handle the recovery case //handle the recovery case
$util = new \OCA\Encryption\Util(new \OC\Files\View('/'), $username); $util = new \OCA\Files_Encryption\Util(new \OC\Files\View('/'), $username);
$recoveryAdminEnabled = \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled'); $recoveryAdminEnabled = \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled');
$validRecoveryPassword = false; $validRecoveryPassword = false;