public function testSeal() { \touch(__DIR__ . '/tmp/paragon_avatar.sealed.png'); \chmod(__DIR__ . '/tmp/paragon_avatar.sealed.png', 0777); \touch(__DIR__ . '/tmp/paragon_avatar.opened.png'); \chmod(__DIR__ . '/tmp/paragon_avatar.opened.png', 0777); list($secretkey, $publickey) = Key::generate(Key::CRYPTO_BOX); File::sealFile(__DIR__ . '/tmp/paragon_avatar.png', __DIR__ . '/tmp/paragon_avatar.sealed.png', $publickey); File::unsealFile(__DIR__ . '/tmp/paragon_avatar.sealed.png', __DIR__ . '/tmp/paragon_avatar.opened.png', $secretkey); $this->assertEquals(\hash_file('sha256', __DIR__ . '/tmp/paragon_avatar.png'), \hash_file('sha256', __DIR__ . '/tmp/paragon_avatar.opened.png')); }
public function testSealFail() { \touch(__DIR__ . '/tmp/paragon_avatar.seal_fail.png'); \chmod(__DIR__ . '/tmp/paragon_avatar.seal_fail.png', 0777); \touch(__DIR__ . '/tmp/paragon_avatar.open_fail.png'); \chmod(__DIR__ . '/tmp/paragon_avatar.open_fail.png', 0777); list($secretkey, $publickey) = Key::generate(Key::CRYPTO_BOX); File::sealFile(__DIR__ . '/tmp/paragon_avatar.png', __DIR__ . '/tmp/paragon_avatar.seal_fail.png', $publickey); $fp = \fopen(__DIR__ . '/tmp/paragon_avatar.seal_fail.png', 'ab'); \fwrite($fp, \Sodium\randombytes_buf(1)); fclose($fp); try { File::unsealFile(__DIR__ . '/tmp/paragon_avatar.seal_fail.png', __DIR__ . '/tmp/paragon_avatar.opened.png', $secretkey); throw new \Exception('ERROR: THIS SHOULD ALWAYS FAIL'); } catch (CryptoException\InvalidMessage $e) { $this->assertTrue($e instanceof CryptoException\InvalidMessage); } }
public function testSealFail() { \touch(__DIR__ . '/tmp/paragon_avatar.seal_fail.png'); \chmod(__DIR__ . '/tmp/paragon_avatar.seal_fail.png', 0777); \touch(__DIR__ . '/tmp/paragon_avatar.open_fail.png'); \chmod(__DIR__ . '/tmp/paragon_avatar.open_fail.png', 0777); $keypair = KeyFactory::generateEncryptionKeyPair(); $secretkey = $keypair->getSecretKey(); $publickey = $keypair->getPublicKey(); File::sealFile(__DIR__ . '/tmp/paragon_avatar.png', __DIR__ . '/tmp/paragon_avatar.seal_fail.png', $publickey); $fp = \fopen(__DIR__ . '/tmp/paragon_avatar.seal_fail.png', 'ab'); \fwrite($fp, \Sodium\randombytes_buf(1)); fclose($fp); try { File::unsealFile(__DIR__ . '/tmp/paragon_avatar.seal_fail.png', __DIR__ . '/tmp/paragon_avatar.open_fail.png', $secretkey); $this->fail('This should have thrown an InvalidMessage exception!'); } catch (CryptoException\InvalidMessage $e) { $this->assertTrue($e instanceof CryptoException\InvalidMessage); \unlink(__DIR__ . '/tmp/paragon_avatar.seal_fail.png'); \unlink(__DIR__ . '/tmp/paragon_avatar.open_fail.png'); } }