Dash Core  0.12.2.1
P2P Digital Currency
sign.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2015 The Bitcoin Core developers
3 // Distributed under the MIT software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 #ifndef BITCOIN_SCRIPT_SIGN_H
7 #define BITCOIN_SCRIPT_SIGN_H
8 
9 #include "script/interpreter.h"
10 
11 class CKeyID;
12 class CKeyStore;
13 class CScript;
14 class CTransaction;
15 
16 struct CMutableTransaction;
17 
20 protected:
22 
23 public:
24  BaseSignatureCreator(const CKeyStore* keystoreIn) : keystore(keystoreIn) {}
25  const CKeyStore& KeyStore() const { return *keystore; };
26  virtual ~BaseSignatureCreator() {}
27  virtual const BaseSignatureChecker& Checker() const =0;
28 
30  virtual bool CreateSig(std::vector<unsigned char>& vchSig, const CKeyID& keyid, const CScript& scriptCode) const =0;
31 };
32 
36  unsigned int nIn;
37  int nHashType;
39 
40 public:
41  TransactionSignatureCreator(const CKeyStore* keystoreIn, const CTransaction* txToIn, unsigned int nInIn, int nHashTypeIn=SIGHASH_ALL);
42  const BaseSignatureChecker& Checker() const { return checker; }
43  bool CreateSig(std::vector<unsigned char>& vchSig, const CKeyID& keyid, const CScript& scriptCode) const;
44 };
45 
48 public:
49  DummySignatureCreator(const CKeyStore* keystoreIn) : BaseSignatureCreator(keystoreIn) {}
50  const BaseSignatureChecker& Checker() const;
51  bool CreateSig(std::vector<unsigned char>& vchSig, const CKeyID& keyid, const CScript& scriptCode) const;
52 };
53 
55 bool ProduceSignature(const BaseSignatureCreator& creator, const CScript& scriptPubKey, CScript& scriptSig);
56 
58 bool SignSignature(const CKeyStore& keystore, const CScript& fromPubKey, CMutableTransaction& txTo, unsigned int nIn, int nHashType=SIGHASH_ALL);
59 bool SignSignature(const CKeyStore& keystore, const CTransaction& txFrom, CMutableTransaction& txTo, unsigned int nIn, int nHashType=SIGHASH_ALL);
60 
62 CScript CombineSignatures(const CScript& scriptPubKey, const BaseSignatureChecker& checker, const CScript& scriptSig1, const CScript& scriptSig2);
63 
65 CScript CombineSignatures(const CScript& scriptPubKey, const CTransaction& txTo, unsigned int nIn, const CScript& scriptSig1, const CScript& scriptSig2);
66 
67 #endif // BITCOIN_SCRIPT_SIGN_H
bool ProduceSignature(const BaseSignatureCreator &creator, const CScript &scriptPubKey, CScript &scriptSig)
Definition: sign.cpp:104
bool CreateSig(std::vector< unsigned char > &vchSig, const CKeyID &keyid, const CScript &scriptCode) const
Definition: sign.cpp:300
bool CreateSig(std::vector< unsigned char > &vchSig, const CKeyID &keyid, const CScript &scriptCode) const
Definition: sign.cpp:23
TransactionSignatureCreator(const CKeyStore *keystoreIn, const CTransaction *txToIn, unsigned int nInIn, int nHashTypeIn=SIGHASH_ALL)
Definition: sign.cpp:21
bool SignSignature(const CKeyStore &keystore, const CScript &fromPubKey, CMutableTransaction &txTo, unsigned int nIn, int nHashType=SIGHASH_ALL)
Definition: sign.cpp:129
Definition: pubkey.h:27
DummySignatureCreator(const CKeyStore *keystoreIn)
Definition: sign.h:49
const TransactionSignatureChecker checker
Definition: sign.h:38
const CTransaction * txTo
Definition: sign.h:35
const BaseSignatureChecker & Checker() const
Definition: sign.cpp:295
virtual bool CreateSig(std::vector< unsigned char > &vchSig, const CKeyID &keyid, const CScript &scriptCode) const =0
CScript CombineSignatures(const CScript &scriptPubKey, const BaseSignatureChecker &checker, const CScript &scriptSig1, const CScript &scriptSig2)
Definition: sign.cpp:265
virtual ~BaseSignatureCreator()
Definition: sign.h:26
BaseSignatureCreator(const CKeyStore *keystoreIn)
Definition: sign.h:24
unsigned int nIn
Definition: sign.h:36
const CKeyStore * keystore
Definition: sign.h:21
virtual const BaseSignatureChecker & Checker() const =0
const BaseSignatureChecker & Checker() const
Definition: sign.h:42
const CKeyStore & KeyStore() const
Definition: sign.h:25