Passed
Push — master ( 32577f...c1368b )
by Robin
11:13 queued 10s
created
apps/theming/lib/Settings/Section.php 1 patch
Indentation   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -28,55 +28,55 @@
 block discarded – undo
28 28
 use OCP\Settings\IIconSection;
29 29
 
30 30
 class Section implements IIconSection {
31
-	/** @var IL10N */
32
-	private $l;
33
-	/** @var IURLGenerator */
34
-	private $url;
31
+    /** @var IL10N */
32
+    private $l;
33
+    /** @var IURLGenerator */
34
+    private $url;
35 35
 
36
-	/**
37
-	 * @param IURLGenerator $url
38
-	 * @param IL10N $l
39
-	 */
40
-	public function __construct(IURLGenerator $url, IL10N $l) {
41
-		$this->url = $url;
42
-		$this->l = $l;
43
-	}
36
+    /**
37
+     * @param IURLGenerator $url
38
+     * @param IL10N $l
39
+     */
40
+    public function __construct(IURLGenerator $url, IL10N $l) {
41
+        $this->url = $url;
42
+        $this->l = $l;
43
+    }
44 44
 
45
-	/**
46
-	 * returns the ID of the section. It is supposed to be a lower case string,
47
-	 * e.g. 'ldap'
48
-	 *
49
-	 * @returns string
50
-	 */
51
-	public function getID() {
52
-		return 'theming';
53
-	}
45
+    /**
46
+     * returns the ID of the section. It is supposed to be a lower case string,
47
+     * e.g. 'ldap'
48
+     *
49
+     * @returns string
50
+     */
51
+    public function getID() {
52
+        return 'theming';
53
+    }
54 54
 
55
-	/**
56
-	 * returns the translated name as it should be displayed, e.g. 'LDAP / AD
57
-	 * integration'. Use the L10N service to translate it.
58
-	 *
59
-	 * @return string
60
-	 */
61
-	public function getName() {
62
-		return $this->l->t('Theming');
63
-	}
55
+    /**
56
+     * returns the translated name as it should be displayed, e.g. 'LDAP / AD
57
+     * integration'. Use the L10N service to translate it.
58
+     *
59
+     * @return string
60
+     */
61
+    public function getName() {
62
+        return $this->l->t('Theming');
63
+    }
64 64
 
65
-	/**
66
-	 * @return int whether the form should be rather on the top or bottom of
67
-	 * the settings navigation. The sections are arranged in ascending order of
68
-	 * the priority values. It is required to return a value between 0 and 99.
69
-	 *
70
-	 * E.g.: 70
71
-	 */
72
-	public function getPriority() {
73
-		return 30;
74
-	}
65
+    /**
66
+     * @return int whether the form should be rather on the top or bottom of
67
+     * the settings navigation. The sections are arranged in ascending order of
68
+     * the priority values. It is required to return a value between 0 and 99.
69
+     *
70
+     * E.g.: 70
71
+     */
72
+    public function getPriority() {
73
+        return 30;
74
+    }
75 75
 
76
-	/**
77
-	 * {@inheritdoc}
78
-	 */
79
-	public function getIcon() {
80
-		return $this->url->imagePath('theming', 'app-dark.svg');
81
-	}
76
+    /**
77
+     * {@inheritdoc}
78
+     */
79
+    public function getIcon() {
80
+        return $this->url->imagePath('theming', 'app-dark.svg');
81
+    }
82 82
 }
Please login to merge, or discard this patch.
apps/twofactor_backupcodes/lib/Db/BackupCode.php 1 patch
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -34,13 +34,13 @@
 block discarded – undo
34 34
  */
35 35
 class BackupCode extends Entity {
36 36
 
37
-	/** @var string */
38
-	protected $userId;
37
+    /** @var string */
38
+    protected $userId;
39 39
 
40
-	/** @var string */
41
-	protected $code;
40
+    /** @var string */
41
+    protected $code;
42 42
 
43
-	/** @var int */
44
-	protected $used;
43
+    /** @var int */
44
+    protected $used;
45 45
 
46 46
 }
Please login to merge, or discard this patch.
apps/encryption/lib/Users/Setup.php 1 patch
Indentation   +50 added lines, -50 removed lines patch added patch discarded remove patch
@@ -32,58 +32,58 @@
 block discarded – undo
32 32
 use OCP\IUserSession;
33 33
 
34 34
 class Setup {
35
-	/**
36
-	 * @var Crypt
37
-	 */
38
-	private $crypt;
39
-	/**
40
-	 * @var KeyManager
41
-	 */
42
-	private $keyManager;
43
-	/**
44
-	 * @var ILogger
45
-	 */
46
-	private $logger;
47
-	/**
48
-	 * @var bool|string
49
-	 */
50
-	private $user;
35
+    /**
36
+     * @var Crypt
37
+     */
38
+    private $crypt;
39
+    /**
40
+     * @var KeyManager
41
+     */
42
+    private $keyManager;
43
+    /**
44
+     * @var ILogger
45
+     */
46
+    private $logger;
47
+    /**
48
+     * @var bool|string
49
+     */
50
+    private $user;
51 51
 
52 52
 
53
-	/**
54
-	 * @param ILogger $logger
55
-	 * @param IUserSession $userSession
56
-	 * @param Crypt $crypt
57
-	 * @param KeyManager $keyManager
58
-	 */
59
-	public function __construct(ILogger $logger,
60
-								IUserSession $userSession,
61
-								Crypt $crypt,
62
-								KeyManager $keyManager) {
63
-		$this->logger = $logger;
64
-		$this->user = $userSession && $userSession->isLoggedIn() ? $userSession->getUser()->getUID() : false;
65
-		$this->crypt = $crypt;
66
-		$this->keyManager = $keyManager;
67
- 	}
53
+    /**
54
+     * @param ILogger $logger
55
+     * @param IUserSession $userSession
56
+     * @param Crypt $crypt
57
+     * @param KeyManager $keyManager
58
+     */
59
+    public function __construct(ILogger $logger,
60
+                                IUserSession $userSession,
61
+                                Crypt $crypt,
62
+                                KeyManager $keyManager) {
63
+        $this->logger = $logger;
64
+        $this->user = $userSession && $userSession->isLoggedIn() ? $userSession->getUser()->getUID() : false;
65
+        $this->crypt = $crypt;
66
+        $this->keyManager = $keyManager;
67
+        }
68 68
 
69
-	/**
70
-	 * @param string $uid user id
71
-	 * @param string $password user password
72
-	 * @return bool
73
-	 */
74
-	public function setupUser($uid, $password) {
75
-		if (!$this->keyManager->userHasKeys($uid)) {
76
-			return $this->keyManager->storeKeyPair($uid, $password,
77
-				$this->crypt->createKeyPair());
78
-		}
79
-		return true;
80
-	}
69
+    /**
70
+     * @param string $uid user id
71
+     * @param string $password user password
72
+     * @return bool
73
+     */
74
+    public function setupUser($uid, $password) {
75
+        if (!$this->keyManager->userHasKeys($uid)) {
76
+            return $this->keyManager->storeKeyPair($uid, $password,
77
+                $this->crypt->createKeyPair());
78
+        }
79
+        return true;
80
+    }
81 81
 
82
-	/**
83
-	 * make sure that all system keys exists
84
-	 */
85
-	public function setupSystem() {
86
-		$this->keyManager->validateShareKey();
87
-		$this->keyManager->validateMasterKey();
88
-	}
82
+    /**
83
+     * make sure that all system keys exists
84
+     */
85
+    public function setupSystem() {
86
+        $this->keyManager->validateShareKey();
87
+        $this->keyManager->validateMasterKey();
88
+    }
89 89
 }
Please login to merge, or discard this patch.
apps/encryption/lib/Controller/SettingsController.php 1 patch
Indentation   +124 added lines, -124 removed lines patch added patch discarded remove patch
@@ -38,129 +38,129 @@
 block discarded – undo
38 38
 
39 39
 class SettingsController extends Controller {
40 40
 
41
-	/** @var IL10N */
42
-	private $l;
43
-
44
-	/** @var IUserManager */
45
-	private $userManager;
46
-
47
-	/** @var IUserSession */
48
-	private $userSession;
49
-
50
-	/** @var KeyManager */
51
-	private $keyManager;
52
-
53
-	/** @var Crypt */
54
-	private $crypt;
55
-
56
-	/** @var Session */
57
-	private $session;
58
-
59
-	/** @var ISession  */
60
-	private $ocSession;
61
-
62
-	/** @var  Util */
63
-	private $util;
64
-
65
-	/**
66
-	 * @param string $AppName
67
-	 * @param IRequest $request
68
-	 * @param IL10N $l10n
69
-	 * @param IUserManager $userManager
70
-	 * @param IUserSession $userSession
71
-	 * @param KeyManager $keyManager
72
-	 * @param Crypt $crypt
73
-	 * @param Session $session
74
-	 * @param ISession $ocSession
75
-	 * @param Util $util
76
-	 */
77
-	public function __construct($AppName,
78
-								IRequest $request,
79
-								IL10N $l10n,
80
-								IUserManager $userManager,
81
-								IUserSession $userSession,
82
-								KeyManager $keyManager,
83
-								Crypt $crypt,
84
-								Session $session,
85
-								ISession $ocSession,
86
-								Util $util
41
+    /** @var IL10N */
42
+    private $l;
43
+
44
+    /** @var IUserManager */
45
+    private $userManager;
46
+
47
+    /** @var IUserSession */
48
+    private $userSession;
49
+
50
+    /** @var KeyManager */
51
+    private $keyManager;
52
+
53
+    /** @var Crypt */
54
+    private $crypt;
55
+
56
+    /** @var Session */
57
+    private $session;
58
+
59
+    /** @var ISession  */
60
+    private $ocSession;
61
+
62
+    /** @var  Util */
63
+    private $util;
64
+
65
+    /**
66
+     * @param string $AppName
67
+     * @param IRequest $request
68
+     * @param IL10N $l10n
69
+     * @param IUserManager $userManager
70
+     * @param IUserSession $userSession
71
+     * @param KeyManager $keyManager
72
+     * @param Crypt $crypt
73
+     * @param Session $session
74
+     * @param ISession $ocSession
75
+     * @param Util $util
76
+     */
77
+    public function __construct($AppName,
78
+                                IRequest $request,
79
+                                IL10N $l10n,
80
+                                IUserManager $userManager,
81
+                                IUserSession $userSession,
82
+                                KeyManager $keyManager,
83
+                                Crypt $crypt,
84
+                                Session $session,
85
+                                ISession $ocSession,
86
+                                Util $util
87 87
 ) {
88
-		parent::__construct($AppName, $request);
89
-		$this->l = $l10n;
90
-		$this->userSession = $userSession;
91
-		$this->userManager = $userManager;
92
-		$this->keyManager = $keyManager;
93
-		$this->crypt = $crypt;
94
-		$this->session = $session;
95
-		$this->ocSession = $ocSession;
96
-		$this->util = $util;
97
-	}
98
-
99
-
100
-	/**
101
-	 * @NoAdminRequired
102
-	 * @UseSession
103
-	 *
104
-	 * @param string $oldPassword
105
-	 * @param string $newPassword
106
-	 * @return DataResponse
107
-	 */
108
-	public function updatePrivateKeyPassword($oldPassword, $newPassword) {
109
-		$result = false;
110
-		$uid = $this->userSession->getUser()->getUID();
111
-		$errorMessage = $this->l->t('Could not update the private key password.');
112
-
113
-		//check if password is correct
114
-		$passwordCorrect = $this->userManager->checkPassword($uid, $newPassword);
115
-		if ($passwordCorrect === false) {
116
-			// if check with uid fails we need to check the password with the login name
117
-			// e.g. in the ldap case. For local user we need to check the password with
118
-			// the uid because in this case the login name is case insensitive
119
-			$loginName = $this->ocSession->get('loginname');
120
-			$passwordCorrect = $this->userManager->checkPassword($loginName, $newPassword);
121
-		}
122
-
123
-		if ($passwordCorrect !== false) {
124
-			$encryptedKey = $this->keyManager->getPrivateKey($uid);
125
-			$decryptedKey = $this->crypt->decryptPrivateKey($encryptedKey, $oldPassword, $uid);
126
-
127
-			if ($decryptedKey) {
128
-				$encryptedKey = $this->crypt->encryptPrivateKey($decryptedKey, $newPassword, $uid);
129
-				$header = $this->crypt->generateHeader();
130
-				if ($encryptedKey) {
131
-					$this->keyManager->setPrivateKey($uid, $header . $encryptedKey);
132
-					$this->session->setPrivateKey($decryptedKey);
133
-					$result = true;
134
-				}
135
-			} else {
136
-				$errorMessage = $this->l->t('The old password was not correct, please try again.');
137
-			}
138
-		} else {
139
-			$errorMessage = $this->l->t('The current log-in password was not correct, please try again.');
140
-		}
141
-
142
-		if ($result === true) {
143
-			$this->session->setStatus(Session::INIT_SUCCESSFUL);
144
-			return new DataResponse(
145
-				['message' => (string) $this->l->t('Private key password successfully updated.')]
146
-			);
147
-		} else {
148
-			return new DataResponse(
149
-				['message' => (string) $errorMessage],
150
-				Http::STATUS_BAD_REQUEST
151
-			);
152
-		}
153
-
154
-	}
155
-
156
-	/**
157
-	 * @UseSession
158
-	 *
159
-	 * @param bool $encryptHomeStorage
160
-	 * @return DataResponse
161
-	 */
162
-	public function setEncryptHomeStorage($encryptHomeStorage) {
163
-		$this->util->setEncryptHomeStorage($encryptHomeStorage);
164
-		return new DataResponse();
165
-	}
88
+        parent::__construct($AppName, $request);
89
+        $this->l = $l10n;
90
+        $this->userSession = $userSession;
91
+        $this->userManager = $userManager;
92
+        $this->keyManager = $keyManager;
93
+        $this->crypt = $crypt;
94
+        $this->session = $session;
95
+        $this->ocSession = $ocSession;
96
+        $this->util = $util;
97
+    }
98
+
99
+
100
+    /**
101
+     * @NoAdminRequired
102
+     * @UseSession
103
+     *
104
+     * @param string $oldPassword
105
+     * @param string $newPassword
106
+     * @return DataResponse
107
+     */
108
+    public function updatePrivateKeyPassword($oldPassword, $newPassword) {
109
+        $result = false;
110
+        $uid = $this->userSession->getUser()->getUID();
111
+        $errorMessage = $this->l->t('Could not update the private key password.');
112
+
113
+        //check if password is correct
114
+        $passwordCorrect = $this->userManager->checkPassword($uid, $newPassword);
115
+        if ($passwordCorrect === false) {
116
+            // if check with uid fails we need to check the password with the login name
117
+            // e.g. in the ldap case. For local user we need to check the password with
118
+            // the uid because in this case the login name is case insensitive
119
+            $loginName = $this->ocSession->get('loginname');
120
+            $passwordCorrect = $this->userManager->checkPassword($loginName, $newPassword);
121
+        }
122
+
123
+        if ($passwordCorrect !== false) {
124
+            $encryptedKey = $this->keyManager->getPrivateKey($uid);
125
+            $decryptedKey = $this->crypt->decryptPrivateKey($encryptedKey, $oldPassword, $uid);
126
+
127
+            if ($decryptedKey) {
128
+                $encryptedKey = $this->crypt->encryptPrivateKey($decryptedKey, $newPassword, $uid);
129
+                $header = $this->crypt->generateHeader();
130
+                if ($encryptedKey) {
131
+                    $this->keyManager->setPrivateKey($uid, $header . $encryptedKey);
132
+                    $this->session->setPrivateKey($decryptedKey);
133
+                    $result = true;
134
+                }
135
+            } else {
136
+                $errorMessage = $this->l->t('The old password was not correct, please try again.');
137
+            }
138
+        } else {
139
+            $errorMessage = $this->l->t('The current log-in password was not correct, please try again.');
140
+        }
141
+
142
+        if ($result === true) {
143
+            $this->session->setStatus(Session::INIT_SUCCESSFUL);
144
+            return new DataResponse(
145
+                ['message' => (string) $this->l->t('Private key password successfully updated.')]
146
+            );
147
+        } else {
148
+            return new DataResponse(
149
+                ['message' => (string) $errorMessage],
150
+                Http::STATUS_BAD_REQUEST
151
+            );
152
+        }
153
+
154
+    }
155
+
156
+    /**
157
+     * @UseSession
158
+     *
159
+     * @param bool $encryptHomeStorage
160
+     * @return DataResponse
161
+     */
162
+    public function setEncryptHomeStorage($encryptHomeStorage) {
163
+        $this->util->setEncryptHomeStorage($encryptHomeStorage);
164
+        return new DataResponse();
165
+    }
166 166
 }
Please login to merge, or discard this patch.
apps/encryption/lib/Exceptions/PublicKeyMissingException.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -25,14 +25,14 @@
 block discarded – undo
25 25
 
26 26
 class PublicKeyMissingException extends GenericEncryptionException {
27 27
 
28
-	/**
29
-	 * @param string $userId
30
-	 */
31
-	public function __construct($userId) {
32
-		if(empty($userId)) {
33
-			$userId = "<no-user-id-given>";
34
-		}
35
-		parent::__construct("Public Key missing for user: $userId");
36
-	}
28
+    /**
29
+     * @param string $userId
30
+     */
31
+    public function __construct($userId) {
32
+        if(empty($userId)) {
33
+            $userId = "<no-user-id-given>";
34
+        }
35
+        parent::__construct("Public Key missing for user: $userId");
36
+    }
37 37
 
38 38
 }
Please login to merge, or discard this patch.
apps/encryption/lib/Exceptions/PrivateKeyMissingException.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -28,14 +28,14 @@
 block discarded – undo
28 28
 
29 29
 class PrivateKeyMissingException extends GenericEncryptionException {
30 30
 
31
-	/**
32
-	 * @param string $userId
33
-	 */
34
-	public function __construct($userId) {
35
-		if(empty($userId)) {
36
-			$userId = "<no-user-id-given>";
37
-		}
38
-		parent::__construct("Private Key missing for user: $userId");
39
-	}
31
+    /**
32
+     * @param string $userId
33
+     */
34
+    public function __construct($userId) {
35
+        if(empty($userId)) {
36
+            $userId = "<no-user-id-given>";
37
+        }
38
+        parent::__construct("Private Key missing for user: $userId");
39
+    }
40 40
 
41 41
 }
Please login to merge, or discard this patch.
apps/encryption/lib/Hooks/Contracts/IHook.php 1 patch
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -24,10 +24,10 @@
 block discarded – undo
24 24
 
25 25
 
26 26
 interface IHook {
27
-	/**
28
-	 * Connects Hooks
29
-	 *
30
-	 * @return null
31
-	 */
32
-	public function addHooks();
27
+    /**
28
+     * Connects Hooks
29
+     *
30
+     * @return null
31
+     */
32
+    public function addHooks();
33 33
 }
Please login to merge, or discard this patch.
apps/encryption/lib/Crypto/DecryptAll.php 1 patch
Indentation   +123 added lines, -123 removed lines patch added patch discarded remove patch
@@ -35,127 +35,127 @@
 block discarded – undo
35 35
 
36 36
 class DecryptAll {
37 37
 
38
-	/** @var Util  */
39
-	protected $util;
40
-
41
-	/** @var QuestionHelper  */
42
-	protected $questionHelper;
43
-
44
-	/** @var  Crypt */
45
-	protected $crypt;
46
-
47
-	/** @var  KeyManager */
48
-	protected $keyManager;
49
-
50
-	/** @var Session  */
51
-	protected $session;
52
-
53
-	/**
54
-	 * @param Util $util
55
-	 * @param KeyManager $keyManager
56
-	 * @param Crypt $crypt
57
-	 * @param Session $session
58
-	 * @param QuestionHelper $questionHelper
59
-	 */
60
-	public function __construct(
61
-		Util $util,
62
-		KeyManager $keyManager,
63
-		Crypt $crypt,
64
-		Session $session,
65
-		QuestionHelper $questionHelper
66
-	) {
67
-		$this->util = $util;
68
-		$this->keyManager = $keyManager;
69
-		$this->crypt = $crypt;
70
-		$this->session = $session;
71
-		$this->questionHelper = $questionHelper;
72
-	}
73
-
74
-	/**
75
-	 * prepare encryption module to decrypt all files
76
-	 *
77
-	 * @param InputInterface $input
78
-	 * @param OutputInterface $output
79
-	 * @param $user
80
-	 * @return bool
81
-	 */
82
-	public function prepare(InputInterface $input, OutputInterface $output, $user) {
83
-
84
-		$question = new Question('Please enter the recovery key password: ');
85
-
86
-		if($this->util->isMasterKeyEnabled()) {
87
-			$output->writeln('Use master key to decrypt all files');
88
-			$user = $this->keyManager->getMasterKeyId();
89
-			$password =$this->keyManager->getMasterKeyPassword();
90
-		} else {
91
-			$recoveryKeyId = $this->keyManager->getRecoveryKeyId();
92
-			if (!empty($user)) {
93
-				$output->writeln('You can only decrypt the users files if you know');
94
-				$output->writeln('the users password or if he activated the recovery key.');
95
-				$output->writeln('');
96
-				$questionUseLoginPassword = new ConfirmationQuestion(
97
-					'Do you want to use the users login password to decrypt all files? (y/n) ',
98
-					false
99
-				);
100
-				$useLoginPassword = $this->questionHelper->ask($input, $output, $questionUseLoginPassword);
101
-				if ($useLoginPassword) {
102
-					$question = new Question('Please enter the user\'s login password: ');
103
-				} else if ($this->util->isRecoveryEnabledForUser($user) === false) {
104
-					$output->writeln('No recovery key available for user ' . $user);
105
-					return false;
106
-				} else {
107
-					$user = $recoveryKeyId;
108
-				}
109
-			} else {
110
-				$output->writeln('You can only decrypt the files of all users if the');
111
-				$output->writeln('recovery key is enabled by the admin and activated by the users.');
112
-				$output->writeln('');
113
-				$user = $recoveryKeyId;
114
-			}
115
-
116
-			$question->setHidden(true);
117
-			$question->setHiddenFallback(false);
118
-			$password = $this->questionHelper->ask($input, $output, $question);
119
-		}
120
-
121
-		$privateKey = $this->getPrivateKey($user, $password);
122
-		if ($privateKey !== false) {
123
-			$this->updateSession($user, $privateKey);
124
-			return true;
125
-		} else {
126
-			$output->writeln('Could not decrypt private key, maybe you entered the wrong password?');
127
-		}
128
-
129
-
130
-		return false;
131
-	}
132
-
133
-	/**
134
-	 * get the private key which will be used to decrypt all files
135
-	 *
136
-	 * @param string $user
137
-	 * @param string $password
138
-	 * @return bool|string
139
-	 * @throws \OCA\Encryption\Exceptions\PrivateKeyMissingException
140
-	 */
141
-	protected function getPrivateKey($user, $password) {
142
-		$recoveryKeyId = $this->keyManager->getRecoveryKeyId();
143
-		$masterKeyId = $this->keyManager->getMasterKeyId();
144
-		if ($user === $recoveryKeyId) {
145
-			$recoveryKey = $this->keyManager->getSystemPrivateKey($recoveryKeyId);
146
-			$privateKey = $this->crypt->decryptPrivateKey($recoveryKey, $password);
147
-		} elseif ($user === $masterKeyId) {
148
-			$masterKey = $this->keyManager->getSystemPrivateKey($masterKeyId);
149
-			$privateKey = $this->crypt->decryptPrivateKey($masterKey, $password, $masterKeyId);
150
-		} else {
151
-			$userKey = $this->keyManager->getPrivateKey($user);
152
-			$privateKey = $this->crypt->decryptPrivateKey($userKey, $password, $user);
153
-		}
154
-
155
-		return $privateKey;
156
-	}
157
-
158
-	protected function updateSession($user, $privateKey) {
159
-		$this->session->prepareDecryptAll($user, $privateKey);
160
-	}
38
+    /** @var Util  */
39
+    protected $util;
40
+
41
+    /** @var QuestionHelper  */
42
+    protected $questionHelper;
43
+
44
+    /** @var  Crypt */
45
+    protected $crypt;
46
+
47
+    /** @var  KeyManager */
48
+    protected $keyManager;
49
+
50
+    /** @var Session  */
51
+    protected $session;
52
+
53
+    /**
54
+     * @param Util $util
55
+     * @param KeyManager $keyManager
56
+     * @param Crypt $crypt
57
+     * @param Session $session
58
+     * @param QuestionHelper $questionHelper
59
+     */
60
+    public function __construct(
61
+        Util $util,
62
+        KeyManager $keyManager,
63
+        Crypt $crypt,
64
+        Session $session,
65
+        QuestionHelper $questionHelper
66
+    ) {
67
+        $this->util = $util;
68
+        $this->keyManager = $keyManager;
69
+        $this->crypt = $crypt;
70
+        $this->session = $session;
71
+        $this->questionHelper = $questionHelper;
72
+    }
73
+
74
+    /**
75
+     * prepare encryption module to decrypt all files
76
+     *
77
+     * @param InputInterface $input
78
+     * @param OutputInterface $output
79
+     * @param $user
80
+     * @return bool
81
+     */
82
+    public function prepare(InputInterface $input, OutputInterface $output, $user) {
83
+
84
+        $question = new Question('Please enter the recovery key password: ');
85
+
86
+        if($this->util->isMasterKeyEnabled()) {
87
+            $output->writeln('Use master key to decrypt all files');
88
+            $user = $this->keyManager->getMasterKeyId();
89
+            $password =$this->keyManager->getMasterKeyPassword();
90
+        } else {
91
+            $recoveryKeyId = $this->keyManager->getRecoveryKeyId();
92
+            if (!empty($user)) {
93
+                $output->writeln('You can only decrypt the users files if you know');
94
+                $output->writeln('the users password or if he activated the recovery key.');
95
+                $output->writeln('');
96
+                $questionUseLoginPassword = new ConfirmationQuestion(
97
+                    'Do you want to use the users login password to decrypt all files? (y/n) ',
98
+                    false
99
+                );
100
+                $useLoginPassword = $this->questionHelper->ask($input, $output, $questionUseLoginPassword);
101
+                if ($useLoginPassword) {
102
+                    $question = new Question('Please enter the user\'s login password: ');
103
+                } else if ($this->util->isRecoveryEnabledForUser($user) === false) {
104
+                    $output->writeln('No recovery key available for user ' . $user);
105
+                    return false;
106
+                } else {
107
+                    $user = $recoveryKeyId;
108
+                }
109
+            } else {
110
+                $output->writeln('You can only decrypt the files of all users if the');
111
+                $output->writeln('recovery key is enabled by the admin and activated by the users.');
112
+                $output->writeln('');
113
+                $user = $recoveryKeyId;
114
+            }
115
+
116
+            $question->setHidden(true);
117
+            $question->setHiddenFallback(false);
118
+            $password = $this->questionHelper->ask($input, $output, $question);
119
+        }
120
+
121
+        $privateKey = $this->getPrivateKey($user, $password);
122
+        if ($privateKey !== false) {
123
+            $this->updateSession($user, $privateKey);
124
+            return true;
125
+        } else {
126
+            $output->writeln('Could not decrypt private key, maybe you entered the wrong password?');
127
+        }
128
+
129
+
130
+        return false;
131
+    }
132
+
133
+    /**
134
+     * get the private key which will be used to decrypt all files
135
+     *
136
+     * @param string $user
137
+     * @param string $password
138
+     * @return bool|string
139
+     * @throws \OCA\Encryption\Exceptions\PrivateKeyMissingException
140
+     */
141
+    protected function getPrivateKey($user, $password) {
142
+        $recoveryKeyId = $this->keyManager->getRecoveryKeyId();
143
+        $masterKeyId = $this->keyManager->getMasterKeyId();
144
+        if ($user === $recoveryKeyId) {
145
+            $recoveryKey = $this->keyManager->getSystemPrivateKey($recoveryKeyId);
146
+            $privateKey = $this->crypt->decryptPrivateKey($recoveryKey, $password);
147
+        } elseif ($user === $masterKeyId) {
148
+            $masterKey = $this->keyManager->getSystemPrivateKey($masterKeyId);
149
+            $privateKey = $this->crypt->decryptPrivateKey($masterKey, $password, $masterKeyId);
150
+        } else {
151
+            $userKey = $this->keyManager->getPrivateKey($user);
152
+            $privateKey = $this->crypt->decryptPrivateKey($userKey, $password, $user);
153
+        }
154
+
155
+        return $privateKey;
156
+    }
157
+
158
+    protected function updateSession($user, $privateKey) {
159
+        $this->session->prepareDecryptAll($user, $privateKey);
160
+    }
161 161
 }
Please login to merge, or discard this patch.
apps/encryption/lib/HookManager.php 1 patch
Indentation   +29 added lines, -29 removed lines patch added patch discarded remove patch
@@ -28,38 +28,38 @@
 block discarded – undo
28 28
 
29 29
 class HookManager {
30 30
 
31
-	private $hookInstances = [];
31
+    private $hookInstances = [];
32 32
 
33
-	/**
34
-	 * @param array|IHook $instances
35
-	 *        - This accepts either a single instance of IHook or an array of instances of IHook
36
-	 * @return bool
37
-	 */
38
-	public function registerHook($instances) {
39
-		if (is_array($instances)) {
40
-			foreach ($instances as $instance) {
41
-				if (!$instance instanceof IHook) {
42
-					return false;
43
-				}
44
-				$this->hookInstances[] = $instance;
45
-			}
33
+    /**
34
+     * @param array|IHook $instances
35
+     *        - This accepts either a single instance of IHook or an array of instances of IHook
36
+     * @return bool
37
+     */
38
+    public function registerHook($instances) {
39
+        if (is_array($instances)) {
40
+            foreach ($instances as $instance) {
41
+                if (!$instance instanceof IHook) {
42
+                    return false;
43
+                }
44
+                $this->hookInstances[] = $instance;
45
+            }
46 46
 
47
-		} elseif ($instances instanceof IHook) {
48
-			$this->hookInstances[] = $instances;
49
-		}
50
-		return true;
51
-	}
47
+        } elseif ($instances instanceof IHook) {
48
+            $this->hookInstances[] = $instances;
49
+        }
50
+        return true;
51
+    }
52 52
 
53
-	public function fireHooks() {
54
-		foreach ($this->hookInstances as $instance) {
55
-			/**
56
-			 * Fire off the add hooks method of each instance stored in cache
57
-			 *
58
-			 * @var $instance IHook
59
-			 */
60
-			$instance->addHooks();
61
-		}
53
+    public function fireHooks() {
54
+        foreach ($this->hookInstances as $instance) {
55
+            /**
56
+             * Fire off the add hooks method of each instance stored in cache
57
+             *
58
+             * @var $instance IHook
59
+             */
60
+            $instance->addHooks();
61
+        }
62 62
 
63
-	}
63
+    }
64 64
 
65 65
 }
Please login to merge, or discard this patch.