import unittest
import bip39
import ed25519
class MyTestCase(unittest.TestCase):
def test_sign_and_verify_message(self):
message = b"test"
seed = bip39.bip39_to_mini_secret('daughter song common combine misery cotton audit morning stuff weasel flee field','')
private_key, public_key = ed25519.ed_from_seed(bytes(seed))
signature = ed25519.ed_sign(public_key, private_key, message)
self.assertTrue(ed25519.ed_verify(signature, message, public_key))
def test_verify_invalid_signature(self):
seed = bip39.bip39_to_mini_secret(
'daughter song common combine misery cotton audit morning stuff weasel flee field', '')
private_key, public_key = ed25519.ed_from_seed(bytes(seed))
self.assertFalse(ed25519.ed_verify(bytes(32), b"test", public_key))
def test_invalid_seed_length(self):
self.assertRaises(ValueError, ed25519.ed_from_seed, bytes(1))
def test_sign_invalid_pub_key_length(self):
seed = bip39.bip39_to_mini_secret(
'daughter song common combine misery cotton audit morning stuff weasel flee field', '')
private_key, _ = ed25519.ed_from_seed(bytes(seed))
self.assertRaises(ValueError, ed25519.ed_sign, bytes(1), private_key, b"test")
if __name__ == '__main__':
unittest.main()