Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions src/SignatureChecker.sol
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -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;
}
}
2 changes: 1 addition & 1 deletion test/SignatureChecker.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Loading