X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=blobdiff_plain;f=src%2Fcheckpoints.cpp;h=7de5883edda573cc173484379d3cee648a296351;hp=5bb9df6fccf95d941af6c31c535c8301c2ece17d;hb=bf2ce95cb5b1da5d894e5302a7c4de0894c1cce2;hpb=3f94e09d9ae6fdc0bcb608d6f1f62e1491e4d576 diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp index 5bb9df6..7de5883 100644 --- a/src/checkpoints.cpp +++ b/src/checkpoints.cpp @@ -288,6 +288,26 @@ namespace Checkpoints pfrom->AskFor(CInv(MSG_BLOCK, hashPendingCheckpoint)); } + bool SetCheckpointPrivKey(std::string strPrivKey) + { + // Test signing a sync-checkpoint with genesis block + CSyncCheckpoint checkpoint; + checkpoint.hashCheckpoint = hashGenesisBlock; + CDataStream sMsg(SER_NETWORK, PROTOCOL_VERSION); + sMsg << (CUnsignedSyncCheckpoint)checkpoint; + checkpoint.vchMsg = std::vector(sMsg.begin(), sMsg.end()); + + std::vector vchPrivKey = ParseHex(strPrivKey); + CKey key; + key.SetPrivKey(CPrivKey(vchPrivKey.begin(), vchPrivKey.end())); // if key is not correct openssl may crash + if (!key.Sign(Hash(checkpoint.vchMsg.begin(), checkpoint.vchMsg.end()), checkpoint.vchSig)) + return false; + + // Test signing successful, proceed + CSyncCheckpoint::strMasterPrivKey = strPrivKey; + return true; + } + bool SendSyncCheckpoint(uint256 hashCheckpoint) { CSyncCheckpoint checkpoint;