aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Security/Crypto.php
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2022-03-10 11:38:14 +0100
committerJulius Härtl <jus@bitgrid.net>2022-03-10 14:01:21 +0100
commita6796b424784561f4ab76d04324985f1f2f6a75f (patch)
tree6a47b0b77ed8f82434c60ff57ba9ea70163f46fb /lib/private/Security/Crypto.php
parent553cb499b2abf51b1edd9b2deb309cec6cff35b6 (diff)
downloadnextcloud-server-a6796b424784561f4ab76d04324985f1f2f6a75f.tar.gz
nextcloud-server-a6796b424784561f4ab76d04324985f1f2f6a75f.zip
Fix decryption fallback after adding a secret
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'lib/private/Security/Crypto.php')
-rw-r--r--lib/private/Security/Crypto.php15
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/private/Security/Crypto.php b/lib/private/Security/Crypto.php
index d3b62dc7e4d..ece69d6deeb 100644
--- a/lib/private/Security/Crypto.php
+++ b/lib/private/Security/Crypto.php
@@ -122,14 +122,19 @@ class Crypto implements ICrypto {
* @throws Exception If the decryption failed
*/
public function decrypt(string $authenticatedCiphertext, string $password = ''): string {
- if ($password === '') {
- $password = $this->config->getSystemValue('secret');
- }
+ $secret = $this->config->getSystemValue('secret');
try {
+ if ($password === '') {
+ return $this->decryptWithoutSecret($authenticatedCiphertext, $secret);
+ }
return $this->decryptWithoutSecret($authenticatedCiphertext, $password);
} catch (Exception $e) {
- // Retry with empty secret as a fallback for instances where the secret might not have been set by accident
- return $this->decryptWithoutSecret($authenticatedCiphertext, '');
+ if ($password === '') {
+ // Retry with empty secret as a fallback for instances where the secret might not have been set by accident
+ return $this->decryptWithoutSecret($authenticatedCiphertext, '');
+ }
+
+ throw $e;
}
}