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)
$encryptionInitStatus = 2;
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();
}

View File

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

View File

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

View File

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

View File

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

View File

@ -7,8 +7,6 @@
* Script to handle admin settings for encrypted key recovery
*/
use OCA\Encryption;
\OCP\JSON::checkLoggedIn();
\OCP\JSON::checkAppEnabled('files_encryption');
\OCP\JSON::callCheck();
@ -22,7 +20,7 @@ if (
$userId = \OCP\USER::getUser();
$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
$return = $util->setRecoveryForUser($_POST['userEnableRecovery']);

View File

@ -1,41 +1,26 @@
<?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::addscript('files_encryption', 'encryption');
\OCP\Util::addscript('files_encryption', 'detect-migration');
if (!OC_Config::getValue('maintenance', false)) {
OC_FileProxy::register(new OCA\Encryption\Proxy());
OC_FileProxy::register(new OCA\Files_Encryption\Proxy());
// User related hooks
OCA\Encryption\Helper::registerUserHooks();
OCA\Files_Encryption\Helper::registerUserHooks();
// Sharing related hooks
OCA\Encryption\Helper::registerShareHooks();
OCA\Files_Encryption\Helper::registerShareHooks();
// Filesystem related hooks
OCA\Encryption\Helper::registerFilesystemHooks();
OCA\Files_Encryption\Helper::registerFilesystemHooks();
// App manager related hooks
OCA\Encryption\Helper::registerAppHooks();
OCA\Files_Encryption\Helper::registerAppHooks();
if(!in_array('crypt', stream_get_wrappers())) {
stream_wrapper_register('crypt', 'OCA\Encryption\Stream');
stream_wrapper_register('crypt', 'OCA\Files_Encryption\Stream');
}
} else {
// 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');
// 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

View File

@ -21,7 +21,7 @@
*
*/
namespace OCA\Encryption\Exception;
namespace OCA\Files_Encryption\Exception;
/**
* 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

View File

@ -12,14 +12,14 @@ if (!isset($_)) { //also provide standalone error page
if (isset($_GET['errorCode'])) {
$errorCode = $_GET['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.');
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();
$errorMsg = $l->t('Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files.', array($theme->getName()));
break;
case \OCA\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.');
break;
default:
@ -27,7 +27,7 @@ if (!isset($_)) { //also provide standalone error page
break;
}
} 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");
}

View File

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

View File

@ -25,7 +25,7 @@
*
*/
namespace OCA\Encryption;
namespace OCA\Files_Encryption;
/**
* Class for common cryptography functionality
@ -133,7 +133,7 @@ class Crypt {
* Check if a file's contents contains an IV and is symmetrically encrypted
* @param string $content
* @return boolean
* @note see also OCA\Encryption\Util->isEncryptedPath()
* @note see also \OCA\Files_Encryption\Util->isEncryptedPath()
*/
public static function isCatfileContent($content) {
@ -190,7 +190,7 @@ class Crypt {
* @param string $passphrase
* @param string $cypher used for encryption, currently we support AES-128-CFB and AES-256-CFB
* @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) {
@ -379,7 +379,7 @@ class Crypt {
* @param string $plainContent content to be encrypted
* @param array $publicKeys array keys must be the userId of corresponding user
* @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
*/
public static function multiKeyEncrypt($plainContent, array $publicKeys) {
@ -425,7 +425,7 @@ class Crypt {
* @param string $encryptedContent
* @param string $shareKey
* @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
* @return string $plainContent decrypted string
* @note symmetricDecryptFileContent() can be used to decrypt files created using this method
@ -554,7 +554,7 @@ class Crypt {
* get chiper from header
*
* @param array $header
* @throws \OCA\Encryption\Exception\EncryptionException
* @throws \OCA\Files_Encryption\Exception\EncryptionException
*/
public static function getCipher($header) {
$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
* @package OCA\Encryption
* @package OCA\Files_Encryption
*/
class Helper {
@ -39,9 +39,9 @@ class Helper {
*/
public static function registerShareHooks() {
\OCP\Util::connectHook('OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared');
\OCP\Util::connectHook('OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared');
\OCP\Util::connectHook('OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare');
\OCP\Util::connectHook('OCP\Share', 'pre_shared', 'OCA\Files_Encryption\Hooks', 'preShared');
\OCP\Util::connectHook('OCP\Share', 'post_shared', 'OCA\Files_Encryption\Hooks', 'postShared');
\OCP\Util::connectHook('OCP\Share', 'post_unshare', 'OCA\Files_Encryption\Hooks', 'postUnshare');
}
/**
@ -50,12 +50,12 @@ class Helper {
*/
public static function registerUserHooks() {
\OCP\Util::connectHook('OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login');
\OCP\Util::connectHook('OC_User', 'logout', 'OCA\Encryption\Hooks', 'logout');
\OCP\Util::connectHook('OC_User', 'post_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase');
\OCP\Util::connectHook('OC_User', 'pre_setPassword', 'OCA\Encryption\Hooks', 'preSetPassphrase');
\OCP\Util::connectHook('OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser');
\OCP\Util::connectHook('OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser');
\OCP\Util::connectHook('OC_User', 'post_login', 'OCA\Files_Encryption\Hooks', 'login');
\OCP\Util::connectHook('OC_User', 'logout', 'OCA\Files_Encryption\Hooks', 'logout');
\OCP\Util::connectHook('OC_User', 'post_setPassword', 'OCA\Files_Encryption\Hooks', 'setPassphrase');
\OCP\Util::connectHook('OC_User', 'pre_setPassword', 'OCA\Files_Encryption\Hooks', 'preSetPassphrase');
\OCP\Util::connectHook('OC_User', 'post_createUser', 'OCA\Files_Encryption\Hooks', 'postCreateUser');
\OCP\Util::connectHook('OC_User', 'post_deleteUser', 'OCA\Files_Encryption\Hooks', 'postDeleteUser');
}
/**
@ -64,15 +64,15 @@ class Helper {
*/
public static function registerFilesystemHooks() {
\OCP\Util::connectHook('OC_Filesystem', 'rename', 'OCA\Encryption\Hooks', 'preRename');
\OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRenameOrCopy');
\OCP\Util::connectHook('OC_Filesystem', 'copy', 'OCA\Encryption\Hooks', 'preCopy');
\OCP\Util::connectHook('OC_Filesystem', 'post_copy', 'OCA\Encryption\Hooks', 'postRenameOrCopy');
\OCP\Util::connectHook('OC_Filesystem', 'post_delete', 'OCA\Encryption\Hooks', 'postDelete');
\OCP\Util::connectHook('OC_Filesystem', 'delete', 'OCA\Encryption\Hooks', 'preDelete');
\OCP\Util::connectHook('\OC\Core\LostPassword\Controller\LostController', 'post_passwordReset', 'OCA\Encryption\Hooks', 'postPasswordReset');
\OCP\Util::connectHook('OC_Filesystem', 'post_umount', 'OCA\Encryption\Hooks', 'postUnmount');
\OCP\Util::connectHook('OC_Filesystem', 'umount', 'OCA\Encryption\Hooks', 'preUnmount');
\OCP\Util::connectHook('OC_Filesystem', 'rename', 'OCA\Files_Encryption\Hooks', 'preRename');
\OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Files_Encryption\Hooks', 'postRenameOrCopy');
\OCP\Util::connectHook('OC_Filesystem', 'copy', 'OCA\Files_Encryption\Hooks', 'preCopy');
\OCP\Util::connectHook('OC_Filesystem', 'post_copy', 'OCA\Files_Encryption\Hooks', 'postRenameOrCopy');
\OCP\Util::connectHook('OC_Filesystem', 'post_delete', 'OCA\Files_Encryption\Hooks', 'postDelete');
\OCP\Util::connectHook('OC_Filesystem', 'delete', 'OCA\Files_Encryption\Hooks', 'preDelete');
\OCP\Util::connectHook('\OC\Core\LostPassword\Controller\LostController', 'post_passwordReset', 'OCA\Files_Encryption\Hooks', 'postPasswordReset');
\OCP\Util::connectHook('OC_Filesystem', 'post_umount', 'OCA\Files_Encryption\Hooks', 'postUnmount');
\OCP\Util::connectHook('OC_Filesystem', 'umount', 'OCA\Files_Encryption\Hooks', 'preUnmount');
}
/**
@ -81,8 +81,8 @@ class Helper {
*/
public static function registerAppHooks() {
\OCP\Util::connectHook('OC_App', 'pre_disable', 'OCA\Encryption\Hooks', 'preDisable');
\OCP\Util::connectHook('OC_App', 'post_disable', 'OCA\Encryption\Hooks', 'postEnable');
\OCP\Util::connectHook('OC_App', 'pre_disable', 'OCA\Files_Encryption\Hooks', 'preDisable');
\OCP\Util::connectHook('OC_App', 'post_disable', 'OCA\Files_Encryption\Hooks', 'postEnable');
}
/**
@ -131,8 +131,6 @@ class Helper {
*
* @param string $recoveryKeyId
* @param string $recoveryPassword
* @internal param \OCA\Encryption\Util $util
* @internal param string $password
* @return bool
*/
public static function adminEnableRecovery($recoveryKeyId, $recoveryPassword) {
@ -147,13 +145,13 @@ class Helper {
if (!Keymanager::recoveryKeyExists($view)) {
$keypair = \OCA\Encryption\Crypt::createKeypair();
$keypair = Crypt::createKeypair();
// Save public key
Keymanager::setPublicKey($keypair['publicKey'], $recoveryKeyId);
$cipher = \OCA\Encryption\Helper::getCipher();
$encryptedKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($keypair['privateKey'], $recoveryPassword, $cipher);
$cipher = Helper::getCipher();
$encryptedKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], $recoveryPassword, $cipher);
if ($encryptedKey) {
Keymanager::setPrivateSystemKey($encryptedKey, $recoveryKeyId);
// Set recoveryAdmin as enabled
@ -162,7 +160,7 @@ class Helper {
}
} 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);
if ($return) {
$appConfig->setValue('files_encryption', 'recoveryAdminEnabled', 1);
@ -362,14 +360,14 @@ class Helper {
if ($errorCode === null) {
$init = $session->getInitialized();
switch ($init) {
case \OCA\Encryption\Session::INIT_EXECUTED:
$errorCode = \OCA\Encryption\Crypt::ENCRYPTION_PRIVATE_KEY_NOT_VALID_ERROR;
case Session::INIT_EXECUTED:
$errorCode = Crypt::ENCRYPTION_PRIVATE_KEY_NOT_VALID_ERROR;
break;
case \OCA\Encryption\Session::NOT_INITIALIZED:
$errorCode = \OCA\Encryption\Crypt::ENCRYPTION_NOT_INITIALIZED_ERROR;
case Session::NOT_INITIALIZED:
$errorCode = Crypt::ENCRYPTION_NOT_INITIALIZED_ERROR;
break;
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;
@ -59,7 +59,7 @@ class Hooks {
\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 (!$privateKey) {
@ -128,7 +128,7 @@ class Hooks {
* remove keys from session during logout
*/
public static function logout() {
$session = new \OCA\Encryption\Session(new \OC\Files\View());
$session = new Session(new \OC\Files\View());
$session->removeKeys();
}
@ -182,7 +182,7 @@ class Hooks {
if (Crypt::mode() === 'server') {
$view = new \OC\Files\View('/');
$session = new \OCA\Encryption\Session($view);
$session = new Session($view);
// Get existing decrypted private key
$privateKey = $session->getPrivateKey();
@ -236,7 +236,7 @@ class Hooks {
Keymanager::setPublicKey($keypair['publicKey'], $user);
// 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) {
Keymanager::setPrivateKey($encryptedKey, $user);
@ -331,7 +331,7 @@ class Hooks {
private static function updateKeyfiles($path) {
$view = new \OC\Files\View('/');
$userId = \OCP\User::getUser();
$session = new \OCA\Encryption\Session($view);
$session = new Session($view);
$util = new Util($view, $userId);
$sharingEnabled = \OCP\Share::isEnabled();
@ -504,8 +504,8 @@ class Hooks {
\OC::$server->getConfig()->deleteAppFromAllUsers('files_encryption');
$session = new \OCA\Encryption\Session(new \OC\Files\View('/'));
$session->setInitialized(\OCA\Encryption\Session::NOT_INITIALIZED);
$session = new Session(new \OC\Files\View('/'));
$session->setInitialized(Session::NOT_INITIALIZED);
}
}
@ -515,8 +515,8 @@ class Hooks {
*/
public static function postEnable($params) {
if ($params['app'] === 'files_encryption') {
$session = new \OCA\Encryption\Session(new \OC\Files\View('/'));
$session->setInitialized(\OCA\Encryption\Session::NOT_INITIALIZED);
$session = new Session(new \OC\Files\View('/'));
$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
@ -141,7 +141,7 @@ class Keymanager {
* store file encryption key
*
* @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 $catfile keyfile content
* @return bool true/false
@ -158,7 +158,7 @@ class Keymanager {
* get path to key folder for a given file
*
* @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
* @return string
*/
@ -186,7 +186,7 @@ class Keymanager {
* get path to file key for a given file
*
* @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
* @return string
*/
@ -199,7 +199,7 @@ class Keymanager {
* get path to share key for a given user
*
* @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 $uid user for whom we want the share-key path
* @retrun string
@ -243,9 +243,8 @@ class Keymanager {
/**
* retrieve keyfile for an encrypted file
* @param \OC\Files\View $view
* @param \OCA\Encryption\Util $util
* @param \OCA\Files_Encryption\Util $util
* @param string|false $filePath
* @internal param \OCA\Encryption\file $string name
* @return string file key or false
* @note The keyfile returned is asymmetrically encrypted. Decryption
* of the keyfile must be performed by client code
@ -347,7 +346,7 @@ class Keymanager {
/**
* store multiple share keys for a single file
* @param \OC\Files\View $view
* @param \OCA\Encryption\Util $util
* @param \OCA\Files_Encryption\Util $util
* @param string $path
* @param array $shareKeys
* @return bool
@ -376,7 +375,7 @@ class Keymanager {
* retrieve shareKey for an encrypted file
* @param \OC\Files\View $view
* @param string $userId
* @param \OCA\Encryption\Util $util
* @param \OCA\Files_Encryption\Util $util
* @param string $filePath
* @return string file key or false
* @note The sharekey returned is encrypted. Decryption

View File

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

View File

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

View File

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

View File

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

View File

@ -23,7 +23,7 @@
*
*/
namespace OCA\Encryption;
namespace OCA\Files_Encryption;
/**
* Class for utilities relating to encrypted file storage system
@ -83,7 +83,7 @@ class Util {
// make sure that the owners home is mounted
\OC\Files\Filesystem::initMountPoints($userId);
if (\OCA\Encryption\Helper::isPublicAccess()) {
if (Helper::isPublicAccess()) {
$this->keyId = $this->publicShareKeyId;
$this->isPublic = true;
} else {
@ -277,7 +277,7 @@ class Util {
if ($file !== "." && $file !== "..") {
$filePath = $directory . '/' . $this->view->getRelativePath('/' . $file);
$relPath = \OCA\Encryption\Helper::stripUserFilesPath($filePath);
$relPath = Helper::stripUserFilesPath($filePath);
// If the path is a directory, search
// its contents
@ -451,13 +451,13 @@ class Util {
}
}
fclose($stream);
$relPath = \OCA\Encryption\Helper::stripUserFilesPath($path);
$relPath = Helper::stripUserFilesPath($path);
$shareKey = Keymanager::getShareKey($this->view, $this->keyId, $this, $relPath);
if($shareKey===false) {
\OC_FileProxy::$enabled = $proxyStatus;
return $result;
}
$session = new \OCA\Encryption\Session($this->view);
$session = new Session($this->view);
$privateKey = $session->getPrivateKey();
$plainKeyfile = $this->decryptKeyfile($relPath, $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
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
$userIds = array($owner);
@ -1402,7 +1402,7 @@ class Util {
if ($this->view->is_dir($this->userFilesDir . '/' . $filePath)) {
$this->addRecoveryKeys($filePath . '/');
} else {
$session = new \OCA\Encryption\Session(new \OC\Files\View('/'));
$session = new Session(new \OC\Files\View('/'));
$sharingEnabled = \OCP\Share::isEnabled();
$usersSharing = $this->getSharingUsersArray($sharingEnabled, $filePath);
$this->setSharedFileKeyfiles($session, $usersSharing, $filePath);
@ -1559,10 +1559,10 @@ class Util {
*/
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
$session->setInitialized(\OCA\Encryption\Session::INIT_EXECUTED);
$session->setInitialized(Session::INIT_EXECUTED);
$encryptedKey = Keymanager::getPrivateKey($this->view, $params['uid']);
@ -1578,7 +1578,7 @@ class Util {
}
$session->setPrivateKey($privateKey);
$session->setInitialized(\OCA\Encryption\Session::INIT_SUCCESSFUL);
$session->setInitialized(Session::INIT_SUCCESSFUL);
return $session;
}
@ -1587,7 +1587,7 @@ class Util {
* remove encryption related keys from the session
*/
public function closeEncryptionSession() {
$session = new \OCA\Encryption\Session($this->view);
$session = new Session($this->view);
$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
$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();
$tmpl->assign('recoveryEnabled', $recoveryAdminEnabled);

View File

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

View File

@ -4,7 +4,7 @@
<?php p($_['message']); ?>
<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 endif; ?>
<br/>

View File

@ -1,7 +1,7 @@
<form id="encryption" class="section">
<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 else: ?>
<p id="encryptionSetRecoveryKey">

View File

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

View File

@ -7,12 +7,12 @@
* 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";
@ -23,7 +23,7 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
public $dataUrl;
public $dataShort;
/**
* @var OC\Files\View
* @var \OC\Files\View
*/
public $view;
public $legacyEncryptedData;
@ -34,16 +34,16 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
parent::setUpBeforeClass();
// create test user
self::loginHelper(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1, true);
self::loginHelper(self::TEST_ENCRYPTION_CRYPT_USER1, true);
}
protected function setUp() {
parent::setUp();
// set user id
self::loginHelper(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1);
$this->userId = \Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1;
$this->pass = \Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1;
self::loginHelper(self::TEST_ENCRYPTION_CRYPT_USER1);
$this->userId = self::TEST_ENCRYPTION_CRYPT_USER1;
$this->pass = self::TEST_ENCRYPTION_CRYPT_USER1;
// set content for encrypting / decrypting in tests
$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->legacyEncryptedData = __DIR__ . '/legacy-encrypted-text.txt';
$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->genPrivateKey = $keypair['privateKey'];
$this->view = new \OC\Files\View('/');
// 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
\OC_App::disable('files_trashbin');
@ -70,9 +70,9 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
protected function tearDown() {
// reset app files_trashbin
if ($this->stateFilesTrashbin) {
OC_App::enable('files_trashbin');
\OC_App::enable('files_trashbin');
} else {
OC_App::disable('files_trashbin');
\OC_App::disable('files_trashbin');
}
$this->assertTrue(\OC_FileProxy::$enabled);
@ -83,7 +83,7 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
public static function tearDownAfterClass() {
// cleanup test user
\OC_User::deleteUser(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1);
\OC_User::deleteUser(self::TEST_ENCRYPTION_CRYPT_USER1);
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
$key = Encryption\Crypt::generateKey();
$key = \OCA\Files_Encryption\Crypt::generateKey();
$this->assertTrue(strlen($key) > 16);
@ -104,16 +104,16 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
public function testDecryptPrivateKey() {
// 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);
//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);
@ -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
$crypted = Encryption\Crypt::symmetricEncryptFileContent($this->dataShort, 'hat');
$crypted = \OCA\Files_Encryption\Crypt::symmetricEncryptFileContent($this->dataShort, 'hat');
$this->assertNotEquals($this->dataShort, $crypted);
$decrypt = Encryption\Crypt::symmetricDecryptFileContent($crypted, 'hat');
$decrypt = \OCA\Files_Encryption\Crypt::symmetricDecryptFileContent($crypted, 'hat');
$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
$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);
$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);
@ -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,
// 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);
// Re-enable proxy - our work is done
@ -367,13 +367,13 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
*/
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
$pair1 = Encryption\Crypt::createKeypair();
$pair1 = \OCA\Files_Encryption\Crypt::createKeypair();
$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);
$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']);
$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);
@ -529,7 +529,7 @@ class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase {
// relogin
$params['uid'] = $this->userId;
$params['password'] = 'test';
OCA\Encryption\Hooks::login($params);
\OCA\Files_Encryption\Hooks::login($params);
// Get file decrypted contents
$newDecrypt = file_get_contents('crypt:///' . $this->userId . '/files/' . $filename);

View File

@ -6,35 +6,35 @@
* 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_USER2 = "test-helper-user2";
protected function setUpUsers() {
// create test user
self::loginHelper(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER2, true);
self::loginHelper(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER1, true);
self::loginHelper(self::TEST_ENCRYPTION_HELPER_USER2, true);
self::loginHelper(self::TEST_ENCRYPTION_HELPER_USER1, true);
}
protected function cleanUpUsers() {
// cleanup test user
\OC_User::deleteUser(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER1);
\OC_User::deleteUser(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER2);
\OC_User::deleteUser(self::TEST_ENCRYPTION_HELPER_USER1);
\OC_User::deleteUser(self::TEST_ENCRYPTION_HELPER_USER2);
}
public static function setupHooks() {
// Filesystem related hooks
\OCA\Encryption\Helper::registerFilesystemHooks();
\OCA\Files_Encryption\Helper::registerFilesystemHooks();
// clear and register hooks
\OC_FileProxy::clearProxies();
\OC_FileProxy::register(new OCA\Encryption\Proxy());
\OC_FileProxy::register(new \OCA\Files_Encryption\Proxy());
}
public static function tearDownAfterClass() {
@ -49,13 +49,13 @@ class Test_Encryption_Helper extends \OCA\Files_Encryption\Tests\TestCase {
$partFilename = 'testfile.txt.part';
$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';
$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() {
@ -85,8 +85,8 @@ class Test_Encryption_Helper extends \OCA\Files_Encryption\Tests\TestCase {
$versionPath = "/user/files_versions/foo/bar/test.txt.v456756835";
$cachePath = "/user/cache/transferid636483/foo/bar/test.txt";
$this->assertEquals($relativePath, Encryption\Helper::getPathToRealFile($versionPath));
$this->assertEquals($relativePath, Encryption\Helper::getPathToRealFile($cachePath));
$this->assertEquals($relativePath, \OCA\Files_Encryption\Helper::getPathToRealFile($versionPath));
$this->assertEquals($relativePath, \OCA\Files_Encryption\Helper::getPathToRealFile($cachePath));
}
function testGetUser() {
@ -100,20 +100,20 @@ class Test_Encryption_Helper extends \OCA\Files_Encryption\Tests\TestCase {
self::loginHelper(self::TEST_ENCRYPTION_HELPER_USER1);
// 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
self::logoutHelper();
// 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, Encryption\Helper::getUser($path2));
$this->assertEquals(self::TEST_ENCRYPTION_HELPER_USER1, \OCA\Files_Encryption\Helper::getUser($path1));
$this->assertEquals(self::TEST_ENCRYPTION_HELPER_USER1, \OCA\Files_Encryption\Helper::getUser($path2));
$this->assertFalse(Encryption\Helper::getUser($path3));
$this->assertFalse(Encryption\Helper::getUser($path4));
$this->assertFalse(\OCA\Files_Encryption\Helper::getUser($path3));
$this->assertFalse(\OCA\Files_Encryption\Helper::getUser($path4));
// Log-in again
self::loginHelper(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER1);
self::loginHelper(self::TEST_ENCRYPTION_HELPER_USER1);
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
*/
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_USER2 = "test-encryption-hooks-user2.dot";
@ -64,20 +64,20 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
);
// create test user
self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1, true);
self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2, true);
self::loginHelper(self::TEST_ENCRYPTION_HOOKS_USER1, true);
self::loginHelper(self::TEST_ENCRYPTION_HOOKS_USER2, true);
}
protected function setUp() {
parent::setUp();
// set user id
self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1);
\OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1);
self::loginHelper(self::TEST_ENCRYPTION_HOOKS_USER1);
\OC_User::setUserId(self::TEST_ENCRYPTION_HOOKS_USER1);
// init filesystem view
$this->user1View = new \OC\Files\View('/'. \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1 . '/files');
$this->user2View = new \OC\Files\View('/'. \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2 . '/files');
$this->user1View = new \OC\Files\View('/'. self::TEST_ENCRYPTION_HOOKS_USER1 . '/files');
$this->user2View = new \OC\Files\View('/'. self::TEST_ENCRYPTION_HOOKS_USER2 . '/files');
$this->rootView = new \OC\Files\View('/');
// init short data
@ -89,8 +89,8 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
public static function tearDownAfterClass() {
// cleanup test user
\OC_User::deleteUser(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1);
\OC_User::deleteUser(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2);
\OC_User::deleteUser(self::TEST_ENCRYPTION_HOOKS_USER1);
\OC_User::deleteUser(self::TEST_ENCRYPTION_HOOKS_USER2);
parent::tearDownAfterClass();
}
@ -104,7 +104,7 @@ class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase {
$this->assertTrue(is_array($row));
// 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
$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() {
// 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
\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
$this->assertTrue($this->rootView->file_exists(
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(
self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' . $this->filename . '/fileKey'));
self::logoutHelper();
self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2);
\OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2);
self::loginHelper(self::TEST_ENCRYPTION_HOOKS_USER2);
\OC_User::setUserId(self::TEST_ENCRYPTION_HOOKS_USER2);
$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
$this->assertTrue($this->rootView->file_exists(
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(
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
$this->assertTrue($this->rootView->file_exists(
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(
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
$this->assertFalse($this->rootView->file_exists(
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(
self::TEST_ENCRYPTION_HOOKS_USER2 . '/files_encryption/keys/' . $this->filename . '/fileKey'));
// but user1 keys should still exist
$this->assertTrue($this->rootView->file_exists(
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(
self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' . $this->filename . '/fileKey'));
if ($stateFilesTrashbin) {
OC_App::enable('files_trashbin');
\OC_App::enable('files_trashbin');
}
else {
OC_App::disable('files_trashbin');
\OC_App::disable('files_trashbin');
}
}
function testDeleteHooksForSharedFiles() {
self::logoutHelper();
self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1);
\OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1);
self::loginHelper(self::TEST_ENCRYPTION_HOOKS_USER1);
\OC_User::setUserId(self::TEST_ENCRYPTION_HOOKS_USER1);
// 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
\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
$this->assertTrue($this->rootView->file_exists(
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(
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
$this->assertTrue($this->rootView->file_exists(
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::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2);
\OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2);
self::loginHelper(self::TEST_ENCRYPTION_HOOKS_USER2);
\OC_User::setUserId(self::TEST_ENCRYPTION_HOOKS_USER2);
// user2 update the shared file
$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
$this->assertFalse($this->rootView->file_exists(
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(
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
$this->assertTrue($this->rootView->file_exists(
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(
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(
self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keys/' . $this->filename . '/fileKey'));
// cleanup
self::logoutHelper();
self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1);
\OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1);
self::loginHelper(self::TEST_ENCRYPTION_HOOKS_USER1);
\OC_User::setUserId(self::TEST_ENCRYPTION_HOOKS_USER1);
if ($stateFilesTrashbin) {
OC_App::enable('files_trashbin');
\OC_App::enable('files_trashbin');
}
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();
// 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'));
// check if we are able to decrypt the private key
$encryptedKey = \OCA\Encryption\Keymanager::getPrivateKey($view, 'newUser');
$privateKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, 'newUserPassword');
$encryptedKey = \OCA\Files_Encryption\Keymanager::getPrivateKey($view, 'newUser');
$privateKey = \OCA\Files_Encryption\Crypt::decryptPrivateKey($encryptedKey, 'newUserPassword');
$this->assertTrue(is_string($privateKey));
// change the password before the user logged-in for the first time,
// we can replace the encryption keys
\OCA\Encryption\Hooks::setPassphrase(array('uid' => 'newUser', 'password' => 'passwordChanged'));
\OCA\Files_Encryption\Hooks::setPassphrase(array('uid' => 'newUser', 'password' => 'passwordChanged'));
$encryptedKey = \OCA\Encryption\Keymanager::getPrivateKey($view, 'newUser');
$privateKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged');
$encryptedKey = \OCA\Files_Encryption\Keymanager::getPrivateKey($view, 'newUser');
$privateKey = \OCA\Files_Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged');
$this->assertTrue(is_string($privateKey));
// now create a files folder to simulate a already used account
$view->mkdir('/newUser/files');
// change the password after the user logged in, now the password should not change
\OCA\Encryption\Hooks::setPassphrase(array('uid' => 'newUser', 'password' => 'passwordChanged2'));
\OCA\Files_Encryption\Hooks::setPassphrase(array('uid' => 'newUser', 'password' => 'passwordChanged2'));
$encryptedKey = \OCA\Encryption\Keymanager::getPrivateKey($view, 'newUser');
$privateKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged2');
$encryptedKey = \OCA\Files_Encryption\Keymanager::getPrivateKey($view, 'newUser');
$privateKey = \OCA\Files_Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged2');
$this->assertFalse($privateKey);
$privateKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged');
$privateKey = \OCA\Files_Encryption\Crypt::decryptPrivateKey($encryptedKey, 'passwordChanged');
$this->assertTrue(is_string($privateKey));
}

View File

@ -6,12 +6,12 @@
* 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";
@ -19,7 +19,7 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
public $pass;
public static $stateFilesTrashbin;
/**
* @var OC\Files\View
* @var \OC\Files\View
*/
public $view;
public $randomKey;
@ -32,14 +32,14 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
\OC_FileProxy::$enabled = false;
// 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
\OC_App::disable('files_trashbin');
// create test user
\OC_User::deleteUser(\Test_Encryption_Keymanager::TEST_USER);
parent::loginHelper(\Test_Encryption_Keymanager::TEST_USER, true);
\OC_User::deleteUser(self::TEST_USER);
parent::loginHelper(self::TEST_USER, true);
}
protected function setUp() {
@ -50,24 +50,24 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
$this->dataUrl = __DIR__ . '/../lib/crypt.php';
$this->legacyData = __DIR__ . '/legacy-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->genPrivateKey = $keypair['privateKey'];
$this->view = new \OC\Files\View('/');
self::loginHelper(Test_Encryption_Keymanager::TEST_USER);
$this->userId = \Test_Encryption_Keymanager::TEST_USER;
$this->pass = \Test_Encryption_Keymanager::TEST_USER;
self::loginHelper(self::TEST_USER);
$this->userId = self::TEST_USER;
$this->pass = self::TEST_USER;
$userHome = \OC_User::getHome($this->userId);
$this->dataDir = str_replace('/' . $this->userId, '', $userHome);
}
function tearDown() {
$this->view->deleteAll('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys');
$this->view->deleteAll('/' . self::TEST_USER . '/files_encryption/keys');
parent::tearDown();
}
@ -75,10 +75,10 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
\OC_FileProxy::$enabled = true;
// cleanup test user
\OC_User::deleteUser(\Test_Encryption_Keymanager::TEST_USER);
\OC_User::deleteUser(self::TEST_USER);
// reset app files_trashbin
if (self::$stateFilesTrashbin) {
OC_App::enable('files_trashbin');
\OC_App::enable('files_trashbin');
}
parent::tearDownAfterClass();
@ -89,9 +89,9 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
*/
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);
@ -108,7 +108,7 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
*/
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);
@ -128,7 +128,7 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
$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
$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);
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'));
@ -154,7 +154,7 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
$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'));
@ -169,13 +169,13 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
$key = "dummy key";
$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'));
$result = Encryption\Keymanager::getPrivateSystemKey($keyName);
$result = \OCA\Files_Encryption\Keymanager::getPrivateSystemKey($keyName);
$this->assertSame($encHeader . $key, $result);
@ -189,7 +189,7 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
*/
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']);
@ -199,7 +199,7 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
$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);
@ -215,85 +215,85 @@ class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase {
*/
function testRecursiveDelShareKeysFolder() {
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files/folder1');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files/folder1/existingFile.txt', 'data');
$this->view->mkdir('/' . self::TEST_USER . '/files/folder1');
$this->view->file_put_contents('/' . self::TEST_USER . '/files/folder1/existingFile.txt', 'data');
// create folder structure for some dummy share key files
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1');
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/existingFile.txt');
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1');
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file2');
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/subfolder');
$this->view->mkdir('/'.Test_Encryption_Keymanager::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('/'.Test_Encryption_Keymanager::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');
$this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/existingFile.txt');
$this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/file1');
$this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/file2');
$this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder');
$this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder/file2');
$this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder/subsubfolder');
$this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder/subsubfolder/file1');
$this->view->mkdir('/' . self::TEST_USER . '/files_encryption/keys/folder1/subfolder/subsubfolder/file2');
// 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('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/existingFile.txt/' . Test_Encryption_Keymanager::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('/'.Test_Encryption_Keymanager::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('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/userx.' . Test_Encryption_Keymanager::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('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keys/folder1/file1/user1.' . Test_Encryption_Keymanager::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('/'.Test_Encryption_Keymanager::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('/'.Test_Encryption_Keymanager::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('/'.Test_Encryption_Keymanager::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/existingFile.txt/user1.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('/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/user1.shareKey', 'data');
$this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/user1.test.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('/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/userx.' . self::TEST_USER . '.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('/' . self::TEST_USER . '/files_encryption/keys/folder1/file1/user1.' . self::TEST_USER . '.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('/' . self::TEST_USER . '/files_encryption/keys/folder1/file2/user2.shareKey', 'data');
$this->view->file_put_contents('/' . self::TEST_USER . '/files_encryption/keys/folder1/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('/' . self::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/file2/user2.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
Encryption\Keymanager::delShareKey($this->view,
array('user1', 'user2', Test_Encryption_Keymanager::TEST_USER),
Encryption\Keymanager::getKeyPath($this->view, new Encryption\Util($this->view, Test_Encryption_Keymanager::TEST_USER), '/folder1'),
Test_Encryption_Keymanager::TEST_USER,
\OCA\Files_Encryption\Keymanager::delShareKey($this->view,
array('user1', 'user2', self::TEST_USER),
\OCA\Files_Encryption\Keymanager::getKeyPath($this->view, new \OCA\Files_Encryption\Util($this->view, self::TEST_USER), '/folder1'),
self::TEST_USER,
'/folder1');
// check if share keys from user1 and user2 are deleted
$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(
'/'.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(
'/'.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(
'/'.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(
'/'.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
$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(
'/'.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(
'/'.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
$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(
'/'.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(
'/'.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
$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(
'/'.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(
'/'.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
$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
$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() {
$this->view->mkdir('/'.Test_Encryption_Keymanager::TEST_USER.'/files/folder1');
$this->view->file_put_contents('/'.Test_Encryption_Keymanager::TEST_USER.'/files/folder1/existingFile.txt', 'data');
$this->view->mkdir('/' . self::TEST_USER . '/files/folder1');
$this->view->file_put_contents('/' . self::TEST_USER . '/files/folder1/existingFile.txt', 'data');
// 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
$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('/'.Test_Encryption_Keymanager::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('/'.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.user1.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('/' . self::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.' . self::TEST_USER . '.shareKey', 'data');
// recursive delete share keys from user1 and user2
Encryption\Keymanager::delShareKey($this->view,
array('user1', 'user2', Test_Encryption_Keymanager::TEST_USER),
Encryption\Keymanager::getKeyPath($this->view, new Encryption\Util($this->view, Test_Encryption_Keymanager::TEST_USER), '/folder1/existingFile.txt'),
Test_Encryption_Keymanager::TEST_USER,
\OCA\Files_Encryption\Keymanager::delShareKey($this->view,
array('user1', 'user2', self::TEST_USER),
\OCA\Files_Encryption\Keymanager::getKeyPath($this->view, new \OCA\Files_Encryption\Util($this->view, self::TEST_USER), '/folder1/existingFile.txt'),
self::TEST_USER,
'/folder1/existingFile.txt');
// check if share keys from user1 and user2 are deleted
$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(
'/'.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
$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(
'/'.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
$this->view->deleteAll('/'.Test_Encryption_Keymanager::TEST_USER.'/files/folder1');
$this->view->deleteAll('/' . self::TEST_USER . '/files/folder1');
}
function testKeySetPreperation() {
$basePath = '/'.Test_Encryption_Keymanager::TEST_USER.'/files';
$basePath = '/' . self::TEST_USER . '/files';
$path = '/folder1/subfolder/subsubfolder/file.txt';
$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/
@ -366,6 +366,6 @@ class TestProtectedKeymanagerMethods extends \OCA\Encryption\Keymanager {
* @param string $basePath
*/
public static function testKeySetPreperation($view, $path) {
return self::keySetPreparation($view, $path);
self::keySetPreparation($view, $path);
}
}

View File

@ -21,15 +21,15 @@
*
*/
use OCA\Encryption;
use OCA\Files_Encryption\Migration;
namespace OCA\Files_Encryption\Tests;
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_USER2='test_encryption_user2';
const TEST_ENCRYPTION_MIGRATION_USER3='test_encryption_user3';
/** @var \OC\Files\View */
private $view;
private $public_share_key_id;
private $recovery_key_id;
@ -49,8 +49,8 @@ class Test_Migration extends \OCA\Files_Encryption\Tests\TestCase {
}
protected function tearDown() {
if (OC_DB::tableExists('encryption_test')) {
OC_DB::dropTable('encryption_test');
if (\OC_DB::tableExists('encryption_test')) {
\OC_DB::dropTable('encryption_test');
}
$this->assertTableNotExist('encryption_test');
@ -60,10 +60,10 @@ class Test_Migration extends \OCA\Files_Encryption\Tests\TestCase {
public function setUp() {
$this->loginHelper(self::TEST_ENCRYPTION_MIGRATION_USER1);
$this->view = new \OC\Files\View();
$this->public_share_key_id = Encryption\Helper::getPublicShareKeyId();
$this->recovery_key_id = Encryption\Helper::getRecoveryKeyId();
if (OC_DB::tableExists('encryption_test')) {
OC_DB::dropTable('encryption_test');
$this->public_share_key_id = \OCA\Files_Encryption\Helper::getPublicShareKeyId();
$this->recovery_key_id = \OCA\Files_Encryption\Helper::getRecoveryKeyId();
if (\OC_DB::tableExists('encryption_test')) {
\OC_DB::dropTable('encryption_test');
}
$this->assertTableNotExist('encryption_test');
}
@ -101,7 +101,7 @@ class Test_Migration extends \OCA\Files_Encryption\Tests\TestCase {
// create test table
$this->checkLastIndexId();
OC_DB::createDbFromStructure(__DIR__ . '/encryption_table.xml');
\OC_DB::createDbFromStructure(__DIR__ . '/encryption_table.xml');
$this->checkLastIndexId();
}
@ -109,12 +109,12 @@ class Test_Migration extends \OCA\Files_Encryption\Tests\TestCase {
* @param string $table
*/
public function assertTableNotExist($table) {
$type=OC_Config::getValue( "dbtype", "sqlite" );
$type = \OC_Config::getValue( "dbtype", "sqlite" );
if( $type == 'sqlite' || $type == 'sqlite3' ) {
// sqlite removes the tables after closing the DB
$this->assertTrue(true);
} 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
*/
class Test_Encryption_Proxy extends \OCA\Files_Encryption\Tests\TestCase {
class Proxy extends TestCase {
const TEST_ENCRYPTION_PROXY_USER1 = "test-proxy-user1";
@ -45,20 +45,20 @@ class Test_Encryption_Proxy extends \OCA\Files_Encryption\Tests\TestCase {
parent::setUpBeforeClass();
// create test user
self::loginHelper(\Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1, true);
self::loginHelper(self::TEST_ENCRYPTION_PROXY_USER1, true);
}
protected function setUp() {
parent::setUp();
// set user id
\OC_User::setUserId(\Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1);
$this->userId = \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1;
$this->pass = \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1;
\OC_User::setUserId(self::TEST_ENCRYPTION_PROXY_USER1);
$this->userId = self::TEST_ENCRYPTION_PROXY_USER1;
$this->pass = self::TEST_ENCRYPTION_PROXY_USER1;
// init filesystem view
$this->view = new \OC\Files\View('/'. \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files');
$this->rootView = new \OC\Files\View('/'. \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 );
$this->view = new \OC\Files\View('/'. self::TEST_ENCRYPTION_PROXY_USER1 . '/files');
$this->rootView = new \OC\Files\View('/'. self::TEST_ENCRYPTION_PROXY_USER1 );
// init short data
$this->data = 'hats';
@ -69,7 +69,7 @@ class Test_Encryption_Proxy extends \OCA\Files_Encryption\Tests\TestCase {
public static function tearDownAfterClass() {
// cleanup test user
\OC_User::deleteUser(\Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1);
\OC_User::deleteUser(self::TEST_ENCRYPTION_PROXY_USER1);
parent::tearDownAfterClass();
}
@ -137,13 +137,13 @@ class Test_Encryption_Proxy extends \OCA\Files_Encryption\Tests\TestCase {
public function isExcludedPathProvider() {
return array(
array ('/' . \Test_Encryption_Proxy::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 (self::TEST_ENCRYPTION_PROXY_USER1 . '/files/test.txt', false),
array ('/files/test.txt', true),
array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files/versions/test.txt', false),
array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files_versions/test.txt', false),
array ('/' . \Test_Encryption_Proxy::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 . '/files/versions/test.txt', false),
array ('/' . self::TEST_ENCRYPTION_PROXY_USER1 . '/files_versions/test.txt', false),
array ('/' . self::TEST_ENCRYPTION_PROXY_USER1 . '/files_trashbin/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
*/
class DummyProxy extends \OCA\Encryption\Proxy {
class DummyProxy extends \OCA\Files_Encryption\Proxy {
public function isExcludedPathTesting($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
*/
class Test_Encryption_Stream extends \OCA\Files_Encryption\Tests\TestCase {
class Stream extends TestCase {
const TEST_ENCRYPTION_STREAM_USER1 = "test-stream-user1";
@ -43,16 +43,16 @@ class Test_Encryption_Stream extends \OCA\Files_Encryption\Tests\TestCase {
parent::setUpBeforeClass();
// create test user
self::loginHelper(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1, true);
self::loginHelper(self::TEST_ENCRYPTION_STREAM_USER1, true);
}
protected function setUp() {
parent::setUp();
// set user id
\OC_User::setUserId(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1);
$this->userId = \Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1;
$this->pass = \Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1;
\OC_User::setUserId(self::TEST_ENCRYPTION_STREAM_USER1);
$this->userId = self::TEST_ENCRYPTION_STREAM_USER1;
$this->pass = self::TEST_ENCRYPTION_STREAM_USER1;
// init filesystem view
$this->view = new \OC\Files\View('/');
@ -61,7 +61,7 @@ class Test_Encryption_Stream extends \OCA\Files_Encryption\Tests\TestCase {
$this->dataShort = 'hats';
// 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
\OC_App::disable('files_trashbin');
@ -70,10 +70,10 @@ class Test_Encryption_Stream extends \OCA\Files_Encryption\Tests\TestCase {
protected function tearDown() {
// reset app files_trashbin
if ($this->stateFilesTrashbin) {
OC_App::enable('files_trashbin');
\OC_App::enable('files_trashbin');
}
else {
OC_App::disable('files_trashbin');
\OC_App::disable('files_trashbin');
}
parent::tearDown();
@ -81,7 +81,7 @@ class Test_Encryption_Stream extends \OCA\Files_Encryption\Tests\TestCase {
public static function tearDownAfterClass() {
// cleanup test user
\OC_User::deleteUser(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1);
\OC_User::deleteUser(self::TEST_ENCRYPTION_STREAM_USER1);
parent::tearDownAfterClass();
}
@ -208,7 +208,7 @@ class Test_Encryption_Stream extends \OCA\Files_Encryption\Tests\TestCase {
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
$handle = fopen("crypt://".$tmpFilename, "r");

View File

@ -8,10 +8,8 @@
namespace OCA\Files_Encryption\Tests;
use OCA\Encryption;
/**
* Class Test_Encryption_TestCase
* Class TestCase
*/
abstract class TestCase extends \Test\TestCase {
@ -42,7 +40,7 @@ abstract class TestCase extends \Test\TestCase {
if ($loadEncryption) {
$params['uid'] = $user;
$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::useBackend('database');
\OCA\Encryption\Helper::registerFilesystemHooks();
\OCA\Encryption\Helper::registerUserHooks();
\OCA\Encryption\Helper::registerShareHooks();
\OCA\Files_Encryption\Helper::registerFilesystemHooks();
\OCA\Files_Encryption\Helper::registerUserHooks();
\OCA\Files_Encryption\Helper::registerShareHooks();
\OC::registerShareHooks();
\OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup');
// clear and register hooks
\OC_FileProxy::clearProxies();
\OC_FileProxy::register(new \OCA\Encryption\Proxy());
\OC_FileProxy::register(new \OCA\Files_Encryption\Proxy());
}
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
*/
class Test_Encryption_Trashbin extends \OCA\Files_Encryption\Tests\TestCase {
class Trashbin extends TestCase {
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';
// 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
\OC_App::enable('files_trashbin');
@ -80,10 +80,10 @@ class Test_Encryption_Trashbin extends \OCA\Files_Encryption\Tests\TestCase {
protected function tearDown() {
// reset app files_trashbin
if ($this->stateFilesTrashbin) {
OC_App::enable('files_trashbin');
\OC_App::enable('files_trashbin');
}
else {
OC_App::disable('files_trashbin');
\OC_App::disable('files_trashbin');
}
parent::tearDown();
@ -173,7 +173,7 @@ class Test_Encryption_Trashbin extends \OCA\Files_Encryption\Tests\TestCase {
// check if we found the file we created
$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
$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
$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(
'/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keys/'
. $filename . '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey'));
'/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keys/'
. $filename . '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey'));
// restore first file
$this->assertTrue(\OCA\Files_Trashbin\Trashbin::restore($filename . '.' . $trashFileSuffix, $filename, $timestamp));

View File

@ -6,12 +6,12 @@
* 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_USER2 = "test-util-user2";
@ -24,14 +24,14 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
public $publicKeyDir;
public $pass;
/**
* @var OC\Files\View
* @var \OC\Files\View
*/
public $view;
public $keyfilesPath;
public $publicKeyPath;
public $privateKeyPath;
/**
* @var \OCA\Encryption\Util
* @var \OCA\Files_Encryption\Util
*/
public $util;
public $dataShort;
@ -74,12 +74,12 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
$this->legacyEncryptedDataKey = __DIR__ . '/encryption.key';
$this->legacyKey = "30943623843030686906\0\0\0\0";
$keypair = Encryption\Crypt::createKeypair();
$keypair = \OCA\Files_Encryption\Crypt::createKeypair();
$this->genPublicKey = $keypair['publicKey'];
$this->genPrivateKey = $keypair['privateKey'];
$this->publicKeyDir = \OCA\Encryption\Keymanager::getPublicKeyPath();
$this->publicKeyDir = \OCA\Files_Encryption\Keymanager::getPublicKeyPath();
$this->encryptionDir = '/' . $this->userId . '/' . 'files_encryption';
$this->keysPath = $this->encryptionDir . '/' . 'keys';
$this->publicKeyPath =
@ -89,10 +89,10 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
$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
$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
\OC_App::disable('files_trashbin');
@ -101,10 +101,10 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
protected function tearDown() {
// reset app files_trashbin
if ($this->stateFilesTrashbin) {
OC_App::enable('files_trashbin');
\OC_App::enable('files_trashbin');
}
else {
OC_App::disable('files_trashbin');
\OC_App::disable('files_trashbin');
}
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
*/
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->encryptionDir, $util->getPath('encryptionDir'));
@ -144,7 +144,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
*/
function testIsEncryptedPath() {
$util = new Encryption\Util($this->view, $this->userId);
$util = new \OCA\Files_Encryption\Util($this->view, $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['password'] = $this->pass;
// $this->assertFalse(OCA\Encryption\Hooks::login($params));
// $this->assertFalse(OCA\Files_Encryption\Hooks::login($params));
//
// $this->view->unlink($this->privateKeyPath);
// }
@ -207,7 +207,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
*/
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
$enabled = $util->recoveryEnabledForUser();
@ -241,7 +241,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
// Re-enable proxy - our work is done
\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);
@ -283,7 +283,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
function testEncryptAll() {
$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
\OC_App::disable('files_encryption');
@ -338,18 +338,18 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
$this->assertSame($encContent, $content);
// now we load the encryption app again
OC_App::loadApp('files_encryption');
\OC_App::loadApp('files_encryption');
// init encryption app
$params = array('uid' => \OCP\User::getUser(),
'password' => \OCP\User::getUser());
$view = new OC\Files\View('/');
$util = new \OCA\Encryption\Util($view, \OCP\User::getUser());
$view = new \OC\Files\View('/');
$util = new \OCA\Files_Encryption\Util($view, \OCP\User::getUser());
$result = $util->initEncryption($params);
$this->assertTrue($result instanceof \OCA\Encryption\Session);
$this->assertTrue($result instanceof \OCA\Files_Encryption\Session);
$successful = $util->decryptAll();
@ -385,7 +385,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
// cleanup
$this->view->unlink($this->userId . '/files/' . $filename);
$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/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');
@ -427,7 +427,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
$file1 = "/decryptAll1" . $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/' . $file2, $this->dataShort);
@ -551,13 +551,13 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
$publicShareKeyId,
$recoveryKeyId,
);
\Test_Encryption_Util::loginHelper('readyUser', true);
\Test_Encryption_Util::loginHelper('notReadyUser', true);
self::loginHelper('readyUser', true);
self::loginHelper('notReadyUser', true);
// delete encryption dir to make it not ready
$this->view->unlink('notReadyUser/files_encryption/');
// 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);
$this->assertEquals(
@ -598,7 +598,7 @@ class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase {
if ($loadEncryption) {
$params['uid'] = $user;
$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) {
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
*/
class Test_Encryption_Webdav extends \OCA\Files_Encryption\Tests\TestCase {
class Webdav extends TestCase {
const TEST_ENCRYPTION_WEBDAV_USER1 = "test-webdav-user1";
@ -46,7 +46,7 @@ class Test_Encryption_Webdav extends \OCA\Files_Encryption\Tests\TestCase {
parent::setUpBeforeClass();
// 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');
// set user id
\OC_User::setUserId(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1);
$this->userId = \Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1;
$this->pass = \Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1;
\OC_User::setUserId(self::TEST_ENCRYPTION_WEBDAV_USER1);
$this->userId = self::TEST_ENCRYPTION_WEBDAV_USER1;
$this->pass = self::TEST_ENCRYPTION_WEBDAV_USER1;
// init filesystem view
$this->view = new \OC\Files\View('/');
@ -68,21 +68,21 @@ class Test_Encryption_Webdav extends \OCA\Files_Encryption\Tests\TestCase {
$this->dataShort = 'hats';
// 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
\OC_App::disable('files_trashbin');
// create test user
self::loginHelper(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1);
self::loginHelper(self::TEST_ENCRYPTION_WEBDAV_USER1);
}
protected function tearDown() {
// reset app files_trashbin
if ($this->stateFilesTrashbin) {
OC_App::enable('files_trashbin');
\OC_App::enable('files_trashbin');
} else {
OC_App::disable('files_trashbin');
\OC_App::disable('files_trashbin');
}
parent::tearDown();
@ -90,7 +90,7 @@ class Test_Encryption_Webdav extends \OCA\Files_Encryption\Tests\TestCase {
public static function tearDownAfterClass() {
// cleanup test user
\OC_User::deleteUser(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1);
\OC_User::deleteUser(self::TEST_ENCRYPTION_WEBDAV_USER1);
parent::tearDownAfterClass();
}
@ -138,7 +138,7 @@ class Test_Encryption_Webdav extends \OCA\Files_Encryption\Tests\TestCase {
\OC_FileProxy::$enabled = $proxyStatus;
// check if encrypted content is valid
$this->assertTrue(Encryption\Crypt::isCatfileContent($encryptedContent));
$this->assertTrue(\OCA\Files_Encryption\Crypt::isCatfileContent($encryptedContent));
// get decrypted file contents
$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) {
// Backends
$authBackend = new OC_Connector_Sabre_Auth();
$lockBackend = new OC_Connector_Sabre_Locks();
$requestBackend = new OC_Connector_Sabre_Request();
$authBackend = new \OC_Connector_Sabre_Auth();
$lockBackend = new \OC_Connector_Sabre_Locks();
$requestBackend = new \OC_Connector_Sabre_Request();
// Create ownCloud Dir
$root = '/' . $this->userId . '/files';
$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();
$mountManager = \OC\Files\Filesystem::getMountManager();
$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\Locks\Plugin($lockBackend));
$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_MaintenancePlugin());
$server->addPlugin(new \OC_Connector_Sabre_QuotaPlugin($view));
$server->addPlugin(new \OC_Connector_Sabre_MaintenancePlugin());
$server->debugExceptions = true;
// And off we go!

View File

@ -274,7 +274,7 @@ class Trashbin {
return 0;
}
$util = new \OCA\Encryption\Util($rootView, $user);
$util = new \OCA\Files_Encryption\Util($rootView, $user);
$baseDir = '/files_encryption/';
if (!$util->isSystemWideMountPoint($ownerPath)) {
@ -448,7 +448,7 @@ class Trashbin {
return false;
}
$util = new \OCA\Encryption\Util($rootView, $user);
$util = new \OCA\Files_Encryption\Util($rootView, $user);
$baseDir = '/files_encryption/';
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) {
// the file is currently being written to by another process
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());
} catch (\OCP\Files\StorageNotAvailableException $e) {
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 {
try {
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());
} catch (\OCP\Files\StorageNotAvailableException $e) {
throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage());

View File

@ -11,7 +11,7 @@ $params = array('uid' => \OCP\User::getUser(),
'password' => $_POST['password']);
$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');
$result = $util->initEncryption($params);

View File

@ -52,7 +52,7 @@ class Controller {
if (\OC_App::isEnabled('files_encryption')) {
//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');
$validRecoveryPassword = false;