@@ -575,11 +575,42 @@ contract LCPClientZKDCAPTest is BasicTest {
575575 DCAPValidator.Output memory output = ZKDCAPTestHelper.qvOutput ();
576576 output.operator = op1.addr;
577577 IbcLightclientsLcpV1ZKDCAPRegisterEnclaveKeyMessage.Data memory message = registerEnclaveKeyMessage (output);
578- vm.expectRevert (
579- abi.encodeWithSelector (
580- ILCPClientErrors.LCPClientZKDCAPOutputReportUnexpectedOperator.selector , address (0 ), output.operator
578+ vm.expectRevert (abi.encodeWithSelector (ILCPClientErrors.LCPClientZKDCAPInvalidOperator.selector ));
579+ lc.zkDCAPRegisterEnclaveKey (clientId, message);
580+ }
581+
582+ {
583+ // if the operator signature is set by an unregistered operator, it should fail
584+ DCAPValidator.Output memory output = ZKDCAPTestHelper.qvOutput ();
585+ IbcLightclientsLcpV1ZKDCAPRegisterEnclaveKeyMessage.Data memory message = registerEnclaveKeyMessage (output);
586+ (uint8 v , bytes32 r , bytes32 s ) = vm.sign (
587+ op2,
588+ keccak256 (
589+ LCPOperator.computeEIP712ZKDCAPRegisterEnclaveKey (
590+ clientState.zkdcap_verifier_infos[0 ], keccak256 (ZKDCAPTestHelper.toBytes (output))
591+ )
592+ )
593+ );
594+ message.operator_signature = abi.encodePacked (r, s, v);
595+ vm.expectRevert (abi.encodeWithSelector (ILCPClientErrors.LCPClientZKDCAPInvalidOperator.selector ));
596+ lc.zkDCAPRegisterEnclaveKey (clientId, message);
597+ }
598+
599+ {
600+ // if the operator signature and operator are set by an unregistered operator, it should fail
601+ DCAPValidator.Output memory output = ZKDCAPTestHelper.qvOutput ();
602+ output.operator = op2.addr;
603+ IbcLightclientsLcpV1ZKDCAPRegisterEnclaveKeyMessage.Data memory message = registerEnclaveKeyMessage (output);
604+ (uint8 v , bytes32 r , bytes32 s ) = vm.sign (
605+ op2,
606+ keccak256 (
607+ LCPOperator.computeEIP712ZKDCAPRegisterEnclaveKey (
608+ clientState.zkdcap_verifier_infos[0 ], keccak256 (ZKDCAPTestHelper.toBytes (output))
609+ )
581610 )
582611 );
612+ message.operator_signature = abi.encodePacked (r, s, v);
613+ vm.expectRevert (abi.encodeWithSelector (ILCPClientErrors.LCPClientZKDCAPInvalidOperator.selector ));
583614 lc.zkDCAPRegisterEnclaveKey (clientId, message);
584615 }
585616
@@ -589,7 +620,7 @@ contract LCPClientZKDCAPTest is BasicTest {
589620 output.operator = op1.addr;
590621 IbcLightclientsLcpV1ZKDCAPRegisterEnclaveKeyMessage.Data memory message = registerEnclaveKeyMessage (output);
591622 (uint8 v , bytes32 r , bytes32 s ) = vm.sign (
592- op2 ,
623+ op3 ,
593624 keccak256 (
594625 LCPOperator.computeEIP712ZKDCAPRegisterEnclaveKey (
595626 clientState.zkdcap_verifier_infos[0 ], keccak256 (ZKDCAPTestHelper.toBytes (output))
@@ -599,7 +630,7 @@ contract LCPClientZKDCAPTest is BasicTest {
599630 message.operator_signature = abi.encodePacked (r, s, v);
600631 vm.expectRevert (
601632 abi.encodeWithSelector (
602- ILCPClientErrors.LCPClientZKDCAPOutputReportUnexpectedOperator.selector , op2 .addr, op1.addr
633+ ILCPClientErrors.LCPClientZKDCAPOutputReportUnexpectedOperator.selector , op3 .addr, op1.addr
603634 )
604635 );
605636 lc.zkDCAPRegisterEnclaveKey (clientId, message);
@@ -625,12 +656,12 @@ contract LCPClientZKDCAPTest is BasicTest {
625656 }
626657
627658 {
628- // if both operator and operator signature are not set, it should succeed
659+ // if both operator and operator signature are not set, it should fail
629660 DCAPValidator.Output memory output = ZKDCAPTestHelper.qvOutput ();
630661 output.enclaveKey = address (2 );
631662 IbcLightclientsLcpV1ZKDCAPRegisterEnclaveKeyMessage.Data memory message = registerEnclaveKeyMessage (output);
663+ vm.expectRevert (abi.encodeWithSelector (ILCPClientErrors.LCPClientZKDCAPInvalidOperator.selector ));
632664 lc.zkDCAPRegisterEnclaveKey (clientId, message);
633- assertEq (lc.getEKInfo (clientId, output.enclaveKey).operator, address (0 ));
634665 }
635666
636667 {
0 commit comments