Ejemplo n.º 1
0
void SerializedValidation::sign(uint256& signingHash, const RippleAddress& raPriv)
{
	signingHash = getSigningHash();
	std::vector<unsigned char> signature;
	raPriv.signNodePrivate(signingHash, signature);
	setFieldVL(sfSignature, signature);
}
Ejemplo n.º 2
0
Blob const& LedgerProposal::sign (RippleAddress const& privateKey)
{
    privateKey.signNodePrivate (getSigningHash (), signature_);
    mSuppression = proposalUniqueId (mCurrentHash, mPreviousLedger, mProposeSeq,
        mCloseTime, mPublicKey.getNodePublic (), signature_);
    return signature_;
}
void SerializedValidation::sign (uint256& signingHash, const RippleAddress& raPriv)
{
    setFlag (vfFullyCanonicalSig);

    signingHash = getSigningHash ();
    Blob signature;
    raPriv.signNodePrivate (signingHash, signature);
    setFieldVL (sfSignature, signature);
}
Ejemplo n.º 4
0
uint256 STValidation::sign (SecretKey const& secretKey)
{
    setFlag (vfFullyCanonicalSig);

    auto const signingHash = getSigningHash();
    setFieldVL (sfSignature,
        signDigest (getSignerPublic(), secretKey, signingHash));
    return signingHash;
}
Ejemplo n.º 5
0
bool LedgerProposal::checkSign (std::string const& signature) const
{
    auto const valid = mPublicKey.verifyNodePublic(
        getSigningHash(), signature, ECDSA::not_strict);

    HashStream h;
    hash_append(h);
    assert(valid == (publicKey_.verify(
        Slice(h.data(), h.size()),
            makeSlice(signature), false)));

    return valid;
}
Ejemplo n.º 6
0
STValidation::STValidation(
    uint256 const& ledgerHash,
    std::uint32_t ledgerSeq,
    uint256 const& consensusHash,
    NetClock::time_point signTime,
    PublicKey const& publicKey,
    SecretKey const& secretKey,
    NodeID const& nodeID,
    bool isFull,
    FeeSettings const& fees,
    std::vector<uint256> const& amendments)
    : STObject(getFormat(), sfValidation), mNodeID(nodeID), mSeen(signTime)
{
    // This is our own public key and it should always be valid.
    if (!publicKeyType(publicKey))
        LogicError("Invalid validation public key");
    assert(mNodeID.isNonZero());
    setFieldH256(sfLedgerHash, ledgerHash);
    setFieldH256(sfConsensusHash, consensusHash);
    setFieldU32(sfSigningTime, signTime.time_since_epoch().count());

    setFieldVL(sfSigningPubKey, publicKey.slice());
    if (isFull)
        setFlag(kFullFlag);

    setFieldU32(sfLedgerSequence, ledgerSeq);

    if (fees.loadFee)
        setFieldU32(sfLoadFee, *fees.loadFee);

    if (fees.baseFee)
        setFieldU64(sfBaseFee, *fees.baseFee);

    if (fees.reserveBase)
        setFieldU32(sfReserveBase, *fees.reserveBase);

    if (fees.reserveIncrement)
        setFieldU32(sfReserveIncrement, *fees.reserveIncrement);

    if (!amendments.empty())
        setFieldV256(sfAmendments, STVector256(sfAmendments, amendments));

    setFlag(vfFullyCanonicalSig);

    auto const signingHash = getSigningHash();
    setFieldVL(
        sfSignature, signDigest(getSignerPublic(), secretKey, signingHash));

    setTrusted();
}
Ejemplo n.º 7
0
Blob LedgerProposal::sign (void)
{
    Blob ret;

    mPrivateKey.signNodePrivate (getSigningHash (), ret);
    // XXX If this can fail, find out sooner.
    // if (!mPrivateKey.signNodePrivate(getSigningHash(), ret))
    //  throw std::runtime_error("unable to sign proposal");

    mSuppression = computeSuppressionID (mCurrentHash, mPreviousLedger, mProposeSeq,
        mCloseTime, mPublicKey.getNodePublic (), ret);

    return ret;
}
Ejemplo n.º 8
0
bool STValidation::isValid () const
{
    return isValid (getSigningHash ());
}
Ejemplo n.º 9
0
bool LedgerProposal::checkSign () const
{
    return mPublicKey.verifyNodePublic(
        getSigningHash(), signature_, ECDSA::not_strict);
}