From 389a101de657046fa4ba522019173e6f94d4a105 Mon Sep 17 00:00:00 2001 From: Bjoern Schiessle Date: Wed, 15 Apr 2015 19:52:48 +0200 Subject: [PATCH] make sure that encrypted private keys always have a header --- apps/encryption/lib/keymanager.php | 3 ++- apps/encryption/lib/recovery.php | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/encryption/lib/keymanager.php b/apps/encryption/lib/keymanager.php index a280ea9bde3..87adf75c924 100644 --- a/apps/encryption/lib/keymanager.php +++ b/apps/encryption/lib/keymanager.php @@ -140,7 +140,8 @@ class KeyManager { // Encrypt private key empty passphrase $encryptedKey = $this->crypt->symmetricEncryptFileContent($keyPair['privateKey'], ''); - $this->keyStorage->setSystemUserKey($this->publicShareKeyId . '.privateKey', $encryptedKey); + $header = $this->crypt->generateHeader(); + $this->setSystemPrivateKey($this->publicShareKeyId, $header . $encryptedKey); } $this->keyId = $userSession && $userSession->isLoggedIn() ? $userSession->getUser()->getUID() : false; diff --git a/apps/encryption/lib/recovery.php b/apps/encryption/lib/recovery.php index 5c1e91866a0..cfaa3e49619 100644 --- a/apps/encryption/lib/recovery.php +++ b/apps/encryption/lib/recovery.php @@ -135,8 +135,9 @@ class Recovery { $recoveryKey = $this->keyManager->getSystemPrivateKey($this->keyManager->getRecoveryKeyId()); $decryptedRecoveryKey = $this->crypt->decryptPrivateKey($recoveryKey, $oldPassword); $encryptedRecoveryKey = $this->crypt->symmetricEncryptFileContent($decryptedRecoveryKey, $newPassword); + $header = $this->crypt->generateHeader(); if ($encryptedRecoveryKey) { - $this->keyManager->setSystemPrivateKey($this->keyManager->getRecoveryKeyId(), $encryptedRecoveryKey); + $this->keyManager->setSystemPrivateKey($this->keyManager->getRecoveryKeyId(), $header . $encryptedRecoveryKey); return true; } return false; -- 2.39.5