@@ -582,4 +582,74 @@ contract BLSSignatureCheckerUnitTests is BLSMockAVSDeployer {
582582 msgHash, quorumNumbers, referenceBlockNumber, nonSignerStakesAndSignature
583583 );
584584 }
585+
586+ function test_trySignatureAndApkVerification_success () public {
587+ uint256 numNonSigners = 0 ;
588+ uint256 quorumBitmap = 1 ;
589+ (
590+ uint32 referenceBlockNumber ,
591+ BLSSignatureChecker.NonSignerStakesAndSignature memory nonSignerStakesAndSignature
592+ ) = _registerSignatoriesAndGetNonSignerStakeAndSignatureRandom (
593+ 1 , numNonSigners, quorumBitmap
594+ );
595+
596+ (bool pairingSuccessful , bool signatureIsValid ) = blsSignatureChecker.trySignatureAndApkVerification (
597+ msgHash,
598+ nonSignerStakesAndSignature.quorumApks[0 ],
599+ nonSignerStakesAndSignature.apkG2,
600+ nonSignerStakesAndSignature.sigma
601+ );
602+
603+ assertTrue (pairingSuccessful, "Pairing should be successful " );
604+ assertTrue (signatureIsValid, "Signature should be valid " );
605+ }
606+
607+ function test_trySignatureAndApkVerification_invalidSignature () public {
608+ uint256 numNonSigners = 0 ;
609+ uint256 quorumBitmap = 1 ;
610+ (
611+ uint32 referenceBlockNumber ,
612+ BLSSignatureChecker.NonSignerStakesAndSignature memory nonSignerStakesAndSignature
613+ ) = _registerSignatoriesAndGetNonSignerStakeAndSignatureRandom (
614+ 1 , numNonSigners, quorumBitmap
615+ );
616+
617+ // Modify sigma to make it invalid
618+ nonSignerStakesAndSignature.sigma.X++ ;
619+
620+ cheats.expectRevert ();
621+ blsSignatureChecker.trySignatureAndApkVerification (
622+ msgHash,
623+ nonSignerStakesAndSignature.quorumApks[0 ],
624+ nonSignerStakesAndSignature.apkG2,
625+ nonSignerStakesAndSignature.sigma
626+ );
627+ }
628+
629+ function test_trySignatureAndApkVerification_invalidPairing () public {
630+ uint256 numNonSigners = 0 ;
631+ uint256 quorumBitmap = 1 ;
632+ (
633+ uint32 referenceBlockNumber ,
634+ BLSSignatureChecker.NonSignerStakesAndSignature memory nonSignerStakesAndSignature
635+ ) = _registerSignatoriesAndGetNonSignerStakeAndSignatureRandom (
636+ 1 , numNonSigners, quorumBitmap
637+ );
638+
639+ // Create invalid G2 point
640+ BN254.G2Point memory invalidG2Point = BN254.G2Point (
641+ [type (uint256 ).max, type (uint256 ).max],
642+ [type (uint256 ).max, type (uint256 ).max]
643+ );
644+
645+ (bool pairingSuccessful , bool signatureIsValid ) = blsSignatureChecker.trySignatureAndApkVerification (
646+ msgHash,
647+ nonSignerStakesAndSignature.quorumApks[0 ],
648+ invalidG2Point,
649+ nonSignerStakesAndSignature.sigma
650+ );
651+
652+ assertFalse (pairingSuccessful, "Pairing should fail " );
653+ assertFalse (signatureIsValid, "Signature should be invalid " );
654+ }
585655}
0 commit comments