Implement VerifyRecoveredSig to allow verifcation of sigs found in P2P messages
This commit is contained in:
parent
9f211ef12d
commit
4026ea203b
@ -548,4 +548,17 @@ bool CSigningManager::IsConflicting(Consensus::LLMQType llmqType, const uint256&
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CSigningManager::VerifyRecoveredSig(Consensus::LLMQType llmqType, const uint256& signedAtTip, const uint256& id, const uint256& msgHash, const CBLSSignature& sig)
|
||||
{
|
||||
auto& llmqParams = Params().GetConsensus().llmqs.at(Params().GetConsensus().llmqTypeForChainLocks);
|
||||
|
||||
auto quorum = quorumManager->SelectQuorum(llmqParams.type, signedAtTip, id);
|
||||
if (!quorum) {
|
||||
return false;
|
||||
}
|
||||
|
||||
uint256 signHash = CLLMQUtils::BuildSignHash(llmqParams.type, quorum->quorumHash, id, msgHash);
|
||||
return sig.VerifyInsecure(quorum->quorumPublicKey, signHash);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -146,6 +146,9 @@ public:
|
||||
bool HasRecoveredSigForId(Consensus::LLMQType llmqType, const uint256& id);
|
||||
bool HasRecoveredSigForSession(const uint256& signHash);
|
||||
bool IsConflicting(Consensus::LLMQType llmqType, const uint256& id, const uint256& msgHash);
|
||||
|
||||
// Verifies a recovered sig that was signed while the chain tip was at signedAtTip
|
||||
bool VerifyRecoveredSig(Consensus::LLMQType llmqType, const uint256& signedAtTip, const uint256& id, const uint256& msgHash, const CBLSSignature& sig);
|
||||
};
|
||||
|
||||
extern CSigningManager* quorumSigningManager;
|
||||
|
Loading…
Reference in New Issue
Block a user