bool CommunicationProtocol::unwindMessage( CMessage const & _message, CMessage & _originalMessage, int64_t const _time, CPubKey const & _pubKey ) { if ( _time < _message.m_header.m_time ) { // this should be serviced in special way // clock of trackers may be not synchronized // return false; } if ( _message.m_header.m_payloadKind != CPayloadKind::IntroductionReq ) { uint256 messageHash = Hash( &_message.m_payload.front(), &_message.m_payload.back() ); if ( !_pubKey.Verify(messageHash, _message.m_header.m_signedHash ) ) return false; } if( _message.m_header.m_prevKey.IsValid() ) { CMessage message; readPayload( _message.m_payload, message ); return unwindMessage(message, _originalMessage, _message.m_header.m_time, _message.m_header.m_prevKey ); } _originalMessage = _message; //_payload =*(Payload *)_message.m_payload; return true; }
bool TransactionSignatureChecker::VerifySignature(const vector<unsigned char>& vchSig, const CPubKey& pubkey, const uint256& sighash) const { return pubkey.Verify(sighash, vchSig); }
bool CheckBlockSignature(const CBlock& block, const CPubKey& pubkeyMasternode) { uint256 hashBlock = block.GetHash(); return pubkeyMasternode.Verify(hashBlock, block.vchBlockSig); }