Changeset View
Changeset View
Standalone View
Standalone View
src/script/sign.h
Show All 14 Lines | |||||
class CScript; | class CScript; | ||||
class CScriptID; | class CScriptID; | ||||
class CTransaction; | class CTransaction; | ||||
/** An interface to be implemented by keystores that support signing. */ | /** An interface to be implemented by keystores that support signing. */ | ||||
class SigningProvider { | class SigningProvider { | ||||
public: | public: | ||||
virtual ~SigningProvider() {} | virtual ~SigningProvider() {} | ||||
virtual bool GetCScript(const CScriptID &scriptid, | virtual bool GetCScript(const CScriptID &scriptid, CScript &script) const { | ||||
CScript &script) const = 0; | return false; | ||||
virtual bool GetPubKey(const CKeyID &address, CPubKey &pubkey) const = 0; | } | ||||
virtual bool GetKey(const CKeyID &address, CKey &key) const = 0; | virtual bool GetPubKey(const CKeyID &address, CPubKey &pubkey) const { | ||||
return false; | |||||
} | |||||
virtual bool GetKey(const CKeyID &address, CKey &key) const { | |||||
return false; | |||||
} | |||||
}; | }; | ||||
extern const SigningProvider &DUMMY_SIGNING_PROVIDER; | |||||
/** Interface for signature creators. */ | /** Interface for signature creators. */ | ||||
class BaseSignatureCreator { | class BaseSignatureCreator { | ||||
public: | public: | ||||
virtual ~BaseSignatureCreator() {} | virtual ~BaseSignatureCreator() {} | ||||
virtual const BaseSignatureChecker &Checker() const = 0; | virtual const BaseSignatureChecker &Checker() const = 0; | ||||
/** Create a singular (non-script) signature. */ | /** Create a singular (non-script) signature. */ | ||||
virtual bool CreateSig(const SigningProvider &provider, | virtual bool CreateSig(const SigningProvider &provider, | ||||
Show All 37 Lines | struct SignatureData { | ||||
/// The redeemScript (if any) for the input. | /// The redeemScript (if any) for the input. | ||||
CScript redeem_script; | CScript redeem_script; | ||||
/// BIP 174 style partial signatures for the input. May contain all | /// BIP 174 style partial signatures for the input. May contain all | ||||
/// signatures necessary for producing a final scriptSig. | /// signatures necessary for producing a final scriptSig. | ||||
std::map<CKeyID, SigPair> signatures; | std::map<CKeyID, SigPair> signatures; | ||||
SignatureData() {} | SignatureData() {} | ||||
explicit SignatureData(const CScript &script) : scriptSig(script) {} | explicit SignatureData(const CScript &script) : scriptSig(script) {} | ||||
void MergeSignatureData(SignatureData sigdata); | |||||
}; | }; | ||||
/** Produce a script signature using a generic signature creator. */ | /** Produce a script signature using a generic signature creator. */ | ||||
bool ProduceSignature(const SigningProvider &provider, | bool ProduceSignature(const SigningProvider &provider, | ||||
const BaseSignatureCreator &creator, | const BaseSignatureCreator &creator, | ||||
const CScript &scriptPubKey, SignatureData &sigdata); | const CScript &scriptPubKey, SignatureData &sigdata); | ||||
/** Produce a script signature for a transaction. */ | /** Produce a script signature for a transaction. */ | ||||
Show All 22 Lines |