TrustCore核心類整理(swift版本)

一、關(guān)鍵枚舉

》路徑協(xié)議類型

public enum Purpose: UInt32, CaseIterable {
    case bip44 = 44 //
    case bip49 = 49  //隔離見證
    case bip84 = 84 //bc1開頭的隔離見證方式
    case bip1852 = 1852
}

》Coin類型

public enum CoinType: UInt32, CaseIterable {
    case aeternity = 457
    case aion = 425
    case binance = 714
    case bitcoin = 0
    case bitcoinCash = 145
    case bitcoinGold = 156
    ……
}

》簽名類型

public enum Curve: UInt32, CaseIterable, CustomStringConvertible  {
    case secp256k1 = 0
    case ed25519 = 1
    case ed25519Blake2bNano = 2
    case curve25519 = 3
    case nist256p1 = 4
    case ed25519Extended = 5
}

》公鑰類型:

public enum PublicKeyType: UInt32, CaseIterable {
    case secp256k1 = 0
    case secp256k1Extended = 1
    case nist256p1 = 2
    case nist256p1Extended = 3
    case ed25519 = 4
    case ed25519Blake2b = 5
    case curve25519 = 6
    case ed25519Extended = 7
}

二、DerivationPath類:

》初始化方式:

1、對(duì)象初始化方式:

public init(purpose: Purpose, coin: UInt32, account: UInt32 = 0, change: UInt32 = 0, address: UInt32 = 0)

例如:

DerivationPath(purpose: .bip44, coin: bitcoin.slip44Id, account: 0, change: 0, address: 1).description

2、通過字符串(比如:m/10/0/2'/3)初始化:

public init?(_ string: String) 

三、HDWallet類(Generated)

》核心屬性

seed:String
mnemonic:String

》初始化:

通過助記詞和密碼 (常用):

public init(mnemonic: String, passphrase: String) 

//以下兩個(gè)可以不用

public init(strength: Int32, passphrase: String)
//通過data流初始化
public init(data: Data, passphrase: String) 

》主要類方法:

// 1、判斷是否是合法的助記詞:
public static func isValid(mnemonic: String) -> Bool
// 獲取擴(kuò)展公鑰 xpub
public static func getPublicKeyFromExtended(extended: String, derivationPath: String) -> PublicKey?

》主要對(duì)象方法:

//獲取主私鑰
public func getMasterKey(curve: Curve) -> PrivateKey
//獲取具體幣種的私鑰
public func getKeyForCoin(coin: CoinType) -> PrivateKey
//獲取具體幣種地址
public func getAddressForCoin(coin: CoinType) -> String
//獲取通過路徑字符串獲取私鑰
public func getKey(derivationPath: String) -> PrivateKey
//獲取BIP44的私鑰
public func getKeyBIP44(coin: CoinType, account: UInt32, change: UInt32, address: UInt32) -> PrivateKey
//獲取擴(kuò)展私鑰
public func getExtendedPrivateKey(purpose: Purpose, coin: CoinType, version: HDVersion) -> String
//獲取擴(kuò)展公鑰
public func getExtendedPublicKey(purpose: Purpose, coin: CoinType, version: HDVersion) -> String 

四、StoredKey類

》屬性

identifier: String
name: String
isMnemonic: Bool
accountCount: Int

》初始化

//創(chuàng)建
public init(name: String, password: Data)
//導(dǎo)入
public static func importPrivateKey(privateKey: Data, name: String, password: Data, coin: CoinType) -> StoredKey?
public static func importHDWallet(mnemonic: String, name: String, password: Data, coin: CoinType) -> StoredKey?
public static func importJSON(json: Data) -> StoredKey?

》其他方法

//獲取索引賬戶
public func account(index: Int) -> Account?
//獲取一個(gè)幣的賬戶
public func accountForCoin(coin: CoinType, wallet: HDWallet?) -> Account? 
//移除幣種
public func removeAccountForCoin(coin: CoinType) -> Void 
//增加一個(gè)賬戶
public func addAccount(address: String, derivationPath: String, extetndedPublicKey: String) -> Void
//解密私鑰
public func decryptPrivateKey(password: Data) -> Data?
//保存
public func store(path: String) -> Bool
//解密助記詞
public func decryptMnemonic(password: Data) -> String?
//通過密碼獲取私鑰
public func privateKey(coin: CoinType, password: Data) -> PrivateKey?
//根據(jù)密碼獲取HD錢包對(duì)象
public func wallet(password: Data) -> HDWallet?
//導(dǎo)出json格式
public func exportJSON() -> Data? 
// 加密密碼從私鑰重新派生地址。
public func fixAddresses(password: Data) -> Bool

五、Wallet 類 (Sources)

》核心屬性

identifier: String
keyURL: URL -- 本地磁盤存儲(chǔ)的路徑
key: StoredKey --加密的key
accounts: [Account]

》初始化

 public init(keyURL: URL, key: StoredKey)

》核心方法:

public func getAccount(password: String, coin: CoinType) throws -> Account 
public func getAccounts(password: String, coins: [CoinType]) throws -> [Account] 
public func privateKey(password: String, coin: CoinType) throws -> PrivateKey 

六、Account 類 (Generated)

》核心屬性:

public var address: String //地址
public var derivationPath: String //路徑
public var extendedPublicKey: String //擴(kuò)展公鑰
public var coin: CoinType //幣種類型

》初始化:

public init(address: String, derivationPath: String, extendedPublicKey: String)

PrivateKey 類(Generated)

》屬性:

data:Data

》方法:

初始化:

public init?(data: Data)
public init?(key: PrivateKey)
判斷私鑰是否正確
 public static func isValid(data: Data, curve: Curve) -> Bool

生成不同類型的公鑰

public func getPublicKeySecp256k1(compressed: Bool) -> PublicKey
public func getPublicKeyNist256p1() -> PublicKey
public func getPublicKeyEd25519() -> PublicKey
public func getPublicKeyEd25519Blake2b() -> PublicKey
public func getPublicKeyEd25519Extended() -> PublicKey
public func getPublicKeyCurve25519() -> PublicKey

簽名:

public func sign(digest: Data, curve: Curve) -> Data?
public func signAsDER(digest: Data, curve: Curve) -> Data?
public func signSchnorr(message: Data, curve: Curve) -> Data?

PublicKey 類(Generated)

》屬性:

isCompressed: Bool
compressed: PublicKey
uncompressed: PublicKey
data: Data
keyType: PublicKeyType

》方法:

初始化:

public init?(data: Data, type: PublicKeyType)

判斷公鑰是否正確

public static func isValid(data: Data, type: PublicKeyType) -> Bool 

簽名驗(yàn)證

public func verify(signature: Data, message: Data) -> Bool

public func verifySchnorr(signature: Data, message: Data) -> Bool

AnySigner 類(Generated)

各種簽名方式

public static func sign<SigningOutput: Message>(input: SigningInput, coin: CoinType) -> SigningOutput

public static func nativeSign(data: Data, coin: CoinType) -> Data 

public static func supportsJSON(coin: CoinType) -> Bool

public static func signJSON(_ json: String, key: Data, coin: CoinType) -> String

public static func encode(input: SigningInput, coin: CoinType) -> Data

public static func nativeEncode(data: Data, coin: CoinType) -> Data

public static func decode(data: Data, coin: CoinType) -> Data 

public static func plan<TransactionPlan: Message>(input: SigningInput, coin: CoinType) -> TransactionPlan

public static func nativePlan(data: Data, coin: CoinType) -> Data 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容