Exemple #1
0
  def test_signature(self):
    k1 = new_key()
    k2 = new_key()
    k3 = new_key()

    sender = Encryptor(k1, k2.publickey())
    receiver = Encryptor(k2, k1.publickey())
    deceiver = Encryptor(k3, k2.publickey())

    message = b"Erised stra ehru oyt ube cafru oyt on wohsi"

    with print_key_on_error(sender, receiver, deceiver):
      cipher_text = sender.encrypt(message)

      decrypted_message, signature = receiver.decrypt(cipher_text)
      self.assertTrue(receiver.verify_message(decrypted_message, signature))

      deceiver_text = deceiver.encrypt(message)

      decrypted_message, signature = receiver.decrypt(deceiver_text)
      self.assertFalse(receiver.verify_message(decrypted_message, signature))

      _, real_encrypted_message, _ = receiver.split_cipher_text(cipher_text)
      deceiver_aes, _, deceiver_signature = receiver.split_cipher_text(deceiver_text)
      cipher_text = deceiver_aes + real_encrypted_message + deceiver_signature

      decrypted_message, signature = receiver.decrypt(cipher_text)
      self.assertFalse(receiver.verify_message(decrypted_message, signature))