From a0e20627623cbf5939c9c84e88ca2b9610e2ff27 Mon Sep 17 00:00:00 2001 From: Xinyu Ma Date: Sun, 18 May 2025 22:36:03 -0700 Subject: [PATCH] Fix Ed25519 signature Fix: #93 --- src/ndn/security/signer/ed25519_signer.py | 5 +---- src/ndn/security/validator/known_key_validator.py | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/ndn/security/signer/ed25519_signer.py b/src/ndn/security/signer/ed25519_signer.py index a7fc7bc..b1b114f 100644 --- a/src/ndn/security/signer/ed25519_signer.py +++ b/src/ndn/security/signer/ed25519_signer.py @@ -45,10 +45,7 @@ def get_signature_value_size(self): def write_signature_value(self, wire: VarBinaryStr, contents: list[VarBinaryStr]) -> int: # Copying is needed as cryptography library only support bytes - h = SHA512.new() - for blk in contents: - h.update(blk) signer = eddsa.new(self.key, 'rfc8032') - signature = signer.sign(h) + signature = signer.sign(b''.join(contents)) wire[:] = signature return len(signature) diff --git a/src/ndn/security/validator/known_key_validator.py b/src/ndn/security/validator/known_key_validator.py index cf4d17b..18de528 100644 --- a/src/ndn/security/validator/known_key_validator.py +++ b/src/ndn/security/validator/known_key_validator.py @@ -116,11 +116,8 @@ def _verify(cls, pub_key_bits, sig_ptrs) -> bool: def verify_ed25519(pub_key: ECC.EccKey, sig_ptrs: SignaturePtrs) -> bool: verifier = eddsa.new(pub_key, 'rfc8032') - h = SHA512.new() - for content in sig_ptrs.signature_covered_part: - h.update(content) try: - verifier.verify(h, bytes(sig_ptrs.signature_value_buf)) + verifier.verify(b''.join(sig_ptrs.signature_covered_part), bytes(sig_ptrs.signature_value_buf)) return True except ValueError: return False