]> source.dussan.org Git - nextcloud-server.git/commitdiff
SSE enhancement 22196/head
authorRoeland Jago Douma <roeland@famdouma.nl>
Tue, 11 Aug 2020 17:26:41 +0000 (19:26 +0200)
committerRoeland Jago Douma <roeland@famdouma.nl>
Tue, 11 Aug 2020 17:26:41 +0000 (19:26 +0200)
Do not blind concatenate ints. Lets add a _ between them. So that we can
distrinquis them properly

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
apps/encryption/lib/Crypto/Crypt.php

index e990f5a510e924d496a1d26c89bd4afcaa3a573d..7723b63a66b253e99bcc32c91a17b12bc8d3c798 100644 (file)
@@ -189,7 +189,7 @@ class Crypt {
                        $this->getCipher());
 
                // Create a signature based on the key as well as the current version
-               $sig = $this->createSignature($encryptedContent, $passPhrase.$version.$position);
+               $sig = $this->createSignature($encryptedContent, $passPhrase.'_'.$version.'_'.$position);
 
                // combine content to encrypt the IV identifier and actual IV
                $catFile = $this->concatIV($encryptedContent, $iv);
@@ -460,7 +460,13 @@ class Crypt {
                $catFile = $this->splitMetaData($keyFileContents, $cipher);
 
                if ($catFile['signature'] !== false) {
-                       $this->checkSignature($catFile['encrypted'], $passPhrase.$version.$position, $catFile['signature']);
+                       try {
+                               // First try the new format
+                               $this->checkSignature($catFile['encrypted'], $passPhrase . '_' . $version . '_' . $position, $catFile['signature']);
+                       } catch (GenericEncryptionException $e) {
+                               // For compatibility with old files check the version without _
+                               $this->checkSignature($catFile['encrypted'], $passPhrase . $version . $position, $catFile['signature']);
+                       }
                }
 
                return $this->decrypt($catFile['encrypted'],