From 7a61ffc3ddb2fa377074335f13080468eb29b3dc Mon Sep 17 00:00:00 2001
From: Bjoern Schiessle <bjoern@schiessle.org>
Date: Tue, 27 Nov 2018 11:08:41 +0100
Subject: Allow to disable the signature check

This allows you to recover encryption files even if the signature is broken

Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
---
 apps/encryption/lib/Crypto/Crypt.php | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

(limited to 'apps/encryption/lib/Crypto')

diff --git a/apps/encryption/lib/Crypto/Crypt.php b/apps/encryption/lib/Crypto/Crypt.php
index 70c99f808ba..a22d4551566 100644
--- a/apps/encryption/lib/Crypto/Crypt.php
+++ b/apps/encryption/lib/Crypto/Crypt.php
@@ -482,9 +482,15 @@ class Crypt {
 	 * @throws GenericEncryptionException
 	 */
 	private function checkSignature($data, $passPhrase, $expectedSignature) {
+		$skipSignatureCheck = $this->config->getSystemValue('encryption_skip_signature_check', false);
+
 		$signature = $this->createSignature($data, $passPhrase);
-		if (!hash_equals($expectedSignature, $signature)) {
+		$hash = hash_equals($expectedSignature, $signature);
+
+		if (!$hash && $skipSignatureCheck === false) {
 			throw new GenericEncryptionException('Bad Signature', $this->l->t('Bad Signature'));
+		} else if (!$hash && $skipSignatureCheck) {
+			$this->logger->info("Signature check skipped", ['app' => 'encryption']);
 		}
 	}
 
-- 
cgit v1.2.3