@@ -610,11 +610,27 @@ contract GatewayConfig is IGatewayConfig, Ownable2StepUpgradeable, UUPSUpgradeab
610610
611611 // Register the new KMS nodes
612612 for (uint256 i = 0 ; i < newKmsNodes.length ; i++ ) {
613- $.isKmsTxSender[newKmsNodes[i].txSenderAddress] = true ;
614- $.kmsNodes[newKmsNodes[i].txSenderAddress] = newKmsNodes[i];
615- $.kmsTxSenderAddresses.push (newKmsNodes[i].txSenderAddress);
616- $.isKmsSigner[newKmsNodes[i].signerAddress] = true ;
617- $.kmsSignerAddresses.push (newKmsNodes[i].signerAddress);
613+ address newKmsTxSenderAddress = newKmsNodes[i].txSenderAddress;
614+ address newKmsSignerAddress = newKmsNodes[i].signerAddress;
615+
616+ // Check for KMS transaction sender and signer duplicates
617+ if ($.isKmsTxSender[newKmsTxSenderAddress]) {
618+ revert KmsTxSenderAlreadyRegistered (newKmsTxSenderAddress);
619+ }
620+ if ($.isKmsSigner[newKmsSignerAddress]) {
621+ revert KmsSignerAlreadyRegistered (newKmsSignerAddress);
622+ }
623+
624+ // Register transaction sender
625+ $.isKmsTxSender[newKmsTxSenderAddress] = true ;
626+ $.kmsTxSenderAddresses.push (newKmsTxSenderAddress);
627+
628+ // Register KMS node
629+ $.kmsNodes[newKmsTxSenderAddress] = newKmsNodes[i];
630+
631+ // Register signer
632+ $.isKmsSigner[newKmsSignerAddress] = true ;
633+ $.kmsSignerAddresses.push (newKmsSignerAddress);
618634 }
619635
620636 // Setting the thresholds should be done after the KMS nodes have been registered as the functions
@@ -642,11 +658,27 @@ contract GatewayConfig is IGatewayConfig, Ownable2StepUpgradeable, UUPSUpgradeab
642658
643659 // Register the new coprocessors
644660 for (uint256 i = 0 ; i < newCoprocessors.length ; i++ ) {
645- $.isCoprocessorTxSender[newCoprocessors[i].txSenderAddress] = true ;
646- $.coprocessors[newCoprocessors[i].txSenderAddress] = newCoprocessors[i];
647- $.coprocessorTxSenderAddresses.push (newCoprocessors[i].txSenderAddress);
648- $.isCoprocessorSigner[newCoprocessors[i].signerAddress] = true ;
649- $.coprocessorSignerAddresses.push (newCoprocessors[i].signerAddress);
661+ address newCoprocessorTxSenderAddress = newCoprocessors[i].txSenderAddress;
662+ address newCoprocessorSignerAddress = newCoprocessors[i].signerAddress;
663+
664+ // Check for coprocessor transaction sender and signer duplicates
665+ if ($.isCoprocessorTxSender[newCoprocessorTxSenderAddress]) {
666+ revert CoprocessorTxSenderAlreadyRegistered (newCoprocessorTxSenderAddress);
667+ }
668+ if ($.isCoprocessorSigner[newCoprocessorSignerAddress]) {
669+ revert CoprocessorSignerAlreadyRegistered (newCoprocessorSignerAddress);
670+ }
671+
672+ // Register coprocessor transaction sender
673+ $.isCoprocessorTxSender[newCoprocessorTxSenderAddress] = true ;
674+ $.coprocessorTxSenderAddresses.push (newCoprocessorTxSenderAddress);
675+
676+ // Register coprocessor
677+ $.coprocessors[newCoprocessorTxSenderAddress] = newCoprocessors[i];
678+
679+ // Register coprocessor signer
680+ $.isCoprocessorSigner[newCoprocessorSignerAddress] = true ;
681+ $.coprocessorSignerAddresses.push (newCoprocessorSignerAddress);
650682 }
651683
652684 // Setting the coprocessor threshold should be done after the coprocessors have been
@@ -667,11 +699,27 @@ contract GatewayConfig is IGatewayConfig, Ownable2StepUpgradeable, UUPSUpgradeab
667699
668700 // Register the new custodians
669701 for (uint256 i = 0 ; i < newCustodians.length ; i++ ) {
670- $.custodians[newCustodians[i].txSenderAddress] = newCustodians[i];
671- $.custodianTxSenderAddresses.push (newCustodians[i].txSenderAddress);
672- $.isCustodianTxSender[newCustodians[i].txSenderAddress] = true ;
673- $.custodianSignerAddresses.push (newCustodians[i].signerAddress);
674- $.isCustodianSigner[newCustodians[i].signerAddress] = true ;
702+ address newCustodianTxSenderAddress = newCustodians[i].txSenderAddress;
703+ address newCustodianSignerAddress = newCustodians[i].signerAddress;
704+
705+ // Check for custodian transaction sender and signer duplicates
706+ if ($.isCustodianTxSender[newCustodianTxSenderAddress]) {
707+ revert CustodianTxSenderAlreadyRegistered (newCustodianTxSenderAddress);
708+ }
709+ if ($.isCustodianSigner[newCustodianSignerAddress]) {
710+ revert CustodianSignerAlreadyRegistered (newCustodianSignerAddress);
711+ }
712+
713+ // Register custodian transaction sender
714+ $.isCustodianTxSender[newCustodianTxSenderAddress] = true ;
715+ $.custodianTxSenderAddresses.push (newCustodianTxSenderAddress);
716+
717+ // Register custodian
718+ $.custodians[newCustodianTxSenderAddress] = newCustodians[i];
719+
720+ // Register custodian signer
721+ $.isCustodianSigner[newCustodianSignerAddress] = true ;
722+ $.custodianSignerAddresses.push (newCustodianSignerAddress);
675723 }
676724 }
677725
@@ -703,7 +751,7 @@ contract GatewayConfig is IGatewayConfig, Ownable2StepUpgradeable, UUPSUpgradeab
703751
704752 // Check that the public decryption threshold `t` is valid. It must verify:
705753 // - `t >= 1` : the public decryption consensus should require at least one vote
706- // - `t <= n` : it should be less than the number of registered KMS nodes
754+ // - `t <= n` : it should be less than or equal to the number of registered KMS nodes
707755 if (newPublicDecryptionThreshold == 0 ) {
708756 revert InvalidNullPublicDecryptionThreshold ();
709757 }
@@ -724,7 +772,7 @@ contract GatewayConfig is IGatewayConfig, Ownable2StepUpgradeable, UUPSUpgradeab
724772
725773 // Check that the user decryption threshold `t` is valid. It must verify:
726774 // - `t >= 1` : the user decryption consensus should require at least one vote
727- // - `t <= n` : it should be less than the number of registered KMS nodes
775+ // - `t <= n` : it should be less than or equal to the number of registered KMS nodes
728776 if (newUserDecryptionThreshold == 0 ) {
729777 revert InvalidNullUserDecryptionThreshold ();
730778 }
@@ -745,7 +793,7 @@ contract GatewayConfig is IGatewayConfig, Ownable2StepUpgradeable, UUPSUpgradeab
745793
746794 // Check that the coprocessor threshold `t` is valid. It must verify:
747795 // - `t >= 1` : the coprocessor consensus should require at least one vote
748- // - `t <= n` : it should be less than the number of registered coprocessors
796+ // - `t <= n` : it should be less than or equal to the number of registered coprocessors
749797 if (newCoprocessorThreshold == 0 ) {
750798 revert InvalidNullCoprocessorThreshold ();
751799 }
@@ -766,7 +814,7 @@ contract GatewayConfig is IGatewayConfig, Ownable2StepUpgradeable, UUPSUpgradeab
766814
767815 // Check that the key and CRS generation threshold `t` is valid. It must verify:
768816 // - `t >= 1` : the key and CRS generation consensus should require at least one vote
769- // - `t <= n` : it should be less than the number of registered KMS nodes
817+ // - `t <= n` : it should be less than or equal to the number of registered KMS nodes
770818 if (newKmsGenThreshold == 0 ) {
771819 revert InvalidNullKmsGenThreshold ();
772820 }
0 commit comments