mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Split get signing hash operation and signature verify operation.
This commit is contained in:
@@ -46,9 +46,9 @@ uint256 LedgerProposal::getSigningHash() const
|
|||||||
return s.getSHA512Half();
|
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)
|
void LedgerProposal::changePosition(const uint256& newPosition)
|
||||||
|
|||||||
@@ -36,7 +36,8 @@ public:
|
|||||||
LedgerProposal(const uint256& prevLedger, const uint256& position);
|
LedgerProposal(const uint256& prevLedger, const uint256& position);
|
||||||
|
|
||||||
uint256 getSigningHash() const;
|
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 uint160& getPeerID() const { return mPeerID; }
|
||||||
const uint256& getCurrentHash() const { return mCurrentHash; }
|
const uint256& getCurrentHash() const { return mCurrentHash; }
|
||||||
|
|||||||
@@ -56,12 +56,16 @@ uint64 SerializedValidation::getCloseTime() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool SerializedValidation::isValid() const
|
bool SerializedValidation::isValid() const
|
||||||
|
{
|
||||||
|
return isValid(getSigningHash());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SerializedValidation::isValid(const uint256& signingHash) const
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
NewcoinAddress naPublicKey = NewcoinAddress::createNodePublic(getValueFieldVL(sfSigningKey));
|
NewcoinAddress naPublicKey = NewcoinAddress::createNodePublic(getValueFieldVL(sfSigningKey));
|
||||||
|
return naPublicKey.isValid() && naPublicKey.verifyNodePublic(signingHash, mSignature.peekValue());
|
||||||
return naPublicKey.isValid() && naPublicKey.verifyNodePublic(getSigningHash(), mSignature.peekValue());
|
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ public:
|
|||||||
bool isTrusted() const { return mTrusted; }
|
bool isTrusted() const { return mTrusted; }
|
||||||
CKey::pointer getSigningKey() const;
|
CKey::pointer getSigningKey() const;
|
||||||
uint256 getSigningHash() const;
|
uint256 getSigningHash() const;
|
||||||
|
bool isValid(const uint256&) const;
|
||||||
|
|
||||||
void setTrusted() { mTrusted = true; }
|
void setTrusted() { mTrusted = true; }
|
||||||
void addSigned(Serializer&) const;
|
void addSigned(Serializer&) const;
|
||||||
|
|||||||
Reference in New Issue
Block a user