@@ -352,6 +352,53 @@ contract PerHookDataTest is CustomValidationTestBase {
352352 );
353353 }
354354
355+ function test_pass1271AccessControl () public {
356+ string memory message = "Hello, world! " ;
357+
358+ bytes32 messageHash = keccak256 (abi.encodePacked (message));
359+
360+ (uint8 v , bytes32 r , bytes32 s ) = vm.sign (owner1Key, messageHash);
361+
362+ PreValidationHookData[] memory preValidationHookData = new PreValidationHookData [](1 );
363+ preValidationHookData[0 ] = PreValidationHookData ({index: 0 , validationData: abi.encodePacked (message)});
364+
365+ bytes4 result = account1.isValidSignature (
366+ messageHash, _encode1271Signature (_signerValidation, preValidationHookData, abi.encodePacked (r, s, v))
367+ );
368+
369+ assertEq (result, bytes4 (0x1626ba7e ));
370+ }
371+
372+ function test_fail1271AccessControl_badSigData () public {
373+ string memory message = "Hello, world! " ;
374+
375+ bytes32 messageHash = keccak256 (abi.encodePacked (message));
376+
377+ (uint8 v , bytes32 r , bytes32 s ) = vm.sign (owner1Key, messageHash);
378+
379+ PreValidationHookData[] memory preValidationHookData = new PreValidationHookData [](1 );
380+ preValidationHookData[0 ] = PreValidationHookData ({
381+ index: 0 ,
382+ validationData: abi.encodePacked (address (0x1234123412341234123412341234123412341234 ))
383+ });
384+
385+ vm.expectRevert ("Preimage not provided " );
386+ account1.isValidSignature (
387+ messageHash, _encode1271Signature (_signerValidation, preValidationHookData, abi.encodePacked (r, s, v))
388+ );
389+ }
390+
391+ function test_fail1271AccessControl_noSigData () public {
392+ string memory message = "Hello, world! " ;
393+
394+ bytes32 messageHash = keccak256 (abi.encodePacked (message));
395+
396+ (uint8 v , bytes32 r , bytes32 s ) = vm.sign (owner1Key, messageHash);
397+
398+ vm.expectRevert ("Preimage not provided " );
399+ account1.isValidSignature (messageHash, _encode1271Signature (_signerValidation, abi.encodePacked (r, s, v)));
400+ }
401+
355402 function _getCounterUserOP () internal view returns (PackedUserOperation memory , bytes32 ) {
356403 PackedUserOperation memory userOp = PackedUserOperation ({
357404 sender: address (account1),
0 commit comments