Browse Source

add a couple test vectors from the RFC...

pyupdate
John-Mark Gurney 2 years ago
parent
commit
0520511b64
1 changed files with 39 additions and 0 deletions
  1. +39
    -0
      python/edgold/ed448.py

+ 39
- 0
python/edgold/ed448.py View File

@@ -281,7 +281,46 @@ class TestEd448(unittest.TestCase):
# Make sure it fails w/ invalid/different context
self.assertRaises(ValueError, key.verify, sig, message, ctx + b'a')

# https://www.rfc-editor.org/rfc/rfc8032#section-7.4
# secret key, public key, message, context, signature
_rfc8032testvectors = [
('6c82a562cb808d10d632be89c8513ebf6c929f34ddfa8c9f63c9960ef6e348a3528c8a3fcc2f044e39a3fc5b94492f8f032e7549a20098f95b',
'5fd7449b59b461fd2ce787ec616ad46a1da1342485a70e1f8a0ea75d80e96778edf124769b46c7061bd6783df1e50f6cd1fa1abeafe8256180',
'',
'',
'533a37f6bbe457251f023c0d88f976ae2dfb504a843e34d2074fd823d41a591f2b233f034f628281f2fd7a22ddd47d7828c59bd0a21bfd3980ff0d2028d4b18a9df63e006c5d1c2d345b925d8dc00b4104852db99ac5c7cdda8530a113a0f4dbb61149f05a7363268c71d95808ff2e652600'),
('c4eab05d357007c632f3dbb48489924d552b08fe0c353a0d4a1f00acda2c463afbea67c5e8d2877c5e3bc397a659949ef8021e954e0a12274e',
'43ba28f430cdff456ae531545f7ecd0ac834a55d9358c0372bfa0c6c6798c0866aea01eb00742802b8438ea4cb82169c235160627b4c3a9480',
'03',
'666f6f',
'd4f8f6131770dd46f40867d6fd5d5055de43541f8c5e35abbcd001b32a89f7d2151f7647f11d8ca2ae279fb842d607217fce6e042f6815ea000c85741de5c8da1144a6a1aba7f96de42505d7a7298524fda538fccbbb754f578c1cad10d54d0d5428407e85dcbc98a49155c13764e66c3c00'),
]

class TestBasicLib(unittest.TestCase):
def test_kat(self):
for idx, (key, pubkey, msg, ctx, checksig) in \
enumerate(map(bytes.fromhex, x) for x in
_rfc8032testvectors):
with self.subTest(idx=idx):
priv = _makeba(key)
pub = ed448_pubkey_t()

decaf.decaf_ed448_derive_public_key(pub, priv)

self.assertEqual(pubkey, _makestr(pub))

sig = ed448_sig_t()
if not ctx:
ctx = None
ctxargs = EDDSA448._makectxargs(ctx)

decaf.decaf_ed448_sign(sig, priv, pub, _makeba(msg), len(msg), 0, *ctxargs)

self.assertEqual(checksig, _makestr(sig))

r = decaf.decaf_ed448_verify(sig, pub, _makeba(msg), len(msg), 0, *ctxargs)
self.assertTrue(r)

def test_basic(self):
priv = _ed448_privkey()
pub = ed448_pubkey_t()


Loading…
Cancel
Save