diff --git a/src/SignatureChecker.sol b/src/SignatureChecker.sol index 2f8051e..f38f740 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; } } 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);