Split get signing hash operation and signature verify operation.

This commit is contained in:
JoelKatz
2012-06-23 21:53:54 -07:00
parent 4d52ec0191
commit 9db52a232a
4 changed files with 11 additions and 5 deletions

View File

@@ -46,9 +46,9 @@ uint256 LedgerProposal::getSigningHash() const
return s.getSHA512Half();
}
bool LedgerProposal::checkSign(const std::string& signature)
bool LedgerProposal::checkSign(const std::string& signature, const uint256& signingHash)
{
return mPublicKey.verifyNodePublic(getSigningHash(), signature);
return mPublicKey.verifyNodePublic(signingHash, signature);
}
void LedgerProposal::changePosition(const uint256& newPosition)

View File

@@ -36,7 +36,8 @@ public:
LedgerProposal(const uint256& prevLedger, const uint256& position);
uint256 getSigningHash() const;
bool checkSign(const std::string& signature);
bool checkSign(const std::string& signature, const uint256& signingHash);
bool checkSign(const std::string& signature) { return checkSign(signature, getSigningHash()); }
const uint160& getPeerID() const { return mPeerID; }
const uint256& getCurrentHash() const { return mCurrentHash; }

View File

@@ -56,12 +56,16 @@ uint64 SerializedValidation::getCloseTime() const
}
bool SerializedValidation::isValid() const
{
return isValid(getSigningHash());
}
bool SerializedValidation::isValid(const uint256& signingHash) const
{
try
{
NewcoinAddress naPublicKey = NewcoinAddress::createNodePublic(getValueFieldVL(sfSigningKey));
return naPublicKey.isValid() && naPublicKey.verifyNodePublic(getSigningHash(), mSignature.peekValue());
return naPublicKey.isValid() && naPublicKey.verifyNodePublic(signingHash, mSignature.peekValue());
}
catch (...)
{

View File

@@ -33,6 +33,7 @@ public:
bool isTrusted() const { return mTrusted; }
CKey::pointer getSigningKey() const;
uint256 getSigningHash() const;
bool isValid(const uint256&) const;
void setTrusted() { mTrusted = true; }
void addSigned(Serializer&) const;