@@ -443,11 +443,16 @@ abstract contract CatapultarTest is Test {
443443 }
444444
445445 bytes4 constant SUCCESS_IS_VALID_SIGNATURE = bytes4 (keccak256 ("isValidSignature(bytes32,bytes) " ));
446+ bytes4 constant IS_NOT_VALID_SIGNATURE = bytes4 (uint32 (0xFFFFFFFF ));
446447
447448 function test_isValidSignature () external {
448449 (, uint256 privateKey ) = init ();
449450
450451 bytes32 msgHash = keccak256 (bytes ("RandomPayload " ));
452+ // Check that a random signature is not valid.
453+ bytes4 result = executor.isValidSignature (msgHash, abi.encodePacked (keccak256 ("" ), keccak256 ("" )));
454+ assertEq (bytes32 (result), bytes32 (IS_NOT_VALID_SIGNATURE));
455+
451456 bytes32 toSign = keccak256 (
452457 abi.encode (keccak256 (bytes ("Replay(address account,bytes32 payload) " )), address (executor), msgHash)
453458 );
@@ -456,7 +461,7 @@ abstract contract CatapultarTest is Test {
456461
457462 bytes memory signature = abi.encodePacked (r, s, v);
458463
459- bytes4 result = executor.isValidSignature (msgHash, signature);
464+ result = executor.isValidSignature (msgHash, signature);
460465
461466 assertEq (bytes32 (result), bytes32 (SUCCESS_IS_VALID_SIGNATURE));
462467
@@ -466,7 +471,32 @@ abstract contract CatapultarTest is Test {
466471
467472 result = MockCatapultar (payable (newExecutorProxied)).isValidSignature (msgHash, signature);
468473
469- assertNotEq (bytes32 (result), bytes32 (SUCCESS_IS_VALID_SIGNATURE));
474+ assertEq (bytes32 (result), bytes32 (IS_NOT_VALID_SIGNATURE));
475+ }
476+
477+ function test_isValidSignature_setSignature () external {
478+ init ();
479+
480+ bytes32 msgHash = keccak256 (bytes ("RandomPayload " ));
481+ bytes4 result = executor.isValidSignature (msgHash, hex "" );
482+ assertEq (bytes32 (result), bytes32 (IS_NOT_VALID_SIGNATURE));
483+
484+ bytes32 toSign = keccak256 (
485+ abi.encode (keccak256 (bytes ("Replay(address account,bytes32 payload) " )), address (executor), msgHash)
486+ );
487+ // Set the signature (as call).
488+ vm.prank (address (executor));
489+ executor.setSignature (toSign, Catapultar.DigestApproval.Call);
490+
491+ result = executor.isValidSignature (msgHash, hex "" );
492+ assertEq (bytes32 (result), bytes32 (IS_NOT_VALID_SIGNATURE));
493+
494+ // Set the signature (as signature).
495+ vm.prank (address (executor));
496+ executor.setSignature (toSign, Catapultar.DigestApproval.Signature);
497+
498+ result = executor.isValidSignature (msgHash, hex "" );
499+ assertEq (bytes32 (result), bytes32 (SUCCESS_IS_VALID_SIGNATURE));
470500 }
471501
472502 function testRevert_isValidSignature_no_rehash () external {
0 commit comments