From 5902faed5b70b54fc9a5fe00a79c6ac26725f723 Mon Sep 17 00:00:00 2001 From: Waylon Jepsen Date: Fri, 21 Feb 2025 14:32:04 -0700 Subject: [PATCH 1/2] patch --- src/SignatureChecker.sol | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/SignatureChecker.sol b/src/SignatureChecker.sol index 2f8051e..8a9c716 100644 --- a/src/SignatureChecker.sol +++ b/src/SignatureChecker.sol @@ -10,7 +10,7 @@ contract SignatureChecker is Ownable { mapping(address => bool) public isNotary; /// valid digests for a given address - mapping(address => bytes32) public digests; + mapping(bytes32 => address) public digests; /// @notice Error for invalid signatures error InvalidSignature(); @@ -80,11 +80,13 @@ contract SignatureChecker is Ownable { if (recoveredSigner != signer) { revert InvalidSignature(); } - if (digests[msg.sender] == digest) { + + // TODO(WJ 2025-02-20): Should check for any sender. + if (digests[digest] != msg.sender) { revert DuplicateProof(); } - digests[msg.sender] = digest; + digests[digest] = msg.sender; return true; } } From 3a2a8bdadb2ff761f545e818d61c11c455fb0546 Mon Sep 17 00:00:00 2001 From: Waylon Jepsen Date: Fri, 21 Feb 2025 14:42:47 -0700 Subject: [PATCH 2/2] chore: squash the bug --- src/SignatureChecker.sol | 2 +- test/SignatureChecker.t.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SignatureChecker.sol b/src/SignatureChecker.sol index 8a9c716..f38f740 100644 --- a/src/SignatureChecker.sol +++ b/src/SignatureChecker.sol @@ -82,7 +82,7 @@ contract SignatureChecker is Ownable { } // TODO(WJ 2025-02-20): Should check for any sender. - if (digests[digest] != msg.sender) { + if (digests[digest] == msg.sender) { revert DuplicateProof(); } diff --git a/test/SignatureChecker.t.sol b/test/SignatureChecker.t.sol index 0c6744e..28fd08b 100644 --- a/test/SignatureChecker.t.sol +++ b/test/SignatureChecker.t.sol @@ -11,7 +11,7 @@ contract SignatureCheckerTest is Test { signatureChecker = new SignatureChecker(0xfdf07A5dCfa7b74f4c28DAb23eaD8B1c43Be801F); } - function test_isValidSignatureNow() public { + function test_isValidSignature() public { // TEST vector from web-prover @ githash 2dc768e818d6f9fef575a88a2ceb80c0ed11974f address signer = 0xfdf07A5dCfa7b74f4c28DAb23eaD8B1c43Be801F; bytes32 digest = bytes32(0xe45537be7b5cd288c9c46b7e027b4f5a66202146012f792c1b1cabb65828994b);