7 #ifndef PIVX_SCRIPT_SIGN_H
8 #define PIVX_SCRIPT_SIGN_H
48 std::map<CKeyID, CKey>
keys;
int64_t CAmount
Amount in PIV (Can be negative)
Virtual base class for signature creators.
const CKeyStore & KeyStore() const
virtual const BaseSignatureChecker & Checker() const =0
const CKeyStore * keystore
virtual ~BaseSignatureCreator()
BaseSignatureCreator(const CKeyStore *keystoreIn)
virtual bool CreateSig(std::vector< unsigned char > &vchSig, const CKeyID &keyid, const CScript &scriptCode, SigVersion sigversion) const =0
Create a singular (non-script) signature.
An encapsulated private key.
A reference to a CKey: the Hash160 of its serialized public key.
A virtual base class for key stores.
An encapsulated public key.
Serialized script, used inside transaction inputs and outputs.
A reference to a CScript: the Hash160 of its serialization (see script.h)
The basic transaction that is broadcasted on the network and contained in blocks.
A signature creator that just produces 72-byte empty signatyres.
const BaseSignatureChecker & Checker() const
DummySignatureCreator(const CKeyStore *keystoreIn)
bool CreateSig(std::vector< unsigned char > &vchSig, const CKeyID &keyid, const CScript &scriptCode, SigVersion sigversion) const
Create a singular (non-script) signature.
MutableTransactionSignatureCreator(const CKeyStore *keystoreIn, const CMutableTransaction *txToIn, unsigned int nInIn, const CAmount &amount, int nHashTypeIn)
bool GetCScript(const CScriptID &scriptid, CScript &script) const
bool GetPubKey(const CKeyID &address, CPubKey &pubkey) const
const SigningProvider * m_provider
PublicOnlySigningProvider(const SigningProvider *provider)
An interface to be implemented by keystores that support signing.
virtual ~SigningProvider()
virtual bool GetCScript(const CScriptID &scriptid, CScript &script) const
virtual bool GetPubKey(const CKeyID &address, CPubKey &pubkey) const
virtual bool GetKey(const CKeyID &address, CKey &key) const
A signature creator for transactions.
const TransactionSignatureChecker checker
bool CreateSig(std::vector< unsigned char > &vchSig, const CKeyID &keyid, const CScript &scriptCode, SigVersion sigversion) const
Create a singular (non-script) signature.
const CTransaction * txTo
TransactionSignatureCreator(const CKeyStore *keystoreIn, const CTransaction *txToIn, unsigned int nInIn, const CAmount &amountIn, int nHashTypeIn=SIGHASH_ALL)
const BaseSignatureChecker & Checker() const
enum ScriptError_t ScriptError
void UpdateTransaction(CMutableTransaction &tx, unsigned int nIn, const SignatureData &data)
const SigningProvider & DUMMY_SIGNING_PROVIDER
FlatSigningProvider Merge(const FlatSigningProvider &a, const FlatSigningProvider &b)
SignatureData DataFromTransaction(const CMutableTransaction &tx, unsigned int nIn)
Extract signature data from a transaction, and insert it.
SignatureData CombineSignatures(const CScript &scriptPubKey, const BaseSignatureChecker &checker, const SignatureData &scriptSig1, const SignatureData &scriptSig2)
Combine two script signatures using a generic signature checker, intelligently, possibly with OP_0 pl...
bool IsSolvable(const CKeyStore &store, const CScript &script, bool fColdStaking)
bool SignSignature(const CKeyStore &keystore, const CScript &fromPubKey, CMutableTransaction &txTo, unsigned int nIn, const CAmount &amount, int nHashType, bool fColdStake=false)
Produce a script signature for a transaction.
bool ProduceSignature(const BaseSignatureCreator &creator, const CScript &fromPubKey, SignatureData &sigdata, SigVersion sigversion, bool fColdStake, ScriptError *serror=nullptr)
Produce a script signature using a generic signature creator.
A mutable version of CTransaction.
bool GetPubKey(const CKeyID &keyid, CPubKey &pubkey) const override
bool GetKey(const CKeyID &keyid, CKey &key) const override
std::map< CKeyID, CPubKey > pubkeys
std::map< CKeyID, CKey > keys
std::map< CScriptID, CScript > scripts
bool GetCScript(const CScriptID &scriptid, CScript &script) const override
SignatureData(const CScript &script)