Branch data Line data Source code
1 : : // Copyright (c) 2019-2021 The Bitcoin Core developers
2 : : // Distributed under the MIT software license, see the accompanying
3 : : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 : :
5 : : #ifndef BITCOIN_WALLET_EXTERNAL_SIGNER_SCRIPTPUBKEYMAN_H
6 : : #define BITCOIN_WALLET_EXTERNAL_SIGNER_SCRIPTPUBKEYMAN_H
7 : :
8 : : #include <wallet/scriptpubkeyman.h>
9 : :
10 : : #include <memory>
11 : :
12 : : struct bilingual_str;
13 : :
14 : : namespace wallet {
15 : : class ExternalSignerScriptPubKeyMan : public DescriptorScriptPubKeyMan
16 : : {
17 : : public:
18 : 0 : ExternalSignerScriptPubKeyMan(WalletStorage& storage, WalletDescriptor& descriptor, int64_t keypool_size)
19 [ # # ]: 0 : : DescriptorScriptPubKeyMan(storage, descriptor, keypool_size)
20 : : {}
21 : 8 : ExternalSignerScriptPubKeyMan(WalletStorage& storage, int64_t keypool_size)
22 [ + - + - ]: 8 : : DescriptorScriptPubKeyMan(storage, keypool_size)
23 : : {}
24 : :
25 : : /** Provide a descriptor at setup time
26 : : * Returns false if already setup or setup fails, true if setup is successful
27 : : */
28 : : bool SetupDescriptor(WalletBatch& batch, std::unique_ptr<Descriptor>desc);
29 : :
30 : : static ExternalSigner GetExternalSigner();
31 : :
32 : : /**
33 : : * Display address on the device and verify that the returned value matches.
34 : : * @returns nothing or an error message
35 : : */
36 : : util::Result<void> DisplayAddress(const CTxDestination& dest, const ExternalSigner& signer) const;
37 : :
38 : : std::optional<common::PSBTError> FillPSBT(PartiallySignedTransaction& psbt, const PrecomputedTransactionData& txdata, int sighash_type = 1 /* SIGHASH_ALL */, bool sign = true, bool bip32derivs = false, int* n_signed = nullptr, bool finalize = true) const override;
39 : : };
40 : : } // namespace wallet
41 : : #endif // BITCOIN_WALLET_EXTERNAL_SIGNER_SCRIPTPUBKEYMAN_H
|