From 1172fbc1e8ac6e1667ad497e472180ff50001437 Mon Sep 17 00:00:00 2001 From: metalurgical <97008724+metalurgical@users.noreply.github.com> Date: Fri, 26 Jan 2024 07:59:34 +0200 Subject: [PATCH] fix: expose signer interface --- Package.swift | 2 +- Sources/BitcoinKit/Classes/Core/Kit.swift | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Package.swift b/Package.swift index 6a4d7d47..b87f943e 100644 --- a/Package.swift +++ b/Package.swift @@ -14,7 +14,7 @@ let package = Package( ), ], dependencies: [ - .package(url: "https://github.com/horizontalsystems/BitcoinCore.Swift.git", .upToNextMajor(from: "2.2.0")), + .package(url: "https://github.com/metalurgical/BitcoinCore.Swift.git", .branch("fix_expose_signer_interface")), .package(url: "https://github.com/horizontalsystems/Hodler.Swift.git", .upToNextMajor(from: "2.0.0")), .package(url: "https://github.com/horizontalsystems/HdWalletKit.Swift.git", .upToNextMajor(from: "1.2.1")), .package(url: "https://github.com/horizontalsystems/HsToolKit.Swift.git", .upToNextMajor(from: "2.0.5")), diff --git a/Sources/BitcoinKit/Classes/Core/Kit.swift b/Sources/BitcoinKit/Classes/Core/Kit.swift index fc09d0fe..8905c487 100644 --- a/Sources/BitcoinKit/Classes/Core/Kit.swift +++ b/Sources/BitcoinKit/Classes/Core/Kit.swift @@ -32,7 +32,7 @@ public class Kit: AbstractKit { } } - private init(extendedKey: HDExtendedKey?, watchAddressPublicKey: WatchAddressPublicKey?, purpose: Purpose, walletId: String, syncMode: BitcoinCore.SyncMode = .api, networkType: NetworkType = .mainNet, confirmationsThreshold: Int = 6, logger: Logger?) throws { + private init(extendedKey: HDExtendedKey?, watchAddressPublicKey: WatchAddressPublicKey?, purpose: Purpose, walletId: String, syncMode: BitcoinCore.SyncMode = .api, networkType: NetworkType = .mainNet, confirmationsThreshold: Int = 6, logger: Logger?, signer: ITransactionSigner?) throws { let network = networkType.network let logger = logger ?? Logger(minLogLevel: .verbose) let databaseFilePath = try DirectoryHelper.directoryURL(for: Kit.name).appendingPathComponent(Kit.databaseFileName(walletId: walletId, networkType: networkType, purpose: purpose, syncMode: syncMode)).path @@ -108,6 +108,7 @@ public class Kit: AbstractKit { .set(purpose: purpose) .set(extendedKey: extendedKey) .set(watchAddressPublicKey: watchAddressPublicKey) + .set(signer: signer) .build() super.init(bitcoinCore: bitcoinCore, network: network) @@ -117,7 +118,7 @@ public class Kit: AbstractKit { } } - public convenience init(seed: Data, purpose: Purpose, walletId: String, syncMode: BitcoinCore.SyncMode = .api, networkType: NetworkType = .mainNet, confirmationsThreshold: Int = 6, logger: Logger?) throws { + public convenience init(seed: Data, purpose: Purpose, walletId: String, syncMode: BitcoinCore.SyncMode = .api, networkType: NetworkType = .mainNet, confirmationsThreshold: Int = 6, logger: Logger?, signer: ITransactionSigner?) throws { let version: HDExtendedKeyVersion switch purpose { case .bip44: version = .xprv @@ -133,17 +134,17 @@ public class Kit: AbstractKit { syncMode: syncMode, networkType: networkType, confirmationsThreshold: confirmationsThreshold, - logger: logger) + logger: logger, signer: signer) } - public convenience init(extendedKey: HDExtendedKey, purpose: Purpose, walletId: String, syncMode: BitcoinCore.SyncMode = .api, networkType: NetworkType = .mainNet, confirmationsThreshold: Int = 6, logger: Logger?) throws { + public convenience init(extendedKey: HDExtendedKey, purpose: Purpose, walletId: String, syncMode: BitcoinCore.SyncMode = .api, networkType: NetworkType = .mainNet, confirmationsThreshold: Int = 6, logger: Logger?, signer: ITransactionSigner?) throws { try self.init(extendedKey: extendedKey, watchAddressPublicKey: nil, purpose: purpose, walletId: walletId, syncMode: syncMode, networkType: networkType, confirmationsThreshold: confirmationsThreshold, - logger: logger) + logger: logger, signer: signer) let scriptConverter = ScriptConverter() let bech32AddressConverter = SegWitBech32AddressConverter(prefix: network.bech32PrefixPattern, scriptConverter: scriptConverter) @@ -165,7 +166,7 @@ public class Kit: AbstractKit { } } - public convenience init(watchAddress: String, purpose: Purpose, walletId: String, syncMode: BitcoinCore.SyncMode = .api, networkType: NetworkType = .mainNet, confirmationsThreshold: Int = 6, logger: Logger?) throws { + public convenience init(watchAddress: String, purpose: Purpose, walletId: String, syncMode: BitcoinCore.SyncMode = .api, networkType: NetworkType = .mainNet, confirmationsThreshold: Int = 6, logger: Logger?, signer: ITransactionSigner?) throws { let network = networkType.network let scriptConverter = ScriptConverter() let bech32AddressConverter = SegWitBech32AddressConverter(prefix: network.bech32PrefixPattern, scriptConverter: scriptConverter) @@ -183,7 +184,7 @@ public class Kit: AbstractKit { syncMode: syncMode, networkType: networkType, confirmationsThreshold: confirmationsThreshold, - logger: logger) + logger: logger, signer: signer) bitcoinCore.prepend(addressConverter: bech32AddressConverter)