示例#1
0
 /**
  * @covers Asymmetric::encrypt()
  * @covers Asymmetric::decrypt()
  */
 public function testEncryptFail()
 {
     $alice = KeyFactory::generateEncryptionKeyPair();
     $bob = KeyFactory::generateEncryptionKeyPair();
     $message = Asymmetric::encrypt(new HiddenString('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->assertSame($plain, $message);
         $this->fail('This should have thrown an InvalidMessage exception!');
     } catch (CryptoException\InvalidMessage $e) {
         $this->assertTrue($e instanceof CryptoException\InvalidMessage);
     }
 }