aboutsummaryrefslogtreecommitdiffstats
path: root/apps/encryption/tests
diff options
context:
space:
mode:
Diffstat (limited to 'apps/encryption/tests')
-rw-r--r--apps/encryption/tests/Crypto/CryptTest.php19
-rw-r--r--apps/encryption/tests/Crypto/EncryptionTest.php6
-rw-r--r--apps/encryption/tests/KeyManagerTest.php59
-rw-r--r--apps/encryption/tests/RecoveryTest.php14
4 files changed, 67 insertions, 31 deletions
diff --git a/apps/encryption/tests/Crypto/CryptTest.php b/apps/encryption/tests/Crypto/CryptTest.php
index 08d0bba2668..dd41c67e8ad 100644
--- a/apps/encryption/tests/Crypto/CryptTest.php
+++ b/apps/encryption/tests/Crypto/CryptTest.php
@@ -34,8 +34,6 @@ use OCP\IUserSession;
use Test\TestCase;
class CryptTest extends TestCase {
-
-
/** @var \OCP\ILogger|\PHPUnit\Framework\MockObject\MockObject */
private $logger;
@@ -155,7 +153,7 @@ class CryptTest extends TestCase {
->method('warning')
->with('Unsupported cipher (Not-Existing-Cipher) defined in config.php supported. Falling back to AES-256-CTR');
- $this->assertSame('AES-256-CTR', $this->crypt->getCipher());
+ $this->assertSame('AES-256-CTR', $this->crypt->getCipher());
}
/**
@@ -396,7 +394,7 @@ class CryptTest extends TestCase {
public function testDecryptPrivateKey($header, $privateKey, $expectedCipher, $isValidKey, $expected) {
$this->config->method('getSystemValueBool')
->withConsecutive(['encryption.legacy_format_support', false],
- ['encryption.use_legacy_base64_encoding', false])
+ ['encryption.use_legacy_base64_encoding', false])
->willReturnOnConsecutiveCalls(true, false);
/** @var \OCA\Encryption\Crypto\Crypt | \PHPUnit\Framework\MockObject\MockObject $crypt */
@@ -465,4 +463,17 @@ class CryptTest extends TestCase {
$this->invokePrivate($this->crypt, 'isValidPrivateKey', ['foo'])
);
}
+
+ public function testMultiKeyEncrypt() {
+ $res = openssl_pkey_new();
+ openssl_pkey_export($res, $privateKey);
+ $publicKeyPem = openssl_pkey_get_details($res)['key'];
+ $publicKey = openssl_pkey_get_public($publicKeyPem);
+
+ $shareKeys = $this->crypt->multiKeyEncrypt('content', ['user1' => $publicKey]);
+ $this->assertEquals(
+ 'content',
+ $this->crypt->multiKeyDecrypt($shareKeys['user1'], $privateKey)
+ );
+ }
}
diff --git a/apps/encryption/tests/Crypto/EncryptionTest.php b/apps/encryption/tests/Crypto/EncryptionTest.php
index 63698dcdc63..675a8bf8e29 100644
--- a/apps/encryption/tests/Crypto/EncryptionTest.php
+++ b/apps/encryption/tests/Crypto/EncryptionTest.php
@@ -42,7 +42,6 @@ use Symfony\Component\Console\Output\OutputInterface;
use Test\TestCase;
class EncryptionTest extends TestCase {
-
/** @var Encryption */
private $instance;
@@ -156,7 +155,7 @@ class EncryptionTest extends TestCase {
->willReturnCallback([$this, 'addSystemKeysCallback']);
$this->cryptMock->expects($this->any())
->method('multiKeyEncrypt')
- ->willReturn(true);
+ ->willReturn([]);
$this->instance->end('/foo/bar');
}
@@ -276,7 +275,7 @@ class EncryptionTest extends TestCase {
->with($path, $recoveryKeyId)
->willReturn($recoveryShareKey);
$this->cryptMock->expects($this->once())
- ->method('multiKeyDecrypt')
+ ->method('multiKeyDecryptLegacy')
->with('encryptedFileKey', $recoveryShareKey, $decryptAllKey)
->willReturn($fileKey);
@@ -378,6 +377,7 @@ class EncryptionTest extends TestCase {
function ($fileKey, $publicKeys) {
$this->assertEmpty($publicKeys);
$this->assertSame('fileKey', $fileKey);
+ return [];
}
);
diff --git a/apps/encryption/tests/KeyManagerTest.php b/apps/encryption/tests/KeyManagerTest.php
index c08f8b576d9..be116318185 100644
--- a/apps/encryption/tests/KeyManagerTest.php
+++ b/apps/encryption/tests/KeyManagerTest.php
@@ -267,7 +267,6 @@ class KeyManagerTest extends TestCase {
* @param bool $useMasterKey
*/
public function testInit($useMasterKey) {
-
/** @var \OCA\Encryption\KeyManager|\PHPUnit\Framework\MockObject\MockObject $instance */
$instance = $this->getMockBuilder(KeyManager::class)
->setConstructorArgs(
@@ -373,14 +372,22 @@ class KeyManagerTest extends TestCase {
public function dataTestGetFileKey() {
return [
- ['user1', false, 'privateKey', true],
- ['user1', false, false, ''],
- ['user1', true, 'privateKey', true],
- ['user1', true, false, ''],
- [null, false, 'privateKey', true],
- [null, false, false, ''],
- [null, true, 'privateKey', true],
- [null, true, false, '']
+ ['user1', false, 'privateKey', 'legacyKey', 'multiKeyDecryptResult'],
+ ['user1', false, 'privateKey', '', 'multiKeyDecryptResult'],
+ ['user1', false, false, 'legacyKey', ''],
+ ['user1', false, false, '', ''],
+ ['user1', true, 'privateKey', 'legacyKey', 'multiKeyDecryptResult'],
+ ['user1', true, 'privateKey', '', 'multiKeyDecryptResult'],
+ ['user1', true, false, 'legacyKey', ''],
+ ['user1', true, false, '', ''],
+ [null, false, 'privateKey', 'legacyKey', 'multiKeyDecryptResult'],
+ [null, false, 'privateKey', '', 'multiKeyDecryptResult'],
+ [null, false, false, 'legacyKey', ''],
+ [null, false, false, '', ''],
+ [null, true, 'privateKey', 'legacyKey', 'multiKeyDecryptResult'],
+ [null, true, 'privateKey', '', 'multiKeyDecryptResult'],
+ [null, true, false, 'legacyKey', ''],
+ [null, true, false, '', ''],
];
}
@@ -392,7 +399,7 @@ class KeyManagerTest extends TestCase {
* @param $privateKey
* @param $expected
*/
- public function testGetFileKey($uid, $isMasterKeyEnabled, $privateKey, $expected) {
+ public function testGetFileKey($uid, $isMasterKeyEnabled, $privateKey, $encryptedFileKey, $expected) {
$path = '/foo.txt';
if ($isMasterKeyEnabled) {
@@ -414,8 +421,8 @@ class KeyManagerTest extends TestCase {
[$path, $expectedUid . '.shareKey', 'OC_DEFAULT_MODULE'],
)
->willReturnOnConsecutiveCalls(
- true,
- true,
+ $encryptedFileKey,
+ 'fileKey',
);
$this->utilMock->expects($this->any())->method('isMasterKeyEnabled')
@@ -434,17 +441,32 @@ class KeyManagerTest extends TestCase {
$this->sessionMock->expects($this->once())->method('getPrivateKey')->willReturn($privateKey);
}
- if ($privateKey) {
- $this->cryptMock->expects($this->once())
- ->method('multiKeyDecrypt')
- ->willReturn(true);
- } else {
+ if (!empty($encryptedFileKey)) {
$this->cryptMock->expects($this->never())
->method('multiKeyDecrypt');
+ if ($privateKey) {
+ $this->cryptMock->expects($this->once())
+ ->method('multiKeyDecryptLegacy')
+ ->willReturn('multiKeyDecryptResult');
+ } else {
+ $this->cryptMock->expects($this->never())
+ ->method('multiKeyDecryptLegacy');
+ }
+ } else {
+ $this->cryptMock->expects($this->never())
+ ->method('multiKeyDecryptLegacy');
+ if ($privateKey) {
+ $this->cryptMock->expects($this->once())
+ ->method('multiKeyDecrypt')
+ ->willReturn('multiKeyDecryptResult');
+ } else {
+ $this->cryptMock->expects($this->never())
+ ->method('multiKeyDecrypt');
+ }
}
$this->assertSame($expected,
- $this->instance->getFileKey($path, $uid)
+ $this->instance->getFileKey($path, $uid, null)
);
}
@@ -562,7 +584,6 @@ class KeyManagerTest extends TestCase {
* @param $masterKey
*/
public function testValidateMasterKey($masterKey) {
-
/** @var \OCA\Encryption\KeyManager | \PHPUnit\Framework\MockObject\MockObject $instance */
$instance = $this->getMockBuilder(KeyManager::class)
->setConstructorArgs(
diff --git a/apps/encryption/tests/RecoveryTest.php b/apps/encryption/tests/RecoveryTest.php
index 37b6671d5cb..af053515f8c 100644
--- a/apps/encryption/tests/RecoveryTest.php
+++ b/apps/encryption/tests/RecoveryTest.php
@@ -211,7 +211,8 @@ class RecoveryTest extends TestCase {
->willReturn([]);
$this->cryptMock->expects($this->once())
- ->method('decryptPrivateKey');
+ ->method('decryptPrivateKey')
+ ->willReturn('privateKey');
$this->instance->recoverUsersFiles('password', 'admin');
$this->addToAssertionCount(1);
}
@@ -226,8 +227,8 @@ class RecoveryTest extends TestCase {
->willReturn(true);
$this->cryptMock->expects($this->once())
- ->method('multiKeyDecrypt')
- ->willReturn(true);
+ ->method('multiKeyDecryptLegacy')
+ ->willReturn('multiKeyDecryptLegacyResult');
$this->fileMock->expects($this->once())
->method('getAccessList')
@@ -244,10 +245,13 @@ class RecoveryTest extends TestCase {
$this->cryptMock->expects($this->once())
- ->method('multiKeyEncrypt');
+ ->method('multiKeyEncrypt')
+ ->willReturn(['admin' => 'shareKey']);
$this->keyManagerMock->expects($this->once())
- ->method('setAllFileKeys');
+ ->method('deleteLegacyFileKey');
+ $this->keyManagerMock->expects($this->once())
+ ->method('setShareKey');
$this->assertNull(self::invokePrivate($this->instance,
'recoverFile',