SPB Git

spb/os-vault Public

Self-custody, multi-chain crypto wallet for macOS. One recovery phrase, six chain families, zero API keys — nothing leaves your Mac.

Swift 96% Shell 3.4% Makefile 0.6%
3.1 KB · 109 lines swift
Raw Blame History
1import WalletCoreC2import Foundation3// SPDX-License-Identifier: Apache-2.04//5// Copyright © 2017 Trust Wallet.6//7// This is a GENERATED FILE, changes made here WILL BE LOST.8//910import Foundation1112/// Represents a legacy Bitcoin address in C++.13public final class BitcoinAddress: Address {1415    /// Compares two addresses for equality.16    ///17    /// - Parameter lhs: The first address to compare.18    /// - Parameter rhs: The second address to compare.19    /// - Returns: bool indicating the addresses are equal.20    public static func == (lhs: BitcoinAddress, rhs: BitcoinAddress) -> Bool {21        return TWBitcoinAddressEqual(lhs.rawValue, rhs.rawValue)22    }2324    /// Determines if the data is a valid Bitcoin address.25    ///26    /// - Parameter data: data to validate.27    /// - Returns: bool indicating if the address data is valid.28    public static func isValid(data: Data) -> Bool {29        let dataData = TWDataCreateWithNSData(data)30        defer {31            TWDataDelete(dataData)32        }33        return TWBitcoinAddressIsValid(dataData)34    }3536    /// Determines if the string is a valid Bitcoin address.37    ///38    /// - Parameter string: string to validate.39    /// - Returns: bool indicating if the address string is valid.40    public static func isValidString(string: String) -> Bool {41        let stringString = TWStringCreateWithNSString(string)42        defer {43            TWStringDelete(stringString)44        }45        return TWBitcoinAddressIsValidString(stringString)46    }4748    /// Returns the address in Base58 string representation.49    ///50    /// - Parameter address: Address to get the string representation of.51    public var description: String {52        return TWStringNSString(TWBitcoinAddressDescription(rawValue))53    }5455    /// Returns the address prefix.56    ///57    /// - Parameter address: Address to get the prefix of.58    public var prefix: UInt8 {59        return TWBitcoinAddressPrefix(rawValue)60    }6162    /// Returns the key hash data.63    ///64    /// - Parameter address: Address to get the keyhash data of.65    public var keyhash: Data {66        return TWDataNSData(TWBitcoinAddressKeyhash(rawValue))67    }6869    let rawValue: OpaquePointer7071    init(rawValue: OpaquePointer) {72        self.rawValue = rawValue73    }7475    public init?(string: String) {76        let stringString = TWStringCreateWithNSString(string)77        defer {78            TWStringDelete(stringString)79        }80        guard let rawValue = TWBitcoinAddressCreateWithString(stringString) else {81            return nil82        }83        self.rawValue = rawValue84    }8586    public init?(data: Data) {87        let dataData = TWDataCreateWithNSData(data)88        defer {89            TWDataDelete(dataData)90        }91        guard let rawValue = TWBitcoinAddressCreateWithData(dataData) else {92            return nil93        }94        self.rawValue = rawValue95    }9697    public init?(publicKey: PublicKey, prefix: UInt8) {98        guard let rawValue = TWBitcoinAddressCreateWithPublicKey(publicKey.rawValue, prefix) else {99            return nil100        }101        self.rawValue = rawValue102    }103104    deinit {105        TWBitcoinAddressDelete(rawValue)106    }107108}109