Skip to content

Commit ce18dcd

Browse files
committed
refactor: enforce passing bls scheme for each call of sign by BLS
1 parent 954e5ef commit ce18dcd

File tree

14 files changed

+43
-53
lines changed

14 files changed

+43
-53
lines changed

src/bench/bls.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ static void BuildTestVectors(size_t count, size_t invalidCount,
2929
secKeys[i].MakeNewKey();
3030
pubKeys[i] = secKeys[i].GetPublicKey();
3131
msgHashes[i] = GetRandHash();
32-
sigs[i] = secKeys[i].Sign(msgHashes[i]);
32+
sigs[i] = secKeys[i].Sign(msgHashes[i], false);
3333

3434
if (invalid[i]) {
3535
CBLSSecretKey s;
3636
s.MakeNewKey();
37-
sigs[i] = s.Sign(msgHashes[i]);
37+
sigs[i] = s.Sign(msgHashes[i], false);
3838
}
3939
}
4040
}
@@ -71,8 +71,8 @@ static void BLS_SignatureAggregate_Normal(benchmark::Bench& bench)
7171
CBLSSecretKey secKey1, secKey2;
7272
secKey1.MakeNewKey();
7373
secKey2.MakeNewKey();
74-
CBLSSignature sig1 = secKey1.Sign(hash);
75-
CBLSSignature sig2 = secKey2.Sign(hash);
74+
CBLSSignature sig1 = secKey1.Sign(hash, false);
75+
CBLSSignature sig2 = secKey2.Sign(hash, false);
7676

7777
// Benchmark.
7878
bench.run([&] {
@@ -89,7 +89,7 @@ static void BLS_Sign_Normal(benchmark::Bench& bench)
8989
// Benchmark.
9090
bench.minEpochIterations(100).run([&] {
9191
uint256 hash = GetRandHash();
92-
sig = secKey.Sign(hash);
92+
sig = secKey.Sign(hash, false);
9393
});
9494
}
9595

src/bls/bls.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,6 @@ CBLSPublicKey CBLSSecretKey::GetPublicKey() const
117117
return pubKey;
118118
}
119119

120-
CBLSSignature CBLSSecretKey::Sign(const uint256& hash) const
121-
{
122-
return Sign(hash, bls::bls_legacy_scheme.load());
123-
}
124-
125120
CBLSSignature CBLSSecretKey::Sign(const uint256& hash, const bool specificLegacyScheme) const
126121
{
127122
if (!IsValid()) {

src/bls/bls.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,6 @@ class CBLSSecretKey : public CBLSWrapper<bls::PrivateKey, BLS_CURVE_SECKEY_SIZE,
275275
bool SecretKeyShare(Span<CBLSSecretKey> msk, const CBLSId& id);
276276

277277
[[nodiscard]] CBLSPublicKey GetPublicKey() const;
278-
[[nodiscard]] CBLSSignature Sign(const uint256& hash) const;
279278
[[nodiscard]] CBLSSignature Sign(const uint256& hash, const bool specificLegacyScheme) const;
280279
};
281280

src/bls/bls_worker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -762,7 +762,7 @@ bool CBLSWorker::VerifyVerificationVectors(Span<BLSVerificationVectorPtr> vvecs)
762762
void CBLSWorker::AsyncSign(const CBLSSecretKey& secKey, const uint256& msgHash, const CBLSWorker::SignDoneCallback& doneCallback)
763763
{
764764
workerPool.push([secKey, msgHash, doneCallback](int threadId) {
765-
doneCallback(secKey.Sign(msgHash));
765+
doneCallback(secKey.Sign(msgHash, bls::bls_legacy_scheme.load()));
766766
});
767767
}
768768

src/evo/mnauth.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ void CMNAuth::PushMNAUTH(CNode& peer, CConnman& connman, const CActiveMasternode
5151

5252
mnauth.proRegTxHash = mn_activeman.GetProTxHash();
5353

54-
mnauth.sig = mn_activeman.Sign(signHash);
54+
mnauth.sig = mn_activeman.Sign(signHash, bls::bls_legacy_scheme.load());
5555

5656
LogPrint(BCLog::NET_NETCONN, "CMNAuth::%s -- Sending MNAUTH, peer=%d\n", __func__, peer.GetId());
5757
connman.PushMessage(&peer, CNetMsgMaker(peer.GetCommonVersion()).Make(NetMsgType::MNAUTH, mnauth));

src/llmq/dkgsession.cpp

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ CDKGSession::CDKGSession(const CBlockIndex* pQuorumBaseBlockIndex, const Consens
8484
m_mn_metaman(mn_metaman),
8585
m_mn_activeman(mn_activeman),
8686
m_sporkman(sporkman),
87-
m_quorum_base_block_index{pQuorumBaseBlockIndex}
87+
m_quorum_base_block_index{pQuorumBaseBlockIndex},
88+
m_use_legacy_bls{!DeploymentActiveAfter(m_quorum_base_block_index, Params().GetConsensus(), Consensus::DEPLOYMENT_V19)}
8889
{
8990
}
9091

@@ -215,7 +216,7 @@ void CDKGSession::SendContributions(CDKGPendingMessages& pendingMessages, PeerMa
215216

216217
logger.Batch("encrypted contributions. time=%d", t1.count());
217218

218-
qc.sig = m_mn_activeman->Sign(qc.GetSignHash());
219+
qc.sig = m_mn_activeman->Sign(qc.GetSignHash(), m_use_legacy_bls);
219220

220221
logger.Flush();
221222

@@ -527,7 +528,7 @@ void CDKGSession::SendComplaint(CDKGPendingMessages& pendingMessages, PeerManage
527528

528529
logger.Batch("sending complaint. badCount=%d, complaintCount=%d", badCount, complaintCount);
529530

530-
qc.sig = m_mn_activeman->Sign(qc.GetSignHash());
531+
qc.sig = m_mn_activeman->Sign(qc.GetSignHash(), m_use_legacy_bls);
531532

532533
logger.Flush();
533534

@@ -721,7 +722,7 @@ void CDKGSession::SendJustification(CDKGPendingMessages& pendingMessages, PeerMa
721722
return;
722723
}
723724

724-
qj.sig = m_mn_activeman->Sign(qj.GetSignHash());
725+
qj.sig = m_mn_activeman->Sign(qj.GetSignHash(), m_use_legacy_bls);
725726

726727
logger.Flush();
727728

@@ -1011,19 +1012,17 @@ void CDKGSession::SendCommitment(CDKGPendingMessages& pendingMessages, PeerManag
10111012
(*commitmentHash.begin())++;
10121013
}
10131014

1014-
qc.sig = m_mn_activeman->Sign(commitmentHash);
1015-
qc.quorumSig = skShare.Sign(commitmentHash);
1015+
qc.sig = m_mn_activeman->Sign(commitmentHash, m_use_legacy_bls);
1016+
qc.quorumSig = skShare.Sign(commitmentHash, m_use_legacy_bls);
10161017

10171018
if (lieType == 3) {
1018-
const bool is_bls_legacy = bls::bls_legacy_scheme.load();
1019-
std::vector<uint8_t> buf = qc.sig.ToByteVector(is_bls_legacy);
1019+
std::vector<uint8_t> buf = qc.sig.ToByteVector(m_use_legacy_bls);
10201020
buf[5]++;
1021-
qc.sig.SetByteVector(buf, is_bls_legacy);
1021+
qc.sig.SetByteVector(buf, m_use_legacy_bls);
10221022
} else if (lieType == 4) {
1023-
const bool is_bls_legacy = bls::bls_legacy_scheme.load();
1024-
std::vector<uint8_t> buf = qc.quorumSig.ToByteVector(is_bls_legacy);
1023+
std::vector<uint8_t> buf = qc.quorumSig.ToByteVector(m_use_legacy_bls);
10251024
buf[5]++;
1026-
qc.quorumSig.SetByteVector(buf, is_bls_legacy);
1025+
qc.quorumSig.SetByteVector(buf, m_use_legacy_bls);
10271026
}
10281027

10291028
t3.stop();

src/llmq/dkgsession.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,7 @@ class CDKGSession
288288
const CSporkManager& m_sporkman;
289289

290290
const CBlockIndex* const m_quorum_base_block_index;
291+
bool m_use_legacy_bls;
291292
int quorumIndex{0};
292293

293294
private:

src/llmq/signing_shares.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1541,7 +1541,7 @@ std::optional<CSigShare> CSigSharesManager::CreateSigShare(const CQuorumCPtr& qu
15411541
CSigShare sigShare(quorum->params.type, quorum->qc->quorumHash, id, msgHash, uint16_t(memberIdx), {});
15421542
uint256 signHash = sigShare.buildSignHash();
15431543

1544-
sigShare.sigShare.Set(skShare.Sign(signHash), bls::bls_legacy_scheme.load());
1544+
sigShare.sigShare.Set(skShare.Sign(signHash, bls::bls_legacy_scheme.load()), bls::bls_legacy_scheme.load());
15451545
if (!sigShare.sigShare.Get().IsValid()) {
15461546
LogPrintf("CSigSharesManager::%s -- failed to sign sigShare. signHash=%s, id=%s, msgHash=%s, time=%s\n", __func__,
15471547
signHash.ToString(), sigShare.getId().ToString(), sigShare.getMsgHash().ToString(), t.count());

src/masternode/node.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -275,12 +275,6 @@ template bool CActiveMasternodeManager::Decrypt(const CBLSIESEncryptedObject<CBL
275275
template bool CActiveMasternodeManager::Decrypt(const CBLSIESMultiRecipientObjects<CBLSSecretKey>& obj, size_t idx,
276276
CBLSSecretKey& ret_obj, int version) const;
277277

278-
[[nodiscard]] CBLSSignature CActiveMasternodeManager::Sign(const uint256& hash) const
279-
{
280-
AssertLockNotHeld(cs);
281-
return WITH_READ_LOCK(cs, return m_info.blsKeyOperator.Sign(hash));
282-
}
283-
284278
[[nodiscard]] CBLSSignature CActiveMasternodeManager::Sign(const uint256& hash, const bool is_legacy) const
285279
{
286280
AssertLockNotHeld(cs);

src/masternode/node.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ class CActiveMasternodeManager final : public CValidationInterface
6565
template <template <typename> class EncryptedObj, typename Obj>
6666
[[nodiscard]] bool Decrypt(const EncryptedObj<Obj>& obj, size_t idx, Obj& ret_obj, int version) const
6767
EXCLUSIVE_LOCKS_REQUIRED(!cs);
68-
[[nodiscard]] CBLSSignature Sign(const uint256& hash) const EXCLUSIVE_LOCKS_REQUIRED(!cs);
6968
[[nodiscard]] CBLSSignature Sign(const uint256& hash, const bool is_legacy) const EXCLUSIVE_LOCKS_REQUIRED(!cs);
7069

7170
/* TODO: Reconsider external locking */

0 commit comments

Comments
 (0)