/**
* @covers Asymmetric::encrypt()
* @covers Asymmetric::decrypt()
*/
public function testEncryptFail()
{
$alice = KeyFactory::generateEncryptionKeyPair();
$bob = KeyFactory::generateEncryptionKeyPair();
$message = Asymmetric::encrypt('test message', $alice->getSecretKey(), $bob->getPublicKey(), true);
$r = \Sodium\randombytes_uniform(\mb_strlen($message, '8bit'));
$amt = \Sodium\randombytes_uniform(8);
$message[$r] = \chr(\ord($message[$r]) ^ 1 << $amt);
try {
$plain = Asymmetric::decrypt($message, $bob->getSecretKey(), $alice->getPublicKey(), true);
$this->assertEquals($plain, $message);
$this->fail('This should have thrown an InvalidMessage exception!');
} catch (CryptoException\InvalidMessage $e) {
$this->assertTrue($e instanceof CryptoException\InvalidMessage);
}
}